第八章 虚拟内存
程序的局部性原理:
- 在一个很短的时间内,只有某一部分指令得到执行;
- 所访问的储存空间也只局限于某一部分。
基于程序的局部性原理,我们就没有必要一次性把程序所涉及到的信息放入到内存当中去,所以操作系统和硬件配合起来,完成主存和辅存之间的调度。
虚拟储存的技术的特点:
- 需要空间开销–地址转换表;
- 时间开销–增加了指令执行的时间;
- 增加了额外的I/O操作–当访问的指令或数据不再内存中时。
- 无虚存时,系统直接将逻辑/虚拟地址送到内存总线上,读写具有同样地址的物理内存字;使用虚存时,虚拟地址被送到内存管理单元(MMU),MMU将虚拟地址映射为物理地址。
虚拟储存技术的种类:
- 分页技术、分段技术(几乎不再用)、分段加分页技术等。
实存储器:一般都是指RAM。
虚拟内存:是程序员或者用户感受到的是一个更大的内存,通常它被分配在磁盘上,这称为虚拟内存,简称虚存。
系统抖动:操作系统把一块正好在将要被用到之前扔出,操作系统又不得不很快把它取回来。太多的这样类操作会导致一种称为系统抖动的情况,系统把大部分时间都用在交换块上,而不是执行指令上。
分页:
页表项需要有一位(P)来表示它所对应的页当前是否在内存中。如果这一位表示该页在内存中,则这个页表项目的帧号。(所以P位置是用来表示程序是否在内存上)
页表项中,所需要的另一个控制位置是修改位(M),表示相应页的内容从上一次装入主存到现在是否已经改变。如果没有改变,则当需要把该页换出时,不需要用帧中的内容更新该页。
页表项:
地址转换:
重地位(地址转换):从储存器中读取一个字的基本机制包括使用页表从虚拟地址到物理地址的转换。
重定位的过程在第7章中讲过了。
替换策略:
最佳替换:
- 最佳OPT策略选择替换下次访问距当前时间最长的那些页。
- 但是由于它要求操作系统必须知道将来的事件,显然是不可能实现的。
最近最少使用:
- 替换主存中上次使用距当前最远的页。
先进先出:
- 顾名思义就是谁先进来谁就先出去。