操作系统复习笔记
基本上就是各种考点的概念集合,简短无力但是有用。
引论
定义
介于计算机硬件和应用软件中间的软件系统
主要功能
- 处理器管理
- 存储管理
- 设备管理
- 文件管理
- 用户接口
- 网络和通信管理
基本特征
- 并发性
- 共享性
- 虚拟性
- 不确定性
逻辑结构
- 单内核结构,灵活快,调用复杂,难以维护
- 分层式结构,解耦,易于维护和验证,速度慢
- 微内核结构,一致性结构,易于拓展和修改,可以执行好,良好的分布式支持,效率高于分层
运行模型
- 独立运行
- 嵌入到用户进程
- 作为独立进程运行
分类
- 单道批处理
- 多道批处理
- 分时
- 实时
- 网络
- 分布式
处理器管理
进程
一个独立的可以调度的活动,aka 运行的程序
进程与程序区别
- 程序是指令的静态有序集合,进程是一次CPU上的执行过程
- 进程有生命周期
- 进程是独立运行的基本单位
- 一个程序的执行可以包含多个进程,不同的进程也可以包含同一个程序
- 进程由程序段、数据段、PCB构成
进程结构
程序段 + 数据段 + PCB(Process Control Block)
进程模型
三态模型
- 运行:获得了资源且正在执行
- 阻塞:发生了等待事件例如IO等
- 就绪:获得除CPU以外的所有资源
五态模型
CPU调度策略
三级调度是一种层次化的CPU调度策略,包括高级调度(作业调度)、低级调度(进程调度)和中级调度(内存调度)。高级调度选择作业调入内存,低级调度选择下一个执行的进程,中级调度优化内存利用。它们分别控制系统的长期资源分配、进程的执行顺序和内存中进程的调整,以提高系统性能和资源利用。
周转时间、带权周转时间、响应时间
周转时间 = 完成时间 - 到达时间
带权周转 = 周转时间 / 运行时间
响应时间:发起请求到首次响应的时间间隔
调度算法
FCFS(先来先服务)
维护一个队列,先来先服务
SPF (短作业优先)
从后备队列中选择运行时间最短的
RR (时间片轮转)
CPU时间分片的FCFS
HRRF(高响应比优先)
\[ R_p = \frac{响应时间}{运行时间} = \frac{运行时间+等待时间}{运行时间} = 1 + \frac{等待时间}{运行时间} \]
每次计算后选择最高的执行
优先级调度
静态优先级
动态优先级
抢占式:允许更高优先级的进程/线程抢占CPU
非抢占式:直到阻塞才会放弃使用权
进程同步与通信
同步机制的准则
- 空闲忙进
- 忙则等待
- 有限等待
- 让权等待
信号量
含义
P (Proberen) acquire
V (Verhogen) release
- \(value > 0\) 资源可用数量
- \(value = 0\) 资源为空
- \(value < 0\) 则 \(|value|\) 为等待该资源的阻塞的进程数
伪代码
1 |
|
P
1 |
|
V
1 |
|
临界区保护(语言模型生成内容)
在临界区保护中,存在几条必须遵守的原则,其中最有可能的原则包括:
互斥性(Mutual Exclusion):在任何时刻,只允许一个进程进入临界区访问共享资源。这是最基本的原则,确保共享资源不会同时被多个进程访问,避免数据的不一致性和竞态条件的发生。
公平性(Fairness):每个进程有公平的机会进入临界区。确保各个进程按照一定的顺序和优先级获得临界区的访问权,避免某个进程长时间占用临界区而导致其他进程饥饿。
有限等待(Bounded Waiting):任何进程在获取临界区访问权限前都有一个有限的等待时间。确保没有进程永远被其他进程拒绝访问临界区,避免产生死锁等问题。
这些原则的遵守可以提高临界区保护的有效性和可靠性。
互斥性是最重要的原则,因为它保证了共享资源在同一时间只能被一个进程访问,避免了数据不一致性和竞态条件。如果没有互斥性,多个进程同时修改共享资源可能导致数据错乱或无效的结果。
公平性是为了确保每个进程都有公平的机会访问临界区,避免某个进程长时间占用临界区导致其他进程无法获得资源。公平性原则可以提高系统的公正性和可靠性。
有限等待原则是为了防止某个进程永远等待临界区访问的情况发生,保证所有进程都能够在有限的时间内获得临界区的访问权限。这样可以避免系统陷入死锁状态,提高系统的稳定性和可用性。
死锁
原因
- 系统资源不足
- 进程推进顺序不当
必要条件
- 互斥条件,进程对所获得的资源进行排他性使用。
- 请求和保持条件,一个进程请求资源得不到满足而阻塞自己时,并不释放已分配给它的资源
- 不可抢占条件,在该进程的资源未使用完毕时,其他进程不可抢占
- 循环等待条件,至少两个进程构成了循环等待链
银行家算法
进程通信的方式
低级通信
信号量等,一般用于互斥与同步的工具。
高级通信
共享内存
划出一块内存区作为共享数据区,待通信的进程双方将虚拟地址空间映射到共享分区上
消息缓冲
- 发送者设置发送区并填入待发送的消息
- 发送者申请缓冲区并将消息从发送区送到缓冲区,并附加发送进程和消息的元信息至缓冲区,最后将缓冲区挂载到接收方的消息链上
- 接收者设置接受区
- 从消息链上取下第一条消息复制到接受区并释放该消息缓冲区
信箱
- 若接收方信箱已满则发送方阻塞
- 若接收方接收信息时信箱为空则阻塞
// 有点像是 golang 的 channel ?
管道通信
- 管道是一种单向通信方式,可以在一个进程中创建管道,然后将其连接到另一个相关进程。
- 管道可以分为匿名管道(Anonymous Pipe)和命名管道(Named Pipe)两种类型。
- 匿名管道是一种临时的、单向的管道,通常用于有亲缘关系(如父子进程)的相关进程之间通信。
- 命名管道是一种具有持久性的、命名的管道,可以在无亲缘关系的进程之间进行通信。
- 管道的操作方式是基于文件描述符(File Descriptor)进行的,进程通过文件描述符来读取和写入管道中的数据。
- 管道可以实现进程间的单向通信,其中一个进程负责写入数据到管道,另一个进程负责从管道中读取数据。
- 管道通信是一种同步阻塞的通信方式,当管道为空时,读取进程会被阻塞,直到有数据可读取;当管道满时,写入进程会被阻塞,直到有空间可写入。
存储管理
地址相关的名词
- 逻辑地址:程序中的地址
- 逻辑地址空间:一个程序的所有逻辑地址的集合
- 物理地址:实际内存中的地址
- 物理地址空间:全部存储单元的物理地址的集合
- 虚拟地址空间:程序能用到的整个地址的范围
地址转换算法
\[ 物理地址=逻辑地址+分区起始地址=页号 \times 页长+页内地址=段起始地址+段内地址 \]
分区分配算法
- 首次适应法:按内存地址递增找到第一个满足的
- 最佳适应法:从最小空闲分区开始递增查找到第一个满足的
- 最差适应法:从最大空闲分区开始分配
段页式存储管理
\[ 逻辑地址=段号+段内地址+页内地址 \]
页置换算法
OPT(最佳置换)
页访问序列已知,每次置换时找最长时间后才被访问的页面
FIFO (First in First out)
维护循环队列
LRU (最近最久未使用)
两种方式
- 维护一个链表,表顺序按照最近的访问排序,表头为上一次的访问
- 每个块维护一个计数器,当有页面访问时置零,否则自增1,置换时找计数器最大的块
设备管理
IO设备控制方式
// 此节为语言模型生成内容
程序直接IO控制(忙查询)
特点
- IO操作由程序直接控制,程序通过查询IO设备的状态来判断是否准备好进行IO操作。
- 需要程序主动轮询IO设备状态,属于主动方式,占用CPU资源较多。
- 简单实现,适用于设备处理速度较快,对实时性要求不高的情况。
区别
- 相对于其他控制方式,程序直接IO控制实现简单,无需额外硬件支持。
- 但是程序需要主动查询IO设备状态,占用大量CPU资源,效率较低。
- 对于设备处理速度较慢、实时性要求高的情况,程序直接IO控制可能无法满足要求。
程序中断IO控制(中断处理)
特点
- 通过中断机制实现IO控制,设备在完成IO操作后触发中断信号,通知CPU进行处理。
- CPU在收到中断信号后会暂停当前任务,转而处理中断服务程序,然后恢复原任务继续执行。
- 减少了程序主动查询设备状态的开销,提高了CPU利用率和系统响应性。
区别
- 相对于程序直接IO控制,程序中断IO控制通过中断机制实现,减少了程序主动查询设备状态的开销。
- CPU在收到中断信号后会暂停当前任务,转而处理中断服务程序,提高了CPU利用率和系统响应性。
- 需要中断控制器的支持,对硬件要求较高。
DMA控制方式
特点
- DMA(Direct Memory Access)是一种无需CPU干预的IO数据传输方式。
- DMA控制器直接将数据从IO设备读取到内存或从内存写入到IO设备,减少了CPU的参与。
- 提高了数据传输速率和系统性能,释放了CPU的负担。
区别
- 相对于程序直接IO控制和程序中断IO控制,DMA控制方式无需CPU的干预,通过DMA控制器直接进行数据传输。
- DMA控制方式可以提高数据传输速率和系统性能,减少了CPU的参与,释放了CPU的负担。
- 需要硬件支持,包括DMA控制器和能与之配合的IO设备。
IO通道控制方式
特点
- IO通道是一种专用的硬件设备,用于处理IO操作。
- IO通道独立于CPU,具有自己的控制逻辑和寄存器,能够执行IO操作。
- 通过命令和参数设置,CPU可以委托IO通道执行特定的IO任务,然后继续执行其他任务。
区别
- 相对于其他控制方式,IO通道控制方式使用专用的硬件设备进行IO操作,独立于CPU。
- IO通道可以独立执行IO任务,减少了CPU的负担,提高了系统的并发性能。
- 需要特定的硬件支持,对于复杂IO操作和高性能要求的场景,IO通道控制方式是一种有效的选择。
虚拟设备技术 - Spooling
Spooling (Simultaneous Peripheral Operations On-Line)
外部设备联机并行操作 aka 假脱机
实现原理
输入输出井
特点
- 提高了IO速度
- 将独占设备改造成共享设备
- 实现了虚拟设备功能
缓冲技术
硬件缓冲器或者内存缓冲区
单双缓冲
单缓冲缓冲区为临界资源,无法并行IO操作。
双缓冲(缓冲对换)
设置双缓冲后,设备输入时先将数据送入第一个缓冲区,第个缓冲区装满数据后再转向第二个缓冲区输入数据,此时操作系统可以从第一个缓冲区中取出数据传给用户进程:当第一个缓冲区的数据被操作系统全部取走后,设备又可以重新转向第二个缓冲区输入数 据,而此时,操作系统又可以从第二个缓冲区中取走数据:依此重复进行直至输入结束。
循环缓冲
多个缓冲区组成队列,标记三种状态,空E、满G、当前C
缓冲池
同种类型的缓冲区链接成队列
- 空缓冲区队列EmQ
- 输入缓冲区队列InQ
- 输出缓冲区队列OutQ
四个工作缓冲区
- 收容输入Hin
- 提取输入Sin
- 收容输出Hout
- 提取输出Sout
Cache
可以保存数据副本的高速存储器
磁盘
相关名词
- 寻道时间:磁头移动到磁道位置的平均时间
- 旋转延迟时间:磁头到达位置后扇区旋转到磁头下方的平均时间,旋转延迟通常约为旋转时间的一半,\(平均访问时间 = 寻道时间+旋转延迟时间\)
- 数据传输时间:实际读写磁盘数据的时间
磁盘调度算法
FCFS
先来先服务
SSTF (最短寻道时间优先)
每次找离当前磁头位置最近的下一个位置
SCAN (扫描)
磁头朝一个方向扫描,到头后返回扫描
Elevator (电梯算法)
没有访问请求时磁头不动,有访问时磁头来回扫描,每次选择离当前磁头最近的位置方向开始扫描
CSCAN (循环扫描)
磁头处理请求时只往一个方向移动,没有请求时不运动
文件系统
文件属性和特点
属性
- 本身的数据信息
- 附加的组织与管理信息(元信息)
特点
- 保存性
- 按名存取
- 一组信息集合
虚拟文件系统的设计思路
虚拟层定义用户一致性接口,实现层通过开关表等进行文件系统转换
逻辑结构
无结构和有结构文件
- 流式文件:有序字符的集合,按照字符组的长度读写信息
- 记录式文件:由如果逻辑记录构成的序列 //看成数据库就行