操作系统习题——虚地址转换为内存地址计算

参考链接:https://blog.csdn.net/weixin_39928544/article/details/90049798

步骤:

如果,虚地址(逻辑地址、程序地址)以十六进制、八进制、二进制的形式给出
第一步,将虚地址转换成二进制的数;
第二步,按页的大小分离出页号和位移量(低位部分是位移量,高位部分是页号);
第三步,根据题意产生页表,将位移量直接复制到内存地址寄存器的低位部分;
第四步,以页号查页表,得到对应页装入内存的块号,并将块号转换成二进制数填入地址寄存器的高位部分,从而形成内存地址。

举例说明:
1.有一系统采用页式存储管理,有一作业大小是8KB,页大小为2KB,依次装入内存的第7、9、A、5块,试将虚地址0AFEH转换成内存地址。
解:
|页号|块号 |
|   0  |   7   |
|   1  |   9   |
|   2  |   A   |
|   3  |   5   |
虚地址0AFEH转化为二进制数:0000 1010 1111 1110    (注意虚地址为16进制,最后那个H标志这是一个十六进制数
已知页大小是2kb(即,有11位,2^11=2kb),所以低位部分是11位,所以,w=010 1111 1110, p=0000 1=1  (低位部分为页内地址,高位部分为页号


根据页号与块号的排列   p=1时,块号为9,9的二进制数为1001,表首地址为0
所以,MR=(首0)0100 1010 1111 1110(二进制)=4AFEH(16进制)(根据做题步骤,我们要把页号低位部分移动到地址寄存器中,然后1001当作高位部分,不够前面补0

例题:

某请求页式系统允许用户空间为32个页面(每页1KB),主存为16KB,若一个用户程序有10页长,某时刻该进程的页表如下所示:
虚页号 物理块号 是否在TLB中
0 8 是
1 7 是
2 4 否
3 10 否
4 5 否
5 3 是
6 2 是
其他 无效
问:(1)计算虚地址0AC5H、1AC5H对应的物理地址。
(2)页表存放在主存中,对主存的一次存取需要1.5ns,对TLB表的查找时间忽略为0,试问这两次访问共耗费多少时间

答案:

扫描二维码关注公众号,回复: 10840904 查看本文章

(1)32个页面需要用5位来区分,页内地址需要10位。虚地址0AC5H的页号为2,页内地址为1011000101。从页表可知,其物理块号为4,因此,其物理地址为1001011000101=12C5H。虚地址1AC5H的页号为6,页内地址为1011000101。根据页表可知,该虚地址对应的物理块号为2,其物理地址为101011000101=0AC5H。
(2)第1次访问TLB没有命中,因此需要查找页表,再访问主存一次,总计时间为3ns。第2个虚地址在TLB中,只需要一次内存访问,总时间为1.5ns。

猜你喜欢

转载自www.cnblogs.com/kongbursi-2292702937/p/12710249.html