【操作系统原理】第五章课后习题

前言

  • 课本: 操作系统原理(第五版)[费翔林,骆斌编著]
  • 习题: 主要习题内容是第一章到第六章,具体内容如下表
章节 内容 链接
第一章 思考题1,3,7、应用题7,12(1)~(4) https://blog.csdn.net/Zchengjisihan/article/details/136493304?spm=1001.2014.3001.5501
第二章 思考题1,3,10, 20, 26, 32, 38, 68、应用题7,8,12, 16, 25 https://blog.csdn.net/Zchengjisihan/article/details/136493596?spm=1001.2014.3001.5501
第三章 思考题1,2,7,8,9,22,25,27,28、应用题3,4,8,16(1),17,23,24,25,30,38(1),39(1),41,43(2),50 https://blog.csdn.net/Zchengjisihan/article/details/136502000?spm=1001.2014.3001.5501
第四章 思考题2,4,10,15,18,20, 36、应用题1,2,3,6,11(2),12,16,17,20,30,31,39,41 https://blog.csdn.net/Zchengjisihan/article/details/137570109?spm=1001.2014.3001.5501
第五章 思考题3,7,21,25,26,27,28、应用题7,9,10,15,16,17,21 https://blog.csdn.net/Zchengjisihan/article/details/138527085?spm=1001.2014.3001.5501
第六章 思考题4,5,6,10,28、应用题8,16,17,20,23,26(1) https://blog.csdn.net/Zchengjisihan/article/details/138977250?spm=1001.2014.3001.5501

习题五思考题

3. 试述直接存储器存取 (DMA) 传输信息的工作原理

解:其工作原理包括初始化 DMA 控制器、外设发送请求信号、DMA 中断CPU、CPU 响应并将总线控制权交给 DMA、DMA 执行数据传输、完成后通知CPU,最终 CPU 恢复控制权。DMA 使得外设和内存之间的数据传输能够在不占用 CPU 过多时间的情况下进行,提高系统效率。

7.试述 IO 系统的层次及其功能

解:操作系统把 I/O 软件依次组织成 4 个层次:I/0 中断处理程序;I/0 设备驱动程序; 独立于设备的 I/0 软件和用户空间的 IO 软件。

  • I/0 中断处理程序:当进程请求 I/0 操作时, 通常被挂起, 直到数据传输结束并产生 I/0 中断时操作系统接管 CPU 后转向中断处理程序执行。CPU 响应请求并转入中断处理程序, 它检查设备状态寄存器内容, 判断产生中断原因根据 I/O 操作的完成情况进行相应的处理等。
  • I/0 设备驱动程序:设备驱动程序的功能是从独立于设备的软件中接收并执行 I0 请求。一条典型的 I/O 请求是读第 n 块如果请求到来时驱动程序空闲, 它立即执行这个请求; 但如果它正在处理上一个 I/0 请求会将新到来的请求放入 IO 请求队列中, 待当前请求完成后, 再依次从 I/O 请求队列中取出 IO 请求进行处理。
  • 独立于设备的 I/0 软件:虽然设备驱动程序是设备专用的, 但大部分 I/0 软件却与设备无关独立于设备的 I/O 软件和设备驱动程序之间的界限取决于具体系统, 其基本功能是执行适用于所有设备的常用 I/O 功能, 并向用户层软件提供一致性接口。
  • 用户空间的 IO 软件:尽管大部分 I/0 软件都包含在操作系统中, 但有一小部分是与应用程序链接在一起的库函数, 除此之外还有 SPOOLing,其是在内核外运行的系统 I/0 软件它采用预输入、缓输出和井管理技术是多道程序设计系统中处理独占型设备的一种方法, 创建守护进程和特殊目录解决独占型设备的空占问题。

21. 什么是虚拟设备? 实现虚拟设备的主要条件是什么?

解:虚拟设备是操作系统利用大容量的共享设备磁盘作为后援,用软件技术 来模拟独享设备的工作,使得每个用户都认为获得了供自己独占使用的输入设 备或输出设备,并且它们的传输速度与磁盘一样快。

