sophia0405

当你跌到谷底时,那正表示,你只能往上,不能往下!

 

进程篇之进程间的关系--内核2.6.11

  程序创建的进程具有父/子关系。如果一个进程创建多个子进程时,则子进程之间具有兄弟关系。进程0是在系统初始化时由kernel自身从无到有创建。进程0最终会通过调用kernel_thread创建一个内核线程去执行init函数这个新创建的内核线程即Process 1,《Understanding The Linux Kernel - Third Edtion》里说 进程1是所有进程的祖先?对此我保持怀疑态度。在进程描述符中引入了几个字段来表示这些关系。

以下のとおりです:

 

   进程亲属关系的字段描述(p是给定进程)

   字段名                            说明

     real_parent                     指向创建了p的进程描述符,如果p的父进程不再存在,就指向进程1(init)的描述符。(对此也有疑问:父进程销毁前,不都是先销毁子进程的?

    parent                            指向p的当前父进程(这种进程的子进程终止时,必须向父进程发信号。)它的值通常与real_parent一致,但偶尔也可以不同,例如:当另一个进程发出监控p的ptrace()系统调用请求时。

   children                            链表的头部,链表中所有元素都是p创建的子进程

   sibling                              指向兄弟进程链表中的下一个元素或前一个元素的指针,这些兄弟进程的父进程都是p

    下图:《Understanding The Linux Kernel - Third Edtion》里抓取     

      

 

        

 大大的疑问:  p1的 sibling.prev怎么指向了父进程啊?同理 p3的sibling.next也指

向了父进程。 这个图跟内核2.4里差别很大呀。期待高手给解答啦

 

posted on 2008-12-30 17:36  土猫敢死队  阅读(679)  评论(1编辑  收藏  举报

导航