第8章 实例分析: Linux操作系统 本章讲述内容: 8.1 Linux的处理机管理; 8.2 Linux的存储管理; 8.3 Linuⅸ的文件管理; 8.4 Linux的设备管理
第8章 实例分析: Linux操作系统 8.1 8.2 8.3 本章讲述内容: 8.4 Linux的处理机管理; Linux的存储管理 ; Linux的文件管理 ; Linux 的设备管理
8.1Liux的处理机管理 。8.1.1 Linux的进程 1.Linuxi进程的两种运行模式 .Liux里,当进程运行用户程序时,称为“用户模式”;当进程运行中出现系统 调用或中断事件,转去执行操作系统内核程序时,称为“核心模式”。进程在核心模式 时,从事资源管理及各种控制活动:在用户模式时,在操作系统管理和控制下做自己的 工作:在Liux里处理机有两种运行状态:在核心态,CPU执行操作系统的程序;在用户 态,CPU执行用户程序。这两种运行状态,会在一定时机按需要进行转换。 .Lix把进程定义为是“程序运行的一个实例”。进程竞争并占用系统资源,向 系统提出各种请求服务;进程也是调度单位,任何时刻只有一个进程在CPU上运行。 2.Linuxi进程实体的组成 。Linux进程的四个部分 Linux中,每个进程是一个任务(task),有四个部分:进程描述符,即进程控制块: 进程专用的系统堆栈空间:正文段,即供进程执行的程序段:进程专用的数据段和用户 堆栈空间
8.1 Linux的处理机管理 • 8.1.1 Linux的进程 1. Linux进程的两种运行模式 Linux里,当进程运行用户程序时,称为“用户模式”;当进程运行中出现系统 调用或中断事件,转去执行操作系统内核程序时,称为“核心模式”。进程在核心模式 时,从事资源管理及各种控制活动;在用户模式时,在操作系统管理和控制下做自己的 工作。 . . 在Linux里处理机有两种运行状态:在核心态,CPU执行操作系统的程序;在用户 态,CPU执行用户程序。这两种运行状态,会在一定时机按需要进行转换。 . Linux把进程定义为是“程序运行的一个实例”。进程竞争并占用系统资源,向 系统提出各种请求服务;进程也是调度单位,任何时刻只有一个进程在CPU上运行。 2. Linux进程实体的组成 . Linux中,每个进程是一个任务(task),有四个部分:进程描述符,即进程控制块; 进程专用的系统堆栈空间;正文段,即供进程执行的程序段;进程专用的数据段和用户 堆栈空间。 Linux进程的四个部分
。进程描述符和核心栈 产生一个新进程时,系统就分配总量为8KB的空间 堆栈 (即两个连续的内存块),用于存放进程描述符和组成系统 进程的核 堆栈。进程因系统调用进入Linux内核时(这时CPU被切换 两个连续的 心栈(7KB) 成核心态),就使用系统堆栈。 物理块(8KB) ,Linux对进程描述符的管理 Linux在内核存储区里开辟一个指针数组 进程描述绮 (IKB) task,长度为NR TASKS,每个数组元素里 存放一个已创建进程的进程描述符地址。即 指针数组task 每个数组元素都指向一个己创建进程的进程 →一个进程描述符 描述符,通过它,就可以找到当前系统中所 个进程描述符 有进程的进程描述符。 3.Linux进程描述符的内容 NR TASKS +一个进程描述符 个元素 在Liux中,进程描述符是一个结构类型的数 据结构:task struct,.主要有以下信息: ·进程标识·进程状态 ·进程调度信息 ·接收的信号·进程家族关系·进程队列指针 CPU的现场保护区 ·与文件系统有关的信息
. 在Linux中,进程描述符是一个结构类型的数 据结构:task_struct,主要有以下信息: 接收的信号 进程队列指针 CPU的现场保护区 与文件系统有关的信息 产生一个新进程时,系统就分配总量为8KB的空间 (即两个连续的内存块),用于存放进程描述符和组成系统 堆栈。进程因系统调用进入Linux内核时(这时CPU被切换 成核心态),就使用系统堆栈。 . . 进程描述符和核心栈 两个连续的 物理块(8KB) 堆栈 进程描述符 进程的核 心栈(7KB) (1KB) Linux对进程描述符的管理 Linux在内核存储区里开辟一个指针数组 task,长度为NR_TASKS,每个数组元素里 存放一个已创建进程的进程描述符地址。即 每个数组元素都指向一个已创建进程的进程 描述符,通过它,就可以找到当前系统中所 有进程的进程描述符。 一个进程描述符 一个进程描述符 NR_TASKS 一个进程描述符 个元素 指针数组task 3. Linux进程描述符的内容 . . 进程标识 . 进程状态 . . . . 进程调度信息 进程家族关系
4.Linux的进程状态 暂停状态、 ,可运行状态:进程已做好了 信号 信号 运行的准备。该状态实际上包含两 可运行状态 个状态,要么在CPU上运行(为执 调度 创健 就绪 执行 僵死状态 行状态),要么已经做好准备,随 被抢宪 终止 时可以投入运行(为就绪状态)。 事件 信号或事件 ·可中断状态:进程由于等待某些条 可中断状态 件,而处于这种阻塞状态,直到那些条件出 不可中断状态 现将其唤醒。 。不可中断状态:这是另外一种阻塞状态。处于这种状态的进程,表示进程不能 被信号中断,而是在等待硬件条件的到来。 。暂停状态:运行进程由于接收到一个信号,执行被暂时停止。处于该状态的进 程,只能由来自另一个进程发来的信号改变成就绪状态。 。僵死状态:进程已经被终止,正在结束中。 5.Linux的进程族系 Liux系统初启时,自动建立系统的第一个进程:初始化进程。之后,所有的进程都 由它以及它的子孙创建。因此,Liux系统中的各个进程,相互之间构成了一个树型的 进程族系
暂停状态:运行进程由于接收到一个信号,执行被暂时停止。处于该状态的进 程,只能由来自另一个进程发来的信号改变成就绪状态。 不可中断状态:这是另外一种阻塞状态。处于这种状态的进程,表示进程不能 被信号中断,而是在等待硬件条件的到来。 可中断状态:进程由于等待某些条 件,而处于这种阻塞状态,直到那些条件出 现将其唤醒。 4. Linux的进程状态 可运行状态:进程已做好了 运行的准备。该状态实际上包含两 个状态,要么在CPU上运行(为执 行状态),要么已经做好准备,随 时可以投入运行(为就绪状态)。 暂停状态 可中断状态 不可中断状态 僵死状态 可运行状态 就绪 执行 调度 被抢先 创建 事件 信号 终止 信号或事件 . 信号 . . . . 僵死状态:进程已经被终止,正在结束中。 5. Linux的进程族系 Linux系统初启时,自动建立系统的第一个进程:初始化进程。之后,所有的进程都 由它以及它的子孙创建。因此,Linux系统中的各个进程,相互之间构成了一个树型的 进程族系
。8.1.2 Linux的进程调度 1.Linux的三种调度策略 。SCHED FIFO一实时进程的先进先出调度策略 SCHED FIFO是一种抢占式的调度策略。原则上,把CPU分给进程后,该进程就 占用CPU直到释放为止。但若在此期间另有更高优先级的FFO进程就绪,那就会把 CPU抢夺过来。若有多个进程都有最高优先级,那就选择等待时间最长的投入运行。 该调度策略适合实时进程,它们对时间性要求较强,每次运行所需的时间较短。 .SCHED RR一实时进程的轮转调度 SCHED RR是一种抢占式的调度策略。分配给进程一个时间片后,若在此期间有 另一个更高优先级的RR进程就绪,那么就允许它抢夺过CPU投入运行。若有多个进程 都具有最高优先级,那就选择其中等待时间最长的投入运行。可见,SCHED RR调度 策略适合于每次运行需要时间较长的实时进程。 .SCHED OTHER一非实时进程的轮转调度 SCHED OTHER是基于动态优先级的轮转调度策略,它适合于交互式的分时应用。 在这种调度策略里,进程的动态优先级用所谓的优先数来表示:优先数越小,相应的 优先级越高。操作系统对核心态进程和对用户态进程,采取不同的方法来改变其优先 数,从而改变优先级
• 8.1.2 Linux的进程调度 1. SCHED_FIFO—实时进程的先进先出调度策略 SCHED_FIFO是一种抢占式的调度策略。原则上,把CPU分给进程后,该进程就 占用CPU直到释放为止。但若在此期间另有更高优先级的FIFO进程就绪,那就会把 CPU抢夺过来。若有多个进程都有最高优先级,那就选择等待时间最长的投入运行。 该调度策略适合实时进程,它们对时间性要求较强,每次运行所需的时间较短。 SCHED_RR—实时进程的轮转调度 SCHED_RR是一种抢占式的调度策略。分配给进程一个时间片后,若在此期间有 另一个更高优先级的RR进程就绪,那么就允许它抢夺过CPU投入运行。若有多个进程 都具有最高优先级,那就选择其中等待时间最长的投入运行。可见,SCHED_RR调度 策略适合于每次运行需要时间较长的实时进程。 SCHED_OTHER—非实时进程的轮转调度 SCHED_OTHER是基于动态优先级的轮转调度策略,它适合于交互式的分时应用。 在这种调度策略里,进程的动态优先级用所谓的优先数来表示:优先数越小,相应的 优先级越高。操作系统对核心态进程和对用户态进程,采取不同的方法来改变其优先 数,从而改变优先级 。 Linux的三种调度策略 . .