从硬件来讲,系统必须配有大容量的磁盘,要具有设备与 CPU 并行工作的能力;从软件来讲,应该采用多道程序设计,并且有配套的进程。

25.为什么 SPOOLing 又称为假脱机技术?

解:脱机技术是指:在主机之外另设一台小型微型机,该机只与外部设备打交道,把要处理的信息成批地输入到高速的辅助存储器(磁带或磁盘)中,再把辅助存储器与主机连接起来。主机仅从高速的辅助存储器中调入信息进行处理, 作业完成后,处理结果和有关信息以文件形式存于辅助存储器中,然后再把它们转移到卫星机去输出。

而 SPOOLing 技术是:在磁盘上分出两块存储空间,一块用来预先存放多个作业的全部信息,被称为"输入井";另一块用来暂时存放每个运行作业的输出信息,被称为"输出井"。为真正提供虚拟设备,操作系统中还要有相应的软 件,即在多道程序设计基础上的"外围设备联机同时操作技术"。

因此 SPOOLing 使用这种方法达到了以联机的方式得到脱机的效果。

26.SPOOLing 是如何把独占型设备改造成共享设备的?

解:以打印机为例子,当用户进程请求输出打印时,SPOOLing 系统同意为它打印输出,但并不真正把打印机分配给该用户进程,而只是为它做两件事:

  1. 由守护进程在输出井中为之申请一空闲缓冲区,并将要打印的数据送入其 中(放到一个特殊目录下);
  2. 守护进程再为用户进程申请一张空白的用户打印请求表,并将用户的打印 要求填入表中,再将该表挂到请求打印队列上。

打印机空闲时,守护进程将从请求打印队列的队首取出一张请求表,根据表中的 要求将要打印的数据从输出井传送到内存缓冲区,再由打印机进行打印。

打印完后,守护进程再查看请求打印队列中是否还有等待打印的请求表,若 有,又取出第一张表,并根据其中的打印要求进行打印,如此下去,直至请求队 列空为止。

27.设单缓冲情况下, 磁盘把一块数据输入缓冲区所花费的时间为T, 系统从缓冲区将数据传送到用户区所花费的时间为 M, 处理器处理这块数据所花费的时间为 C, 试证明系统对一块数据的处理时间为 max(C,T)+M。

解:在系统处理大量数据时,一块数据的处理时间主要花费在输入到缓冲区中 T 和处理器处理这块数据 M,这两个是并发的,只要有一方没有完成工作下一个数据需要等待,所以处理时间就为 max(C,T), 又因为虽然 M 很小,但是这个是不可忽略的,当双方都完成工作后系统才会从缓冲区将数据传送到用户区。 因此总的是时间为 max(C,T)+M。

28.为什么要引人设备独立性? 如何实现设备独立性?

解:

  1. 为什么要引入设备独立性:引入设备独立性是因为用户在申请使用设备 时应对静态分配设备提出申请要求。如果申请时指定某台具体的物理设备, 那么分配工作就变得很简单, 但当所指定的某台设备存在故障时, 就不能满足申请要求, 此作业也就不能投入运行。如用户通常不指定物理设备, 而是指定逻辑设备, 使得用户作业和物理设备分离开来, 再通过其他途径建立逻辑设备和物理设备之间的映射, 设备的这种特性称为"设备独立性"。
  2. 如何实现设备的独立性:这一部分是由操作系统实现的, 用户编写的程序可访问任何设备而无须事先指定物理设备号, 即程序中所指定的设备与物理设备无关, 逻辑设备名是用户命名 (号) 的, 是可更改的, 物理设备名 (号) 是系统规定的, 是不可更改的。设备管理功能之一就是把逻辑设备名 (号) 转换成物理设备名 (号), 为此, 系统需要提供逻辑设备名和物理设备名 (设备地址) 的对照表以供转换使用。用户只需说明需要使用哪个逻辑设备名,具体调用哪个物理设备又操作 系统分配。

习题五应用题

7.定磁盘有 200 个面号 0 到 199 当前取的置在 143 号面上并刚刚完成 125 号柱面的服务请求。如果请求队列的先后顺序是:86,147,91,177,94,150,102,17试问为了完成上述请求, 下列算法存取警所移动的总量是多少? 并计算存取臂移动的顺序。

