软考笔记
二、 操作系统基本原理
1. 概述
1.1 功能概述
- 进程管理
- 存储管理
- 文件管理
- 作业管理
- 设备管理
1.2 位置描述
其位于计算机硬件与应用软件之间,本质也是一个软件。
2. 进程管理
2.1 进程转换图
- 运行态:进程占据CPU,正在运行;
- 就绪态:进程除未获得CPU外,其余资源均已获得;
- 等待态:进程除未获得CPU外,也存在还未获得的资源;
- 挂起:将该进程暂时淘汰出内存;
2.2 前驱图
2.2.1概述
表示进程(程序)之间先后执行顺序的有向无环图
2.2.2 示例图
2.3 进程的同步与互斥
2.3.1 进程的同步
进程是并发执行的,不同进程之间存在着相互制约关系。进程的同步用于协调进程之间的相互制约关系;
2.3.2 进程的互斥
当存在一个进程正在访问临界资源时,其它要访问该资源的进程必须等待;
2.3.3 PV操作实现进程的同步与互斥
-
信号量值的定义:
- 信号量.value = 0:表示该类资源为空
- 信号量.value > 0:表示该类资源当前的可用数量
- 信号量.value < 0:其绝对值表示因等待该资源而阻塞的进程个数
-
PV操作的描述
- P(信号量):申请资源;
- V(信号量):释放资源;
-
PV操作实现进程的互斥:每一个进程都需要申请资源和释放资源
-
PV操作实现进程的同步:如A->B,A执行完后B才能执行,即当A释放资源后B才能申请资源;
2.4 死锁
2.4.1 定义
一组进程中,每个进程都在无限等待对方占用的资源,使这组进程或所有进程无法继续推进。
2.4.2 产生原因
由于操作系统采用多道程序并发执行与进程之间对不可抢占资源共享引起的;
2.4.3 产生死锁的四个必要条件
-
互斥条件:
任一时刻一个资源仅能被一个进程占用; -
请求和保持条件:
一个进程请求资源得不到满足而堵塞自己时,并不释放已分配给它的资源; -
不可抢占条件:
进程所获得的资源在未使用完毕之前不能被其他进程抢占,而只能由占用该资源的进程自己释放; -
循环等待条件:
若干进程形成一个循环等待链,链中每个进程都在等待该链中下一个进程所占用的资源;
注意: 我们可以通过破坏以上四个条件的任意一个来预防死锁的发生;
2.4.4 死锁的预防
-
破坏“请求和保持”条件
在每个进程运行前一次性申请它需要的全部资源 -
破坏“不可抢占”条件
当一个进程申请新的资源请求而未得到满足时,释放它已经获得的全部资源而进入堵塞态; -
破坏“循环等待条件”
采用资源有序分配策略;
2.4.5 死锁的避免
- 使用银行家算法进行死锁的避免:
即设法保证系统动态分配资源后不进入不安全状态,以避免可能产生的死锁。即没当进程提出资源请求且系统的资源能够满足该请求时,系统将判断满足此次资源请求后系统状态是否安全,如果判断结果为安全,则给该进程分配资源,否则不分配资源,申请资源的进程将阻塞。
3. 存储管理
3.1 分区存储管理分配算法
-
首次适应算法
空闲分区按内存地址递增的次序排列,即优先对低地址部分空闲区进行分配; -
循环首次适应算法
空闲分区排列与首次适应算法相同,从上一次分配空闲区之后的下一个空闲分区开始分配 -
最佳适应算法
空闲分区按分区大小递增的次序排列,从空闲分区链链首的最小空闲分区开始分配 -
最差适应算法
空闲分区按分区大小递减的次序排列,从空闲分区链链首的最大空闲分区开始分配;
3.2 分页存储管理
3.2.1 特点
避开了内存分配的连续性要求,而采取了离散分配内存方式,基本单位为页;
3.2.1 逻辑地址转物理地址
3.2.2 优点
-
提高了内存空间的利用率;
-
无外部碎片;
-
实现了离散存储,增强了分配的灵活性;
3.2.3 缺点
-
增大了系统开销;
-
存在内部碎片;
-
破坏了程序的完整性,给程序的共享、动态链接等技术的实现带来了困难;
3.3 分段存储管理
3.3.1 特点
每一段都是一组逻辑意义完整的信息集合
3.3.2 逻辑地址转物理地址
3.3.3 优点
-
有利于信息共享;
-
更方便用户编写模块化程序;
3.3.5 缺点
-
需要更多硬件支持,增加了计算机的成本;
-
存在外部碎片问题;
-
内存利用率低;
3.4 段页式存储管理
3.4.1 特点
结合了分段存储管理和分页存储管理的优点,在为程序分配空间时采用先根据程序自身结构分段,每个段内部则按照分页存储管理进行分配;
3.4.2 逻辑地址转物理地址
3.4.3 优点
同时具有分段存储和分页存储的优点;
3.4.4 缺点
-
增加了硬件成本
-
依旧存在内部碎片
-
增加了系统开销和软件复杂性
3.5 块表
快表是一块小容量的相联存储器,就是存放在高速缓冲存储器的部分页表。作为页表的Cache,它的作用与页表相似,但是提高了访问速率。
3.6 页面置换算法
-
最优算法
-
随机算法
-
先进先出算法(FIFO):可能会产生抖动
-
最近最少使用算法(LRU):不会抖动
抖动: 频繁的出现被置换页面又再次被引入的情况;
注意: 若指令占据两个未读入的页,只会产生一次缺页中断;若数据占据两个未读入的页,则会产生两次缺页中断;
4. 文件管理
4.1 索引文件结构
4.1.1 例题
4.2 文件和树形目录结构
4.2.1 文件属性
- R–只读文件属性
- A–存档属性
- S–系统文件
- H–隐藏文件
4.2.2 文件名的组成
- 驱动器号
- 路径
- 主文件名
- 扩展名
4.2.3 路径
- 绝对路径:从盘符开始的路径
- 相对路径:从当前位置开始的路径
4.3 空闲存储空间管理
- 空闲区表法
- 空闲链表法
- 位示图法(重要)
- 成组链接法
4.3.1 位示图法例题
5. 设备管理
5.1 数据传输控制方式
5.1.1 程序控制方式
在程序的主动控制下,通过读取状态寄存器了解接口的情况,完成相应的程序操作。为了及时了解接口的状 态,需要时间密集的查询操作。CPU效率低。
5.1.2 程序中断方式
当接口出现需要程序干预的事件,通过中断通知CPU,CPU再读取状态寄存器,确定事件的种类,以便执行不同的代码处理。CPU效率高而且及时。
5.1.3 DMA方式
传送的具体过程由硬件(DMA控制器)完成,传送速度比通过CPU快,尤其是在批量传送时效率很高,CPU干预最少。
5.2 虚设备与SPOOLING 技术
可将一台物理I/O设备虚拟为多台逻辑I/O设备,同样允许多个用户共享一台物理I/O设备。 例如打印机,若无SPOOLING技术,则当打印机正在工作时再去打印会提示用户打印机正在打印中信息。若使用SPOOLING技术,则会提供一个缓冲区,在打印机已有任务的情况下,新任务会加入缓冲区中等待打印。