專利名稱:保護存儲器的部分的方法和設(shè)備的制作方法
總的來說,本發(fā)明涉及計算機系統(tǒng),更準確地說,它涉及對存儲在位于計算機系統(tǒng)內(nèi)的存儲器部分中的數(shù)據(jù)的保護。特別是公開了在計算機系統(tǒng)和操作系統(tǒng)對其沒有直接訪問權(quán)的存儲器的部分之間傳送數(shù)據(jù)的機制。
當一個進程在計算機系統(tǒng)上進行時,該進程利用存儲器的指定部分存儲和檢索數(shù)據(jù)。其它進程也可能訪問存儲器的那些指定部分。
當在計算機系統(tǒng)上運行的第一個進程被中斷而隨后又恢復(fù)時,在第一個進程被中斷的期間,在計算機系統(tǒng)上運行的第二個進程可能會訪問先前被第一個進程使用過的存儲器的部分。當?shù)谝粋€進程被中斷時,如果第二個進程重寫由第一個進程存儲在存儲器中的數(shù)據(jù)值,那末,當?shù)谝粋€進程恢復(fù)時,在它被中斷以前它曾存儲在存儲器中的數(shù)據(jù)值可能將不復(fù)存在,這就可能產(chǎn)生錯誤。
此外,如果幾個進程在一個計算機系統(tǒng)內(nèi)同時運行,一個進程可能把數(shù)據(jù)存儲到另一進程正在使用的存儲器的部分中去。這樣,在一個進程檢索其已存儲的數(shù)據(jù)之前,該數(shù)據(jù)可能已被破壞。
一個計算機系統(tǒng)可能經(jīng)歷系統(tǒng)再啟動,這也是典型的。這樣的計算機系統(tǒng)可能有一個提供數(shù)據(jù)緩沖器的軟件應(yīng)用程序在運行,該緩沖器的內(nèi)容不會因系統(tǒng)再啟動而被擦除。例如,這種情況可能會在紐約州Armonk鎮(zhèn)的IBM公司的一項產(chǎn)品,稱為“事項處理設(shè)施(TPF)”的軟件包中遇到。在TPF中,如果有系統(tǒng)再啟動,某些數(shù)據(jù)緩沖器的內(nèi)容不會被擦除。在再啟動完成之后,當TPF繼續(xù)在系統(tǒng)再啟動之前它所處的點上運行時,未被擦除的數(shù)據(jù)緩沖器的內(nèi)容仍保持原樣是最理想的。但是,這些數(shù)據(jù)緩沖器是系統(tǒng)上運行的任何應(yīng)用程序都可以訪問的。因此,這些數(shù)據(jù)緩沖器可能會被操作系統(tǒng)中的或在操作系統(tǒng)上運行的應(yīng)用程序中的錯誤所破壞。
一個計算機系統(tǒng)的存儲器包括可見部分和隱式部分。存儲器的可見部分可由處理器及在計算機系統(tǒng)內(nèi)運行的操作系統(tǒng)訪問。對于存儲器的隱式部分來說,則排除了由處理器或操作系統(tǒng)訪問的可能性。存儲器的隱式部分用來存儲由處理器或操作系統(tǒng)傳送的數(shù)據(jù)。位于存儲器可見部分的通信區(qū)接收來自處理器或操作系統(tǒng)的數(shù)據(jù)存取請求。既能訪問存儲器的可見部分,又能訪問存儲器的隱式部分的隱式服務(wù)程序接收來自通信區(qū)的數(shù)據(jù)存取請求,并啟動從隱式存儲器的數(shù)據(jù)存取。
圖1是根據(jù)本發(fā)明的典型實施例說明存儲器配置及其與多個處理器和多個輸入/輸出(I/O)裝置關(guān)系的框圖。
圖2是說明圖1所示的可見存儲器的結(jié)構(gòu)及圖1所示的可見存儲器與隱式存儲器之間的通信路徑的框圖。
圖3是說明圖1所示的隱式存儲器內(nèi)部結(jié)構(gòu)的框圖。
圖4是根據(jù)本發(fā)明的典型實施例說明操作系統(tǒng)放棄處理器對隱式服務(wù)程序的控制權(quán)的某些處理步驟的流程圖。
圖5是根據(jù)本發(fā)明的典型實施例說明圖3的隱式服務(wù)程序所完成的步驟的流程圖。
圖6是根據(jù)本發(fā)明的典型實施例說明用來向隱式服務(wù)程序傳送請求的隊列結(jié)構(gòu)的框圖。
圖1根據(jù)本發(fā)明的典型實施例說明一個計算機系統(tǒng)。如圖所示,計算機硬件包括一個或多個處理器15a-15n,它們通過某個總線或其它互連機構(gòu)10與存儲器20連接。
可以使用任何計算機系統(tǒng),但是,根據(jù)本發(fā)明的典型實施例,可以使用1994年6月第24屆國際容錯計算專題討論會匯編第414-423頁,由Abbott,M.,Har,D.Herger,L.,kauffman,M.,Mak,K.,Murdock,J.,Schulz,C.,Smith,T.B.,Tremaine,B.,Yeh,D.,Wong,L.所著的“耐用存儲器RS/6000系統(tǒng)設(shè)計”中所描述的“耐用存儲器RS/6000(DM/6000)”。這個系統(tǒng)提供這樣的硬件冗余,使任一硬件部件或電源的故障都不會使計算機停機。
存儲器20的一個部分是可見存儲器30。在每個處理器15a-15n上運行的程序有權(quán)訪問可見存儲器30。
如圖2所示,可見存儲器30包括一個象AIX(由紐約州Armonk鎮(zhèn)的IBM公司生產(chǎn))那樣的通用操作系統(tǒng)40以及應(yīng)用程序5a-5n。存儲器20的另一部分是隱式存儲器60。有幾種方法可防止操作系統(tǒng)40及應(yīng)用程序5a-5n訪問這個隱式存儲器。一種較可取的方法利用一種能力通知AIX,存儲器20的某些部分是有故障的。當AIX被引導時,它期待著找到一個包括對有故障的存儲器部分的描述的IPL控制塊。AIX將決不訪問或以任何方式改變被確定為有故障的任何存儲器的內(nèi)容,在其虛擬地址表中對這類存儲器不作記錄。因此,當AIX為其正在使用的無論那個處理器15a-15n一接通虛擬地址變換時,這個存儲器就被有效地隱藏起來。這樣,即使在它可被訪問的短暫的初始化階段,存儲器60也決沒有被修改的危險。其它操作系統(tǒng)在引導時能指定可用存儲器。如果引導時指定的可用存儲容量小于總的實際存儲容量??捎么鎯ζ髦付▍^(qū)域之外的存儲器部分對于操作系統(tǒng)來說將是不可見的。
隱式服務(wù)程序70控制對隱式存儲器60的存取。隱式服務(wù)程序70是裝入隱式存儲器60的一個程序。隱式服務(wù)程序70中的地址轉(zhuǎn)換可以斷開。隱式服務(wù)程序70及操作系統(tǒng)40和應(yīng)用程序5a-5n共同使用位于可見存儲器30內(nèi)的通信區(qū)80。這是隱式服務(wù)程序70和操作系統(tǒng)40及應(yīng)用程序5a-5n后兩者賴以通信的機構(gòu)。把所有的通信機構(gòu)都放置在可見存儲器30之內(nèi),就排除了操作系統(tǒng)40和應(yīng)用程序5a-5n損壞隱式存儲器的可能性。
在最佳實施例中,通信區(qū)80包括隊列90和請求塊100a-100n。隊列90最好占有存儲器的單獨一頁,用來形成隊列的鏈式單元的所有指示字最好不是地址,而是那一頁內(nèi)的位移。這樣,隊列90能被在虛擬地址變換接通時工作的在操作系統(tǒng)40下運行的程序控制,以及能被在虛擬地址變換斷開的情況下可以工作的隱式服務(wù)程序70所控制。隊列90的條目有鏈式位移,以便連接隊列條目及請求塊100a-100n的實地址。通過利用隊列的首部指示字的實地址,隱式服務(wù)程序70不使用AIX的虛擬地址變換機制,就能使用首部指示字。
如圖3所示,隱式存儲器60的一部分是穩(wěn)態(tài)存儲器110。它包括一個穩(wěn)態(tài)存儲器描述符120,隱式服務(wù)程序70利用預(yù)先安排的地址能確定描述符120的位置,隱式服務(wù)程序70還利用描述符120來確定,穩(wěn)態(tài)存儲器110的那些部分正在使用。穩(wěn)態(tài)存儲器110的一小部分被隱式服務(wù)程序70用來保持其自己的記錄,但是,穩(wěn)態(tài)存儲器110的大部分由專用服務(wù)程序130a-130n使用,這些服務(wù)程序都是隱式服務(wù)程序70可訪問的程序。例如,最佳實施例包括一個VDISK服務(wù)程序130a及一個PCACHE服務(wù)程序130b,以及其它服務(wù)程序。
VDISK服務(wù)程序130a處理使用穩(wěn)態(tài)存儲器110的空間存儲數(shù)據(jù)的命令,好象是在一個或多個磁盤上。以這種方式被使用的存儲器的每個空間都稱之為VDISK。VDISK服務(wù)程序130a最好至少能提供處理下述請求的能力,即分配穩(wěn)態(tài)存儲器110中被用來存儲數(shù)據(jù)的空間的請求,把數(shù)據(jù)從可見存儲器30復(fù)制到穩(wěn)態(tài)存儲器110的請求,以及把數(shù)據(jù)從穩(wěn)態(tài)存儲器110復(fù)制到可見存儲器30的請求。PCACHE服務(wù)程序130b超高速緩存準備在較晚的時候?qū)懙酱疟P上去的數(shù)據(jù)。PCACHE服務(wù)程序130b把數(shù)據(jù)的磁盤地址與數(shù)據(jù)本身一起存儲起來,以便在操作系統(tǒng)40發(fā)生故障后再現(xiàn)超向速緩存的信息。
當裝入并啟動隱式服務(wù)程序70后,就要測試穩(wěn)態(tài)存儲器描述符120的有效性,如果它不是有效時,就使其初始化,以表明穩(wěn)態(tài)存儲器中沒有一個空間在使用。對有效性的可能的測試有,例如,將檢驗和的值與對穩(wěn)態(tài)存儲器描述符120的內(nèi)容重新計算所得的值進行比較,把存儲器使用計數(shù)加起來查看它們是否與穩(wěn)態(tài)存儲器110的總數(shù)一致,以及在完成存儲器的隱式服務(wù)程序70的初始化后對放在穩(wěn)態(tài)存儲器描述符120中的特征關(guān)鍵值進行比較。由隱式服務(wù)程序70的新近開始的版本使用先有的穩(wěn)態(tài)存儲器描述符120就使得有可能替換隱式服務(wù)程序70的代碼而沒有明顯的信息損失。當然最為理想的是隱式服務(wù)程序70的新版本能解釋舊版本的穩(wěn)態(tài)存儲器描述符120。
隱式服務(wù)程序70利用穩(wěn)態(tài)存儲器描述符120的一部分來記錄服務(wù)數(shù)據(jù)句柄(handle)115a-115n,每個句柄被分配給不同的服務(wù)程序130a-130n。一個服務(wù)數(shù)據(jù)句柄指向一個數(shù)據(jù)描述符。一個數(shù)據(jù)描述符指出可供相應(yīng)的服務(wù)程序使用的隱式存儲器60的部分。
例如,VDISK服務(wù)程序130a使用VDISK數(shù)據(jù)描述符140a。每當隱式服務(wù)程序70被啟動時,VDISK服務(wù)程序130a也就被啟動(所有其它服務(wù)程序130b-130n也都如此),并被給與一個其服務(wù)數(shù)據(jù)句柄115a的復(fù)制品,后者或是零,或是指VDISK數(shù)據(jù)描述符140a的指示字。VDISK服務(wù)程序130a確認其服務(wù)數(shù)據(jù)句柄115a指向VDISK數(shù)據(jù)描述符140a以及這個描述符140a的有效性,就象隱式服務(wù)程序70確認穩(wěn)態(tài)存儲器描述符120的存在及其有效性一樣。如果VDISK服務(wù)程序130a發(fā)現(xiàn)VDISK數(shù)據(jù)描述符140a無效時,它就請求由隱式服務(wù)程序70分配一個并使其初始化,以表明還沒有任何VDISK存在。VDISK數(shù)據(jù)描述符140a代表其在操作系統(tǒng)40及應(yīng)用程序5a-5n中的用戶用來記錄穩(wěn)態(tài)存儲器110的那些部分正被用來存儲數(shù)據(jù)。
服務(wù)數(shù)據(jù)句柄115a-115n及數(shù)據(jù)描述符140a-140n的這種用途使服務(wù)程序130a-130n能被停止和再啟動而無信息損失或明顯的運行中斷,就象隱式服務(wù)程序70能被停止,替換和再啟動那樣。正如隱式服務(wù)程序70的情況一樣,由舊版本的服務(wù)程序130a-130n所產(chǎn)生的數(shù)據(jù)描述符140a-140n最好能被新版本的服務(wù)程序130a-130n所理解。
在最佳實施例中,對隱式服務(wù)程序70的請求包括服務(wù)程序130a-130n的名字,這也就是要處理該請求,從而隱式服務(wù)程序70能把該請求傳送給的那個服務(wù)程序130a-130n。任一服務(wù)程序可能需要的附加請求信息可在請求塊100a-100n中找到。在VDISK服務(wù)程序130a的情況下,其包括表明是否要產(chǎn)生一個VDISK的操作碼,象VDISK標識符那樣用來指出應(yīng)對那個VDISK進行操作的操作數(shù)的所需空間,以及象返回碼和完成位那樣的任一應(yīng)答信息的所需空間,該返回碼表示請求成功或失敗,而完成位則用來指出在處理請求時什么時候完成VDISK服務(wù)程序130a。
在最佳實施例中,VDISK服務(wù)程序130a由安裝到操作系統(tǒng)40中的VDISK設(shè)備驅(qū)動程序160a使用。VDISK設(shè)備驅(qū)動程序160a就象安裝在操作系統(tǒng)40中的任何磁盤驅(qū)動程序一樣,提供同樣的接口,不過它是利用VDISK服務(wù)程序130a而不是實磁盤設(shè)備來存儲和檢索數(shù)據(jù)。這就使操作系統(tǒng)40的其它部分及應(yīng)用程序5a-5n能利用VDISK,就象利用實磁盤一樣。由于隱式存儲器60決不會被在可見存儲器30中運行的任何程序的任何故障所破壞,由于穩(wěn)態(tài)存儲器110即使在隱式服務(wù)程序70及其有關(guān)的服務(wù)程序130a-130n再啟動時也仍被保存,還由于DM/6000硬件的容錯和電源保護性能,由VDISK服務(wù)程序130a存儲在穩(wěn)態(tài)存儲器110中的數(shù)據(jù)可以被認為是象存儲在實磁盤上一樣安全。
傳送到隱式服務(wù)程序70的所有地址都是可見存儲器30中的實地址,它們是由在AIX下運行的VDISK設(shè)備驅(qū)動程序160a利用AIX的核心服務(wù)程序確定的,而請求塊100a-100n合乎要求地被限制在存儲器的單獨一頁,這樣就避免了地址轉(zhuǎn)換問題。
當隱式服務(wù)程序70在處理器15a-15n的子設(shè)備上運行,而該子設(shè)備又與操作系統(tǒng)40在其上運行的子設(shè)備分離時,隱式服務(wù)程序70對請求的處理是與操作系統(tǒng)40及應(yīng)用程序5a-5n的處理并行的。當隱式服務(wù)程序70和操作系統(tǒng)40及應(yīng)用程序5a-5n共用同一個處理器15a-15n時,最好利用傳送程序170在兩者之間來回傳送控制權(quán),傳送程序170記錄當前被安排為由操作系統(tǒng)40使用的處理器15a-15n的狀態(tài),然后改變處理器15a-15n的狀態(tài),以使隱式服務(wù)程序70能正常運行。被記錄的狀態(tài)除了別的之外,可能還包括寄存器的內(nèi)容及虛擬地址變換裝置的設(shè)置。
在最佳實施例中,傳送程序170被放在存儲器的第一個64千字節(jié)中。AIX總是把其虛擬存儲表設(shè)置成這樣的,使存儲器的這個部分有與其實地址相同的虛擬地址。因此,存儲器這個區(qū)域內(nèi)的程序能接通或斷開地址轉(zhuǎn)換,并仍能繼續(xù)執(zhí)行同一個程序的下一條指令。
雖然在操作系統(tǒng)40下運行的VDISK設(shè)備驅(qū)動程序160a及VDISK服務(wù)程序130a之間有發(fā)送信號的其它方法,例如利用中斷,最佳實施例則利用請求塊100a-100n的應(yīng)答區(qū)內(nèi)的完成標志。如果這個隱式服務(wù)程序70與操作系統(tǒng)40共用同一個處理器時,VDISK設(shè)備驅(qū)動程序160a就在檢驗完成標志和把控制權(quán)給予隱式服務(wù)程序70之間同步循環(huán)。
從應(yīng)用程序5a-5n請求VDISK中的數(shù)據(jù)直到把該數(shù)據(jù)傳送回同一個應(yīng)用程序的整個流程路經(jīng)如下。請求首先進到確定設(shè)備就是VDISK設(shè)備的操作系統(tǒng)40。因此,請求就被傳送到VDISK設(shè)備驅(qū)動程序160a,該驅(qū)動程序160a確定那一個VDISK裝有數(shù)據(jù),并在請求塊100a-100n中建立請求,這個請求表明這是對VDISK服務(wù)程序的一個請求,從那個VDISK得到數(shù)據(jù),在VDISK的什么地方開始讀出,傳送多少數(shù)據(jù),以及把要讀出的數(shù)據(jù)放在可見存儲器30的什么地方。請注意,這個時候在請求塊100a-100n中把完成標志設(shè)置成表明請求還沒有結(jié)束。然后,VDISK設(shè)備驅(qū)動程序160a在隊列90中放置一個指向這個請求塊100a-100n的隊列條目,并開始等待完成標志來表明請求結(jié)束。在等待的同時,如果處理器15a-15n是由操作系統(tǒng)40及隱式服務(wù)程序70所共用時。VDISK設(shè)備驅(qū)動程序160a將調(diào)用傳送程序170把處理器15a-15n的控制權(quán)給予隱式服務(wù)程序70。在任何情況下,當輪到隱式服務(wù)程序70時它將使這個隊列條目出隊并且確定,并且從請求塊100a-100n確定由VDISK服務(wù)程序處理什么。利用其服務(wù)數(shù)據(jù)句柄115a,VDISK服務(wù)程序130a將確定其VDISK數(shù)據(jù)描述符140a的位置,并從而確定VDISK數(shù)據(jù)的位置,VDISK服務(wù)程序130a隨后將把VDISK數(shù)據(jù)復(fù)制到請求塊100a-100n中所提到的可見存儲器的部分中去,然后它將設(shè)置完成標志以表明操作結(jié)束。處理器15a-15n的控制權(quán)返回到隱式服務(wù)程序70,如果它是由隱式服務(wù)程序70與操作系統(tǒng)40共用時,隱式服務(wù)程序70又將把把控制權(quán)返回到傳送程序170,并從而返回到VDISK設(shè)備驅(qū)動程序130a。無論如何,VDISK設(shè)備驅(qū)動程序160a將最終擁有處理器15a-15n的控制權(quán)并觀察到完成標志已被設(shè)置,然后把控制權(quán)返回到操作系統(tǒng)40,后者將把控制權(quán)返回到做出初始請求的應(yīng)用程序5a-5n。
PCACHE設(shè)備驅(qū)動程序160b在下列方面與VDISK設(shè)備驅(qū)動程序160a非常相似對于操作系統(tǒng)40和應(yīng)用程序5a-5n來說,它具有實磁盤設(shè)備的外表,它還利用隱式服務(wù)程序70和PCACHE服務(wù)程序130b從穩(wěn)態(tài)存儲器存儲和檢索數(shù)據(jù)。區(qū)別在于,PCACHE設(shè)備驅(qū)動程序160b只是利用PCACHE服務(wù)程序130b來保持一個新近從實磁盤18a-18n中讀出的或?qū)懭肫渲械臄?shù)據(jù)的超高速緩存,PCACHE設(shè)備驅(qū)動程序160b利用供那個特定的磁盤設(shè)備18a-18n用的設(shè)備驅(qū)動程序160a-160n來訪問實磁盤18a-18n。這與1994年11月22日IBM T.J.沃森研究中心,由C.R.Attanasio,M.Butrico,C.A.Polyzois,S.E.Smith所著的RC-19843號報告可恢復(fù)虛擬共享磁盤的設(shè)計和實現(xiàn)中所描述的VSD設(shè)備驅(qū)動程序的工作方法大致相同。
在操作系統(tǒng)40發(fā)生故障的情況下,可見存儲器30的內(nèi)容完全丟失。當操作系統(tǒng)40被再啟動時,通過由PCACHE服務(wù)程序130b請求目前存在于穩(wěn)態(tài)存儲器110中的那些塊的內(nèi)部地址表,PCACHE設(shè)備驅(qū)動程序160b重建其超高速緩存單元信息的目錄。PCACHE設(shè)備驅(qū)動程序160b然后就能重建它所使用的無論什么樣的內(nèi)部數(shù)據(jù)結(jié)構(gòu),以便監(jiān)視超高速緩存的狀態(tài),例如散列表,因而在正常操作過程中就不再需要由PCACHE服務(wù)程序130b所存儲的目錄信息。
圖4是操作系統(tǒng)40,或者更準確地說,安裝在操作系統(tǒng)內(nèi)的設(shè)備驅(qū)動程序160a-160n及傳送程序170為了完成控制權(quán)的傳送所采取的步驟的邏輯流程圖。首先,把準備由隱式服務(wù)程序70及專用服務(wù)程序130a-130n處理的任何請求放在通信區(qū)80的某個請求塊100a-100n內(nèi)(步驟410)。然后,那個處理器15a-15n在執(zhí)行這些步驟,就把該處理器的狀態(tài)記錄在可見存儲器30的某個地方(步驟420)。為了使隱式存儲器60對這個處理器來說變?yōu)榭梢?步驟430),在最佳實施例中,就把處理器的虛擬地址變換斷開,不過其它方法也完全是可能的?,F(xiàn)在,這個處理器就能訪問那個隱式存儲器60,它能開始執(zhí)行裝在隱式服務(wù)程序70的程序中的指令(步驟440)。當隱式服務(wù)程序70準備放棄處理器的控制權(quán)時,這個程序的下一步在傳送程序170中再繼續(xù)下去,其進行隱藏隱式存儲器60(步驟450)。在最佳實施例中,這是通過把虛擬地址變換重新接通來實現(xiàn)的。然后,處理器狀態(tài)的其余部分就能被恢復(fù)(步驟460),而控制權(quán)則被返回到啟動傳送的設(shè)備驅(qū)動程序160a-160n。于是就能檢驗放在通信區(qū)80或可見存儲器30中某個地方的應(yīng)答數(shù)據(jù)(步驟470)。
圖5是隱式服務(wù)程序70為了處理請求所完成的步驟的邏輯流程圖。第一步510是等待在通信區(qū)80內(nèi)出現(xiàn)請求。當請求出現(xiàn)時,在第520步就完成與所做出的請求的性質(zhì)相適應(yīng)的某種處理。例如,請求數(shù)據(jù)將指示對該請求給出某個特定的服務(wù)程序并給出該由那個服務(wù)程序完成的命令。這個動作的結(jié)果就是把應(yīng)答信息放在通信區(qū)80或可見存儲器30的任一單元(步驟530)。例如,原始請求的內(nèi)容能確定一個在可見存儲器30之內(nèi)但是在通信區(qū)之外的單元,特定請求的應(yīng)答信息應(yīng)放置到該單元里。然后,在第540步,就要進行一項測試,看看目前運行隱式服務(wù)程序70的程序的處理器是否也用來運行操作系統(tǒng)40。這可用多種方法實現(xiàn),如檢驗存在于通信區(qū)內(nèi)的配置信息。如果處理器被共享時,隱式服務(wù)程序?qū)⒃?40這個點上將控制權(quán)傳送回操作系統(tǒng)40(步驟550)。
圖6是通信區(qū)80內(nèi)的隊列90在置入一系列請求之后看起來象什么的例子。A條目是最老的,而E條目610則是最近增加到隊列90的條目。為了避免條目入隊和出隊之間的干擾,需要一種同步方式。例如,盡管可以利用IBM370的TEST(測試)和SET(設(shè)置)指令序列來確保同步,但在最佳實施例中,卻采用了Power PC體系結(jié)構(gòu)的裝入和保留指令以及條件存儲指令。正如技術(shù)上眾所周知的那樣,裝入和保留指令在存儲器單元中建立保留,以供條件存儲指令使用。條件存儲指令首先確定,在試圖存儲的存儲器單元中是否有保留。如果有保留,進行存儲,而保留則被清除。如果沒有保留時,指令結(jié)束而沒有改變存儲器。
為了使一個隊列條目入隊,就在含有隊列中第一個條目的位移的隊列首標的字上執(zhí)行裝入和保留。新條目的“下一個”位移就被設(shè)置成那個值。如果那個字上的隊列首標的保留仍然存在的話,新條目的位移就被存儲在隊列首標。如果保留不存在時,就重復(fù)入隊過程。
例如,通過裝入首部指示符600并帶著保留,增加了E條目610,而在增加E條目610之前,首部指示符600曾指向D條目620。這個指示字被放在E條目610的轉(zhuǎn)欄613。最后,E條目610的地址被有條件地存放在首部指示符600中。如果存儲成功,入隊完成。否則,就重復(fù)該過程。
當然,這就產(chǎn)生一個以后進先出方式組織的隊列。產(chǎn)生隊列時,在出隊過程中又產(chǎn)生先進先出的風格。為了使一個條目出隊,就要在隊列首標中執(zhí)行首部位移的裝入和保留。然后,通過有條件地存儲零來代替那個值,就從整個隊列除去隊列首標。因保有全部隊列,服務(wù)程序就可以自由地取消最老的隊列請求。換句話說,如果隊列是非空的,出隊就完成了。否則,保留的東西就被返回到隊列首標。
當把保留的東西返回到隊列首標時,如果與此同時有其它條目被裝入隊列,條目最好與被出隊過程除去的一組條目合并起來。為了完成合并,首部位移(隊列首標中指向隊列中第一個條目的字)須經(jīng)裝入和保留。如果首部位移等于零,就沒有新的條目。這樣,目前位于被返回到隊列的那些條目首部的條目的位移就被條件存儲起來。不然,零就被條件存儲起來,而裝入的值則被用作要與老隊列合并的新隊列的開始。然后重復(fù)過程。而且,如果有存儲故障,就重復(fù)整個過程。
為了使一個條目610-650出隊,最老的條目是所希望的。在這個例子中,那就是A條目630。為了達到這一點,就要通過反復(fù)裝入部指示符600并附帶保留,并在其位置上條件存儲零,來移動整個鏈。這樣重復(fù)進行,直到存儲成功。隊列就被來回移動,直至得到一個其尾指示字非零的條目。在這個例子中,那將是A條目630的尾指示字632。A條目630之前的條目按后進先出次序排列,就象入隊算法所確定的那樣。A條目630之后的條目按先進先出的次序排列,隱式服務(wù)程序70通過把條目重新排列成B-C-D-E的次序?qū)⒈3诌@種先進先出的狀態(tài)(A條目630不在那里,因為它是要從隊列90中被除去的條目)。B條目640將使其尾指示字642指向E條目610。這表明兩件事情B條目640是先進先出條目中的第一個條目,以及按后進先出次序找到的新條目應(yīng)被放在尾指示字642指向的那個條目之后。每當隊列90需要重新排列時,這就避免了順序查對整個隊列90。
把剩余的條目返回隊列90與使一個條目入隊非常相似。當某些其它條目已被放置到隊列90,而隱式服務(wù)程序70正在處理作為出隊過程的部分的條目時,就能看到差別。在那種情況下,從首部指示符600裝入的值非零并指向新入隊的條目。正確的應(yīng)答是隱式服務(wù)程序70除去那些條目,就象正常出隊一樣,并把它們與它先前除去的那些條目結(jié)合起來,以形成一個單獨的表,并返回去重復(fù)把這個表放回到隊列90的過程。
實現(xiàn)了一種優(yōu)化方法,以避免每次需要鏈上最老的條目時,都要跑到后進先出鏈的末端。這包括在把表返回到隊列以前重新排列條目。重新安排的、現(xiàn)在按先進先出次序排列的條目,都含有表的尾部的位移。這就使按先進先出次序排列的條目有別于具有零值而不是尾位移的按后進先出次序排列的條目,它還使尾部在最后插入時能快速定位。當新條目入隊時,將有一些后進先出條目,其后面是一些先進先出條目,但是,這可在下次隱式服務(wù)程序解除隊列時由隱式服務(wù)程序予以糾正。
在我們描述我們的發(fā)明的最佳實施例的時候,不言而喻的是,在現(xiàn)在和將來,那些精通技術(shù)的人們可能會做出屬于下列權(quán)利要求范圍的各種改進和提高。這些權(quán)利要求應(yīng)當被認為是對最先公開的發(fā)明的正當保護。
權(quán)利要求
1.包括存儲器,至少一個處理器和一個操作系統(tǒng)的計算機系統(tǒng),它包括可由所述的至少一個處理器和所述的操作系統(tǒng)尋址的所述存儲器的可見部分;a)排除了所述的至少一個處理器和所述的操作系統(tǒng)對其尋址的可能性的以及b)用來存儲由所述的至少一個處理器和所述的操作系統(tǒng)兩者之一傳送的數(shù)據(jù)的所述存儲器的隱式部分;位于所述存儲器的所述可見部分的,用來接收來自a)所述的至少一個處理器以及b)所述的操作系統(tǒng)兩者之一的數(shù)據(jù)存取請求的通信區(qū);以及a)既定址所述存儲器的所述可見產(chǎn)部分,又定址所述存儲器的所述隱式部分的,b)接收來自所述通信區(qū)的所述數(shù)據(jù)存取請求的,以及c)啟動從所述隱式存儲器的所述數(shù)據(jù)存取的隱式服務(wù)程序。
2.根據(jù)權(quán)利要求1的計算機系統(tǒng),其特征在于所述隱式服務(wù)程序是由所述的至少一個處理器的第一個處理器來執(zhí)行,而所述的操作系統(tǒng)是由所述的至少一個處理器的第二個處理器來執(zhí)行。
3.如權(quán)利要求1中所述的計算機系統(tǒng),其特征在于所述處理器處于第一種狀態(tài)時,隱式存儲器對所述處理器來說是不可見的,而處于第二種狀態(tài)時,隱式存儲器對所述處理器來說是可見的。所述的設(shè)備進一步還包括在所述第一種狀態(tài)和所述第二種狀態(tài)之間改變所述處理器的裝置;當所述的隱式服務(wù)程序處于所述的第二種狀態(tài)下時,由所述隱式服務(wù)程序啟動所需的操作的裝置。
4.如權(quán)利要求1中所述的計算機系統(tǒng),其特征在于所述的隱式服務(wù)程序是可重新裝入和可重新啟動的,所述存儲器的所述可見部分緊接著所述隱式服務(wù)程序再啟動之前以及緊接著再啟動之后都是相同的。
5.如權(quán)利要求1中所述的計算機系統(tǒng),其特征在于進一步包括隨機存取存儲磁盤服務(wù)裝置,以便在所述存儲器的所述隱式部分存儲數(shù)據(jù),經(jīng)受住故障,及重新啟動操作系統(tǒng),重新裝入和重新啟動隱式服務(wù)程序。
6.如權(quán)利要求1中所述的計算機系統(tǒng),其特征在于進一步包括磁盤超高速緩存服務(wù)裝置,以便在所述存儲器的所述隱式部分存儲數(shù)據(jù),經(jīng)受住故障及重新啟動所述的操作系統(tǒng),及重新裝入和重新啟動隱式服務(wù)程序。
7.保護存儲在位于計算機系統(tǒng)內(nèi)的存儲器中的數(shù)據(jù)的方法,其中所述的計算機系統(tǒng)包括至少一個處理器和一個操作系統(tǒng),所述的方法包括以下一些步驟分配可由所述的至少一個處理器和所述的操作系統(tǒng)尋址的所述存儲器的可見部分;分配a)所述的至少一個處理器和所述的操作系統(tǒng)不能尋址的以及b)用來存儲由所述的至少一個處理器和所述的操作系統(tǒng)傳送的數(shù)據(jù)的所述存儲器的隱式部分;在位于所述可見存儲器中的通信區(qū)內(nèi)接收來自a)所述的至少一個處理器和b)所述的操作系統(tǒng)兩者之中至少一個的請求;以及由既定址所述存儲器的所述可見部分,又定址所述存儲器的所述隱式部分的隱式服務(wù)程序接收所述請求的每一個請求;以及從所述的隱式存儲器啟動所述請求的每一個請求。
8.根據(jù)權(quán)利要求7保護存儲在存儲器中的數(shù)據(jù)的方法,其特征在于進一步包括以下步驟把所述處理器從第一種狀態(tài)改變?yōu)榈诙N狀態(tài),在第一種狀態(tài)下所述存儲器的所述隱式部分對于所述的處理器來說是不可見的,在第二種狀態(tài)下所述存儲器的所述隱式部分對于所述處理器來說是可見的;把所述處理器的控制權(quán)傳送給所述的隱式服務(wù)程序;由所述的隱式服務(wù)程序接收執(zhí)行所需操作的請求;由所述的隱式服務(wù)程序啟動所述的所需操作;由所述的隱式服務(wù)程序終止所述處理器的控制權(quán);以及把所述的處理器從所述的第二種狀態(tài)改變?yōu)樗龅牡谝环N狀態(tài)。
9.根據(jù)權(quán)利要求8保護存儲在存儲器中的數(shù)據(jù)的方法,其特征在于進一步包括下列步驟重新裝入所述的隱式服務(wù)程序;重新啟動所述的隱式服務(wù)程序;以及保持所述存儲器的所述可見部分緊接著所述隱式服務(wù)程序再啟動之前以及緊接再啟動之后是相同的。
10.根據(jù)權(quán)利要求7保護存儲在存儲器中的數(shù)據(jù)的方法,其特征在于進一步包括提供隨機存取存儲磁盤服務(wù)程序的步驟,該服務(wù)程序在所述存儲器的所述隱式部分存儲數(shù)據(jù),能經(jīng)受住故障及重新啟動操作系統(tǒng),以及重新裝入和重新啟動隱式服務(wù)程序。
11.根據(jù)權(quán)利要求7保護存儲在存儲器中的數(shù)據(jù)的方法,其特征在于進一步包括提供磁盤超高速緩沖服務(wù)程序的步驟,該服務(wù)程序在所述存儲器的所述隱式部分存儲數(shù)據(jù),能經(jīng)受住故障及重新啟動操作系統(tǒng),以及重新裝入和重新啟動隱式服務(wù)程序。
12.根據(jù)權(quán)利要求7保護存儲在存儲器中的數(shù)據(jù)的方法,其特征在于所述的隱式服務(wù)程序由所述的至少一個處理器中的第一個處理器執(zhí)行,而所述的操作系統(tǒng)則由所述的至少一個處理器中的第二個處理器執(zhí)行。
全文摘要
一個計算機系統(tǒng)的存儲器包括可見部分和隱式部分。存儲器的可見部分是可由處理器及在計算機系統(tǒng)內(nèi)運行的操作系統(tǒng)尋址的。對于存儲器的隱式部分來說,則排除了由處理器或操作系統(tǒng)尋址的可能性。存儲器的隱式部分用來存儲由處理器或操作系統(tǒng)傳送的數(shù)據(jù)。位于存儲器可見部分的通信區(qū)接收來自處理器或操作系統(tǒng)的數(shù)據(jù)存取請求。既定址存儲器的可見部分,又定址存儲器的隱式部分的隱式服務(wù)程序接收來自通信區(qū)的數(shù)據(jù)存取請求,并啟動從隱式存儲器的數(shù)據(jù)存取。
文檔編號G06F9/46GK1201189SQ97121209
公開日1998年12月9日 申請日期1997年10月28日 優(yōu)先權(quán)日1996年11月26日
發(fā)明者弗蘭克·諾曼·埃克森, 邁克爾·亨利·索多爾·哈克, 納吉·哈里姆, 理查德·帕爾文·金 申請人:國際商業(yè)機器公司