内存管理(三)——内存分页

前言

上一篇介绍了内存分段,这一篇将介绍内存分页。

分页管理

分页是把整个虚拟和物理内存空间切成一段段固定尺寸的大小。即划分逻辑地址空间至固定大小的(Page),划分物理内存空间至固定大小的(Frame),并建立方案,转换逻辑地址为物理地址(pages to frames)。在 Linux 下,每一页的大小通常为 4KB

页是连续的虚拟内存,帧是非连续的物理内存,不是所有的页都有对应的帧。

虚拟地址与物理地址之间通过页表来映射,页表是存储在内存里的,CPU 种的内存管理单元 (MMU,Memory Management Unit)就做将虚拟地址转换成物理地址的工作。

由于页的大小是固定的,就不会产生外部内存碎片问题,只有少量的内部碎片。

如果内存空间不够,操作系统会把其他正在运行的进程中的最近没被使用的内存页面给释放掉,也就是暂时写在硬盘上,一旦需要,再加载进来。所以,一次性写入磁盘的也只有少数的一个页或者几个页,不会花太多时间,内存交换的效率就相对比较高

分页的方式使得我们在加载程序的时候,不再需要一次性都把程序加载到物理内存中。我们完全可以在进行虚拟内存和物理内存的页之间的映射之后,并不真的把页加载到物理内存里,而是只有在程序运行中,需要用到对应虚拟内存页里面的指令和数据时,再加载到物理内存里面去

在分页机制下,虚拟地址分为两部分,页号页内偏移

由于每一页的 长度L 固定,所以可以根据 逻辑地址A 计算得到 页号P 和 段内偏移量W。

  • P = A / L
  • W = A mod L

页号作为页表的索引,页表包含物理页每页所在物理内存的基地址,这个基地址与页内偏移的组合就形成了物理内存地址。

在这里插入图片描述

页表条目

<
  • 9
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值