当软件试图访问一个不在内存中的页时 , 处理器将该操作当作Page fault对待 , 这会将系统控制权由程序转到操作系统 , 操作系统则:
1. 确定数据在硬盘上的位置;如果所有页帧都在使用中 , 则操作系统必须选择其中一个页帧给程序使用 。如果被驱逐的页帧由另外一个程序动态申请并保存了数据 , 又或者在该页帧数据读到RAM后被程序修改了(换句话说 , 该页帧是"脏"的了) , 则该页帧在被释放前 , 数据必须回写到硬盘里 。如果一个程序之后又引用了该页帧 , 则产生一个Page fault , 触发切页操作 , 该页被再次读到RAM里 。
2. 获取RAM中一个空的页帧以存放数据;
3. 加载数据到该页帧;
4. 更新页表指向该页帧;
5. 控制权返回给程序 , 重新执行导致Page fault的指令 。
上世纪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 , 它的操作系统支持虚拟内存 。
推荐阅读
- 如何查看电脑内存大小
- 网页聊天客服是如何制作的?使用WebSocket技术!
- 浅析黄茶的焖黄技术,广东大叶青的简介
- 技术编程人员成长的 9 个段位
- JAVA技术总监:技术团队管理的6大坑
- 36岁互联网开发大叔感慨:今年Java面试,技术要求都这么高?
- 虚拟主机如何买便宜
- SIP通信网络技术概论-关于SIP/RTP呼叫语音加密技术架构讨论
- 如何做技术部负责人
- 京东前台PC首页系统技术详解