逻辑地址和物理地址的相互转换
注:本文只适用于做题,想更详细了解调度算法相关的知识可以参考这篇文章😄 👉操作系统学习笔记第四章存储管理
🐳基础概念
逻辑地址(Logical Address):在计算机体系结构中是指应用程序角度看到的内存单元(memory cell)、存储单元(storage element)、网络主机(network host)的地址,又叫相对地址。 是在网络层及以上使用的地址(ip地址就是其中一种)。
逻辑地址 = 页号地址 + 页内地址 逻辑地址=页号地址+页内地址 逻辑地址=页号地址+页内地址
物理地址(Physical Address):是在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,又叫实际地址、绝对地址、mac地址或硬件地址。是在数据链路层和物理层使用的地址。
物理地址 = 块号地址 + 块内地址 = 块号地址 + 页内地址 块号地址 = 块号 ∗ 块大小 物理地址=块号地址+块内地址=块号地址+页内地址\\ 块号地址=块号*块大小~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 物理地址=块号地址+块内地址=块号地址+页内地址块号地址=块号∗块大小
注:在分段存储中块号地址又叫段首地址,在分页存储中块号又叫页框号,块内地址在数值上是和页内地址等价的
逻辑地址和物理地址相互转换的本质是块号地址和页号地址的相互转换
🐳逻辑地址转换成物理地址
- 逻辑地址转为物理地址一般性步骤:
- 如果题目给出段表
- 通过逻辑地址确定段号(S)
- 查询段表,通过段号(S)确定段首地址(块号地址)
- 通过逻辑地址确定页内地址
- 物理地址 = 块号地址+ 页内地址
- 如果逻辑地址是16进制(当然也可以用于10进制只是比较麻烦)
- 将逻辑地址的16进制转换成2进制
- 确定页号。通过页面数确定页号地址位数m,页号地址为2进制逻辑地址前m位,从而确定页号
- 确定块号地址。通过页号确定块号,从而求得块号地址
- 确定页内地址。通过页面大小确定页内地址位数n,页内地址为2进制逻辑地址后n位
- 物理地址 = 块号地址+ 页内地址
- 如果逻辑地址是10进制
- 确定页号。页号 = 逻辑地址/页面大小(注意页面大小的单位要是字节,非字节换算成字节)
- 确定块号地址。通过页号确定块号,从而求得块号地址
- 确定页内地址。页内地址 = 逻辑地址 mod 页面大小
- 物理地址 = 块号地址 + 页内地址
- 如果题目给出段表
- step1:通过段号2确定段首地址480K,块号地址 = 480*1024B
- step2:通过题目可以知道页内地址为:154
- step3:物理地址 = 块号地址 +页内地址 = 480*1024 + 154 = 491674B
🚝思维拓展: 如果逻辑地址为:(2,854B )或(2,30k)那么物理地址是:480*1024+854?480*1024+30*1024?不知道答案可以接着往下看🐶
方法一:
- Step1:确定页号。页号 = 2100/1024 = 2
- Step2:确定块号地址。根据题目条件可知,页号2对应块号6,所以 块号地址 = 6*1024
- Step3:确定页内地址。页内地址 = 2100 mod 1024 = 52
- Step4:物理地址 = 6*1024 + 52 = 6196
方法二:
- Step1:将操作数地址(逻辑地址)10进制转成2进制,2100D = 1000 0011 0100(2)
- Step2:通过页面数确定页号地址位数。页面数为 4 = 2^2,所以页号地址位数为2(逻辑地址最前面两位)
- Step3:确定块号。页号 = 10(2) = 2,对应第3个页面,所以块号为6
- Step4:确定块号地址。块大小为1024字节,所以:块号地址 = 6*1024
- Step5:通过页面大小确定页内地址位数。页面1024B = 2^10b,所以页内地址位数为10
- Step6:确定页内地址。页内地址 = 00 0011 0100(2) = 52(逻辑地址后10位)
- Step7:物理地址 = 块号地址 + 页内地址 = 6*1024+52 = 6196
同理可求得操作数3100的物理地址为:8220
上面两种方法其实都是将逻辑地址中的页号地址换成物理地址中的块号地址(这就是转换的本质)
逻辑地址:1000 0011 0100(2) = 2100D = 834H
物理地址:1 1000 0011 0100(2) = 6196D = 6100H
第一题也可以一样的操作:
页号地址:10,页内地址:154B=1232b=100 1101 0000(2);
块号地址:480k*1024*8=3932160b=11 1100 0000 0000 0000 0000(2)
逻辑地址:1 0100 1101 0000(2)
物理地址:11 1100 0000 0100 1101 0000(2)
现在继续第一题的思维拓展:
- 当逻辑地址为(2,854B )时,同理可以求得
- 当逻辑地址为(2,30k)时,页内地址30k>段长度20k,地址发生越界,该逻辑地址非法故无法转换成物理地址
1)
- Step1:将16进制逻辑地址转换称2进制。0468H = 0000 0100 0110 1000(2)
- Step2:确定页号。页面数 32 = 2^5,故页号地址位数为5,所以 页号 = 00000(2)=0D
- Step3:确定块号地址 。页号0对应块号5,所以 块号地址 = 5*2048
- Step4:确定页内地址。页面大小:2KB = 2^11,故页内地址位数为11,所以 页内地址 = 100 0110 1000(2) = 1128D
- Step5:物理地址 = 5*2048 + 1128 = 11368
对比一下:
逻辑地址:0000 0100 0110 1000(2) = 1128D = 0468H
物理地址:10 1100 0110 1000(2) = 11368D = 1868H
2)略……以后再写
🐳物理地址转换成逻辑地址
逆向过程🙉