【操作系统原理】第四章课后习题
前言
- 课本: 操作系统原理(第五版)[费翔林,骆斌编著]
- 习题: 主要习题内容是第一章到第六章,具体内容如下表
章节 | 内容 | 链接 |
---|---|---|
第一章 | 思考题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 |
习题四思考题
2. 试述计算机系统中的存储器层次。为什么要配置层次式存储器?
解:计算机系统的存储器层次结构自上至下依次分为: 寄存器、缓存、内存磁盘磁带 5 层。配置层次式存储器是因为以便在容量大小, 速度快慢、价格高低等诸多因素中取得平衡点, 获得较好的性能价格比。
4.何谓地址转换 (重定位)? 哪些方法可以实现地址转换?
解:可执行程序逻辑地址转换 (绑定) 为物理地址的过程称地址重定位、地址映射或地址转换。一共有三种地址重定位的方式:静态地址重定位、动态地址 重定位、运行时链接地址重定位。
- 静态地址重定位:由装载程序实现装载代码模块的加载和地址转换, 把它装入分配给进程的内存指定区域, 其中的所有逻辑地址修改成内存物理地址。
- 动态地址重定位:由装载程序实现装载代码模块的加载, 把它装入分配给进程的内存指定区域, 但对链接程序处理过的应用程序的逻辑地址则不做任何修改, 程序内存起始地址被置入重定位寄存器。
- 运行时链接地址重定位:运行时链接是指将某些目标模块或库函数的链接推迟到执行时才进行。在程序执行过程中, 若发现被调用模块或库函数尚未链接, 先在内存中进行搜索以查看其是否装人内存; 若已装入, 则直接将其链接到调用者程序中, 否则进行该模块在外存上的搜索以及装入内存和进行链接, 生成一个可执行程序。这样可避免事先无法知道本次要运
10. 试述请求分页虚存管理的实现原理
解:通过将程序的地址空间划分为若干个页面,同时将物理内存划分为相同大小的页面框。当程序运行时,先去查找快表是否有该页面页码,若有则命中, 若快表中没有该页号则跳转到页表中去查找,若在页表中则命中,若不在页表中则进行缺页中断处理,去外存中寻找相关的页码,随后通过调页来将该页调入页表中。
15.试述存储管理中的碎片。列出各种存储管理方法中可能产生何种碎片?
解:存储管理中的碎片主要有两个:外部碎片和内部碎片。以下是在各种存 储管理方法中可能产生的碎片类型。
- 内部碎片:在固定分区存储管理中如果一个进程所需的内存大小不是分区大小的整数倍,可能会出现内部碎片;在动态分区存储管理中如果进程请求的内存大小与分配的块大小不完全匹配,也会出现内部碎片
- 外部碎片:分配时随机分配内存块,使得分散的小块空间难以组合成一个足够大的连续内存块,因此形成了外部碎片;当已分配的内存块被释放,但是释放的位置不是相邻的,留下了一些不连续的小块空间,形成外部碎片。
18. 试述实现虚拟存储器的基本原理
解:其基本原理是系统通过将程序的地址空间划分为虚拟页面,使得程序认为它具有比实际物理内存更大的地址空间,其原因就是拿外存中的一部分作为虚拟内存来使用。系统将维护一个页表,用于将程序的虚拟地址映射到物理地址。 页表的索引是虚拟页面号,而对应的值是物理页面框的地址。当程序访问一个尚未加载到物理内存中的页面时,会触发缺页中断。操作系统负责将通过一个页面替换算法来将缺失的页面加载到可用的物理页面框中,而这一部分缺失的页面是存储在外存上的。
20.如果内存中的某页正在与外部设备交换信息, 那么当发生缺页异常时, 可以将这一页淘汰吗? 为什么? 出现这种情况时, 你能提出怎样的处理方法?
解:当内存中的某一页正在与外部设备进行交换信息时,如果发生缺页异 常,一般情况下是不可以将这一页直接淘汰的。这是因为该页面的内容可能是外 部设备尚未完成的输入/输出操作的一部分,淘汰这一页可能导致数据的不一致性或者丢失。以下是一些处理方法:
- 等待外部设备操作完成:在发生缺页异常时,可以暂时挂起该进程,等待外部设备的数据传输完成。一旦数据传输完成,就可以将数据加载到内存中,并使进程继续执行。
- 采用异步 I/O:通过使用异步 I/O 技术,可以使外部设备的数据传输与程序的执行异步进行。这样,即使某页正在与外部设备进行交换,程序仍然可以继续执行其他操作,而不会被阻塞。当外部设备的数据传输完成后,系统会通知操作系统进行页面的加载。
- 使用双缓冲区:在与外部设备交换数据时,可以考虑使用双缓冲区技术。即 在内存中预留两个缓冲区,一个用于当前的操作,另一个用于下一次的操作。这样,在进行外部设备数据传输时,可以将当前缓冲区的数据交给外部设备,同时仍然可以进行其他操作。当需要该页面时,如果当前缓冲区的数据还未传输完成,可以使用另一个缓冲区中的数据。
36.在请求分页虚拟存储系统中, 分析下列程序设计风格对系统性能所产生的影响:(1) 送代法;(2) 递归法;(3) 常用 got 语;(4) 转子程序;(5) 动态数组。
解:
1.送代法:送代法通常使用循环结构,迭代执行任务。这样的设计风格对请求分页系统的性能有积极影响,因为它使得程序更容易被分割为较小的块, 这些块可以在需要时逐个加载到内存中。
2.递归法:递归法可能导致程序的调用栈较深,每一层递归调用都需要占用栈空间。在请求分页系统中,如果递归深度较大,可能导致频繁的缺页异常和页面调度,影响性能。
3.常用 got 语:使用全局偏移表 (GOT) 的程序设计风格可能导致间接寻址的频繁发生。在请求分页虚拟存储系统中,这可能会引起较多的缺页异常, 尤其是当 GOT 表项需要从磁盘加载时。
4.转子程序:转子程序的设计可能导致程序的执行流程频繁地跳转,这可能引起一些额外的缺页异常和页面调度。
5.动态数组:动态数组的设计通常涉及到内存的动态分配和释放,这可能导致碎片问题,进而影响请求分页系统的性能。
习题四应用题
1.在一个请求分页虚存管理系统中, 一个程序运行的页面走向是:1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 3, 7, 6, 3, 2, 1, 2, 3, 6 分别用 FIFO、OPT 和LRU 算法对于分配给程序 3 个页框、4 个页框、5 个页和 6 个页框的情况, 求出缺页异常次数和缺页中断率。
解:
1)下面介绍三个页框的情况:
-
FIFO 缺页异常次数为 16 次,缺页中断率为 16/20 = 0.80
-
OPT 缺页异常次数为 11 次,缺页中断率为 11/20 = 0.55
-
LRU 缺页异常次数为 15 次,缺页中断率为 15/20 = 0.75
2)下面介绍四个页框的情况:
-
FIFO 缺页异常次数为 13 次,缺页中断率为 13/20 = 0.65
-
OPT 缺页异常次数为 7 次,缺页中断率为 7/20 = 0.35
-
LRU 缺页异常次数为 9 次,缺页中断率为 9/20 = 0.45
3)下面介绍五个页框的情况:
-
FIFO 缺页异常次数为 8 次,缺页中断率为 8/20 = 0.40
-
OPT 缺页异常次数为 5 次,缺页中断率为 5/20 = 0.25
-
LRU 缺页异常次数为 6 次,缺页中断率为 6/20 = 0.30
4)下面介绍六个页框的情况:
-
FIFO 缺页异常次数为 7 次,缺页中断率为 7/20 = 0.35
-
OPT 缺页异常次数为 4 次,缺页中断率为 4/20 = 0.20
-
LRU 缺页异常次数为 4 次,缺页中断率为 4/20 = 0.20
2.在一个请求分页虚存管理系统中, 一个作业共有 5 页, 执行时其访问页面的次序如下,若分配给此作业 3 个页框分别采用 FIFO 和 LRU 页面替换算法求出各自的缺页异常次数和缺页中断率。
(1) 1,4,3,1,2,5,1,4,2,1,4,5
(2) 3,2,1,4,4,5,5,3,4,3,2,1,5
解:
-
FIFO:
- 引用串
1,4,3,1,2,5,1,4,2,1,4,5
。缺页异常次数:8、缺页中断率 8/12 = 0.66
- 引用串
3,2,1,4,4,5,5,3,4,3,2,1,5
。缺页异常次数:9、缺页中断率 9/13 = 0.69
- 引用串
-
LRU:
-
引用串
1,4,3,1,2,5,1,4,2,1,4,5
。缺页异常次数:8、缺页中断率 8/12 = 0.66
-
引用串
3,2,1,4,4,5,5,3,4,3,2,1,5
。缺页异常次数:9、缺页中断率 9/13 = 0.69
-
3.一个页式存储管理系统使用 FIFO、OPT 和 LRU 页面替换算法, 如果一个作业的页面走向如下,当分配给此作业的物理块数分别为 3 和 4 时, 试计算访问过程中所发生的缺页异常次数和缺页中断率。
(1) 2,3,2,1,5,2,4,5,3,2,5,2。
(2) 4,3,2,1,4,3,5,4,3,2,1,5 。
(3) 1,2,3,4,1,2,5,1,2,3,4,5。
解:
-
对于第一个引用串:2,3,2,1,5,2,4,5,3,2,5,2
-
物理块数为 3:
-
i.FIFO 缺页异常次数:9、缺页中断率 9/12 = 0.75
-
ii.OPT 缺页异常次数:6、缺页中断率 9/12 = 0.5
-
iii.LRU 缺页异常次数:7、缺页中断率 7/12 = 0.58
-
-
物理块数为 4:
-
i.FIFO 缺页异常次数:6、缺页中断率 6/12 = 0.5
-
ii.OPT 缺页异常次数:5、缺页中断率 5/12 = 0.42
-
iii.LRU 缺页异常次数:6、缺页中断率 6/12 = 0.5
-
-
-
对于第二个引用串:4,3,2,1,4,3,5,4,3,2,1,5
-
物理块数为 3:
-
i.FIFO 缺页异常次数:9、缺页中断率 9/12 = 0.75
-
ii.OPT 缺页异常次数:7、缺页中断率 7/12 = 0.58
-
iii.LRU 缺页异常次数:10、缺页中断率 10/12 = 0.83
-
-
物理块数为 4:
-
i.FIFO 缺页异常次数:10、缺页中断率 10/12 = 0.83
-
ii.OPT 缺页异常次数:6、缺页中断率 6/12 = 0.5
-
iii.LRU 缺页异常次数:7、缺页中断率 7/12 = 0.58
-
-
-
对于第三个引用串:1,2,3,4,1,2,5,1,2,3,4,5
-
物理块数为 3:
-
i.FIFO 缺页异常次数:9、缺页中断率 9/12 = 0.75
-
ii.OPT 缺页异常次数:7、缺页中断率 7/12 = 0.58
-
iii.LRU 缺页异常次数:10、缺页中断率 10/12 = 0.83
-
-
物理块数为 4:
-
i.FIFO 缺页异常次数:10、缺页中断率 10/12 = 0.83
-
ii.OPT 缺页异常次数:6、缺页中断率 6/12 = 0.5
-
iii.LRU 缺页异常次数:8、缺页中断率 8/12 = 0.66
-
-
6. 一个 32 位计算机系统使用二级页表, 虚地址被分为 9 位顶级页表 11 位二级页表和页内位移。试问; 页面长度是多少? 虚地址空间共有多少个页面?
解:
页面长度为 \(2^{32−9−11} = 212\) = 4K
虚地址空间共有 \(2^{9+11} = 2^{20}\) = 1M 个页面
11(2)给定段表如下图,并且给定地址为段号和位数 <3.400>
,试求对应的内存物理地址
解:首先找到段表中段号为 3 的记录,查表可知段号为 3 的段首地址为 1327, 所以内存的物理地址为 1327 与 400 拼接,也就是内存物理地址为 1327400
12.某计算机系统提供 24 位虚存空间, 内存空间为 218B, 采用分页式虚存管理页面尺寸为 1KB。假定应用程序产生虚拟地址11123456(八进制), 而此页面分得的块号为 100(八进制) 说明此系统如何产生相应的物理地址并写出物理地址。
解:虚拟地址 11123456(八进制)转换成二进制是:010 001 010 110 000 110 110 000 110,其中前 14 位是页号,后 10 位是页内偏移。此页面的分得的块号为 100(八进制),也就是 001 000 000,将其与页内偏移进行拼接,最终得出结果物理地址为 0|010|000|000|110|000|110
16.有数组 int A[100][100]; 元素按行存在虚存系统中采用 LRU 淘汰算法一个进程有 3 页内存空间, 每页可以存放 200 个整数其中第 1 页存放程序且假定程序已在内存中。代码如下,分别求程序 A 和B 的执行进程计算缺页次数
解:大致的示意图如下
- 若是程序 A,以 ij 为顺序来访问,则缺页次数为100/2 = 50 次
- 若是程序 B,以 ji 为顺序来访问,则缺页次数为 100/2 * 100 = 50000 次
17. 一台机器有 48 位虚地址和 32 位物理地址, 若页长为 8 KB 页表共有多少个页表项? 如果设计一个反置页表, 则有多少个页表项?
解:
- 正常的页表项数量取决于虚拟地址位数,即页表项数量 = \(2^{48−13} = 2^{35}\)
- 在反置页表中页表项的数量等于物理地址空间的大小, 即页表项的数量 = \(2^{32}\)
20.在一个分页虚拟存储系统中, 用户编程空间为 32 个页页长 1KB, 内存空间为 16KB 如果应用程序有 10 页长若已知虚页 0、1、2、3 已分得页 4、7、8、10 试把虚地址 0AC5H 和 1AC5H 转换成对应的物理地址。
解:首先将 0AC5H 和 1AC5H 转换为二进制数
- 0AC5H: 0000 | 1010 | 1100 | 0101 |
- 1AC5H: 0001 | 1010 | 1100 | 0101 |
因为页长为 1KB,所以后十位为页内偏移,前六位为虚拟页号。
即 0AC5H 的虚拟页号为“000010”,对应的十进制为 2,即虚页号为 2,对应的页框号为 8,8 转换成二进制为“001000”,与页内偏移进行拼接后得到物理地址“0010001011000101”
同时得 1AC5H 的虚拟页号为“000110”,对应的十进制为 6,即虚页号为 6,无对应的页框号,故无解。
30. 请页式虚存管理系统中, 进程访问地址的序列为:10,11,104,170, 73,305,180,240,244,445,467,366。试问:(1) 如果页面大小为 100 B, 给出页面访问序列。(2) 若进程分得三个页框, 采用 FIFO 和 LRU 替换算法求缺页中断率。
解:
访问序列为(页面大小为为 100B):0,0,1,1,0,3,1,2,2,4,4,3
分别采用 FIFO 和 LRU 替换算法的过程如下图,FIFO 的缺页中断率为5/12 =0.42,LRU 的缺页中断率为 6/12 = 0.5
31. 设程序大小为 460 个字, 考虑如下访问序列:55,20,108,180,79,310,170,255,246,43 试问:(1) 设页面大小为 100 个字, 给出访问序列页面走向。(2) 假设程序可用内存为 200 个字采用 FIFO、LRU 和 OPT 淘汰算法求出缺页中断率。
解:
页面走向:0,0,1,1,0,3,1,2,2,4,4,3
分别采用 FIFO、OPT 和 LRU 替换算法的过程如下图,FIFO 的缺页中断率为 6/12 =0.5,OPT 的缺页中断率为 5/12 = 0.42,LRU 的缺页中断率为 7/12 = 0.58
39.进程在某时刻的页表如下, 设页面大小为 1KB, 表中的所有数字是十进制数。下列虚地址转换为物理地址的值是多少? (1) 1052;(2)2221;(3) 5499。
解:下面为该题解法:
- 1052: 页号是 1,页内偏移是 052,查表可知页框号为 4,所以物理地址为4052
- 2221: 页号是 2,页内偏移是 221,查表可知页框号没有,所以需要启动缺页中断程序,现在无法直接找到其物理地址
- 5499: 页号是 5,页内偏移是 499,查表可知页框号为 0,所以物理地址为0499
41. 采用 LRU 置换算法的虚拟分页存储管理系统其页面尺寸为4KB 内存访问速度为 100ns 快表访问速度为 20ns, 缺页异常处理耗时 25ms 现有一个长度为 30KB 的进程卫进人系统分配给 P 的页框有三块, 进程的所有页面都在运行时动态装人。若 P 访问快表的命中率为 20%, 对于下述页面号访问序列:7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1。试计算平均有效访问时间是多少 (单位:ns)?
解:流程如下图所示:
由图片可以得知,一共发生了 12 次缺页,缺页中断率为 \(M_1\),不发生缺页中断的有效时间 \(T_1\),平均有效访问时间 T
\(M_1 = 12/20 = 0.6;\)
\(T_1 = (20 + 100) ∗ 0.2 + (20 + 100 + 100) ∗ 80 = 200T = (1 − 0.6) ∗ 200 + 0.6(25 + 200) = 215\)
综上可得,最后得出的平均有效访问时间为 215ns。
结束语
如果有疑问欢迎大家留言讨论,你如果觉得这篇文章对你有帮助可以给我一个免费的赞吗?我们之间的交流是我最大的动力!
本文来自博客园,作者:hiddenSharp429,转载请注明原文链接:https://www.cnblogs.com/hiddensharp429/p/18300246