02325《计算机系统结构》自考大题:第 4 章
复习总目录
02325《计算机系统结构》自考复习重点目录
第 4 章 存储体系
1. 页表法地址映像
历史考题:
题目描述:根据页表法 映像表 和 页面大小 计算 虚地址对应的实地址
课后习题 4-4
某虚拟存储器共 8 个页面,每页 1024 个字,实际主存为 4096 个字,采用页表法进行地址映像。映像表内容如下。
(1)列出会发生页面失效的全部虚页号;
(2)按以下虚地址计算主存实地址:0,3728,1023,1024,2055,7800,4096,6800。
实页号 | 装入位 |
---|---|
3 | 1 |
1 | 1 |
2 | 0 |
3 | 0 |
2 | 1 |
1 | 0 |
0 | 1 |
0 | 0 |
解:
(1)将题目给出的映像表补上虚页号,也就是按顺序 0 到 7:
虚页号 | 实页号 | 装入位 |
---|---|---|
0 | 3 | 1 |
1 | 1 | 1 |
2 | 2 | 0 |
3 | 3 | 0 |
4 | 2 | 1 |
5 | 1 | 0 |
6 | 0 | 1 |
7 | 0 | 0 |
页面失效的虚页号也就是装入位是 0 的虚页号,即 2、3、5、7。
(2)画出由虚地址计算主存实地址的表格
虚地址 | 虚页号 | 页内位移 | 装入位 | 实页号 | 页内位移 | 实地址 |
---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 3 | 0 | 3072 |
3728 | 3 | 656 | 0 | 页面失效 | 无 | |
1023 | 0 | 1023 | 1 | 3 | 1023 | 4095 |
1024 | 1 | 0 | 1 | 1 | 0 | 1024 |
2055 | 2 | 7 | 0 | 页面失效 | 无 | |
7800 | 7 | 632 | 0 | 页面失效 | 无 | |
4096 | 4 | 0 | 1 | 2 | 0 | 2048 |
6800 | 6 | 656 | 1 | 0 | 656 | 656 |
虚地址÷页面大小=虚页号⋯⋯页内位移虚地址\div 页面大小=虚页号\cdots\cdots页内位移虚地址÷页面大小=虚页号⋯⋯页内位移
商为虚页号,余数为页内位移,页面大小是题目给出的每个页面 1024 个字。
装入位和实页号根据第一问的表格按照不同虚页号的对应值填写;
两个页内位移是一样的,实页号右边多写一份页内位移是为了方便计算实地址
实地址=实页号×页面大小+页内位移实地址 = 实页号 \times 页面大小 + 页内位移实地址=实页号×页面大小+页内位移
2. 页面替换算法:FIFO、LRU
历史考题:2019.04 (FIFO)、2018.10 (FIFO)
题目描述:根据页地址流画出 FIFO、LRU 替换算法的页号变化过程,标命中时刻,计算命中率。
课后习题 4-7 FIFO
有一个虚拟存储器,主存有 0~3 四页位置,程序有 0~7 八个虚页,采用全相连映像和 FIFO 替换算法。给出如下程序页地址流:2, 3, 5, 2, 4, 0, 1, 2, 4, 6。
(1)假设程序的 2, 3, 5 页已先后装入主存的第 3, 2, 0 页位置,请画出上述页地址流工作过程中,主存各页位置上所装程序各页页号的变化过程图,标出命中时刻;
(2)求出此期间虚存总的命中率 HHH。
页面替换理解:
主存有 4 页空间,程序有 8 种页号,这里把页号当做一条指令,如果主存中有需要运行的指令,就代表了命中;而主存中没有就需要把这个指令存到主存中的空位里,如果已经没有空位了就要替换掉已经存在里面的指令。替换算法就是为了提高命中率,相当于提高效率。
简单介绍一下不同的页面替换算法:
(1)随机算法(Random,RAND):生成随机数选择被替换的页号,不考;
(2)先进先出算法(First-In First-Out,FIFO):最早装入主存的页作为被替换页;
(3)近期最少使用算法(Least Recently Used,LRU):近期最少访问的页作为被替换页;
(4)优化替换算法(Optimal,OPT):一种理想化的算法,它是根据程序未来的地址流来选择替换哪一页的,选择未来最晚被用到的页被替换,举个例子:现在主存里面存了 1, 2, 3, 4 而且存满了,后面来的地址流是 1, 1, 5, 3, 4, 6, 1,根据未来的地址流 2 是最晚被用到的(这里是未来直接不用了),因此要发生替换时优先替换 2。这种替换方式可以让命中率最大化,用来评价其它可实现的替换算法的好坏。
解:
(1)
主存页 面位置 |
初始 状态 |
页地址流 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
2 | 3 | 5 | 2 | 4 | 0 | 1 | 2 | 4 | 6 | ||
0 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5* | 2 | 2 | 2 |
1 | 4 | 4 | 4 | 4* | 4* | 6 | |||||
2 | 3 | 3 | 3 | 3 | 3 | 3 | 3* | 1 | 1 | 1 | 1 |
3 | 2 | 2 | 2 | 2 | 2 | 2* | 0 | 0 | 0 | 0 | 0 |
命中 | H | H | H | H | H |
表格解释:
1)程序的 2, 3, 5 页已先后装入主存的第 3, 2, 0 页位置对应 初始状态;
2)前四个页地址流在主存中本身就有,命中;
3)4 号进来主存中没有,而主存的 1 号页空着,直接存进去;此时已经存满了,而最先存入主存的是 2,因此加个星号,代表后面会替换它;
4)0 号进来主存中没有且主存已满,发生替换,替换的是 2;此刻最先存入主存的是 3,以此类推。
(2)命中率就是 10 个地址命中了 5 次 H=5/10=50%H=5/10=50\%H=5/10=50%
课后习题 4-11 FIFO
考虑一个 920 个字的程序,其访问虚存的地址流为 20, 22, 208, 214, 146, 618, 370, 490, 492, 868, 916, 728。
(1)若页面大小为 200 字,主存容量为 400 字,采用 FIFO 替换算法,请按访存的各个时刻,写出其虚页地址流,计算主存的命中率;
(2)若页面大小改为 100 字,再做一遍;
(3)若页面大小改为 400 字,再做一遍;
(4)由前三问的结果可得出什么结论?
(5)若把主存容量增加到 800 字,按第(1)小题再做一遍,又可以得到什么结论?
解:
本题的区别在于题目给出的是 虚存的地址流 和 页面大小,而不是 4-7 中的 程序页地址流。这里把虚存的地址流看作虚地址,程序页地址流看作虚页号,按照 4-4 中的公式,虚地址除以页面大小的商就是虚页号。主存容量除以页面大小就是 4-7 中的主存空间页数。
这里把 1、2、3、5 的结果画在一起:
虚地址 | 20 | 22 | 208 | 214 | 146 | 618 | 370 | 490 | 492 | 868 | 916 | 728 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
虚页地址 | 0 | 0 | 1 | 1 | 0 | 3 | 1 | 2 | 2 | 4 | 4 | 3 | |
主存 400 页面 200 n=2 |
0 | 0 | 0* | 0* | 0* | 3 | 3 | 3* | 3* | 4 | 4 | 4* | |
1 | 1 | 1 | 1* | 1* | 2 | 2 | 2* | 2* | 3 | 命中率 | |||
H | H | H | H | H | H | 6/12=0.5 | |||||||
虚地址 | 20 | 22 | 208 | 214 | 146 | 618 | 370 | 490 | 492 | 868 | 916 | 728 | |
虚页地址 | 0 | 0 | 2 | 2 | 1 | 6 | 3 | 4 | 4 | 8 | 9 | 7 | |
主存 400 页面 100 n=4 |
0 | 0 | 0 | 0 | 0 | 0* | 3 | 3 | 3 | 3 | 3* | 7 | |
2 | 2 | 2 | 2 | 2* | 4 | 4 | 4 | 4 | 4 | ||||
1 | 1 | 1 | 1* | 1* | 8 | 8 | 8 | ||||||
6 | 6 | 6 | 6 | 6* | 9 | 9 | 命中率 | ||||||
H | H | H | 3/12=0.25 | ||||||||||
虚地址 | 20 | 22 | 208 | 214 | 146 | 618 | 370 | 490 | 492 | 868 | 916 | 728 | |
虚页地址 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 2 | 2 | 1 | |
主存 400 页面 400 n=1 |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 2 | 2 | 1 | 命中率 |
H | H | H | H | H | H | 6/12=0.5 | |||||||
虚地址 | 20 | 22 | 208 | 214 | 146 | 618 | 370 | 490 | 492 | 868 | 916 | 728 | |
虚页地址 | 0 | 0 | 1 | 1 | 0 | 3 | 1 | 2 | 2 | 4 | 4 | 3 | |
主存 800 页面 200 n=4 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0* | 0* | 4 | 4 | 4 | |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1* | 1* | 1* | ||||
3 | 3 | 3 | 3 | 3 | 3 | 3 | |||||||
2 | 2 | 2 | 2 | 2 | 命中率 | ||||||||
H | H | H | H | H | H | H | 7/12=0.58 |
(4)从前三问的结果可以看出,在分配给程序的实存容量一定(400 字)的条件下,页面大小 SPS_PSP 过小时,命中率 HHH 较低;页面大小增大后,两个地址在同页内的机会增大,使命中率 HHH 有所上升;由于指令之间因远距离的跳转引起命中率 HHH 下降的因素不起主要作用,还未出现随页面大小增大,而使命中率 HHH 下降的情况。如果页地址流有大量的远距离转移,随页面大小增大,因在主存中的页面数过少,而导致出现虚存页面被轮流替换出去的 “颠簸” 现象时,命中率 HHH 反而会下降。
(5)可以看出,分配给程序的实存容量增大后,命中率将会有所上升。不过,命中率的提高已不显著了。如果在增大容量,可以推断出命中率的上升就会渐趋平缓了。
3. 页面替换算法:堆栈模拟
历史考题:2017.10
题目描述:堆栈模拟处理过程图
课后习题 4-8
采用 LRU 替换算法的页式虚拟存储器共有 9 页空间准备分配给 A、B 两道程序。已知 B 道程序若给其分配 4 页时,命中率为 8/15;而若分配 5 页时,命中率可达 10/15。现给出 A 道程序的页地址流的 2, 3, 2, 1, 5, 2, 4, 5, 3, 2, 5, 2, 1, 4, 5。
(1)画出用堆栈对 A 道程序页地址流的模拟处理过程图,统计给其分配 4 页和 5 页时的命中率;
(2)根据已知条件和上述统计结果,给 A、B 两道程序各分配多少实页,可使系统效率最高?
解:
堆栈模拟其实是模拟的压栈过程,个人把它类比成堆叠书籍,如下表:2 先放桌上,3 来了叠在 2 上面,2 又来了就抽出来放在 3 上面,后面都是一样的过程。n=4 的时候就是只看堆栈内容的前 4 行,最后一行的代表被替代了,这也就符合 LRU 的规则,因为如果最近被用到过肯定是叠在上面的,最下面的就被替代了。
页地址流 | 2 | 3 | 2 | 1 | 5 | 2 | 4 | 5 | 3 | 2 | 5 | 2 | 1 | 4 | 5 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
堆栈内容 | 2 | 3 | 2 | 1 | 5 | 2 | 4 | 5 | 3 | 2 | 5 | 2 | 1 | 4 | 5 | ||
2 | 3 | 2 | 1 | 5 | 2 | 4 | 5 | 3 | 2 | 5 | 2 | 1 | 4 | ||||
3 | 2 | 1 | 5 | 2 | 4 | 5 | 3 | 3 | 5 | 2 | 1 | ||||||
3 | 3 | 1 | 1 | 2 | 4 | 4 | 4 | 3 | 5 | 2 | |||||||
3 | 3 | 1 | 1 | 1 | 1 | 4 | 3 | 3 | 命中率 | ||||||||
命中 情况 |
n=4 | H | H | H | H | H | H | H | 7/15 | ||||||||
n=5 | H | H | H | H | H | H | H | H | H | H | 10/15 |
(2)因为一共就 9 页这里的分配方法就是 A4 B5 或者 A5 B4 两种,A 的命中率算出来了,B 的命中率是题目给的,那么 A4 B5 的命中率是 (7/15+10/15)/2=8.5/15(7/15+10/15)/2=8.5/15(7/15+10/15)/2=8.5/15,A5 B4 的命中率是 (10/15+8/15)/2=9/15(10/15+8/15)/2=9/15(10/15+8/15)/2=9/15,后面一种系统效率高。
4. Cache 组相联映像
历史考题:2021.10、2019.10、2017.10、2016.10
题目描述:画主存、Cache 地址字段对应关系图和空间块的映像对应关系图
课后习题 4-14 LRU
有一个 Cache 存储器。主存共分 8 个块 (0~7),Cache 为 4 个块 (0~3),采用组相联映像,组内块数为 2 块,替换算法为 LRU。
(1)画出主存、Cache 地址的各字段对应关系图(标出位数);
(2)画出主存、Cache 空间块的映像对应关系示意图;
(3)对于如下主存块地址流:1, 2, 4, 1, 3, 7, 0, 1, 2, 5, 4, 6, 4, 7, 2,如主存中内容一开始未装入 Cache 中,请列出 Cache 中各块随时间的使用状况;
(4)对于(3),指出块失效又发生块争用的时刻;
(5)对于(3),求出此期间 Cache 之命中率。
相关概念:
之前页面替换算法的题目是把 虚存 的地址存到 主存 时发生替换,这里是把 主存 的地址存到 高速缓存 Cache 时发生替换,替换方法并没有区别,但是地址映像之前是 全相连映像,这里是 组相联映像。
全相连映像:主存中任意一块都可映像装入到 Cache 中任意一块位置;就像之前的题目一样,每个虚地址都可以存到主存的任意一页中,没有限制。
直接映像:主存空间按 Cache 大小等分成区,每个区内的个块只能按位置一一对应到 Cache 的相应块位置上;举例说明比较直接:主存有 0~7 共 8 个块,Cache 有 0~3 共4 个块,那么主存的 0、4 只能存到 Cache 的 0:
(0,4)→0(0,4)\to0(0,4)→0
(1,5)→1(1,5)\to1(1,5)→1
(2,6)→2(2,6)\to2(2,6)→2
(3,7)→3(3,7)\to3(3,7)→3
组相联映像:Cache 分成若干组,主存按 Cache 分区,每个区也按 Cache 的样子分组,然后组和组之间直接映像,组和组内部的块相联映像;具体看本题答案可以直观理解。
解:
(2)先看第二问
Cache 4 块,每组 2 块 即分成 2 组;主存 8 块,即 2 区 2 组 2 块。组间直接映像,即 0 组对应 0 组,1 组对应 1 组;组内相联映像,即组内块和块可以随意存放。
(1)各字段对应关系图
根据(2)的结果,可以知道主存是 2 区 2 组 2 块,所以都用 1 个二进制位就能表示;Cache 就是比主存少个区号,别的都一样。有些题目还会给出每块的大小,可以标出块内地址的位数。
(3)根据映像关系 Cache 的 0, 1 只能存主存的 0, 1, 4, 5;Cache 的 2, 3 只能存主存的 2, 3, 6, 7;然后就和页面替换算法的题一样了。
这里就用到 LRU 替换算法了,近期最少访问的页作为被替换页;见表格 t=3 时,4 进来 0 组存满了,此时 4 刚用过,1 为最久没用过的所以 1 标记星号,当 t=4 时,又用到了 1,所以改为 4 标记星号。
时间t | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
主存块地址 | 1 | 2 | 4 | 1 | 3 | 7 | 0 | 1 | 2 | 5 | 4 | 6 | 4 | 7 | 2 | |
Cache 块 | 0 | 1 | 1 | 1* | 1 | 1 | 1 | 1* | 1 | 1 | 1* | 4 | 4 | 4 | 4 | 4 |
1 | 4 | 4* | 4* | 4* | 0 | 0* | 0* | 5 | 5* | 5* | 5* | 5* | 5* | |||
2 | 2 | 2 | 2 | 2* | 7 | 7 | 7 | 7* | 7* | 7* | 6 | 6 | 6* | 2 | ||
3 | 3 | 3* | 3* | 3* | 2 | 2 | 2 | 2* | 2* | 7 | 7* | |||||
命中情况 | 失 | 失 | 失 | H | 失 | 替 | 替 | H | 替 | 替 | 替 | 替 | H | 替 | 替 |
(4)块失效又发生块争用的时刻:6, 7, 9, 10, 11, 12, 14, 15(发生替换的时刻)
(5)命中率:Hc=3/15=0.2H_c=3/15=0.2Hc=3/15=0.2
5. 存储体系性能参数
历史考题:2020.10
题目描述:计算存储系统平均访问时间、访问效率、加速比。
2020.10 真题
有一个由 Cache 和主存组成的两级存储系统:主存的容量为 100MB,访问时间为 200ns,主存每 MB 的价格为 1 元;Cache 的容量为 4MB,访问时间为 10ns,Cache 每 MB 的价格为 50元。该系统运行某程序,在一段时间内,访问 Cache 的次数为 1980 次,访问主存的次数为 20 次。要求:
(1)计算该存储系统每 MB 的平均价格。
(2)计算系统运行该程序时 Cache 的命中率。
(3)计算该存储系统的平均访问时间。
(4)计算该存储系统的访问效率。
解:
(1)100×1+4×50100+4≈2.88\frac{100\times 1+4\times 50}{100+4}\approx 2.88100+4100×1+4×50≈2.88
(2)19801980+20=99%\frac{1980}{1980+20}=99\%1980+201980=99%
(3)20×200+1980×102000=11.9ns\frac{20\times 200+1980\times10}{2000}=11.9\ \mathrm{ns}200020×200+1980×10=11.9 ns
补充:标准公式是 TA=HTc+(1−H)Tm\mathrm{T_A=HT_c+(1-H)T_m}TA=HTc+(1−H)Tm,有时题目会给命中率(访问 Cache 代表命中),也要会用这个公式算,原理是一样的。
(4)访问效率 e=Tc/Ta=10/11.9≈84%\mathrm{e=T_c/T_a=10/11.9\approx 84\%}e=Tc/Ta=10/11.9≈84%
稍微记一下公式,其实 Tc\mathrm{T_c}Tc 也就意味着全部命中的平均时间,也就是最理想的时间,用他除以实际的平均时间自然可以代表效率;有的题是算关于加速比的 s=Tm/Ta\mathrm{s=T_m/T_a}s=Tm/Ta,也就是最慢时间除以实际平均时间。
02325《计算机系统结构》自考大题:第 4 章相关推荐
- 计算机系统结构自考真题解析,计算机系统结构自考2015年4月真题
计算机系统结构自考2015年4月真题及答案解析 本试卷为选择题型,填空题,简答题,应用题等题型. 一.单项选择题在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内.错选. ...
- 02325计算机系统结构201810,2018年10月自考02325计算机系统结构真题及答案
以下是湖南自考生网为考生们整理的"2018年10月自考02325计算机系统结构真题及答案",考生可通过自考历年真题练习更有把握的面对考试,对题型更加熟悉,从而取得更佳的成绩.供考生 ...
- 计算机体系结构考试题及知识点,2018年10月自考02325计算机系统结构真题及答案...
小编给大家提供的是2018年10月自考02325计算机系统结构真题及答案,大家可以参考下,毕竟历年真题比试题和背知识点有效果. 2018年 10 月高等教育自学考试全国统一命题考试 计算机系统结构试卷 ...
- 在配有通道的计算机系统中,用户程序需要输出时,引起的中断是,计算机系统结构自考2009年7月真题...
计算机系统结构自考2009年7月真题及答案解析 本试卷为选择题型,填空题,简答题,应用题等题型. 一.单项选择题在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内.错选. ...
- 下列不属于未来发展的计算机技术是,计算机系统结构自考2017年10月真题
计算机系统结构自考2017年10月真题及答案解析 本试卷为选择题型,填空题,简答题,应用题等题型. 一.单项选择题在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内.错选 ...
- 计算机系统结构sw指令集,自考02325计算机系统结构复习资料六
自考生网为考生收集整理了"自考02325计算机系统结构复习资料六"以供考生们在考试前用复习资料巩固所学到的知识,得到更好地复习效果. 注:由于各省教材每年都有更新.变动,自考复习资 ...
- 02325计算机系统结构ppt,02325计算机系统结构2009
02325计算机系统结构2009 (8页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 WORD格式可编辑 2009年7月高等教育自学考试全国 ...
- 2013浙大878计算机基础综合大题答案解析
整理了2013年浙江大学软件学院考研878计算机基础综合大题解析 感谢@declan2009分享878原题,需要其他年份考研资料的朋友,请参见请参见考研分类 或者 浙大软院考研专栏 操作系统部分大题解 ...
- 计算机三级网络技术大题内容,全国计算机三级网络技术大题技巧资料.doc
全国计算机三级网络技术大题技巧资料.doc 第一小题IP地址的计算公式:正常IP地址计算已知IP地址:子网掩码地址类别A类地址112600B类地址:C类地址192223110D类地址22:主机号保留主 ...
- 计算机三级relay agent,计算机三级网络技术大题技巧
计算机三级网络技术大题技巧 第一小题IP地址的计算公式:正常IP地址计算:已知IP地址:子网掩码::地址类别:A类地址:1-126(00)B类地址::C类地址:192-223(110)D类地址:22: ...
最新文章
- plotly可视化表格数据:以表格可视化pandas dataframe
- Python之父考虑重构Python解释器
- 3个月300个VR“体验馆”?张近东这句大话靠谱么?
- vs最好的版本_Win10 环境下,LightGBM GPU 版本的安装
- [转]关于sizeof()的一些思考
- MYsql数据库误删mysql下的user内容,导致哪哪都不能登录
- 戴尔修复已存在12年之久的驱动漏洞,影响数百万个人电脑
- idea 中文字体 自动变_提高工作效率,我推荐讯飞语记,瞬间语音秒变文字
- 有限元二阶拉格朗日插值函数理论
- windows10磁盘100%解决方法
- [ github ] 10道题串起 Pandas 常用知识点
- 识别到硬盘 计算机不显示盘符,Win10系统下移动硬盘可以识别但是不显示盘符的解决方法...
- linux格式化u盘给win7,u盘一直显示格式化在虚拟机上安装win7系统怎么安装linux
- 什么是溢出?补码加法运算如何判断是否溢出?
- Matlab画三维立体网状图形(类似魔方)
- mysql函数 动态语句_自定义函数动态执行SQL语句
- “已成功与服务器建立连接,但是在登录过程中发生错误“的解决方法
- 灰度变换-位图切割(比特平面分层)
- php Session失效的原因
- 线性表——链表ChainList的实现 C++
热门文章
- gpt mbr ext3_gpt 3,一开始是单词1 2
- Android开发人员不得不收集的代码(持续更新中)(http://www.jianshu.com/p/72494773aace,原链接)
- 峰哥it-推荐-AnyDesk多ID集中控制台V1.2
- python 同花顺thstrader_GitHub - skyformat99/THSTrader: 量化交易。同花顺免费模拟炒股软件客户端的python API。(Python3)...
- 25个优秀的国外单页网站设计作品欣赏
- 制作 携程网移动端首页
- 在LAMP兄弟连的日子里
- 数据结构实验课:实验四、队列的实现及应用
- swift- 优化照片 滤镜
- 模型交易平台产品介绍