(1) 先来先服务算法 FCFS:

(2) 最短查找时间优先算法 SSTF

(3) 扫描算法 SCAN;

(4) 电梯调度算法。

解:

  1. FCFS 的情况:

    磁头移动的顺序:86,147,91,177,94,150,102,175,130;磁头移动总量 605

  2. SSTF 的情况:图略具体过程如下:

    1. 移动磁头从 143 到 147:移动距离 = |143 - 147| = 4
    2. 移动磁头从 147 到 150:移动距离 = |147 - 150| = 3
    3. 移动磁头从 150 到 130:移动距离 = |150 - 130| = 20
    4. 移动磁头从 130 到 102:移动距离 = |130 - 102| = 28
    5. 移动磁头从 102 到 91:移动距离 = |102 - 91| = 11
    6. 移动磁头从 91 到 94:移动距离 = |91 - 94| = 3
    7. 移动磁头从 94 到 86:移动距离 = |94 - 86| = 8
    8. 移动磁头从 86 到 175:移动距离 = |86 - 175| = 89
    9. 移动磁头从 175 到 177:移动距离 = |175 - 177| = 2
      磁头移动的顺序:147, 150, 130, 102, 91, 94, 86, 175, 177;磁头移动总量 168
  3. SCAN 的情况:图略具体过程如下:

    1. 移动磁头从 143 到 147:移动距离 = |143 - 147| = 4
    2. 移动磁头从 147 到 150:移动距离 = |147 - 150| = 3
    3. 移动磁头从 150 到 175:移动距离 = |150 - 175| = 25
    4. 移动磁头从 175 到 177:移动距离 = |175 - 177| = 2
    5. 移动磁头从 177 到 200:移动距离 = |177 - 200| = 23
    6. 移动磁头从 200 到 130:移动距离 = |200 - 130| = 70
    7. 移动磁头从 130 到 102:移动距离 = |130 - 102| = 28
    8. 移动磁头从 102 到 94:移动距离 = |102 - 94| = 8
    9. 移动磁头从 94 到 91:移动距离 = |94 - 91| = 3
    10. 移动磁头从 91 到 86:移动距离 = |91 - 86| = 5
      磁头移动的顺序:147, 150, 175, 177, 200, 130, 102, 94, 91, 86;磁头移动总量 171
  4. 电梯调度算法的情况:图略具体过程如下:

    1. 移动磁头从 143 到 147:移动距离 = |143 - 147| = 4
    2. 移动磁头从 147 到 150:移动距离 = |147 - 150| = 3
    3. 移动磁头从 150 到 175:移动距离 = |150 - 175| = 25
    4. 移动磁头从 175 到 177:移动距离 = |175 - 177| = 2
    5. 移动磁头从 177 到最大请求磁道 177:移动距离 = |177 - 177| = 0 6. 移动磁头从 177 到 86:移动距离 = |177 - 86| = 91
    6. 移动磁头从 86 到 91:移动距离 = |86 - 91| = 5
    7. 移动磁头从 91 到 94:移动距离 = |91 - 94| = 3 9. 移动磁头从 94 到 102:移动距离 = |94 - 102| = 8
    8. 移动磁头从 102 到 130:移动距离 = |102 - 130| = 28
      磁头移动的顺序:147, 150, 175, 177, 177, 86, 91, 94, 102, 130;磁头移动总量 169

9.若磁头的当前位置是第 100 号面, 磁头正在向磁道号减小的方向移动。现有磁盘读写请求队列, 柱面号依次为:190,10,160,80,90,125,30,20,29,140,25; 若采用最短寻道时间优先算法和电梯调度算法, 试计算出各种算法的移臂所经过的柱面数?

