0


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

✅ 2022 新年第一篇,献给了 OS
每个考点已配对:详细解析 + 详细例题


文章目录


PUBG ⌨️


一、考试形式

● 10 道单选 ——

10 × 1

(分)

● 10 道填空 ——

10 × 2

(分)

30

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

● 4 道综合计算题 ——

10 × 4

(分)

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


二、考察点

1.⭐️ —— 多道程序系统

2.⭐️⭐️ —— 进程及其实现

3.⭐️⭐️⭐️⭐️ —— 处理器调度 + 作业的管理和调度

4.⭐️ —— 并发进程

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

6.⭐️⭐️⭐️⭐️⭐️ —— 死锁

7.⭐️ —— 重定位

8.⭐️⭐️ —— 可变分区

9.⭐️⭐️⭐️ —— 页式存储管理

10.⭐️ —— 段氏存储管理

11.⭐️⭐️⭐️ —— 页面置换算法

12.⭐️ —— I/O 控制方式

13.⭐️⭐️—— 缓冲技术

14.⭐️⭐️⭐️⭐️ —— 驱动调度技术

15.⭐️ —— 设备独立性

16.⭐️⭐️⭐️ —— 文件的物理结构与存储设备

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

:**以上内容已覆盖

80% ~ 90%

的考试内容**。




三、考试重点的排序 + 简单分析

序号重点内容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 语言写的伪代码 */
semaphore c1 =0, c2 =0;// 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, ..., awhile(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, ..., bwhile(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);}}

代码说明
  ① 因为只有一个文件 F,所以 S1 和 S2 都只能初始化为 1。
  ② 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 语言写的伪代码 */
semaphore c1 =0, c2 =0;// 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, ..., awhile(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, ..., bwhile(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号柱面重复进行,归途中不再服务,构成了一个循环,这就减少了处理新来请求的最大延迟。这减少了处理新来请求的最大延迟。


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

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

● **“

4

种调度算法” 的重点内容和样例都在: 【操作系统学习笔记⑬】——设备管理(上) [直接查询、中断方式、DMA方式、缓冲技术、驱动调度技术与算法].
【先看看下面的 “
补充说明**” ,再主要看 “

四、单道环境下的调度

” 和 “

五、多道环境下的调度

” 】

补充说明:“

四、单道环境下的调度

” 里面的例题是 “一级调度”。而 “

五、多道环境下的调度

” 的例题是 “两级调度”。 【并不是 “多道” 造成的 “两级” ,而是因为:作业被 CPU 处理时,不仅需要考虑进入内存(一级),还要考虑在内存中送进 CPU 的次序(二级)】

关于进程调度算法,小编已用C++实现:《进程调度算法——C++实现 [FCFS, SJF, HPF, HRN + 开源代码]》. 【2021/1/3前,更新出来】


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 进程将内存的页面和物理内存块的编号对应关系如下:
页面编号物理内存块编号04192538
请根据以上信息回答如下问题,并给出计算过程︰

  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

进制】

(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] 进程标识符 (process ID):具有唯一性,通常是一串整数。
  [2] 进程名:通常是执行的文件名,不唯一。
  [3] 用户标识符 (user ID):记录下这个进程是由哪一个用户所创建的。
  [4] 进程的组关系:它有多种表现形式,比如说记录同一个用户创建的进程可以算成一组,记录的就是这样一组关系。

补充说明:如需更生动、可视化地了解这些,可以看这篇文章的 《【操作系统③】——进程及其实现》的 “

五、进程控制块(非常重要的一小节)

”。


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

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

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

2.2 可变分区

”和“

2.3 分配算法(也称分区算法)

”】

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

项目算法原理语言描述

优点
缺点

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


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

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

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

四、缓冲技术

”】

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

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


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

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

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

2、批处理阶段

” 】

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

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

多道程序系统设计的目的是什么?
答:为了改善 CPU 与外设之间速度不匹配的矛盾,减少 I/O 对 CPU 的中断次数,提高 CPU 和 I/O 设备的并行性,在操作系统中普遍采用了缓冲技术。


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 位。

好了,终于完工啦! 🚧


五、参考附录

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

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

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


本想简单写一写的…列个目录什么的…
但创作良心过不去,就写了这么多…
⭐️ ⭐️

新年第一篇    
   2022/1/1     


本文转载自: https://blog.csdn.net/Wang_Dou_Dou_/article/details/122231755
版权归原作者 一支王同学 所有, 如有侵权,请联系我们删除。

“操作系统期末总复习&mdash;&mdash;绝地求生版”的评论:

还没有评论