第4章 inux进程管狸
第4章 Linux进程管理
§1Lnux进程概述 ●Liux是一个多任务多用户操作系 统 ●从操作系统内部看,一个任务task) 就是一个进程( process ●在lnux中“进程”和“任务”的概 念是 相同的
§1 Linux进程概述 ⚫ Linux是一个多任务多用户操作系 统 ⚫从操作系统内部看,一个任务(task) 就是一个进程(process) ⚫在linux中“进程”和“任务”的概 念是 相同的
、 Linux进程的组成 Lnux进程是由 正文段(te) 用户数据段 user segment) 系统数据段( system segment) 组成的一个动态实体
一、 Linux进程的组成 Linux进程是由: •正文段(text) •用户数据段(user segment) •系统数据段(system segment) 组成的一个动态实体
●当一个可执行程序装入 Linux系统中 运行时就形成了一个进程。 ●可执行程序的代码就形成了进程的正 文段。 ● Linux的正文段具有只读的属性。 ●可执行程序的数据形成了进程的用户 数据段。 ●用户数据段包括进程在运行中使用的 数据区,以及进程使用的堆栈
⚫当一个可执行程序装入Linux系统中 运行时就形成了一个进程。 ⚫可执行程序的代码就形成了进程的正 文段。 ⚫Linux的正文段具有只读的属性。 ⚫可执行程序的数据形成了进程的用户 数据段。 ⚫用户数据段包括进程在运行中使用的 数据区,以及进程使用的堆栈
●进程的系统数据段存放着进程的控 制信息。其中包括进程控制块PCB 和操作系统内核运行时使用的堆栈。 ● Linux中,进程控制块PCB是一个名 字为 task struct的结构体,称为任 务结构体
⚫进程的系统数据段存放着进程的控 制信息。其中包括进程控制块PCB 和操作系统内核运行时使用的堆栈。 ⚫Linux中,进程控制块PCB是一个名 字为task_struct的结构体,称为任 务结构体
●当一个进程被创建时,系统就为该进 程建立一个 task struct任务结构体。 当进程运行结束时,系统撤消该进程 的任务结构体。 ●所以进程的任务结构体是进程存在的 唯一标志
⚫当一个进程被创建时,系统就为该进 程建立一个task_struct任务结构体。 ⚫当进程运行结束时,系统撤消该进程 的任务结构体。 ⚫所以进程的任务结构体是进程存在的 唯一标志
● Linux把系统中所有进程的任务结构 体集中进行管理,并根据需要把它们 组织成各种不同的链表(队列)。 个主要的链表结构是把所有进程 的任务结构体相互链接成一个环行 双向链表 链表首结点就是初始化进程nt的任 务结构体 init task
⚫Linux把系统中所有进程的任务结构 体集中进行管理, 并根据需要把它们 组织成各种不同的链表(队列)。 ⚫ 一个主要的链表结构是把所有进程 的任务结构体相互链接成一个环行 双向链表. ⚫ 链表首结点就是初始化进程init的任 务结构体init_task
●这个双向链表是通过任务结构体中 的两个成员项指针相互链接而成: struct task struct k next task: struct task struct x prev task; ●系统还在的内核空间设置了一个指 针数组task],该数组的每个元素 指向一个任务结构体 ●task数组又称为task向量
⚫这个双向链表是通过任务结构体中 的两个成员项指针相互链接而成: struct task_struct * next_task; struct task_struct * prev_task; ⚫系统还在的内核空间设置了一个指 针数组task[ ],该数组的每个元素 指向一个任务结构体 ⚫task数组又称为task向量
init task task[ 任到 进 ask矢量)结 程0进 2 结构体」程 进 n 在务程 结构 510 2 511 任务 nr tasks 结构 进程 n
task[ ] (task矢量 ) init_task 任务 结构体 任务 结构体 任务 结构体 任务 结构体 进程0进程1进程2进程n nr_tasks n 511 510n012 …
●task数组的大小决定了系统中能够 容纳进程的最大数量。 ●task数组的定义如下: struct task struct *task[NR TASKS I&init task: ●task[]数组是一个指向 task struct 结构的指针数组
⚫ task数组的大小决定了系统中能够 容纳进程的最大数量。 ⚫task 数组的定义如下: struct task_struct *task[NR_TASKS] = {&init_task}; ⚫task[ ]数组是一个指向task_struct 结构的指针数组