解:

  1. SSTF 的情况:图略具体过程如下:

    1. 移动磁头从 100 到 90:移动距离 = |100 - 90| = 10
    2. 移动磁头从 90 到 80:移动距离 = |90 - 80| = 10 3. 移动磁头从 80 到 125:移动距离 = |80 - 125| = 45
    3. 移动磁头从 125 到 140:移动距离 = |125 - 140| = 15
    4. 移动磁头从 140 到 160:移动距离 = |140 - 160| = 20
    5. 移动磁头从 160 到 190:移动距离 = |160 - 190| = 30
    6. 移动磁头从 190 到 30:移动距离 = |190 - 30| = 160
    7. 移动磁头从 30 到 29:移动距离 = |30 - 29| = 1
    8. 移动磁头从 29 到 25:移动距离 = |29 - 25| = 4
    9. 移动磁头从 25 到 20:移动距离 = |25 - 20| = 5
    10. 移动磁头从 20 到 10:移动距离 = |20 - 10| = 10
      磁头移动的顺序:90, 80, 125, 140, 160, 190, 30, 29, 25, 20, 10;磁头移动总量 315
  2. 电梯调度算法的情况:图略具体过程如下:

    1. 移动磁头从 100 到 90:移动距离 = |100 - 90| = 10
    2. 移动磁头从 90 到 80:移动距离 = |90 - 80| = 10
    3. 移动磁头从 80 到 30:移动距离 = |80 - 30| = 50
    4. 移动磁头从 30 到 29:移动距离 = |30 - 29| = 1
    5. 移动磁头从 29 到 25:移动距离 = |29 - 25| = 4
    6. 移动磁头从 25 到 20:移动距离 = |25 - 20| = 5
    7. 移动磁头从 20 到 10:移动距离 = |20 - 10| = 10
    8. 移动磁头从 10 到 190:移动距离 = |10 - 190| = 180
    9. 移动磁头从 190 到 160:移动距离 = |190 - 160| = 30
    10. 移动磁头从 160 到 140:移动距离 = |160 - 140| = 20
    11. 移动磁头从 140 到 125:移动距离 = |140 - 125| = 15
      磁头移动的顺序:90, 30, 29, 25, 20, 10, 190,160,140,125;磁头移动总量335

10.若磁头的当前位置是第 100 号柱面, 磁头正在向磁道号增加的方向移动。现有磁盘读写请求队列, 柱面号依次为:23,376,205,132,19,61,190,398,29,4,1 若采用先来先服务算法、最短寻道时间优先算法和扫描算法试计算出各种算法中的移臂所经过的柱面数?

