逻辑地址和物理地址的相互转换

逻辑地址和物理地址的相互转换

注:本文只适用于做题,想更详细了解调度算法相关的知识可以参考这篇文章😄 👉操作系统学习笔记第四章存储管理


🐳基础概念

逻辑地址(Logical Address):在计算机体系结构中是指应用程序角度看到的内存单元(memory cell)、存储单元(storage element)、网络主机(network host)的地址,又叫相对地址。 是在网络层及以上使用的地址(ip地址就是其中一种)。

image-20220426125009453

逻辑地址 = 页号地址 + 页内地址 逻辑地址=页号地址+页内地址 逻辑地址=页号地址+页内地址

物理地址(Physical Address):是在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,又叫实际地址绝对地址、mac地址或硬件地址。是在数据链路层和物理层使用的地址。

image-20220426125024343

物理地址 = 块号地址 + 块内地址 = 块号地址 + 页内地址 块号地址 = 块号 ∗ 块大小                                                         物理地址=块号地址+块内地址=块号地址+页内地址\\ 块号地址=块号*块大小~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 物理地址=块号地址+块内地址=块号地址+页内地址块号地址=块号块大小                                                        
注:在分段存储中块号地址又叫段首地址,在分页存储中块号又叫页框号,块内地址在数值上是和页内地址等价的


逻辑地址和物理地址相互转换的本质是块号地址和页号地址的相互转换

🐳逻辑地址转换成物理地址

  • 逻辑地址转为物理地址一般性步骤
    • 如果题目给出段表
      • 通过逻辑地址确定段号(S)
      • 查询段表,通过段号(S)确定段首地址(块号地址)
      • 通过逻辑地址确定页内地址
      • 物理地址 = 块号地址+ 页内地址
    • 如果逻辑地址是16进制(当然也可以用于10进制只是比较麻烦)
      • 将逻辑地址的16进制转换成2进制
      • 确定页号。通过页面数确定页号地址位数m,页号地址为2进制逻辑地址前m位,从而确定页号
      • 确定块号地址。通过页号确定块号,从而求得块号地址
      • 确定页内地址。通过页面大小确定页内地址位数n,页内地址为2进制逻辑地址后n位
      • 物理地址 = 块号地址+ 页内地址
    • 如果逻辑地址是10进制
      • 确定页号。页号 = 逻辑地址/页面大小(注意页面大小的单位要是字节,非字节换算成字节)
      • 确定块号地址。通过页号确定块号,从而求得块号地址
      • 确定页内地址。页内地址 = 逻辑地址 mod 页面大小
      • 物理地址 = 块号地址 + 页内地址

image-20220421181721480

逻辑地址
页内地址
段号
块号地址
物理地址
  • step1:通过段号2确定段首地址480K,块号地址 = 480*1024B
  • step2:通过题目可以知道页内地址为:154
  • step3:物理地址 = 块号地址 +页内地址 = 480*1024 + 154 = 491674B

🚝思维拓展: 如果逻辑地址为:(2,854B )或(2,30k)那么物理地址是:480*1024+854?480*1024+30*1024?不知道答案可以接着往下看🐶

image-20220421222525928

除以页面大小
mod页面大小
物理地址
页内地址
逻辑地址
页号
块号地址

方法一

  • Step1:确定页号。页号 = 2100/1024 = 2
  • Step2:确定块号地址。根据题目条件可知,页号2对应块号6,所以 块号地址 = 6*1024
  • Step3:确定页内地址。页内地址 = 2100 mod 1024 = 52
  • Step4:物理地址 = 6*1024 + 52 = 6196

方法二

2进制逻辑地址
2进制逻辑地址
页面数
页号地址位数m
页号
块号
块号地址
物理地址
页面大小
页内地址位数n
页内地址
  • 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)


现在继续第一题的思维拓展:

  1. 当逻辑地址为(2,854B )时,同理可以求得
  2. 当逻辑地址为(2,30k)时,页内地址30k>段长度20k,地址发生越界,该逻辑地址非法故无法转换成物理地址

image-20220427215330267

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)略……以后再写


🐳物理地址转换成逻辑地址

逆向过程🙉
在这里插入图片描述

二级分页存储是一种虚拟存储管理技术,可以将逻辑地址转换物理地址。在二级分页存储中,逻辑地址由两部分组成:页号和页内偏移量。页号用于访问页表,页内偏移量则用于计算物理地址。下面是十进制逻辑地址物理地址相互转换步骤: 1. 假设页大小为4KB,页表大小为1KB,即每个页表可以管理1024个页。 2. 将逻辑地址分解为页号和页内偏移量。例如,逻辑地址为12345,则页号为12,页内偏移量为345。 3. 计算页表项的物理地址。页表项大小为4字节,因此每个页表可以管理256个页表项(1KB/4B = 256)。第一级页表根据页号计算出页表项的索引值,第二级页表根据页表项索引值和页内偏移量计算出物理地址。 4. 物理地址由两部分组成:页框号和页内偏移量。页框号用于定位物理内存中的某一页,页内偏移量则用于计算物理地址。页框大小与页大小相同,因此页框号为页号,页内偏移量为页内偏移量。 举个例子,假设页大小为4KB,页表大小为1KB,逻辑地址为12345,物理地址为54321。那么,转换步骤如下: 1. 逻辑地址分解为页号和页内偏移量:页号为12,页内偏移量为345。 2. 计算页表项的物理地址。第一级页表使用页号计算页表项索引值:12/256 = 0,因此需要访问第0个页表项。第二级页表使用页表项索引值和页内偏移量计算物理地址:0*4KB + 345 = 345。 3. 物理地址由页框号和页内偏移量组成。由于页框大小与页大小相同,因此页框号为页号:12。页内偏移量为345,因此物理地址为:12*4KB + 345 = 54321。 这样,就完成了十进制逻辑地址物理地址相互转换
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识汲取者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值