操作系统期末总复习——绝地求生版


✅ 2022 新年第一篇,献给了 OS
1次文章更新 —— 2022/1/2 18:00,改善文章结构
2次文章更新 —— 2022/1/3 19:00,已完善链接、PV有误语句,补充部分填空题
3次文章更新 —— 2022/1/4 11:40,请看 五、更新内容



PUBG ⌨️


一、考试形式

● 10 道单选 —— 10 × 1(分)

● 10 道填空 —— 10 × 2(分)

30分的简答题(概念与计算)

● 4 道综合计算题 —— 10 × 4(分)

补充说明:总共有 5 种综合计算题,只选其中的四种进行考察。后文有讲解。




二、重点内容的排序 + 简单分析

序号重点内容
1⭐️⭐️⭐️⭐️⭐️ —— 死锁【占了整张试卷的高分值,填空 + 选择 + 10分大题
【死锁的定义、产生的原因、4个必要条件、处理死锁的3种方法(对比、优缺点)】
【死锁的应用】
【大题就是银行家算法,需注意格式、中间变量、表格】
2⭐️⭐️⭐️⭐️ —— 信号量与 P、V 操作【填空题 + 10分大题
【进程的同步与互斥,理解清楚】
【主要看记录型信号量,其他类型也要看看】
【注:语法可以用类C语言、PV的顺序一定不能错】
3⭐️⭐️⭐️⭐️ —— 驱动调度技术【这里有一道综合的 10分大题
【4种调度算法、读取步骤、磁盘结构、特点】
4⭐️⭐️⭐️⭐️ —— 处理器调度 + 作业的管理和调度【这里有一个两级调度的大题,比如说上课写的那种。10分大题
5⭐️⭐️⭐️ —— 页面置换算法【 一道 10分大题,3种置换算法要掌握:FIFO、LRU、OPT,并会计算缺页中断率】
6⭐️⭐️⭐️ —— 文件的物理结构与存储设备【可能有混合索引的复杂计算。考试难点
【地址如何计算、映射怎么实现、一次链接?二次链接?】
7⭐️⭐️⭐️ —— 页式存储管理【基本分页是面向系统的,也会产生碎片】
【页式地址转换:页表项、页内位移位、逻辑地址转换为物理地址(填空选择)】
8⭐️⭐️ —— 进程及其实现【三态模型的概念、个数、转换流程。概念简答题
【什么是进程控制块(PCB),描述了哪些信息?】
9⭐️⭐️ —— 可变分区【4种分区算法,要能用语言描述、优缺点(背)、特点。】
10⭐️⭐️ —— 缓冲技术【为什么要引入缓冲技术?】
【有时间看看这 4 个缓冲】
11⭐️ —— 多道程序系统【设计的概念 → 目的是什么?概念简答题
12⭐️ —— 并发进程【引入的目的 → 看样例,看并发可能会导致什么错误出现?】
13⭐️ —— 重定位【动态重定位的优缺点】
14⭐️ —— 段氏存储管理【了解分段和分页在概念上的区别 → 更少的碎片】
15⭐️ —— I/O 控制方式【4种方式出现的时间段、发展的驱动力是什么?概念简答题
16⭐️ —— 设备独立性【考简答题,概念,如何实现?概念简答题
17⭐️ —— 文件存储空间的管理【引入的原因、功能,了解一下位示图法。填空选择

以上内容已覆盖 80% ~ 90% 的考试内容,接下来将对其一一进行讲解





三、一支纸,一张笔,一个晚上,一个奇迹 ✅


1、⭐️⭐️⭐️⭐️⭐️ —— 死锁

【占了整张试卷的高分值,填空 + 选择 + 10分大题
【大题就是银行家算法,需注意格式、中间变量、表格】
【死锁的定义、死锁产生的原因、4个必要条件、处理死锁的3种方法、3 种方法的对比与优缺点、死锁的应用】

相关内容全部都在这里面,银行家算法可以看下一篇(写得更详细),链接: 【操作系统⑩】——进程死锁【银行家算法+详细样例 进程死锁的预防机制、避免机制、检测与解决】.
【都要看,这是大考点 】

关于银行家算法,小编已用C++实现,并附加有一个详细的样例,链接:《银行家算法——C++实现 [开源代码 + 详细解析]》.


重点标注一下上面 “灰色模块” 里的内容

死锁的定义:系统中(两个或者)多个进程无限期地等待永远不会满足的条件,处于停滞状态,称为进程死锁。

死锁产生的原因
  [1] 系统资源不足。
  [2] 进程运行推进的顺序不合适。
  [3] 资源分配不当。

产生死锁的4个必要条件
  [1] 互斥使用(资源独占):指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。

  [2] 不可强占(不可剥夺):资源申请者不能强行地从资源占有者手中夺取资源,资源只能由占有者自愿释放。

  [3] 请求保持(部分分配,占有申请):进程在申请新资源的同时保持对原有资源的占有。

  [4] 循环等待(环路等待条件):指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合 {P0,P1,P2,···,Pn} 中的 P0 正在等待一个 P1 占用的资源;P1 正在等待 P2 占用的资源,……,Pn 正在等待已被 P0 占用的资源。

