CN1016829B - 在多任务虚拟存储器虚拟计算机型数据处理系统中控制输入输出存取的方法 - Google Patents
在多任务虚拟存储器虚拟计算机型数据处理系统中控制输入输出存取的方法Info
- Publication number
- CN1016829B CN1016829B CN86108127A CN86108127A CN1016829B CN 1016829 B CN1016829 B CN 1016829B CN 86108127 A CN86108127 A CN 86108127A CN 86108127 A CN86108127 A CN 86108127A CN 1016829 B CN1016829 B CN 1016829B
- Authority
- CN
- China
- Prior art keywords
- page
- file
- virtual
- mentioned
- leaf
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
Abstract
一种用于在分页分段虚拟存储器数据处理系统中存取信息的方法,在该系统中运行UNIX型操作系统的虚拟计算机井行建立起来,并且在该系统中,存储器管理程序根据缺页的发生控制主存储器设备和辅助存储器设备之间的信息传输。
该方法根据管理程序调用以动态方式建立多个数据结构以“映射”文件。映射进程赋一个新的虚拟存储器段给映射文件,并且在一个数据结构中使在该新段中数据的每一个页面的虚拟地址与该页面实际存储所在的磁盘文件地址相关。
Description
本发明总的来说是涉及一种使用UNIX型(UNIX是A.T.&T.的商标)操作系统的多任务虚拟存储器数据处理系统,特别是涉及一种改进的方法,在该方法中,把系统处理的简单装入和存储指令,用在系统的主存储器设备和辅助存储器设备之间进行数据分页。
美国专利申请(申请日为1985年9月25日),顺序号为06/819459,以O′Quin等人的姓名共同申请,名称为“在虚拟存储器数据处理系统中执行临界码区时控制分页子系统的处理方法”,並且委托给本申请的同一代理人。该申请公开和申请权利要求为一种用于对系统事件进行逻辑串行处理的方法,该系统事件在虚拟存储器中产生页面处理,以保持记录虚拟页面和页面组织当前状态的系统数据结构的完整性。
美国专利申请(申请日为1985年9月17日),顺序号为06/819455,以Duval等人的姓名共同申请,名称为“用于对映射的文件进行写时复制段共享的方法”,並且委托给本申请的同一代理人。该申请公开和申请权利要为一种在虚拟存储器数据处理系统中共享写时复制段的方法,该系统能够生成具有UNIX型操作系统的虚拟计算机。
美国专利申请(申请日为1985年9月16日),顺序号为
819456,以Duval等人的姓名共同申请,名称为“在虚拟存储器数据处理系统中生成映射文件写扩充的方法”,並且委托给本申请的同一代理人。该申请公开和申请权利要求为一种用于生成段的扩充的方法,该段用于存储根据本申请所述的系统所生成的映射文件。
现有技术中公开了一些能够运行UNIX型操作系统的数据处理系统数据。4536837、4470115、4104718和4047244号美国专利是说明基于UNIX的数据处理系统的典型专利。
此外,还有一些出版物和手册在不同的水平上说明UNIX操作系统的结构和操作,以及基本UNIX系统的各种版本、公布材料和看起来相似的派生系统。这种出版物的典型样本如下:
1“UNIX文件系统一览”(“A Tour Through the UNIX File System”)James Joyce著,1983年10月,第170页至第182页,Byte Publications,Inc。
2.“UNIX应用环境”(“UNIX as an Application Environment”)Mark Krieger等人著,1983年10月,第209页至第214页,Byte Publications,Inc。
3.“UNIX系统调用”(“The UNIX System Calls”)Brian W.Kernighan等人著,1984年第203页至231页,Unix程序设计环境(The Unix Programming Environment)。
4.“UNIX分时:回顾”(UNIX Time-Sharing:A Rerrospective,”)D.M.Ritchie著,1977年1月,第1947页至1969页,The Bell System Techni-cal Journal,1978年7月-8月。
5.“UNIX派生系统为管理处理机系统开路”(“UNIX Variant Opens a Path to Managing Multiprocess-or Systems”)Paul Jackson著,1983年7月,第118页至124页,Electronics。
6.“UNIX-Berkeley 4.2给UNIX操作系统网络支援”(“UNIX-Berkeley 4.2 Gives UNIX Operating System Network Support”)Bill Joy著,1983年7月,第114页至118页,Electronics。
7.“UNIX指南,第一册”(“The UNIX Tutorial,Part 1”)David Fiedler著,1983年8月,第186页至第219页,Byte Publications,Inc.。
8.“UNIX指南,第二册”(“The UNIX Tutorial,Part 2”)David Fiener著,1983年11月,第257页至第278页,Byte Publications,Inc.。
UNIX文件
UNIX操作系统用来存储信息的基本结构是文件。一个文件是一串字节;而一个字节通常为8位长,相当于一个字符。UNIX在内部通过给每一个文件赋以一个独特识别编号来记录着文件。这些编号,称为inode编号,仅用于UNIX操作系统核心部分本身。当UNIX使用inode编号去引用文件时,它允许用户以用户赋给的名字去识别每一个文件。一个文件的名字可以是包含1个到14个字符的任何字符串。
在UNIX文件系统中有三种文件:(1)普通文件,它们可以是可执行程序、正文或用作输入的或由某些操作产生作为输出的其它类型的数据,(2)目录文件,它包括文件目录表,和(3)专用文件,它提供对
输入/输出(以下称为I/O)设备进行存取的标准方法。
UNIX目录
UNIX向用户提供一种编排文件的方法。文件可以归组进入目录。在内部,目录是一种文件,它包含普通文件和其它目录的名字以及它们对应的inode编号。给定一个文件的名字,UNIX就在文件目录中查找,並得到该文件对应的inode编号。用这个inode编号,UNIX可以检查其它内部表,以确定该文件存储在什么位置,並使得用户可以对它进行存取。UNIX目录本身还有自己的名子,每一个名字也都可以包含14个字符。
UNIX分级文件系统
就象目录为用户把文件归组提供一种方法一样,UNIX支援把目录归组到分级文件系统中。分级结构的最高一级是一个目录。它可以包括各个文件的名字和其它目录的名字。后面这些目录依次可以包括各个文件和又一些其它目录的名字,依此类推。因此产生文件的分级结构。UNIX文件分级结构象一棵头朝下的树,其根在顶部。各个目录分枝向外伸出,直到它们最后找到通向各个文件的通路,而这些文件就对应着树叶。UNIX文件系统被叙述成“树形结构”,有一个称为根目录的单目录在分级结构的最高一级。所有通过找到一条从根目录向下穿过目录分级结构的通路就可以达到的文件构成了该文件系统。
UNIX文件系统编排
UNIX保存大量的有关其管理的文件的信息。对于每一个文件,文件系统记录该文件的大小、位置、所有权、安全性、类型、建立时间、修改时间和存取时间。当文件生成和使用时,所有这种信息都由文件系统自动地保存。UNIX文件系统驻留在大容量存储器设
备上,如磁盘文件。这些磁盘文件可以是固定式载体,也可以是可更换式载体,它们可以是硬磁盘,也可以是软磁盘。UNIX把磁盘编排成一系列字块,这些字块组成文件系统。这些字块通常为512个字节长或2048个字节长。一个文件的内容可以存储在一个或多个字块内,这些字块广泛地散布在磁盘上。
普通文件通过inode结构进行寻址。每一个inode通过包括在一个索引表(i-list)中的索引进行寻址。索引表是根据文件系统的大小生成的;较大的文件系统通常包括较多的文件,所以就生成较大的索引表。每一个inode包含13个4字节的磁盘地址单元。直接的inode可以包含至多10个字块地址。如果文件大于10字块地址,那么第11个地址指向第一级间接字块。地址12和地址13分别用于第二级和第三级间接字块,当在直接的inode中需要每一个新的地址存储槽时,第一个数据块之前的间接寻址链增加一级。
通过读写系统调用的UNIX文件系统存取
所有输入和输出都是通过对文件读写来进行的,因为所有外围设备甚至终端在该文件系统中都是文件。在最通常的情况下,读和写文件之前,需要通过打开该文件,通知系统:你打算进行读写操作。为了写入一个文件,还可能必须生成该文件。当一个文件打开或生成时(通过“打开”或“生成”系统调用),系统检查打开或生成的权限,如果一切正常,则返回一个称为文件描述符的非负整数。(此后)每当在这个文件中进行I/O操作时,就使用该文件描述符而不使用识别该文件的名字。这个打开文件描述符与一个文件表项有关,该文件表项保存在打开该文件的用户的“进程”空间中。在UNIX术语中,术语“进程”可以与正在执行的程序互换使用。文件表项包含有
关一个打开文件的信息,包括用于该文件的inode指示字和用于该文件的文件指示字,这样就规定了要在该文件中读写的当前位置。所有有关一个打开文件的信息都由该系统保存着。
在传统的UNIX中,所有的I/O都是通过两个系统调用“读”和“写”来进行的,这两个调用取自具有相同名字功能的程序。对于这两个系统调用,第一个变元是一个文件描述符;第二个变元是一个指示字,用来指示用作数据源头或数据目的地的缓冲区;第三个变元是要传送的字节数。每一个“读”或“写”系统调用都对已传送的字节数进行计数。在读时,返回的字节数可能小于要求的字节数,这是因为有待于读的字节数小于要求的字节数。返回的值为零意味着文件的结束,而返回的值为-1则标志存在某种错误,在写时,返回的值就是实际写的字节数。如果这个数不等于预期要写的字节数,就是已经产生了错误。
“读”和“写”系统调用的参数可以由对文件进行存取的应用程序来控制。所以该应用程序必须对标准系统存储器分级结构所固有的多级存储特性敏感,並且利用这种特性。从应用程序角度来看,如果系统存储器部件可以被看做单一级层次则是很有利的。如果能真正做到这一点,应用程序则可以省去绝大多数I/O内务开销。
现有技术还公开了一些多任务虚拟存储器数据处理系统,在这些系统中把为该系统并行运行的每一种应用程序都建立一个不同的“虚拟计算机”或终端作为该系统结构的基础。在这种系统中,操作系统是在一个由虚拟资源管理程序(以下称为VRM)所建立的虚拟计算机中执行的。VRM是一组程序或进程,它们扩充了系统的处理机或微处理机以及系统的存储器管理部件,以便在虚拟计算机环境中为操作系统提供一个高级通道。
在操作系统的程序和VRM的程序之间建立一个软件接口,称为虚拟计算机接口(以下称为VMI)。因此,虚拟计算机具有一个非常高级的与机器类似的物理接口。
在大多数运行在多任务虚拟计算机环境中的现有技术的系统之中,VRM向虚拟计算机提供转换到虚拟计算机的虚拟存储器。这些现有技术虚拟存储器系统使用了各种用于管理虚拟存储器地址空间的方案。在一项著名的称为“页式分段”的技术中,虚拟存储器的全部地址区域被划分成相同大小的段。为此,虚拟地址包括两个部分:段标识符(以下称为ID)和区距。例如,虚拟地址空间包括2(4.0)个地址位置,需要一个由40位组成的虚拟地址。如果一个12位的段ID和一个28位的区距用作虚拟地址格式,则可以提供2(12)个或4096个单独的段,而每一个段具有2(28)个或256×10(9)个单独的地址位置。如果假定每一个地址位置可以存储数据的一个页面,数据的一个页面能容纳248(2K)字节,那末虚拟存储器的容量则是1兆兆个字节(2〔43〕)。
这些现有技术还采用了不同的方案来生成虚拟地址,采用哪种方案取决于系统处理机的结构。一种由具有32位有效实在存储器地址的处理机采用的技术使用高位地址位的预定编号“n”,以便从2至2(n)个段ID寄存器中选择出一个,每个寄存器都能存储具有所需长度的段ID。在上述40位虚拟地址的例子里,段寄存器具有12个级用于存储12位的段ID,该段ID与剩下的28位处理机有效实际地址并置,该实际地址提供了40位虚拟存储器的区距部分。
由VRM生成的虚拟计算机通常将定义一些存储器段,并随时与它们一道进行工作。为了在一个段内存取数据,虚拟计算机利用上述
寻址技术的实例把一个段ID装入到16个段寄存器之中。除非虚拟计算机准许对其它虚拟计算机进行存取,被虚拟计算机选择的段通常总是专用的。对段进行存取可以由虚拟计算机的操作系统来控制。
虚拟存储器系统一般采用一种缺页机制,其功能是控制系统存储器和磁盘文件之间数据的分页。这些存储器设备通常称为主存储器和辅助存储器,或称为前存储器设备和后存储器设备。分页功能在某种程度上与由应用程序运行的I/O操作相似。在某些简单分页系统中,倒会在应用程序以及操作系统控制下的文件I/O操作和分页操作之间产生冲突。例如,文件设备驱动程序可以把磁盘数据读入存储器缓冲区中,然后独立工作的分页系统可能把该新的缓冲数据又写回到该磁盘上。当文件I/O子系统和分页I/O子系统工作不协调时,随着程序的装入有可能的副本存在,在那种情况下装入程序将把一个程序从后存储器的库区段读入前存储器,而分页I/O功能在页面输出操作时又把该程序回送到一个不同的磁盘地址。
因此,重要的是数据处理系统反映了这两个相似功能之间的协调程度,並且为了达到这种协调在现有技术中已经公开了各种方案。然而,所需的协调确实对系统的性能有影响,而且当设法在使用非常大的虚拟存储器的多任务、多用户虚拟存储UNIX型环境中执行协调技术时,现有技术的协调技术就变得十分难以处理。
根据本发明的方法,建立起一种虚拟计算机环境,其中所有文件I/O操作可以被赋给存储器管理程序的缺页机制,存储器管理程序是建立该虚拟计算机的VRM的一部分。对UNIX结构文件进行UNIX读和写的系统调用被保留着,正如缺页机制所使用的传统数据结构被保留一样。用于记录在虚拟存储器和实际地址中的地址和磁盘文件上数据的实际地址位置之间对应关系的结构,如外页表,被保
存着,这就是使系统存储器中页面的虚拟地址和系统存储器实际地址相关的转换页表。
通常,由正在运行的应用程序所生成的虚拟存储器段中的数据,在执行该程序之后並不持续。
在新的方法中,虚拟存储器管理程序允许数据包括在与在虚拟计算机文件系统中的文件相关的段中,因此允许数据在执行程序之后仍然存在。这个文件数据对虚拟页面的关联是通过下文中所述及的映射的文件或文件的映射来获得的。
建立好的映射页面区域服务允许虚拟计算机具有为一个子设备生成一级存储环境的能力,例如对一个单个的文件的映射。应当注意:通常大多数操作系统,例如UNIX操作系统,都具有使应用程序通过传统的I/O系统调用对磁盘文件进行存取的能力。相反,应用程序通常不具有独立于操作系统对辅助存储器文件,例如磁盘机,进行存取的能力。另一方面,应用程序设计成操作与微处理机紧密联系通过所谓的装入和存储指令对系统存储器进行寻址。
提供映射页面区域服务以便使虚拟计算机具有为一个子设备,例如映射一个单个的文件,生成“一级存储器”环境的能力。需要这种服务是因为在虚拟计算机中执行的操作系统或VRM本身两者都不具有映射文件的能力。虚拟计算机没有对虚拟存储器管理程序(以下称为VMM)表的存取操作,並且VRM被设计成与虚拟计算机文件系统结构无关。映射页面区域服务使虚拟计算机有能力把一个逻辑实体,例如文件,和它在磁盘上的位置之间的关系告诉给VMM。
该方法进一步涉及向UNIX操作系统提供增强的功能,有选择地把文件的磁盘字块映射到一个不同的存储器段上去。映射进程动态地定义了字块的区域(一个字块包括等于2K的一个页面),对一个
给定的文件这些字块已经分配在磁盘存储器设备上。映射存储在实在存储器中,存储在赋给虚拟计算机的空间之中。
一旦映射完成,运行在虚拟计算机的程序就可以执行机器级数据存取操作,而不考虑存取操作时数据的物理位置。如果在引用时数据不在当前存储器中,就会导致缺页。基本分页系统通过引用缺页地址位置解决该缺页,即如果数据实际上被分配在辅助存储器设备上,那末这个地址位置将对应着一个辅助设备上由页面转换为该段地址规定的物理位置。段区域中的每一个虚拟地址至多在辅助设备上具有一个物理数据位置。相反,辅助设备上的每一个物理数据位置可以由2048个单独的段地址来引用。一个页面和一个字块之间关系的逻辑和物理范围就是规定了上述关系的内容。那末可以把地址说明在字节这一级看成是离散的,但对于实际辅助设备位置总是舍入到第一个2K边界。
对操作系统的“核心”的增强以“映射可执行”的形式实现映射页面区域支援。当装大一个程序时,核心把程序的磁盘字块映射到特定的虚拟存储正文和数据段上。在UNIX术语中,“正文”是固定的程序部分,而可变化的数据,例如表和常数,则称为“数据”。核心执行很少的物理I/O去装入程序。在程序中文件头是由核心读出的。当执行程序时,所有其余的磁盘I/O都是请求分页。对于大的程序来说这一点会产生显著的性能提高,如果没有映射页面区域支援,该程序就必须全部读入存储器中,又可能由分页管理程序分页调出。
这种映射文件支援由一个对于页面区域设备的系统调用接口组成。现有技术UNIX系统调用“Shmat”已经修改为包括一个根据本方法在Shmat系统调用中可以指定的标记位。当指定了SHM-
MAP标记时,与指定的打开文件描述符有关的数据文件被映射到调用进程的地址空间。当文件映射成功时,就返回映射文件的段起始地址。要进行映射的数据文件必须是保存在辅助存储器设备中的正规文件。可以由“Shmat”系统调用提供任选标志以便规定文件是怎样被映射的。文件映射所使用的不同方式一般与从基本UNIX系统中能得到的方式相对应,即只读、只写和写时复制(SHM-COPY)。
所有映射同一文件(只读或读写)的进程,都映射到同一个虚拟存储器段。该段保持的状态,直到最后的映射该文件的进程关闭它。所有写时复制方式映射同一文件的进程都映射到同一个写时复制段。写时复制段的改变不会影响保存在文件系统中文件的存储信息,直到由用户通过发出一个称为“fsync”的专用命令特定地要求去那样做。如果进程请求对文件进行写时复制映射,而写时复制段还不存在,这时可以生成这个段,並且该段将保存下来共享,直到附属于它的最后的进程通过一个关闭系统调用把它分离开,这时该段就消失了。此后对同一文件进行写时复制映射的请求将产生一个新的为该文件生成的段。
一个文件描述符只能使用一次去映射对应的文件。一个文件可以通过使用多个文件描述符(由多个“打开”系统调用产生)被多次映射,但是,一个文件不可能同时被一个或多个用户既读写、又写时复制映射。
如上所述,当一个文件被映射到一个段上时,该文件可以直接通过用装入和存储指令存取该段以实现引用。虚拟存储器分页系统自动地管理物理I/O。但是,超过文件结束之外的引用使该文件以页面大小,即2K,为增量进行扩充。对于映射的文件引用,一般系统流程被叙述为如下情况:应用程序想引用一个当前不在存储器里的文
件的数据区。该引用产生存储缺页,正在运行应用程序的进程被放置在等待级。VRM把存储器中的一个页面分配给新的数据。由映射文件服务功能早先生成的文件映射,VRM接着确定数据保存在磁盘上的物理地址。起动I/O操作被启动到磁盘,磁盘转接器从文件为存储器位置提供2K字节数据块,向虚拟计算机,即UNIX核心,发出中断,虚拟计算机进行上下文选样以允许操作系统进行控制。进程成为可调度的,然后操作系统向VRM返回控制,这就可以再调度该进程。
除了对映射文件的系统调用之外,映射文件功能还允许借助映射文件段使用对文件的其它UNIX型功能调用。
因此,本发明的一个目的是在虚拟计算机中提供一种改进的方法,即在使用UNIX型操作系统的虚拟存储器型数据处理之中控制文件的I/O操作。
本发明的另一个目的是提供一种改进的方法,该方法允许应用程序运行在具有虚拟存储器的虚拟计算机中,以便即使在存储器子系统中另有前存储器和后存储器型存储器设备的情况下,也可以对存储器按单级存储器进行寻址。
本发明更进一步的目的是提供一种改进的方法用于虚拟计算机、虚拟存储器和以UNIX为基础的数据处理系统,在该方法中使用存储器管理程序的缺页机制解决缺页,缺页是在由运行在虚拟计算机的应用程序发出的输入和存储指令对系统存储器进行寻址时产生的。
通过结合附图阅读下面的说明就可以明显地看出上述以外的其它目的和优点。
图1是虚拟存储器系统的示意图,在该系统中可以有利地使用本发明的方法。
图2示出了图1中所示的VRM和数据处理系统以及虚拟计算机之间的相互关系。
图3示出了用于图1中所示系统的虚拟存储器模型。
图4示意地示出了图1中所示系统的地址转换功能。
图5示出了图1中所示系统中使用的一些数据结构之间的相互关系。
图6示出了一些数据结构与VRM、虚拟存储器以及实在存储器之间的相互关系。
图7a至图7c是流程图,示出了本发明所对应的各种UNIX系统调用在对文件进行映射和寻址时所涉及的各种步骤。
系统概述:图1是使用了本发明方法的虚拟存储器示意图。如图1所示,系统包括硬件部分10和软件部分或程序部分11。如图所示,硬件部分10包括处理机功能部件12、存储器管理功能部件13、系统存储器功能部件或RAM14、系统总线15、I/O通道控制器(以下称为IOCC)16和I/O总线21。硬件部分还进一步包括一组通过IOCC16连接到I/O总线21上的I/O设备,其中包括磁盘存储器功能部件17、显示功能部件18、副处理机功能部件19和框20,该框表示其它例如键盘或鼠标器型等I/O设备。
系统的程序部分包括要运行在该系统中的应用程序22、一组应用开发程序或工具23-用来辅助开发新的应用程序、操作系统核心24,例如它可以是UNIX系统V核心的扩充,和VRM25。该VRM的功能是允许生成一些虚拟计算机,这些计算机的每一个都运行着各不相同的操作系统,但它们却共享系统的资源。因此,该系统可以在多任务和多用户环境中工作,这是需要大虚拟存储器型存储
系统的主要原因之一。
图2示出了VRM25与系统的其它部分之间的相互关系。如图2所示,一个虚拟计算机包括一个或多个应用程序,例如22A-22C,和至少一个操作系统30。在虚拟计算机和VRM25之间设立虚拟计算机接口31。还在VRM25和硬件部分10之间设立硬件接口32。VRM25支援虚拟存储器。为了解释,可以设想图1中所示的硬件的存储器容量包括系统存储器14的24位地址空间,这等于存储器14的16兆字节容量,和虚拟存储器的40位地址空间,这等于存储器的1兆兆字节。页式分段技术由存储器管理部件13实现,以致总的虚拟地址空间被划分成4096个存储器段,每一个存储器段都占有256兆字节。
图3示出了虚拟存储器模型。处理机12提供例如由应用程序规定的32位有效地址。32位地址中的高位4位的功能是从位于存储器管理部件(以下称为MMU)13的16个段寄存器中选择出1个。每个段寄存器包括1个12位的段ID节以及其它特定控制型位。这12位段ID和其余的28位初始有效地址并置,为系统提供40位虚拟地址。40位虚拟地址接着被转换成24位实际地址,这样用来对系统存储器14进行寻址。
MMU13使用转换后备存储器缓冲器(以下称为TLB)来存储最近使用的虚拟地址的转换。当新的虚拟地址送到TLB进行转换时,硬件被用来自动地更新来自主存储器页面表的TLB表项。
图4示意地示出了TLB的再装入功能。
如图4所示,40位虚拟地址通过把它们从转换页表(以下称为IPT)中查找出来被装入到TLB中。因为表包括每一个实在存储器页面的一个表项,而不是每一个虚拟页面的一个表目,所以该表是
“转换的”。因此,需要实在存储器的一个固定部分用于IPT,而与进程或支援的虚拟段的数量无关。为了转换地址,一种散列函数用于虚拟页面编号(40位虚拟地址的高位部分,除去页面区距),以便获得对散列锚表(以下称为HAT)的索引。每一个HAT表项指向一链具有相同散列值的IPT表项。对该散列链的线性检索产生IPT表项,因此就产生对应原始40位虚拟地址的实际页面编号。如果找不到这个表项,那末虚拟页面就不被变换到该系统中,並引起缺页中断。
缺页处理程序(以下称为PFH)的功能是把实在存储器赋给引用的虚拟页面,並执行必要的I/O把所需的数据传输到实在存储器中。因此,该系统是一个请求式页面调度系统。
当实在存储器已经存满时,PFH还负责选择哪一个数据页面应被页出。选择是采用一种适当的算法,例如时钟页面置换算法,来完成的,在什么位置页面要置换是根据该页最后一次使用或引用的时间。页面被传输出去到磁盘存储器上。
虚拟存储器管理程序的数据结构:VRM数据结构的特性说明如下。
段表:段表(SIDTABLE)包括描述现役段的信息。该表具有如下特性:该表固定在实在存储器中,其大小是预定的。在存储器中它必须是字对准的,並且该段表必须在分页子系统临界区变更。
外页表:外页表(以下称为XPT)描述页面是如何映射到磁盘上的。对于每一个规定的虚拟存储器页面都有一个XPT表目。当段生成时,该段的XPT表目分配成连续的表项。对于一个小段,即小于1兆字节的段,XPT表项不会跨越XPT页面边界。对于一个大段,即大于1兆字节的段,XPT要在XPT页面的始端对准。XPT
表项以32个表项为单位进行分配,它们将映射65536(64K)虚拟存储器字节。每一表项需要4个字节。该表具有如下特性:仅有XPT根表目必须固定在存储器中,其大小是预定的,而且它必须是字对准的。虚拟页面编号是进入XPT表的索引。XPT必须仅在分页子系统临界区变更。
转换页表:如上所述,转换页表(IPT)描述虚拟地址和实际地址之间的关系。IPT由两个数组组成:第一个数组由存储器管理部件规定,並且包括控制转换功能的信息;第二个数组包括分页子系统页面状态信息,用来控制缺页处理。第二个数组具有如下特性:它是固定的,並且其大小是由在初始程序装入时间(以下称为IPL)设置的实在存储器大小来确定的。根据实在存储器的大小把它对准。实际页面编号是进入IPT的索引。和上述的结构一样,它必须在分页子系统临界区变更。每一个实际页面组织都在IPT中有一个表项。所有页面都在三个表中的一个上。
对每一个有效段都有一个主表。它被双链结合和锚定在段控制程序块中。这个表与用有效虚拟地址对该段赋值的所有页面组织相互连接,对于该有效虚拟地址可以有一个有效转换后备存储器缓冲器(TLB)表项。
有一个全系统的自由表与可以被重新赋值的页面组织相互连结。这个双链结合的循环表锚定在用于页面1的IPT表项中。在这个表中的页面没有有效的TLB表项,对它们进行存取总是会引起缺页。页面可以同时在主表和自由表。这样做是为了不检索自由表就可以把该页面释放出。未命名的(未散列的)页面放在该表的头部,命名的(散列的)页面放在该表的尾部。
有一个全系统的I/O表与当前正在被读出或写到磁盘的所有页
面相互连结。这个双链结合的循环表锚定在用于页面2的IPT表项中。在这个表中的页面没有有效的TLB表目,对它们进行存取也会引起缺页。必须只有一个页面I/O表,以保证即使执行非先进先出磁盘调度,I/O也仍由字块先进先出地进行处理。
通知控制块:通知控制块(以下称为NCB)包括所需的信息把异步分页请求的完成通知虚拟计算机。异步请求可以是清除页面区域服务调用(以下称为SVC),当允许存在异步肯定时也可以是缺页。NCB是在系统控制块区域中的自描述控制块。它的标识符字段可以用于在系统控制块区域中把它同其它类型的控制块区分开。因为NCB是作为进程块(以下称为PCB)在同一个表上排队的,所以需要上述的区分。需要时可以把NCB固定和分配在系统控制块区域中。和上述的结构一样,它必须在分页子系统临界区变更。NCB仅在缺页处理程序执行代表进程的一个功能时分配,因此不会由于系统控制块不足而引起系统异常终止。
缺页等待表:虚拟存储器管理程序可以把内部计算机或虚拟计算机的进程放置在三个循环等待表之一中。
对于系统中的每一个组织有一个页面I/O等待表。页面I/O等待表锚定在页面IPT表目中,並且与同步等待I/O去完成该页面的进程的进程控制块(以下称为PCB)以及异步等待I/O完成通知的进程的NCB相互连接。当它用进程中的I/O回收页面或作为缺页的结果启动页面时,一个进程被放置入页面I/O等待表中。
有一个全系统的自由页面组织等待表。它和用于正在等待自由页面组织的进程的PCB或NCB相互连接。该表以先进先出的方式进行处理。当它需要一个自由页面座标而又不能得到时,一个进程被放置入该表中。进程的PCB在该表上排队用于同步等待,而NCB在
该表上排队用于异步等待。最后,还有一个全系统的页面I/O等待表。它与用于进程的PCB或NCB相互连接,这些进程正在等待低于或等于一个具体页面I/O级的所有页面输出I/O。该表通过一个页面I/O级存储。通过几个虚拟存储器管理程序服务调用把一个进程放置入该表中,以确保磁盘的存储信息与存储器中的存储信息符合。PCB在该表上排队用于同步请求,或NCB在该表上排队用于异步请求。注意在使用非先进先出磁盘调度时,该页面I/O级可能导致进程等待长于所需的时间。
分页小磁盘表:分页小磁盘表控制把虚拟存储器管理程序存储槽编号转换成小磁盘I/O设备编号(以下称为IODN)和逻辑字块编号。该表中的表项编号规定了虚拟存储器管理程序可以对其执行分页操作的小磁盘的最大编号。该数组具有如下特性。它是固定的,其大小是预定的,並且它是字对准的。分页空间小磁盘表目是在系统初始化时分配的,並且必须是该表的第一个或第一批表项。映射页面区域服务调用为分页的小磁盘分配表项。磁盘地址的最高位是进入该表的索引。如在上述数据结构中一样,它必须仅在虚拟存储器管理程序临界区变更。
磁盘分配位图:虚拟存储器管理程序为每一个分页空间小磁盘保存一个位图。每一个位指出其页面是分配了还是自由的。当在系统初始化时小磁盘打开着时,坏的存储槽就标记为已经分配了。该数组具有如下特性。它不是可分页的,分页空间在页面输出时分配,磁盘地址的最低位是进入该数组的索引。如在上述结构中一样,它必须仅在虚拟存储器管理程序临界区变更。
分页设备扩充:对于虚拟存储器管理程序支援的每一个分页空间都有一个分页设备扩充(以下称为PDX)。PDX是对分页小磁盘
表中一个分页空间表项的扩充。虚拟存储器管理程序管理分页空间,PDX则用于对它在该项管理中进行指导。PDX的特性是:它是固定的,並且在系统初始化时由系统控制程序块区域分配。它在一个表中互相连接,並且由一个全局指示字锚定。如上述结构一样,它必须仅在虚拟存储器管理程序临界区变更。PDX不是动态地分配。系统的初始化分配所有的PDX,並把它们初始化。
缺页处理:同步缺页处理是传统型缺页处理。在该操作中,缺页处理进程被强制等待直到需要去解决该缺页的I/O完成。虚拟存储器管理程序在每一个I/O请求完成时重新启动该进程。当重新调度时,该进程或者缺页,在这种情况下将调度附加的I/O去解决该缺页,或者对接收“缺页清除”机器通信中断的虚拟计算机不分页,以致它可以把其缺页任务回送到它的就绪任务表中。对于虚拟计算机的执行,这样就允许异步地处理缺页。虚拟计算机可以通过禁止缺页通知来强制进行同步缺页处理。应该注意缺页清除中断是不能由虚拟计算机直接禁止的。缺页清除中断总是在对导致产生中断的缺页的I/O完成时给出。通过禁止产生中断的缺页可以间接地禁止缺页清除中断。
同步缺页处理:对于同步缺页,当需要I/O时,缺页处理的进程控制块(PCB)或者被放置在页面I/O等待表中,或者被放置在自由页面组织表中。当虚拟存储器管理程序为该页面启动I/O时或用于该页面的I/O已经在进行中时,该进程被放置在页面I/O等待表中。当得不到执行该I/O进入的自由页面组织时,该进程被放置到自由页面组织表中。
异步缺页处理:当发生异步缺页时,就把缺页的段ID通知正缺页的虚拟计算机,並把虚拟地址下舍入成最接近的页面边界。重要的
是要注意给出的通知不是关于虚拟计算机缺页的地址,而是页面。例如,如果虚拟计算机在地址X‘806’、X‘856’和X‘87E’缺页,它将得到三个对于X‘800’的缺页通知,和一个对于X‘800’的缺页清除通知。当需要I/O时,通知控制块(NCB)被分配和链接到页面I/O等待表中。这个链与PCB链接的链相同。PCB和NCB是分类的,所以可以把它们区分开来。PCB链接用于同步出错,而NCB链接用于异步出错。
如果由于外页表上的缺页(不是原来的)而给出通知,那末通知控制块的链接从XPT被分页进入的IPT上断开,但是原来缺页的地址留在通知控制块中。
自由组织等待表的情况是一种特殊的情况。虚拟计算机被通知,其通知控制块与PCB一道先进先出地链接到自由组织等待表上。当这个NCB在自由组织等待表的头部时引起组织自由上升的第一个页面淘汰将导致给出通知。
缺页发生通知:通过缺页处理程序在确定异步缺页已经发生并且需要I/O时产生缺页中断。不需要内部VRM排队单元去执行这一功能。缺页处理程序实际上去交换虚拟计算机的PSB和执行级。允许这样做的前提是在机器通信或程序校验级上的缺页不用通知就被同步处理。这就意味着:因为虚拟计算机总是可以接收缺页中断,所以中断不需要排队。
缺页清除通知:当用于缺页的I/O完成时,将调用虚拟存储器管理程序将其清除。缺页完成中断通过VRM排队管理功能部件被排队到虚拟计算机。这就意味着需要一个排队单元。通知控制块就用于该功能。
异步缺页面出错情况:当每一个缺页产生的I/O完成时,就认
为该缺页完成了。对于一个有n个I/O才能满足其需要的缺页,虚拟计算机总共将得到n个缺页中断和n个缺页完成中断。例如(这里设n=3):假定虚拟计算机在存在的一个负面上异步缺页(但该页不在存储器中),在存储器中没有把它分页进入的自由组织,虚拟存储器管理程序在用于原来页面的XPT上缺页。下列是事件的顺序(注意这种情况不是典型情况):
1.VM(虚拟存储器)缺页
2.VMM排队页面出请求建立自由页面组织表
3.VMM把原始缺页通知虚拟计算机
4.VM被调度(可以假定它将任务转移或等待)
5.页出I/O完成
6.VMM把原始缺页已经解决的情况通知虚拟计算机
7.VM被调度
8.VM又在相同地址上缺页
9.VMM在XPT上缺页
10.VMM请求该XPT,排队等页面
11.VMM把原始缺页通知虚拟计算机
12.VM被调度(可以假定它将任务转移或等待)
13.XPT页面输入I/O完成
14.VMM把原始缺页已经解决的情况通知虚拟计算机
15.VM被调度
16.VM又在相同地址上缺页
17.VMM请求已缺的页面,排队等页面
18.VMM把缺页通知虚拟计算机
19.VM被调度(可以假定它将任务转移或等待)
20.页面输入I/O完成
21.VMM把原始缺页已经解决的情况通知虚拟计算机
22.VM被调度
清除页面区域通知:这是系统中从虚拟存储器管理程序得到I/O完成通知的另一种方式。这在清除页面之特权命令(SVC)取“强制写”选择时发生。当用于清除的I/O的完成时,一个机器通信中断送到虚拟计算机。象缺页完成中断一样,这种中断送到虚拟计算机,而与虚拟计算机是否允许缺页通知无关。
它的工作方式是NCB与PCB链接到页面I/O级等待表上。标记在NCB中的页面I/O级必须在清除I/O能被认为是完成之前获得。当得到该页面I/O级时,将通知虚拟计算机。
缺页处理程序:缺页处理程序的一个大的功能,即它处理同步和异步缺页的方式,已经在“缺页处理”中讨论了。在下节中,在做出例如“缺页程序被通知”的叙述的地方,这意味着按照上述的规则,如果缺页程序异步缺页,它被通知,否则它就没有准备。本节说明了缺页处理程序为解决缺页所要进行的实际处理。
缺页处理程序作为程序校验处理程序的扩充,处在低于所有中断设备的一个较低的中断级上运行。它运行在一种回溯状态,因此允许它在虚拟存储器管理程序数据结构上进行缺页处理。
当缺页处理程序进入系统时,它立即保存有关缺页的信息,例如虚拟地址。它这样做的原因是如果缺页是在其本身内部,並且需要进行I/O,则缺页处理程序必须知道为异步通知要把什么地址提供给虚拟计算机。这就意味着:在由于缺页而该缺页处理程序已经被淘汰和它重新被调用去对其本身缺页服务之间,不允许有缺页。
缺页处理程序可以划分成为下列几个重要步骤:
-页面回收
如果该页面可以被回收,那末缺页处理程序就完成了。如果页入或页面的I/O正在对该页面的处理中,那么缺页程序就被链接到页面I/O等待表上。当I/O的完成时,要进行一项测试去看看是否有任何进程正在该组织上等待,並且如果有的话,它就被通知。因此,回收在整个缺页处理程序和缺页结束期间被分开。如果该页面在自由表上,那么在该页面组织可以存取之后重新调度缺页程序。不通知该缺页程序或不强制该缺页程序去等待。
-建立自由页面表
如果发现自由表低于一个较低的阈值,则启动页出把它建立到一个较高的阈值。这些阈值是系统调整参数。如果在设法补充自由表后它还是空的话,那么就把原始出错通知给缺页程序。
具有第二次尝试的时钟是用于选择要被置换的页面的技术。
-处理该缺页
缺页处理程序本身涉及大多数虚拟存储器管理程序的结构,但非常重要的是它检测用于该缺页的XPT,因为缺页处理程序可能在这时也缺页。它还为该页面分配一个分页空间磁盘存储槽。
缺页结束:这个过程为虚拟存储器管理程序处理所有I/O完成中断。当硬文件设备驱动程序对虚拟存储器管理程序请求解除排队时,就通过排队管理程序调度该过程去执行。注意这个例行程序的执行被延迟直到任务抢先的虚拟存储器管理程序临界区的完成。根据设置在“缺页处理”中的规则,该过程给出缺页清除通知。这个过程可能不缺页,因此,不允许对XPT或其它可分页的数据结构进行引用。虚拟存储器管理程序可以完成两种类型I/O:
-页入
-页出
所有在该组织等待的进程都是准备好的或被通知的。並且页面I/O级被更新。这是对所有已经完成的I/O操作的计数。当最旧的I/O操作完成时,所有等待在一个低于或等于更新页面I/O级的页面I/O级上的进程都准备好並被通知。通过确认一个未释放页面的回收页出之完成和所有页入之完成的IPT特征字,使该组织变为可以存取。否则,该组织被放置在自由表上。
当自由系统控制块的数量低于其较高的阈值,並且存在自由组织时,该过程设法补充系统控制块区域。然后所有在一个自由系统控制块上等待的进程都准备好。该过程还负责唤醒等待自由组织的进程。一个自由组织被赋给那个一直等待自由组织时间最长的进程。然后该进程就被通知或准备好。
分页空间:虚拟存储器管理程序支援对一个或多个分页空间的分页。当前支援的唯一分页设备是一个硬文件,然而,在这方面为了将来扩充已经进行了比较灵活的设计。对所有分页空间的要求是它们应该被格式化为512字节的字块。
分页空间初始化:在系统初始化时所有分页空间对于虚拟存储器管理程序来说都必须是已知的。如果用户使用小磁盘管理程序生成一个分页空间,那么,在虚拟存储器管理程序对它进行分页之前,该系统必须被重新IPL或重新初始化。这样做的原因是:虚拟存储器管理程序分页空间数据结构仅能在系统初始化时建立起来。所有分页空间和磁盘分配位图都是在小磁盘管理程序初始化时建立的。小磁盘管理程序询问所有小磁盘,並且当它发现分页空间小磁盘时,它调用一个有效地对VMM“规定”分页空间的例行程序。在调用该规定分页空间例行程序之前,小磁盘管理程序打开分页小磁盘(它将处于打开
状态)。规定分页空间例行程序的工作方式如下:
1.为分页空间分配一个PDX。
2.使该PDX初始化。
3.使分页小磁盘表初始化。
4.把新的PDX插入到所有现存的PDX的连接表上。
5.使每一个PDX都指向其分页小磁盘表的表项,反之亦然。
6.建立磁盘分配位图(用于该分页空间的临时盘图)。
有一个磁盘分配位图,它在所有分页空向中被分块。具有一个位图而不是多个位图的原因是通过把分页空间压入一个位图,将改善对该位图集中引用。用于该位图的XPT是这样建立的,以致该位图初始都是逻辑零。如果一个分页空间不是64K的倍数,那么系统初始化就把其大小上舍入到邻接的64K边界,並且同时标记该字块(位)为已经分配。这就需要系统初始化有能力在这个时间去接收第一次缺页。
规定分页空间之后,小磁盘管理程序校验分页空间上的坏字块。如果发现一个坏分页空间字块,小磁盘管理程序将调用一个例行程序,在虚拟存储器管理程序临时磁盘图中标记该坏分页空间为已分配。这样,虚拟存储器管理程序将永久不会使用它们。然后小磁盘管理程序将在未来在分页空间上进行坏字块的重新分配。
分页空间管理程序:分页磁盘字块在每个分页空间以循环方式一次一个地进行分配。一个指示字保持指向在每一个分页空间中分配的最后位置。在那个特定分页空间中的下一个分配时,对一个空存储槽的检索在最后被分配的存储槽启动,並且增量地通过分页空间(在结束时绕回)。以这种方式分配的设想是改善页面输出仿射性和负面提前。通过分页空间的循环指示字可以被看成是指向该分页空间的“最
旧”点,或换句话说,该点在最长的时间以前就已经被写出了。磁盘存储槽现在将成为自由(因为它是在很早以前分配的),这是合理的可能性。所有磁盘存储槽在页出时被分配,所以如果大清除页面区域完成,产生大量同时要被分配的存储槽,这将把它们分配得互相靠近。这是假设清除将要进行,以页出特定进程的工作区或虚拟计算机中的实体。当该进程重新成为活动态时,其工作区在磁盘上互相靠近,极小化磁臂的运动,並且极大化页面提前效率。
存在多于一个分页空间时,它们每一个都分别相当于如上所述的情况。虚拟存储器管理程序之磁盘分配将决定哪一个分页小磁盘去分配一个字块。磁盘调度程序将记录磁盘臂(大约)在什么位置。通过设法在对于所有磁盘来说其最后分配点是最接近磁盘臂位置的分页空间上进行分配,虚拟存储器管理程序利用这个程序。
虚拟存储器管理程序SVC:虚拟存储管理程序SVC都是作为虚拟计算机的扩充来执行的。这些SVC可以产生显式I/O,例如清除的页面的页出,或隐式I/O,例如代码、块或数据的缺页。所有同步SVC的I/O都把虚拟计算机设置在同步缺页等待状态,直到该I/O完成。只有异步SVC的隐式I/O才把虚拟计算机设置在同步缺页等待状态直到该I/O完成。显式I/O将被启动,並且在完成时通知虚拟计算机。
专用程序校验错误处理:虚拟计算机执行代码时产生的程序校验错误,通过程序校验虚拟中断,报告给该虚拟计算机。在VRM中执行时产生的程序校验错误将导致异常系统终止。VRM SVC在VRM之中执行,並代表虚拟计算机完成功能。因此,程序校验处理程序检查在低存储器中的值,以便确定在VRM SVC代码中产生的错误是否通过旧的IAR区分SVC作为程序校验虚拟中断向虚拟计算机
报告,或错误是否是异常系统终止。
被选择的VMM SVC和用这种功能在存取参数表时不校验错误条件去节省通路长度。程序校验处理程序为它们完成错误校正。
虚拟存储器管理程序服务:所有虚拟存储器管理程序服务都根据调用程序同步执行。这些服务中的几个可能导致缺页,在那种情况下该调用程序的进程被强制等待该缺页的解决。
异步和同步缺页:对于虚拟计算机,VRM既支援同步、又支援异步缺页处理。采用同步缺页处理,整个虚拟计算机被强制等待,直到该缺页得到解决采用异步缺页处理,则允许虚拟计算机去调度其它任务。只有缺页的任务才被强制等待,直到该缺页得到解决。因此,任何导致同步缺页处理的操作将势必使可以执行的并行任务的数量减少,而任何导致异步缺页处理的操作将势必使可以执行的并行任务的数量达到最大限度。
图6中示出了两个与体现本发明方法的映射页面区域服务单独相关的附加数据结构。第一个数据结构是节点70,它是当一个文件被时动态生成的,和映射文件页面结构71,它象前面讨论的外页表(XPT)的一般格式。
图6中所示的映射节点70包括标志着72-75的四个区段。区段72被指定为段ID,其功能是存储为了存储映射文件要使用的段ID。区段标志73是映射计数区段,其功能是记录已经并行请求映射的而不是写时复制型映射的文件的用户的数量。映射节点70的区段74被指定为CW段ID或写时复制段ID,它标识专门用于写时复制段的唯一的段ID。区段75是写时复制映射计数区段,其功能是记录正在共享写时复制段的用户的数量。
数据结构80是段表的一个专用节,用于存储正在被不止一个用
户共享的段ID段。
映射文件页面结构71与XPT相似,其中对于每一个映射文件页面,均含一表项。如图6所示,表项包括一个保护区段81、一个页面状态区段82和一个磁盘地址区段83。在图6中用图表示出,映射文件页面结构是从XPT库86分配的。
标号90的虚线框表示虚拟存储器。通过段寄存器可以存取的存储器段标志为91,而一个段的页面由标记符号92标志。
框95表示一个在系统中运行的进程。框96表示一个用于与正在运行进程有关段的段ID表。当在系统中轮到进程“n”时,这些ID就都装入到适当的段寄存器中去。如在本申请中前面已述,一个由12位段ID和28位区距组成的40位虚拟地址,是由32位有效地址转换而来的。12位段ID是由通过该32位有效地址的4个高位选择的16位段寄存器中的一个来提供。
图6中示出,VRM包括一个缺页处理程序,它包括分别由框97和框98表示的两种单独的功能。框97的功能是对系统存储器进行寻址,並且当请求的页面不在主存储器中时向框98提供缺页中断。如上所述,由于在区段83中映射文件页面结构包括了磁盘地址,所以框98的功能是通过对映射文件页面结构进行存取以解决缺页。
图7a是流程图,图中示出了当应用程序进程“n”执行各种UNIX系统调用时该系统涉及的主要步骤。在框100中第一个系统调用是打开一个文件。框101执行打开文件操作。文件可以以读写文件、只读文件或只写文件的方式打开。框102的功能是把inode从由UNIX文件管理系统保存的目录引用表103中读入主存储器。
假定文件已经被打开,下一个系统调用是对框104的SHMAT(2)只读调用。框105确定该文件当前是否通过引用段表被映射了。如果该段当前没有被映射,进行在框106中的测试去检查该段是否已经生成。如果该段还未生成,框107则生成该段。框108的功能是在段计数区段对引用计数进行增量。框109的功能是获得段ID,而框110装入段寄存器。如果由框111确定该段当前已被映射,则该读系统调用的寻址操作就完成了。如果该文件当前未被映射,映射页面区域服务调用则启动,以映射通过文件的外页表指示的系统中现役页面的区域。图6中示出,框112的功能是生成映射节点70和映射文件页面构件71。
如在框121中所示,由框120表示的实际读操作进行校验以检查该文件是否被映射。如果该文件没有被映射,框122进行标准读操作。对于写操作通过框123来进行相似的操作。
对于读操作或写操作,当文件被映射时,框124把UNIX系统调用参数中的该文件区距和长度参数转换成一个段和区距参数。如果该系统调用是用于写时复制操作或读写操作,框125就从共享段表中得到段寄存器ID用于I/O操作。框126测试以检查是否包含有一个写操作,如果包含写操作,在框127中就在磁盘文件上分配一个新的字块。如果没有包含写操作,就越过框127,並且由框128产生一个在磁盘和主存储器之间的副本。框129接着重新调度该进程。
图7b中示出了由框130指示的执行SHMAT读写系统调用的进程A。框131测试去检查对于读写操作该文件当前是否被映射。如果未被映射,框132测试以检查该段是否存在。如果该段不存在,框133为映射文件生成一个存储器段,而对于该映射文件框134
获得段ID並且框135把该段ID装入段寄存器。框136测试以检查文件是否被映射,如果被映射,该功能就完成了。如果该文件当前未被映射读写,框137的映射页面区域服务执行页面映射以生成图6中的数据结构70和71。
在图7c中示出了通过映射页面区域服务框112或框137执行的主要步骤。在段生成以后,文件必须被映射到该段中。因为主存储器分配是虚拟的,並且段赋值是暂态的,所以这是一种动态操作。如图7c中所示,为了得到该文件要分配的每一个页面的字块地址,去读inode结构181。把每一组连续分配的字块总计,並把计数记录在映射页面区域结构中相邻起始字块第二个表项的区段中。不连续的字块反映在映射页面区域结构的离散表项中。当整个文件inode结构被扫描时,发出映射页面区域SVC,並用该文件每一页面的字块地址更新用于相应段的外页表存储槽表目。
当本发明已经被陈述並参照一个详细的实施方案加以说明时,那些本领域的技术人员应能理解无须离开本发明的精神和附上的权利要求的范围就可以作出变动和改进。
Claims (6)
1、一种用于具有一个分页分段型虚拟存储器和一个用于建立虚拟计算机的虚拟资源管理程序的虚拟存储器数据处理系统的方法,该虚拟计算机能够运行至少一个UNIX型操作系统,其中包括用于对存储在磁盘文件上的信息进行输入输出操作的UNIX型系统调用,上述虚拟资源管理程序包括一个具有一个用于解决缺页的管理程序的存储器管理程序,在通过一个正在由虚拟计算机执行的应用程序为了一个上述存储的虚拟页面对上述系统的主存储器进行寻址,並且上述系统是可操作的,以便还根据对上述磁盘文件的UNIX系统调用去执行所有输入输出磁盘操作时发生该页面缺页,该方法以下列步骤为其特征:
1)生成一个第一数据结构,该结构对于数据的每一个虚拟页面具有一个表项,该表项具有一个虚拟存储器地址和一个信息实际存放的磁盘文件地址,每一个上述表项至少包括一个磁盘文件地址区段和一个页面编号区段;
2)生成一个第二数据结构,该结构包括一个段标识符区段,该标识符区段的功能是标识上述第一数据结构存储位置的段地址;
3)在上述UNIX文件的inode数据结构中记录一个对上述第二数据结构的指示字,动态生成的上述指示字和上述数据结构是作为UNIX型操作系统核心的一部分的一个映射页面区域服务例行程序。
2、权利要求1所述的方法,其进一步特征是:选择性地发出映射页面区域管理程序调用以映射一个指定文件的步骤。
3、权利要求2所述的方法,其进一步特征是:在上述系统调用的数据结构中通过提供一个独特的标记位改进传统UNIX SHMAT型系统调用,並且当上述标记位被上述系统检测出时执行上述映射页面区域管理程序调用的步骤。
4、权利要求3所述的方法,其进一步特征是:在上述SHMAT型系统调用中指定用于映射上述文件的模式,並且在上述文件被映射时在上述第二数据结构中存储该指定模式的步骤。
5、权利要求2所述的方法,其进一步特征是:读要被映射的文件的UNIX inode数据结构,以便确定与上述要被映射文件的虚拟页面有关的磁盘字块位置,並且在上述第二数据结构中存储上述信息的步骤。
6、权利要求5所述的方法,其进一步特征是:根据从上述读inode结构的步骤中得到的数据,在上述第一数据结构的上述磁盘文件地址区段写定位数据的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US819,458 | 1986-01-16 | ||
US06/819,458 US4742447A (en) | 1986-01-16 | 1986-01-16 | Method to control I/O accesses in a multi-tasking virtual memory virtual machine type data processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN86108127A CN86108127A (zh) | 1987-07-29 |
CN1016829B true CN1016829B (zh) | 1992-05-27 |
Family
ID=25228218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN86108127A Expired CN1016829B (zh) | 1986-01-16 | 1986-11-29 | 在多任务虚拟存储器虚拟计算机型数据处理系统中控制输入输出存取的方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US4742447A (zh) |
EP (1) | EP0229691A3 (zh) |
JP (1) | JPS62165251A (zh) |
KR (1) | KR920005853B1 (zh) |
CN (1) | CN1016829B (zh) |
BR (1) | BR8606308A (zh) |
CA (1) | CA1266531A (zh) |
Families Citing this family (126)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4763244A (en) * | 1986-01-15 | 1988-08-09 | Motorola, Inc. | Paged memory management unit capable of selectively supporting multiple address spaces |
JPH0821009B2 (ja) * | 1986-09-22 | 1996-03-04 | 日本電気株式会社 | チャネル制御装置のイニシャライズ方法及びそのイニシャライズのためのシステム |
US5475836A (en) * | 1987-04-01 | 1995-12-12 | Lotus Development Corporation | Interface for providing access to external data sources/sinks |
US4942541A (en) * | 1988-01-22 | 1990-07-17 | Oms, Inc. | Patchification system |
US5155822A (en) * | 1987-08-13 | 1992-10-13 | Digital Equipment Corporation | High performance graphics workstation |
US5109515A (en) * | 1987-09-28 | 1992-04-28 | At&T Bell Laboratories | User and application program transparent resource sharing multiple computer interface architecture with kernel process level transfer of user requested services |
US4862349A (en) * | 1987-10-19 | 1989-08-29 | International Business Machines Corporation | Method for extracting and/or replacing control system information in a computer operating system |
US4903194A (en) * | 1987-11-12 | 1990-02-20 | International Business Machines Corporation | Storage addressing error detection circuitry |
EP0323013B1 (en) * | 1987-11-30 | 1995-08-30 | International Business Machines Corporation | Method of operating a multiprocessor system employing a shared virtual memory |
US5239643A (en) * | 1987-11-30 | 1993-08-24 | International Business Machines Corporation | Method for reducing disk I/O accesses in a multi-processor clustered type data processing system |
US5761413A (en) * | 1987-12-22 | 1998-06-02 | Sun Microsystems, Inc. | Fault containment system for multiprocessor with shared memory |
US4918653A (en) * | 1988-01-28 | 1990-04-17 | International Business Machines Corporation | Trusted path mechanism for an operating system |
JPH077354B2 (ja) * | 1988-03-19 | 1995-01-30 | 株式会社日立製作所 | データ入出力方式 |
US4949254A (en) * | 1988-09-29 | 1990-08-14 | Ibm Corp. | Method to manage concurrent execution of a distributed application program by a host computer and a large plurality of intelligent work stations on an SNA network |
JP3226525B2 (ja) * | 1988-10-07 | 2001-11-05 | 株式会社日立製作所 | 主記憶管理方法 |
US5095420A (en) * | 1988-11-21 | 1992-03-10 | International Business Machines | Method and system for performing virtual address range mapping in a virtual storage data processing system |
US5222217A (en) * | 1989-01-18 | 1993-06-22 | International Business Machines Corporation | System and method for implementing operating system message queues with recoverable shared virtual storage |
JPH02195453A (ja) * | 1989-01-25 | 1990-08-02 | Toshiba Corp | ファイルアクセス制御方式 |
JPH0373037A (ja) * | 1989-05-26 | 1991-03-28 | Hitachi Ltd | データベース障害回復方法 |
US5101485B1 (en) * | 1989-06-29 | 1996-12-10 | Frank L Perazzoli Jr | Virtual memory page table paging apparatus and method |
US5129083A (en) * | 1989-06-29 | 1992-07-07 | Digital Equipment Corporation | Conditional object creating system having different object pointers for accessing a set of data structure objects |
US5125086A (en) * | 1989-06-29 | 1992-06-23 | Digital Equipment Corporation | Virtual memory paging apparatus with variable size in-page clusters |
US5339449A (en) * | 1989-06-30 | 1994-08-16 | Digital Equipment Corporation | System and method for reducing storage channels in disk systems |
US5182805A (en) * | 1989-07-14 | 1993-01-26 | Ncr Corporation | Method and system for determining copy-on-write condition |
EP0416767A3 (en) * | 1989-09-08 | 1992-04-29 | Digital Equipment Corporation | Position independent code location system |
JPH04211844A (ja) * | 1990-01-19 | 1992-08-03 | Texas Instr Inc <Ti> | ファイルシステムディフラグメント化装置及び方法 |
US5367652A (en) * | 1990-02-02 | 1994-11-22 | Golden Jeffrey A | Disc drive translation and defect management apparatus and method |
US5218695A (en) * | 1990-02-05 | 1993-06-08 | Epoch Systems, Inc. | File server system having high-speed write execution |
US6507909B1 (en) | 1990-02-13 | 2003-01-14 | Compaq Information Technologies Group, L.P. | Method for executing trusted-path commands |
EP0459912B1 (en) * | 1990-05-30 | 1996-09-11 | Fujitsu Limited | An issue processing system for a right to use a resource |
US5179666A (en) * | 1990-06-07 | 1993-01-12 | Unisys Corporation | Block oriented peripheral device interface |
US5276896A (en) * | 1990-06-11 | 1994-01-04 | Unisys Corporation | Apparatus for implementing data communications between terminal devices and user programs |
US5363121A (en) * | 1990-06-29 | 1994-11-08 | International Business Machines Corporation | Multiple protocol communication interface for distributed transaction processing |
US5269009A (en) * | 1990-09-04 | 1993-12-07 | International Business Machines Corporation | Processor system with improved memory transfer means |
US5175679A (en) * | 1990-09-28 | 1992-12-29 | Xerox Corporation | Control for electronic image processing systems |
US5379391A (en) * | 1991-03-01 | 1995-01-03 | Storage Technology Corporation | Method and apparatus to access data records in a cache memory by multiple virtual addresses |
JP2945498B2 (ja) * | 1991-04-12 | 1999-09-06 | 富士通株式会社 | システム間通信方式 |
US5522075A (en) * | 1991-06-28 | 1996-05-28 | Digital Equipment Corporation | Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces |
US5283888A (en) * | 1991-08-27 | 1994-02-01 | International Business Machines Corporation | Voice processing interface unit employing virtual screen communications for accessing a plurality of primed applications |
CA2078312A1 (en) | 1991-09-20 | 1993-03-21 | Mark A. Kaufman | Digital data processor with improved paging |
CA2078310A1 (en) * | 1991-09-20 | 1993-03-21 | Mark A. Kaufman | Digital processor with distributed memory system |
JP2870254B2 (ja) * | 1991-10-02 | 1999-03-17 | 日本電気株式会社 | 仮想計算機の入出力割り込み処理方式 |
CA2285096C (en) * | 1991-11-12 | 2000-05-09 | Ibm Canada Limited-Ibm Canada Limitee | Logical mapping of data objects using data spaces |
JPH0619785A (ja) * | 1992-03-27 | 1994-01-28 | Matsushita Electric Ind Co Ltd | 分散共有仮想メモリーとその構成方法 |
US5386561A (en) * | 1992-03-31 | 1995-01-31 | International Business Machines Corporation | Method of integrated system load control through dynamic time-slicing in a virtual storage environment |
US5276878A (en) * | 1992-10-07 | 1994-01-04 | International Business Machines Corporation | Method and system for task memory management in a multi-tasking data processing system |
JP3098344B2 (ja) * | 1992-12-18 | 2000-10-16 | 富士通株式会社 | データ転送処理方法及びデータ転送処理装置 |
JP2974526B2 (ja) * | 1992-12-18 | 1999-11-10 | 富士通株式会社 | データ転送処理方法及びデータ転送処理装置 |
US6138126A (en) | 1995-05-31 | 2000-10-24 | Network Appliance, Inc. | Method for allocating files in a file system integrated with a raid disk sub-system |
US6604118B2 (en) | 1998-07-31 | 2003-08-05 | Network Appliance, Inc. | File system image transfer |
ATE409907T1 (de) * | 1993-06-03 | 2008-10-15 | Network Appliance Inc | Verfahren und vorrichtung zum beschreiben beliebiger bereiche eines dateisystems |
US7174352B2 (en) | 1993-06-03 | 2007-02-06 | Network Appliance, Inc. | File system image transfer |
DE69431186T2 (de) * | 1993-06-03 | 2003-05-08 | Network Appliance Inc | Verfahren und Dateisystem zur Zuordnung von Datei-Blöcken zu Speicherplatz in einem RAID-Plattensystem |
US5963962A (en) * | 1995-05-31 | 1999-10-05 | Network Appliance, Inc. | Write anywhere file-system layout |
WO1994029795A1 (en) * | 1993-06-04 | 1994-12-22 | Network Appliance Corporation | A method for providing parity in a raid sub-system using a non-volatile memory |
US5564011A (en) * | 1993-10-05 | 1996-10-08 | International Business Machines Corporation | System and method for maintaining file data access in case of dynamic critical sector failure |
US5606685A (en) * | 1993-12-29 | 1997-02-25 | Unisys Corporation | Computer workstation having demand-paged virtual memory and enhanced prefaulting |
EP0667573A1 (en) * | 1994-02-14 | 1995-08-16 | International Business Machines Corporation | Incorporation of services written in one operating system environment into another operating system environment |
US5483649A (en) * | 1994-07-01 | 1996-01-09 | Ybm Technologies, Inc. | Personal computer security system |
US5842226A (en) * | 1994-09-09 | 1998-11-24 | International Business Machines Corporation | Virtual memory management for a microkernel system with multiple operating systems |
US5657470A (en) * | 1994-11-09 | 1997-08-12 | Ybm Technologies, Inc. | Personal computer hard disk protection system |
US5778443A (en) * | 1994-12-14 | 1998-07-07 | International Business Machines Corp. | Method and apparatus for conserving power and system resources in a computer system employing a virtual memory |
US5544349A (en) * | 1995-01-23 | 1996-08-06 | International Business Machines Corporation | Method and system for improving the performance of memory in constrained virtual memory environments by reducing paging activity |
US5721876A (en) * | 1995-03-30 | 1998-02-24 | Bull Hn Information Systems Inc. | Sockets application program mechanism for proprietary based application programs running in an emulation environment |
US5640591A (en) * | 1995-05-15 | 1997-06-17 | Nvidia Corporation | Method and apparatus for naming input/output devices in a computer system |
US5812820A (en) * | 1995-09-29 | 1998-09-22 | Pacific Commware, Inc. | Virtual UART |
US5950221A (en) * | 1997-02-06 | 1999-09-07 | Microsoft Corporation | Variably-sized kernel memory stacks |
US6148387A (en) | 1997-10-09 | 2000-11-14 | Phoenix Technologies, Ltd. | System and method for securely utilizing basic input and output system (BIOS) services |
US6457130B2 (en) | 1998-03-03 | 2002-09-24 | Network Appliance, Inc. | File access control in a multi-protocol file server |
US6317844B1 (en) | 1998-03-10 | 2001-11-13 | Network Appliance, Inc. | File server storage arrangement |
US6681238B1 (en) * | 1998-03-24 | 2004-01-20 | International Business Machines Corporation | Method and system for providing a hardware machine function in a protected virtual machine |
US6496847B1 (en) * | 1998-05-15 | 2002-12-17 | Vmware, Inc. | System and method for virtualizing computer systems |
US6457008B1 (en) * | 1998-08-28 | 2002-09-24 | Oracle Corporation | Pluggable resource scheduling policies |
US7516453B1 (en) * | 1998-10-26 | 2009-04-07 | Vmware, Inc. | Binary translator with precise exception synchronization mechanism |
US6343984B1 (en) | 1998-11-30 | 2002-02-05 | Network Appliance, Inc. | Laminar flow duct cooling system |
US6895418B1 (en) * | 1999-04-28 | 2005-05-17 | Emc Corporation | Versatile indirection in an extent based file system |
US6874027B1 (en) | 2000-04-07 | 2005-03-29 | Network Appliance, Inc. | Low-overhead threads in a high-concurrency system |
US6715016B1 (en) * | 2000-06-01 | 2004-03-30 | Hitachi, Ltd. | Multiple operating system control method |
US6775790B2 (en) * | 2000-06-02 | 2004-08-10 | Hewlett-Packard Development Company, L.P. | Distributed fine-grained enhancements for distributed table driven I/O mapping |
US6941410B1 (en) | 2000-06-02 | 2005-09-06 | Sun Microsystems, Inc. | Virtual heap for a virtual machine |
US6854115B1 (en) * | 2000-06-02 | 2005-02-08 | Sun Microsystems, Inc. | Process persistence in a virtual machine |
US6957237B1 (en) | 2000-06-02 | 2005-10-18 | Sun Microsystems, Inc. | Database store for a virtual heap |
US6934755B1 (en) | 2000-06-02 | 2005-08-23 | Sun Microsystems, Inc. | System and method for migrating processes on a network |
US6505285B1 (en) * | 2000-06-26 | 2003-01-07 | Ncr Corporation | Scratch segment subsystem for a parallel processing database system |
US8014993B1 (en) * | 2000-08-15 | 2011-09-06 | Cypress Semiconductor Corporation | Transportable volume, local environment repository |
US6728922B1 (en) | 2000-08-18 | 2004-04-27 | Network Appliance, Inc. | Dynamic data space |
US7072916B1 (en) | 2000-08-18 | 2006-07-04 | Network Appliance, Inc. | Instant snapshot |
US6636879B1 (en) * | 2000-08-18 | 2003-10-21 | Network Appliance, Inc. | Space allocation in a write anywhere file system |
US7574346B2 (en) * | 2000-10-30 | 2009-08-11 | Microsoft Corporation | Kernel emulator for non-native program modules |
US7178137B1 (en) | 2001-04-05 | 2007-02-13 | Network Appliance, Inc. | Automatic verification of scheduling domain consistency |
US7694302B1 (en) | 2001-04-05 | 2010-04-06 | Network Appliance, Inc. | Symmetric multiprocessor synchronization using migrating scheduling domains |
US7251814B2 (en) * | 2001-08-24 | 2007-07-31 | International Business Machines Corporation | Yield on multithreaded processors |
US7428485B2 (en) * | 2001-08-24 | 2008-09-23 | International Business Machines Corporation | System for yielding to a processor |
US7107584B2 (en) * | 2001-10-23 | 2006-09-12 | Microsoft Corporation | Data alignment between native and non-native shared data structures |
US7099866B1 (en) * | 2001-11-16 | 2006-08-29 | Hewlett-Packard Development Company, L.P. | Method of generating and presenting kernel data |
AU2003302348A1 (en) * | 2002-11-22 | 2004-06-18 | Sony Corporation | System and method for referencing av data accumulated in av server |
US7900017B2 (en) * | 2002-12-27 | 2011-03-01 | Intel Corporation | Mechanism for remapping post virtual machine memory pages |
US7000051B2 (en) * | 2003-03-31 | 2006-02-14 | International Business Machines Corporation | Apparatus and method for virtualizing interrupts in a logically partitioned computer system |
US7281075B2 (en) * | 2003-04-24 | 2007-10-09 | International Business Machines Corporation | Virtualization of a global interrupt queue |
US7603442B2 (en) * | 2003-06-20 | 2009-10-13 | Microsoft Corporation | Method and system for maintaining service dependency relationships in a computer system |
US7406694B2 (en) * | 2003-06-20 | 2008-07-29 | Microsoft Corporation | Method and system for tracking kernel resource usage |
US7373640B1 (en) | 2003-07-31 | 2008-05-13 | Network Appliance, Inc. | Technique for dynamically restricting thread concurrency without rewriting thread code |
US7783779B1 (en) * | 2003-09-19 | 2010-08-24 | Vmware, Inc | Storage multipath management in a virtual computer system |
US7793287B2 (en) * | 2003-10-01 | 2010-09-07 | Hewlett-Packard Development Company, L.P. | Runtime virtualization and devirtualization of I/O devices by a virtual machine monitor |
US8171480B2 (en) * | 2004-01-27 | 2012-05-01 | Network Appliance, Inc. | Method and apparatus for allocating shared resources to process domains according to current processor utilization in a shared resource processor |
US7475093B2 (en) * | 2004-10-15 | 2009-01-06 | Microsoft Corporation | Memory cache management in XML/relational data mapping |
US7707365B2 (en) * | 2005-01-13 | 2010-04-27 | Via Technologies, Inc. | Memory address monitoring device and memory address monitoring method |
US20070083867A1 (en) * | 2005-09-09 | 2007-04-12 | International Business Machines Corporation | Method and system to recover from control block hangs in a heterogenous multiprocessor environment |
US7502957B2 (en) * | 2005-09-09 | 2009-03-10 | International Business Machines Corporation | Method and system to execute recovery in non-homogeneous multi processor environments |
US7996585B2 (en) * | 2005-09-09 | 2011-08-09 | International Business Machines Corporation | Method and system for state tracking and recovery in multiprocessing computing systems |
US7457985B2 (en) * | 2005-09-09 | 2008-11-25 | International Business Machines Corporation | Method to detect errors in computer systems by using state tracking |
US8347293B2 (en) * | 2005-10-20 | 2013-01-01 | Network Appliance, Inc. | Mutual exclusion domains to perform file system processes on stripes |
KR100755701B1 (ko) * | 2005-12-27 | 2007-09-05 | 삼성전자주식회사 | 내장형 시스템을 위한 요구 페이징 장치 및 방법 |
US8495350B2 (en) * | 2006-08-23 | 2013-07-23 | Kam Fu Chan | Running operating system on dynamic virtual memory |
JP2008077144A (ja) * | 2006-09-19 | 2008-04-03 | Ricoh Co Ltd | 仮想化システム、メモリ管理方法及び制御プログラム |
US20080104590A1 (en) * | 2006-11-01 | 2008-05-01 | Mccrory Dave Dennis | Adaptive, Scalable I/O Request Handling Architecture in Virtualized Computer Systems and Networks |
US8171205B2 (en) * | 2008-05-05 | 2012-05-01 | Intel Corporation | Wrap-around sequence numbers for recovering from power-fall in non-volatile memory |
US20100217952A1 (en) * | 2009-02-26 | 2010-08-26 | Iyer Rahul N | Remapping of Data Addresses for a Large Capacity Victim Cache |
US8627331B1 (en) | 2010-04-30 | 2014-01-07 | Netapp, Inc. | Multi-level parallelism of process execution in a mutual exclusion domain of a processing system |
JP6385468B2 (ja) * | 2014-03-07 | 2018-09-05 | 華為技術有限公司Huawei Technologies Co.,Ltd. | ファイルアクセス方法及び関係するデバイス |
CN105579977B (zh) * | 2014-09-01 | 2020-04-14 | 华为技术有限公司 | 访问文件的方法、装置及存储系统 |
WO2016033718A1 (zh) * | 2014-09-01 | 2016-03-10 | 华为技术有限公司 | 访问文件的方法、装置和存储系统 |
CN105830022B (zh) * | 2014-11-28 | 2019-03-08 | 华为技术有限公司 | 访问文件的方法和装置 |
CN104461853A (zh) * | 2015-01-07 | 2015-03-25 | 浪潮(北京)电子信息产业有限公司 | 一种k-ux操作系统资源管理记录及报告的方法和装置 |
US10437735B2 (en) * | 2017-12-13 | 2019-10-08 | Red Hat, Inc. | Process isolation for out of process page fault handling |
CN108427546B (zh) * | 2018-05-03 | 2022-03-08 | 深圳Tcl新技术有限公司 | 显示装置的全屏幕适配方法、显示装置及存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5353231A (en) * | 1976-10-26 | 1978-05-15 | Toshiba Corp | Input/output processing system at virtual memory |
US4528624A (en) * | 1981-03-25 | 1985-07-09 | International Business Machines Corporation | Method and apparatus for allocating memory space based upon free space in diverse memory devices |
US4456954A (en) * | 1981-06-15 | 1984-06-26 | International Business Machines Corporation | Virtual machine system with guest architecture emulation using hardware TLB's for plural level address translations |
US4533996A (en) * | 1982-02-23 | 1985-08-06 | International Business Machines Corporation | Peripheral systems accommodation of guest operating systems |
JPS5856058A (ja) * | 1981-09-29 | 1983-04-02 | Fujitsu Ltd | 仮想計算機システムcp常駐ボリユ−ムのdasd共用管理方式 |
US4481583A (en) * | 1981-10-30 | 1984-11-06 | At&T Bell Laboratories | Method for distributing resources in a time-shared system |
US4636946A (en) * | 1982-02-24 | 1987-01-13 | International Business Machines Corporation | Method and apparatus for grouping asynchronous recording operations |
US4519032A (en) * | 1982-06-09 | 1985-05-21 | At&T Bell Laboratories | Memory management arrangement for microprocessor systems |
US4571674A (en) * | 1982-09-27 | 1986-02-18 | International Business Machines Corporation | Peripheral storage system having multiple data transfer rates |
US4577274A (en) * | 1983-07-11 | 1986-03-18 | At&T Bell Laboratories | Demand paging scheme for a multi-ATB shared memory processing system |
US4564903A (en) * | 1983-10-05 | 1986-01-14 | International Business Machines Corporation | Partitioned multiprocessor programming system |
US4558413A (en) * | 1983-11-21 | 1985-12-10 | Xerox Corporation | Software version management system |
US4660130A (en) * | 1984-07-24 | 1987-04-21 | Texas Instruments Incorporated | Method for managing virtual memory to separate active and stable memory blocks |
-
1986
- 1986-01-16 US US06/819,458 patent/US4742447A/en not_active Expired - Fee Related
- 1986-11-18 CA CA000523243A patent/CA1266531A/en not_active Expired - Fee Related
- 1986-11-29 CN CN86108127A patent/CN1016829B/zh not_active Expired
- 1986-11-29 KR KR1019860010148A patent/KR920005853B1/ko not_active IP Right Cessation
- 1986-12-19 BR BR8606308A patent/BR8606308A/pt not_active IP Right Cessation
-
1987
- 1987-01-08 EP EP87300112A patent/EP0229691A3/en not_active Withdrawn
- 1987-01-09 JP JP62002015A patent/JPS62165251A/ja active Granted
Also Published As
Publication number | Publication date |
---|---|
US4742447A (en) | 1988-05-03 |
KR870007462A (ko) | 1987-08-19 |
EP0229691A2 (en) | 1987-07-22 |
JPH0578857B2 (zh) | 1993-10-29 |
CA1266531A (en) | 1990-03-06 |
JPS62165251A (ja) | 1987-07-21 |
CN86108127A (zh) | 1987-07-29 |
BR8606308A (pt) | 1987-10-06 |
EP0229691A3 (en) | 1990-06-13 |
KR920005853B1 (ko) | 1992-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1016829B (zh) | 在多任务虚拟存储器虚拟计算机型数据处理系统中控制输入输出存取的方法 | |
US4761737A (en) | Method to automatically increase the segment size of unix files in a page segmented virtual memory data processing system | |
US4730249A (en) | Method to operate on large segments of data in a virtual memory data processing system | |
US5930827A (en) | Method and apparatus for dynamic memory management by association of free memory blocks using a binary tree organized in an address and size dependent manner | |
EP0590645B1 (en) | Method and system for reducing memory allocation requests | |
US5539899A (en) | System and method for handling a segmented program in a memory for a multitasking data processing system utilizing paged virtual storage | |
US6119214A (en) | Method for allocation of address space in a virtual memory system | |
US4742450A (en) | Method to share copy on write segment for mapped files | |
US5752031A (en) | Queue object for controlling concurrency in a computer system | |
US6480845B1 (en) | Method and data processing system for emulating virtual memory working spaces | |
AU2009308007B2 (en) | Opportunistic page largification | |
US5555399A (en) | Dynamic idle list size processing in a virtual memory management operating system | |
US3647348A (en) | Hardware-oriented paging control system | |
US6763328B1 (en) | Method and data processing system for emulating virtual memory utilizing threads | |
CN1848082A (zh) | 用于提供原地执行功能的系统和方法 | |
US5678024A (en) | Method and system for dynamic performance resource management within a computer based system | |
EP0250876B1 (en) | Apparatus and method for page replacement in a data-processing system having a virtual memory | |
Mapp | An object-oriented approach to virtual memory management | |
Emery | The development of a partitioned segmented memory manager for the UNIX operating system. | |
Corbató et al. | This document was originally prepared off-line. This file is scanned from an original paper copy, followed by OCR and manual touchup. | |
Corbató et al. | Project MAC May 1968 MAC-M-372 SOME CONSIDERATIONS OF SUPERVISOR PROGRAM DESIGN FOR MULTIPLEXED COMPUTER SYSTEMS | |
JP2004078636A (ja) | メモリ管理システムとメモリ配置方法およびそのプログラムと記録媒体 | |
Maguschak et al. | Final Evaluation Report International Business Machines Corporation, MVS/ESA Operating System | |
Ikuomola | COURSE CONTENT UNIT ONE OPERATING SYSTEM CONCEPT | |
Jebaseeli et al. | Operating System: A Review |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C13 | Decision | ||
GR02 | Examined patent application | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |