虚拟输入/输出命令的制作方法

文档序号:6405245阅读:200来源:国知局
专利名称:虚拟输入/输出命令的制作方法
技术领域
本发明一般来说涉及数据处理领域,更具体地说涉及一种提供比较安全的输入/输出(I/O)系统的设备。
数据处理系统需要有使诸多用户相互隔离和使用户与操作系统隔离的保护。保护指的是一种机构,该机构控制程序的存取和处理、或者说,控制用户占用计算机系统资源。从实质上说,保护是一个内部问题-需要对存储在计算机系统中的程序和数据的存取进行控制。
计算机安全需要适当的保护系统,还需要考虑计算机工作的外部环境,安全性是计算机系统内的主体到基于系统实施策略的对象的接通传递。保险是一种使系统及其数据保持完整性的确保措施。
安全系统应具有如下一些功能1.接通控制-能够正确、可靠地识别要使用计算机的人/对象。
2.处理控制完整性-人/对象限于特定功能,并且必须保证用户的隔离。
3.能够检测出违反系统安全的事件。
4.能够使用户与计算机之间的信息安全,并且不会弄乱。
5.能够使硬件和软件不受干预。
6.能够使系统等可靠性地设计而成。
许多以上功能在其它计算机系统中也有,典型的情况有在马萨诸塞理工学院使用的Multics(马萨诸塞理工学院使用的商标)系统和Honeywell安全通讯处理器(SCOMP)。
Multics出于安全的原因把程序存储在存储器中的特权环中,并采用虚拟寻址。但是,Multics系统没有利用由采用虚拟I/O命令系统所提供的保护。
SCOMP系统出于安全的原因也把程序存储在存储器中的特权环中,并也采用虚拟寻址。SCOMP还利用了由采用虚拟I/O命令系统所提供的保护,但是SCOMP包括分立的逻辑板,以进行从虚拟I/O到实际I/O的翻译。
因此,本发明目的就是提供一种数据处理系统,该系统具有改进了安全性的输入/输出(I/O)命令系统,该命令系统实施费用较低且具有改进的吞吐量。
本发明具体由本申请所附权利要求书来限定。本发明的上述目的及其它目的和优点通过参阅与附图相关的以下描述可以得到了解。
根据以下详细描述及联系到附图,本发明方法所进行的方式,本发明的设备的构成方式及其操作方式均能得到很好得了解。在附图中相同的参考标号表示相同的元件,其中,

图1是数据处理系统的总体方块图。
图2A-2E表示输入/输出命令格式。
图3是虚拟存储管理装置和中央处理单元的部分方块图。
图4A和图4B是安全输入/输出系统的表和寄存器的方块图。
图5A和5B是虚拟输入/输出操作系统固件执行过程的流程图。
本发明在输入/输出(I/O)命令的计算机系统内提供多级安全性,所说命令是通过系统总线送到外围设备的。
通过系统总线的I/O命令包括标识设备的实际通道号,和规定设备要进行的功能的功能码,操作系统产生虚拟I/O命令,该命令包含环号,虚拟通道号和功能码。
固件在把虚拟ǖ篮欧氤墒导释ǖ篮胖岸孕槟釯/O命令进行多种校验。这些在实际I/O命令产生之前所做的校验包括a-验证用户有特权接通程序;
b-验证IOLD缓冲器在2KB范围内;
c-验证描述符有效及用户被允许接通设备;
d-对照包括描述符的页表尺寸验证I/O描述符的拟虚通道号位置。
e-验证IOLD数据缓冲器由系统软件标作IOLD缓冲器。
以上这些由固件来完成,该固件采用多个寄存器和表来存取控制存储器的保留部分,以进行验证及虚拟地址到实际地址的翻译。
操作系统产生存储器描述符树和设备描述符树,并把一个指针存储到描述符段基址寄存器的这个数据结构信息中。该信息规定描述符段页表的基地址。虚拟通道号的高阶位的值用来决定要加到基地址上的常数,以给出I/O页面描述符字的实际存储地址。该I/O页面描述符包括有效位,I/O描述符表的大小和I/O描述符表的基地址。虚拟通道号加到基地址上,作为I/O描述符的索引。
I/O描述符包括有效位,读或写的允许位、环括号位、和实际通道号。固件校验有效位,验证虚拟I/O指令要求的适当读或写命令调用,对照虚拟I/O命令环编号验证环括号位。如果所有这些校验都进行正确,那么实际通道号则按命令取代虚拟通道号,实际I/O命令便通过系统总线送出。
对于每个用户都有一个描述符段页表和一个I/O描述符表。这使得操作系统能够便利地改变用户的特权。
图1示出了一个多处理系统,它包括多个子系统,每一个子系统通过一个独立的接口与异步系统总线2相联。
这些子系统包括一个通过系统总线接口(SBI)2-10与系统总线2相联的中央子系统(CSS)4和一个通过SBI2-10A与系统总线2相联的中央系统4A。虽然只画出了两个CSS,但是任何数量的CSS都可以通过它们各自的接口与系统总线2相联。每个SBI包括如美国专利第3,995,258号图9所公开的那种总线接口逻辑电路。
系统管理装置〔SMF〕20通过SBI2-8也连接到系统总线2。存储子系统8通过SBI2-2与系统总线2相联。多个外围控制器14(典型地为一个磁盘控制器,一个单元记录控制器、一个磁带控制器、一个通讯控制器等)可通过其各自的、与SBI2-4相似的SBI与系统总线2相连。每个外围控制器14分别与多个相应的装置18相联。
每个CSS包括一个调整缓冲存储器、一个控制存储器、二个中央处理器单元(CPU)及其各自的虚拟存储管理单元(VMMU),CSS4包括一个带有VMMUO4-8的CPUO4-2、一个带有VMMU14-10的控制存储器4-12、和一个高速存储缓冲器4-6。虽然这里采用了具有二个CPU的CSS,但应理解到本发明可以用在具有单个CPU的系统中。
子系统之间的所有通信通过由一个子系统送出一个命令到总线2上并从被寻址的子系统接收响应信号的方法来完成。
SMF20不仅对系统和环境的多个功能进行监控,而且还控制系统1的预置。SMF20包括一个监视时钟和一个实时时钟,所述的监视时钟和实时时钟由SMF20接收到的、由某一个CPU通过系统总线2送来的命令来校准,SMF20在监视时钟减小至0之后便作出响应,通过系统总线2向最新校准时钟的CPU传递一个响应命令。此外,SMF20还监控电源和温度,并且在电源或温度超出预定限度时向子系统报警。SMF20的工作情况在题为“微处理机系统的系统管理设备”申请(序号869164)中已有描述。
系统提供实际地址和虚拟地址。大多数软件可见地址是虚拟地址。VMMU会把这些虚拟地址翻译成实际地址。实际地址被CPU用来寻址高速缓冲存储器或存储器。例如,CPU04-2通过总线BP38向VMMU0-4-8传送一个虚拟地址。VMMU则把该虚拟地址翻译成实际地址,并把该实际地址通过总线PA39传送到高速缓冲存储器4-6和存储器8。如果实际地址的内容存储在高速缓冲存储器4-6,则它会被立刻送回到CPU04-2,否则包含有实际地址的命令则通过SBI2-10、系统总线2和SBI2-2送至存储器8。实际地址位置的内容则通过SBI2-2、系统总线2和SBI2-10由响应命令送到CPU04-2。
由操作系统软件,CPU及VMMU硬件和虚拟I/O处理构成的安全内核是安全DPS6.PLUS乘积的参考监视器的实现。该参考监视器是必须满足三个安全要求的一个抽象概念。这三个要求是
1.完成从主体到对象的传递;
2.隔离;
3.验证。
所述的全部传递工作由虚拟存储器管理单元来完成,该单元把所有请求均传递给存储器,这个传递过程也包括存取允许校验。虚拟I/O固件也是这个要求的一部分。所有I/O命令是虚拟的,并以某些存取许可及检查过程为条件而得到许可。
隔离方面则利用一个硬件环结构来完成,该硬件环结构使安全性及系统过程与用户的应用处理分开。这个特点依靠基础硬件和固体来实施,所述硬件与固件把执行范围与包含在描述符数据结构中的已接受的许可进行比较。
验证方面则依靠产生一个形式最高级说明来实现,该形式最高级说明与实施策略的一个形式或非形式数学模型进行比较。并用该形式或非形式数学模型来得到验证。该所用模型取决于所需要的证明级,这如同“受托计算机安全评价标准(DOD5200,28-STD-1985年11月)”一文中所描述的那样。
由操作系统产生的I/O命令包含一个虚拟通道号和一个环号。固件验证命令的有效性和环号,并和存储在存储器8中的I/O描述符表一起把虚拟通道号翻译成实际通道号。包含实际通道号的I/O命令通过系统总线2传送出去。识别其实际通道号的外围子系统确认命令的接受,并进行命令中功能码部分所规定的操作。
CPU和VMMU的所有操作由控制存储字的某些位来控制,这些控制存储字是从控制存储器4-12读出的。控制存储器4-12被分为用来控制正规的中央处理器操作(包含把虚拟地址翻译成实际地址)的A部分,和用来在现存虚拟存储系统内控制虚拟I/O实施的B部分。
虚拟I/O处理依靠使系统1的资源与用户范围分开而提供安全性。这就保证了所需许可检查在I/O命令通过总线2传送至外围子系统之前完成。
图2A至2D示出了通过系统总线2传送出来的I/O命令。图2E示出了带有环号和虚拟通道号的虚拟I/O命令的格式,和带有实际通道号的已翻译的实际I/O命令的格式。
注意,在整个说明书中,符号“IO”指的是图2A、2B和2C,符号“I/O”指的是图2A、2B、2C和2D;也就是说符号“I/O”包括IO和IOLD。
图2A示出了由CPU产生的IO输出命令的格式通过系统总线2的信号包含32位地址信号O-23、A-H,及32位数据信号0-31,还包含有多个控制信号(未示出),对于IO输出命令来说,地址信号8-17规定了分布子系统的实际通道号,地址信号18-23规定了功能码。数据位0-31规定了传送给由通道另指定的子系统的信息。数据位将按功能码指定的操作执行。
图2B示出了由CPU产生的IO输入命令的格式,该命令包含装置的通道号和指明CPU所要求的信息功能码。数据位0-9规定产生命令的CPU的实际通道码。数据位16-31规定装置的选择信息。
图2C示出了对IO输入命令的IO响应的格式,现在,源的实际通道号是目标的实际通道号。数据位0-31规定由IO输入命令的功能码所要求的信息。对于图2B的源通道和图2C的实际通道不需要把虚拟通道号翻译到实际通道号。
图2D示出了输入/输出加载(IOLD)的输出命令二个周期的格式。第一周期规定字块传送的存储器8的起始地址,第二周期规定字块中字的范围或个数。
注意,十六进制功能码09表明32位地址由16地址位A-H、0-7和16个数据0-15来规定。功能码十六进制OD表明数据位0-15规定范围。地址位8-17在二个总线周期中规定同一装置的通道号。
图2E示出虚拟I/O通道号命令的格式和已翻译的实际I/O通道号命令的格式。注意,由图2A、2B和2D的地址位8-17规定的实际通道号是从虚拟通道号2-8和方向位9(D)翻译过来的。其它的地址位和数据位不经翻译便被传输。
I/O通道号范围从十六进制010到3FF。CPU通道范围从十六进制000到00F。全双工装置(如通信线)利用二个通道号,低阶位(D)识别线的哪一半(发送或接收)被寻址。
虚拟通道范围是0-63,一页仅为内核I/D描述符,一页为共享I/O描述符。要被存取的页由虚拟通道号的位2(MSB)确定。
半双工装置(如磁带机)用D位逻辑O来规定输入操作,逻辑1规定输出操作。
单向装置(如卡片阅读机)D位置于“O”(偶数功能编码)。
环保护由一套逐级保护构成。并可看作为是一套从内向外编号为0,1,2,……N-1,的同心圆,包含在园O中的存储器8的空间称作环O,包含在圆1与圆2之间的存储器8空间称作环1,一个进程的每个段位于存储器8的一个环中。段越靠近中心,其保护及特权就越大。编号为0,1,2和3的四个环由CSS支持,环0的特权最大,环3则特权最小。
除I/O之外的操作系统的安全内核常驻环0,存储器管理进程调度常驻环1。受托软件常驻环2,受托软件会违反安全内核实施的安全性和完整性,受托软件还提供需要高完整性的功能度,用户的应用在特权最小的环3,并由非受托环2的安全内核接口包支持,应用软件不能在受托软件之上运行。
用户由操作系统分类,类别有不保密、保密和绝密三种,这就使得用户存取在特定的环中进行。如果让绝密分类的用户存取环1,让保密分类的用户存取环2,让不保密分类的用户存取环3,则以下规则适用。用户不能向上读取,即让能存取环2中的进程的保密分类的用户不能读出环1或环0中的进程;用户不能向下写,即保密分类的用户不能写下环3中的进程。
一个过程与三个环编号R1,R2和R3有关,R1、R2、R3叫做该过程的环括号。如果R3>R2则该过程为环R2的门,环R2可接通不高于R3的环。当R2=R3时,该过程就不是门。
图3示出的部分VMMU和CPU,VMMU和CPU是本发明的一部分。应注意到,VMMU04-8与VMMU14-10,CPU04-2与CPU14-4是完全相同的元件,因此,将用VMMU04-8和CPU04-2来描述本发明。但应理解,本发明用VMMU14-10和CPU14-4也能同样地工作。
CPU04-2的寄存器文件46包括64个32位的寄存器,这些寄存器的功能在题为“单块半导体芯片上的微处理机”是美国申请序号722,237中已有描述。还包括一个描述符段的基址寄存器,该基址寄存器与VMMU04-8VM-RAM30中的完全一样。
从BP总路38接收到操作数,操作数存储输入数据寄存器26中,并通过B总线40算术逻辑运算部件(ALU)48、BI总线44、或移位器24和BI总线44存储在寄存文件46的寄存器中,通过将寄存器文件中的两个操作数中的一个操作数读入A总线42和将另一个操作数读入B总线40,并且把二个操作数加到ALU48的不同输入端上,来进行算术运算。
ALU48进行由控制存储器4-12的信号(未示出)所规定的算术运算。该算术运算的结果通过BI总线44或通过移位器和BI总线44写回到寄存器文件46中。
32位Q寄存器22起到了ALU48的扩充作用。来处理64位操作数。在执行二进制乘法和除法指令时,Q寄存器22也存储部分积和部分商。移位器24与ALU48一起执行通常的32位移位操作移位器24与Q寄存器22和ALU48一起工作,来执行64位移位操作。来自控制存储器4-12的控制信号(未示出)控制寄存器文件44、ALU48,移位器24、Q寄存器22和数据输入寄存器26的全部操作。
VMMUO4-8包括译码器32。译码器接收控制存储器4-12的信号,以访问32位虚拟存储随机存取存储器(VM-RAM)30的二十八个存储单元的其中之一。本发明的DSBR54部分存储在VM-RAM30的二个存储单元中。信息从BP总线38、锁存器36和内部总线34装入VM-RAM30。控制信号(未示出)控制锁存器36的输入和输出。
图4A和4B示出了将虚拟I/O命令翻译到实际I/O指令(如图2E所示)的逻辑流。
操作系统为每个装置提供一个存取控制表。该存取控制表决定哪些用户已与装置接通。无论什么时候进程需要访问新装置,操作系统都要校验目标装置以确定进程是否允许接通,如果接通允许,则操作系统50产生虚拟I/O命令52,该命令存储在存储器8的存储单元中,并把以下信息装入DSBR54中,DSBR54是存储在VM-RAM30的存储单元中。
如果置位位O,则表示要用新栈,而且调用及返回指令得到许可。这不是本发明部分,所以对此不再作进一步描述。
如果置位位1,则表示操作系统50产生虚拟I/O命令。
位4-23规定存储器8中的实际页面帧基地址。但是,位24-31使基地址偏移,以使描述符段页表56在模4字边界处启动。
描述符段页表56包括四个页面描述符PDO至PO3,这些描述符用于把常规虚拟存储器的地址翻译到实际存储器地址。这种常规操作还包括处理IOLD范围命令。
描述符段页面表56还包括I/O页面描述符4和I/O页面描述符5。虚拟通道号的高阶位状态(虚拟I/O命令的位2)规定,十六进制8加到偏移基地址上,以定位I/O页描述符4。十六进制A加到偏移基地址上,以定位I/O页描述符5。
I/O页面描述符4指向64个I/O描述符的表(未示出),而I/O页面描述符5指向标识为63至127的64个I/O描述符的表。I/O描述符代表那些被I/O页面描述符5选择的描述符。
有128个I/O描述符,它们被分成64个全局描述符和64个局部描述符,全局描述符是系统装置的描述符。全局描述符用来使安全内核在任何进程中存取内核文件系统装置。局部描述符被规定为进程专用,并且与用户的I/O装置有关,这些用户的I/O装置被安全内核映射入进程地址空间。
I/O页面描述符5中的信息如下位O是I/O页面描述符有效指示符(V),位1是页面被接通的指示符(U),位2是页面被修改的指示符(M),位4-23规定I/O描述符表58的实际页面帧号地址。
位26-30规定I/O描述表58中虚拟装置描述符的数量,如果虚拟通道号大于I/O设备表的尺寸,即产生故障指示。
实际页面帧号规定I/O描述符表58的存储器8的基地址。虚拟通道号位2-8指向I/O描述符表58中的I/O描述符。
I/O描述符规定进程对进行装置读写操作的权利,以及装置的实际通道号。其它I/O描述符中的信息如下。
位O是有效指示符(V),当为0时,指示I/O通道故障(俘获37)。
位1是读许可指示符(R),当这位为1,而且进程在小于或等于R1的环内执行时,允许读/操作IOLD命令执行。如果这个存取校验未被完成,则I/O通道接通故障(俘获38)得到指示。
对于IOLD指令、位4和5,R1规定该装置媒体的写括号的最高环编号。位6和7,R2规定该装置的读括号的最高环编号。
对于IO指令,位4和5,R1规定该装置的控制括号的最高环编号。
位16-22必须是零,位23-31加上虚拟通道号的初始方向位D形成实际I/O装置的通道号,而且确定该命令或是读命令或是写命令。
DSBR54装有对每一用户独特的帧号和偏移。因此,DSBR位4-31便指向独特的描述符段页表56。有多少用户,就有多少描述符段页表56。对于每一个用户还有一个独特的过程描述符段60。
系统1的整个存储尺寸高达实际存储16兆字节,虚拟存储2千兆字节。存储器8存储实际存储字节,海量存储装置存储虚拟存储字节。
一个段的大小可高达2兆字节。一个进程可包括的段高达1024。一个页面含有2千字节,每一段可有1024页。虚拟地址表示为一个10位段编号和一个20位偏移,该10位段编号和20位偏移与DSBR54及以下表在一起产生存储器8所需双字的实际地址(30位)。
在包含全部过程描述符的独特的过程描述符段中,描述段页表56包括指向段描述符(SD)O-255的描述符(PD)O,指向SD256-511的PD1,指向SD512-767的PD2和指向SD768-1023。
PDO至PD3指向其各自的段描述符表。段描述符表的内容(在标明页时)指向页面描述符表。页面表存储包含主存储器8中的实际地址的描述符,这些实际地址相应于由操作系统产生的虚拟地址。这是把虚拟存储器地址翻译成实际存储器地址的常规系统操作。
在常规系统操作时,图2D的IOLD范围命令进行如下的处理描述符段页面表56的选定的页面描述符(如PD1)被装上处理器描述字段60的页面号。每个处理器的描述符段60每页含有256个段描述符。除了有效(V)位0,位1是特权的指示符60。如置位,则只有当在环0中时才允许执行特权指令。如果未置位,则特权指令未得到许可,如果使用则调用俘获。IOLD(IO)位2的置位说明这是直接存储器存取(DMA)传送的IOLD缓冲段。如果未置位而且对此段执行IOLD指令,则调用受保护的存储器俘获14。
页号位4至22加上处理器描述符60的偏移位23至31指向IOLD缓冲段页面表62的被选择页面指示符(PDX)。IOLD缓冲页表62存储1024个32位页面描述符。
以上描述了位0,1和2(V,U和M)。IOLD缓冲段页表62的页面编号位4至23针对存储器8中的IOLD缓冲段页帧64。如果IOLD缓冲段页表62的页号指向页帧64的基地址,最大缓冲页面大小是2048字节,如果基地址增加一个偏移量,则因为页交叉得不到许可,范围则少于2048字节。
应该注意到,在用户的把虚拟I/O到实际I/O的翻译过程中,描述符段面表56的内容部分和I/O描述符表58的内容部分被带入到高速缓冲存储器4-6。同一个用户所需的后来的I/O指令翻译能够以高速缓冲存储器4-6的速度而不是以较慢的存储器8的速度来完成。
对于图5A和5B的描述,图2A至图2C的命令被称作I/O命令,而图2D的命令被称作IOLD命令。固件会把IOLD命令的二个周期看作是一个IOLD命令来处理,这样符号I/O表示IO和IOLD。
图5A和5B是虚拟I/O固件执行程序的流程图。CPU04-2执行软件指令,软件指令又访问控制存储器4-12的B部分,以便把虚拟I/O通道号翻译到实际I/O通道号。
判定框72测试DSBR54的内容的位1,并当这不是虚拟I/O操作时向框74转移。判定框执行程序的方法把信息转移到寄存器文件46(图3),完成ALU48和移位器24所要求的操作,并把结果送回到固件可得到的寄存器文件46,而这要利用来自控制存储器4-12的信号来完成。框74把命令解释成具有实际通道号的命令,并使CPUO4-2把命令直接送过系统总线2。反之,判定框76读出CPU04-2正在执行的存储器中I/O指令的现行环编号的位0和1。如果不是特权指令,即如果不是环0或环1的指令,则框78要求调用俘获13,以通知操作系统停止处理。
反之,框80计算描述符段页表(DSPT)56的I/O页面描述符4或5的存储器中的存储单元,要完成这些,就要依靠CPU04-2,根据虚拟通道号的高阶位(位2)的状态把基地址加至十六进制8或十六进制A来完成。
框82从存储器8的存储单腥〕鯥/O页面描述符,并把它存储在CPU04-2寄存器文件46的工作寄存器中(图3)。
判定框84测试I/O页面描述符的有效性(V)位0,该有效位0为真表明页面在存储器8中。如果为假,则产生页面故障,以告诉操作系统把页面带入存储器8。页面通常在磁盘子系统中。字块86便要求由硬件执行的标准页面故障程序。
反之,框88把来自描述符段页面56的I/O页面描述符存储到CPU04-2的工作寄存器(寄存器文件46)中。I/O描述符在存储器8中的存储位置其产生办法是把虚拟通道号加到I/O页面描述符的实际页帧编号上。
判定框90把存储在I/O页面描述符中的表的大小与虚拟通道号进行比较,以确保I/O描述符表58能够适应虚拟通道号。如果虚拟通道编号大于所述尺寸,框92调用虚拟通道号界限故障俘获37。
如果I/O描述符表58足够大,框94则从存储器8提取I/O描述符,并把它存入CPU04-2的工作寄存器(寄存器文件46)中。
判定框96测试I/O描述符的有效(V)位O,并在该位复位时指示I/O故障俘获编号37分支到框98。
反之,框100根据虚拟I/O命令的环位0和1计算Reff。
Reff是环的最大值(特权最小),在环中存储了形成IOLD或I/O命令的命令。
判字框101通过检查启动命令的存储器8中命令的操作码字段来测试虚拟I/O命令是否为IO命令。(是否为图2A,2B或2C的命令)或IOLD命令(图2D)。如果是指令要求的IO命令,判定框103则对照I/O描述符中R1值测试Reff值。如果Reff的值大于R1,框105则启动俘获38的I/O存取故障操作。如果Reff小于或等于R1,则固件向框118转移,框118用I/O描述符表58的I/O描述符的实际通道号取代虚拟通道号。
判定框102测试虚拟I/O指令的方向位9。如果位9指示为装置输入命令,判定框108则测试I/O描述符的R位1是否置位以及Reff是否小于或等于I/O描述符的R2(位6和7)。如果“是”,框140则置位M(位2)于IOLD缓冲页描述符中。如果“否”,字块106则通过固件存取校验,调用存取故障(俘获38)。
如果判定框102依靠测试虚拟IOLD命令中的方向位状态来指示装置输出指令,判定框104测试到,I/O描述符W位置位,Reff值小于或等于I/O描述符的R1(位4和5)程序转移到框112,否则,框106便产生俘获38。
框110使I/O页描述符的修改位M(位2)置位。
判定框112测试位于处理机描述符字段(PDS)60中的IOLD缓冲器的段描述符中的I/O位是否被置位。如果被置位,框114则调用俘获14的保护违章程序。反之,判定框116则将常数(2048)与图2D(第二周期)的范围的范围数据字段位0-15进行比较来测试IOLD缓冲器的尺寸是否小于或等于2048字节。为了确保范围不使页面交叉,固件校验,图2D中的范围加上偏移不大于2048。该偏移是在常规虚拟到实际的地址翻译过程中被计算到的。如果测试又失败了,则框114调用俘获14的保护违章程序。
如果二个测试都成功了,框118则用I/O描述符含有的实际通道号取代虚拟通道号。
然后固件分支到框74,IO或IOLD命令被当做一个常规命令来处理,并且被与系统总线2耦合的子系统(图1)当作常规命令来处理。
在参考其实施例对本发明作说明与描述的同时,本领域的技术人员会理解到,能做出以上和其它的形式变化及细节变化,但这未离开本发明的精神和范围。
权利要求
1.把虚拟I/O命令翻译为实际命令的设备包括用于存储虚拟I/O命令的第一装置,所述虚拟I/O命令含有识别装置的虚拟通道号;用于存储器识别用户的描述符段的第二装置;与所述第一装置和第二装置耦合,并对应所述通道编号和所述描述符段的第一部分的第一表装置,它用于使I/O页面描述符定位,所述I/O页面描述符识别所述用户可得到的装置族;与所述第一装置和所述第一表装置耦合,并对应所述通道号和所述I/O页面描述符的第二表装置,它用于使I/O描述符定位,所述I/O描述符包含识别所述装置的实际通道号;与所述第一装置和所述第二表装置耦合的第三装置,它用于用所述实际通道号取代所述虚拟通道号,由此,产生所述实际I/O命令。
2.把用户所需虚拟I/O命令翻译为实际命令的设备包括用于存储虚拟I/O命令的第一装置,所述虚拟I/O命令包含识别装置的虚拟通道号;用于存储描述符段的第二装置,所述描述符段包含识别所述用户的第一字段;与所述第一和第二装置耦合,并对应所述第一字段内容和所述虚拟通道编号的第一部分的第一表装置,它用于使I/O页面描述符定位,所述I/O页面描述符包含识别所述用户可得到的每个装置的第二字段;与所述第一装置和所述第一表装置耦合,并对应于所描述第二字段和所述虚拟通道号的内容的第二表装置,它用于使I/O描述符定位,所述I/O描述符包含一个含有识别所述装置的实际通道号的第三字段;与所述第一装置耦合的第三装置,它用于用所述实际通道号取代虚拟通道号,以此产生所述实际I/O命令。
3.把用户所需虚拟输入/输出(I/O)命令翻译为能识别装置的实际I/O命令的设备,该设备包括用于存储所述虚拟I/O命令的第一装置,所述虚拟I/O命令包含识别所述装置的虚拟通道号和识别所述用户特权的第一环编号;用于存储描述符段的第二装置,所述描述符段包含识别所述用户的第一字段;与所述第一和所述第二装置耦合,并对应所述第一字段和所述虚拟通道号第一部分的内容的第一表装置,虚拟通道号用来定位I/O页描述符,所述的I/O页描述符包括可识别所述用户能存取的各种设备的第二字段;与上述第一装置和所述第一表装置耦合,并对应所述虚拟通道号和所述第二字段内容的第二表装置,它用于使I/O描述符定位,所述I/O描述符包含一个含有识别所述装置的第三字段和第二环编号;与所述第一装置和所述第二表装置耦合的比较装置,它用于检验所述第二环编号大于或等于所述第一环编号,由此验证所述用户有特权存取所述装置;与所述比较装置、所述第一装置和所述第二表装置耦合的第三装置,它用于用所述实际通道号取代所述虚拟通道号和所述第一环号,由此产生所述实际I/O命令。
4.把用户所要求的虚拟I/O命令翻译为识别装置的实际I/O命令的设备,所述设备包括用于存储所述虚拟I/O命令的第一装置,所述虚拟I/O命令包含识别所示装置的虚拟通道码、识别所述用户特权的第一环编码和指示读写操作的方向位;用于存储描述符段的第二装置,所述描述符段包含一个I/O标识符,该标识符在第一状态指示命令是虚拟I/O命令,在第二状态指请命令是实际I/O命令,不再需要操作,所述描述符段还包含识别所述用户的第一字段;与所述第一和所述第二装置耦合,并对应所述第一字段内容和所说虚拟通道号的第一部分的第一表装置,它用于使I/O页面描述符定位,所述页面描述符包含识别所述用户可存取的装置族的第二字段;与所述第一装置耦合,并对应所述第二字段和所述虚拟通道号内容的第二表装置,它用于使I/O描述符定位,该I/O描述符包含读位或写位,第二环编号和识别所述装置的实际通道号;比较装置,它用于验证所述第二环编号大于或等于所述第一环编号,从而验证所述用户具有存取所述装置的特权,还用于验证在第一状态的所述方向位等于在第一状态所述读位的状态,在第二状态的所述方向位等于所述写位的状态;与所述比较装置、所述第一装置和所述第二表装置耦合的第三装置,它用于当比较结果表明读或写的实际I/O命令与所述读位或所述写位相容且所述用户具有存取所述装置的特权时,用所述实际通道号取代所述虚拟通道号,从而产生传送到系统总线的所述实际I/O命令。
5.把用户所要求的虚拟IOLD指令翻译为识别装置的实际IOLD指令。所述设备包括用于存储所述虚拟IOLD指令的第一装置,该虚拟IOLD指令包含识别所述装置的虚拟通道号、识别所述用户特权的第一环编号,和规定被传送字块的数码范围;用于存储描述符段的第二装置,该描述符段包含识别所述用户的第一字段;与所述第一和所述第二装置耦合,并对应所述第一字段内容和所述虚拟通道号的第一部分的第一表装置,它用于使I/O页面描述符定位,所述I/O页面描述符包含识别所述用户可存取的装置族;所述第一表装置还包含页面描述符装置,用于规定存储所述数据字块的缓冲器的基地址;与所述第一装置和所述第一表装置耦合,并对应所述虚拟通道号和所述第二字段内容的第二表装置,它用于使I/O描述符定位,所述I/O描述符包含了含有识别所述装置的实际通道号的第三字段和第二环号;与所述第一装置和所述第二表装置耦合的第一比较装置,它用于验证所述第二环,号大于或等于所述第一环号,从而验证所述用户具有存取所述装置的特权。与所述第一装置和所述第一表装置耦合的第二比较装置,它用于验证所述范围小本或等于预定量,并验证所述缓冲器不溢出页面;与所述第一和所述第二比较装置和所述第一装置和第二表装置耦合的第三装置,它用于用所述实际通道号取代所述虚拟通道号和所述第一环编号,从而产生所述实际I/O命令。
6.一种把虚拟I/O命令翻译为实际I/O命令的方法包括以下步骤A.测试存储在描述符段中的基地址寄存器中的新I/O位是否置位,指示虚拟I/O命令;B.测试虚拟I/O命令环号是否小于或等于1,以指示命令是特权命令;C.计算I/O页面描述符的存储位置;D.把I/O页面描述符存入存储器的存储单元;E.验证I/O页面描述符的有效位;F.依靠把虚拟通道号加至I/O页面描述符的实际页帧号的方法使I/O描述符定位;G.验证I/O描述表能适应虚拟通道号;H.验证I/O描述符的有效位;I.计算Reff值;J.验证Reff小于或等于I/O描述符的环 号R1;K.用实际通道号取代虚拟通道号。
7.一种把虚拟IOLD命令翻译为实际IOLD命令的方法包括以下步骤A.测试描述符段基地址寄存器的新I/O位是否置位,以指示虚拟I/O命令;B.测试虚拟I/O命令的环号小于或等于1,指示是特权命令;C.计算I/O页面描述符的存储位置;D.把I/O页面描述符存入存储器的存储单元;E.验证I/O页面描述符的有效位;F.依靠把虚拟通道 号加至I/O页面描述符的实际页帧号的方法定位I/O描述符;G.验证I/O描述符表能否适应虚拟通道号;H.验证I/O描述符的有效位;I.计算Reff值;J.测试虚拟IOLD的方向位,以判明是输入还是输出命令;K.测试I/O描述符的读位是否置位,Reff是否小于或等于I/O描述符的环位R2;L.在IOLD缓冲器页面描述符中置位修改位(M);M.测试I/O描述符的写位是否置位,Reff是否小于或等于I/O描述符的环位R1;N.测试IOLD缓冲器的段描述符中I/O位是否置位;O.验证缓冲器尺寸是否小于预定值;P.用实际通道号取代虚拟通道号。
全文摘要
提供安全输入/输出命令系统的装置,用以下方法来实现;操作系统产生包含虚拟通道号的虚拟输入/输出命令,验证用户具有存取进程和装置的权利,然后产生实际输入/输出命令,该输入/输出命令通过系统总线送到命令中包含的实际通道号所寻址的装置。
文档编号G06F13/12GK1033119SQ88104900
公开日1989年5月24日 申请日期1988年8月6日 优先权日1987年8月7日
发明者约瑟夫斯·G·迪希里, 哈里·W·布朗, 约瑟夫斯·M·瓦伦泰 申请人:霍尼韦尔·布尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1