操作系统核心原理.内存管理(中):分页内存管理

本文深入探讨了分页内存管理,旨在解决交换内存管理中的空间浪费和程序大小受限问题。分页系统将虚拟和物理内存划分为相同大小的页面,通过页表实现虚拟地址到物理地址的映射,避免外部碎片并允许程序部分加载。然而,页表占用大量内存是其主要缺点。文章还介绍了缺页中断处理、页面置换算法,如随机、FIFO、第二次机会、时钟、最优、NRU、LRU和工作集算法,讨论了它们的优缺点和实际应用。
摘要由CSDN通过智能技术生成

在上一篇介绍的几种多道编程的内存管理模式中,以交换内存管理最为灵活和先进。但是这种策略也存在很多重大问题,而其中最重要的两个问题就是空间浪费和程序大小受限。那么有什么办法可以解决交换内存存在的这些问题呢?答案是分页,它是我们解决交换缺陷的“不二法门”。

一、分页内存管理
1.1 解决问题之道
  为了解决交换系统存在的缺陷,分页系统横空出世。分页系统的核心在于:将虚拟内存空间和物理内存空间皆划分为大小相同的页面,如4KB、8KB或16KB等,并以页面作为内存空间的最小分配单位,一个程序的一个页面可以存放在任意一个物理页面里。
  (1)解决空间浪费碎片化问题
  由于将虚拟内存空间和物理内存空间按照某种规定的大小进行分配,这里我们称之为页(Page),然后按照页进行内存分配,也就克服了外部碎片的问题。
  (2)解决程序大小受限问题
  程序增长有限是因为一个程序需要全部加载到内存才能运行,因此解决的办法就是使得一个程序无须全部加载就可以运行。使用分页也可以解决这个问题,只需将当前需要的页面放在内存里,其他暂时不用的页面放在磁盘上,这样一个程序同时占用内存和磁盘,其增长空间就大大增加了。而且,分页之后,如果一个程序需要更多的空间,给其分配一个新页即可(而无需将程序倒出倒进从而提高空间增长效率)。

1.2 虚拟地址的构成与地址翻译
  (1)虚拟地址的构成
  在分页系统下,一个程序发出的虚拟地址由两部分组成:页面号和页内偏移值,如下图所示:
  在这里插入图片描述
  例如,对于32位寻址的系统,如果页面大小为4KB,则页面号占20位,页内偏移值占12位。
  (2)地址翻译:虚拟地址→物理地址
分页系统的核心是页面的翻译,即从虚拟页面到物理页面的映射(Mapping)。该翻译过程如下伪代码所示:
  if(虚拟页面非法、不在内存中或被保护)
  {
    陷入到操作系统错误服务程序
  }
  else
  {
    将虚拟页面号转换为物理页面号
    根据物理页面号产生最终物理地址
  }
  而这个翻译过程由内存管理单元(MMU)完成,MMU接收CPU发出的虚拟地址,将其翻译为物理地址后发送给内存。内存管理单元按照该物理地址进行相应访问后读出或写入相关数据,如下图所示:
在这里插入图片描述
  那么,这个翻译是怎么实现的呢?答案是查页表,对于每个程序,内存管理单元MMU都为其保存一个页表,该页表中存放的是虚拟页面到物理页面的映射。每当为一个虚拟页面寻找到一个物理页面之后,就在页表里增加一条记录来保留

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值