1、2023-2-14操作系统虚拟内存操作系统虚拟内存操作系统虚拟内存操作系统虚拟内存由于受到计算机结构限制和系统成本限制,计算机系统的内存容量总是有限的。在传统存储器管理中,如果一个作业需要运行,系统必须将作业的全部信息装入内存,并在整个作业运行结束后,才能释放内存。如果一个作业信息大于内存容量,则无法装入内存,也无法运行;如果系统有大量的作业申请进入内存,则系统只能接纳相当有限的作业,系统的多道度和性能都难以得到提高。通过对进程运行的分析而发现:在进程执行时,并非同时需要作业的全部信息。虚拟存储器概念操作系统虚拟内存在进程的执行过程中,作业的某部分信息,可能从来不会使用;也可能运行完一次后,再
2、也不会使用。如果将这些不使用的信息存放在物理内存中,对内存是一种浪费。同样,既然作业的全部信息是分阶段需要,则可以分阶段将作业信息调入内存,而不需要一次将作业的全部信息调入内存。于是,提出了这样的问题:能否将作业不执行的部分暂时存放在外存,待到进程需要执行时,再将其从外存调入内存。将外存作为内存的补充,从逻辑上扩充内存,是虚拟存储管理的虚拟存储管理的基本思想基本思想。虚拟存储器概念操作系统虚拟内存人们通过对Fortran语言程序、操作系统过程和通用科学计算程序的分析,发现了对程序和数据的访问具有如下特点:(1)顺序性 程序在运行时除了少部分的分支和过程调用指令外,大部分都是顺序执行。对大程序没
3、有必要把所有的信息一次都放入内存。(2)局限性 程序在运行时,如果有若干个过程调用,程序执行的轨迹会转移至调用区域,但过程调用一般由相对较少的指令组成。当程序在某个局部范围内运行时,系统可以只将相关的局部信息放入内存,其它不相关或暂时不相关的信息放入外存。虚拟存储器概念操作系统虚拟内存(3)多次性 虽然程序中可能包含许多循环结构,但是这些循环结构通常只由少数指令构成。这些集中在一起的少数指令被多次执行,在内存中可以只放入一个版本,在需要时才将该版本调入内存。(4)独立性 程序中可能存在彼此互斥或相互独立的部分,每次运行时总有部分程序不被使用,没有必要将不被使用的部分放入内存。虚拟存储器概念操作
4、系统虚拟内存 虚拟存储器定义:是指具有请求调入功能和置换功能,能够虚拟存储器定义:是指具有请求调入功能和置换功能,能够从逻辑上对内存空间进行扩展,允许用户的逻辑地址空间大从逻辑上对内存空间进行扩展,允许用户的逻辑地址空间大于物理内存地址空间的存储管理系统。于物理内存地址空间的存储管理系统。虚拟存储器的组织形式如下图所示。虚拟存储器的组织形式如下图所示。虚拟存储管理的组织虚拟存储器概念操作系统虚拟内存在虚拟存储器中,一般将硬盘作为外存,因此,硬盘也被称为对换设备。虚拟存储器的逻辑地址空间大小与物理内存大小没有直接关系,由计算机系统的地址结构决定。如果计算机系统的地址为32位,则可寻址的范围为04
5、G;如果计算机系统的地址为20位,则可寻址的范围为01M。计算机系统的可寻址范围为虚拟存储器的最大范围。虚拟存储器概念操作系统虚拟内存虚拟存储器完成了逻辑地址空间和物理地址空间的分离,能够在一个小的物理存储空间上提供给程序一个巨大的虚拟存储器空间。虚拟存储器的基础是内存的离散管理,实现的方式为请求请求分页式虚拟存储器管理分页式虚拟存储器管理或请求分段式虚拟存储器管理请求分段式虚拟存储器管理。虚拟存储器概念操作系统虚拟内存以页为单位置换需硬件支持请求分页的页表机构缺页中断机构地址变化机构需实现请求分页的软件用于实现请求调页的软件实现页面置换的软件请求分页系统操作系统虚拟内存请求分段系统以段为单位
6、置换需硬件支持请求分段的段表机构缺段中断机构地址变化机构需实现请求分段的软件用于实现请求调段的软件实现段面置换的软件操作系统虚拟内存虚拟存储器特征多次性:最重要的特征 虚拟存储器在实现上需要将一个作业分多次调入内存运行。对换性 虚拟存储器允许作业在运行过程中将暂时不运行的部分换出,在需要时再换入,对换性使得作业运行所需内存更少,系统的多道度提高。虚拟性 虚拟存储器从逻辑上扩充内存容量,使得用户能够使用的内存容量远远大于实际内存容量,提高了系统运行程序的能力。操作系统虚拟内存 虚拟存储管理的方式之一为基于内存的分页管理。分页虚拟存储器管理的实现需要增加请求调页增加请求调页和页面置换页面置换功能。
7、虚拟存储管理首先将需要运行的作业放在外存。当作业被调度时,系统只将作业的少数页面装入内存,随着作业运行,再通过页面请求功能、调页功能和页面置换功能,逐次将作业需要运行的页面调入内存运行,并将暂时不运行的页面换出到外存。虚拟存储管理的主要功能为请求调页及页面置换。请求分页存储管理操作系统虚拟内存请求分页存储管理请求分页的硬件支持包括:请求分页的硬件支持包括:请求分页的页表机制、缺页中断机构和地址变换机构请求分页的页表机制 除了页号和物理块号外,增加了页的状态位、外存地址、修改位、访问字段等信息虚拟存储器管理下的页表操作系统虚拟内存页表增加字段的用途:状态位:用于标志一个页面是否已经装入内存。外存
8、地址:页面在外存中的地址。当需要将某页面调入内存时,查询页表中的外存地址,通常是物理块号。修改位:页面到内存后是否被修改过的标志,以确定如果页面被换出内存时,是否需要写入外存。如果页面在内存没有被修改过,页面中的内容和外存中的内容一致,则被换出内存时不需要再写入外存,节约了写入外存的时间。如果页面在内存中已经被修改过了,被换出内存时需要写入外存。请求分页存储管理操作系统虚拟内存访问字段:标志页面在内存时是否被访问过。用于页面置换算法时系统是否将页面换出内存时参考。如果页面被访问过,在页面置换时,系统考虑该页面可能以后会被再次访问而不将其换出。请求分页存储管理操作系统虚拟内存请求分页存储管理缺页
9、中断机构 在进程运行过程中,当发现所访问的页面不在内存时,缺页中断机构便产生一缺页中断信号,通知操作系统将所需要的页面调入内存。缺页中断与一般中断一样,都需要经历保护CPU环境、分析中断原因、转入中断程序处理、中断处理后恢复CPU环境等步骤。操作系统虚拟内存请求分页存储管理缺页中断又是非常特殊的一种中断,与一般中断有如下不同:CPU检测中断的时间不同 对一般中断信号对一般中断信号,CPU是在一条指令执行完后检测其是否存在,检测时间以一个指令周期为间隔以一个指令周期为间隔。而对缺页中断信号缺页中断信号,CPU是在一条指令执行期间,只要有中断信息就可检测,不需要等待一个指令周期。因此,CPU检测缺
10、页中断更及时。CPU可以多次处理 如果在一个指令周期中多次检测到缺页中断,CPU都会及时处理。由于缺页中断的独特性,缺页中断的处理过程需要由硬件和软件共同需要由硬件和软件共同完成完成。硬件寄存器硬件寄存器主要用于保护缺页时CPU未完成指令状态和恢复原指令的执行。软件软件为实现缺页中断的相应算法程序操作系统虚拟内存缺页中断处理流程图请求分页存储管理操作系统虚拟内存 虚拟存储器管理不可能在程序执行前将所有的程序页面放入内存,因此,在程序执行过程中需要逐步将程序页面调入内存。这样,在程序运行过程中完成逻辑地址逻辑地址到内存物理地址的变换,是动态重定位装入到内存物理地址的变换,是动态重定位装入。请求分
11、页存储管理操作系统虚拟内存具有快表的请求分页虚拟存储地址变换机构请求分页存储管理地址变换机构操作系统虚拟内存请求分页存储管理当进程被调度时,操作系统将进程PCB中的页表起始地址和长度装入页表寄存器中。CPU从逻辑地址中取得页号,根据页号查询快表查询快表,如果快表中有该如果快表中有该页面的内存块号页面的内存块号,则将内存块号与页内偏移一起作为该页在内存的物理地址;如果快表中没有该页面的内存块号如果快表中没有该页面的内存块号,CPU从页表寄存器得到页表在内存中的起始地址,查询页表查询页表,得到该页的内存块号,则将该块号与页内偏移一起作为该页在内存中的物理地址,同时将该页的页号和内存块号写入快表,以
12、备下次查询时使用。如果查询如果查询页表而没有得到该页的内存块号页表而没有得到该页的内存块号,即表示该页不在内存,产生一缺产生一缺页中断信号页中断信号,请求操作系统将该页面调入内存。操作系统虚拟内存请求分页存储管理在页面调入过程中,如果进程空间没有空余的页框,则系统需要调出一个页面后再将该页面调入内存,同时系统修改页表。请求分页的虚拟存储器管理采用请求页面调入方式,其实现需要硬件支持,增加了机器成本和系统开销。用于地址变换和各种数据结构的存储开销、执行地址变换指令的时间开销、内存与外存之间对换页面的I/O开销等与单纯的分页存储管理相比,虚拟存储器管理是以牺牲系统开销为以牺牲系统开销为代价,换取内
13、存的逻辑扩充代价,换取内存的逻辑扩充,换取系统运行程序的增大和吞吐量的提高。操作系统虚拟内存请求分页存储管理 请求分页的硬件支持完成了分页虚拟存储器管理中的地址变换,但是,在实施分页虚拟存储器管理中需要解决如下的策略问题:调页策略调页策略用于决定何时将进程所需要的页面调入到内存分配策略分配策略决定系统应该给一个进程分配多少内存中的物理块,进程才能运行。内存置换策略 内存置换策略用于决定内存中的哪些页面被换出内存。操作系统虚拟内存请求分页存储管理 在虚拟存储器管理中,有两种调页策略:请求页(demand paging)调入和预先页(prepaging)调入:请求页调入请求页调入是在在CPUCPU
14、需要访问进程页面需要访问进程页面时,所访问的进程页面不在内存,则CPU发出缺页中断,请求将页面调入内存。操作系统接收到缺页中断请求后,分配内存页框并完成从外存调入页面优点:只有在需要时才将页面调入内存,节省了内存空间。操作系统虚拟内存请求分页存储管理缺点:在进程初次执行时,开始会有大部分的页面调入内存,这时的进程切换开销很大。如果发生缺页时系统调入页面,而每次又仅调入一个页面,则启动磁盘作I/O的频率很高。由于每次启动磁盘时会产生一个时间延迟,因此,会造成系统用于I/O的时间增长,系统效率降低。对于执行顺序跳跃性大的程序,缺页情况变化大,难以趋向稳定的水平,从而引起系统不稳定。操作系统虚拟内存
15、请求分页存储管理预先页调入预先页调入由操作系统根据某种算法,预先动态估计进程可能要访问的页面,并在处理器需要访问页面之前先将页面预先调入内存优点 一次可将多个页面调入内存,减少了缺页中断的次数和I/O操作次数,系统付出的开销减少。如果预先动态估计准确率高,该调入策略会大大提高系统效率。缺点:如果预先动态估计准确率较低,调入的页面不被使用的可能性大,系统效率较低如果程序员不能预先提供所需程序部分的信息,则该调度策略难以实施。操作系统虚拟内存请求分页存储管理物理块的分配策略物理块的分配策略:为了合理和有效分配内存,内存物理块可以按照进程平均分配法、进平均分配法、进程按比例分配法和进程优先权分配法程
16、按比例分配法和进程优先权分配法进行分配。进程平均分配法 在内存物理块的分配上,早期采用的是各进程机会均等进行分配的方法,即进程平均分配法。进程按比例分配法:根据进程的大小,进程按比例分配法为按照比例分配内存物理块数。如果系统中有m个内存物理块,n个并发进程,每个进程的页面数为si,则系统中每个进程能够分得的内存物理块数为:操作系统虚拟内存内存物理块数也应该取整数。例如,如果内存能够提供62个内存物理块,并发进程有P1(有10个页面)和P2(有127个页面),则进程P1和P2分配到的内存物理块分别为:请求分页存储管理操作系统虚拟内存请求分页存储管理进程优先权分配法对于在系统中所处地位重要、时间要
17、求紧迫的进程,系统应该考虑给其分配较多的内存空间,使其加速完成。在实际应用中,将按比例分按比例分配法和进程优先级结合配法和进程优先级结合起来考虑,系统把内存中可以分配的物理块分为两部分,一部分按照比例分配给各并发进程,另一部分根据进程的优先权进行适当增加。对内存物理块分配还要考虑系统的多道度情况还要考虑系统的多道度情况。如果随着系统运行,多道度增加了,则每个进程需要释放出一些内存物理块给新进程;相反,如果多道度减少了,则将回收的内存物理块再分配给剩余进程。操作系统虚拟内存请求分页存储管理进程的最小物理块数不管给进程分配多少物理块,首要条件是保证进程的正常运行保证进程的正常运行。因此,在内存物理
18、块分配中有一个基本的界限,即最小物理块数。最小物理块数是保证进程正常运行所需要的最小内存块数进程需要的最小物理块数与计算机的硬件结构有关,取决于计算机的指令格式、功能和寻址方式。如果计算机采用单地址指令的直接寻址方式单地址指令的直接寻址方式,则只需要用于存放指令的页面和存放数据的页面,最小物理块数为2;如果采用间接寻址方采用间接寻址方式式,则至少需要3个物理块。对于功能较强大的计算机,指令长度可能会超过多个字节,指令本身需要跨过多个页面,则物理块的最小需要数会更大。操作系统虚拟内存请求分页存储管理内存置换策略当需要运行的页面不在内存时,系统需要将其从外存调入内存。但是如果内存没有空闲空间提供时
19、,则系统需要先从内存中选择页面换出内存后,再将需要的页面换入内存。选择被换出的页面有两种类型:全局置换和局部置换全局置换和局部置换。操作系统虚拟内存请求分页存储管理可变分配全局置换最容易实现的物理块分配和置换策略。首先为系统中的每个进程分配一定数目的物理块,OS系统自身也保持一个空闲物理块队列。如果有页面需要换入内存时,则系统首先考虑从空闲物理块队列中分配,其次考虑从所有的进程中选择合适的页面换出内存。操作系统虚拟内存请求分页存储管理固定分配局部置换根据进程类型,或程序员的建议,为每个进程分配一定数目的物理块,在整个运行期间不再改变。当进程有页面需要换入到内存时,只能从当前需要页面的进程中选择
20、从当前需要页面的进程中选择页面换出到外存页面换出到外存,该置换方法对其它进程没有影响,每个进程在内存中分得的内存物理块数不变。局限在于为每个进程分配多少个物理块难以确定。操作系统虚拟内存请求分页存储管理可变分配局部置换根据进程类型,或程序员的建议,开始为每个进程分配一定数目的物理块。当进程有页面需要换入到内存时,只能从当前需要页面的进程中选择页面换出到外存,该置换方法对其它进程没有影响。进程运行中频繁发生缺页,系统再为该进程分配若干附加的物理块进程运行中频繁发生缺页,系统再为该进程分配若干附加的物理块,直至其缺页率减少到适当程度为止。操作系统虚拟内存页面置换虚拟存储管理的一个设计问题是:需要一
21、个空闲页面时选择哪个页面来进行替换目标:减少缺页中断的次数,即减少缺页率缺页率 举例:如果一个进程或一个作业在运行中成功的访问次数为S,即所访问的页面在内存中;不成功的访问次数为F,即访问的页面需要缺页中断并且需要调入内存;运行需要访问的页面的总次数为A:A=S+F 则缺页率f为:f=F/A操作系统虚拟内存l 进程的内存物理块数 进程分得的内存物理块数越多,缺页率越低。l 页面大小 划分的页面越大,缺页率越低。l 程序的局部性 如果编制的程序局部性好,则缺页率低。l 页面置换算法 如果选取的置换算法优,则缺页率低。影响缺页率的因素操作系统虚拟内存置换算法最佳置换算法FIFO(first in
22、first out)先进先出页面置换算法LRU(least recently used)置换算法时钟更换工作集法操作系统虚拟内存最佳置换最佳置换算法:选择一个随后最长时间不会被访问的页面进行替换最长时间不被使用的页产生缺页中断的次数最小要具备预知未来的能力 预测未来很困难 举例:假如某进程的页面号引用串为:6 0 1 2 0 3 0 5 2 3 0 3 2 1 2 0 1 1 6 0 1,系统为进程分配三个内存物理块。如下图所示。最佳页面置换算法缺页6次,缺页率为6/21。操作系统虚拟内存最佳页面置换算法最佳置换操作系统虚拟内存FIFO 页面置换更换最早进入内存的页面维护一个所有页面的链表 按
23、照它们进入内存的次序替换链表头部的页面缺点:可能出现最先加载进来的页面是经常被访问的页面,这样做很可能造成常被访问的页面替换到磁盘上,导致很快就需要再次发生缺页中断操作系统虚拟内存假如某进程的页面号引用串为:6 0 1 2 0 3 0 5 2 3 0 3 2 1 2 0 1 1 6 0 1,系统为进程分配三个内存物理块。FIFO页面置换FIFO页面置换算法操作系统虚拟内存最近最久未使用(LRU)置换算法LRU 代表最近使用最少使用过去的数据预测未来 时空局域性如果一个页面长时间没有被使用过 可能以后的一段时间也用不到操作系统虚拟内存最近最久未使用LRU置换算法LRU 接近于 OPT基本思想是替
24、换一个旧页面 不需要最旧的页面操作系统虚拟内存最近最久未使用LRU置换算法举例:在LRU置换算法中引用串为:6 0 1 2 0 3 0 5 2 3 0 3 2 1 2 0 1 1 6 0 1,为进程分配三个内存物理块。置换过程如下图所示。缺页9次,缺页率为9/21。LRU页面置换算法操作系统虚拟内存最近最久未使用LRU置换算法使用一个页面链表 最近被使用的页面在链表头,最近未被使用的在链表尾 每次页面访问时更新这个链表在每一个页表项中使用计数器 选择具有最小计数器值的页面 周期性的将计数器清零操作系统虚拟内存使用矩阵实现LRU另一个选择是使用 nn 矩阵 这里 n 是虚拟空间中的页面数开始矩阵
25、被设置为0当页面 k 被访问:将k行全部设置为1,k列全部设置为0需要替换页面时 选择矩阵里对应行值最小的页面更换即可操作系统虚拟内存使用矩阵实现LRU页面访问顺序:0,1,2,3,2,1,0,3,2,30000000000001110Page0 1 2 301230000000011011100Page0 1 2 30000101110011000Page0 1 2 30111001100010000Page0 1 2 30011101100010000Page0 1 2 300011001110100000123000010001100111001110000010001100011101
26、1000000100111001100000010操作系统虚拟内存使用移位寄存器实现 LRU 给每个存放在内存的页面配备一个移位寄存器 移位寄存器的初始值设为0在每一个规定长度的时钟周期:将移位寄存器的值向右移动一位 并将对应页面的访问位的值加到该移位寄存器的最左位上当需要寻找一个页面进行更换时 选择对应移位寄存器值最小的页面即可操作系统虚拟内存使用移位寄存器实现 LRU操作系统虚拟内存时钟算法为每个常驻页维护访问位 页面被访问过后访问位自动设置访问位可以被操作系统清零常驻页面被组织到时钟循环中针臂指向其中的一个页面操作系统虚拟内存时钟算法查找一个要替换的页面时:查看正在被针臂指向的页面访问位
27、=0:较长时间内没有被访问(自从上次轮询),置换该页访问位=1:自从上次轮询后页面被访问过,重新置0,暂不换出操作系统虚拟内存时钟算法操作系统虚拟内存除考虑页面访问情况外,还须考虑置换代价,即修改位 A:访问位;M:修改位改进型时钟算法操作系统虚拟内存工作集算法工作集是:最近的k次访问均涉及到的页面集合 在最近的 T 秒或者 T 次中的所有页面w(k,t)表示在时间 t 时 k 次访问所涉及的页面数量操作系统虚拟内存工作集算法工作集与最近访问次数的关系k(最近访问次数)操作系统虚拟内存工作集算法100311086120110203011680119981200912008011851最后使用时
28、间访问位R页表当前时间:2220按下面方式扫描所有页面:If(R=1)将最后使用时间设置为当前时 间继续扫描,并将访问位清零if(R=0&ageT)替换此页面操作系统虚拟内存工作集时钟算法将工作集算法和时钟算法结合起来将内存里的页面组织到时钟圈里每个页面有一个最近访问时间和访问位需要更换页面时:从针臂指向的页面开始考察 在工作集之外的访问位为0的第一个页面被替换操作系统虚拟内存 虚拟存储器管理以进程运行的时间增长为代价换来系统更多的虚拟内存,是否值得付出这样的代价则需要从缺页率、页面大缺页率、页面大小小等方面对系统性能的影响进行分析。页面调度性能操作系统虚拟内存1 1缺页率对系统性能的影响缺页
29、率对系统性能的影响 用p表示缺页率,如果p=0,则不缺页;如果p=1,则始终缺页。抖动:由于缺页而引起的一种系统现象,即处理器频繁地处理页面的换出和调入,使得处理器实际处理程序的能力大大减小。“抖动”现象常在缺页率非常高时发生。用st表示缺页处理时间。缺页处理时间包括从外存取相关页面并将其放入内存的时间。用ma表示对内存一个页面的访问时间。用vt表示有效访问时间。在非缺页的情况下,vt=ma 在缺页率为p的情况下,vt=(1 p)ma+p st 页面调度对系统性能的影响分析操作系统虚拟内存 在任何情况下,缺页处理时间由下面三个主要部分构成:(1)缺页中断服务时间;(2)读页面时间;(3)恢复进
30、程时间。通过精简指令而减少缺页中断服务和恢复进程所花费的时间,使它们位于1ms-100ms之间。页面调度对系统性能的影响分析操作系统虚拟内存在实际应用中,缺页不只使得缺页的进程运行减慢,还会影响缺页不只使得缺页的进程运行减慢,还会影响其他进程的运行其他进程的运行。如果一个进程队列阻塞等待某个设备,而该设备正用于一个缺页的进程,则等待设备的进程会等待更长的时间才能得到请求的设备。可见,缺页不只使得缺页进程本身的运行减慢,还使得整个系统的运行效率降低,系统性能下降。因此,在分配进程物分配进程物理块和选择置换算法上,需要周全考虑理块和选择置换算法上,需要周全考虑。页面调度对系统性能的影响分析操作系统
31、虚拟内存2 2对换空间处理对系统性能的影响对换空间处理对系统性能的影响 访问磁盘上对换空间的速度比访问磁盘上文件系统更快。因为对换空间比文件系统分配的磁盘块更大磁盘块更大,同时又不需要文不需要文件查询件查询和间接分配间接分配。这样,系统可以采用在进程开始时将整个文件映像拷贝到对换区,然后再从对换区完成调入页面的方法。页面换入时,直接从对换区调入。页面换出时,如果被修改过,则需要写入对换区;否则不需要写入对换区。因此,利用硬盘上的对换空间,加快对换空间的访问速度,可加快进程页面的调入与调出,减少页面置换时间,提高系统性能。页面调度对系统性能的影响分析操作系统虚拟内存3 3页面大小对系统性能的影响
32、页面大小对系统性能的影响 页面大小对性能的影响可以从以下几个方面分析。页表 由于每个作业运行时,页表都需要存放在内存,如果页面大,则页表会更小,页表占用的内存小。从磁盘读写页面次数 除内存外,页面也需要存放在磁盘上。如果页面大,则系统从磁盘上读入页面到内存的次数少,有利于提高I/O的效率。页面调度对系统性能的影响分析操作系统虚拟内存 页内碎片 在分页的情况下,如果页面小,则作业的内存碎片少。在不考虑磁盘读写页面对页面大小的影响,只考虑页表和作业占用的内存碎片情况下,理论上可以求得最佳页面大小。如果用A表示用户作业的平均长度(单位为字节),L为页面长度(单位为字节),n为页表项所需要的字节数,每
33、个作业的页表占用的字节数为nA/L。假定作业的平均碎片为L/2,则内存附加的开销为:K=nA/L+L/2对该公式求极小值,即对L求一阶导数,得到:页面调度对系统性能的影响分析操作系统虚拟内存为最佳页面长度。通常情况下,页表项所需要的字节数为常数,如为8或4,页面大小L与用户作业的平均长度成非线性增长关系。如果系统运行的作业较长,则页面会较大。但是,通常意义下,页面的基本大小由计算机处理器决定。如IBM 370系列的页面大小为2 048B或4 096B,IBM 400的页面大小为512B,Motorola 68040的页面大小为4 096B,Pentium的页面大小为4 096B。页面调度对系统
34、性能的影响分析操作系统虚拟内存4 4编制程序对缺页率的影响编制程序对缺页率的影响 在程序编制过程中,程序员应该注意程序的局部性。程序编制方法不同,产生缺页率的不同,对系统性能的影响也不同。如果程序员在编程时考虑了可能引起的缺页中断,并使系统运行时尽量少地产生缺页中断,则会提高系统的性能。页面调度对系统性能的影响分析操作系统虚拟内存请求分段存储管理方式将用户程序的所有段首先放在外存中,当用户程序被执行时,系统再逐步从外存调入所需要的段进入内存。请求分段的硬件支持 段表机制 缺段中断机制 地址变换机构操作系统虚拟内存请求分段存储管理方式段表机制段名 段长 段基址 存取方式 访问字段A 修改位M 存
35、在位P 增补位 外存地址存取方式:标识段存取属性访问字段:段是否被访问修改位:段进入内存后是否被修改过存在位:段是否在内存增补位:请求分段系统的特有字段请求分段系统的特有字段,标识在运行过程中是否有过动态增长外存地址:段在外存的起始地址操作系统虚拟内存请求分段存储管理方式缺段中断机构操作系统虚拟内存请求分段存储管理方式地址变化机构否否否是是是操作系统虚拟内存请求分段存储管理方式分段的共享和保护 共享段表共享段表共享进程计数存取控制字段段号:不同的进程可以使用不同的段号去共享段段名段名段长段长内存地址内存地址状态状态外存地址外存地址共享进程计数共享进程计数状态状态进程名进程名进程号进程号段号段号
36、存取控制存取控制操作系统虚拟内存请求分段存储管理方式分段的共享和保护 共享段的分配与回收共享段的分配与回收分配:第一次访问:分配内存,(1)增加共享段表;(2)修改进程段表。第二次访问:(1)修改共享段表;(2)修改进程段表。回收:(1)count=0 (2)count0操作系统虚拟内存请求分段存储管理方式分段的共享和保护 分段保护分段保护越界检查:段号越界检查;段内偏移越界检查。存取控制检查:R;R/W;E环保护机构(1)内环可访问外环数据;(2)外环可请求内环服务。操作系统虚拟内存 Windows 2000/XP运行在Intel Pentium CPU硬件平台。下面介绍Intel Pent
37、ium 的工作模式。Intel Pentium CPUIntel Pentium CPU提供三种工作模式提供三种工作模式:实地址模式(real mode)、虚地址模式(又称为保护模式,protection mode)和虚拟模式(virtual mode)。实地址模式实地址模式采用段式存储器管理或单一连续存储器管理,不启用分页机制,只能寻址1MB地址空间。DOS操作系统采用这种模式。虚地址模式虚地址模式采用三种内存管理方式:段式虚拟存储器管理、页式虚拟存储器管理和段页式虚拟存储器管理。Linux和Windows操作系统采用这种模式。虚拟模式虚拟模式是在保护方式下的实地址模式的仿真。Windows
38、 2000/XP 系统存储器管理实例操作系统虚拟内存Window 2000/XP采用请求页式虚拟存储管理请求页式虚拟存储管理,提供32位的虚拟地址,为每一个进程提供一个受保护的4G虚拟地址空间。虚拟地址空间布局为低2G的地址空间为用户程序区用户程序区,高2G的地址空间为操作系统区操作系统区,如图所示。Windows系统虚拟存储器地址布局基于分页管理的Windows 2000/XP操作系统虚拟内存系统区又分为固定页面区、页交换区和操作系统驻留区。固定页面区中存放关键的系统代码,页面不可与外存对换;页交换区存放非常驻系统代码和数据,可以与外存进行页面对换;操作系统驻留区存放操作系统内核、执行体和引
39、导驱动程序以及硬件抽象代码层,非常重要永不失效,为了加快运行速度,这一区的寻址由硬件直接映射。另外,在操作系统引导时,也可以选择另一种地址分配方式:3GB用户程序区和1GB操作系统区。这种情况主要用于运行大的用户程序。基于分页管理的Windows 2000/XP操作系统虚拟内存1 1页表页表在Windows 2000/XP系统中的页表如下图所示。Windows 2000/XP系统中的页表基于分页管理的Windows 2000/XP操作系统虚拟内存2 2逻辑地址到物理地址的变换逻辑地址到物理地址的变换l在Windows 2000/XP系统中的32位逻辑地址被划分为:l 页表目录索引、页表页索引和
40、页面。其中页表目录索引占10位,页表页索引占10位,页面占12位。l页表机制为2级页表,页面大小为4K。分页管理中采用了二级页表结构实现进程的逻辑地址到物理地址的变换,如下图所示。基于分页管理的Windows 2000/XP操作系统虚拟内存Windows系统的二级页表结构 物理块号 块内偏移第一级页表页表目录逻辑地址 31 22 21 12 11 0页表目录索引 页表页索引 页面第二级页表页表物理地址基于分页管理的Windows 2000/XP操作系统虚拟内存l页目录用来指向进程页表地址。每个进程都拥有自己的页目录。l在地址变换时,操作系统从运行进程的进程控制块中得到进程页进程页目录的起始地址
41、目录的起始地址,并将该地址放入页目录寄存器中。通过页目录寄存器寻址到页目录。l页目录的目录项中包含有进程所有页表的位置和状态,即通过页目录得到页表。l由于页表占用10位地址,故最多有1 024张页表。每张页表最长可以达到1 024个页表项,指向1 024个页面。用户进程最多可以占用512个页表项。基于分页管理的Windows 2000/XP操作系统虚拟内存l页表中包括内存物理块号、修改位、访问位、有效位、禁用缓冲标志和进程的拥有者标志符等信息。l因此,通过查询页表得到逻辑地址中的页面号对应的物理块号,最后物理块号与页内偏移一起构成物理地址。基于分页管理的Windows 2000/XP操作系统虚
42、拟内存1 1请求调页请求调页 当发生缺页时,系统首先检查所需页是否在后备链表或修改后备链表或修改链表链表中。如在,则将其移出,放入进程的工作集中,不再分配新的页框;若不在,如果需要一个零初始化页零初始化页,则内存管理程序在零页链表中取出第一页。如果零页链表为空,则从空闲链表中取出一页并对它进行初始化。如需要的不是零初始化页,就从空闲页表中取出第一页。如果空闲链表为空,就从零初始化页中取出一页。如果以上任一情况中零页链表和空闲表均为空,那么使用后备链表。Windows 2000/XP系统的虚拟存储管理实现操作系统虚拟内存2 2页面淘汰算法与工作集页面淘汰算法与工作集 Windows 2000/X
43、P系统采用请求页调入请求页调入和预调入预调入两种调页方式。当一个线程发生缺页时,内存管理器引发中断的页面及后继的少量页面一起装入内存。Windows 2000/XP的进程工作集为进程当前在内存中的页面集合。当创建一个进程时,系统为其指定最小工作集和最大工作集。开始时,所有进程缺省工作集和最小和最大工作集是相同的。系统初始化时,会计算一个进程的最小和最大工作集值,当物理内存大于32MB时,进程缺省最小工作集为50页,最大工作集为345页。在进程执行过程中,内存管理器会对进程工作集大小进行自动调整。Windows 2000/XP系统的虚拟存储管理实现操作系统虚拟内存当一个进程的工作集降到最小后,如
44、果该进程再发生缺页中断,并且内存并不满,系统会自动增加该进程的工作集尺寸。当一个进程的工作集升到最大后,如果没有足够的内存可用,该进程每发生一次缺页中断,系统都要从该进程工作集中淘汰一页,再调入所请求的页面。如果有足够内存可用,系统允许一个进程的工作集超过它的最大工作集尺寸。当物理内存剩余不多时,系统将检查内存中的每个进程,查看其当前工作集是否大于其最大工作集,如果是,则淘汰该进程工作集中的一些页,直到空闲内存数量足够或每个进程都达到最小工作集。Windows 2000/XP系统的虚拟存储管理实现操作系统虚拟内存为了测试和调整进程当前工作集的合适尺寸,系统会定时从进程中淘汰一个有效页,观察其是否会发生缺页中断。如果进程没有发生缺页中断,则该进程工作集减1,并回收该页框到空闲链表中。Windows 2000/XP的虚拟内存管理总是为每个进程提供可能好的性能,而无需用户或系统管理员的干预。3 3盘交换区盘交换区 Windows 2000/XP可以支持多达16个盘交换文件(页面调度文件)。Windows 2000/XP系统的虚拟存储管理实现2023-2-14操作系统虚拟内存