码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-08-25 00:51:36      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:小例子   记录   嵌入   使用   寻址   大小   空间   有一个   出错   

无存储器抽象

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

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

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

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

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

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

交换技术

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

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

虚拟内存基本思想

小例子

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

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

标签:小例子   记录   嵌入   使用   寻址   大小   空间   有一个   出错   

原文地址:https://www.cnblogs.com/huangsitao/p/11406434.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!