操作系统习题——虚地址转换为内存地址计算
参考链接: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,试问这两次访问共耗费多少时间
答案:
(1)32个页面需要用5位来区分,页内地址需要10位。虚地址0AC5H的页号为2,页内地址为1011000101。从页表可知,其物理块号为4,因此,其物理地址为1001011000101=12C5H。虚地址1AC5H的页号为6,页内地址为1011000101。根据页表可知,该虚地址对应的物理块号为2,其物理地址为101011000101=0AC5H。
(2)第1次访问TLB没有命中,因此需要查找页表,再访问主存一次,总计时间为3ns。第2个虚地址在TLB中,只需要一次内存访问,总时间为1.5ns。
例题:
在一页式存储管理系统中,页表内容见表3-4。若页的大小为4KB,则地址转换机构将逻辑地址0转换成的物理地址为(A )。
表3-4
页表内容
页号 块号
0 2
1 1
3 3
4 7
A.8192
B.4096
C.2048
D.1024
解释:按页表内容可知,逻辑地址0对应块号2,页大小为4KB,故转换成的物理地址为2×4K=8K=8192。
例题:
设有8页的逻辑空间,每页有1024B,它们被映射到32块的物理存储区中。那么,逻辑地址的有效位是__13____位,物理地址至少是__15____位。
解释:
首先先算逻辑地知址:
逻辑地址:8*1024=2^3*2^10=2^13(所以逻辑地址的后13位为“页内道地址”,又叫“页内偏移量”,或“页内位移”及有效位)
再算物理地址:
物理地址:32*1024=2^内5*2^10=2^15
所以最后的就是逻辑有效位是13;物理有效位是15.
哪里有错误,希望指出!!!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步