实例分析:Linux操作系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)SCHED_FIFO——实时进程的先进先 出调度策略
(2)SCHED_RR——实时进程的轮转调度
(3)SCHED_OTHER——非实时进程的轮 转调度
进程 优先级
A
10
B
40
C
40
D
70
(a) 进程的优先级
D
B
C
A
(b) FIFO 调度的顺序
D
B
C
B
C
A
(c) RR 调度的顺序
图8-4 Linux实时调度的例子
4.Linux的等Biblioteka Baidu队列
因某事件等待 的队列头指针
next task
task_struct
next task
task_struct
NULL task
task_struct
图8-5 Linux中的等待队列
8.1.3 Linux进程间的通信——消息队 列
消息队列是进程间的一种异步通信 方法。所谓“异步”,即发送消息的进 程在消息发出之后,不必等待接收进程 做出反应,就可以去做其他的事情了。
进程一方面竞争并占用系统资源 (比如设备和内存),向系统提出各种 请求服务;进程另一方面是基本的调度 单位,任何时刻只有一个进程在CPU上运 行。
2.Linux进程实体的组成
Linux中,每个进程就是一个任务 (task),一般具有以下四个部分:
• 进程控制块(在Linux里,也称为进 程描述符。下面统一采用“进程描述符” 这个称谓)。
户程序,又可以运行操作系统程序。
当进程运行用户程序时,称其为处 于“用户模式”;当进程运行时出现了 系统调用或中断事件,转而去执行操作 系统内核的程序时,称其为处于“核心 模式”。
在Linux里处理机就具有两种运行状 态:核心态和用户态。
在Linux里,把进程定义为“程序运 行的一个实例”。
5.进程的创建与撤销
Linux中的每个进程,都有一个创建、 调度运行、撤销死亡的生命期。 Linux 系统中的各个进程,相互之间构成了一 个树型的进程族系。
8.1.2 Linux的进程调度
1.Linux的进程调度类型 在Linux中,进程调度被分为实时进
程调度和非实时进程调度两种。
2.Linux进程描述符中与调度有关的字 段
4.Linux的进程状态
Linux的进程可以有五种不同的状态, 图8-3给出了Linux的进程状态,以及状 态间的变迁原因。
创建
信号 就绪
暂停状态
可运行状态 调度 被抢先
事件
信号或事件 可中断状态
信号
执行
终止
僵死状态
不可中断状态
图8-3 Linux的进程状态及其变迁
• 可运行状态 • 可中断状态 • 不可中断状态 • 暂停状态 • 僵死状态
• 进程标识(pid)。 • 进程状态(state)。 • 进程调度信息,包括调度策略
(policy)、优先级别(priority和 rt_priority)、时间片(counter)等。
• 接收的信号(*sig)。
• 进程家族关系。 • 进程队列指针。 • CPU的现场保护区。 • 与文件系统有关的信息。
1.“消息”的数据结构
Linux中的每个消息,由两个部分组 成:消息头和消息缓冲区。
消息头
一个消息 (msg)
*msg_next msg_type msg_stime
msg_ts *msg_spot
消息 缓冲区
消息
(a) Linux 的消息结构
一个消息队列 (msqid_ds) msg_perm *msg_last *msg_first msg_stime msg_rtime msg_ctime msg_cbytes msg_qbytes msg_qnum msg_lapid msg_lrpid
• 进程专用的系统堆栈空间; • 供进程执行的程序段(在Linux里,
称为正文段);
• 进程专用的数据段和用户堆栈空间。
指针数组 task
NR_TASKS 个元素
… …
一个进程的描述符
…
一个进程的描述符
图8-2 Linux对进程描述符的管理
3.Linux的进程控制块——进程描述符
在Linux中,进程的进程描述符是一 个结构类型的数据结构:task_struct。
(1)Linux的三种进程调度策略及消息 队列;
(2)Linux的多级页表地址转换机制;
(3)Linux的文件系统Ext2和虚拟文件 系统VFS;
(4)Linux对字符设备和块设备的管理。
8.1 Linux的处理机管理
8.1.1 Linux的进程 1.Linux进程的两种运行模式 在Linux里,一个进程既可以运行用
Linux进程描述符中,有四个字段与 进程调度有关,它们是:policy、 priority、rt_priority和counter。
3.Linux的三种进程调度策略
Linux进程描述符中的policy字段, 可以取三个值:SCHED_FIFO、SCHED_RR 以及SCHED_OTHER。
一个消息
一个消息
(b) Linux 的消息队列结构
图8-6 Linux的消息及消息队列结构
一个消息 NULL
2.“消息队列”的数据结构
Linux消息队列是struct msqid_ds 型的数据结构。
3.“消息队列表”的数据结构
进程间借助消息队列来传递数据, 因此系统中可以建立多个消息队列。 Linux是通过“消息队列表”来管理所有 消息队列的。
…
图8-7 消息管理诸数据结构间的逻辑关系
4.有关消息队列的系统调用
第8章 实例分析:Linux操作
系统
8.1 8.2 8.3 8.4
Linux的处理机管理 Linux的存储管理 Linux的文件管理 Linux的设备管理
Linux操作系统实质上是UNIX的变种, 它继承了多任务、多用户等这样的一些 特性。
本章主要从Linux管理的角度出发, 着重讲述以下4个方面的内容。
消息队列表 (msgque)
… …
128 个 数组元素
… …
一个消息队列 (msqid_ds) *msg_last *msg_first
…
消息(msg)
…
消息(msg)
…
一个消息队列 (msqid_ds) *msg_last *msg_first
…
消息(msg)
…
消息(msg)
…
消息(msg)
…
消息(msg)