操作系统-虚拟存储器
虚拟存储器
所谓虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。采用了局部性原理设计,建立在离散分配存储管理方式上。
实现方法
-
分页请求系统
分页请求系统是在分页系统的基础上增加了请求调页功能和页面置换功能形成的页式虚拟存储系统
- 硬件支持
-
请求分页的页表机制
将用户地址空间的逻辑地址映射为内存地址空间
(1)状态位P:指示该页是否已调入内存。
(2)访问字段A:记录本页在一段时间内被访问的次数或最近未被访问的时间。
(3)修改位M:表示该页在调入内存后是否被修改过。若修改过,则换出时需重写至外存。
(4)外存地址:指出该页在外存上的地址。
-
缺页中断机构
缺页中断是一种特殊的中断,它与一般的中断有明显的区别。
- 通常CPU在执行完一条指令的时候才会去检查是否有中断请求到达,而缺页中断在指令执行过程中,若发现所需要的指令或者数据不在内存中,就会立立即产生和处理缺页中断信号
- 一条指令在执行过程中可能产生多次缺页中断。
-
地址变换机构
请求分页系统中的地址变换机构是在分页系统地址变换的机构增加了产生和处理缺页中断的功能,其他的都和分页系统地址转换机构处理一样
-
- 实现请求分页软件
请求分页中的内存分配
由于采用了虚拟存储技术,那么在分配内存时候出现了一些问题
- 为了保持进程能够正常运行,所需要装载进内存的最小物理块
- 分配物理块的时候,需要采取什么样的分配策略
- 为不同进程所分配的物理块数是平局分配还是按进程大小分配。
-
最小物理块数的确定
为每一个进程分配的物理块越少,缺页率就会上升,系统容易发生“抖动”
-
内存分配策略
-
固定分配局部置换
固定分配:为每一个进程分配一组固定数目的物理块,在进程运行期间不再改变。
局部分配:进程在运行中发现缺页,只能从分配给该进程的n个页面中选出一页换出,然后再调入一页
-
可变分配全局置换
可变分配:为每一个进程分配一组固定数目的物理块,在进程运行期间做适当的增加或者减少
全局置换:在进程运行期间出现了缺页,则将OS所保留的空闲物理块取出一块分配给该进程,或者以所有进程的全部物理块为标,选择一块换出,然后将所缺的页调入
-
可变分配局部置换
为每一个进程分配一组固定数目的物理块,在发生缺页的时候,只允许从该进程在内存中的页面选择一页换出,当频繁有缺页中断的时候,OS为它增加附加的物理块
-
-
物理块分配算法
请求分页中的页面调入策略
为了保证进程的正常运行,需要事先将要执行的部分程序和数据所在的页面调入内存中,这里就涉及到了系统何时调入所需要的页面,从何处调入这些页面以及如何进行调入的
-
何时调入
-
预调页策略
预测不久就会使用的页面,将其一起调入到内存中
-
请求调页策略
当访问到页面不在内存中时,请求调入该页
-
-
从何处调入
- 如果系统有足够的对换区空间,从对换区空间中调入
- 系统没有足够的对换区空间,对应不需要修改的文件从文件区调入,用完之后直接放弃,而对于那些需要修改的文件,从对换区调入,修改完之后保存在对换区,需要的时候再调入
-
调入过程
当需要访问的页面不在内存中时,就会发出缺页中断,中断处理程序保存CPU环境,查找页面所对于的物理块,调入内存,修改页面,如果内存满了,需要换出一些没用的页面。
- 硬件支持
-
分段请求系统
分段请求系统是在分段系统的基础上增加了请求调段功能和分段置换功能形成的段式虚拟存储系统
-
硬件支持
-
请求分段的段表机制
存取方式:存取属性(执行、只读、允许读/写)
访问字段A:记录该段被访问的频繁程度
修改位M:表示该段在进入内存后,是否被修改过。
存在位P:表示该段是否在内存中。
增补位:表示在运行过程中,该段是否做过动态增长。
外存地址:表示该段在外存中的起始地址。
-
缺段中断机构
和缺页中断机构差不多
-
地址变换机构
-
-
软件支持
-