第四章存储器管理主讲:赵恒2§5.1虚拟存储器前面所介绍的各种存储管理方式,有一个共同的特点,即它们都要求将一个作业全部装入内存后才能运行,于是,就可能出现以下情况:(1)有的作业很大,其所要求内存空间超过了内存容量,从而导致作业不能全部被装入内存,以至于该作业无法运行。(2)有多个作业要求运行,但可用的内存空间不足以容纳所有的作业,只能将少数的作业装入内存让它们先运行,而将其他的作业留在外存等待。3§5.1虚拟存储器常规存储器管理方式的特征(1)一次性:作业在运行前需一次性地全部装入内存。将导致上述两问题。(2)驻留性:作业装入内存后,便一直驻留内存,直至作业运行结束。局部性原理指程序在执行时呈现出局部性规律,即在一较短时间内,程序的执行仅限于某个部分,相应地,它所访问的存储空间也局限于某个区域。局部性又表现为时间局部性(由于大量的循环操作,某指令或数据被访问后,则不久可能会被再次访问)和空间局部性(如顺序执行,指程序在一段时间内访问的地址,可能集中在一定的范围之内)。实现虚拟存储器的理论基础:局部性原理。4§5.1虚拟存储器实现方法:一个进程在运行之时,没有必要全部装入内存,而只把当前运行所需要的页(段)装入内存便可启动运行,而其余部分则存放在磁盘上。程序在运行时,如果所需要的页(段)已经调入内存,便可以继续执行下去。如果所需要的页(段)不在内存,此时程序应利用操作系统所提供的请求调页(段)功能,将该页(段)调入内存,以使程序能够运行下去。如果此时分配给该程序的内存已全部占用,不能装入新的页(段),则需要利用系统的置换功能,把内存中暂时不用的页(段)调出至磁盘上,腾出足够的内存空间,再将所要装入的页(段)调入内存,使程序能够继续运行下去。5§5.1虚拟存储器虚拟存储器的定义:是指仅把进程的一部分装入内存便可运行的存储器系统,它具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。虚拟存储器的逻辑容量:虚拟存储器的逻辑容量由系统的寻址能力和外存容量之和所决定。判断题:虚拟存储器是一个假想的地址空间,因而这个地址空间的大小是没有限制的()(东南大学2001)分析:在虚拟存储器中,用户的地址空间仍然受到地址字长和外存容量的限制。虚拟存储器的最大容量受地址长度(地址总线位数)决定,一个拥有32位地址长度的系统,其虚拟内存最大为232字节。当然,一个实际的虚拟存储器的大小还会受到辅助存储器大小的限制。答案错6§5.1虚拟存储器虚拟内存的特征:虚拟性。虚拟内存不是扩大实际的物理内存,而是扩充逻辑内存的容量。部分装入。每个进程不是全部装入内存,而是分成若干个部分。当进程需要执行时,才将当前运行所需要的程序和数据装入内存。对换性。在一个进程运行期间,它所需要的程序和数据可以分多次调入。每次仅仅调入一部分,以满足当前程序执行的需要。而且,在内存中那些暂时不使用的程序和数据可以换到外存的交换区存放,以腾出尽量多的内存空间供可运行进程使用。7①页式虚拟存储它是在分页系统的基础上,增加了请求调页功能、页面置换功能所形成的虚拟存储系统。系统必须提供的硬件支持:请求分页的页表机构缺页中断机构地址变换机构②段式虚拟存储这是在分段系统的基础上,增加了请求调段功能及分段置换功能后,所形成的段式虚拟存储系统。系统必须提供的硬件支持:请求分段的段表机构缺段中断机构地址变换机构5.1.2虚拟存储器的实现方式:页式虚拟存贮段式虚拟存储8选择题:____存储扩充方式,能够实际增加存储单元。A)覆盖技术B)交换技术C)物理扩充D)虚拟存储技术填空题:分区存储管理方案不能实现虚拟的原因是______。简答题:覆盖技术与虚拟存储技术有何本质不同?交换技术与虚存中使用的调入/调出技术有何相同与不同之处?参考答案:覆盖技术与虚拟存储技术最本质的不同在于覆盖的程序段的最大长度要受到物理内存容量的限制,而虚拟存储器的最大长度不受物理内存容量的限制,只受计算机地址结构的限制。另外,使用覆盖技术要求程序员必须精心地设计程序及其数据结构,使得要覆盖的段具有相对独立性,不存在直接联系或相互交叉访问。而虚拟存储技术对用户的程序段之间没有此要求。交换技术与虚存中使用的调入/调出技术的主要相同点是都要在内存与外存之间交换信息。交换技术与虚存中使用的调入/调出技术的主要区别在于:交换技术换进换出整个进程,因此一个进程的大小受物理存储器的限制;而虚存中使用的调入/调出技术在内存和外存之间来回传递的是存储页或存储段,而不是整个进程,从而使得进程的地址映射具有了更大的灵活性,且允许进程的大小比可用的物理存储空间大得多。9何谓虚拟存储器?举一例说明操作系统是如何实现虚拟内存的。(西交大1999)在操作系统中,通过一些硬件和软件的措施为用户提供了一个其容量比实际主存大得多的存储器,称为虚拟存储器。操作系统要实现虚拟内存,必须把主存和辅存统一管理起来,即大作业程序在执行时,有一部分地址空间在主存,另一部分在辅存,当访问的信息不在主存时,由操作系统将其调入主存并实现自动覆盖功能,使用户在编写程序时不再受主存容量的限制。例如在请求分页存储管理系统中,用户作业的所有页面并不一定都在实存,在作业运行过程中再请求调入所用的虚页。为了实现从逻辑地址空间到物理地址空间的变换,在硬件上必须提供一套地址变换机构,动态地址变换机构自动地将所有的逻辑地址划分为页号和页内地址两部分,并利用页表将页号代之以块号,把块号和页内地址拼接就得到了内存的物理地址,从而实现了虚拟存储器。10§5.2请求分页技术5.2.1请求分页存储管理的基本思想请求式分页也称虚拟页式存储管理,它的基本思想是:在进程开始运行之前,不是装入全部页面,而是装入一个或零个页面,之后根据进程运行的需要,动态装入其它页面;当内存空间已满,而又需要装入新的页面时,则根据某种算法淘汰某个页面,以便装入新的页面。为了实现页式虚存,系统需要解决下面三个问题:(1)系统如何获知进程当前所需页面不在主存。(2)当发现缺页时,如何把所缺页面调入主存。(3)当主存中没有空闲的物理块时,为了要接受一个新页,需要把老的一页淘汰出去,根据什么策略选择欲淘汰的页面。扩充页表缺页中断页面置换算法11页表机制:纯分页的页表只有两项:页号和物理块。而请求分页存储管理增加了调入功能和置换功能,故需在页表中增加若干项,供程序在换进换出时参考。下面所示是一请求分页系统中的页表:页号物理块号状态位P访问字段A修改位M外存地址状态位P:用于指示该页是否已调入内存,0表示该页已在内存,1表示该页不在内存,供程序访问时参考;访问字段A:用于记录该页在一段时间内被访问的次数,或最近已有多长时间未被访问,供置换算法选择页面时参考;修改位M:用于记录该页在调入内存后是否被修改过。由于内存中的每一页都在外存上保留一个副本,因此,若未被修改,在置换该页时就不需将该页写回到磁盘上,以减少系统的开销和启动磁盘的次数;若已被修改,则必须将该页重写回磁盘上,以保证磁盘上所保留的始终是最新副本。外存地址:用于指出该页在外存上的地址,通常是物理块号,供调入该页时使用。12请求分页存储管理示意图:物理地址空间页面映射表存储空间页号块号状态作业10110430001作业20123作业3012341061032901101110321270041234567891011121313§5.2请求分页技术程序在执行时,首先检查页表,当状态位指示该页不在主存时,则引起一个缺页中断发生,相应的中断处理程序把控制转向缺页中断子程序。执行此子程序,即把所缺页面装入主存。然后处理机重新执行缺页时打断的指令。这时,就将顺利形成物理地址。缺页中断的处理过程是由硬件和软件共同实现的。2.缺页中断14每当所要访问的页面不在内存时,便产生一缺页中断。同样需要经历诸如:保护CPU环境、分析中断、转入缺页中断处理程序进行处理、恢复CPU环境等几个步骤。与一般中断相比的区别:1、一般中断在指令执行完后,检查是否有中断,缺页中断是在指令执行期间。2、一条指令在执行期间,可能产生多次缺页中断。TOB指令copyAA:B:页面65432115页面大小问题页面大小是一个重要的硬件设计问题小页面有利于减少内碎片总量大页面有利于减小每进程的页表容量大页面有利于实现有效的磁盘数据块传送16页面大小与缺页率页面大小会影响缺页率(“缺页次数/内存访问次数”或“缺页的平均时间间隔”)•缺页率与页面大小的关系:–页面很小:每个进程的内存页较多,通过调页很快适应局部性原理的要求,缺页率低。–页面很大:进程使用的大部分地址空间都在内存,缺页率低。–页面中等大小:局部性区域只占每页的较小部分,缺页率高。17页面大小与软件策略页面大小也受软件策略影响页大小固定时,缺页率与分配给进程的内存页面数目的关系:数目越多,缺页率越低。页面数目的下限应该是一条指令及其操作数可能涉及的页面数目的上限应该是足以保证每条指令都能被执行。18地址变换机构:请求分页系统中的地址变换机构,是在分页系统的地址变换机构的基础上,为实现虚拟存储器而增加了产生和处理缺页中断、页面置换等功能而形成的。下图给出了请求分页系统的地址变换过程。19请求分页中的地址变换过程缺页中断处理保留CPU现场从外存中找到缺页内存满否?选择一页换出该页被修改否?将该页写回外存启动I/O硬件将一页从外存换入内存修改页表否是是否页表项在快表中?CPU检索快表访问页表否页在内存?修改访问位和修改位形成物理地址地址变换结束否页号>页表长度?开始程序请求访问一页产生缺页中断请求调页修改快表是越界中断是是OS命令CPU从外存读缺页205.2.2内存分配策略和分配算法在为进程分配物理块时,要解决下列的三个问题:1、保证进程可正常运行所需要的最少物理块数————最小物理块数的确定。2、每个进程的物理块数,是固定值还是可变值————物理块的分配策略。3、不同进程所分配的物理块数,是采用平均分配算法还是根据进程的大小按照比例予以分配————————物理块的分配算法。211.最小物理块数的确定进程应获得的最少物理块数与计算机的硬件结构有关,取决于指令的格式、功能和寻址方式。如:MovA,[B]允许间接寻址:则至少要求3个物理块。5.2.2内存分配策略和分配算法movA,[B]1000XXXX222.物理块的分配策略内存分配策略:固定和可变分配策略置换策略:全局置换和局部置换1)固定分配局部置换2)可变分配全局置换3)可变分配局部置换231)固定分配局部置换–思路:分配固定数目的内存空间(物理块),在整个运行期间都不改变。–策略:如果缺页,则只能从该进程在内存的页面中选中一页,进行换出操作,然后再调入一页。–特点:为每个进程分配多少物理块是合适的值难以确定。(少:置换率高多:资源浪费)。2.物理块的分配策略242)可变分配全局置换–思路:每个进程预先分配一定数目的物理块,同时OS也保持一个空闲物理块队列。–策略:当缺页时,首先将对OS所占有的空闲块进行分配,从而增加了各进程的物理块数。当OS的空闲块全部用完,将引起换出操作,OS从内存中选择一页,可能是系统中任一进程的页。–是一种最易实现的策略2.物理块的分配策略253)可变分配局部置换–思路:先为每个进程预先分配一定数目的物理块,系统根据缺页率动态调整各进程占有的物理块数目,使其保持在一个比较低的缺页率状态下。–策略:如果缺页,则先从该进程在内存的页面中选中一页,进行换出操作–特点:使大部分进程可以达到比较近似的性能2.物理块的分配策略263.物理块分配算法1)平均分配算法将系统中所有可供分配的物理块,平均分配给各个进程。缺点:未考虑各进程本身的大小。在采用固定分配策略时,可使用下列方法来分配:272)按比例分配算法根据进程的大小按比例分配物理块的算法。如果系统中共有n个进程,每个进程的页面数为Si,则系统中各进程页面数的总和为:又假定系统中可用的物理块总数为m,则每个进程所能分到的物理块数为bi,将有:b应该取整,它必须大