linux创建新进程的过程
2015-05-29 22:08
375 查看
在进程中调用fork()来创建子进程。fork()进一步调用do_fork(),要完成任务有:
1. 在内存空间为新进程分配任务结构体使用的空间,然后把当前进程的任务结构体的所有内容拷贝到子进程的任务结构体中;
2. 为新进程在其虚拟内存建立内核堆栈;
3. 对于新进程任务结构体中的部分内容进行初始化设置,例如,进程的链接关系,包括族亲关系、进程的标识和标志、各个定时器的初值等。主要是与父进程中不同的那些数据;
4. 把父进程的资源管理信息拷贝给子进程,包括虚存信息、文件信息、信号信息等。
5. 把子进程的剩余运行时间片变量counter设置为父进程counter的一半;
6. 把子进程加入到可运行队列中,由调度进程在适当时机调度运行。
7. 无论哪个进程使用cpu运行,都会继续执行do_fork()函数中的剩余代码,并返回他们各自的返回值(父进程中返回子进程的PID,子进程中返回0)。
1. 在内存空间为新进程分配任务结构体使用的空间,然后把当前进程的任务结构体的所有内容拷贝到子进程的任务结构体中;
2. 为新进程在其虚拟内存建立内核堆栈;
3. 对于新进程任务结构体中的部分内容进行初始化设置,例如,进程的链接关系,包括族亲关系、进程的标识和标志、各个定时器的初值等。主要是与父进程中不同的那些数据;
4. 把父进程的资源管理信息拷贝给子进程,包括虚存信息、文件信息、信号信息等。
5. 把子进程的剩余运行时间片变量counter设置为父进程counter的一半;
6. 把子进程加入到可运行队列中,由调度进程在适当时机调度运行。
7. 无论哪个进程使用cpu运行,都会继续执行do_fork()函数中的剩余代码,并返回他们各自的返回值(父进程中返回子进程的PID,子进程中返回0)。
相关文章推荐
- Linux下的DNS服务器配置实践(三)-子域授权、转发、视图
- Linux内核信号处理机制介绍
- Linux 链接脚本详解
- itop4412的linux环境搭建
- Linux配置
- Linux 内核定时器及使用方法
- RHEL6子接口及双网卡绑定配置
- Linux 信号机制(三)
- 关于linux中的动态连接
- Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念?
- 进程关系
- Linux信号、信号处理和信号处理函数
- python27 in Centos6
- linux快捷键
- CentOS安装hadoop2.6.0
- linux 获取网卡的IP地址
- linux下日志管理工具--logrotate
- 根文件系统挂载过程—基于linux3.10
- Linux 查找某天的文件并打包
- Linux curses库使用