02325《计算机系统结构》自考大题:第 4 章

复习总目录

  02325《计算机系统结构》自考复习重点目录

第 4 章 存储体系

1. 页表法地址映像

历史考题

题目描述:根据页表法 映像表页面大小 计算 虚地址对应的实地址
  

课后习题 4-4

  某虚拟存储器共 8 个页面,每页 1024 个字,实际主存为 4096 个字,采用页表法进行地址映像。映像表内容如下。
(1)列出会发生页面失效的全部虚页号;
(2)按以下虚地址计算主存实地址:0,3728,1023,1024,2055,7800,4096,6800。

实页号装入位
31
11
20
30
21
10
01
00

解:
(1)将题目给出的映像表补上虚页号,也就是按顺序 0 到 7:

虚页号实页号装入位
031
111
220
330
421
510
601
700

  页面失效的虚页号也就是装入位是 0 的虚页号,即 2、3、5、7。

(2)画出由虚地址计算主存实地址的表格

虚地址虚页号页内位移装入位实页号页内位移实地址
0001303072
372836560页面失效
1023010231310234095
1024101101024
2055270页面失效
780076320页面失效
4096401202048
6800665610656656

虚地址 ÷ 页面大小 = 虚页号 ⋯ ⋯ 页内位移 虚地址\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)求出此期间虚存总的命中率 H H H

页面替换理解:
  主存有 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)

主存页
面位置
初始
状态
页地址流
2352401246
055555555*222
1 4444*4*6
23333333*1111
3222222*00000
命中HHHH 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 的结果画在一起:

虚地址2022208214146618370490492868916728
虚页地址001103122443
主存 400
页面 200
n=2
000*0*0*333*3*444*
1111*1*222*2*3命中率
HHHHHH6/12=0.5
虚地址2022208214146618370490492868916728
虚页地址002216344897
主存 400
页面 100
n=4
000000*33333*7
22222*44444
1111*1*888
66666*99命中率
HHH3/12=0.25
虚地址2022208214146618370490492868916728
虚页地址000001011221
主存 400
页面 400
n=1
000001011221命中率
HHHHHH6/12=0.5
虚地址2022208214146618370490492868916728
虚页地址001103122443
主存 800
页面 200
n=4
00000000*0*444
11111111*1*1*
3333333
22222命中率
HHHHHHH7/12=0.58

(4)从前三问的结果可以看出,在分配给程序的实存容量一定(400 字)的条件下,页面大小 S P S_P SP 过小时,命中率 H H H 较低;页面大小增大后,两个地址在同页内的机会增大,使命中率 H H H 有所上升;由于指令之间因远距离的跳转引起命中率 H H H 下降的因素不起主要作用,还未出现随页面大小增大,而使命中率 H H H 下降的情况。如果页地址流有大量的远距离转移,随页面大小增大,因在主存中的页面数过少,而导致出现虚存页面被轮流替换出去的 “颠簸” 现象时,命中率 H H H 反而会下降。

(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 的规则,因为如果最近被用到过肯定是叠在上面的,最下面的就被替代了。

页地址流232152453252145
堆栈内容2321 5245 3252 145
23215245325214
321524533521
33112444352
331111433命中率
命中
情况
n=4HHHHHHH7/15
n=5HHHHHHHHHH10/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 标记星号。

时间t123456789101112131415
主存块地址124137012546472
Cache 块0111*1111*111*44444
144*4*4*00*0*55*5*5*5*5*
22222*7777*7*7*666*2
333*3*3*2222*2*77*
命中情况HHH

(4)块失效又发生块争用的时刻:6, 7, 9, 10, 11, 12, 14, 15(发生替换的时刻)
(5)命中率: H c = 3 / 15 = 0.2 H_c=3/15=0.2 Hc=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 × 50 100 + 4 ≈ 2.88 \frac{100\times 1+4\times 50}{100+4}\approx 2.88 100+4100×1+4×502.88

(2) 1980 1980 + 20 = 99 % \frac{1980}{1980+20}=99\% 1980+201980=99%

(3) 20 × 200 + 1980 × 10 2000 = 11.9   n s \frac{20\times 200+1980\times10}{2000}=11.9\ \mathrm{ns} 200020×200+1980×10=11.9 ns

  补充:标准公式是 T A = H T c + ( 1 − H ) T m \mathrm{T_A=HT_c+(1-H)T_m} TA=HTc+(1H)Tm,有时题目会给命中率(访问 Cache 代表命中),也要会用这个公式算,原理是一样的。

(4)访问效率 e = T c / T a = 10 / 11.9 ≈ 84 % \mathrm{e=T_c/T_a=10/11.9\approx 84\%} e=Tc/Ta=10/11.984%
  稍微记一下公式,其实 T c \mathrm{T_c} Tc 也就意味着全部命中的平均时间,也就是最理想的时间,用他除以实际的平均时间自然可以代表效率;有的题是算关于加速比的 s = T m / T a \mathrm{s=T_m/T_a} s=Tm/Ta,也就是最慢时间除以实际平均时间。

  • 17
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
第一 操作系统概论 1. 什么是操作系统?请说明操作系统在计算机系统中的作用和地位。 操作系统是计算机系统中的一个系统软件, 它是这样一些程序模块的集合: 它们能够有 效地组织和管理计算机中的硬件和软件资源, 合理地控制计算机工作流程, 控制程序的执行, 并向用户提供各种服务功能,使用户能够灵活、方便、有效地使用计算机, 并使整个计算机 系统能高效地运行。 2. 操作系统管理计算机系统的哪些资源? 硬件和软件资源。 3. 请从资源管理角度说明操作系统的主要功能。 进程管理(处理器管理)、存储管理、文件管理、作业管理、设备管理 4. 操作系统有哪些基本特征? 并发性:计算机系统中同时存在若干个正在运行着的程序; 享性:操作系统程序和多个用户程序享系统中的各种资源 随机性:操作系统的运行是在一种随机的环境下进行的 5. 比较 Windows 、 UNIX、 Linux 操作系统的体系结构,有什么异同? Windows 体系结构是分成的模块系统, 主要层次有硬件抽象层 HAL、 内核、 执行体和大 量的子系统集合; UNIX 操作系统的系统架构图,其最里层是硬件,作为整个系统的基础;其次是操作系 统内核,包括进程管理、 存储器管理、设备管理和文件管理四个资源管理功能;往外一层是 系统调用接口,及操作系统与用户的接口 shell 以及编译程序等;最外层是应用程序 Linux 系统有四个主要部分,及内核、 shell、文件系统和用户程序。 6. Android 操作系统有什么特点? Android 操作系统分为四层,从高层到低层分别是应用程序层、应用框架层、系统运行 库层和 Linux 内核层。 以 Linux 为核心的手机操作平台,是一款开放式操作系统 7. 手机操作系统通常提供哪些功能?

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值