在 Linux 内核 中 , " 进程控制块 " 是通过 task_struct
结构体 进行描述的 ; Linux 内核中 , 所有 进程管理 相关算法逻辑 , 都是基于 task_struct
结构体的 ;
task_struct
" 进程描述符 " 结构体在 linux-5.6.18\include\linux\sched.h
头文件中 第
~
行定义 ;
files
字段 , 是一个指针 , 指向 " 打开的文件表 " ;
/* Open file information: */
struct files_struct *files;
nsproxy
字段是 " 命名空间 " ;
/* Namespaces: */
struct nsproxy *nsproxy;
下面的几个字段 , 都是 " 信号处理 " 相关字段 ;
/* Signal handlers: */
struct signal_struct *signal;
struct sighand_struct __rcu *sighand;
sigset_t blocked;
sigset_t real_blocked;
/* Restored if set_restore_sigmask() was used: */
sigset_t saved_sigmask;
struct sigpending pending;
下面的字段是用于 UNIX 系统环境下 , " 信号量 " 与 " 共享内存 " 相关字段 ;
#ifdef CONFIG_SYSVIPC
struct sysv_sem sysvsem;
struct sysv_shm sysvshm;
#endif