内存的分段和分页

分段

定义:

把一段与程序所需要的内存空间大小的虚拟空间映射到某个地址空间


如上图所示:
A程序需要10M的内存,假设一个地址从0x00000000到0x00A00000的10MB大小的虚拟空间,然后从实际物理内存中分配一个相同大小的物理地址,假设为0x00100000开始到0x00B00000结束的一块空间,然后我们把两块相同大小的地址空间一一映射,即虚拟空间中的每个字节对应于物理空间的每个字节。


分段的作用:

做到了地址隔离,同时,对于每个程序而言,不管它被分配到物理地址的哪一个区域,对于程序来说是透明的,它不需要关心物理地址的变化,只需按照虚拟地址来寻址。

存在的问题:

分段没有解决的问题是内存使用效率的问题,其对内存区域的映射是按照程序为单位,如果内存不足,被换入换出到磁盘的都是整个程序,势必造成大量的磁盘访问操作,从而严重影响速度。


分页

定义:

把地址空间人为的等分成固定大小的页,每一页的大小由硬件决定,或硬件支持多种大小的页,由操作系统决定页的大小。

Intel系列的处理器支持4KB、2M、1G(DPDK使用的大页内存)大小的页,同一时刻只能选择一种大小,所以对整个系统来说,页是用来固定大小的。基本上所有PC上的操作系统都使用4KB大小的页。



如上图所示:

假设两个进程Process1和Process2,它们中部分虚拟页面被映射到物理页面,有部分却在磁盘中。图中的线表示映射关系,其中Process1的VP0和Process2的VP2映射到相同的物理页,实现了内存共享(进程间通信的方式???)

Process1的VP2和VP3不在物理内存中,当进程需要用到这两个页的时候,硬件会捕获到这个消息,即所谓的页错误(Page Fault),然后操作系统接管进程,负责将VP2和VP3从磁盘中读取出来并且装入内存。同时为物理内存中的页与VP2和VP3建立映射关系。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值