1 虚拟存储技术(Virtual Memory)
1.1 概念
当进程运行时,先将其一部分装入内存,另一部分暂留在磁盘,当要执行的指令或访问的数据不在内存时,由操作系统自动完成将它们从磁盘调入内存的工作。
虚拟地址空间即为分配给进程的虚拟内存。
虚拟地址是在虚拟内存中指令或数据的位置,该位置可以被访问。
1.2 存储器的层次的结构

1.3 虚存与存储体系
- 把内存与磁盘有机的结合起来使用,从而得到一个容量很大的“内存”,即虚存
- 虚存是对内存的抽象,构建在存储体系之上,由操作系统协调各存储器的使用
- 虚存提供了一个比物理内存大得多的地址空间。虚存的大小受到计算机系统的寻址机制和磁盘可用空间的限制。
1.4 地址保护
包括以下三个要点:
- 确保每个进程有独立的地址空间
- 确保进程访问合法的地址范围(防止地址越界)
- 确保进程的操作是合法的(防止越权,如对只读内存不能执行写操作)

1.5 虚拟页式(Paging)
虚拟页式存储管理系统:虚拟存储技术+页式存储管理方案。
虚拟页式的基本思想在于:
进程开始运行之前,不是装入全部页面,而是装入一个或零个页面,之后根据进程运行的需要动态的装入其他页面,当内存已满,而又要重新装入新的页面时,则根据某种算法置换内存中的某个页面,以便装入新的页面。
具体有两种方式:
- 请求调页(demand paging):只要在需要的时候才由OS调入内存
- 预先调页(prepaging):将可能用到的资源提前调入内存
虚拟页式利用了资源转换技术:即以CPU时间和磁盘空间来换取昂贵的内存空间。
2 虚拟页式中的页表及页表项的设计
2.1 概念
页表是由页表项组成的。页表项的设计是由硬件保证的,表项的组成如下表所示。
表2-1 页表项的组成
| 属性 | 说明 |
|---|---|
| 页框号 | 即内存块号,也称物理页面号 |
| 有效位 | 也称中断位,表示该页是在内存还是在磁盘,通常值为0表示相应内容尚未读入内存 |
| 访问位 | 引用位,表示该页是否被访问过 |
| 修改位 | 此页在内存中是否被修改过 |
| 保护位 | 页的读/写权限 |
2.2 关于页表
2.2.1 页表规模
1 关于32位虚拟地址空间的页表规模?
页面大小为4K,页表项大小为4字节,则一个进程地址空间有【232/(4K)=232/212=220】页;其页表需要占【4K/4=1K=1024】页。
2 关于64位虚拟地址空间的页表规模?
页面大小为4K,页表项大小为8字节;页表规模达到32000TB。可想而知是多么大。因此需要实现将页表页在内存中不连续存放,基本思想是为页表页创建地址索引表,即页目录(Page Directory)。

本文深入探讨虚拟存储技术,包括虚拟页式存储管理、页表设计、地址映射过程及TLB作用,阐述缺页异常处理、软件相关策略,以及各种页面置换算法的特点与应用。
最低0.47元/天 解锁文章
4754

被折叠的 条评论
为什么被折叠?



