Chapter 1 操作系统概观
1.批处理与多道程序设计
2.分时系统与实时系统
3.操作系统的基本类型与特征
4.并发与并行的概念
5.操作系统的层次结构与功能模块
6.程序的并发执行与顺序执行
批处理与多道程序设计
单道批处理
1 | 1. 处理过程该系统把一批作业以脱机方式输入到磁带上,并在系统中配上监督程序,在它的控制下使这批作业能一个接一个地连续处理,在内存中始终只保持一道作业。 |
多道批处理
1 | 1. 在该系统中,用户所提交的作业都先存放在外存上并排成一个队列,称为“后备队列”;然后,由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享CPU和系统中的各种资源。 |
分时系统与实时系统
分时OS
1. 需求:
1. 人机交互
2. 共享主机
3. 便于用户上机
2. 关键问题:
1. 及时接收
2. 及时处理
3.
3. 特征:
1. 多路性
2. 独立性
3. 即时性
4. 交互性
实时OS
1. 需求:
1. 实时控制
2. 实时信息处理
2. 分类:
1. 任务执行时是否呈现周期性
1. 周期性实时任务:外部设备周期性发出激励信号,计算机按照激励信号循环执行
2. 非周期性实时任务:外部设备所发出的激励信号并无明显的周期性,但都必须联系着一个截止时间(Deadline)。它又可分为开始截止时间(某任务在某时间以前必须开始执行)和完成截止时间(某任务在某时间以前必须完成)两部分
2. 对截止时间的要求:
1. 硬实时:某个动作必须在规定时间完成(导弹、飞控)
2. 软实时:可以接收偶尔违反时间规定(飞机订票系统、银行管理系统)
分时OS和实时OS的比较
1 | 1. 多路性:实时操作系统也要按照分时原则为多个终端服务 |
操作系统的类型和基本特征
操作系统的基本类型:
单道批处理 | 多道批处理 | 分时 | 实时(硬实时/软实时) | 网络(客户/服务机) | 分布式 | 个人操作系统 | |
---|---|---|---|---|---|---|---|
特征 | 自动性、顺序性、单道性 | 多道、宏观上并行、微观上串行 | 同时性、独立性、及时性、交互性 | 及时性、可靠性 | 共享 | 分布性、并行性 | windows、Linux、macOS |
优点 | 资源利用率高、系统吞吐量大 | 人机交互能力 | 系统内的若干计算机完成同一任务 | ||||
缺点 | 资源利用率与系统吞吐量较低 | 用户响应时间长、没有人机交互能力 | 不能对外部信息在规定时间内做出处理 |
**分时操作系统与批处理系统的不同点:追求目标不同、适应作业不同、资源利用率不同、作业控制方式不同。
操作系统的基本特征:
1 | 1. 并发性(最重要):指两个或两个以上的活动或事件在同一个时间间隔内发生。并发性会使操作系统的设计和实现变得复杂化。 |
操作系统的目标和功能
操作系统作为资源的管理者
1
2
3
41. 处理机管理(进程控制、进程同步、进程通信、死锁处理、处理机调度)
2. 存储器管理(内存分配/回收、地址映射、内存保护/共享、内存扩充)
3. 文件管理(存储空间管理、目录管理、读写管理/保护)
4. 设备管理(缓冲管理、设备分配、设备处理、虚拟设备)操作系统作为用户与硬件系统之间的接口
1
2
3
4
5
6
7
8
9
101. 命令接口
联机控制方式(交互式命令接口)
脱机控制方式(批处理命令接口):.bat
2. 程序接口
程序接口由一组系统调用(广义指令)组成。
3. 操作系统实现了对计算机资源的扩充
裸机:没有软件支持的计算机
虚拟机:覆盖了软件的机器
并发与并行的概念
并发
1 | 1. 多个进程在同一段时间内运行。 |
并行
1 | 1. 并行性是指OS具有同时进行运算或操作的特性,在同一时刻能完成两种或两种以上的工作 |
计算机层次结构与功能模块
1 | 组成:硬件和软件。 |
分层
1
2
3
4
5
6优点:
1. 便于系统调试和验证
2. 易扩充、易维护
缺点:
1. 合理定义各层较难
2. 效率较差:完成一个功能都需要穿越多层,每层之间的通讯机制增加了开销(0-copy)模块化
1
2
3
4
5
6
7
8
9
101. 衡量独立性的标准:
1. 内聚性:模块内部各部分间联系的紧密程度
2. 耦合性:模块间相互联系和影响的程度
2. 优点:
1. 提高设计的正确性、可理解性、和可维护性
2. 增强OS的可适应性
3. 加速OS的开发过程
3. 缺点:
1. 模块间的接口设计很难匹配实际需求
2. 无法找到可靠的决定顺序宏内核
1
2
3优点:高效
缺点:随OS设计规模的发展越来越复杂
目前主流是以宏内核为基础,吸收微内核优点的混合内核架构微内核
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
261. 微内核将内核中最基本的功能保留在内核,将不需要在核心态运行的功能移动到用户态执行
2. 微内核将OS分为两个部分:
1. 微内核:
1. 与硬件处理联系紧密的部分
2. 一些基本的功能
3. 客户和服务机之间的通信
2. 多个服务器
3. 微内核结构通常利用“机制和策略分离”的原理构造OS结构:
1. 进程管理:
1. 内核中实现进程的切换、调度、多处理机简单同步等机制
2. 服务器中实现进程的分类、优先级的确认等策略
2. 低级存储器管理:
1. 内核中实现逻辑地址与物理地址间的变换、页表、地址变换等机制
2. 服务器中实现页面置换算法、内存分配及回收等策略
3. 中断和陷入处理:
1. 内核中只保留与硬件紧密相关的一部分,主要工作是捕获所发生的中断和陷入事件并发送给相应的服务器处理
2. 服务器提供中断服务程序,因中断的事件不同而有不同的处理
3. 优点:
1. 扩展性和灵活性
2. 可靠性和安全性
3. 可移植性
4. 分布式计算
4. 缺点:
1. 小内核导致CPU在内核态和用户态之间频繁切换,增大开销
2. 提高执行效率的同时会导致内核增大,需要平衡二号取舍
5. 微内核在实时、工业、航空及军事应用中特别流行外核
1
2
3
4
51. 虚拟机除了克隆真实机器,另一种策略是对机器进行分区,给每个用户整个资源的一个子集
2. 外核(进程)运行在内核态,用于为虚拟机分配资源,并检查资源请求是否合法,确保每台虚拟机都只使用自己的资源
3. 优点:
1. 减少了映射层:如果每台虚拟机认为自己拥有整个资源,虚拟机监控程序就需要为每台虚拟机维护一张资源映射表
2. 减少负载:外核将多道程序(在外核内)与用户操作系统代码(在用户空间中)加以分离,减轻负载
程序的顺序执行与并发执行
顺序执行:单处理机、没有操作系统
1 | 1. 顺序性 |
并发执行:与异步执行的定义不同
1 | 1. 间断性:多道程序环境允许多个程序并发运行,但程序的执行不是一贯到底的,而是走走停停,以未知的速度推进 |
Chapter 2 进程管理
1. 进程:进程控制块、进程的几种基本状态与状态转换(进程的创建、进程的终止、进程的阻塞与唤醒、进程的挂起与激活等)
2. 进程的同步与互斥:临界资源、临界区、进程同步与互斥问题、信号量机制以及P、V操作、管程机制
3. 进程间通信:进程通信的类型(直接通信和间接通信方式)、消息传递系统中的几个问题、消息缓冲队列通信机制
4. 线程与进程的调度:线程与进程的基本概念,调度的类型、调度队列模型、调度方式、进程调度算法(先来先服务、短进程优先、时间片轮转、基于优先级的调度算法等)
5. 死锁:死锁的基本概念,死锁定理、死锁预防、死锁避免与处理死锁的基本方法、银行家算法
6. 综合应用:生产者消费者问题、读者和写者问题、哲学家进餐问题等
进程
1 | 进程 = 程序段 + 数据段 + PCB |
进程控制块
1 | 1. 进程描述信息 |
进程的几种基本状态与状态转换
进程申请了PCB但资源(如内存)不足时,并不是创建失败,而是处于创建态,等待资源分配。
进程的同步与互斥
临界资源
1 | 1. 临界资源是同一时刻只允许一个进程访问的资源 |
临界区
1 | 1. 临界区:进程中访问临界资源的代码段 |
进程同步与互斥问题
实现互斥的方法:
1 | 1. 信号量 软硬都有(关中断/原子操作) |
经典同步问题:
1 | 1. 生产者、消费者 |
信号量机制以及P、V操作
1 | 信号量分为整型信号量与记录型信号量。 |
管程机制(monitor)
1 | 只允许被一个进程调用的类 |
条件变量(condition)
1 | condition x;//声明一个条件变量x |
进程间通信
低级通信:PV操作(信号量),信号
高级通信:高速率、多数据
1 | 1. 共享存储 |
进程通信的类型(直接通信和间接通信方式)
1 | 直接通信:发送进程将消息挂在目标进程的消息缓冲队列上 |
消息传递系统中的几个问题
1 | 1. 通信链路: |
消息缓冲队列通信机制
在这种通信机制中, 发送进程利用send源语将消息直接发给接收进程,接收进程利用receive源语接收消息。使用了信号量互斥机制。
1 | 1. 消息缓冲队列通信机制中的数据结构 |
线程与进程的调度
线程与进程的基本概念
1 | 进程是资源分配的基本单位 |
多线程模型:
1 | 1. 多对一(一旦一个用户线程被阻塞,其他线程也动不了。因为只有一个核心线程) |
调度的类型
1 | 1. 高级调度(作业调度):外存->创建态->就绪态 内存与外存之间的调度 |
调度队列模型
1 | 1. 作业调度为进程活动做准备,进程调度使进程正常活动起来 |
调度方式
1 | 剥夺式调度(抢占式):当进程正在处理器上运行时,系统可根据所规定的原则剥夺分配给此进程的处理器,并将其移入就绪队列,选择其他进程运行。 |
调度的目标
$$
CPU利用率 = \frac{CPU有效工作时间}{CPU有效工作时间 + CPU空闲等待时间}
$$
$$
周转时间 = 作业完成时间 - 作业提交时间
$$
$$
带权周转时间 = \frac{作业周转时间}{作业实际运转时间}
$$
$$
等待时间 = \sum_0^{\infty}{进程处于等待处理机的时间}
$$
$$
相应比R_p = \frac{等待时间 + 要求服务时间}{要求服务时间}
$$
进程调度算法
1 | 1. 先来先服务 |
多级反馈队列:
1 | 1. 设置多个就绪队列 |
死锁
死锁的基本概念
系统资源的竞争
进程推进顺序非法
死锁产生的必要条件
1
2
3
4
5
6
71. 互斥条件:系统中存在临界资源,进程应互斥地使用这些资源
2. 占有和等待条件:进程在请求资源得不到满足而等待时,不释放已占有资源
3. 不剥夺条件:已被占用的资源只能由属主释放,不允许被其他进程剥夺
4. 循环等待条件:存在循环等待链,其中,每个进程都在链中等待下一个进程所持有的资源,造成这组进程处于永远等待状态
死锁预防
破坏死锁产生的必要条件之一。
死锁避免与处理死锁的基本方法
银行家算法
死锁定理(死锁检测)
如果能消去资源分配图中所有的边,那么此图是可完全简化的。
S为死锁的条件是,当且仅当S状态的资源分配图是不可完全简化的。
原理和银行家算法差不多,只不过死锁检测发生在进程运行时,而死锁避免发生在进程运行前。
Chapter 3 内存管理
1 | 1. 内存管理的需求:重定位、内存保护、内存共享 |
内存管理的需求
1 | 重定位:程序->进程,逻辑地址->物理地址 |
程序的装入和链接
链接
1 | 1. 静态链接 |
装入
1 | 1. 绝对装入 |
连续分配:分区存储管理
分区方式
1 | 1. 单一连续分区 |
可变式分区:分区分配算法
1 | 1. 首次适应算法:从空闲链首开始,找到大小能满足要求的第一个空闲分区 |
回收内存时:相邻空闲分区将合并成一个大空闲分区
伙伴系统:固定分区和动态分区的折中
伙伴系统规定,无论已分配分区或空闲分区,其大小均为$$2^k,k\geq1$$。
合并时若当前空闲分区大小为$$2^i$$,则应将与伙伴分区合并为大小为$$2^{i+1}$$的分区。
1 | 1. 性能取决于查找空闲分区的位置和分割、合并空闲分区所花的时间: |
离散分配:基本段式管理与页式管理
快表TLB
1 | 1. 基于局部性原理 |
页式管理机制
1 | 1. 提高内存利用率,不会产生外部碎片 |
地址结构:
页号 | 页内偏移 |
---|---|
多级页表地址结构:
一级页号 | 二级页号 | 页内偏移 |
---|---|---|
页表项结构:
页号 | 块号 |
---|---|
物理地址RA :
块号 | 页内偏移 |
---|---|
段式管理
1 | 1. 按照用户进程中的自然段划分逻辑空间(程序段、栈段、数据段...) |
逻辑地址:
段号 | 段内偏移 |
---|---|
段表项结构:
段号 | 段长 | 段首地址 |
---|---|---|
虚拟内存:
局部性原理
高速缓存能够提高OS性能的原理
1 | 1. 时间局部性:当某个数据被访问,不久后这个数据又将被访问(产生原因:循环操作) |
虚拟内存概念
1 | 1. 请求分页存储管理 |
内存分配策略
1 | 1. 固定分配局部置换:分配的物理块不变 |
调入页面时机:
1 | 1. 预调页策略 |
从何处调入页面:
1 | 请求分页系统中的外存分为两部分: |
虚拟内存的特征:
1 | 1. 多次性:一个作业被分成多次调入内存 |
请求分段与请求分页
请求分段
在分段系统的基础上,增加了请求调段及分段置换功能后所形成的段式虚拟存储系统。允许只装入少数段的用户程序和数据,即可启动运行。在运行过程中,再通过请求调段及分段置换将暂不运行的段调出,并调入即将运行的段。置换是以段为单位进行的。
请求分段需要硬件支持:
1 | 1. 请求分段的段表机制 |
请求分页
页表项:
页号 | 物理块号 | 状态位 | 访问字段 | 修改位 | 外存地址 |
---|---|---|---|---|---|
段页式管理
1 | 1. 提高内存利用率,反应程序逻辑结构,便于共享和保护 |
逻辑地址:
段号 | 页号 | 页内偏移 |
---|---|---|
段表项:
段号 | 段长 | 页表首地址 |
---|---|---|
页面置换算法
FIFO可能出现belady异常,LRU和OPT不会出现belady
belady:页面异常次数随分配物理块数增加而增加
1 | 1. OPT:向后看 |
抖动
1 | 1. 定义:对某一页面频繁调度 |
Chapter 4 设备管理
1 | 1. I/O系统的:基本概念、I/O控制方式(程序I/0、中断、DMA、通道)、相关数据结构、缓冲管理(单缓冲、双缓冲、循环缓冲、缓冲池) |
基本概念
I/O设备分类:
1 | 按信息交换的单位分类: |
I/O设备接口:
1 | CPU与控制器接口 <-> I/O逻辑 <-> 控制器与设备接口: |
设备控制器的功能:
1 | 1. 接收和识别CPU发来的命令(读、写、查找) |
I/O软件层次结构:
用户层I/O软件(read、write) |
---|
设备独立性软件(统筹管理所有I/O设备(调度与保护),提供系统调用接口、逻辑设备表存于此处) |
设备驱动程序(对上对硬件传入的raw数据进行解码,对下命令翻译成对应的指令(机器码)) |
中断处理程序(对上传递硬件状态,对下直接操作硬件) |
硬件 |
I/O控制方式
程序I/0(程序直接控制)
对外设进行循环检查
中断(中断驱动)
1 | 1. 允许I/O设备主动打断CPU的运行并请求服务 |
DMA
特点:
1 | 1. 基本单位是数据块 |
工作过程:
1 | 1. CPU -> DMA控制器,设置MAR, DC初值 |
通道
I/O通道是专门负责输入/输出的处理机,能进一步减少CPU的干预,实现CPU、通道、I/O设备三者并行操作
I/O通道与一般处理机的区别:
1 | 通道执行的类型单一,没有自己的内存,通道所执行的通道程序是放在主机的内存中,通道与CPU共享内存 |
I/O通道与DMA方式的区别:
1 | 1. DMA方式需要CPU来控制传输的数据块大小、传输的内存位置,而通道方式中这些信息是由通道控制的 |
相关数据结构
1 | 1. 系统设备表(SDT) system device table |
逻辑设备表
逻辑设备名 | 物理设备名 | 驱动程序入口地址 |
---|---|---|
/dev/tty | 3 | 1024 |
/dev/printer | 5 | 2046 |
… | … | … |
配置系统设备表的多用户系统中的逻辑设备表格式:
逻辑设备名 | 系统设备表 |
---|---|
/dev/tty | 3 |
/dev/printer | 5 |
… | … |
缓冲管理
1 | C, 处理时间 |
引入缓冲区的目的:
1 | 1. 缓解CPU和I/O设备速率不匹配 |
实现方法:
1 | 1. 硬件缓冲器 |
单缓冲
$$
平均用时T = max(C,T) + M
$$
双缓冲
双缓冲提高了处理机和输入设备的并行程度
$$
平均用时T = max(C+M, T)
$$
循环缓冲
循环队列
缓冲池
1 | 三个队列: |
磁盘管理与磁盘调度算法
1 | 1. SSTF算法(最短寻找时间优先) |
寻找时间 = 跨越n条磁道的时间 + 启动磁臂的时间:
$$
T_s = m * n + s,
$$
旋转延迟时间:磁头定位到某一磁道的扇区所需要的时间
$$
T_r = \frac{1}{2r},r为磁盘的旋转速度
$$
传输时间:从磁盘读出/写入数据所经历的时间,取决于每次所读/写的字节数b和磁盘的旋转速度
$$
T_t = \frac{b}{rN},r为磁盘转速,N为一个磁道上的字节数, rN为磁盘读取速率
$$
总平均存取时间:
$$
T_a = T_s + T_r + T_t = T_s + \frac{1}{2r} + \frac{b}{rN}
$$
优点 | 缺点 | |
---|---|---|
SSTF | 性能比FCFS好 | 不能保证平均寻道时间最短,可能出现“饥饿”现象 |
SCAN | 寻道性能较好,避免“饥饿”现象 | 不利于远离磁头一端的访问请求 |
C-SCAN | 消除了对两端磁道请求的不公平 | |
N-STEP-SCAN | ||
FSCAN |
设备管理
设备分配
1 | 1. 独占式设备 |
数据结构:
1 | 1. 系统设备表(SDT) |
设备分配中应该考虑的问题:
1 | 1. 设备固有属性 |
设备分配程序的改进 :
1 | 1. 仔细研究上述基本的设备分配程序后可以发现: |
设备处理(设备驱动程序+CPU发起的中断处理程序)
此处要区别中断处理程序是由设备无关软件发起,还是由驱动程序发起。中断仅仅是进程调度的信号,前者中断处理程序由操作系统负责;后者中断处理程序由设备生产厂家负责,由设备的类型、厂家、型号不同而不同。
当一个进程请求I/O操作时,该进程将被挂起,直到I/O设备完成I/O操作后,设备控制器便向CPU发送一中断请求,CPU响应后便转向中断处理程序:
1 | 1. 唤醒被阻塞的驱动进程 |
设备驱动程序的处理过程:
1 | 1. 将抽象要求转换为具体要求(此处开始引入设备特有的指令、机器码) |
虚拟设备
1 | 1. 提高设备分配的灵活性和设备的利用率 |
逻辑设备表(Logical Unit Table, LUT)
1 | 1. 进程利用逻辑设备名请求服务 |
Spooling系统
1 | 1. 输入井和输出井 |
Chapter 5 文件系统
1 | 1. 基本概念:文件和文件系统、目录、文件结构的物理结构和逻辑结构(顺序文件、索引顺序文件、索引文件、HASH 文件)、文件共享(基于索引节点、基于符号链接实现文件共享) |
基本概念
文件和文件系统
文件:
1 | 1. 以硬盘为载体的存储字啊计算机上的信息集合 |
文件的属性:
1 | 1. 名称 |
文件控制块(FCB) = 文件目录项:
1 | 1. 基本信息:文件名、物理位置、逻辑结构、物理结构 |
索引节点(inode):在检索目录时,文件的其他描述信息不会用到,也不需要调入内存。因此,有的系统(UNIX)便采用了文件名和文件描述信息分开的方法,使文件描述信息单独形成一个称为索引结点的数据结构
$$
FCB = 文件目录项
\begin{cases}
文件名\
i结点(文件描述信息)
\end{cases}
$$
磁盘索引结点:存放在磁盘上的索引结点
1 | 1. 文件主标识符 |
内存索引结点:文件被打开时,从硬盘索引结点中复制到内存,增加了以下内容
1 | 1. 索引结点编号 |
文件操作:
1 | 1. 创建文件 |
打开文件表:
1 | 1. 调用open()后,文件属性从硬盘复制到内存的打开文件表中,返回用户文件属性在打开文件表中的编号 |
目录
文件结构的物理结构和逻辑结构(顺序文件、索引顺序文件、索引文件、HASH 文件)
文件共享(基于索引节点、基于符号链接实现文件共享)
符号链接
1 | 1. 建立符号链接时,引用计数值直接复制 |
外存分配方法:
连续分配
1 | 优点: |
链接分配
1 | 1. 显式链接: |
索引分配
1 | 1. 单级索引分配:直接访问 |
目录管理
单级目录
文件名 | 物理地址 | 文件说明 | 状态位 |
---|---|---|---|
文件名1 | |||
文件名2 | |||
… |
1 | 优点: |
二级目录
为了克服单级目录所存在的缺点,可以为每一个用户建立一个单独的用户文件目录UFD(User File Directory)。
用户名 | 指向子目录指针 |
---|---|
Alice | |
Bob | |
… |
1 | 优点: |
多级目录
文件存储空间的管理技术
位示图
空闲链表
1 | 1. 空闲表 |