分页存储管理的逻辑地址结构【操作系统】

问题引出

今天在学习OS的内存管理内容时,看到了如下所示逻辑地址介绍。(内容为22年王道书P156)
看到这种形式之后,我产生了一定的疑惑:逻辑地址难道不是一个数值吗?为什么是这种表的形式?
请添加图片描述

问题分析与解决

根据王道视频中关于地址的二进制表示的补充讲解,以及如下所示两个公式的启发,我突然有所领悟:

页号=逻辑地址/页面长度
页内偏移量=逻辑地址%页面长度

回忆起二进制的除法和余数运算法则:如果页面长度是 2 n 2^n 2n的话,那么通过二进制除法即为移位n次!那么移位后的数即为商——页号,那些被移位掉的数即为余数——偏移量。

发现了这个巧妙的设计之后再回去看那张图,瞬间茅塞顿开,确实是十分巧妙

附1:页面长度是 2 n 2^n 2n时的好处

  1. 方便上面逻辑地址的计算,不赘述
  2. 当物理地址也刚好是相同位数二进制表示时,根据逻辑地址–>页号–>内存块号,再将二进制表示的内存块号和二进制表示的页内偏移量拼接起来,即为最终物理地址在这里插入图片描述

附2:求逻辑地址A对应的物理地址流程

查页表
块号*内存块大小
相加
相加
逻辑地址
页号P
页面偏移量W
块号
物理内存中的起始地址
物理地址
  • 18
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分页存储管理是一种虚拟存储技术,用于将进程的逻辑地址空间划分为固定大小的页面,并将物理内存划分为相同大小的页面框。通过将进程的页面映射到物理内存的页面框上,实现了进程的虚拟内存管理。 下面是一个简单的分页存储管理的示例: 1. 首先,将进程的逻辑地址空间划分为固定大小的页面,每个页面的大小通常为2的幂次方,例如4KB或8KB。 2. 将物理内存划分为相同大小的页面框,与逻辑页面大小相同。 3. 当进程访问逻辑地址时,操作系统逻辑地址分为两部分:页号和页内偏移。 4. 通过页表,将逻辑页面映射到物理页面框上。页表是一个数据结构,用于存储逻辑页面和物理页面框之间的映射关系。 5. 如果所需的逻辑页面不在物理内存中,发生了缺页中断。操作系统将从磁盘上选择一个页面,将其加载到物理内存中的一个空闲页面框上,并更新页表。 6. 当进程访问逻辑地址时,操作系统将根据页表将逻辑页面映射到物理页面框上,并将数据传递给进程。 7. 当进程不再需要某个页面时,操作系统可以将其从物理内存中移除,并将其标记为可用。 通过分页存储管理操作系统可以将进程的逻辑地址空间映射到物理内存中,实现了对大型进程的虚拟内存管理。这样,进程可以访问比物理内存更大的地址空间,并且可以更高效地使用物理内存资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值