从历史的角度看计算机内存管理

1.简单粗暴:在早期的计算机中,程序员常常应用汇编语言编程。这时的内存往往直接暴露给程序员:比如程序员想把数字1写入1号内存,只需要执行“mov MEM1,1” 即可。我们可以看出,早期的计算机几乎不可能同时执行两个程序:比如另一个程序也要使用1号内存,之前的内容就会被覆盖。

2.地址空间:如果把内存空间直接暴露给用户,往往会出现问题:应用程序可以任意修改内存单元,直到操作系统崩溃。解决这个问题的办法就是使用“地址空间”这个概念。地址空间是说,一个进程暴露给用户的地址,与进程在硬件上的实际地址是不一样的。我们把前者称为逻辑地址,后者称为物理地址。举个例子,如果程序员编写了一个程序占用0-1000号内存单元(逻辑地址),但是在实际内存中,这个程序可能被放在1001-2001号内存单元(物理地址)。通过这样的方式,内存就被保护起来。

用户看到的内存空间实际上的物理空间
00001001
10002001

3.交换技术:虽然说地址空间技术解决了物理内存的暴露问题,但是如果系统要并发地执行两个进程,但是内存又不足以放下这两个进程,那么怎么办才好呢?答案有两个,一是交换技术,二是虚拟内存。交换技术的实现方式也是简单粗暴的:第一个进程运行完一段时间,就把它写回磁盘;再把第二个进程放到内存中执行,如此往复。

4.虚拟内存:交换技术虽然看起来很优秀,但是也存在问题:如果我电脑的内存是8G,但是我需要运行一个16G的游戏,该怎么办?这时候虚拟内存就挺身而出。虚拟内存把一个程序划分为多个页,如果需要执行的页在内存中,那么直接执行即可;如果不在,就发生缺页异常,操作系统负责将缺失的页从磁盘中调入内存。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值