Linux 系统中的进程表示


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

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

其中一些字段包含 −

long state; /*denote state of the process */
struct sched entity se; /*denote scheduling information */
struct task struct *parent; /*denotes this process’s parent */
struct list head children; /*denotes this process’s children */
struct files struct *files; /* denotes list of open files */
struct mm struct *mm; /* denotes address space of this process */
struct task struct *p_opptr,*p_pptr,*p_cptr,*p_ysptr,*p_osptr
/*denotes, op = original parent, p = parent, c = youngest child, ys = youngest sibling, os = older sibling */

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

例如,如果系统希望将当前正在运行的进程状态更改为新状态。如果 current 是指向当前正在执行的进程的指针,则使用以下方式更改其状态:current->state = new state;

更新时间:2019 年 10 月 11 日

906 次浏览

Kickstart 您 的 职业

完成课程获得认证

开始
广告