处理死锁的3种方法
死锁的处理策略:为使系统不发生死锁,必须设法破坏产生死锁的4个必要条件之一,或者允许死锁产生,但当死锁发生时能检测出死锁,并有能力实现恢复。

  [1] 预防死锁:设置某些限制条件,破坏产生死锁的4个必要条件中的一个或几个,以防止发生死锁。

  [2] 避免死锁:在资源的动态分配过程中,用某种方法防止系统进入不安全状态,从而避免死锁。(银行家算法)

  [3] 死锁的检测及解除:无需采取任何限制性措施,允许进程在运行过程中发生死锁。通过系统的检测机构及时地检测出死锁的发生,然后采取某种措施解除死锁。

补充说明:预防死锁和避免死锁都属于事先预防策略,但预防死锁的限制条件比较严格,实现起来较为简单,但往往导致系统的效率低,资源利用率低;避免死锁的限制条件相对宽松,资源分配后需要通过算法来判断是否进入不安全状态,实现起来较为复杂。

处理死锁 3 种方法的对比与优缺点

项目资源分配策略主要优点
(老师给的,有待完善)
主要缺点
(老师给的,有待完善)
死锁的预防保守分配,宁可资源闲置(即保证死锁不会发生)适用于做突发式处理的进程,不需要进行剥夺效率低,进程初始化的时间会延长;不便灵活申请新资源
死锁的避免是 “预防” 和 “检测” 的折中(通过银行家算法判断,在运行过程中是否可能有死锁产生)限制条件相对宽松,不需要进行剥夺实现起来较为复杂;必须知道将来的资源需求;进程不能被长时间阻塞
死锁的检测与解除定期检测是否有死锁的发生,若有则采取某种措施解除死锁不会延长进程初始化的时间,允许对死锁进行现场处理通过剥夺解除死锁会造成损失

死锁的应用
  [1] 生产者-消费者问题
  [2] 经典的读写问题
  [3] 经典的独木桥问题



2、⭐️⭐️⭐️⭐️ —— 信号量与 P、V 操作

【填空题 + 10分大题
【进程的同步与互斥,理解清楚】
【主要看记录型信号量,其他类型也要看看】
【注:语法可以用类 C 语言、PV 的顺序一定不能错】

“进程的同步与互斥” 的重点内容都在【操作系统⑥】——进程联系与临界区管理【同步与互斥 Dekker算法 TS指令 SWAP指令】.
【主要看 “一、进程联系” 】

“PV操作” 的重点内容全部都在这里面【操作系统⑦】——信号量与PV操作(上)【生产者消费者经典问题】.
:里面的每一道例题(都是记录型信号量),小编都已补充详细的注释】

补充说明:关于 PV操作,如果能掌握【操作系统⑦】文章里面的大部分例题,考试完全 OK 的。

关于 “PV操作” 的其他类型信号量(比如AND型信号量)在这里面【操作系统⑧】——信号量与PV操作(下)【哲学家进餐问题 AND型信号量 信号量集机制】.


下面补充两道关于 PV操作 的例题来练手

题目①:若有一个文件 F,供进程共享,现把进程分成 A、B 两组,规定同组的进程可以同时读文件 F,但当有 A 组(或 B 组)的进程在读文件 F 时,不允许 B 组(或 A 组)的进程读文件 F。现定义两个计数器 c1 和 c2 分别记录 A 组和 B 组中读文件 F 的进程数,当用 P、V 操作进行管理时需要三个信号量 S1、S2、Sab 才能保证正确的并发执行,试写出对应的程序。

题目关键字提取:【分析主要看代码和后面的 “代码说明”】
  [1] “A 组某人读文件 F”。
  [2] “B 组某人读文件 F”。
  [3] “同组的人可以同时读文件 F”。
  [4] “非同组的人不可以同时读文件 F”。

代码如下

/* 基于 C 语言写的伪代码 */
int c1 = 0, c2 = 0;			"这里是 int, 先前写错了, 写成了 semaphore "	// c1、c2 分别是 A、B 组的计数器				
semaphore S1 = 1, S2 = 1;	// S1、S2 分别是计数器 c1、c2 的互斥信号量
semaphore Sab = 1;			// Sab 是 a、b 两组间的互斥信号量
while(true)
{
	"A组进程 Ai():"		// i = 1, 2, 3, ..., a
	while(true)
	{
		P(S1);
        if( c1 == 0 )
        	P(Sab);
        c1 = c1 + 1;
        V(S1);
        读文件 F;
        P(S1);
        c1 = c1 - 1;
        if( c1 == 0 )
			V(Sab);
        V(S1);		
	}
	
	"B组进程 Bj():"		// j = 1, 2, 3, ..., b
	while(true)
	{
		P(S2);
        if( c2 == 0 )
        	P(Sab);
        c2 = c2 + 1;
        V(S2);
        读文件 F;
        P(S2);
        c2 = c2 - 1;
        if( c2 == 0 )
			V(Sab);
        V(S2);	
	}
}

代码说明
  ① S1 初始化为 1 是为了互斥访问 c1(同理S2也是)。
  ② A、B 组的计数器 c1、c2 一开始都初始化为0,是因为一开始 A 组和 B 组都没有人在读文件。
  ③ 每次要对 c1、c2 两个进行操作时,都必须要用 P、V 组合操作。
  ④ 小编自己写的类 C 语言(如果有不对的地方,欢迎评论指出),考试要求什么伪代码语言都可以,包括 Pascal。


题目②:有桥如下图,车流如箭头所示。桥上不允许两车交会,但允许同方向多辆车依次通行(即桥上可以有多个同方向的车)。请用 P、V 操作实现交通管理以防止桥上堵塞。

