專利名稱:虛擬存儲(chǔ)系統(tǒng)中的直接輸入/輸出的制作方法
本發(fā)明一般涉及虛擬存儲(chǔ)系統(tǒng)。由于其工作方式,使得計(jì)算系統(tǒng)處理器允許程序訪問(wèn)輸入/輸出(I/O)設(shè)備。在先有技術(shù)中,計(jì)算機(jī)系統(tǒng)上運(yùn)行的每一個(gè)程序都有其自己的虛擬地址空間。這使系統(tǒng)復(fù)雜化,且性能不為最佳。例如,要為每個(gè)程序保留一個(gè)單獨(dú)的頁(yè)表,該頁(yè)表用于將虛擬存儲(chǔ)地址映象到存儲(chǔ)器中的物理地址單元。此外,如果每個(gè)程序有其自己的虛擬地址空間,則每次變換計(jì)算機(jī)上的程序時(shí),都必須使前一程序的轉(zhuǎn)換緩沖區(qū)和隱含存儲(chǔ)器(cache)入口無(wú)效。
另外,在先有技術(shù)的虛擬存儲(chǔ)系統(tǒng)中,有兩種方法可以訪問(wèn)I/O設(shè)備。第一種方法是在計(jì)算機(jī)的指令集內(nèi)提供控制I/O設(shè)備的特殊指令。第二種方法即所謂的內(nèi)存映象I/O,是為每個(gè)I/O設(shè)備保留特定的地址。為每個(gè)I/O設(shè)備保留的地址稱做其地址空間。在內(nèi)存映象I/O系統(tǒng)中,當(dāng)處理器對(duì)I/O設(shè)備的I/O地址空間內(nèi)的地址做讀或?qū)懖僮鲿r(shí),I/O設(shè)備將進(jìn)行檢測(cè)并譯碼。I/O設(shè)備的每個(gè)寄存器都與地址空間內(nèi)的一個(gè)地址相關(guān)聯(lián)。對(duì)寄存器的操作是這樣實(shí)現(xiàn)的,即每當(dāng)對(duì)I/O設(shè)備地址空間內(nèi)的一個(gè)地址做讀或?qū)懖僮鲿r(shí),其結(jié)果就是對(duì)與該地址相關(guān)聯(lián)的I/O設(shè)備中的寄存器做讀或?qū)懖僮鳌_@樣,對(duì)I/O設(shè)備地址空間內(nèi)地址的讀、寫(xiě)操作可以用來(lái)控制I/O設(shè)備。
使用內(nèi)存映象I/O系統(tǒng)的一個(gè)優(yōu)點(diǎn)是,高級(jí)語(yǔ)言寫(xiě)的過(guò)程可以訪問(wèn)I/O設(shè)備。在某些先有技術(shù)的計(jì)算機(jī)結(jié)構(gòu)中,應(yīng)用程序可以直接訪問(wèn)計(jì)算機(jī)I/O設(shè)備的全部或部分地址空間。但在多種任務(wù)環(huán)境中,這種方法會(huì)帶來(lái)某些困難。例如,如果一個(gè)應(yīng)用程序誤初始化了可以進(jìn)行直接內(nèi)存訪問(wèn)(DMA)傳輸?shù)腎/O設(shè)備,這將導(dǎo)致I/O設(shè)備讀或?qū)懛峙浣o其它應(yīng)用程序的內(nèi)存空間,從而使系統(tǒng)的安全性受到破壞。
在某些先有技術(shù)方案中,為避免在多任務(wù)環(huán)境中破壞系統(tǒng)的安全性,采用了不允許應(yīng)用程序直接訪問(wèn)I/O設(shè)備地址空間的措施。所有I/O地址只能被特權(quán)過(guò)程訪問(wèn)。這些過(guò)程稱做I/O驅(qū)動(dòng)程序。這種方法雖然提供了高級(jí)別的系統(tǒng)安全性,但也極大地增加了軟件開(kāi)銷,效率不高并受到許多限制。
根據(jù)本發(fā)明的優(yōu)選實(shí)施例,虛擬存儲(chǔ)系統(tǒng)中的地址空間是全程的。全程的意味著,不管處理器上運(yùn)行的是什么程序,物理存儲(chǔ)單元映象到相同的虛擬地址空間。由寫(xiě)禁止位伴隨的訪問(wèn)碼用于控制程序訪問(wèn)不同的地址。
另外,虛擬存儲(chǔ)系統(tǒng)的屬性用于控制對(duì)I/O設(shè)備地址空間的訪問(wèn)。在虛擬存儲(chǔ)系統(tǒng)中,對(duì)處理器地址空間中頁(yè)的訪問(wèn)分配在每個(gè)應(yīng)用程序中。這種訪問(wèn)可以是讀地址空間中存儲(chǔ)的信息(讀訪問(wèn)),也可以是讀地址空間中存儲(chǔ)的信息并向地址空間中寫(xiě)入信息(讀、寫(xiě)訪問(wèn))。
在本發(fā)明的優(yōu)選實(shí)施例中,分配給每個(gè)I/O設(shè)備兩頁(yè)的地址空間,其中一頁(yè)是特權(quán)頁(yè),另一頁(yè)是非特權(quán)頁(yè)。由于頁(yè)可以很大,例如一頁(yè)可以包含512個(gè)地址,以致每一頁(yè)地址空間中的許多地址并沒(méi)有I/O設(shè)備的寄存器與其相關(guān)聯(lián)。
但是,每個(gè)I/O設(shè)備寄存器都與它的I/O設(shè)備兩頁(yè)地址空間中每一頁(yè)的一個(gè)地址相關(guān)聯(lián)。所有與某單個(gè)寄存器相關(guān)聯(lián)的各自頁(yè)中的地址都有相同的對(duì)該頁(yè)的偏移量。寄存器可以是特權(quán)的或非特權(quán)的。如果一個(gè)寄存器用于控制I/O設(shè)備的DMA操作,或用于對(duì)處理器產(chǎn)生中斷,或可用于其它破壞系統(tǒng)安全性的操作,則該寄存器被認(rèn)為是特權(quán)寄存器。
非特權(quán)寄存器可在特權(quán)頁(yè)和非特權(quán)頁(yè)中做完全操作。在特權(quán)頁(yè)和非特權(quán)頁(yè)中的完全操作意味著,對(duì)特權(quán)頁(yè)或非特權(quán)頁(yè)中與非特權(quán)寄存器相關(guān)聯(lián)的地址的讀或?qū)懀浣Y(jié)果都是對(duì)非特權(quán)寄存器的讀或?qū)憽?br>特權(quán)寄存器只能在特權(quán)頁(yè)中做完全操作。這就是說(shuō),對(duì)與特權(quán)寄存器相關(guān)聯(lián)的地址的讀或?qū)?,只有在特?quán)頁(yè)中才導(dǎo)致對(duì)特權(quán)寄存器的讀或?qū)憽?duì)應(yīng)不同的設(shè)置,特權(quán)寄存器在非特權(quán)頁(yè)中可以是只能讀不能寫(xiě),或者是既不能讀也不能寫(xiě)。
圖1示出了耦合到總線上的系統(tǒng)處理器、系統(tǒng)存儲(chǔ)器和各種I/O設(shè)備。
圖2A和圖2B示出了存儲(chǔ)器地址空間中的一頁(yè)。
圖3示出了與本發(fā)明優(yōu)選實(shí)施例對(duì)應(yīng)的計(jì)算機(jī)存儲(chǔ)器地址空間。
圖4示出了圖1中各種I/O設(shè)備之一的方框圖。
圖5示出了用于將虛擬存儲(chǔ)地址轉(zhuǎn)換為物理存儲(chǔ)地址的表的兩個(gè)入口。
圖6示出了圖1中系統(tǒng)處理器的控制寄存器。
圖7示出了包括圖5中入口的表。
圖8示出了與圖7中的表耦合的散列設(shè)備。
圖1所示為一個(gè)計(jì)算系統(tǒng)。該計(jì)算系統(tǒng)包括系統(tǒng)處理器101,系統(tǒng)存儲(chǔ)器102,輸入/輸出(I/O)設(shè)備103,I/O設(shè)備104,I/O設(shè)備105,I/O設(shè)備106和I/O設(shè)備107,這些設(shè)備都耦合到總線100上。系統(tǒng)處理器101通過(guò)向?yàn)镮/O設(shè)備103-107保留的地址空間讀、寫(xiě)數(shù)據(jù)與I/O設(shè)備103-107通訊。
圖3給出了圖1所示計(jì)算系統(tǒng)中地址空間370的分配方法。地址空間370可尋址232字節(jié)數(shù)據(jù)(或230個(gè)32位字的數(shù)據(jù))。地址空間370中的371段是為存儲(chǔ)地址保留的。371段中的371b子段是為存儲(chǔ)地址保留的,而沒(méi)有設(shè)置。371段中的371a子段由在處理器101上運(yùn)行的操作系統(tǒng)和用戶程序使用并設(shè)置。一般地,371b子段比371a子段大得多。地址空間370中的373段分配給I/O設(shè)備使用。370所有存儲(chǔ)器被分成頁(yè),包括圖示的301頁(yè)和302頁(yè)。每一頁(yè)可尋址512個(gè)32位字。
用圖7所示表550入口處相連的訪問(wèn)識(shí)別(AID)值可以限制對(duì)存儲(chǔ)器頁(yè)的訪問(wèn)。表550將虛擬存儲(chǔ)器頁(yè)地址轉(zhuǎn)換為系統(tǒng)存儲(chǔ)器102中物理存儲(chǔ)空間的存儲(chǔ)器頁(yè)地址。表550包括若干聯(lián)接列表,如示于框圖550中的聯(lián)接列表702,聯(lián)接列表703,聯(lián)接到表704和聯(lián)接到表705。圖5給出了聯(lián)接列表702中的入口501和入口511。入口501和入口511都包含四個(gè)32位的存儲(chǔ)單元。
入口501中503單元的內(nèi)容是指向入口511的地址。入口501還包含504和505單元,其中內(nèi)容是虛擬頁(yè)地址,系統(tǒng)處理器101利用表550的入口501單元得到504和505單元中存儲(chǔ)的虛擬頁(yè)地址所對(duì)應(yīng)的物理存儲(chǔ)空間。入口501還包含506單元。506單元包含16位的訪問(wèn)權(quán)力段507和15位的508段,508段包括AID值和一位的509段,其內(nèi)容恒為邏輯0。
入口511包含513單元,513單元的內(nèi)容是指向聯(lián)接列表702中下一個(gè)入口的地址。入口511還包含514和515單元,其內(nèi)容為虛擬頁(yè)地址。系統(tǒng)處理器101利用表550中入口511單元得到514和515單元中存儲(chǔ)的虛擬頁(yè)地址所對(duì)應(yīng)的物理存儲(chǔ)地址。入口511還包含516單元。516單元包括16位的訪問(wèn)權(quán)力段517和15位的518段。518段包括AID值和一位的519段,其內(nèi)容恒為邏輯0。
系統(tǒng)處理器101包含四個(gè)控制寄存器601,611,621和631,這些寄存器含有當(dāng)前運(yùn)行程序的AID值。寄存器601的602段,寄存器611的612段,寄存器621的622段以及寄存器631的632段每一個(gè)都可以包含一個(gè)15位的AID值。寄存器601的603段,寄存器611的613段,寄存器621的623段和寄存器631的633段都包含一位的寫(xiě)禁止值(WD)。
當(dāng)在系統(tǒng)處理器101上運(yùn)行的程序要訪問(wèn)存儲(chǔ)器的物理頁(yè)時(shí),可以利用表550將存儲(chǔ)器頁(yè)的虛擬地址轉(zhuǎn)換為物理頁(yè)地址。圖7所示的散列設(shè)備701接收并散列虛擬地址,以根據(jù)表550中聯(lián)接列表第一入口的位置產(chǎn)生物理頁(yè)地址。例如,散列一虛擬頁(yè)地址可以產(chǎn)生對(duì)應(yīng)于表550中入口501的物理地址。被散列的虛擬地址與入口501的504和505單元中的虛擬地址比較,如果匹配,物理頁(yè)就已經(jīng)映象到虛擬頁(yè)中。
檢查訪問(wèn)權(quán)力段507中的訪問(wèn)碼。這個(gè)訪問(wèn)碼指出哪一個(gè)級(jí)別的程序允許讀、寫(xiě)或訪問(wèn)物理頁(yè)。然后檢查508單元中的AID值。如果508單元中的AID值是0,或與控制寄存器601,611,621或631之一的AID值匹配,則允許程序訪問(wèn)存儲(chǔ)器中的物理頁(yè)。如果匹配的控制寄存器601、611、621或631的WD值是邏輯1,則不允許程序做寫(xiě)訪問(wèn)。如果508單元的AID值不與控制寄存器601、611、621或631的AID值匹配,或如果508單元的AID值不等于0,則不允許程序訪問(wèn)存儲(chǔ)器中的物理頁(yè)。
如果被散列的虛擬地址與504和505單元中的虛擬地址不匹配,則考慮聯(lián)接列表702中的下一個(gè)入口-入口511。散列的虛擬地址與入口511的514和515單元中的虛擬地址比較,如果匹配,則檢查訪問(wèn)權(quán)力段517中的訪問(wèn)碼。鑒定當(dāng)前特權(quán)級(jí)別程序以確定允許對(duì)該程序采用什么形式的訪問(wèn)然后將518單元中的AID值與控制寄存器601、611、621和631的AID值比效。如此等等。
圖8所示散列設(shè)備701和表550。散列設(shè)備701包括散列發(fā)生器720和散列表801。散列發(fā)生器720接收虛擬地址,并生成散列表地址。檢查散列表地址的內(nèi)容。如果其內(nèi)容是一空指針,則由虛擬地址尋址的數(shù)據(jù)不在主存儲(chǔ)器內(nèi);如果其內(nèi)容是表550中的一個(gè)地址,則按如上所述搜索以表550中地址為起始地址的聯(lián)接列表,直到找到包括該虛擬地址的入口或找到空指針為止。此處空指針仍指出由虛擬地址尋址的數(shù)據(jù)不在主存儲(chǔ)器內(nèi)。如果尋址的數(shù)據(jù)不在主存儲(chǔ)器內(nèi),則產(chǎn)生頁(yè)錯(cuò)誤,并由軟件將數(shù)據(jù)從磁盤或其它存儲(chǔ)設(shè)備調(diào)入。
如圖所示表550是一個(gè)頁(yè)目錄。表550在入口PDIRO處有一基地址。PDIRO對(duì)應(yīng)地址空間370底部的某個(gè)地址。表550中的正向入口此時(shí)對(duì)應(yīng)存儲(chǔ)器中371段的頁(yè)。地址空間370中373段的頁(yè)亦需通過(guò)表550中的入口來(lái)尋址。為避免在表550中有大量未使用的入口段對(duì)應(yīng)371段中未使用的371b子段,可利用表550中的負(fù)向入口來(lái)尋址表370中373段的地址。例如,PDIR-1對(duì)應(yīng)地址空間370頂部的地址。用這種方法,尋址地址空間370中的373段時(shí),就不必在表550中保留對(duì)應(yīng)地址空間370中未使用的371b子段的大量空白。
圖3A給出了373段中物理地址位的分配方法。381段包含地址380的高四位。373段在地址空間370的頂部;因此,381段中的每一位都是邏輯1,表示某個(gè)I/O設(shè)備寄存器被尋址。382段包含16位的地址380,382段中的16位值確定哪個(gè)I/O設(shè)備被尋址。本實(shí)施例中,其地址空間可用于216(約為65000)個(gè)I/O設(shè)備。位元383指出被尋址的是特權(quán)頁(yè)還是非特權(quán)頁(yè)。地址380中384段各位指出I/O設(shè)備中哪一個(gè)特定寄存器被尋址。385段的位包含地址380中的2位。385段中的2位均為邏輯0,因?yàn)楸緦?shí)施例中寄存器是按32位字尋址,而地址空間允許按8位字節(jié)尋址。
如圖4所示,I/O設(shè)備107包括I/O適配器410和設(shè)備接口411。為描述方便,寄存器400,寄存器401,寄存器402,寄存器403,寄存器404,寄存器405和緩沖器406均示于I/O適配器410中。寄存器400包含一個(gè)地址,該地址被寫(xiě)時(shí),即向系統(tǒng)處理器101發(fā)生中斷。寄存器401接收命令,這些命令用于使I/O設(shè)備107初始化設(shè)備接口411,從設(shè)備接口411讀數(shù)據(jù),或向設(shè)備接口411寫(xiě)數(shù)據(jù)。寄存器402的內(nèi)容為一表示系統(tǒng)存儲(chǔ)器102中地址的數(shù)值,I/O適配器410以此為起始地址執(zhí)行直接內(nèi)存訪問(wèn)(DMA)傳輸。寄存器403的內(nèi)容為一個(gè)一字節(jié)的計(jì)數(shù)值,利用(DMA)傳輸方式指出要向系統(tǒng)存儲(chǔ)器102傳輸?shù)臄?shù)據(jù)數(shù)。寄存器404接收命令,以啟動(dòng)或終止DMA傳輸。寄存器405中包含I/O適配器410和系統(tǒng)存儲(chǔ)器402之間最后一次DMA傳輸?shù)臓顟B(tài)信息。
圖2A示出了與I/O設(shè)備107相關(guān)聯(lián)的地址空間301中的一個(gè)非特權(quán)頁(yè)。圖2B示出了與I/O設(shè)備107相關(guān)聯(lián)的地址空間302中的一個(gè)特權(quán)頁(yè)。
寄存器400-405中的每一個(gè)都與301頁(yè)和302頁(yè)中的一個(gè)地址相關(guān)聯(lián)。例如,301頁(yè)中的地址IPO與寄存器400相關(guān)聯(lián),301頁(yè)中的地址1P1與寄存器401相關(guān)聯(lián),301頁(yè)中的地址1P2與寄存器402相關(guān)聯(lián),301頁(yè)中的地址1P3與寄存器403相關(guān)聯(lián),301頁(yè)中的地址1P4與寄存器404相關(guān)聯(lián),301頁(yè)中的地址1P5與寄存器405相關(guān)聯(lián);302頁(yè)中的地址2P0與寄存器400相關(guān)聯(lián),302頁(yè)中的地址2P1與寄存器401相關(guān)聯(lián),302頁(yè)中的地址2P2與寄存器402相關(guān)聯(lián),302頁(yè)中的地址2P3與寄存器403相關(guān)聯(lián),302頁(yè)中的地址2P4與寄存器404相關(guān)聯(lián),302頁(yè)中的地址2P5與寄存器405相關(guān)聯(lián)。非特權(quán)頁(yè)301中的其余地址,即地址1P6-1P8,1P29-1P31,1P505-1P511,與特權(quán)頁(yè)302中的其余地址,即地址2P6-2P8,2P29-2P31,2P505-2P511,可以不與寄存器相關(guān)聯(lián),因此可以是未設(shè)置的地址空間。
雖然寄存器400-405中的每一個(gè)都與非特權(quán)頁(yè)301及特權(quán)頁(yè)302中的某個(gè)地址相關(guān)聯(lián),但并非寄存器400-405在非特權(quán)頁(yè)301和特權(quán)頁(yè)302中都能做完全操作。例如,只能在特權(quán)頁(yè)302中對(duì)寄存器400,402和403做完全操作。對(duì)這些寄存器的非授權(quán)訪問(wèn)可能破壞系統(tǒng)的安全性,因?yàn)榧拇嫫?00可直接用于中斷處理器101,而寄存器402和403則與對(duì)系統(tǒng)存儲(chǔ)器102的DMA處理有關(guān)。根據(jù)不同的設(shè)置,可以允許通過(guò)非特權(quán)頁(yè)301對(duì)寄存器400,402和403做讀訪問(wèn)。寄存器401用于設(shè)備接口411和I/O適配器410之間的處理。做這些處理不會(huì)破壞系統(tǒng)的安全性,因此既可在特權(quán)頁(yè)302中也可在非特權(quán)頁(yè)301中對(duì)寄存器401做完全操作。雖然寄存器404和405用于DMA傳輸,但如果系統(tǒng)設(shè)計(jì)合理,這些寄存器可以使用而不會(huì)破壞系統(tǒng)的安全性。例如,特權(quán)寄存器(如寄存器403)中的一位可以用于使能DMA處理,這樣只有當(dāng)特權(quán)程序使能DMA處理后,寄存器404才能啟動(dòng)DMA處理。
對(duì)特權(quán)與非特權(quán)寄存器的設(shè)置應(yīng)使讀這些寄存器時(shí)不會(huì)對(duì)系統(tǒng)產(chǎn)生其它副作用。例如,讀不應(yīng)引起新的I/O操作。這就使得用戶程序可以觀察并監(jiān)測(cè)I/O活動(dòng),但不允許用戶程序影響正在執(zhí)行的I/O設(shè)備。
特權(quán)與非特權(quán)寄存器的設(shè)置還應(yīng)使得系統(tǒng)不管對(duì)未設(shè)置地址的寫(xiě)操作,或當(dāng)做對(duì)同一頁(yè)中的某個(gè)設(shè)置地址寫(xiě)入未定義數(shù)據(jù)來(lái)處理。
此處描述的實(shí)施例為設(shè)備的分配提供了極大的靈活性并允許系統(tǒng)保護(hù),但上述實(shí)施的多種變型也是可以實(shí)現(xiàn)的。例如,每個(gè)I/O設(shè)備可以映象到兩個(gè)存儲(chǔ)頁(yè)中-一個(gè)特權(quán)頁(yè)和一個(gè)非特權(quán)頁(yè),但每個(gè)寄存器只在一個(gè)頁(yè)中設(shè)置。這可能會(huì)影響處理器的軟件性能,因?yàn)橛眠@種方法時(shí),要做兩頁(yè)的訪問(wèn)才能訪問(wèn)到一個(gè)I/O設(shè)備的所有控制寄存器。另一種可選擇的方法是,每個(gè)用戶設(shè)備都可映象到一頁(yè)中。這使得可以在一頁(yè)中訪問(wèn)到一個(gè)I/O設(shè)備的所有寄存器,但只對(duì)只有非特權(quán)寄存器的I/O設(shè)備提供安全保護(hù)。
權(quán)利要求
1.計(jì)算設(shè)備,包括執(zhí)行多個(gè)程序的處理裝置;使多個(gè)程序可以分時(shí)共享上述處理裝置的分時(shí)裝置;用于存儲(chǔ)數(shù)據(jù)的局部存儲(chǔ)器裝置,局部存儲(chǔ)器裝置包括第一類物理存儲(chǔ)單元;用于存儲(chǔ)附加數(shù)據(jù)的遠(yuǎn)程存儲(chǔ)器裝置,遠(yuǎn)程存儲(chǔ)器裝置包括第二類物理存儲(chǔ)單元;用于將虛擬地址分配到可被多個(gè)程序中任意一個(gè)訪問(wèn)的局部存儲(chǔ)器裝置和遠(yuǎn)程存儲(chǔ)器裝置的物理存儲(chǔ)單元的映象裝置,其中對(duì)應(yīng)局部存儲(chǔ)器裝置和遠(yuǎn)程存儲(chǔ)器裝置中每一物理存儲(chǔ)單元的虛擬地址對(duì)于多個(gè)程序中的任意一個(gè)都是相同的。
2.根據(jù)權(quán)利要求
1中所述的計(jì)算設(shè)備,其中虛擬地址被分組成頁(yè),每一頁(yè)都有一個(gè)與其相關(guān)聯(lián)的訪問(wèn)碼。
3.根據(jù)權(quán)利要求
2中所述的計(jì)算設(shè)備,其中每個(gè)程序都有一組與其相關(guān)聯(lián)的訪問(wèn)碼,其中處理裝置將不允許有第一類訪問(wèn)碼的第一類程序訪問(wèn)有第一訪問(wèn)碼的第一頁(yè)中的第一虛擬地址,除非該第一訪問(wèn)碼與第一類訪問(wèn)碼中的第二訪問(wèn)碼匹配。
4.根據(jù)權(quán)利要求
3中所述的計(jì)算設(shè)備,還包括了與第一程序相關(guān)聯(lián)的寫(xiě)禁止裝置,以防止第一程序?qū)Φ谝豁?yè)做寫(xiě)操作。
5.根據(jù)權(quán)利要求
3中所述的計(jì)算設(shè)備,其中第一頁(yè)中的第一虛擬地址分配給第一物理存儲(chǔ)單元,第一物理存儲(chǔ)單元用做輸入/輸出設(shè)備的控制寄存器。
6.根據(jù)權(quán)利要求
5中所述的計(jì)算設(shè)備,其中第二頁(yè)中的第二虛擬地址也分配給第一物理存儲(chǔ)單元。
7.根據(jù)權(quán)利要求
6中所述的計(jì)算設(shè)備,其中第一程序可以讀第一物理存儲(chǔ)單元的內(nèi)容,但不能修改第一物理存儲(chǔ)單元的內(nèi)容。
8.根據(jù)權(quán)利要求
6中所述的計(jì)算設(shè)備,其中第一程序與一寫(xiě)禁止裝置相關(guān)聯(lián),以防止第一程序?qū)Φ谝豁?yè)做寫(xiě)操作。
9.計(jì)算機(jī)中的虛擬存儲(chǔ)系統(tǒng),該虛擬存儲(chǔ)系統(tǒng)包括用于將存儲(chǔ)系統(tǒng)內(nèi)的虛擬地址分頁(yè)的分頁(yè)裝置;允許在計(jì)算機(jī)上運(yùn)行的第一程序訪問(wèn)虛擬存儲(chǔ)地址第一頁(yè)的訪問(wèn)裝置;用于防止第一程序修改用第一頁(yè)中虛擬地址尋址的物理存儲(chǔ)單元之內(nèi)容的禁止裝置。
10.權(quán)利要求
9中所述的虛擬存儲(chǔ)系統(tǒng)還包括用于將I/O設(shè)備寄存器映象到第一頁(yè)中的第一虛擬存儲(chǔ)地址及第二頁(yè)中第二虛擬存儲(chǔ)地址的裝置。
11.根據(jù)權(quán)利要求
10中所述的虛擬存儲(chǔ)系統(tǒng),其中第一虛擬存儲(chǔ)地址在第一頁(yè)的第一偏移量處,第二虛擬存儲(chǔ)地址在第二頁(yè)的第二偏移量處,第一偏移量與第二偏移量相同。
12.計(jì)算系統(tǒng),包括外部設(shè)備,該外部設(shè)備包括第一寄存器;存儲(chǔ)管理系統(tǒng),該存儲(chǔ)管理系統(tǒng)包括分為若干頁(yè)的地址空間、一個(gè)含有第一類地址的第一頁(yè)和一個(gè)含有第二類地址的第二頁(yè);控制程序訪問(wèn)上述頁(yè)的訪問(wèn)裝置;用于使第一類地址中的第一地址與第一寄存器相關(guān)聯(lián)的映象裝置。
13.根據(jù)權(quán)利要求
12中所述的計(jì)算系統(tǒng),其中映象裝置使第二類頁(yè)的第二地址與第一寄存器相關(guān)聯(lián)。
14.根據(jù)權(quán)利要求
13中所述的計(jì)算系統(tǒng),其中訪問(wèn)裝置允許第一程序訪問(wèn)第一頁(yè)。
15.根據(jù)權(quán)利要求
14中所述的計(jì)算系統(tǒng),其中訪問(wèn)裝置禁止第一程序訪問(wèn)第二頁(yè)。
16.根據(jù)權(quán)利要求
15中所述的計(jì)算系統(tǒng),其中第一程序可以從第一寄存器中讀數(shù)據(jù),但不能向第一寄存器寫(xiě)數(shù)據(jù)。
17.根據(jù)權(quán)利要求
15中所述的計(jì)算系統(tǒng),其中當(dāng)?shù)谝怀绦驈牡谝患拇嫫髦凶x數(shù)據(jù)時(shí),這一操作向第一程序返回信息,但對(duì)外部設(shè)備沒(méi)有其它影響。
18.根據(jù)權(quán)利要求
12中所述的計(jì)算系統(tǒng),其中第一類地址中的第三地址不與物理存儲(chǔ)單元相關(guān)聯(lián)。
19.根據(jù)權(quán)利要求
18中所述的計(jì)算系統(tǒng),其中對(duì)第三地址做寫(xiě)操作時(shí),第一程序不對(duì)物理存儲(chǔ)單元產(chǎn)生影響。
20.根據(jù)權(quán)利要求
18中所述的計(jì)算系統(tǒng),其中當(dāng)?shù)谝怀绦驅(qū)Φ谌刂纷鰧?xiě)操作時(shí),計(jì)算系統(tǒng)向與第一類地址中第四地址相關(guān)聯(lián)的物理單元寫(xiě)數(shù)據(jù)。
專利摘要
根據(jù)本發(fā)明的優(yōu)選實(shí)施例,虛擬存儲(chǔ)系統(tǒng)用于控制對(duì)I/O設(shè)備地址空間的訪問(wèn)。在虛擬存儲(chǔ)系統(tǒng)中,對(duì)處理器地址空間頁(yè)的訪問(wèn)分配在每個(gè)應(yīng)用程序中。每個(gè)I/O設(shè)備分配有兩頁(yè)地址空間,一頁(yè)是特權(quán)頁(yè),另一頁(yè)是非特權(quán)頁(yè)。每個(gè)I/O設(shè)備寄存器與其兩頁(yè)I/O設(shè)備地址空間中每一頁(yè)的一個(gè)地址相關(guān)聯(lián)。地址空間是全程的。全程的意味著,不管什么程序在處理器上運(yùn)行,物理存儲(chǔ)單元都映象到相同的虛擬地址空間。帶有寫(xiě)禁止位的訪問(wèn)碼用于控制程序?qū)Ω鞣N地址的訪問(wèn)。
文檔編號(hào)G06F12/02GK86103675SQ86103675
公開(kāi)日1986年12月24日 申請(qǐng)日期1986年6月2日
發(fā)明者史蒂文·C·貝特納, 威廉·R·布里格, 戴維·V·詹姆斯, 劉作凱, 邁克爾·J·馬洪, 特雷斯·C·米勒, 小威廉·S·沃利 申請(qǐng)人:惠普公司導(dǎo)出引文BiBTeX, EndNote, RefMan