虚拟存储器管理系统和方法

文档序号:6405622阅读:290来源:国知局

专利名称::虚拟存储器管理系统和方法
技术领域
:本发明与计算机系统中的虚拟存储器有关,更具体地说,与拥有大量此类存储器的系统中对存储器的有效组织与管理有关。在支持分页、分段虚拟存储的操作系统(例如IBM公司的高级交互式操作系统或称AIXTM系统)中,最理想的是分页系统或分页器作用于直接存取存储器DASD(例如有大存储容量的磁盘)。除了允许用户有相当大量的局部附属DASD外,这种操作系统还能使计算机系统在分布式网络中起到一个文件或代码服务器的作用,它拥有大量数据集中存储在那里。支持大量DASD的分页系统中存在的一个老问题是内部控制结构变得相当大,从而占用了大量虚拟存储。再有,这些控制结构变得越大,访问它们的效率就越低。这样,很需要一个系统和方法来提供一种有效利用空间的、高性能的方式,以用于分页器管理遍及大量DASD以及小量DASD的虚拟存储。解决这一问题的一种途径是提供一个线性的或顺序的存储空间。但这反过来为存储紧致(memorycompaction)提供了机会。在查询该存储器时便出现了困难的性能方面的问题。即更加难于访问该存储器以找到合适的页面表及类似物;或者采取另一种选择,即要求有附加的数据结构,从而有利于这种查询,其结果是增加了系统的额外开销。作为另一种可选择的途径,存储器系统能提供一个全局的相当大的外部分页表,从而有助于利用不那么复杂的寻址方式供直接寻址使用。然而,这种寻址方式不适用于紧致编码,而且会导致占用显著较多的存储空间。因此,从上述内容不难明显地看出,特别需要一种系统和方法,它使分页器在管理遍及大量DASD以及小量DASD的虚拟存储器时能以有效利用空间和高性能的方式提供直接寻址能力并显著节省存储量。提供了一种组织与管理外部分页表的多重结构布局(geometry)用于在分页、分段虚拟存储计算机系统中访问大量DASD以及小量DASD。在分页系统中完全支持映象文件和暂时存储器去利用显著扩大的存储空间,而存储器的使用及性能均达到最佳。该操作系统中的一个LVM(逻辑卷管理)子系统通过由LVID(逻辑卷标识符)和偏移量定址的逻辑卷来联接和管理不同类型的DASD。分页器与LVM相联,执行分页I/O(输入/输出),为XPT(外部分页表)数据结构中的每一虚拟页面保存一个LVID和偏移量。为定义于系统中的每一段提供了一个SCB(段控制块),它包含有该段的全局软件信息。每一段有一个XPT结构,连在SCB中。对于每一个XPT结构,对于在相应段中的每一虚拟页面都有一个XPT条目。提供了多重布局的XPT结构,其中小的和大的XPT结构分别有一个字和二个字的条目。在小XPT结构应用中,对于映象文件每段只有LVID的一个付本存放在SCB中,而不是存放在XPT中,因为在该文件系统中一个文件必须完全存放在一个逻辑卷之内。然而,该文件的相对块偏移量是在XPT中以页为基础存放的,因为文件系统的体系结构限定文件在各自的卷中而一般互不相连。结果,对于映象之件段,也就是映射于唯一文件的诸段,使用了小XPT结构,从而由于在小XPT数据结构上比在大结构上出现较少页面错而节省了存储空间和改善了性能。暂时存储段利用大XPT结构和分页映象,每页的映象页面在其大XPT入口具有相应的LVID和偏移量。在执行操作系统的典型命令时建立或使用的段是利用小XPT结构的文件映象代码段,而页面映象专用和共享(程序)库段是暂时存储段,利用大XPT结构。提供了三种不同的XPT结构,供高效率地支持文件映象虚拟存储及其他虚拟存储第一种和第二种小XPT结构,以及一个大XPT结构。第二种小XPT结构及大XPT结构具有一个根块(rootblock)的多重分量以及包含XPT条目的一组直接块(directblock)。对于各XPT结构,SCB和根块分别包含有指向根块和所有指定的直接块的指针。第一种小XPT结构是一组仅用于不超过预定大小的小型文件的XPT条目组成的直接块,因此比第二种小XPT结构节省存储空间。第二种小XPT结构用于超过预定大小的文件。对于大XPT结构,每个直接块被分成两个平行的XPT条目数组,每个包含一个字。第一个数组包含由逻辑卷偏移量及页状态信息组成的XPT条目字。第二个数组包含由LVID组成的XPT条目字。直接块全被定位于一页之内,那里对于由单个直接块代表的所有虚拟页最多只需一个页面错来修正LVID和偏移量。在一个最佳实施方案中,一个代码段只利用1/32页的第一种小XPT结构及直接块而不带有根块。XPT直接块的定位模式对每4Kb(即4K字节,下同)页提供128字节直接块,因此32个直接块可以定位于一页之内,也就是说,对于当前运行小程序的32个过程只需占用一页来存放直接块。在这个最佳实施方案中还有一个专用段,它利用2Kb根块,还有一分页器预先分配了两个直接块,每个为1Kb。这两个1Kb的直接块及一个2Kb的根块总共为4Kb硬件页面,因此全部三块可由同一页面定位。这种在建立段的时候预先分配直接块及根块的位置的作法使分页器能够保证这三个块全放在同一页面上,结果只需前面所述的最大为一个XPT结构页面错来消除直接块映射范围内访问地址时的原生错。因此,在该最佳方案中,对于大多数程序的XPT结构开销为一个1/32页,这些程序通常在专用段XPT中产生一个XPT结构页面错,因为可以由与其他运行过程相同的那一页面去定位代码段XPT直接块。在该最佳方案中,对给定段保存在SCB中的状态信息还指出在XPT结构配置中是否包括根块。在本发明中,对有根块的这类XPT结构(即第二种小XPT结构及大XPT结构)提供了访问优化。每种结构的根块有相同大小,但大XPT结构的直接块有二倍大,因为需要用于存放附加的LVID。然而,为包含页面状态信息和逻辑卷偏移量的XPT结构条目部分提供了一种统一的访问模式,这是由于利用了前述的两个平行的数组,从而使大XPT结构直接块的前一半与第二种小XPT结构直接块实质上完全相同。访问XPT结构条目以确定一个特定虚拟页面是否存在一个磁盘地址的过程也进行了优化,作法是保存一个零值逻辑偏移量来指出那一页面没有被指定一个磁盘地址,因此只要分页器访问XPT结构的前一半即可指出这一点分页器子程序只需要知道感兴趣的段是否有一个带根块的XPT结构配置。在最佳的实施方案中,分页器子程序必须访问大XPT结构条目中的LVID字段,为此提供了有效的寻址方式。这里分页器首先取得LVID偏移量,然后把一个预先确定的数加到得到偏移量的那个地址值上,从而得到LVID地址。在所附权利要求中提出了确信为本发明之特点的一些新特征。然而,结合附图来描述最佳方案,将会最好地理解发明本身以及其他特点和优点。附图包括图1描绘出本发明中用于小文件的文件映象的一种小XPT结构布局。图2描绘出本发明中用于大文件的文件映象的一种小XPT结构布局。图3描绘出本发明中用于页面映象的一种大XPT结构布局。图4是另一个方框图,描绘出有效地址到XPT条目的转换。图5中的方框图描绘出本发明的逻辑卷标识符(LVID)的结构与功能。图6是本发明系统组成部分的功能块框图,表明虚拟存储管理器(VMM)与本系统的关系。图7的方框图描绘出有效地址到虚拟地址的转换。图8的方框图描绘出适于应用本发明的存储管理的计算机系统物理结构。图9是图8所述系统的更详细的计算机系统结构功能块图。在计算机操作系统(例如IBM公司的高级交互式操作系统(AIXTM),它是支持分页、分段虚拟存储的系统)中,理想的是分页系统或分页器能管理大容量直接存取存储器(DASD),例如前面提到的磁盘(图8中标号为156)。为了能清楚地描述本发明,首先有必要对基础性的虚拟存储硬件和软件子系统作一背景性描述,这些硬件和软件构成了这些计算机系统的一个部分,帮助分页器访问这些大容量的DASD。然后将详细描述本发明的存储器管理系统,进而参考图8和图9来讨论适于应用本发明的一种有代表性的计算机系统。首先,关于如图9所示的那类虚拟存储系统的硬件考虑,若这类硬件支持32位字长会是很方便的,尽管本发明不打算受此限制。由图4和图7中分别给出的标号28和标号114可以看到到达虚拟存储的这种32位有效地址的图形表示,它们转换成虚拟地址118。本发明的硬件还支持段的概念,在这里所讨论的实施方案中,段是虚拟空间中连续的地址空间中的256兆字节分区,但在实际存储器中并不是必须连续的。在一个典型的应用中,在系统硬件中可以对多达212个不同的段提供支持。每一段有各不相同的唯一标识符,称为段标识符(segid)。这样,总地址空间可以被划分(或者说分段)为最多212个不同的段。当然,这些段的数目和大小以及段标识符都可以根据字长和虚拟地址空间的大小来选定,本发明并不限于这里所列的数值。硬件中还支持逆页面表(IPT)。IPT是这样一种页面表,它对每一个实际页面有一个条目,这实际页面有固定的实际存储量单位,例如以4096字节(4K)为单位。IPT的每个条目包含映射那一实际页面的那一段的虚拟页面标识符。虚拟页是虚拟存储器中的一个固定尺度单位,例如4K,它可以在实际存储器中,或在磁盘及其他类似设备上。在这里描述的典型实施方案中,每一段有216个长度为4K的虚拟页,而在系统中可达212个段中,在任一给定时刻可以直接访问预选个数(例如16)的段。这是因为要访问某一段时首先要把该段的标识符(segid)(如图4中的标号32及图7中的标号122所示)装入段寄存器,而由硬件提供的这种寄存器的数目是有限的,典型情况是16,(如图4中标号30所示,它包含了每段各自的标识符)。为增加对本发明的理解,必须描述的下一个概念是逻辑卷管理器。在本发明的操作系统中的一个子系统(下面称为逻辑卷管理器LVM,见图6中标号94)用于管理该系统中的DASD(图6中标号102-106所示),并对不同类型的DASD提供一个通用的介面。这是借助于逻辑卷的概念来实现的。逻辑卷是一个在逻辑上相互关联的DASD单元,它可以是全部存放在同一物理卷或物理设备上,也可以不是这样。逻辑卷可以在单个物理卷或多个物理卷内不连续。然而,LVM把逻辑卷的物理位置隐藏起来,并给这些逻辑卷以均一的顺序的介面。一个逻辑卷借助其逻辑卷标识符(LVID)(如图5中的标号60;图3中的标号24和26)和调用者希望进行读写的那一卷内相对于0(零)的一个指定偏移量来进行寻址。在这里所描述的实施方案中,LVID最好用一个32位字来表示。在如前述的AIXTM操作系统中,通常作法是建立多个文件系统以便有效地组织数据。作为使用这些逻辑卷的举例,将要说明在这种操作系统中可以对操作系统的每一文件系统提供一个逻辑卷。下面要描述的概念是外部页面表和分页输入/输出。分页器介面与LVM94相联,进行分页输入/输出。为了做到这一点,分页器必须传送一个LVID60和要读写页的偏移量。这意味着伴随着每个定义于系统的位于DASD102-106上某一位置的虚拟页,该分页器必须已经保留了相应的LVID60和在该逻辑卷上的偏移量(图1中的标号10;图2中的14,16;图3中的20,22)。因为本发明的地址转换硬件支持一个总量很大的虚拟地址空间(例如,其量级为240字节),所以优化利用存储器来存放LVID60和偏移量10,14,16,20或22是很重要的。这是因为随着使用虚拟存储量的增大,分页器中为每个虚拟页面存储一个LVID和偏移量所需要的虚拟存储空间变得极大。对于定义于系统软件的每一段,有一个段控制块(SCB)40,在图4中集体表示为标号38。这一块中包含有对该段为全局性的软件信息。提供了一个数据结构,供分页器存放系统中的虚拟页面信息,下面将把这一数据结构称作外部页面表(XPT)。每一段伴随有一个XPT结构(图1、2或3)(在图4中也表示为46,48,50),固定在它的SCB40之中。对每个这类XPT结构,对相应段中的每一个虚拟页面有一个XPT条目。保持这些条目短小是重要的,因为在定义了大量虚拟存储时,其相应的页面表会变得相当大。在本发明的实施方案中,一个32位字代表一个逻辑卷偏移量和关于一个虚拟页所需的状态信息。因为LVID60还需要另一个字,这意味着最坏情况是XPT条目为2个字,当然也考虑了只需一个字条目的情况,这将在下文中描述。这种有一字条目的XPT结构在下文中称作一种小XPT结构,而有二字条目的XPT结构将称作大XPT结构。关于小XPT结构的使用,例如与图1和图2中的小XPT结构布局相联系的使用,其分页器支持映象文件的概念。一个映象文件是一个磁盘文件的别名(alias)文件,它可以通过处理器(图9中的164)装入(load)和存储(store)于某些公知地址来进行访问。这个映象文件概念在工艺上也称作“一级存储”。为了在本发明的操作系统中有效地利用映象文件,对每一打开的文件使用一个段是相当方便的(下面要讨论的共享库除外)。一个打开的文件是操作系统中某一过程已经请求访问并且已经被允许访问的文件。当一个文件被打开的时候,一个分页管理程序建立起虚拟存储地址与该文件所在逻辑卷位置之间的联系。该文件中每个相对块的逻辑卷偏移量10,14,16被存放在为该文件定义的段内相应页面的XPT条目中。对整个段只需保存LVID的一个拷贝。这是由这里描述的实施方案中文件系统的限制造成的,这里一个文件必须全部包含在一个逻辑卷内。由于这一原因,LVID存放于SCB38而不存放在XPT中。然而,由于本发明的文件系统构造规定一个文件可以是(通常的确是)在它的逻辑卷内不连续的,因此该文件的相对块偏移量必须在页面级基础上存放。这意味着对于文件映象段(或者说只映象于一个文件的段)可以使用图1或图2所示的小XPT结构。这是本发明的一个重要特点,在本发明中通过以上述方式利用小XPT结构,从而节省了存储空间并改善了系统的性能,因为在图1和图2所示的小XPT数据结构上出现的页面错要比图3所示大XPT结构上的页面错少得多。其次,如下所述,必须理解页面式空间的概念。当分页器希望把一个实际页面座标指定给一个虚拟页面以便消除一个页面错然而又没有剩余的页面座标可以使用的时候,分页器便分出一个存储器内的虚拟页以释放出一个页面座标。这个被选中要分页出来(pageout)的虚拟页面必须被写到页面式空间DASD中,如果它在初始赋值之后已经被修正过的话。页面式空间在概念上可以看作是真实存储器的扩展,只是存取时间较慢。因为分页器管理页面式空间,故有可能将页面式空间DASD地址装入一个小XPT结构中。由XPT结构中的一个条目可以完成对一个页面式空间DASD地址的转换,从而得到一个LVID和一个逻辑卷偏移量。将被映象段分页到页面式空间而不是分页到它的起始位置(homelocation)是可能的。这在工艺上称为“复制写(copyonwrite)”映象。尽管只在SCB中保留了一个LVID,但在XPT中保留了一个状态位,它指出了一个页面是在页面式空间中还是仍然映象到它的起始文件系统位置。如果它是被映象到那文件系统中,便从SCB中得到LVID。如果它被映象到页面式空间,则应用上面提到的页面式空间转换来得到页面式空间中的LVID和偏移量。例如,AIXTM系统中的系统调用shmat()就利用了“复制写”功能。Shmat()把一个数据文件映象到一个段,允许调用者通过装入和存储来更新和检验这个文件。“复制写”是Shmat()的一个任选功能,Shmat()规定,在使用一个AIXTM系统的系统调用fsync()来明确认可之前,文件的主本不会被更新。为实现这一点,在fsync()调用之前,分页器只是把该段中的所有被修正的页面写到页面式空间,而不写回到它们的起始文件位置。为增加对本发明的理解,要讨论的下一个概念是大XPT结构的使用(图3)。除了前面描述的以一个文件进行一对一映象的段之外其余所有各段在下文中都称为暂时存储段。这些段有图3所示的大XPT结构,因为这些段中的各页面可能会需要从不只一个逻辑卷中读出或写入,而不是从页面式空间中读出或写入。暂时存储段具有实现页面映象的能力。页面映象这一概念与前面讨论过的文件映象的相似之处在于它对已经存放在DASD上的信息建立起一级存储寻址能力,而这两个概念的差别在于页面映象是以页为单位实现的,不是以段(文件)为单位实现。对每一个页面映象页面,在其大XPT条目中有相应的LVID24,26及偏移量20,22,而对于文件映象的整个段只需一个LVID。下面将更详细地描述这些暂时存储段页面映象以及文件映象的使用。现在将描述过程存储模型(processmemorymodel)当在一个系统(例如AIXTM操作系统)中运行一条命令时,便造成了一个环境让该命令在其中执行。这包括为该命令建立一个过程和建立装入运行该命令代码的段。为此建立的段或者说用于执行一个典型命令的段有如下这些(1)一个文件映象段,映象要运行的可执行程序;(2)一个专用段,这是包含过程堆栈和数据的一个暂时存储段;(3)一个共享库段,这是包含可以被不同程序使用的子程序的一个暂时存储段。这个共享库段并不是在执行该程序时实际建立的,它实际上是一个全局系统段,若过程要访问库中的任何子程序,便给予该过程访问此段的通道。代码段是文件映象的,因此只需要图1或图2所示的小XPT结构,给执行每个AIXTM系统命令或类似系统的命令的性能带来很大好处。专用段和共享库段除了利用页面式空间还能实现对一个以上的逻辑卷进行输入和输出。这是因为来自不同来源的多重文件和数据可以通过页面映象而映象到它们里面。对于文件系统(例如AIXTM系统)的一个共享库是一个单个文件。一个用户过程能够访问的共享库可以有好多个。这些共享库可能不全存放在同一个逻辑卷中,共享库的内部表达方式是把它们全部联合到一个虚拟存储段。称作共享库段。每一单个共享库连同它的数据一起以页面映象方式映射到共享库段。因为可能会涉及来自多个逻辑卷的多个文件,所以需要一个图3所示的大XPT结构,它伴有一个暂时存储段。当执行一个程序而建立它的专用段时,程序所用数据并没有实际复制到该段之中,而是被页面映象到该段的一部分之中。这本身在多个页面范围内只需要一个LVID60。然而,该页面可能访问一个共享库中的一个子程序,而该库又不是存放在这同一个逻辑卷上。该程序必须为那个特定的共享库子程序建立它自己的读/写数据付本,这只要用“复制写”对那些数据作页面映象就能实现。要说明的是,程序可能会访问在不同的共享库中的许多共享库子程序。因此,过程专用段需要一个暂时存储段及其图3所示的大XPT结构。现在来更详细地描述本发明的XPT结构的构造。由于每个命令的运行一般将建立一个代码段和一个专用段,也可能要访问一个共享库段,所以本发明的一个重要特点是精心构成XPT结构,以便绝大多数的程序运行为被定位或寻址的XPT付出最小的开销代价。为了有效地支持文件映象以及所有其他虚拟存储,本发明的一个重要特点是提供并适当地应用不只一个XPT结构形态或者说布局。所以AIXTM为代表的本发明的实施方案中提供了三种不同的XPT构造布局,如图1-3所示。由于所讨论的实施方案中全部虚拟存储段是228字节(256Mb),而虚拟页面的大小是4K(212)字节,这意味着每段的XPT结构必须允许存放多达216(64K)个XPT条目,因为定义于系统的每个虚拟页面有一个XPT条目。并不是必须对全部216XPT条目的存储空间同时分配好。为了避免对全部216XPT条目保留存储空间(除非是实际需要)应用了“迟后分配XPT空间(lateXPTallocation)”的概念。迟后分配XPT空间意味着只有当XPT条目所代表的虚拟页面已经被访问或已使数据映射到该页当中的情况下才对那些XPT条目分配空间。本发明的三种XPT结构中有两种(示于图2和图3)被分成多个组成部分分别在图2和图3中的根块12或18,以及所讨论的实施方案中最多为512个直接块14-16,20-24至22-26(见图2和图3)。直接块包含XPT条目本身。用于XPT结构的动态编址单元是一个直接块。直接块最好总是整个分配在一页之内。根块中包含指向该XPT结构全部已分配空间的直接块的指针。如图4中40所示SCB包含一个指针(如标号42所示)指向该XPT结构44的根块。在本发明的最佳方案中有两种不同布局用于小XPT结构,如图1和图2所示。先参看图1,它给出的布局用于当映射到相应段的文件大小不超过128K字节时的小XPT结构。这只是一个包含32个XPT条目的直接块10。每个XPT条目包含相应虚拟页的逻辑卷偏移量及页状态信息。SCB40含有指向该直接块的指针42。有一个特殊的小XPT结构供小文件(128Kb量级或更小)使用的好处在于它比下面要描述的通常的小XPT结构(图2所示)节省大量存储空间,通常的小XPT结构用于较大的文件。在特殊小XPT结构中的直接块10只有128字节,而图2所示通常的小XPT结构的直接块为512字节。再有,它不需要根块,从而节省2Kb,这不同于图2中的根块12。要说明的是,大多数用户程序运行的大小等于或小于128K字节,因此希望对于代码段(可执行文件被映射于其中)的XPT结构布局予以最优化,以便高效率地支持小文件。对于具有图1所示最优化小XPT结构的小型数据文件。前面描述过的Shmat()功能也将能够有效地执行。尽管图1所示结构对小文件是有相当高效率的,但还需要高效率地支持大文件。为了支持对大于128K字节的文件进行文件映象,本发明提供了另一种小XPT结构布局,如图2所示。每个直接块14-16的大小是512字节,每个直接块包括128个XPT条目。为了对已分配空间的全部直接块14-16具有寻址能力,还需要一个根块12。在如同前述AIXTM系统那样的操作系统中,允许文件动态地增大。如果一个过程对一个文件发出一个Shmat()命令、以获得到该文件的一级存储通道,在AIXTM或类似系统中的语义是如果过程发生的处理器存储指令超出了该文件尾,则该文件自动被扩展。由于这一原因,当一个文件初始打开时若其大小小于或等于128Kb并获得单个直接块10(如图1所示),而在后来该文件增大到超过了128Kb,于是图1所示的小XPT结构必须转换成图2所示的结构。图3描绘出用于本发明的大XPT结构的布局。所有暂时存储段都伴有如图3所示的XPT结构。在这里讨论的实施方案中,每个直接块(例如23或25)的大小是1Kb。每个直接块包含128个XPT条目并分成两个平行的XPT条目数组,每个包含一个字。第一个数组20或22包含的XPT条目字放有逻辑卷偏移量和页面状态信息。第二个数组24或26包含的XPT条目字放有LVID。由于直接块总是全部分配在一个页面之内,那么对于由单一直接块代表的全部虚拟页面最多只需要一个页面错来修正其LVID和偏移量。现在要描述的概念是被选定直接块的预定位(pre-alloca-tionofselecteddirectblocks)。注意到为执行一个小程序(等于或小于128Kb)由XPT结构直接块和根块的定位所造成的总开销是很重要的,这种开销为该程序建立专用段和代码段的结果。(需要说明,在此时并不建立共享库段而只是对其编址,因此共享库段的XPT结构存储要求与这一点不相干)。代码段XPT结构需要128字节(或者说1/32页),因为它只取图1中的直接块10而不带有根块。对于各128字节的直接块,其XPXPT直接块空间分配模式从页面表区(PTA)(pagetablearea)(即各XPT块由该区域分配空间)得到一个4Kb页面,并由它分配128字节直接块所占空间,直到32个直接块在该页内全部分配完毕为止,此时再为128字节的直接块分配另一个4KbPTA页面。这意味着对每32个当前运行小程序的过程只需要一个PTA页面。专用段需要一个2Kb的根块。要注意的是,在理论上讲,所需要的仅仅是在“建段”(CreateSegment)时刻的根块,因为直接块是动态分配空间的。在建立一个过程的专用段时,分页器不只是分配一个根块,还分配两个直接块(例如图1中的23和25)并把它们和图3中的根块18链接起来。每个直接块需分配1Kb,当把它们合在一起再加上根块的大小(2Kb)总共为4Kb,如前面指出的。这正是硬件页面的大小。对这两个直接块和一个根块分配空间时是使这三个块分配在同一页面。在根块中的XPT直接块是可分页数据结构。为了消除一个页面错,分页器需要检验相应于出错页面的XPT结构条目。不希望在出错页面的XPT结构条目上处理一个页面错,因为从系统的角度来看这样做会由于路径长度而增加了消除原始页面错所需的总时间。为了得到一个大XPT结构条目,必须首先检验根块以得到指向适当直接块的指针。如果根指针和直接块存放在不同页面中,这会造成最多需要二个额外的页面错来消除原始页面错。预先把两个直接块与根块一起在建立段时分配空间,可以使分页器保证把三个块全部放在同一页中。这样,在直接块23、25映象范围内访问地址时最多需要一个XPT结构页面错来消除原始的页面错。分页器所以能够预测哪一些直接块需要预先分配,其原因在于AIXTM或类似系统中fork()和exec()系统调用的工作方式fork()在AIXTM系统中建立一个新过程并负责建立专用段,而exec()是建立代码段的系统调用。exec()把一个程序装入代码段并在专用段的低地址起始放置程序的数据。当一个命令由AIXTM系统中的命令行开始执行时,正常的事件序列是用fork()调用建立一个新的过程供该程序在其中运行;然后由exec()调用把该程序装入存储器。在专用段末尾是一个核工作区,fork()调用在建立专用段之后立即向这个核工作区写入。为专用段指定了预先分配好的两个XPT直接块23和25,从而使它们映象该段的头512Kb和末512Kb,因为fork()和exec()将立即访问该段中这些部分中的数据。总之,在这里描述的实施方案中,对于大多数程序的XPT结构开销是11/32页面。将会看到,通常这只会造成一个XPT结构页面错(在专用段XPT上),因为代码段XPT直接块能够由其他运行过程所在的同一页面来分配空间。下面将进一步详细讨论XPT条目寻址。把大XPT的根块(图3中的18)定义为2Kb,而直接块20-24或22-26定义为1Kb,其原因在于除了根块之外,为建立一个过程专用段还需要二个直接块(如前文中结合fork()和exec()所进行的讨论中指出的那样)。也象前面描述的那样,希望把XPT块全部放在同一页面上。这一点反过来影响了用于大文件(例如超过128Kb)的小XPT结构的布局(图2)。多重XPT结构布局(图1-3)的引入给分页器带来了额外的一层复杂性,就是说,由于有不只一个XPT结构布局,因而需要不只一个XPT结构条目寻址模式。为了减少分页器中的运行时检查以改进其性能,希望有一种尽可能统一的方法来对各XPT结构条目寻址。由于图1所示小XPT结构布局中没有根块,而在图2和图3所示的另外两种结构布局中有根块。所以在分页器中只需要一个附加测试来发现这一点。这意味着,需要为SCB中的段保留一个状态信息,用以指出其XPT结构布局是否带有一个根块。对于图2和图3所示的带有根块的XPT结构的寻址方式已经进行了优化。每一XPT结构的根块(分别为12和18)大小相同,而大XPT结构(图3)的直接块20-24或22-26为图2中14或16的二倍大小,这是由于有附加的LVID24,26所必须的。然而,对于XPT结构条目中包含页面状态信息和逻辑卷偏移量的部分(如图2中1416;图3中20,22所示)具有统一的寻址模式。这一点的实现方法是使用了大XPT结构直接块中的头半部20,22与小XPT结构直接块14,16(图2)完全相同,为此采用了前面描述的两个平行数组(array)(例如20-24或22-26)。这就给运行时性能带来显著益处,因为在XPT结构条目中最经常访问的数据是页面状态信息。前述情况的纯结果是如果分页器子程序已经知道它所感兴趣的段有一个带根块的XPT结构布局,而且它只希望检验或设置页面状态信息,或者希望确定虚拟页面是否有一个磁盘地址,那么就不需要检查额外的XPT结构布局状态信息。对于事实上一个分页器子程序确实希望访问图3所示大XPT结构条目中的LVID字段的情况,本发明的寻址模式也是完全有效的值得注意的是,需要访问一个LVID60的代码大多数也需要得到逻辑偏移量,因为也两个值一起构成了完整的DASD地址。为了从图3的大XPT结构条目中得到LVID和逻辑卷偏移量,分页器首先取得逻辑卷偏移量。然后给得到该逻辑卷偏移量的地址加上512字节。从那里得到LVID。这是一种高效率的寻址模式,因为单个处理器“加”指令在硬件上是有很高效率的,这与更复杂的需要多重加法和/或高代价的存储器存取的那些地址计算正好相反。图8和图9描绘出可以应用本发明的最佳实施方案的一种有代表性的计算机系统的物理结构和组成体系。这里所描述的发明可以应用于以UNIX(AT&T公司商标)的一个版本(前文中称为AIX的操作系统)来运行的IBMRTPC计算机(RT和RTPPC是IBM公司的商标)。然而本发明无意局限于这种计算机和操作系统,而是打算应用于具有类似特性的其他系统。要了解有关RTPC和AIX系统的更多信息,可参阅下面列出的参考文献Bach,M.J.UNIX操作系统设计,PrenticeHall,1986;Lang,T.G.和Mothersole,T.L.RTPCVRM核心程序的设计,1986年9日1日;AIX操作系统命令参考书,IBM公司,SC23-0790;AIX操作系统管理AIX操作系统,IBM公司,SC23-0793;AIX操作系统编程工具和介面,IBM公司,SC23-0789AIX操作系统技术参考书,第一卷和第2卷,IBM公司,SC23-0808和SC23-0809;IBMRT个人计算机技术,IBM公司,SA23-1057,1986;虚拟资源管理技术参考书,第1卷和第2卷,IBM公司,SC23-0816和SC23-0817。图4和图7示意性说明在图9中的存储器总线188上一个有效的32位地址28转换成虚拟地址(例如地址118的虚拟地址)的方式。给定地址28的较高4位标出相应段标识符(Segid32在一组段标识符30中的位置。可以在存储器管理单元(MMU)166(图9)所提供的16个段寄存器中的相应位置存放16个这种段标识符30。每个这样的段标符32按标号36所示与相应的段控制块(SCB)表38建立索引关系。这样,如图4所示,段标识符332经标号36与相应的SCB40建立了检索关系,该SCB是系统软件中提供的。于是,每个段标识符提供出一个表38中的唯一的SCB条目。特定的SCB条目40实质上是指向该段的特定XPT44的铰链或指针。SCB的状态信息指出了三个XPT结构布局46,48或50(集体表示成44,分别相应于图1-3中的各结构布局)当中哪一个被用于特定的相应条目40。SCB表中如40这类条目进一步包含了指向相应特定XPT的指针。图5描绘出一个逻辑卷标识符(LVID)60的构造和功能。一个逻辑卷组52是一组或者说整数个DASD逻辑卷54,其形式是任何数目的设备,诸如光盘、数据流磁带、或者硬文件(hard-file)或固定盘,或其他类似设备,每个卷组52又可以分成多个分区(partition),这些分区可以遍及若在同一卷组内的各磁盘。每一个这样的分区(或者说逻辑卷)可以被赋予一个唯一的逻辑号62。在所讨论的实施方案中,这个卷号构成了LVID60的低阶16位,对于给定的卷组52。卷号可以给出216-1个可能的分区。作为一个特定的实例,50兆硬文件54可以分成一组逻辑卷如每卷7,15和10兆,如果希望的话,每卷可以有不同的保护特征和存取权。参考标号56和57,可以示意性地看到这类逻辑卷,如果需要的话,它们可以出现在同一个DASD装置上。正如赋予一个特定卷或分区57和62的编号是唯一的,一个唯一的卷组号64将被赋予每一个卷组52,图5中可以看到,在所讨论的实施方案中它构成LVID的高阶16位。因此,可以看出LVID60是由332位构成的,它是卷组号64和在该卷组中的卷号62的并置,因此这个LVID60唯一地标识出诸如给定卷组52中的57或56那样的分区。卷组号64与卷组表70建立索引关系(如标号68所示),更具体地说,提供了一个卷标识符72。这个卷标识符72又是指向相应卷84的一个基地址或指针。特定卷号62相应于要放在卷组52中的分区57,该卷号以与指针74相似的方式作为指向相应卷表84的指针66;而表84又提供了一个指向所需分区57的指针82。显然,不同的卷组号64将与不同的卷标识符76建立索引关系,后者又提供了指向不同卷表86的基地址或指针78。一个相应的不同卷号62将指向卷表86中的相应位置88,它又提供了下一个指针,指向所需不同卷组号的不同分区。现在参考图6,它给出本发明的系统基本组成部分的功能块图,表明虚拟存储管理器(VMM)92与系统的关系。要提醒的一点是,一个虚拟地址必须转换成物理地址,这样才能访问物理的设备,例如图6所示的一组DASD102-106。因此,提供了VMM92,供需要访问存储器102-106的时候用于经通讯通道96与LVM94(逻辑卷管理)通讯。这里提醒一下,LVM94是与DASD102-106相连的软件界面,它产生访问相应DASD102-106的适当物理地址108-112。VMM92的又一个功能是控制MMU96(它也表示在图9中的166)。分界线90是用来从概念上指明本发明中软件部分与硬件部分的分界,这里通常是VMM92和LVM94构成软件部分,而MMU98和DASD102-106构成硬件部分。仍参考图6,在运行时VMM92实际上把各种段的结构综合起来。VMM92从这里所描述的XPT来计算伴随特定段中的一个特定部分(例如56或57)的LVID62(图5),还要计算在该卷内的偏移量,再经由概念上描述过的通讯通道96把这个LVID和偏移量传送给LVM94。要提醒的是,LVM94实际上对段一无所知,它只知道物理磁盘地址LVID以及如何完成向DASD102-106上的所需存储器物理位置的转换。因此,LVM94的功能是把这些LVID和偏移量转换成物理磁盘地址,而VMM92与此相反,它取出虚拟地址并将其转换成LVID。当然,需要指出,只有在需要做磁盘读写时才需要进行这种由虚拟地址到LVID和偏移量的转换以及随后再转换成物理磁盘地址。图7更详细地描绘出由有效地址到虚拟地址的转换,这实质上是由MMU166(存储器管理单元)完成的。有效地址114包含4个高阶位作为指针126,指向16个段寄存器116当中的一个。每个这样的寄存器存有12位段标识符122,并由位120和12124确定存取能力。如标号128所指出的,每一个段标识符122包含40位虚拟地址118中的12位段标识符134部分。有效地址114还包含一个用于4K长页面的虚拟页面索引部分,它含有虚拟地址118中的下16位,标为虚拟页索引部分136。有效地址114的其余12位构成页面位移132。对4K长页面,其页面位移为12位,构成40位虚拟地址的其余12位,标为字节索引138。图8中可以看到所描绘的一个可以用来利用本发明的计算机系统(例如RTPCTM)的物理结构总框图。这里把DASD设备一般性地用磁盘156来代表。该系统还包括某种形式的显示器158和其他所需要的输入/输出设备154,如打印机,指示设备(pointingdevice)等。处理器144提供这里所描述的必要的处理能力,它可以根据需要增加协处理器152。MMU140系统RAM(随机存取存储器)142以及I/O(输入/输出)通道控制器148连同电连接图8中所述各部分的常规命令、地址及控制线146和150(这些线的用途是众所周知的)使系统结构成为完整的体系。现在参考图9,这里给出一个RTPCTM计算机系统的系统结构功能块图,本发明的虚拟存储管理系统可以应用于这一计算机系统。一个32位微处理器164及其相应的存储器管理单元(MMU)166(前已讨论过)被装在一个处理器卡198上。提供了一个单独的32位插口供任选的浮点加速器卡面10使用,另外两个专用插口供系统存储器卡174使用,图9的系统最好包括可与RTPC(IBM公司注册商标)型程序同时执行PC和PCATTM(IBM公司商标)型程序的能力。由插入16位I/O通道186插口200和/或204的任选卡可以实现这一点,例如协处理器卡及其他协处理器选件,它们以附加的存储器卡、数字运算协处理器芯片等提供出更快的处理性能。在一种实施方案中,系统存储器174被组装在1兆字节和2兆字节卡上,它们插入两个专用存储器插口,使存储器扩展到3兆字节和4兆字节而硬件结构允许最多达16兆字节实际存储器寻址。图9的系统把32位微处理器164和MMU166与前面提到的标准16位I/O通道186结合起来。图9中系统由虚线分成两部分,其中32位系统组成部分位于虚线左侧,由箭头162指示,它们的运行与箭头160所指的虚线右侧16位I/O通道186组成部分无关。这一方式既提供了高性能的32位处理又能兼容标准的16位I/O适配器例如,它们可能在插口200和204与16位通道186相联。图9中的系统利用的微处理器164和相应的MMU166的优选组合方式是组装在一个处理器卡198上,它插入系统板190。微处理器164最好是利用减化指令系统计算机(RISC)结构的那一类,例如在所描述的具体实施方案中的那一种,它有118条指令,16个32位通用寄存器,以及用于地址与数据的满32位数据流,根据具体应用中指令的组合情况,其性能一般超过每秒执行1.5百万条指令(1.5MIPS)。MMU166利用已描述过的单级存储地址转换体系,它把32位系统地址变成40位虚拟地址供转换之用。在MMU166之内的内部转换缓存器把40位虚拟地址变成24位实际地址。在MMU166中还提供了硬件供需要时自动地自主存储器页重新装载转换缓存器。MMU166还包含供系统存储器174使用的错误校正代码(ECC)逻辑、系统存储器控制逻辑以及IPL(初始程序装入)和通电自测试只读存储器(ROM)172。除了微处理器164和MMU166外,处理器卡198还包含逻辑电路使32位包交换(packet-switching)微处理器通道适配于一个异步32位处理器通道192,后者与选用的浮点加速器卡及系统板I/O通道转换器(IOCC)184相连。通过存储器控制170的专用存储器通道196-198也由MMU166产生,用于连接系统存储器卡174。在处理器卡上提供了供处理器164、MMU166及系统存储器174所需要的时钟发生器。在系统板190上提供了独立的时钟发生器供I/O通道计时之用,从而能够使较高性能的处理器和系统存储卡得到支持而不影响I/O通道计时。可选的浮点加速器卡210接到32位处理器通到192上,从而改善了浮点应用的性能。为系统存储器174提供了两个专用插口,经由前面提到过的存储器通到188连接到处理器卡198。存储器通道由一个独立的40位数据总线和24位地址总线构成。数据总线包括32位数据和8位纠错代码(ECC)。ECC允许自动检查和改正所有的一位系统存储器错以及检查所有的双位错。24位地址总线能够对多达16兆字节系统存储器进行寻址,这一点前面已经描述过了。存储器计时、控制和ECC功能都是由处理器卡190提供的。系统存储器在每个存储器卡174上是双向交错的,一个存储体(bank)包含偶数地址,另一个存储体包含奇数地址。这种交错技术与低存取时间随机存取存储器(RAM)相结合,提供了相对大的系统存储器带宽。系统板190还包含全部通道转换功能,以使32位存储通道192适配到16位I/O通道186。还在系统板190上的本机I/O块182里提供了I/O通道支持功能,如中断控制器、DMA控制器和实时钟及计时器(RTC/timer)。计时、地址中断和指定DMA以及与I/O通道有关的功能都设计得尽可能与16位通道186兼容。除了通道转换功能外,系统板190还包含一个可编程转换控制装置。用来支持由I/O通道192和186上的适配器到系统存储器的存取。提供了一个单独的专用微处理器用来处理与键盘、扬声器、鼠标及图形输入板208的接口182。图9所示的系统还包括二个机内RS-232串行端口178和180,并具有DMA功能以连接终端、打印机或其他RS-232异步设备206。参阅前面提到的出版物“RT个人计算机技术”,可以得到图9所示系统的各组成部分及其功能的更详系情况。具体地说,在该出版物的相应各页可以得到关于下列组成部分的补充详细情况微处理器164和MMU166在第48页和57页;处理器卡198在第12页;加速器210在第21页;系统存储器174在第18页;系统板190及I/O通道在第26页,这些信息列在此地以供参考。尽管已经参考具体的实施方案对本发明作了说明和描述,但精通本门技术的人们会理解,在总体形式上和细节上可以进行前已描述的及其他的改变,而不会偏离本发明的精神实质和范围。权利要求1.一种用于虚拟存储器系统的存储器结构,其特征是有一组XPT表组织成至少2种不同的XPT结构布局。2.根据权利要求1的结构,其中所述至少2种XPT结构包括至少一种小XPT结构和一种大XPT结构。3.根据权利要求2的结构,其中将所述的至少一种小XPT结构用于文件映象段。4.根据权利要求3的结构,其中所述大XPT结构用于暂时存储段。5.根据权利要求4的结构,其中所述暂时存储段是页面映象的。6.根据权利要求5的结构,其中所述至少一种小XPT结构包含一个第一种小XPT结构,用于大小不超过第一预定值的文件作文件映象,而第二种小XPT结构用于对大小超过所述第一预定值的文件作文件映象。7.根据权利要求6的结构,其中每个所述大XPT结构及第二种小XPT结构包括一个根块部分和一个直接块部分,每个直接块由卷偏移量和页面状态信息构成。8.根据权利要求7的结构,包括预分配装置,用于对所述大XPT结构直接块部分预先分配空间。9.根据权利要求8的结构,其中所述预分配装置对所述直接块部分和根块部分预先分配空间,从而使所述两种直接块部分和所述根块部分的XPT都在一个存储器页面上。10.根据权利要求9的结构,其中所述大XPT结构和所述第二种XPT结构的所述直接块部分具有实质上完全相同的结构。11.根据权利要求10的结构,其中所述大XPT结构和第二种小XPT结构的所述卷偏移量和页面状态信息部分具有实质上完全相同的结构。12.根据权利要求11的结构,其中所述大XPT结构的直接块部分每个还包括一个逻辑卷标识符部分。13.根据权利要求12的结构,其中所述大XPT结构的所述卷偏移量和页面状态信息部分及所述逻辑卷标识符部分是非交错的(non-interleraved)。14.根据权利要求13的结构,其中所述第一种小XPT结构用于代码段;这里所述第二种小XPT结构用于过程专用段。15.根据权利要求14的结构,其中所述页面状态信息包括一组状态信息条目,每一个相应于所述逻辑卷标识符部分中的一个逻辑卷标识符部分;这里所述逻辑卷标识符条目与相应的所述状态信息条目相距一个预先选定的地址增量。16.一种确定虚拟存储数据结构的一部分所在位置的方法。该部分伴随有分页、分段虚拟存储系统中的相应虚拟地址。该方法的特征在于步骤产生功能上与一组不同的XPT结构布局有关的状态信息;访问所述XPT结构之一,作为所述状态信息的一项功能。17.根据权利要求16的方法,其中所述XPT结构是第一、第二和第三种结构;其中所述产生状态信息的步骤包括产生相应于所述第一、第二和第三种结构的第一、第二和第三种指示符;其中所述访问所述XPT结构的步骤包括提取所述第一、第二或第三种指示符之一;并根据所述取得的第一、第二或第三种指示符去访问相应的所述第一、第二或第三种XPT结构。18.根据权利要求17的方法,还包括以所述第一和第二种结构进行文件映象;和以第三种结构进行页面映象。19.一种用于虚拟存储器系统中的管理存储器的系统,其特征是一个第一种XPT结构装置,用于文件映象;一个第二种XPT结构装置,用于页面映象。20.根据权利要求19的系统,其中所述第一种XPT结构装置包括一个第一种小XPT结构装置,用于存储大小为第一预定值的文件;和一个第二种小XPT结构装置,用于存储大小超过所述预定值的文件。全文摘要一种虚拟存储器管理系统和方法,其中的多重外部页面表(XPT)结构布局提供了对分页、分段虚拟存储有的高效率的组织和管理。第一和第二小XPT结构分别用于预定值的文件的文件映象(供代码段及超过该预定值的文件的文件映象(供过程专用段)。大XPT结构用于包含有其享库子程序的暂时存储段。对于有根块的第二种小XPT结构和大XPT结构,采用一种统一的寻址模式访问页面状态信息。对于大XPT结构,选定的XPT结构直接块预先分配地址,以限定要访问的地址范围减小页面出错。文档编号G06F12/10GK1043402SQ8910827公开日1990年6月27日申请日期1989年11月1日优先权日1988年12月5日发明者艾伯·张,马克·道格拉斯·罗杰斯申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1