在这里插入图片描述

题目分析 —— 其实和上面一道题类似。可以这么理解
  [1] “有一车向左方向驶去” → “A 组某人读文件 F”。
  [2] “有一车向右方向驶去” → “B 组某人读文件 F”。
  [3] “桥上可以有多个同方向的车” → “同组的人可以同时读文件 F”。
  [4] “桥上不允许两车交会” → “非同组的人不可以同时读文件 F”

分析清楚后,问题便迎刃而解,代码如下

/* 基于 C 语言写的伪代码 */
int c1 = 0, c2 = 0;	"这里是 int, 先前写错了, 写成了 semaphore " // c1、c2 分别是 左方向L、右方向R 组的计数器
semaphore S1 = 1, S2 = 1;	// S1、S2 分别是计数器 c1、c2 的互斥信号量
semaphore mutex = 1;		// mutex 是 左方向L、右方向R 两组间的互斥信号量
while(true)
{
	"左方向开车组的进程 Li():"		// i = 1, 2, 3, ..., a
	while(true)
	{
		P(S1);
        if( c1 == 0 )
        	P(mutex);
        c1 = c1 + 1;
        V(S1);
        Li(以从左到右的方向驶去);
        P(S1);
        c1 = c1 - 1;
        if( c1 == 0 )
			V(mutex);
        V(S1);		
	}
	
	"右方向开车组的进程 Rj():"	// j = 1, 2, 3, ..., b
	while(true)
	{
		P(S2);
        if( c2 == 0 )
        	P(mutex);
        c2 = c2 + 1;
        V(S2);
        Li(以从右到左的方向驶去);
        P(S2);
        c2 = c2 - 1;
        if( c2 == 0 )
			V(mutex);
        V(S2);	
	}
}


3、⭐️⭐️⭐️⭐️ —— 驱动调度技术

【这里有一道综合的 10分大题
4种调度算法、读取步骤、磁盘结构、特点】

4种调度算法” 的重点内容和例题都在【操作系统学习笔记⑬】——设备管理(上) [直接查询、中断方式、DMA方式、缓冲技术、驱动调度技术与算法].
【主要看 “五、驱动调度技术”,“读取步骤、磁盘结构” 都在里面 】

补充说明:这里的大题可能很综合,熟悉4种调度算法的同时,务必要了解清楚 “磁盘的物理结构”、“磁盘的访问时间”。

重点标注一下上面 “灰色模块” 里的内容

4种调度算法的特点

项目含义特点
先来先服务算法(FCFS)根据进程请求访问磁盘的先后次序进行调度此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。但会致使平均寻道时间长。
最短寻道时间优先(SSTF)总是先执行查找时间最短的那个磁盘请求。较 “先来先服务” 算法有较好的性能。但是本算法存在 “饥饿” 现象,随着源源不断靠近当前磁头位置读写请求的到来,使早来的但距离当前磁头位置远的读写请求服务被无限期推迟。
扫描算法(SCAN)每次总是选择沿臂的移动方向最近的那个柱面。如果沿这个方向没有访问的请求时,就改变臂的移动方向,这非常类似于电梯的调度规则。扫描算法克服了 “饥饿” 这一缺点。扫描算法偏爱那些最接近里面或靠外的请求,对最近扫描跨过去的区域响应会较慢。
循环扫描算法(CSCAN)移动臂总是从0号柱面至最大号柱面顺序扫描,然后,直接返回0号柱面重复进行,归途中不再服务,构成了一个循环,这就减少了处理新来请求的最大延迟。(注:对这个定义有新的补充,请查看前面那个链接里面的 CSCAN算法)这减少了处理新来请求的最大延迟。


4、⭐️⭐️⭐️⭐️ —— 处理器调度 + 作业的管理和调度

【这里有一个两级调度的大题,比如说上课写的那种。10分大题

4种调度算法” 的重点内容和样例都在【操作系统⑤】——处理器的调度【调度算法 FCFS、SJF、SRTF、HRN】.
【先看看下面的 “补充说明” ,再主要看 “四、单道环境下的调度” 和 “五、多道环境下的调度” 】

补充说明:“四、单道环境下的调度” 里面的例题是 “一级调度”。而 “五、多道环境下的调度” 的例题是 “两级调度”。 【并不是 “多道” 造成的 “两级” ,而是因为:作业被 CPU 处理时,不仅需要考虑进入内存(一级),还要考虑在内存中送进 CPU 的次序(二级)】



5、⭐️⭐️⭐️ —— 页面置换算法

【 一道 10分大题3种页面置换算法要掌握:FIFO、LRU、OPT,并会计算缺页中断率】

3种页面置换算法” 的重点内容都在【操作系统⑫】——存储管理(下)【分段存储管理 虚拟存储管理 段页式存储管理方案 页面置换算法 OPT FIFO LRU】.
【主要看 “7.3 页面置换算法” ,样例可以看下面这一篇】

关于“页面置换算法”,小编已用C/C++实现,并都附加了详细的样例《页面置换算法——C/C++实现 [ OTP, FIFO, LRU, LFU + 开源代码 + 详细解析]》.



6、⭐️⭐️⭐️ —— 文件的物理结构与存储设备

【可能有混合索引的复杂计算。考试难点
【地址如何计算、映射怎么实现、一次链接?二次链接?】

“混合索引” 的重点内容和样例都在【操作系统学习笔记 ⑮ 完结篇】——文件管理 [ 文件系统 + 索引文件的详细样例 ].
【主要看 “4.1.3 索引文件 —— 样例” 】


下面补充三道的例题来练手:【上文 4.1.3 索引文件 —— 样例 中的样例是最难的】

例题①:文件系统采用多重结构搜索文件内容。设块长为 512B,每个块号占 3B,如果不考虑逻辑块号在物理块中所占的位置,分别求二级索引和三级索引时可寻址的文件最大长度。

解:
因为块长为512B,且每个块号占3B,则一个物理块可放:512 / 3 ≈ 170.67,向下取整即为 170个(物理块)地址,所以:
一级索引时可寻址的文件最大长度:170 × 512 = 87040B (约为87KB)
二级索引时可寻址的文件最大长度:170 × 170 × 512 = 14796800B (约为14.7MB)
三级索引时可寻址的文件最大长度:170 × 170 × 170 × 512 = 2515456000B (约为2.5GB)


例题②:某系统中磁盘的每个盘块大小为 1KB,外存分配方法采用中的混合索引结构,其中索引节点中直接地址 6 项,一级索引地址 2 项,二级索引地址 1 项,每个盘块号占用 4 个字节,请问该系统中允许的文件最大长度是多少?

解:
因为,该系统中磁盘的每个盘块大小为1KB,且每个盘块号占用4个字节。
故一个物理块可放:1KB / 4B ≈ 256个(物理块)地址。

因为,索引节点中直接地址有6项,一级索引地址2项,二级索引地址1项。
所以该系统中允许的文件最大长度: 6 × 1 K B + 2 × 256 × 1 K B + 1 × 25 6 2 × 1 K B = 66 , 054 K B ( 约 为 66 M B ) 6×1KB+2×256×1KB+1×256^2×1KB=66,054KB(约为66MB) 6×1KB+2×256×1KB+1×2562×1KB=66,054KB(66MB)


例题③:存放在某个磁盘上的文件系统,采用混合索引分配方式,其 FCB 中共有 13 个地址项,第 0~9 个地址项为直接地址,第 10 个地址项为一次间接地址,第 11 个地址项为二次间接地址,第 12 个地址项为三次间接地址。如果每个盘块的大小为 4K 字节,若盘块号需要用 4 个字节来描述,请问该系统中允许的文件最大长度是多少?

解:
因为,每个盘块的大小为4K字节,且每个盘块号需要用4个字节。
所以,一个物理块可放:4KB / 4B ≈ 1024个(物理块)地址。
因为,索引节点中直接地址有10项、一级索引地址1项、二级索引地址1项、二级索引地址1项。
所以该系统中允许的文件最大长度: ( 10 + 1 × 1024 + 1 × 102 4 2 + 1 × 102 4 3 ) × 4 K B = 4 , 299 , 165 , 736 K B ( 约 为 4.3 T B ) (10 + 1×1024+1 × 1024^2 + 1× 1024^3)× 4KB=4,299,165,736KB(约为4.3TB) (10+1×1024+1×10242+1×10243)×4KB=4,299,165,736KB(4.3TB)



7、⭐️⭐️⭐️ —— 页式存储管理

【基本分页是面向系统的,也会产生碎片】
【页式地址转换:页表项、页内位移位、逻辑地址转换为物理地址(填空选择)】

“页式存储管理” 的重点内容和样例都在【操作系统⑪】——存储管理(上)【分区存储管理 分页存储管理+详细样例】.
【主要看 “三、页式存储管理(也称分页存储管理)” 】

补充说明:上文的 “三、页式存储管理(也称分页存储管理)” 中的四道例题务必要掌握。

重点标注一下上面 “灰色模块” 里的内容

分页与分段的主要区别
  [1] 段是信息的逻辑单位,它是根据用户的需要划分的,因此段对用户是可见的。而页是信息的物理单位,是为了管理主存的方便而划分的,对用户是不可见的(透明的)。

  [2] 页的大小固定不变,由系统决定。而段的大小是不固定的,它由其完成的功能决定。

  [3] 段式向用户提供的是二维地址空间,而页式向用户提供的是一维地址空间,其页号和页内偏移是机器硬件的功能。

  [4] 由于段是信息的逻辑单位,因此便于存贮保护和信息的共享,而页的保护和共享受到限制。

分页存储的优点和缺点:【分页存储是由 “固定分区存储管理方案” 演化而来的】
  ● 优点:解决了(外部)碎片问题、便于管理。
  ● 缺点:不易实现共享、不便于动态连接。(且存在内部碎片)

分段存储的优点和缺点:【分段存储是由 “可变分区存储管理方案” 演化而来的。】
  ● 优点:便于动态申请内存、段表长度较短、便于共享、便于动态链接。 (且没有内部碎片)
  ● 缺点:易产生(外部)碎片。


