进程描述符归类
- 调度参数:调度进程参考的参数有进程优先级、最近消耗CPU时间、最近睡眠时间
- 内存映像:执行程序所需要的可执行文件
- 信号:显示信号被捕捉或执行的状况
- 寄存器:内核发生trap,保存寄存器的值
- 系统调用状态:当前系统调用信息
- 文件描述符表:有关文件描述符的系统被调用时,文件描述符作为索引定位相关文件的数据结构
- 统计数据:记录用户、进程占用CPU时间表的指针
- 内核堆栈:内核使用的固定堆栈
- 其他:进程状态、事件等待时间等
创建进程过程
系统为子进程开辟一块新的用户空间的进程描述符,然后从父进程复制大量内容,再为子进程分配一个PID,设置其内存映射,赋予它访问父进程文件的权限,最后注册启动。
写入时复制
创建子进程时系统为子进程分配页表,然后指向父进程页面,但只是只读的。子进程若要写入,会开启保护错误。内核发现写入操作,就会为进程分配一个副本,数据都写在副本上,副本是共享的。