linux创建新进程的过程

来源:互联网 发布:下载软件管家360 编辑:程序博客网 时间:2024/05/22 19:34

在进程中调用fork()来创建子进程。fork()进一步调用do_fork(),要完成任务有:
1. 在内存空间为新进程分配任务结构体使用的空间,然后把当前进程的任务结构体的所有内容拷贝到子进程的任务结构体中;
2. 为新进程在其虚拟内存建立内核堆栈;
3. 对于新进程任务结构体中的部分内容进行初始化设置,例如,进程的链接关系,包括族亲关系、进程的标识和标志、各个定时器的初值等。主要是与父进程中不同的那些数据;
4. 把父进程的资源管理信息拷贝给子进程,包括虚存信息、文件信息、信号信息等。
5. 把子进程的剩余运行时间片变量counter设置为父进程counter的一半;
6. 把子进程加入到可运行队列中,由调度进程在适当时机调度运行。
7. 无论哪个进程使用cpu运行,都会继续执行do_fork()函数中的剩余代码,并返回他们各自的返回值(父进程中返回子进程的PID,子进程中返回0)。

0 0