这里再补充一道较难一点的例题(网易笔试题 —— 有用户态进程 A,其虚拟内存页为 1KB,A 占用了 64 页,内存大写为 128KB,A 进程将内存的页面和物理内存块的编号对应关系如下:

页面编号物理内存块编号
04
19
25
38

请根据以上信息回答如下问题,并给出计算过程︰

  1. 虚拟地址为 015D 对应的物理地址是多少?
  2. 物理地址为 113C 对应的虚拟地址为多少?
  3. 进程 A 有一作业长度为 8 页,试图访问虚拟地址 2A3D 并保存整型 1 到该地址对应的物理地址空间,之后又尝试从该地址读取保存的数据,请问 A 进程这两次内存访问过程能否正常执行? 并解释原因。

解:
(1)对于虚拟地址(即逻辑地址) 015 D = 1 × 1 6 2 + 5 × 16 + 13 = 349 015D = 1×16^2+5×16+13=349 015D=1×162+5×16+13=349 【这一步操作是将 16进制 → 10进制】
  故页号 = int ( 349 / 1024 ) = 0,页内位移 = 349 mod 1024 = 349。【1024的来头:因为题目告诉了其虚拟内存页为 1KB = 1024B】
  查页表第 0 页在第 4 块,所以物理地址为 1024 × 4+349=4445
  所以,虚拟地址为 015D 对应的物理地址是 115D。【和题目一样,最终也→ 16进制】


更新一种快速解法:015D = 0000 0001 0101 1101,因为页面大小为 1K,即 10 位。
那么就把“0000 0001 0101 1101” 分成两堆 → “000000 0101011101”,前面一堆是页号(结果为0),后面一堆是页内地址。
然后找到页号为 0 对应的物理框号为 4,则将 “0100” 与 “0101011101” 进行组合得到 “0100 0101011101” → 01 0001 0101 1101 → 115D。这个就是物理地址。下面的题都可以这么做。

(2)对于物理地址 113 C = 1 × 1 6 3 + 1 × 1 6 2 + 3 × 16 + 12 = 4412 113C = 1×16^3+1×16^2+3×16+12=4412 113C=1×163+1×162+3×16+12=4412 【这一步操作也是将 16进制 → 10进制】
  故物理内存块号 = int ( 4412 /1024 ) = 4,页内位移 = 4412 mod 1024 = 316。
  查页表发现,第 4 块对应 第 0 页,所以物理地址为 1024 × 0+316=316。
  所以,物理地址为 113C 对应的虚拟地址为 013C。【和题目一样,最终也→ 16进制】

(3)对于虚拟地址(即逻辑地址) 2 A 3 D = 2 × 1 6 3 + 10 × 1 6 2 + 3 × 16 + 13 = 10813 2A3D = 2×16^3+10×16^2+3×16+13=10813 2A3D=2×163+10×162+3×16+13=10813
  故页号 = int (10813 / 1024 ) = 10,页内位移 = 349 mod 1024 = 573。
  因该页号超过页表长度,即 10 > 4,故该虚拟地址非法。 故 A 进程这两次内存访问过程不能正常执行。

补充说明:如果忘了16进制是怎么 → 10进制的话,可以参考这篇,链接: 【计算机与UNIX汇编原理①】——计算机基础【原码 补码 反码 移码 BCD码 计算机系统的基本组成等】. 的 “(3)十进制数→二进制数”(原理类似)。



8、⭐️⭐️ —— 进程及其实现

【三态模型的概念、转换流程。概念简答题
【什么是进程控制块(PCB),描述了哪些信息?】

“进程及其实现” 的重点概念和内容在【操作系统③】——进程及其实现【运行态 就绪态 等待态等 PCB 进程控制块 进程要素】.
【主要看 “四、进程的状态和转换” 和 “五、进程控制块(非常重要的一小节)” 】

:这种一般是会考概念。复习考点都在上面的“四、进程的状态和转换” 和 “五、进程控制块(非常重要的一小节)” 里了。

重点标注一下上面 “灰色模块” 里的内容

最基本的三种进程状态的概念是什么?
答:
[1] 运行态(Runing):进程当前占有CPU,并在在CPU上运行。
[2] 就绪态(Ready):<1> 一个进程已经具备运行条件,但没有分配CPU,暂时不能运行。<2> 当调度给该进程CPU时,立即可以运行。
[3] 等待态(Blocked):<1> 有时也叫作 “阻塞态、封锁态、睡眠态” 。<2> 当前进程因等待某事件的发生而暂时不能运行的状态。<3> 即使这时CPU空闲,该进程也不能运行。

三态模型的转换流程是什么?
答:如下图所示。
在这里插入图片描述
[1] 就绪 一一> 运行:在调度程序时,一旦调度到这个进程的时候,就发生这件事(这个进程就由就绪态切换到了运行态)。
[2] 运行 一一> 就绪:运行进程用完了CPU分给它的时间片时发生。
[3] 运行 一一> 等待:发生情况有: ① 操作系统尚未完成某项服务。② 这个进程对某项资源的访问不能得到满足。③ 初始化I/O且须等待结果。④ 等待某一进程提供输入。
[4] 等待 一一> 就绪:等待的事件得到满足时发生。

什么是进程控制块(PCB)的概念是什么?
答:进程控制块 (Process Control Block,PCB) 是系统为了管理进程而设置的专门的数据结构,用来记录进程的外部特征,描述进程的变化过程。

进程控制块(PCB)的构成有哪些?
答:
  [1] 进程的描述信息
  [2] 进程的控制信息
  [3] 所拥有的资源和使用情况
  [4] CPU现场保护信息


注:先前写的那版是 “进程描述信息”。



9、⭐️⭐️ —— 可变分区

【4种分区算法,要能用语言描述、优缺点(背)。】

“进程及其实现” 的重点概念和内容在【操作系统⑪】——存储管理(上)【分区存储管理 分页存储管理+详细样例】.
【主要看 “2.2 可变分区”和“2.3 分配算法(也称分区算法)”】

弄一张表来对比着看吧:【特点 = 优点 + 缺点】

项目算法原理语言描述优点缺点
首次适应算法(first fit)在进行内存分配时,从未分配区表开始位置顺序找查,直到找到第一个能满足其大小要求的空闲区为止。实现简单。且优先利用内存中低址部分的空闲分区,从而保留了高址部分的大空闲区,这为以后到达的大作业分配大的内存空间创造了条件。可能将低地址处大的空闲区分割成许多小的空闲区,形成许多不连续的“碎片”。(而每次查找又都是从低址部分开始的,这会导致)碎片长度可能不能满足作业要求,降低了内存利用率。
循环首次适应算法(next fit)在首次适应算法的基础上进行了点改进。该算法不再每次都从开始位置找查,而是在上一次找到的位置接着往下找。使存储空间的利用更加均衡,不致使小的空闲区集中在存储区的一端。这会导致系统缺乏大的空闲区。
最佳适应算法(best fit)空闲分区按容量递增次序连接接。每次分配内存时顺序查找空闲分区表,找到大小能够满足要求的第一个空闲分区。(每次分配给文件都)尽可能地选择了最适合的分区空间。但也因此产生大量的不能被使用的很小的空闲区。因此这种方法会产生很多的外部碎片。所以该算法分配效果不一定是最佳的。
最坏适应算法(worst fit)和最佳适应算法类似,只不是将空闲分区按容量递减的次序连接。每次分配内存时顺序查找空闲分区表,找到大小能够满足要求的第一个空闲分区。与最佳适应算法的缺点相比,该算法优先使用最大的连续空闲区,这样分配后的空闲区就不会太小,更方便使用。当有大作业来临时,其对存储空间的申请往往得不到满足。


10、⭐️⭐️ —— 缓冲技术

【为什么要引入缓冲技术?】
【有时间看看那 4 个缓冲】

“缓冲技术” 的重点概念和内容在【操作系统学习笔记⑬】——设备管理(上) [直接查询、中断方式、DMA方式、缓冲技术、驱动调度技术与算法].
【主要看 “四、缓冲技术”】

重点标注一下上面 “灰色模块” 里的内容

为什么要引用(/采用)缓冲技术?
答:
[1] 为了改善 CPU 与外设之间速度不匹配的矛盾。
[2] 为了减少 I/O 对 CPU 的中断次数和放宽对 CPU 中断响应时间的要求。
[3] 为了提高 CPU 和 I/O 设备的并行性。



11、⭐️ —— 多道程序系统

【设计的概念 → 目的是什么?概念简答题

“多道程序系统阶段” 的重点概念和内容在【操作系统②】——操作系统的发展与分类、操作系统的结构设计【分时操作系统 整体式 层次式】.
【主要看 “2、批处理阶段” 】

重点标注一下上面 “灰色模块” 里的内容

多道程序系统设计的概念是什么?
答:多道程序系统设计是指允许多个程序(作业)同时进入一个计算机系统的内存储器并启动进行交替计算的方法。

多道程序系统设计的目的是什么?
答:充分发挥计算机系统部件的并行性,提高 CPU 的(资源)利用率。



12、⭐️ —— 并发进程

【引入的目的,并发(看样例)可能会导致什么错误出现?】

“并发进程” 的重点概念和内容在【操作系统⑥】——进程联系与临界区管理【同步与互斥 Dekker算法 TS指令 SWAP指令】.
【主要看 “2、并发环境与并发进程” 和 “3、与时间有关的不确定性” → 与时间有关的错误】

重点标注一下上面 “灰色模块” 里的内容

并发进程引入的目的是什么?
答:并发进程能共享计算机资源。这能使资源利用率大幅提升,CPU和其他资源更能保持“忙碌”状态,系统吞吐量增大。

并发可能会导致什么错误出现?
答:与时间有关的错误。由于共享资源的原因,加上进程并发执行的随机性,一个进程对另一个进程的影响是不可预测的,这时就可能导致并发进程交替使用共享资源时出现 “与时间有关的错误”。



13、⭐️ —— 重定位

【动态重定位的优缺点。】

“动态重定位” 的重点概念和内容在【操作系统⑪】——存储管理(上)【分区存储管理 分页存储管理+详细样例】.
【主要看 “1.4 地址重定位”】

重点标注一下上面 “灰色模块” 里的内容

① 静态重定位和动态重定位分别的优缺点是什么?

项目描述优点缺点
静态重定位在程序装入内存后,且在运行前,一次将需要转换的逻辑地址转换为物理地址的操作。无须增加硬件地址转换机构,便于实现程序的静态连接。[1] 程序的存储空间只能是连续的一片区域,而且在重定位之后就不能移动,这不利于内存空间的有效使用。
[2] 各个用户进程很难共享内存中的同一程序副本。
动态重定位在程序运行期间,每次访问内存之前都要进行的操作,它是靠硬件地址变换机制实现的。[1] 程序占用的内存空间动态可变,也不必连续存放在一起。
[2] 比较容易实现几个进程对同一程序副本的共享使用。
需要附加的硬件支持,增加了机器成本,而且实现存储管理的软件算法比较复杂。


14、⭐️ —— 段氏存储管理

【了解分段和分页在概念上的区别 → 更少的碎片。】

● 这个考点和前面的 “7、⭐️⭐️⭐️ —— 页式存储管理” 是相对而言的。

“段氏存储管理” 的重点概念和内容在【操作系统⑫】——存储管理(下)【分段存储管理 虚拟存储管理 段页式存储管理方案 页面置换算法 OPT FIFO LRU】.
【主要看 “四、分页和分段存储的比较”】

重点标注一下上面 “灰色模块” 里的内容

分页与分段的主要区别
  [1] 段是信息的逻辑单位,它是根据用户的需要划分的,因此段对用户是可见的。而页是信息的物理单位,是为了管理主存的方便而划分的,对用户是不可见的(透明的)。

  [2] 页的大小固定不变,由系统决定。而段的大小是不固定的,它由其完成的功能决定。

  [3] 段式向用户提供的是二维地址空间,而页式向用户提供的是一维地址空间,其页号和页内偏移是机器硬件的功能。

  [4] 由于段是信息的逻辑单位,因此便于存贮保护和信息的共享,而页的保护和共享受到限制。

分页存储的优点和缺点:【分页存储是由 “固定分区存储管理方案” 演化而来的】
  ● 优点:解决了(外部)碎片问题、便于管理。
  ● 缺点:不易实现共享、不便于动态连接。(且存在内部碎片)

分段存储的优点和缺点:【分段 存储是由 “可变分区存储管理方案” 演化而来的。】
  ● 优点:便于动态申请内存、段表长度较短、便于共享、便于动态链接。 (且没有内部碎片)
  ● 缺点:易产生(外部)碎片。



15、⭐️ —— I/O 控制方式

【4种方式出现的时间段、发展的驱动力是什么?概念简答题

“I/O 控制方式” 的重点概念和内容在【操作系统学习笔记⑬】——设备管理(上) [直接查询、中断方式、DMA方式、缓冲技术、驱动调度技术与算法].
【主要看 “三、I/O 控制方式”】

重点标注一下上面 “灰色模块” 里的内容

I/O 控制方式的 4 种方式出现的时间段
答:程序直接查询控制方式、中断方式、DMA方式、通道方式。

I/O 控制方式发展的驱动力是什么?
答:尽可能减少主机对外设的干预,即尽可能把主机从繁杂的 I/O 控制中解脱出来,以便有更多时间进行其他处理。



16、⭐️ —— 设备独立性

【考简答题,概念,如何实现?概念简答题

“设备独立性” 的重点概念和内容在【操作系统学习笔记⑭】——设备管理(下) [ 设备分配、虚拟设备——SPOOLing ].
【主要看 “2.4 设备的独立性”】

重点标注一下上面 “灰色模块” 里的内容

设备独立性的概念是什么?
答:用户进程独立于具体使用的物理设备。(也就是说,进程只需用逻辑设备名称请求使用某类设备就可以了,当系统中有多台该类设备时,系统可将其中任一台分配给请求进程,而无需仅局限于某一台设备。)

设备独立性如何实现的?
答:系统通过设置一张逻辑设备表 LUT,将应用程序(或用户程序)中所使用的逻辑设备名称映射为物理设备名(来实现设备的独立性)。



17、⭐️ —— 文件存储空间的管理

【引入的原因、功能,了解一下位示图法。填空选择

“文件存储空间的管理” 的重点概念和内容在【操作系统学习笔记 ⑮ 完结篇】——文件管理 [ 文件系统 + 索引文件的详细样例 ].
【主要看 “五、文件存储空间的管理”,位示图法在也在里面】

● 几种常用的文件存储空间的管理方法:空闲区表法、空闲链表法、位示图法。

重点标注一下上面 “灰色模块” 里的内容

文件存储空间的管理引入的原因?
答:为了为新创建的文件合理地分配存储空间。

文件存储空间的管理的功能是什么?
答:它采取连续分配方式或离散分配方式来进行对文件存储空间的管理。前者具有较高的文件分配速度,但可能产生较多的外存碎片;后者能有效地利用外存空间,但分配速度慢。


最后补充一道综合性的例题 —— 假设一个磁盘有 100 个柱面,每个柱面有 10 个磁道,每个盘面被分为 8 个扇区,柱面、磁头和扇区的编号均从 0 开始。现用字长为 16 位的位示图来管理磁盘空间,位示图的字号、位号从 0 开始编号。
(1)每个柱面有多少个存储块?该磁盘组共有多少个存储块?
(2)求位示图中字号为 7、位号为 3 的二进制位对应块的物理块号?
(3)给出该物理块的物理地址(柱面号、磁头号、扇区号)?
(4)删除文件归还第 21 柱面第 7 磁道第 3 扇区,对应的物理块号是多少?位示图中应修改第几字第几位?

解:
(1)因为每个柱面有 10 个磁道,每个盘面被分为 8 个扇区,故每个柱面有 10 × 8 = 80 个存储块。
  又因为磁盘有 100 个柱面,故磁盘共有 80 × 100 = 8000 个存储块。

(2)位示图中字号为 7、位号为 3 的二进制位对应块的块号为 7 × 16 + 3 = 115。

(3)计算柱面号:115 / 80 = 1,计算柱面余数:115 mod 80 = 35,【注:“mod” 是求余】
  计算磁道号:35 / 8 = 4,计算扇区号:35 mod 8 = 3,
  故该物理块的柱面号是 1,磁头号是 4,扇区号是 3。

(4) 块号 =(21柱面第7磁道第3扇区)21 × 80 + 7 × 8 + 3 = 1739
  位示图中对应的字号: i = 1739 / 16 = 108 i=1739/16=108 i=1739/16=108
  位示图中对应的位号: j = 1739   m o d   16 = 11 j=1739 \, mod \,16=11 j=1739mod16=11
  所以,对应的物理块号是 1739,位示图中应修改第 108 字第 11 位。


2020/1/3 19:00 选择题/填空题 补充如下:🚧。



四、补充一些易错的选择题+填空题

答案在 “灰色模块” 中,用鼠标 “刮” 一下就会出现。

  1. 某页式存储管理系统中,地址寄存器长度为 24 位,其中页号占 14 位,则主存的分块大小应该是________字节。

答案:1024。解析:24 - 14 = 10,210 = 1024。逻辑地址 = 页号 + 页内地址


  1. 一种既有利于短小作业又兼顾到长作业的作业调度算法是( )。
    A.最短剩余时间优先
    B.最短作业优先
    C.先来先服务
    D.最高响应比优先

答案:D。解析:详见 “4、⭐️⭐️⭐️⭐️ —— 处理器调度 + 作业的管理和调度”


  1. 通过硬件和软件的功能扩充,把原来独立的设备改造成能为若干用户共享的设备,这种设备称为( )。
    A.存储设备
    B.虚拟设备
    C.共享设备
    D.系统设备

答案:B。解析:详见 “链接: 【操作系统学习笔记⑭】 .” 的 “3.4 SPOOLing 系统的特点” 的 “③”。


4.‏一台机器有 32 位虚地址和 16 位物理地址,若页面大小为 512B,则页表共有页表项_________个。

答案:223。解析:逻辑地址(虚地址) = 页号 + 页内地址。512B 就是页内地址的最大值,其中 512 = 29,故 “页号的位数” 为 32 - 9 = 23。故它能表示 223 个页表项为。而 “16位物理地址” 是干扰信息 ——> 物理地址 = 页框号 + 偏移量(页框长度/页内地址)。


  1. 下列说法中正确的有_________。
    ① 并发性是指若干事件在同一时刻发生。
    ② 阻塞态是进程等待 CPU 调度时所处的状态。
    ③ 在分配共享性和独占性资源时,都可能引起死锁。
    ④ 若系统中存在一个循环等待的进程集合,则必定会死锁。
    ⑤ PV 操作不仅可以用来实现进程的同步和互斥,还可以用来防止进程的死锁。

答案:③。解析:①应该指的是并行性。②应该是就绪态(阻塞态即是等待态)。④说反了,应该是死锁产生时,系统中必然存在…(前面那半句话)。⑤PV不能用来防止进程的死锁。


  1. 进程上下文中,进程控制块属于( )内容。
    A.寄存器级上下文
    B.系统级上下文
    C.用户级上下文
    D.以上都不对

答案:B。解析:详见 “链接: 【操作系统③】.” 的 “2、进程上下文”。


  1. 进程-资源分配图是用来()。
    A.死锁的预防
    B.解决死锁的静态方法
    C.死锁的避免
    D.死锁的检测

答案:D。解析:详见 “链接: 【操作系统⑩】.” 的 “四、进程死锁的检测与解决”。


  1. 若当前进程因时间片用完而让出处理机时,该进程应转变为( )状态。
    A.运行
    B.就绪
    C.完成
    D.等待

答案:B。解析:详见 “链接: 【操作系统⑤】.” 的 “3、低级调度的算法” 的 “时间片轮转调度算法”。



五、更新内容

● 首先感谢大家,及时指出文章中的不足。经历了3天的修改与完善,整理所有的 “修改内容”、“更新内容” 如下。

1次文章更新 —— 2022/1/2 18:00,改善文章结构

2次文章更新 —— 2022/1/3 19:00,已完善链接、PV有误语句、新加 “独木桥问题(升级版)”、补充部分选择填空题

3次文章更新 —— 2022/1/4 11:24,新加 “五、更新内容”:

  ① 混合索引的那个三颗 ⭐️ 链接里面的例题第1小问的解析 已更正

  ② “分段存储的缺点” 里面的 “不易拓展” 删去。

  ③ 三态模型中,最后一个状态转换:“等待——>运行” 已更正为 “等待——>就绪”

  ④ 磁盘调度算法的 “循环调度算法CSCAN” 的定义做了补充。

  ⑤ 在 “8、⭐️⭐️ —— 进程及其实现” 中,将 “④ 进程控制块(PCB)描述了哪些信息?” 改为 “④ 进程控制块(PCB)的构成内容有哪
些?”并更新了其 4 点答案。先前我写的是答案是 “进程所描述了哪些信息?” 的答案。

  ⑥ “7、⭐️⭐️⭐️ —— 页式存储管理”例题解析中,已补充一种快速解法。



六、参考附录

[1] 《操作系统A》
上课用的慕课
链接: https://www.icourse163.org/course/NJUPT-1003219004?from=searchPage.

[2] 《操作系统教程——人民邮电出版社》
上课用的教材

[3] 其他题源参考网站:多级索引例题分页式存储管理及地址转换例题位示图例题


⭐️ ⭐️

新年第一篇    
   2022/1/1     

  • 52
    点赞
  • 158
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一支王同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值