1.虚拟存储器
(1)引入虚拟存储器的原因:
1)作业很大,所要求的内存空间超过了内存总容量,作业不能全部被装入内存,致使该作业无法运行。
2)有大量作业要求运行,但由于内存容量不足以容纳所有的作业,只能将少数作业装入内存,而将大量作业留在外存上。
(2)常规存储器管理方式特征:
一次性 | 作业在运行前需要一次性全部装入内存 |
驻留性 | 作业装入内存后,便一直驻留在内存中,直至作业运行结束 |
(3)局部性原理:程序的执行总是呈现局部性,即在一个较短的时间内,程序的执行仅限于某个部分,相应的,它所访问的存储空间也局限于某个区域,因此只要保持进程执行所需要的部分程序和数据驻留在内存,一段时间内进程都能顺利执行。
(4)实现虚拟存储的一般过程:
1)进程运行之前,仅需要将一部分页面或段装入内存,便可启动运行,其余部分暂时保留在磁盘上
2)进程运行时,如果他所需要访问的页面已经装入内存,则可以继续执行下去
3)如果其所需要访问的页面(段)尚未装入内存,则发生缺页中断,进程阻塞
4)此时,系统将启动请求调页功能,将进程所需的页装入内存
5)如果当前内存已满,无法装入新的页,则还需要利用页的置换功能,将内存中暂时不用的页交换到磁盘上,以腾出足够的内存空间
6)再将进程所需的页装入内存,唤醒阻塞的进程,使之重新参与调度执行。
(5)虚拟存储器的定义:是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统,其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存速度,而每位的成本却又接近于外存。
(6)虚拟存储管理的实现方法:
1)请求分页存储管理方式:在分页系统的基础上,增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。允许之状如部分页面程序,通过调页功能和页面置换功能把运行页面调入内存,置换以页面为单位。
2)请求分段系统:允许装入若干段用户程序和数据,即可启动运行,再通过调段功能和段的置换功能将暂不运行的段调出。
(7)虚拟存储器的特征:
多次性 | 多次性是指一个作业被分成多次调入内存运行 |
对换性 | 对换性是指作业的运行过程中进行换进、换出、能有效的提高内存利用率 |
虚拟性 | 虚拟性是指能够从逻辑上扩充内存容量,使用户看到的内存容量远大于实际内存容量 |
2.请求分页存储管理方式
(1)请求分页原理:请求分页系统是建立在基本分页基础上的,为了能支持虚拟存储器功能而增加了请求调页功能和页面置换功能。
(2)请求分页中的硬件支持:
页表机制 | (1)请求分页系统中所需要的主要数据结构是页表 (2)页表项的组成由:页号、物理块号、状态位、访问位、修改位、外存地址 |
缺页中断机构 | (1)在请求分页系统中,每当所要访问的页面不在内存时,便产生一缺页中断,请求OS将所缺之页调入内存 (2)地址转换时,检查页面的页表项中的存在位,如果为0,则产生一个缺页中断 |
地址变换机构 | 在分页系统地址变换机构的基础上,再为实现虚拟存储器而增加了某些功能形成的 |
3.内存分配策略和分配算法
(1)最小物理块数确定:保证进程正常运行所需要的最小物理块数
(2)物理块分配策略:
固定分配局部置换 |
(1)为每个进程分配一定数目的物理块,在整个运行期间不再改变 (2)困难在于每个进程分配物理块数量难以确定
|
可变分配全局置换 | (1)先为系统中的每个进程分配一定数目的物理块,而OS自身也保持一个空闲物理块队列 (2)当某进程发现缺页时,由系统从空闲物理块队列中取出一个物理块分配给该进程,并将调入的页装入其中。 (3)凡产生缺页的进程,都将获得新的物理块。
|
可变分配局部置换 | (1)为每个进程分配一定数目的物理块,但当某个进程发现缺页时,只允许从该进程在的内存页面中选出一页换出,这样就不会影响其他进程的运行 (2)在进程运行过程中统计进程的缺页率,如果缺页率高,则为其增加一定的内存页,否则适当减少其内存的页面数 |
(3)物理块分配算法:
平均分配算法 | 将系统中所有可供分配的物理块,平局分配给各个进程 |
按比例分配算法 | 根据进程大小按比例分配物理块的算法 |
考虑优先权的分配算法 | 将内存中可供分配的所有物理块分为两部分“ (1)一部分按比例分配给各进程 (2)另一部分根据各进程的优先权,适当的增加其相应份额后,分配给各个进程 |
(4)页面装入内存:
预调页方式 | 采用一种以预测为基础的预调页策略,将那些预计在不久之后便会被访问的页面,预先调入内存 |
请求调页 | 仅当在进程执行过程中,才通过检查页表发现相应的页表不在内存时,才装入该页面 |
(5)调入页面的位置:
系统拥有足够的对换区空间 | (1)进程运行前需将全部有关文件从文件区拷贝到对换区 (2)全部从对换区调入所需页,以提高调页的速度 |
系统缺少足够的对换区空间 | (1)凡是不会被修改的文件,都是直接从文件区调入 (2)对于可能被修改的部分,在换出时,必须调到对换区,以后使用时再从对换区调入 |
(6)页面调入过程:
1) 每当程序所要访问的页面未在内存时,便向CPU发出一缺页中断
2)中断处理程序首先保留CPU环境,分析中断原因后,转入缺页中断处理程序
3)如果内存已满,按照某种置换算法从内存中选出一页准备换出,如果此页被修改,则必须将他写回磁盘
4)然后再把所缺页调入内存,修改页表表项,存在位置为1,表项写入快表中
5)形成所要访问的数据物理地址,再去访问内存数据
(7)页面置换算法:
最优置换法 | 选择的被淘汰页面,以后永不使用,或许是最长时间内不再被访问的页面 |
先进先出页面置换算法 | 淘汰最先进入内存的页面,选择内存中驻留时间最久的页面淘汰 |
最近最久未使用置换方法 | 淘汰最近最久未使用的页面 |
CLOCK置换方法 | 置换时将未使用的页面换出去 |
改进CLOCK置换方法 | 首选在最近没有被使用过、在驻留内存期间没有被修改过的页面作为被置换页面。 |
最少使用算法 | 记录页面被访问的频率 |
页面缓冲算法 | 需要置换时,将未被修改页挂在*页链表末尾,已修改页面挂在修改页面链表 末尾,但并不立刻换出内存,以防再被访问到。 |