页式内存管理

基址极限管理模式的问题

上篇博客分析了几种基本的内存管理模式:固定加载地址的内存管理,固定分区的内存管理,非固定分区的内存管理和交换内存管理。第一种只适合单道编程,后三种是多道编程均使用使用了同一种机制:基址与极限。

基址与极限的工作原理:将程序发出的虚拟地址加上基址而获得的物理地址。如果该地址值超过指定的极限,则视为地址出界禁止访问,否则访问正常进行。

交换内存管理是上述管理中最灵活和先进的。但是其也面对两个重要的问题:空间浪费和程序大小受到限制。

空间浪费---->外部碎片化:内存的剩余的空间虽然大于程序所需空间,但是由于碎片化则导致该程序不能加载到内存上。

程序受限----->交换需要大量进行磁盘和内存之间的交换,效率低下。虽然我们的程序空间可以拓展到磁盘但是我们的程序依旧不能超过物理内存空间(减去操作系统占用的那部分)。

分页内存管理机制

一:解决之道

  我们是否有办法去解决交换所产生的两种问题呢!首先要分析这些问题的根源出现在哪里?空间碎片化的根源就是每个程序的大小不一样,这样在空间分配时不存在一致性。解决的办法自然是将空间按照某种规定的大小进行分配。将虚拟内存和物理内存都分成大小一样的部分,我们称之为“页”。这样可以解决①外部碎片化②程序不需要全部同时加载到内存上。

二:分页内存管理

  核心:将虚拟内存空间和物理内存空间借划分为大小相同的页,并以页作为内存空间划分的最小单位。空间增长也容易实现:只需要分配额外的虚拟页面,并找到一个闲置的物理页面存放即可。

在分页系统的机制下:一个程序发出的虚拟地址由两部分组成:页面号 和 页内偏移值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值