虚拟内存技术的前世今生( 二 )


当软件试图访问一个不在内存中的页时 , 处理器将该操作当作Page fault对待 , 这会将系统控制权由程序转到操作系统 , 操作系统则:

1. 确定数据在硬盘上的位置;
2. 获取RAM中一个空的页帧以存放数据;
3. 加载数据到该页帧;
4. 更新页表指向该页帧;
5. 控制权返回给程序 , 重新执行导致Page fault的指令 。
如果所有页帧都在使用中 , 则操作系统必须选择其中一个页帧给程序使用 。如果被驱逐的页帧由另外一个程序动态申请并保存了数据 , 又或者在该页帧数据读到RAM后被程序修改了(换句话说 , 该页帧是"脏"的了) , 则该页帧在被释放前 , 数据必须回写到硬盘里 。如果一个程序之后又引用了该页帧 , 则产生一个Page fault , 触发切页操作 , 该页被再次读到RAM里 。
上世纪60年代的大型机的操作系统和80年代中期的个人电脑操作系统多数都没有虚拟内存功能 , 除了以下大型机操作系统:
· Altas的Altas Supervisor
· Electrologica X8的THE multiprogramming system(纯软件的虚拟内存技术)
· Burroughs B5000的MCP
· IBM System/360 Model 67的MTS,TSS/360,CP/CMS
· GE 645的Multics
· RCA Spectra 70/46的Time Sharing Operating System
以及个人电脑Apple的Lisa , 它的操作系统支持虚拟内存 。


推荐阅读