操作系统中内存管理发展的梳理

操作系统中内存管理发展的梳理

一、首先是直接使用物理地址

一开始对存储器没有抽象。程序中的每一个地址就是真实的物理地址,这样使用存储器非常危险,主要有两个方面的问题。第一,随随便便(不小心或者故意)就可以访问和修改其他程序数据,所有多道程序并发很难实现;第二,不同的程序会产生物理地址冲突。解决第一个问题,可以采用交换技术或者硬件保护。解决第二个问题可以采用重定位(静态),在加载的时候进行重定位。

二、对存储器进行抽象

为程序抽象出一个内存,叫做地址空间。每一个进程都有自己的地址空间。它又如何解决直接使用物理地址产生的问题呢?也是采用重定位(动态)。使用寄存器来保存该程序的起始物理地址,而程序中通通使用地址空间中的逻辑地址,每次要使用地址的时候,就进行运算同时检查该地址是否超过了属于自己程序的范围。这就解决了进程之间访问的安全性和物理地址冲突的问题。也可以使用多个寄存器,将程序分为不同的段,每一个段有自己的段基址。我认为这已经是虚拟地址的运用。

三、物理内存不够用

随着软件发展,真实的物理内存已经不够用了,一种解决办法就是交换技术。要用的程序读进内存,不用的程序写入磁盘。这样会产生内存碎片,对内存的使用效率不高。另一种解决方法是虚拟内存。

四、虚拟内存

首先,每一个程序有自己的地址空间。
其次,地址空间被划分为固定大小的页,物理内存也被划分为相同固定大小的页。
最后,只需要将现在要使用的程序放在物理内存中。
虚拟内存更像是对分段机制的一种改进,将程序以更小的粒度映射到物理内存,从而进行重定位。


以上,是我对《现代操作系统》中内存管理的梳理,不是原创。详细内容请看书。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值