第8节 进程操作.pptVIP

  • 8
  • 0
  • 约1.71万字
  • 约 10页
  • 2017-06-18 发布于湖北
  • 举报
运行某个程序 0号进程:当内核系统完成自身初始化工作后,由内核本身调用函数kernel_thread(),使用int 0x80系统调用创建第一个内核线程。 1号内核线程:内核线程直接使用物理地址空间,运行在内核态中。在int 0x80软中断系统调用返回后,通过比较ESP和ESI寄存器的值来判断父子关系。如果ESP寄存器的值就等于ESI寄存器的值,系统认为是父进程,就是内核本身,它就是0号进程。否则就是内核创建的第一个内核线程。所以此线程就是1号线程。 1号内核进程:如果是1号内核线程,程序控制该子程序直接去执行init()函数,随后,1号线程将演变成1号内核进程。 init进程:init()函数调用execve()从文件/etc/inittab中装入可执行程序init()并执行,从此执行init()函数的1 号内核进程演变成为init进程。也就是说由init()函数产生了init进程。在这个演变过程中没有使用fork(),因此,init进程的进程标识符仍然是1号内核进程的标识符1。 在Linux中,通过调用fork系统调用来创建一个新的进程。新创建的子进程同样也能执行fork,所以,有可能形成一颗完整的进程树。注意,每个进程只有一个父进程,但可以有0个、1个、2个或多个子进程。 作为进程树如何使用的一个简单例子,让我们来看Linux启动时是怎样对其自己进行初始化的。Li

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档