(自考02325李学干版)计算机系统结构课后习题 联系客服

发布时间 : 星期日 文章(自考02325李学干版)计算机系统结构课后习题更新完毕开始阅读e5be4c29bcd126fff7050b39

剖析:

(1)根据页表法列出表2,当装入位为0时,即为页面失效,再找出相对应的虚页号即可。 (2)虚页号=虚地址/页面大小

页内位移量=虚地址-虚页号*页面大小 实地址=实页号*页面大小+页内位移量

由于可以用替换算法解决页面失效的问题,所以,发生页面失效的虚页2,3,5,7仍然可以有相应的实地址,但这样要在页表中建立新的虚实地址对应关系,新的虚实地址对应关系和原来的对应关系相同的可能性就很小了。

5、一个段页式虚拟存储器。虚地址有2位段号、2位页号、11位页内位移(按字编址),主存容量为32K字。每段可有访问方式保护,其页表和保护位如下表所示。

段号 访问方式 虚页0所在位置 虚页1所在位置 虚页2所在位置 虚页3所在位置 0 只读 实页9 实页3 在辅存上 实页12 1 可读/执行 在辅存上 实页0 实页15 实页8 2 可读/写/执行 页表不在主存内 页表不在主存内 页表不在主存内 页表不在主存内 3 可读/写 实页14 实页1 实页6 在辅存上 (1)此地址空间中共有多少个虚页? (2)当程序中遇到下列情况时 方式 取数 取数 取数 存数 存数 存数 转移至此 取数 取数 转移至此 段 0 1 3 0 2 1 1 0 2 3 页 1 1 3 1 1 0 3 2 0 0 页内位移 1 10 2047 4 2 14 100 50 5 60 写出由虚地址计算出实地址。说明哪个会发生段失效、页面或保护失效失效。 解答: (1)该地址空间中共有16个虚页。

(2)程序中遇到上表中各情况时,是否会发生段失效、页失效或保护失效及相应的主存实地址的情况如下表所示: 方式 取数 取数 取数 存数 存数 存数 转移至此 取数 取数 段 页 0 1 3 0 2 1 1 0 2 1 1 3 1 1 0 3 2 0 页内位移 1 10 2047 4 2 14 100 50 5 段失效 无 无 无 无 有 无 无 无 有 页失效 无 无 有 无 / 有 无 有 / 13

实页号 3 0 无 3 无 无 8 无 无 实地址 6145 10 无 6184 无 无 16484 无 无 保护失效 无 无 / 有 / / 无 / / 转移至此 3 0 60 无 无 14 28732 有 剖析:

(1)虚地址中段号有2位,页号有2位,也就是每个程序最多只能有2^2=4个段,每个段至多只能有2^2=4页,所以该地址空间中共有4*4=16个虚页。 (2)先从题意得知:

实地址:15位,其中实页号4位,页内位移11位 页大小为2K字(由页内位移得知)

6.设某程序包含5个虚页,其页地址为4,5,3,2,5,1,3,2,2,5,1,3。当使用LRU算法替换时,为获得最高命中率,至少应分配给该程序几个实页?其可能的最高命中率为多少?

7.采用页式管理的虚拟存储器,分时运行两道程序。其中,程序X为 DO 50 I=1,3 B(I)=A(I)-C(I)

IF(B(I)·LE·0)GOTO 40 D(I)=2*C(I)-A(I)

IF(D(I)·EQ·0)GOTO 50 40 E(I)=0 50 CONTINUE

Data: A=(-4,+2,0) C=(-3,0,+1)

每个数组分别放在不同的页面中;而程序Y在运行过程中,其数组将依次用到程序空间的第3,5,4,2,5,3,1,3,2,5,1,3,1,5,2页。如果采用LRU算法,实存却只有8页位置可供存放数组之用。试问为这两首程序的数组分别分配多少个实页最为合适?为什么?

14

解答: 分别分配给程序X和Y的数组4个实页最为合适。

根据题意,程序X依次调用数组A,C,B,B,E, A,C,B,B,C,A,D,D,E, A,C,B,B,E中的数据。

