日期:2014-05-16  浏览次数:20543 次

进程运行时,内核的哪部分来维护task_struct结构?
我们知道,fork()创建进程的时候,会为子进程创建一个task_struct结构,并将父进程的task-struct结构中的信息复制到新创建的task-struct结构中。然后通过exec()加载子进程进程映像到内存中,并设定exec()返回时的IP,SP ,这样当exec返回后,就会从子进程自己的指令的第一条开始执行。
问题:1.此时子进程的task-struct结构中的 大部分 信息是不是仍然是先前所复制的父进程的?
  2.进程开始执行自己的指令的时候,内核哪些地方需要使用task-struct结构里面的信息?比如进程调度
  3.子进程开始执行自己的指令的时候,内核的哪部分(哪些函数)来维护(修改)进程的task-struct结构?
初学linux内核,不知道我的问题问得对不对。。。
期待大家的答复。

------解决方案--------------------
1 task_struct中的大部分内容仍然是跟父进程相同的,但是也有不同的地方,比如进程ID,不然怎么来区分是父进程还是子进程?
2 task_struct是一个非常庞大的结构体,几乎涉及到进程的东西都会用到结构体里面的东西。像进程调度、进程切换、分配内存等等。既然你是刚刚入门,你没必要把整个结构体都搞清楚,以后用到哪个字段研究哪个字段就行。
3 进程执行的时候肯定是内核来修改和维护task_struct结构。