进程的生命周期
注: 学习宋宝华课程总结
1. 进程控制块 PCB 与 task_struct
进程是资源封装管理的单位,资源指占用的内存,文件系统,信号及处理方法。线程是调度的单位,进程的区别是资源,资源是隔离的,进程把资源描述清楚就可以了
Process Control Block(PCB) 进程控制块, 在不同操作系统中用于描述进程,在 Linux 的 PCB 就是用 task_struct 来描述。描述来 task_struct 的部分成员
- mm 内存资源: 进程的内存
- fs 文件系统资源: 根路径和当前路径指针
- files 文件系统资源: 进程打开的文件,文件描述符数组
- signal 信号资源: 不同进程可以针对同一信号挂不同的处理方法
- pid 属性资源: 描述进程的属性, 进程的 PID 是有限的
当前路经是在 fs_struct 中的
struct fs_struct {
int users;
spinlock_t lock;
seqcount_t seq;
int umask;
int in_exec;
struct path root, pwd;
};
files 进程打开的文件描述符 fd_array
/*
* Open file table structure
*/
struct files_struct {
/*
* read mostly part
*/
atomic_t count;
struct fdtable __rcu *fdt;
struct fdtable fdtab;
/*
* written part on a separate cache line in SMP
*/
spinlock_t file_l