解:

  1. FCFS 的情况:图略具体过程如下:

    1. 移动磁头从 100 到 23:移动距离 = |100 - 23| = 77

    2. 移动磁头从 23 到 376:移动距离 = |23 - 376| = 353

    3. 移动磁头从 376 到 205:移动距离 = |376 - 205| = 171

    4. 移动磁头从 205 到 132:移动距离 = |205 - 132| = 73

    5. 移动磁头从 132 到 19:移动距离 = |132 - 19| = 113

    6. 移动磁头从 19 到 61:移动距离 = |19 - 61| = 42

    7. 移动磁头从 61 到 190:移动距离 = |61 - 190| = 129

    8. 移动磁头从 190 到 398:移动距离 = |190 - 398| = 208

    9. 移动磁头从 398 到 29:移动距离 = |398 - 29| = 369

    10. 移动磁头从 29 到 4:移动距离 = |29 - 4| = 25

    11. 移动磁头从 4 到 18:移动距离 = |4 - 18| = 14

    12. 移动磁头从 18 到 40:移动距离 = |18 - 40| = 22

      总的移动距离为 77 + 353 + 171 + 73 + 113 + 42 + 129 + 208 + 369 + 25 + 14 + 22 = 1596。

  2. SSTF 的情况:图略具体过程如下:

    1. 移动磁头从 100 到 61:移动距离 = |100 - 61| = 39
    2. 移动磁头从 61 到 40:移动距离 = |61 - 40| = 21
    3. 移动磁头从 40 到 29:移动距离 = |40 - 29| = 11
    4. 移动磁头从 29 到 23:移动距离 = |29 - 23| = 6
    5. 移动磁头从 23 到 18:移动距离 = |23 - 18| = 5
    6. 移动磁头从 18 到 19:移动距离 = |18 - 19| = 1
    7. 移动磁头从 19 到 4:移动距离 = |19 - 4| = 15
    8. 移动磁头从 4 到 132:移动距离 = |4 - 132| = 128
    9. 移动磁头从 132 到 190:移动距离 = |132 - 190| = 58
    10. 移动磁头从 190 到 205:移动距离 = |190 - 205| = 15
    11. 移动磁头从 205 到 376:移动距离 = |205 - 376| = 171
    12. 移动磁头从 376 到 398:移动距离 = |376 - 398| = 22
      总的移动距离为 39 + 21 + 11 + 6 + 5 + 1 + 15 + 128 + 58 + 15 + 171 +
      22 = 482。
  3. SCAN 的情况:图略具体过程如下:

    1. 移动磁头从 100 到 132:移动距离 = |100 - 132| = 32
    2. 移动磁头从 132 到 190:移动距离 = |132 - 190| = 58
    3. 移动磁头从 190 到 205:移动距离 = |190 - 205| = 15
    4. 移动磁头从 205 到 376:移动距离 = |205 - 376| = 171
    5. 移动磁头从 376 到 398:移动距离 = |376 - 398| = 22
    6. 移动磁头从 398 到 61:移动距离 = |398 - 61| = 337
    7. 移动磁头从 61 到 40:移动距离 = |61 - 40| = 21
    8. 移动磁头从 40 到 29:移动距离 = |40 - 29| = 11
    9. 移动磁头从 29 到 23:移动距离 = |29 - 23| = 6
    10. 移动磁头从 23 到 19:移动距离 = |23 - 19| = 4
    11. 移动磁头从 19 到 18:移动距离 = |19 - 18| = 1
    12. 移动磁头从 18 到 4:移动距离 = |18 - 4| = 14
      总的移动距离为 32 + 58 + 15 + 171 + 22 + 337 + 21 + 11 + 6 + 4 + 1 +
      14 = 682。

11(2)给定段表如下图,并且给定地址为段号和位数 <3.400>,试求对应的内存物理地址

解:首先找到段表中段号为 3 的记录,查表可知段号为 3 的段首地址为 1327, 所以内存的物理地址为 1327 与 400 拼接,也就是内存物理地址为 1327400

15.一个软磁盘有 40 个柱面, 查找移过每个面花费 6 ms。若文件信息块凌乱地存放, 则相邻逻辑块平均间隔 13 个柱面。但若优化存放, 相邻逻辑块平均间隔 2 个柱面。如果搜索延迟为 100ms,传输速度为每块 25ms 在两情下传输度为 100 块的文件多时间?

解:

  1. 文件信息凌乱存放时:
    T = ( 13 ∗ 6 + 100 + 25 ) ∗ 100 = 20300 T = (13 ∗ 6 + 100 + 25) ∗ 100 = 20300 T=(13∗6+100+25)∗100=20300

  2. 优化存放
    T = ( 2 ∗ 6 + 100 + 25 ) ∗ 100 = 13700 T = (2 ∗ 6 + 100 + 25) ∗ 100 = 13700 T=(2∗6+100+25)∗100=13700

16.磁盘请求以 10,22,20,2,40,6,38 柱面的序到达磁盘动器如磁头当前位于柱面 20, 若查找移过每个柱面要花费 6ms, 用以下算法计算查找时间:(1)FCFS;(2) 最短查找优先;(3) 电梯调度算法 (正向柱面大的方向移动)。

