Linux 系统中的进程表示

operating systemlinuxprogramming scripts更新于 2025/9/4 22:37:17

Linux 可以管理系统中的进程,每个进程都由一个 task_struct C 数据结构表示。它位于内核源代码目录下的 <linux/sched.h> 头文件中。任务向量是一个指向系统中每个 task_struct 数据结构的指针数组。除了普通类型的进程外,Linux 还支持实时进程。所有必需的信息,例如进程状态、调度和内存管理信息、打开文件列表、指向进程父进程及其子进程和兄弟进程列表的指针,都包含在该结构中。

创建进程的进程称为该创建进程的父进程;它的子进程是它创建的任何进程,而兄弟进程是具有相同父进程的子进程。

其中一些字段包括 −

long state; /*表示进程的状态 */
struct sched entity se; /*表示调度信息 */
struct task struct *parent; /*表示此进程的父进程 */
struct list head children; /*表示此进程的子进程 */
struct files struct *files; /*表示打开文件列表 */
struct mm struct *mm; /* 表示此进程的地址空间 */
struct task struct *p_opptr,*p_pptr,*p_cptr,*p_ysptr,*p_osptr
/*表示,op = 原始父进程,p = 父进程,c = 最小子进程,ys = 最小兄弟进程,os = 较老的兄弟进程 */

在 Linux 内核中,所有活动进程都使用 task struct 的双向链表表示。内核维护一个指针 - current - 指向当前正在系统上执行的进程,如下所示 - minus;

例如,如果系统想要将当前正在运行的进程的状态更改为新状态。如果 current 是指向当前正在执行的进程的指针,则其状态将发生如下变化:current->state = new state;


相关文章


有用资源