页式虚拟存储练习

页表信息字

A.实页号

B.装入位(有效位)P

C.修改位

D.替换控制位:反映该页在主存中的活跃程度

E.其它:访问权限控制等.

把页表中最活跃部分放在高速存储器中,组成一快表(用硬件),以减少开销.

编辑切换为居中

添加图片注释,不超过 140 字(可选)

例: 一个存储系统有32位程序地址空间,页面容量为1KB,主存的容量为8MB,问: (1) 页表将有多少行? (2) 页表的每一行有多少位?页表的容量有多少字节?

解:

(1) 页表的长度为222 =4M行

(2) 主存的容量为8MB=223B

主存中页框架的数量有223 / 210 = 213个。页表中主存页号字段是13位长,加上其它信息将超过16位。

设页表的每一项至少为16位(每个页表项2字节) , 则页表的容量为4M×2 = 8MB。

例: 一个虚拟存储器有8个页面,页面大小为1024字,内存有4个页面框架。页表的内容为: 虚页号 实页号 0 3 1 1 2 - 3 - 4 2 5 - 6 0 7 - 对应于虚拟地址4098的主存地址是什么?

编辑切换为居中

添加图片注释,不超过 140 字(可选)

解:4098÷1024 = 4......2,所以虚页号为4,页内地址为2。从表中查得实页号为2,实际地址为2×1024 + 2 = 2050。

思考:某计算机的页式虚存管理中采用长度为32字的页面。页表内容如下表所示,求当CPU程序按下列2进制虚拟字地址访存时产生的实际字地址。 (1) 00001101 (2) 10000000 (3) 00101000

答:页面长度为32字,则页内地址5位,8位地址码中的高3位为虚页号,从表中查出2位实页号,与页内地址合并构成7位实际物理内存的地址。 (1) 虚页号为000,查得实页号01,与页内地址01101合并,得0101101。 (2) 虚页号为100,查得实页号10,与页内地址00000合并,得1000000。 (3) 虚页号为001,查得该页未装入内存,没有相应的内存地址。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

CISC:复杂指令系统计算机

RISC:精简指令系统计算机

指令字长度指一个指令字中包含二进制代码的位数

机器字长是指计算机能处理的二进制数据的位数

机器字长通常与主存单元的位数一致

例1 设某台计算机有100条指令, (1) 采用固定长度操作码编码,试设计其操作码的编码。 (2) 假如这100条指令中有10条指令的使用概率达到90%,其余90条指令的使用概率为10%。试采用不等长编码设计操作码。

解:

(1) 采用固定长度操作码编码时,需要7位操作码。取其中的100个代码作为指令操作码,可以用0000000到1100011之间的代码代表100条指令,即

0000000 指令0的操作码

0000001 指令1的操作码

1100011 指令99的操作码

剩下从1100100到1111111共28个代码可用于增加新指令,每条指令的操作码的长度都是7。

(2) 用4位代码对10条常用指令进行编码,用8位代码对90条不常用代码进行编码,即

0000 指令0的操作码

编辑

添加图片注释,不超过 140 字(可选)

0001 指令1的操作码

1000 指令8的操作码

1001 指令9的操作码

10100000 指令10的操作码

10100001 指令11的操作码

11111001 指令99的操作码

指令操作码的平均长度为

4×90% + 8×10% = 4.4位。

例2 若某计算机要求有如下形式的指令:三地址指令12条,二地址指令60条,零地址指令16条(不要求有单地址指令)。设指令字长为16位,每个地址码长为4位,试用扩展操作码为其编码。

解:三个地址码字段占12位。剩下4位作为操作码,12条指令的操作码分别为0000、0001、0010、…、1011。

n 在双地址指令中,操作码扩展到8位。取其中6位,可以有64个编码,取60个,即1100 0000~1111 1011。