设程序X中的数组A,B,C,D,E分别存放于程序空间的第1,2,3,4,5页,则程序的页地址流为:1,3,2,2,5, 1,3,2,2,3,1,4,4,5, 1,3,2,2,5。

分析使用LRU算法对程序X的页地址流进行堆栈处理的过程可知,分配给程序X的数组5个实页最为合适;分析使用LRU算法对程序Y的页地址流进行堆栈处理的过程可知,分配给程序Y的数组4个实页最为合适。 但实存只有8页位置可供存放数组之用,所以,分别分配给程序X和Y的数组4个实页。 note:

分时运行在微观上是串行的,就是说,分时运行时把时间划分为若干时间片,每个程序轮流占用时间片;在宏观上是并行的,就是说,每个程序在一个时间片内并不能运行完。总的来看,是同时运行的,所以两个程序分配的实页和不能大于8。

我不了解FORTRAN,找朋友把上面的源代码转成C了: main() {

int A[]={-4,2,0}; int C[]={-3,0,1}; for (i=0,i<>0) E[i]=0; }; }; }

8.设一个按位编址的虚拟存储器,它应可对应1K个任务,但在一段较长时间内,一般只有4个任务在使用,故用容量为4行的相联寄存器组硬件来缩短被变换的虚地址中的用户位位数;每个任务的程序空间最大可达4096页,每页为512个字节,实主存容量为2^20位;设快表用按地址访问存储器构成,行数为32,快表的地址是经散列形成;为减少散列冲突,配有两套独立相等比较电路。请设计该地址变换机构,内容包括: (1)画出其虚、实地址经快表变换之逻辑结构示意图; (2)相联寄存器组中每个寄存器的相联比较位数; (3)相联寄存器组中每个寄存器的总位数; (4)散列变换硬件的输入位数和输出位数; (5)每个相等比较器的位数; (6)快表的总容量(以位为单位)。 解:

(1)依题意得知:

虚地址为34位,其中用户号为10位(对应1K的任务)、虚页号12位(每个任务4096页)、页内位移12位(每页512字节,512字节=512*8=1024*4=2^12)

实地址为20位,其中实页号8位,页内位移12位(与虚页页内位移对应)

相联寄存器的作用:把10位的用户号转换为2位的ID(因为一般只有4个任务在使用),并把ID与虚地址的虚页号合并到快表中查实页号。

快表的作用:相当于页表,即虚页号对实页号的对应关系。但又有所简化(原因是如果用用户号和虚页号与实页号对应,前者就有22位,现改进后虚页号只有14位了)

15

(2)相联寄存器组中每个寄存器的相联比较位数为10(与虚地址中的用户号宽度对应) (3)相联寄存器组中每个寄存器的总数为12(用户号宽度+ID宽度)

(4)散列变换硬件的输入位数为14位(虚页号宽度+相联寄存器中ID的宽度),输出位数为8位(与主存中的实页号宽度对应)

(5)每个相等比较器的位数=ID+用户虚页号nv'=2+12=14(位)。 (6)快表的总容量:32行*(14(输入位数)+8(输出位数))*2=32*22*2

9.考虑一个920个字的程序,其访问虚存的地址流为20,22,208,214,146,618,370,490,492,868,916,728。

(1)若页面大小为200字,主存容量为400字,采用FIFO替换算法,请按访存的各个时刻,写出其虚页地址流,计算主存的命中率;

(2)若页面大小为100字,再做一遍; (3)若页面大小为400字,再做一遍;

(4)由(1)、(2)、(3)的结果可得出什么结论?

(5)若把主存容量增加到800字,按第(1)小题再做一遍,又可得出什么结论? 解: (1)主存容量400字,页面大小200字,所以主存实页数为2;

把地址流转换为页地址流,以第一个虚地址流转换为页地址流为例说明:求模公式为:INT(地址/页面大小),就是把地址整除于页面大小,得INT(20/200)=0,下同,所以页地址流为:0,0,1,1,0,3,1,2,2,4,4,3 按FIFO算法得出替换过程为:0(调入),0(命中),1(调入),1(命中),0(命中),3(替换0,0比1先入队,所以被替换,下同),1(命中),2(替换1),2(命中),4(替换3),4(命中),3(替换2),所以总共命中6次。

16