虚拟存储技术(VIRTUAL MEMORY)
所谓的虚拟存储技术是指:当进程运行时,先将其一部分装入内存,另一部分暂留在磁盘,当要执行的指令或访问的数据不存在内存中时,由操作系统自动完成将它们从磁盘调入内存的工作。
虚拟地址空间—–分配给进程的虚拟内存
虚拟地址—–在虚拟内存中指令或数据的位置,该位置可以被访问,仿佛它是内存的一部分。
存储器的层次结构
虚存 与 存储体系
- 把内存和磁盘有机地结合起来使用,从而得到一个容量很大的“内存”,即虚存。
- 虚存是对内存的抽象,构建在存储体系之上,由操作系统协调个存储器的使用
- 虚存提供了一个比物理内存空间大得多的地址空间
地址保护
- 确保每个进程有独立的地址空间
- 确保进程访问合法的地址空间,防止地址越界
注意: 上图中的基地址寄存器和界限寄存器操作系统通过特殊的特权指令加载
- 确保进程的操作合法
虚拟页式(PAGING)
**虚拟存储技术 + 页式存储管理方案
-> 虚拟页式存储管理系统
主要包括:1. 请求调页(demand paging) 2. 预先调页(prepaging)
基本思想
- 进程开始运行之前,不是装入全部页面,二是装入一个或零个页面
- 之后,根据进程运行需要,动态装入其他页面
- 当内存空间已满,而有需要装入新的页面时,则根据某种算法置换内存中的某个页面,以便装入新的页面
其实就是以CPU时间和磁盘空间换取昂贵的内存空间,这是操作系统中的资源转换技术
页表与页表项的设计
页表表项设计
- 页表由页表项组成
- 页框号、有效位、访问位、修改位、保护位
- 页框号(内存块号、物理页面号、页帧号)
- 有效位(驻留位、中断位):表示该页是内存还是磁盘
- 访问位:引用位
- 修改位:此页在内存中是否修改过
- 保护位:读/可读写
通常,页表项是硬件设计
关于页表
- 32位虚拟地址空间的页表规模
- 如果页面大小为4k;页表项大小为4字节,则一个进程地址空间有2^20页,其页表需要占1024页(页表页)
- 64位虚拟地址空间
-页面大小为4k; 页表项大小为8字节,则一个进程的页表规模:就达到了 32,000TB
- 页表页在内存中若不连续存放,则需要引入页表页的地址索引表-> 页目录(Page Directory)
注意 二级页表可以表示4G的虚拟地址空间
引入反转(倒排)页表
- 地址转换
从虚拟地址空间出发: 虚拟地址->查页表->得到页框号->形成物理地址
每个进程一张页表
- 解决思路
- 从物理地址出发,系统建立一张页表
- 页表项记录进程i的某虚拟地址(虚页号)与页框号的映射关系
时间: 2024-10-13 20:57:11