前言:Linux 过程深入分析,从内核设计方面学习
什么是过程
程序自身并不是过程,过程是处于执行期的程序以及相干资源的总称。
过程构造
- 工作队列(task_list),存储若干过程描述符
- 过程描述符(task_struct),存储一个过程的所有信息
过程调配和寄存
过程描述符的调配,通过 slab 分配器调配,能够实现对象复用(预调配和重复使用)
过程的寄存,先在内核栈顶压入一个 thread_info,thread_info 存储了指向 task_struct 的指针
过程状态
过程间关系
过程间有一个显著的继承关系,所有过程都是 PID=1 init 过程的后辈。每一个过程都有一个父过程,和一个子过程列表。
内存屏障是一组解决指令,用来实现对内存操作的程序限度,底层通过锁 CPU 总线(总线同一时刻只能有一个程序拜访)的形式实现
只有通过零碎调用和异样解决接口能力陷入内核拜访执行,或者叫做内核“代替过程执行”