虚拟内存技术的诞生(程序加载运行发展史)

Posted huangsitao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚拟内存技术的诞生(程序加载运行发展史)相关的知识,希望对你有一定的参考价值。

无存储器抽象

早期大型计算机(20世纪60年代之前),小型计算机(20世纪70年代之前),个人计算机(20世纪80年代)
不能同时运行2个以上程序,比如第一个程序在地址2000处存放了一个数据,第二个程序向2000也写入数据,那么之前2000地址处的数据会被擦除
将物理地址暴露的缺点:1、容易破坏操作系统 2、运行多个程序是困难的

嵌入式系统和智能卡系统中无存储器抽象还是很常见的,比如收音机、洗衣机、微波炉。
因为他们通常只有一个程序。

一种存储器抽象:地址空间

地址空间:一个进程可用于寻址内存的一套地址集合

主要解决2个问题:保护和重定位

通过在CPU中增加基址寄存器界限寄存器来实现
每加载一个程序到内存中,基址寄存器保存程序的起始地址,界限寄存器保存程序的长度
这样做的问题就是如果程序大小超过内存大小就无法运行

交换技术

2种处理内存超载的方法:
交换技术:进程调入内存,运行一段时间,然后存回磁盘
虚拟内存:程序的一部分调入内存

20世纪60年代把程序分为许多段,称为覆盖
程序员必须把程序分割成多个片段,费时枯燥,易于出错
解决办法:让计算机去做这些事情

虚拟内存基本思想

小例子

把一个程序抽象为一个班级,地址抽象为每个座位,内存抽象为坐在座位上的学生
有一个演出活动,由多个班级参加,在一个大会场,会场的座位区域抽象为虚拟内存
每个参与演出的班级都会来到会场对应的座位,人是教师的人,但是地址变了,叫重定向
表演场地抽象为内存
操作系统抽象为工作人员,工作人员会记录哪个班级进行表演
到某一个班级表演时,如果表演人员没有到位,那对应的几个学生先去表演,即部分程序加载到内存
同时有多个班级在表演,表示系统可以同时进行多个进程的执行
当场地不够时,场上许久没有进行表演的同学可以回到会场座位上了,为最近最久未使用算法

以上是关于虚拟内存技术的诞生(程序加载运行发展史)的主要内容,如果未能解决你的问题,请参考以下文章

windows中的虚拟内存管理技术是指使用啥来运行应用程序

进程加载进化史与虚拟内存

怎么看电脑用了多少内存包括虚拟内存

虚拟机走进Java自动内存管理

深入理解 Java 虚拟机之学习笔记

java虚拟机---内存