解:

  1. FCFS 的情况:图略磁头移动的过程如下:

    1. 移动磁头从 20 到 10:移动距离 = |20 - 10| = 10,时间 = 10 * 6 = 60ms
    2. 移动磁头从 10 到 22:移动距离 = |10 - 22| = 12,时间 = 12 * 6 = 72ms
    3. 移动磁头从 22 到 20:移动距离 = |22 - 20| = 2,时间 = 2 * 6 = 12ms
    4. 移动磁头从 20 到 2:移动距离 = |20 - 2| = 18,时间 = 18 * 6 = 108ms
    5. 移动磁头从 2 到 40:移动距离 = |2 - 40| = 38,时间 = 38 * 6 = 228ms
    6. 移动磁头从 40 到 6:移动距离 = |40 - 6| = 34,时间 = 34 * 6 = 204ms
    7. 移动磁头从 6 到 38:移动距离 = |6 - 38| = 32,时间 = 32 * 6 = 192ms
      总查找时间为 60 + 72 + 12 + 108 + 228 + 204 + 192 = 876ms
  2. SSTF 的情况:图略磁头移动的过程如下:

    1. 移动磁头从 20 到 22:移动距离 = |20 - 22| = 2,时间 = 2 * 6 = 12ms

    2. 移动磁头从 22 到 20:移动距离 = |22 - 20| = 2,时间 = 2 * 6 = 12ms 3. 移动磁头从 20 到 10:移动距离 = |20 - 10| = 10,时间 = 10 * 6 = 60ms

    3. 移动磁头从 10 到 2:移动距离 = |10 - 2| = 8,时间 = 8 * 6 = 48ms

    4. 移动磁头从 2 到 6:移动距离 = |2 - 6| = 4,时间 = 4 * 6 = 24ms

    5. 移动磁头从 6 到 38:移动距离 = |6 - 38| = 32,时间 = 32 * 6 = 192ms

    6. 移动磁头从 38 到 40:移动距离 = |38 - 40| = 2,时间 = 2 * 6 = 12ms

      总查找时间为 12 + 12 + 60 + 48 + 24 + 192 + 12 = 360ms

  3. 电梯调度算法的情况:图略磁头移动的过程如下:

    1. 移动磁头从 20 到 40:移动距离 = |20 - 40| = 20,时间 = 20 * 6 = 120ms
    2. 移动磁头从 40 到 38:移动距离 = |40 - 38| = 2,时间 = 2 * 6 = 12ms
    3. 移动磁头从 38 到 2:移动距离 = |38 - 2| = 36,时间 = 36 * 6 = 216ms
    4. 移动磁头从 2 到 6:移动距离 = |6 - 2| = 4,时间 = 4 * 6 = 24ms
    5. 移动磁头从 6 到 10:移动距离 = |6 - 10| = 4,时间 = 4 * 6 = 24ms
    6. 移动磁头从 10 到 19:移动距离 = |10 - 19| = 9,时间 = 9 * 6 = 54ms
    7. 移动磁头从 19 到 22:移动距离 = |19 - 22| = 3,时间 = 3 * 6 = 18ms
      总查找时间为 120 + 12 + 216 + 24 + 24 + 54 + 18 = 468ms

17.假定在某移动臂磁盘上刚刚处理了访问第 75 号面的请求前正在第 80 号面读取信息, 并且有下述请求序列等待访问磁盘。试用:(1) 电梯调度算法;(2) 最短查找时间优先算法分别列出实际处理上述请求的次序

解:

  1. 电梯调度算法的情况:

    请求次序为 90 → 102 → 160 → 188 → 190 → 32 → 40 → 58

  2. SSTF 的情况:

    请求次序为 90 → 102 → 58 → 40 → 32 → 160 → 188 → 190

21.某操作系统采用双缓冲技术传送磁盘数据。设从磁盘将数据传送到缓冲区所用的时间为 T1, 将缓冲区中数据传送到用户区所用的时间为 T2,(假设 T2 << T1),CPU 处理数据所用的时间为 T3, 试计算处理此数据系统所用的总时间。

解:

  1. 若 T1 > T3:

    处理此数据的时间 T = T2 + T3

  2. 若 T3 > T1:

    处理此数据的时间 T = T1


结束语

如果有疑问欢迎大家留言讨论,你如果觉得这篇文章对你有帮助可以给我一个免费的赞吗?你们的认可是我分享的最大动力!

相关推荐
hiddenSharp4295 个月前
【操作系统原理】第六章课后习题
操作系统原理
hiddenSharp4298 个月前
【操作系统原理】第二章课后习题
操作系统原理·计算机基础课
Ealser1 年前
<Linux>(极简关键、省时省力)《Linux操作系统原理分析》(1)
linux·运维·网络·操作系统原理