进程管理
进程
1.进程是处于执行期程序以及相关资源的总称
2.Linux内核调度的对象是线程,Linux并不特别区分线程和进程
3.现代操作系统,进程提供两种虚拟机制
- 虚拟处理器,它让进程以为自己在独享处理器
- 虚拟内存,它让进程以为自己拥有所有内存资源
4.在Linux中,使用fork来创建进程,fork完之后,通过exec函数创建新的地址空间,并把新的程序载入其中,Linux的fork是由clone系统调用实现的
5.通过exit系统调用推出执行进程,退出后进入僵死状态,直到父进程调用wait/waitpid为止
进程描述符及任务结构
1.进程描述符中包含的数据能完整地描述一个正在执行的进程。具体类型是task_struct
2.任务队列是一个双向循环链表,每一项都是task_struct
3.Linux通过slab分配器分配进程描述,这样能达到对象复用和缓存着色的目的
4.在线程的thread_info结构中保存有一个指向进程描述符的指针
5.进程的唯一表示是PID,存放在进程描述符中
6.进程描述符的state记录了进程的状态,进程只有五种状态
- 运行 可执行/正在执行/在运行队列中待执行,进程在用户空间唯一状态,内核空间也有这种状态
- 可中断 正在被阻塞,等待条件达成
- 不可中断 接收到信号也不会解除阻塞,使用的很少
- 被其他进程跟踪 被其他进程跟踪
- 停止 停止了
7.进程家族树
- 所有的进程都是P