n 零地址指令中,全部16位指令代码都是操作码,取其前16个编码,即1111 1100 0000 0000~1111 1100 0000 1111。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
讨论课样题 1.下列面置换算法说法正确的有(B)。 I先进先出(FIFO)会产生Belady现象。 II.最近最少使用(LRU)会产生Belady现象。 III.在进程运行时,若它的工作集面都在虚拟存储器内,则能够使该进程有效地运行,否则会出现频繁的面调入/调出现象。 IV.在进程运行时,若它的工作集面都在主存储器内,则能够使该进程有效地运行,否则会出现频繁的面调入/调出现象。 A.I、II B.I、IV C.II、III D.III、IV 2.在一个请求分系统中,采用LRU面置换算法时,加入一个作业的面走向为: 1,3,2,1,1,3,5,1,3,2,1,5。当分配给该作业的物理块数分别为3和4时,在访问过程中所发生的缺率为()。 A.25%, 33% B. 25%, 100% C.50%, 33% D.50%,, 75% 3.有一个矩阵为100x 200,即a[100][200]在一个虚拟系统中,采用LRU算法。系统分给该进程5个面来存储数据(不包含程序),设每可存放200个整数,该程序要对整个数组初始化,数组存储时是按行存放的。试计算下列两个程序各自的缺次数(假定所有都以请求方调入)(B) 程序一: for(i=0;i<= 99;i++) for(j=0;j<= 199;j++) A[i][j]=i*j 程序二: for(j=0; j<= 199;j++) for(i=0; i<= 99; i++) A[i][j]=i*j A.100, 200 B.100, 20000 C.200,100 D. 20000,100 解:外层改变行,内层改变列 程序一:对于外层循环一次后,内层循环都是在一行内运转的,也就是一内运转的。 程序二:内循环是在行之间运行的,内层循环一次,程序运行面需要换一个。 5.假定有一个请求分存储管理系统,测得系统个相关设备的利用率为CPU为10%,磁盘交换区为99.7%;其他I/O设备为5%。试问:下面(B)措施可能改进CPU的利用率? I. 增大内存的容量 II.增大磁盘交换区的容量 III.减少多道程序的度数 V.使用更快速的磁盘交换区 IV.增加多道程序的度数 VI:使用更快速的CPU A.I、II、III、IV B.I、III C.II、III、V D.II、VI 解:I正确:增大内存可使每个程序得到更多的面,能减少缺率,因而减少换入换出过程,可提高CPU的利用率。 II错误:增大磁盘交换区的容量。因为系统实际已处于频繁的换入换出过程中,不是因为磁盘交换区容量不够,因此增大磁盘交换区的容量无用。 III正确:减少多道程序的度数。可以提高CPU的利用率,因为从给定的条件中磁盘交换区的利用率为99.7%,说明系统现在已经处于频繁的换入换出过程中,可减少主存中的程序。 V错误:使用更快速的磁盘交换区。因为系统现在处于频繁的换入换出过程中,即使采用更快的磁盘交换区,其换入换出频率也不会改变,因此没用。 IV错误:增加多道程序的度数。系统处于频繁的换入换出过程中,再增加主存中的用户进程数,只能导致系统的换入换出更频繁,使性能更差。 VI错误:使用更快速的CPU。系统处于频繁的换入换出过程中,CPU处于空闲状态,利用率不高,提高CPU的速度无济于事。 6.一个虚拟存储系统,其并发进程数固定为4个。最近测试了它的CPU利用率和用于面交换的利用率,假设得到的结果为下列选项,(C)说明系统需要增加进程并发数? I. CPU利用率13%;磁盘利用率97% II. CPU利用率97%;磁盘利用率3% III.CPU利用率13%;磁盘利用率3% A.I B.II C.III D.I、III 解:A.系统在抖动,增加并发进程数反而会恶化系统性能。 B.系统正常,不需要采取什么措施 C.CPU没有充分利用 10.考虑面替换算法,系统有m个帧供调度,初始时全空;引用串长度为p,包含了n个不同的号,无论用什么算法,缺次数不会少于(C)。 A. m B.p C.n D. min(m, n) 解:缺次数不会少于数,因为要调入内存。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值