在操作系统的学习中,很多抵挡都会涉及虚拟地址转换为物理地址的计算,本篇就简单介绍一下在分页存储管理、分段存储管理、磁盘存储管理中涉及的地址转换问题。
虚拟地址与物理地址
编程一般只有可能和逻辑地址打交道,比如在 C 语言中,指针里面存储的数值就可以理解成为内存里的一个地址,这个地址也就是我们说的逻辑地址,逻辑地址由操作系统决定。物理地址指的是真实物理内存中地址,更具体一点来说就是内存地址寄存器中的地址。物理地址是内存单元真正的地址。
分页存储管理
T1
T2
在一个分页虚拟存储系统中,用户编程空间为32个页,页长为1 KB,内存空间为16 KB。如果应用程序有10页长,若已知虚页0、1、2、3,已分得页框4、7、8、10,试把虚拟地址 0AC5(H)转换为对应的物理地址。
页长 1 KB = 2^10 ,说明后10位表示的是页内偏移地址
32个页 32 = 2^5,说明页内偏移地址的前五位是页号地址
0AC5 用二进制表示为:0000 10 10 1100 0101
加粗的5个数字即为页号地址;
斜着的10个数字即为页内偏移地址
把页号地址单独拿出来算:00010 将其换算为十进制为2,则说明此地址为 页号2(虚拟地址中的页号地址) ,由题可得:页号2对应的页框为8,再将8转换为十六进制数:01000(为物理地址中的页号地址);
最后将我们计算得来的十六进制数替换掉加粗的数字,即得最终的物理地址:
0010 00 10 1100 0101再换算成十六进制为:22C5
T3
某虚拟存储器的用户空间共有32个页面,每页1KB,内存16KB。假定某时刻系统为用户的第0、1、2、3页分配的物理块号为5、10、4、7,而该用户作业的长度为6页,试将十六进制的逻辑地址0A5C、103C、1A5C变换成物理地址。
T4
分段存储管理
T1
对于下表所示的段表,请将逻辑地址(0,137),(1,4000) (2,3600) (5,230)变换成物理地址。