1内存的物理组织物理地址:把内存分成若干个大小相等的存储单元,每个单元给一个编号,这个编号称为内存地址(物理地址,绝对地址,实地址),存储单元占8位,称作字节(byte)。物理地址空间:物理地址的集合称为物理地址空间(主存地址空间),它是一个一维的线性空间。2程序的逻辑结构程序地址:用户编程序时所用的地址(或称逻辑地址、虚地址),基本单位可与内存的基本单位相同,也可以不相同。程序地址空间(逻辑地址空间、虚地址空间):用户的程序地址的集合称为逻辑地址空间,它的编址总是从0开始的,可以是一维线性空间,也可以是多维空间。34.6虚拟存储器的基本概念4.6.1虚拟存储器的引入4.6.2虚拟存储器的实现方法4.6.1虚拟存储器的特征4.6.1虚拟存储器引入1.常规存储器管理方式的特征2.局部性原理3.虚拟存储器定义51.前面讨论的各种存储管理方法虽各有特长,但有一些共同的特点:首先是“一次性分配”。其次是“驻留性”。作业全部信息,必须一次性装入内存作业信息一旦装入内存便一直驻留到作业运行结束一方面使大作业的运行受到限制,另一方面又影响了多道程序的实现。62、局部性原理程序的局部性规律,程序往往会不均匀地高度局部化地访问内存。7(1)程序在执行时,在大多数情况下仍是顺序执行的。这种特性使得程序的执行在一段时间内被限制在作业的某一局部范围。P.Denning有以下一些论点:(2)过程调用将会使程序的执行轨迹由一部分内存区域转至另一部分区域。但在大多数情况下,过程调用的深度都不超过5。在一段时间内,程序将会被局限于这些过程的范围内运行。8(3)程序中存在许多循环结构,它们可以多次重复执行。fori:=1tona[i]:=a[i]+1;(4)程序中还包括许多对数据结构的处理,它们往往都局限于很小的范围内。9局限性的表现:时间,空间(1)时间局限性时间局限性是指最近被访问的存储位置,很可能不久的将来还要被访问。支持这种现象的是:(a)循环;(b)子程序;(c)栈;(d)用于计数和总计的变量。10(2)空间局限性空间局限性是指存储访问有集成一组的倾向,以致一旦某个位置被访问到,很有可能它附近的位置也要被访问。支持这种现象的是:a、数组遍历;b、代码的顺序执行;c、程序员倾向于将相关的变量定义相互靠近存放。11基于局部性原理,作业没有必要全部装入内存。如果计算机系统把辅助存储器当做主存储器的扩充,当作业运行时,不是将其全部信息装入内存,而是将必须部分先装入内存,其它部分仍存于辅存中。作业运行过程中随时把需要但又不在内存的信息装入内存,把暂时不用的信息淘汰出去,以确保作业的正确运行。好象这个计算机系统向他们提供了一个容量很大的主存123、虚拟存储器的定义所谓虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。虚拟存储器的大小受计算机系统地址结构和可用外存数量的限制,与实际内存单元的数量无关。134.6.2虚拟存储器的实现方式离散分配存储管理方式是实现虚拟存储器的基础。1.分页请求系统2.分段请求系统141、页式虚拟存储系统是在分页系统的基础上,增加了请求调页功能、页面置换功能所形成的分页请求系统。15硬件支持:(1)请求分页的页表机制。(2)缺页中断机构。(3)地址变换机构。软件支持:(1)实现请求调页的软件。(2)实现页面置换的软件。162、请求分段系统这是在分段系统的基础上,增加了请求调段及分段置换功能后,所形成的段式虚拟存储系统。17为了实现请求分段,系统要提供硬件支持:(1)请求分段的段表机制。(2)缺段中断机构。(3)地址变换机构。同样地,请求调段和段的置换功能的实现也需要得到OS的支持。184.6.3虚拟存储器的特征离散性是虚拟存储器最基本的要求,虚拟性是它的最重要特征,另外虚拟存储器还具有多次性和对换性。191、离散性离散性是指在内存分配时采用离散分配方式。2、多次性作业分多次装入内存3、对换性→运行时换进换出4、虚拟性→逻辑上扩充内存容量最基本特性204.7请求分页存储管理方式请求分页存储管理方式是建立在纯分页基础上的.其基本思想:在进程开始运行之前,不是装入全部页面,而是装入一个或零个页面,之后根据进程运行的需要,动态装入其它页面;当内存空间已满,而又需要装入新的页面时,则根据某种算法淘汰某个页面,以便装入新的页面214.7.1请求分页中的硬件支持一、页表机制二、缺页中断机构三、地址变换机构页表的作用是实现从用户地址空间中的逻辑地址到内存空间的物理地址的转换。22请求页式管理中对地址空间分页,内存分块与基本分页管理一样,但对虚页的管理是不同的。要访问的页面不在内存中,如何发现和处理这种情况?这是请求分页存储管理要解决的两个基本问题23在纯分页系统中,页表的内容为:页号物理块号针对第一个问题:如何发现要访问的页面不在内存?扩充页表:页号物理块号状态位P外存地址24针对第二个问题:怎样调入页面?由地址变换机构产生一个缺页中断信号,OS进行中断处理后,根据该页的外存地址把它从外存调入内存。引进修改位和访问字段。25请求分页系统中,页表项如下:页号物理块号状态位P访问字段A修改位M外存地址(1)状态位(驻留位)P:该页是在内存还是在外存(2)访问字段位A:记录本页在一段时间内被访问的次数;根据访问位来决定淘汰哪页(由不同的算法决定)(3)修改位M:该页调入内存后是否在被修改过(4)外存地址:该页在外存上的地址,通常为外存物理块号.26在虚拟存储系统中,当一个作业被编译或经链接装配后得到的地址空间,通常存在磁盘上。页号物理块号保护信息外页面表当一个作业被调度到而装入内存时,系统为它在内存建立一张页表。272、缺页中断机构在请求分页系统中,当要访问的页面不在内存时,硬件发一个缺页中断,转交OS处理。28(1)在指令执行期间产生和处理中断信号。(2)一条指令在执行期间,可能产生多次缺页中断。它跟一般的中断有着明显的区别:29页面654321CopyAToBB:A:303、地址变换机构请求分页系统中的地址变换机构是以分页系统的地址变换机构为基础的,还增加了产生缺页中断、处理缺页中断,置换等功能。31在进行地址变换时,首先去检索快表;如果快表中没有这一页的页表项,再到内存中找页表,根据状态位P来判断该页是否在内存中。在内存,将该页的页表写入快表;快表满时,调出某页表项,再写入该页的页表项不在内存,则产生缺页中断。操作系统接到此中断信号后,就调出缺页中断处理程序,根据页表中给出的外存地址,将该页调入内存,使作业继续运行下去如果内存中有空闲块,则分配一页,将新调入页装入内存,并修改页表中相应页表项目的驻留位及相应的内存块号若此时内存中没有空闲块,则要淘汰某页,若该页在内存期间被修改过,则要将其写回外存,否则不写32图4-25这里仅仅给出一个很粗略的框图,具体的过程是很复杂的。因为作业的副本是以文件形式存于外存上,因而要求页面传输时,必然要涉及到文件系统,此外,还得调用输入输出进程。在多道程序环境下,一个作业在等待传输页时,它处于被阻塞的状态。此时,由系统调度另一作业运行。当页面传输完成后,才把原先被阻塞的那个作业重新置成就绪状态,但要等到再次调度到它时,才能恢复到原先中断的地方继续运行下去。334.7.2内存分配策略和分配算法在为进程分配物理块时,又要解决三个问题:1、保证进程正常运行而需要的最少物理块数;2、进行分配时,物理块数目是固定的还是可变的;(分配策略)3、是采取平均分配算法还是根据进程的大小按比例分配物理块。341、最小物理块数的确定最小的物理块数,是指保证进程正常运行所需的最少物理块数。最少物理块数与指令的格式、功能和寻址方式有关,也就是说与计算机的硬件结构有关。如:单地址指令且直接寻址系统,至少2块指令块/数据块352、物理块的分配策略1)、固定分配局部置换(FixedAllocation,LocalReplacement)基于进程的类型,为每个进程分配一定数目的物理块(n块),在整个运行其间不变;如缺页:n块中置换一页,以保证该进程在内存中的页面数不变;问题:多少个物理块合适?物理块太多:资源空闲.物理块太少:频繁中断采取固定和可变分配策略362)、可变分配全局置换空闲物理块队列先为每个进程分配一定数目的物理块,OS也保持一个空闲物理块队列,当进程缺页时,由系统从空闲物理块队列取出一个物理块分配给该进程,并将要调入的(缺)页装入内存.仅当空闲物理块队列中的物理块用完时,OS才从内存中任一进程的一页调出.问题:会使被调出页的进程缺页,进而使缺页率增加,影响其它进程的执行.373)、可变分配局部置换要求保持适当的缺页率基于进程的类型,为每个进程分配一定数目的物理块,进程如缺页:只从该进程在内存中的页面中换出一页,这样不会影响其它进程;如果进程在运行其间频繁发生缺页中断,则系统再为该进程分配若干个附加物理块,直至进程的缺页率减少到合适为止;若进程的缺页率特别低,可适当减少已分配该进程的物理块数目.383、物理块分配算法在固定分配策略中,系统在为各个进程分配物理块时,可采取:1)、平均分配算法39系统中多进程页面数的总和为:niSiS1每个进程所能分到的物理块数bi=Si/S×m,m为可用的物理总数。3)、考虑优先权的分配算法2)、按比例分配算法,Si为某个进程的页面数。404.7.3调页策略1、何时调入页面2、从何处调入页面3、页面调入过程1)预调页策略2)请求调页策略用于首次调入412、从何处调入页面(1)系统拥有足够的对换区空间。当缺页时,全部从对换区把所需的页面调入内存,使调页速度提高。要求:进程运行前,把进程相关文件拷入对换区在请求分页系统中,外存分为两部分:文件区和对换区42刚开始时,都放在文件区文件区对换区不改改外存可能被修改不会被修改内存(2)系统缺少足够的对换区空间。43(3)UNIX方式与进程有关的文件都放在文件区。没有运行过的页面,从文件区调入内存;已经运行过又被换出的页面,放在对换区,下次调入时,从对换区调入。文件区对换区第一次内存外存44外存物理块号内存有空:调入内存不空:换出一页修改位为1,重新写入外存修改位为0,不必写入外存将缺页调入内存修改页表,写入快表物理地址访问数据3、页面调入过程454.8.1最佳置换算法和先进先出算法4.8页面置换算法4.8.2最近最久未用置换算法4.8.3CLOCK置换算法4.8.4其他置换算法464.8.1最佳置换算法和先进先出算法4.8页面置换算法假定作业p共计n页,而系统分配给它的主存块只有m块(m,n均为正整数,1≤m≤n),即最多只能容纳m页。如果程序p在运行中成功的访问次数为s,不成功的访问次数为f,那么,其总的访问次数a=s+f,若定义f’=f/a,称f’为缺页中断率。缺页中断率:47影响缺页中断次数的因素(1)分配给进程的物理页面数物理页面数多,缺页中断少,反之,则缺页中断多物理页面数多,进程数少(影响系统效率),反之,则进程数多(缺页中断多)根据试验分析:对一共有n页的进程来说,只要能分到n/2块内存空间,就可使系统获得最高效率;(2)页面本身的大小页面大,进程的页数少,一页的信息就大,缺页中断次数减少;不同的计算机系统,有不同页面大小;48例:程序要把128×128的数组初值置“0”,数组中每一个元素为一个字,假定页面大小为128个字,数组中的每一行元素存放一页,能供该程序使用的主存块只有1块。初始时第一页在内存;程序编制方法1:Forj:=1to128Fori:=1to128A[i][j]:=0;按列:缺页中断次数:128×128-1程序编制方法2:Fori:=1to128Forj:=1to128A[i][j]:=0;按行:缺页中断次数128-1(3)程序的编制方法可见:缺页中断率与程序的局部化程度密切相关。希望编制的程序能经常集中在几个页面上;491,11,21,31,41,51,61,71,81,91,102,13,14,15,16,17,18,19,110,150(4)页面淘汰算法