專利名稱:單個計算機(jī)系統(tǒng)上運(yùn)行的多個內(nèi)核之間的一致同步的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算系統(tǒng)。更具體地,本發(fā)明涉及為執(zhí)行多個操作系統(tǒng)的計算系統(tǒng)上 的進(jìn)程分配資源。
背景技術(shù):
計算機(jī)所使用的資源是變化的,并且分布在計算環(huán)境中,但是需要這些資源來完 成作業(yè)。當(dāng)多個進(jìn)程同時執(zhí)行時(這是常見的情況),會導(dǎo)致資源的瓶頸。這些瓶頸可能出 現(xiàn)在1/0總線控制器處,在交換序列期間出現(xiàn)在存儲器控制器中,或者出現(xiàn)在由于程序在 存儲器轉(zhuǎn)儲已經(jīng)啟動時請求存儲器載入而使該程序被占先時。瓶頸以及由此產(chǎn)生的進(jìn)程饑餓的出現(xiàn)在執(zhí)行多個操作系統(tǒng)的系統(tǒng)上會更嚴(yán)重。在 這些系統(tǒng)上執(zhí)行的額外進(jìn)程增加了進(jìn)程同時請求相同資源或者等待彼此釋放資源的進(jìn)程 饑餓的概率。
發(fā)明內(nèi)容
在本發(fā)明的第一方面,一種計算機(jī)系統(tǒng),包括多個資源;以及包含多個操作系統(tǒng) 的存儲器。每個操作系統(tǒng)包含內(nèi)核調(diào)度器,其配置用于為計算機(jī)系統(tǒng)上執(zhí)行的進(jìn)程協(xié)調(diào)資 源的分配。在一個實施方式中,計算機(jī)系統(tǒng)還包括多個中央處理單元,每個中央處理單元執(zhí) 行多個操作系統(tǒng)中不同的一個。多個資源是以下任意兩個或更多鍵盤控制器、視頻控制 器、音頻控制器、網(wǎng)絡(luò)控制器、磁盤控制器、通用串行總線控制器和打印機(jī)。優(yōu)選地,多個內(nèi)核調(diào)度器配置用于使用通信協(xié)議來共享與資源相關(guān)的信息。在 一個實施方式中,通信協(xié)議配置用于訪問共享存儲器。備選地,通信協(xié)議包括進(jìn)程間通 信或者協(xié)議棧、傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)。備選地,通信協(xié)議包括訪問信號量 (semaphore)、管道、信號、消息隊列、對數(shù)據(jù)的指針和文件描述符。在一個實施方式中,進(jìn)程 包括彼此通信的至少三個進(jìn)程。在一個實施方式中,多個內(nèi)核調(diào)度器中的每一個包括協(xié)調(diào)資源分配的關(guān)系管理 器。多個關(guān)系管理器中的每一個包括資源管理器,其配置用于確定與一個或者多個資源有 關(guān)的資源信息。資源信息是到資源變?yōu)榭捎脮r的估計時間。在本發(fā)明的第二方面,一種計算機(jī)系統(tǒng),包括包含內(nèi)核調(diào)度器的存儲器;以及配 置用于訪問多個資源的多個操作系統(tǒng)內(nèi)核。內(nèi)核調(diào)度器配置用于將從多個資源請求資源的 進(jìn)程指派給多個操作系統(tǒng)內(nèi)核中相應(yīng)的一個。該系統(tǒng)還包括多個處理器,每個處理器執(zhí)行多個操作系統(tǒng)中相應(yīng)的一個。在一個實施方式中,內(nèi)核調(diào)度器基于多個處理器上的負(fù)載在多個操作系統(tǒng)內(nèi)核上 調(diào)度進(jìn)程。在一個實施方式中,計算機(jī)系統(tǒng)還包括進(jìn)程表,其對資源請求與多個操作系統(tǒng)內(nèi) 核中的一個或者多個進(jìn)行匹配。在另一實施方式中,計算機(jī)系統(tǒng)還包括多個操作系統(tǒng)內(nèi)核 對之間的通信通道。多個操作系統(tǒng)內(nèi)核配置用于交換與處理器負(fù)載、資源可用性以及資源 變?yōu)榭捎玫墓烙嫊r間有關(guān)的信息。在本發(fā)明的第三方面,一種內(nèi)核調(diào)度系統(tǒng),包括多個處理器和指派模塊。多個處理 器中的每一個執(zhí)行被配置用于訪問一個或者多個資源的操作系統(tǒng)內(nèi)核。指派模塊被編程用 于將請求資源的進(jìn)程與多個操作系統(tǒng)內(nèi)核之一進(jìn)行匹配,并且將進(jìn)程分派給匹配的操作系 統(tǒng)內(nèi)核。優(yōu)選地,多個處理器中的每一個由相應(yīng)的處理器調(diào)度器來控制。在本發(fā)明的第四方面,一種為操作系統(tǒng)內(nèi)核指派資源的方法,包括基于操作系統(tǒng) 內(nèi)核訪問資源的能力,從多個操作系統(tǒng)內(nèi)核中選擇操作系統(tǒng)內(nèi)核;以及向選擇的操作系統(tǒng) 內(nèi)核指派資源。多個操作系統(tǒng)內(nèi)核全部在單個存儲器內(nèi)執(zhí)行。在本發(fā)明的第五方面,一種在單個計算機(jī)系統(tǒng)的存儲器上的第一操作系統(tǒng)和第二 操作系統(tǒng)之間共享進(jìn)程執(zhí)行的方法,包括在第一操作系統(tǒng)的控制下執(zhí)行存儲器內(nèi)的進(jìn)程; 以及向存儲器內(nèi)的第二操作系統(tǒng)移交該進(jìn)程的控制。以此方式,進(jìn)程在第二操作系統(tǒng)的控 制下在存儲器內(nèi)執(zhí)行。在第一操作系統(tǒng)和第二操作系統(tǒng)的控制下執(zhí)行進(jìn)程都訪問單個資 源。在一個實施方式中,該方法還包括使用共享存儲器、進(jìn)程間通信和信號量之一在第一 操作系統(tǒng)與第二操作系統(tǒng)之間交換進(jìn)程信息。
圖1是根據(jù)本發(fā)明一個實施方式的內(nèi)核操作調(diào)度器(KOS)的抽象示意圖。圖2是根據(jù)本發(fā)明另一實施方式的內(nèi)核操作調(diào)度器(KOS)的抽象示意圖。圖3示出了根據(jù)本發(fā)明一個實施方式的內(nèi)核進(jìn)程調(diào)度的狀態(tài)圖。圖4示出了根據(jù)本發(fā)明一個實施方式的在KOS設(shè)計中具有附加特征的系統(tǒng)。圖5示出了根據(jù)本發(fā)明一個實施方式的系統(tǒng)內(nèi)部的星型核心內(nèi)核配置。圖6是根據(jù)本發(fā)明一個實施方式的在通道上通信的多個內(nèi)核的高層框圖。圖7示出了根據(jù)本發(fā)明一個實施方式的用于在內(nèi)核調(diào)度器之間通信的共享存儲
ο圖8示出了根據(jù)本發(fā)明一個實施方式的提供用于捕獲資源進(jìn)程的過濾器的內(nèi)核
調(diào)度器。圖9示出了星型配置中的K0S,配置用于將進(jìn)程指派給多個資源。圖10是根據(jù)本發(fā)明一個實施方式的示出本發(fā)明的實施方式如何部署操作系統(tǒng)的 功能的流程圖。圖11示出了根據(jù)本發(fā)明一個實施方式的內(nèi)核調(diào)度器,信令編碼協(xié)議。圖12是示出根據(jù)本發(fā)明一個實施方式的進(jìn)程如何通過通信端口進(jìn)行通信的框 圖。圖13示出了根據(jù)本發(fā)明一個實施方式的將資源映射到操作系統(tǒng)的表。
圖14示出了使用共享存儲器來交換資源信息的單獨內(nèi)核調(diào)度器。圖15A-圖15D示出了多個操作系統(tǒng)中每一個中的表,其示出了其余操作系統(tǒng)的狀 態(tài)。圖16示出了根據(jù)本發(fā)明一個實施方式的由單獨內(nèi)核調(diào)度器使用和交換的資源信 肩、ο圖17是示出根據(jù)本發(fā)明一個實施方式的單獨內(nèi)核調(diào)度器如何交換資源信息的高 層示意圖。圖18是示出根據(jù)本發(fā)明一個實施方式的如何通過操作系統(tǒng)內(nèi)核將進(jìn)程指派給資 源的高層示意圖。圖19是命令內(nèi)核、其關(guān)系管理器和三個資源的高層框圖。圖20示出了根據(jù)本發(fā)明一個實施方式的進(jìn)程表,其存儲有進(jìn)程標(biāo)識符、進(jìn)程被指 派給的資源以及進(jìn)程的優(yōu)先級。圖21示出了根據(jù)本發(fā)明一個實施方式的向操作系統(tǒng)指派資源的方法的步驟。圖22是根據(jù)本發(fā)明一個實施方式的使用標(biāo)準(zhǔn)來向操作系統(tǒng)內(nèi)核指派進(jìn)程的方法 的流程圖。圖23是示出根據(jù)本發(fā)明一個實施方式的向操作系統(tǒng)指派進(jìn)程的流序列。
具體實施例方式根據(jù)本發(fā)明,多個操作系統(tǒng)協(xié)作運(yùn)行,共享分配給請求資源的進(jìn)程的資源,由此減 少瓶頸以及資源競爭的其他問題。在一個實施方式中,使用中央內(nèi)核操作調(diào)度器來集中地 分配資源,該中央內(nèi)核操作調(diào)度器協(xié)調(diào)操作系統(tǒng)向請求資源的進(jìn)程分配資源。在另一實施 方式中,以點對點方式提供資源,操作系統(tǒng)自己來協(xié)調(diào)資源的分發(fā)。在該實施方式中,操作 系統(tǒng)使用建立良好的協(xié)議進(jìn)行通信。根據(jù)本發(fā)明,計算系統(tǒng)上執(zhí)行的某些操作系統(tǒng)專用于執(zhí)行特定任務(wù)。專用于執(zhí)行 針對特定資源分配的請求的操作系統(tǒng)接收到針對具有其他已積壓請求的資源的請求時,僅 由資源操作系統(tǒng)而不是集中式操作系統(tǒng)來對該溢出請求進(jìn)行排隊。進(jìn)程管理內(nèi)核的主要任務(wù)是允許應(yīng)用的執(zhí)行,以及利用諸如硬件抽象的特征來支持應(yīng)用。 進(jìn)程定義了應(yīng)用可以訪問哪些存儲器部分(在本說明書中,“進(jìn)程”、“應(yīng)用”和“程序”作為 同義詞使用)。內(nèi)核進(jìn)程管理必須考慮用于存儲器保護(hù)的硬件內(nèi)置設(shè)備。為了運(yùn)行應(yīng)用,內(nèi)核通常為應(yīng)用建立地址空間,將包含該應(yīng)用的代碼的文件載入 存儲器中(可能經(jīng)由請求頁面調(diào)度),為程序建立棧,以及轉(zhuǎn)到程序內(nèi)部的給定位置,由此 開始其執(zhí)行。多任務(wù)內(nèi)核能夠給用戶這樣的感覺,即在計算機(jī)上同時運(yùn)行的進(jìn)程的數(shù)目大于計 算機(jī)物理上能夠同時運(yùn)行的進(jìn)程的最大數(shù)目。通常,系統(tǒng)可以同時運(yùn)行的進(jìn)程的數(shù)目等于 所安裝CPU的數(shù)目(然而,如果處理器支持同步多線程,則情況可能不是這樣)。在搶占式多任務(wù)系統(tǒng)中,內(nèi)核將給予每個進(jìn)程一個時間片,并且非常快地在進(jìn)程 間切換,以使得用戶看起來好像這些進(jìn)程是同時執(zhí)行的。內(nèi)核使用調(diào)度算法來確定接下來 運(yùn)行哪個進(jìn)程以及給予該進(jìn)程多少時間。所選擇的算法可以允許一些進(jìn)程比其他進(jìn)程具有更高的優(yōu)先級。內(nèi)核通常還為這些進(jìn)程提供通信的方法;這稱為進(jìn)程間通信(IPC),并且主 要途徑是共享存儲器、消息傳遞和遠(yuǎn)程過程調(diào)用。其他系統(tǒng)(特別是在較小、較弱的計算機(jī)上)可以提供協(xié)同多任務(wù),其中允許每 個進(jìn)程不間斷地運(yùn)行直到其進(jìn)行特殊的請求以告知內(nèi)核其可以切換至另一進(jìn)程。此類請 求稱為“讓出(yielding) ”,并且通常響應(yīng)于進(jìn)程間通信或者等待事件發(fā)生的請求而發(fā)生。 Windows和Mac OS的較老版本都使用協(xié)同多任務(wù),但是隨著其目標(biāo)計算機(jī)的能力增強(qiáng),都 切換到搶占式方案。操作系統(tǒng)還可以支持多進(jìn)程(SMP或者非一致存儲器訪問);在該情況下,不 同的程序和線程可以在不同的處理器上運(yùn)行。此類系統(tǒng)的內(nèi)核必須設(shè)計為可重入的 (re-entrant),這意味著其可以安全地同時運(yùn)行其代碼的兩個不同部分。這通常意味著提 供同步機(jī)制(諸如,自旋鎖),以保證兩個處理器不會同時試圖修改相同的數(shù)據(jù)。存儲器管理操作系統(tǒng)通常具有內(nèi)核,其是作為計算機(jī)的中央核心運(yùn)行的一組集中式控制程 序。這些控制程序中包括調(diào)度器程序,其負(fù)責(zé)調(diào)度CPU時間的下一聯(lián)機(jī)進(jìn)程。本發(fā)明使用 在多個CPU之上運(yùn)行的多個操作系統(tǒng),每個CPU —個操作系統(tǒng)。每個操作系統(tǒng)都具有專用 的內(nèi)核,其具有稱為內(nèi)核操作調(diào)度器(KOS)的唯一調(diào)度器程序。每個KOS都有能力在初始 化期間對其自身進(jìn)行配置,以“系統(tǒng)生成(sysgen) ”計算機(jī)系統(tǒng)上板載的每個CPU的操作系 統(tǒng)內(nèi)核的二進(jìn)制拷貝(“Sysgen”是指通過組合分離的軟件組件來創(chuàng)建特定的、唯一指定的 操作系統(tǒng)或者其他程序)。一旦每個內(nèi)核就緒并且與每個CPU建立了聯(lián)系,KOS調(diào)度器便在 每個內(nèi)核之間建立通信,并且確定哪些內(nèi)核控制哪些資源。針對內(nèi)核的設(shè)計方法自然,以上列出的任務(wù)和特征可以在設(shè)計和實現(xiàn)彼此不同的多種方法中提供。機(jī)制(mechanism)和策略(policy)分離的原理是微內(nèi)核和單體內(nèi)核的思想之 間的根本差別。此處,機(jī)制是允許多種不同策略的實現(xiàn)的支持,而策略是特定的“操作模 式”。在最小化微內(nèi)核中,僅包括一些非?;镜牟呗?,并且其機(jī)制允許在內(nèi)核上運(yùn)行的部 分(操作系統(tǒng)的其余部分以及其他應(yīng)用)決定采用哪些策略(諸如存儲器管理、高層進(jìn)程 調(diào)度、文件系統(tǒng)管理等)。相反,單體內(nèi)核趨向于包括多種策略,因此將系統(tǒng)的其余部分限制 于依賴這些策略。無法適當(dāng)?shù)貙崿F(xiàn)該分離是現(xiàn)有操作系統(tǒng)缺乏實質(zhì)創(chuàng)新的主要原因之一, 這是計算機(jī)架構(gòu)中的共同問題。單體設(shè)計由“內(nèi)核模式”/“用戶模式”架構(gòu)性保護(hù)方法(技 術(shù)上稱為層級式保護(hù)域)引起,這在傳統(tǒng)的商業(yè)系統(tǒng)中是常見的。因此,實際上,需要保護(hù) 的每個模塊優(yōu)選地包括到內(nèi)核中。單體設(shè)計與“特權(quán)模式”之間的這一鏈接可以重新引導(dǎo) 到機(jī)制_策略分離的關(guān)鍵問題;實際上,“特權(quán)模式”架構(gòu)方法將保護(hù)機(jī)制與安全策略結(jié)合 在一起,而基于能力的尋址這一主要備選的架構(gòu)性方法顯然在兩者之間有所區(qū)分,這自然 地導(dǎo)致了微內(nèi)核設(shè)計(參見保護(hù)和安全的分離)。單體內(nèi)核在相同的地址空間(內(nèi)核空間)中執(zhí)行其所有的代碼,而微內(nèi)核試圖在 用戶空間中運(yùn)行其多數(shù)服務(wù),旨在改進(jìn)代碼庫的可維護(hù)性和模塊性。多數(shù)內(nèi)核并不嚴(yán)格符 合這些分類之一,而是在這兩種設(shè)計之間。這稱為混合內(nèi)核。諸如超微內(nèi)核和外核的更新 的設(shè)計是可用的,但是很少用于生產(chǎn)系統(tǒng)。例如,Xen管理程序是外核。單體內(nèi)核
單體內(nèi)核的框圖在單體內(nèi)核中,所有的OS服務(wù)隨同主內(nèi)核線程運(yùn)行,由此也處于相同的存儲器空 間中。該方法提供了豐富和強(qiáng)大的硬件訪問。一些開發(fā)商(諸如UNIX開發(fā)商Ken Thompson) 認(rèn)為單體系統(tǒng)比其他方案更加易于設(shè)計和實現(xiàn)。單體內(nèi)核的主要缺點在于系統(tǒng)組件之間的 相關(guān)性(設(shè)備驅(qū)動器中的錯誤可能使整個系統(tǒng)崩潰),以及大內(nèi)核可能變得維護(hù)非常困難 的事實。微內(nèi)核在微內(nèi)核方法中,內(nèi)核本身僅提供允許執(zhí)行服務(wù)程序的基本功能、承擔(dān)之前內(nèi)核 功能的單獨程序(諸如,設(shè)備驅(qū)動器、GUI服務(wù)程序等)等。微內(nèi)核方法包括利用一組原語或者系統(tǒng)調(diào)用在硬件上定義簡單抽象,以實現(xiàn)諸如 存儲器管理、多任務(wù)和進(jìn)程間通信的最小化OS服務(wù)。其他服務(wù)(包括通常由諸如網(wǎng)絡(luò)的內(nèi) 核提供的那些服務(wù))在用戶空間的程序中實現(xiàn),稱為服務(wù)程序。微內(nèi)核比單體內(nèi)核更易維 護(hù),但是大量的系統(tǒng)調(diào)用和上下文切換可能使系統(tǒng)變慢,因為其通常比普通函數(shù)調(diào)用生成 更多的開銷。微內(nèi)核允許操作系統(tǒng)的其余部分實現(xiàn)為使用高級語言編寫的常規(guī)應(yīng)用程序,并且 在同一不變的內(nèi)核之上使用不同的操作系統(tǒng)。還可以在操作系統(tǒng)之間動態(tài)地切換,以及同 時具有不止一個活躍的操作系統(tǒng)。單體內(nèi)核與微內(nèi)核的對比隨著計算機(jī)內(nèi)核的發(fā)展,多個問題變得顯而易見。最明顯的問題之一是存儲器使 用量增加。這可以通過完善虛擬存儲器系統(tǒng)得到一定程度的緩解,但是并非所有的計算機(jī) 架構(gòu)都具有虛擬存儲器支持。為了減少內(nèi)核使用量,需要執(zhí)行大量的編輯以仔細(xì)地移除不 需要的代碼,當(dāng)具有上百萬行代碼的內(nèi)核部分之間的相關(guān)性不明顯時,這可能是非常困難 的。由于單體內(nèi)核帶來的問題,其早在20世紀(jì)90年代即被考慮廢棄。因此,使用單體內(nèi)核而 不是微內(nèi)核的Linux設(shè)計是Linus Torvalds和Andrew Tanenbaum之間著名口水戰(zhàn)的話題。 Tanenbaum/Torvalds爭論的辯論雙方都有優(yōu)點。諸如早期的UNIX開發(fā)商Ken Thompson的 一些開發(fā)商爭論雖然微內(nèi)核設(shè)計更富美感,但是單體內(nèi)核更易于實現(xiàn)。然而,單體系統(tǒng)的錯 誤通常使整個系統(tǒng)崩潰,而這在具有獨立于主線程運(yùn)行的服務(wù)器的微內(nèi)核中不會發(fā)生。單 體內(nèi)核支持者爭辯不正確的代碼不屬于內(nèi)核,并且微內(nèi)核對于正確的代碼來說幾乎沒有優(yōu) 勢。微內(nèi)核通常用于嵌入式機(jī)器人或者醫(yī)療計算機(jī)中,其中抗崩潰能力較重要,并且多數(shù)OS 組件存在于其自身私有的受保護(hù)存儲空間中。這對于單體內(nèi)核甚至現(xiàn)代的模塊加載內(nèi)核而 言是不可能的。性能單體內(nèi)核被設(shè)計為使其所有的代碼處于相同的地址空間(內(nèi)核空間)中,以提高 系統(tǒng)的性能。諸如UNIX開發(fā)商Ken Thompson的一些開發(fā)商認(rèn)為,如果編寫良好,單體系統(tǒng) 是效率極高的。單體模型趨向于通過使用共享內(nèi)核存儲器而不是微內(nèi)核設(shè)計中較慢的進(jìn)程 間通信(IPC)系統(tǒng)(其通?;谙鬟f)而變得更加高效。20世紀(jì)80年代以及20世紀(jì)90年代早期構(gòu)造的微內(nèi)核的性能較差。憑經(jīng)驗測量 那些特定微內(nèi)核中的某些微內(nèi)核的性能的研究沒有分析此類低效率的原因。對性能的解釋 留給了 “坊間傳言”,常見但未經(jīng)證實的看法是,這是由于從“內(nèi)核模式”切換到“用戶模式”的頻率增加(但是保護(hù)的此類層級式設(shè)計不是微內(nèi)核中固有的),進(jìn)程間通信的頻率增加 (但是IPC可以以比之前認(rèn)為的更快的數(shù)量級實現(xiàn)),以及上下文切換的頻率增加。實際上, 如在1995年所推測的,性能較差的原因也可能是(1)整個微內(nèi)核方法的實際低效率,(2) 微內(nèi)核中實現(xiàn)的特定概念,以及(3)上述概念的特定實現(xiàn)。因此,仍有待研究的是與之前 嘗試不同的、建立高效微內(nèi)核的方案是否在于應(yīng)用正確的構(gòu)造技術(shù)。另一方面,導(dǎo)致單體內(nèi)核設(shè)計的層級式保護(hù)域架構(gòu),在每次保護(hù)的不同層之間存 在交互時(即,在進(jìn)程需要操作“用戶模式”和“管理模式”兩者中的數(shù)據(jù)結(jié)構(gòu)時)具有顯 著的性能缺陷,因為其需要通過值的消息拷貝。在20世紀(jì)90年代中期,多數(shù)研究者已經(jīng)放 棄準(zhǔn)確調(diào)節(jié)可以顯著減少該開銷的看法,但是最近,較新的微內(nèi)核已經(jīng)對性能進(jìn)行了優(yōu)化?;旌蟽?nèi)核混合內(nèi)核方法嘗試將單體內(nèi)核的速度和較簡單設(shè)計與微內(nèi)核的模塊性和執(zhí)行安 全結(jié)合起來。混合內(nèi)核本質(zhì)上是單體內(nèi)核方法和微內(nèi)核方法的折衷。這意味著在內(nèi)核空間中運(yùn) 行一些服務(wù)(諸如網(wǎng)絡(luò)?;蛘呶募到y(tǒng))將減少傳統(tǒng)微內(nèi)核的性能開銷,但是仍然在用戶 空間中將內(nèi)核代碼(諸如,設(shè)備驅(qū)動器)作為服務(wù)程序來運(yùn)行。超微內(nèi)核超微內(nèi)核將幾乎所有的服務(wù),甚至包括類似于中斷控制器或者計時器的最基本的 服務(wù),委托給設(shè)備驅(qū)動器,以使得內(nèi)核存儲器需求比傳統(tǒng)的微內(nèi)核更小。外核外核是不將硬件抽象到理論模型中的一類內(nèi)核。相反,其將物理硬件資源(諸如 處理器時間、存儲頁面和磁盤塊)分配給不同的程序。在外核上運(yùn)行的程序可以鏈接到使 用外核來仿真公知OS的抽象的庫操作系統(tǒng),或者其可以開發(fā)應(yīng)用特定的抽象以用于更好 的性能。調(diào)度調(diào)度是計算機(jī)多任務(wù)和多處理操作系統(tǒng)設(shè)計以及實時操作系統(tǒng)設(shè)計中的關(guān)鍵概 念。它是指為進(jìn)程指派優(yōu)先級隊列中的優(yōu)先級的方式。該指派通過稱為調(diào)度器的軟件來實 現(xiàn)。在諸如工業(yè)中用于自動控制的移動設(shè)備(例如機(jī)器人)的實時環(huán)境中,調(diào)度器還 必須保證進(jìn)程可以滿足時限;這對于保持系統(tǒng)穩(wěn)定來說是關(guān)鍵的。調(diào)度的任務(wù)可以發(fā)送至 移動設(shè)備,并且通過管理后端來管理。操作系統(tǒng)調(diào)度器的類型操作系統(tǒng)可以具有高達(dá)3種不同類型的調(diào)度器長期調(diào)度器(也稱為“準(zhǔn)入調(diào)度 器”)、中期或者中間期調(diào)度器和短期調(diào)度器(也稱為“分派器”)。長期調(diào)度器或稱準(zhǔn)入調(diào)度器確定哪些作業(yè)或者進(jìn)程將被許可進(jìn)入就緒隊列;也 即,當(dāng)嘗試執(zhí)行程序時,該嘗試進(jìn)入當(dāng)前執(zhí)行進(jìn)程集合的準(zhǔn)入由長期調(diào)度器授權(quán)或者延遲。 由此,該調(diào)度器指定什么進(jìn)程將在系統(tǒng)上運(yùn)行以及在任意時刻支持的并發(fā)度(即,將同時 執(zhí)行的進(jìn)程的量是高還是低),以及如何處理I/O密集型進(jìn)程和CPU密集型進(jìn)程之間的劃 分。通常對于臺式計算機(jī)來說,不存在此類長期調(diào)度器,并且進(jìn)程自動地準(zhǔn)入系統(tǒng)。然而, 此類調(diào)度對于實時系統(tǒng)是非常重要的,因為由于準(zhǔn)入多于系統(tǒng)可以安全處理的進(jìn)程而造成的速度降低和競爭可能損害系統(tǒng)滿足進(jìn)程時限的能力。中期調(diào)度器存在于具有虛擬存儲器的所有系統(tǒng)中,其從主存儲器中暫時移除進(jìn) 程,并且將其放置在第二存儲器(諸如磁盤驅(qū)動器)上,反之亦然。這通常稱為“換出”或 者“換入”(也可不恰當(dāng)?shù)胤Q為“頁面調(diào)出”或者“頁面調(diào)入”)。中期調(diào)度器可以決定換出 一段時間內(nèi)不活躍的進(jìn)程、具有較低優(yōu)先級的進(jìn)程、頻繁頁面出錯的進(jìn)程或者占用大量存 儲器的進(jìn)程,以便為其他進(jìn)程釋放主存儲器;當(dāng)之后較多存儲器可用時,或者在進(jìn)程已經(jīng)解 鎖并且不再等待資源時,將進(jìn)程換回。在當(dāng)前的多種系統(tǒng)(那些支持將虛擬地址空間映射至次級存儲而不是交換文件 的系統(tǒng))中,中期調(diào)度器可以通過在二進(jìn)制文件執(zhí)行時將其作為“換出進(jìn)程”來處理,而實 際上充當(dāng)長期調(diào)度器的角色。以這種方式,當(dāng)需要二進(jìn)制段時,其可以即時換入,或者“惰性 (lazy)加載”。短期調(diào)度器(也稱為“分派器”)決定在時鐘中斷、I/O中斷、操作系統(tǒng)調(diào)用或者其 他形式的信號之后將執(zhí)行哪個就緒的、存儲器中的進(jìn)程(分配CPU)。由此,短期調(diào)度器比長 期調(diào)度器或者中期調(diào)度器更加頻繁地做出調(diào)度決策-調(diào)度決策至少將在每個時間片之后 做出,并且這些時間片是非常短的。該調(diào)度器可以是搶占式的,這意味著在其決定為一個進(jìn) 程分配CPU時,其能夠強(qiáng)行地從CPU移除另一進(jìn)程;或者可以是非搶占式的,在這種情況下 調(diào)度器不能“強(qiáng)制”進(jìn)程離開CPU。調(diào)度規(guī)則調(diào)度規(guī)則是用于在同時、異步地請求資源的部分之間分發(fā)資源的算法。調(diào)度規(guī)則 在路由器(以處理分組業(yè)務(wù))以及操作系統(tǒng)(以在線程和進(jìn)程之間共享CPU時間)中使用。調(diào)度算法的主要目的在于最小化資源饑餓,以及保證使用資源的部分之間的公平 性。操作系統(tǒng)調(diào)度器實現(xiàn)不同的計算機(jī)操作系統(tǒng)實現(xiàn)不同的調(diào)度方案。較早的MS-DOS和Microsoft Windows系統(tǒng)是非多任務(wù)的,因此不具有調(diào)度器?;赪indows 3. 1的操作系統(tǒng)使用單個 非搶占式調(diào)度器,其需要程序指示其進(jìn)程“讓出”(放棄CPU)以便其他進(jìn)程得到一些CPU時 間。這提供了針對多任務(wù)的原語支持,但是沒有提供更高級的調(diào)度選項?;赪indows NT 4. 0的操作系統(tǒng)使用多層反饋隊列。基于Windows NT 4. 0的系 統(tǒng)中的優(yōu)先級的范圍從1到31,其中優(yōu)先級1到15是“正常”優(yōu)先級,而優(yōu)先級16到31是 軟實時優(yōu)先級,需要指派特權(quán)。用戶可以從任務(wù)管理器應(yīng)用中或者通過線程管理API來選 擇這些優(yōu)先級中的5個,以指派給運(yùn)行的應(yīng)用。早期的Unix實現(xiàn)使用具有多層反饋隊列的調(diào)度器,該多層反饋隊列在每個反饋 隊列中具有輪轉(zhuǎn)(round robin)選擇。在該系統(tǒng)中,進(jìn)程開始于高優(yōu)先級隊列(給予諸如 單個鼠標(biāo)移動或者擊鍵中所涉及的新進(jìn)程以較快的響應(yīng)時間),并且隨著這些進(jìn)程在系統(tǒng) 中花費了較多時間,其被多次搶占并且放置在較低優(yōu)先級隊列中。遺憾的是,在該系統(tǒng)中, 較老的進(jìn)程可能由于新進(jìn)程的持續(xù)進(jìn)入而缺乏CPU時間,但是如果系統(tǒng)處理新進(jìn)程的速度 不能快于新進(jìn)程的到達(dá),則饑餓無論如何是不可避免的。進(jìn)程優(yōu)先級可以在Unix下明確設(shè) 置為40個值中的一個值,但是多數(shù)現(xiàn)代的Unix系統(tǒng)具有更高范圍的可用優(yōu)先級(Solaris 具有160個)。代替低優(yōu)先級進(jìn)程饑餓的Windows NT4. 0方案(將進(jìn)程輾轉(zhuǎn)到輪轉(zhuǎn)隊列的前端,其應(yīng)當(dāng)會饑餓),早期的Unix系統(tǒng)使用更加精細(xì)的優(yōu)先級提升系統(tǒng),用以緩慢增加饑 餓進(jìn)程的優(yōu)先級直到其被執(zhí)行,于是其優(yōu)先級將重新設(shè)置為其在開始饑餓之前的任何優(yōu)先 級。Linux內(nèi)核曾經(jīng)使用0(1)調(diào)度器直到2. 6. 23,在此時其轉(zhuǎn)換到完全公平調(diào)度器。調(diào)度算法在計算機(jī)科學(xué)中,調(diào)度算法是給予線程或者進(jìn)程對系統(tǒng)資源(通常是處理器時 間)的訪問的方法。這通常是為了有效地對系統(tǒng)進(jìn)行負(fù)載均衡。由于多數(shù)現(xiàn)代系統(tǒng)執(zhí)行多 任務(wù)或者同時執(zhí)行多于一個進(jìn)程,因此對調(diào)度算法的需求應(yīng)運(yùn)而生。調(diào)度算法通常僅在時 間片復(fù)用內(nèi)核中使用。原因在于為了有效地對系統(tǒng)進(jìn)行負(fù)載均衡,內(nèi)核必須能夠強(qiáng)行掛起 線程的執(zhí)行以便開始下一線程的執(zhí)行。所使用的算法可以簡單如輪轉(zhuǎn),其中每個進(jìn)程在循環(huán)列表中被給予相等的時間 (例如1ms,通常在Ims與IOOms之間)。所以,進(jìn)程A執(zhí)行1ms,然后進(jìn)程B,然后進(jìn)程C,然 后返回進(jìn)程A。更高級的算法將進(jìn)程優(yōu)先級或者進(jìn)程的重要性納入考慮。這允許一些進(jìn)程比其 他進(jìn)程使用更多的時間。需要注意,內(nèi)核總是使用其需要的任何資源來保證系統(tǒng)的正常 運(yùn)行,因此可以稱為具有無限的優(yōu)先級。在對稱多處理器(SMP)系統(tǒng)中,處理器親和力 (affinity)被認(rèn)為提高了整體系統(tǒng)性能,即使其可能導(dǎo)致進(jìn)程本身運(yùn)行較慢。這通常通過 減少高速緩存顛簸(thrashing)來改進(jìn)性能。I/O 調(diào)度本部分是關(guān)于I/O調(diào)度的,其不應(yīng)當(dāng)與進(jìn)程調(diào)度混淆。“I/O調(diào)度”是用于描述計 算機(jī)操作系統(tǒng)用來決定將阻塞的I/O操作提交至磁盤子系統(tǒng)的順序的方法。I/O調(diào)度有時 稱為“磁盤調(diào)度”。目的根據(jù)I/O調(diào)度器的目標(biāo),I/O調(diào)度器可以具有多種目的,一些常見目標(biāo)是 最小化硬盤搜尋所耗費的時間。 為特定進(jìn)程的I/O請求設(shè)定優(yōu)先級。·使每個運(yùn)行進(jìn)程共享盤帶寬。 保證特定請求將在特定時限之前發(fā)出。實現(xiàn)I/O調(diào)度通常需要與硬盤協(xié)作,其共同具有的特性是遠(yuǎn)離磁頭當(dāng)前位置的請求 的訪問時間較長(該操作稱為尋道)。為了最小化這對于系統(tǒng)性能的影響,多數(shù)I/O調(diào)度器 實現(xiàn)電梯算法的變體,其將傳入的隨機(jī)排列的請求重新排列為將在磁盤中對其進(jìn)行查找的 順序。常見磁盤調(diào)度規(guī)則 隨機(jī)調(diào)度(RSS) 先進(jìn)先出(FIFO),也稱為先到先服務(wù)(FCFS) 后進(jìn)先出(LIFO) 最短搜尋優(yōu)先,也稱為最短搜尋/服務(wù)時間優(yōu)先(SSTF)·電梯算法,也稱為SCAN(包括其變體C-SCAN、LOOK和C-L00K)
· N步掃描,一次N個記錄的掃描· FSCAN,步進(jìn)式掃描,其中N等于SCAN周期開始時的隊列大小 完全公平隊列(Linux) 預(yù)期調(diào)度圖1示意性地示出了根據(jù)本發(fā)明一個實施方式的KOS調(diào)度器操作系統(tǒng)100。KOS 調(diào)度器操作系統(tǒng)100包括多個操作系統(tǒng)101-106,多個操作系統(tǒng)101-106在單個存儲器中執(zhí) 行,都與殼(shell) 115指示的應(yīng)用對接。圖2示意性地示出了根據(jù)本發(fā)明另一實施方式的KOS調(diào)度器操作系統(tǒng)120。KOS 調(diào)度器操作系統(tǒng)120包括多個操作系統(tǒng)121-126,多個操作系統(tǒng)121-126在單個存儲器中執(zhí) 行,與殼130指示的資源對接,殼130繼而與殼135指示的應(yīng)用對接。多OS KOS 系統(tǒng)多任務(wù)內(nèi)核能夠給用戶這樣的感覺,S卩,同時在計算機(jī)上運(yùn)行的進(jìn)程的數(shù)目高于 計算機(jī)物理上能夠同時運(yùn)行的進(jìn)程的最大數(shù)目。本發(fā)明實際上建議,通過將處理器的數(shù)目 從一個增加到兩個或者更多,以及在事件指示針對資源的請求時增加實際在計算機(jī)系統(tǒng)上 的、共同使用特別設(shè)計的調(diào)度器軟件來全部同時工作以通信、調(diào)度、委托、路由和外包事件 的操作系統(tǒng)的數(shù)目的KOS設(shè)計,這種感覺將消除。通常,系統(tǒng)可以同時運(yùn)行的進(jìn)程的數(shù)目等 于安裝的CPU的數(shù)目(然而,當(dāng)處理器支持同時的多線程時,情況可能并非如此)。本發(fā)明 的優(yōu)選實施方式需要安裝多于一個CPU,而同時協(xié)同工作的操作系統(tǒng)的數(shù)目應(yīng)當(dāng)?shù)扔诎惭b 的CPU數(shù)目,以便實現(xiàn)最大性能。UNIX-KOS設(shè)計還建議,繼續(xù)在每個操作系統(tǒng)內(nèi)核內(nèi)實現(xiàn)多 線程,同時由KOS調(diào)度器根據(jù)應(yīng)用所需要的資源以及每個操作系統(tǒng)支持的資源來傳送、外 包、路由去往和來自每個安裝的操作系統(tǒng)的應(yīng)用程序。KOS 概念分布式內(nèi)核操作調(diào)度器(KOS)是用于按照與其他內(nèi)核操作調(diào)度器同步的方式來 進(jìn)行操作的分布式操作系統(tǒng)。每個KOS與其他類似的KOS并行操作;并且雖然可以存在兩 個或者更多計算機(jī)操作在任何給定的計算機(jī)系統(tǒng)環(huán)境內(nèi),并且任何特定計算機(jī)可以駐留兩 個或者更多CPU,但是該環(huán)境被視作單個計算機(jī)。在一些命名法中,分布式計算可以定義 為跨多個不同的計算機(jī)平臺并且在一個操作主題下全部共同協(xié)同工作的計算資源的分布。 KOS是類似的,區(qū)別僅僅在于分布式KOS在單個計算機(jī)系統(tǒng)環(huán)境中,其彼此非常接近地操作 并且作為單個計算機(jī)。每個KOS在單個內(nèi)核之內(nèi)。每個內(nèi)核具有單個調(diào)度器,在KOS設(shè)計 為具有與此類型的其他類似KOS通信以調(diào)度事件的通信設(shè)施之前,該單個調(diào)度器由KOS取 代。數(shù)據(jù)的處理可以分解為一系列事件,其中每個事件需要特定的計算機(jī)資源來完 成。調(diào)度器是內(nèi)核中的重要程序,其任務(wù)是向事件分配CPU時間、資源和優(yōu)先級。由此,當(dāng) 在時間共享情境下調(diào)度CPU時間資源時,為事件提供諸如存儲器、臨時I/O總線優(yōu)先級等其 他資源以及完成特定事件所需的任何資源。根據(jù)本發(fā)明,KOS是內(nèi)核操作調(diào)度器,而每個單 個系統(tǒng)存在多個K0S,并且每個KOS同時運(yùn)行并且管理需要計算機(jī)資源來完成的同時事件 的執(zhí)行。但是,每個KOS可能需要類似的資源,而當(dāng)此類資源可能受到限制或者供應(yīng)不足 時,此類資源由內(nèi)核環(huán)境空間內(nèi)或者存儲器的共享部分內(nèi)的信號量來控制。KOS是分布式的 OS,并且在其核心處,調(diào)度器是與通用CPU硬件相聯(lián)系的分布式計算,其中每個調(diào)度器在初始化時具有唯一的id,而此類ID被指派到每個K0S。Unix 系統(tǒng) IPCIPC設(shè)備和協(xié)議棧IPC設(shè)備和協(xié)議棧駐留于UNIX構(gòu)造,并且已經(jīng)集成為工具。這些工具用于提供當(dāng) 前構(gòu)造下的操作系統(tǒng)之間的通信。表1將KOS類型映射至其支持的特定資源。參考表1中的信息,IPC的前7種形 式用作本地內(nèi)核和調(diào)度器操作系統(tǒng)內(nèi)的進(jìn)程之間的通信,并且最后兩種用于相同計算機(jī)上 但是跨相同計算機(jī)系統(tǒng)上的CPU分布的操作系統(tǒng)之間的通信。表1 Linux對STREAMS的支持在單獨的、可選的稱為“LIS”的包中可得。表1中IPC的前7種形式通常限制于相同主機(jī)操作系統(tǒng)上的進(jìn)程之間的IPC。最 后兩行一套接字和STREAMS-是通常支持用于不同主機(jī)上的進(jìn)程之間的IPC的僅有兩個。內(nèi)核調(diào)度器內(nèi)核調(diào)度器提供過濾和選擇確定當(dāng)前處理應(yīng)當(dāng)在哪里進(jìn)行所需要的資源的特征。每個CPU例如通常是通用CPU,而每個KOS是比較特定的。存儲器的一部分在每個KOS之間 共享,以使得在每個KOS之間傳遞指針和文件描述符而非傳遞實際文件數(shù)據(jù)。IPC設(shè)施用于 允許特定進(jìn)程跨CPU、跨KOS通信,由此以進(jìn)程之間事務(wù)協(xié)議的形式來傳送所需要的事務(wù)。本發(fā)明的一個實施方式允許諸如語音合成器的應(yīng)用使用如下KOS在特定CPU上不 間斷地并由此連續(xù)地運(yùn)行,該KOS利用I/O資源的排他性,同時阻擋中斷、隊列以及必須換 出以允許搶占。根據(jù)另一實施方式,應(yīng)用是DVD格式的視頻流,而視頻流允許使用特定CPU、 存儲器和KOS來運(yùn)行而無需面對集中調(diào)度器,而在以下情境中將面對集中調(diào)度器,即其必 須被不時地?fù)Q出以實現(xiàn)集中式OS內(nèi)的進(jìn)程之間的最優(yōu)性。共享存儲器共享存儲器是當(dāng)前UNIX操作系統(tǒng)構(gòu)造的非常主要的部分,并且雖然目前被提供 以用于特定約定,但是其也可以按照特定方式來實現(xiàn),以用于當(dāng)前約定的KOS下的分布式 OS之目的。根據(jù)本發(fā)明的一個實施方式,每個操作系統(tǒng)內(nèi)核具有調(diào)度器,而調(diào)度器是每個內(nèi) 核中重要和關(guān)鍵的組件參與者。每個分布式操作系統(tǒng)的KOS成為KOS調(diào)度器。存在具有四 個此類調(diào)度器的四個此類操作系統(tǒng),而每個調(diào)度器設(shè)計用于使得其與其他操作系統(tǒng)中的其 他調(diào)度器通信。通信被設(shè)計為允許共享其他調(diào)度器的資源。每個調(diào)度器具有附加給其的特 定資源組,其可以包括諸如磁盤訪問、互聯(lián)網(wǎng)訪問、電影DVD播放器、音樂DVD、鍵盤通信等 典型計算機(jī)資源。這些資源附于操作系統(tǒng)內(nèi)核調(diào)度器的給定集合上,每個給定集合能夠在 特定的給定點向其他CPU上的其他KOS操作外包或者卸荷需要特殊資源的特定處理。每個調(diào)度器被指派以存儲器的一部分。調(diào)度器及其內(nèi)核連同其他KOS及其CPU被 一起映射到主存儲器中。TCP/IP 協(xié)議簇TCP和IP本地可以用作在CPU與KOS之間傳送數(shù)據(jù)和應(yīng)用文件的資源。每個KOS 對于其自身相應(yīng)的CPU來說是本地的,其可以具有或者不具有獨立的存儲器映射I/O。在一 個實施方式中,使用多個UNIX系統(tǒng)中存在的TCP端口回環(huán)設(shè)備,其配置用于在KOS系統(tǒng)配 置下,在其他操作系統(tǒng)之間發(fā)送和接收數(shù)據(jù)文件。UDP協(xié)議結(jié)構(gòu)用戶數(shù)據(jù)報(UDP)用戶定義協(xié)議是TCP/IP協(xié)議簇的一部分,并且可以配置用于在 KOS約定下在獨立的CPU與操作系統(tǒng)之間導(dǎo)入或者導(dǎo)出數(shù)據(jù)文件。UDP還可以建立為在獨 立的CPU常駐操作系統(tǒng)之間傳遞消息?;贗/O (輸入/輸出)CPU的操作系統(tǒng)1/0(輸入/輸出)總線控制器充當(dāng)專用設(shè)備,但是也引導(dǎo)任務(wù)特定的任務(wù),包括 磁盤操作或者處理從主存儲器輸入或者輸出的通道數(shù)據(jù)。此類控制器可以簡單地由專用 CPU來替代,而其將提供更多的功能能力,并且允許諸如KOS的常駐軟件提供可重新配置的 應(yīng)用而不是那些硬連接至特定控制器的應(yīng)用。在本發(fā)明的實施方式中,I/0CPU或者處理器 將具有駐留在其中的I/O操作系統(tǒng),該I/O操作系統(tǒng)具有被特別設(shè)計為通常僅處理系統(tǒng)I/ 0功能的調(diào)度器。這將允許總線數(shù)據(jù)避免控制器處的瓶頸,因為這樣CPU將能夠在必要時形 成I/O隊列。表2列出了特定的KOS類型,以及每種類型專門用來支持的具體資源。例如,表2 示出了諸如當(dāng)運(yùn)行CD DVD時(第4列,第5行),媒體OS(第1列,第5行)專門用于執(zhí)行視頻I/O。類似地,表2示出了諸如當(dāng)通過通道總線通信時(第2列,第7行),磁盤OS(第 1列,第7行)專門用于執(zhí)行磁盤I/O。表2 本發(fā)明的一個實施方式部署對構(gòu)造的使用,其中操作系統(tǒng)的功能基于便攜的概 念,可以將其功能性分為線程,其中每個線程彼此獨立地操作。以這種方式,每個線程能夠 在不同的、獨立的調(diào)度器下獨立地執(zhí)行操作。不同的進(jìn)程狀態(tài)在狀態(tài)圖中顯示,其中箭頭指示狀態(tài)之間的可能的轉(zhuǎn)移一可以 看出,一些進(jìn)程存儲在主存儲器中,而一些進(jìn)程存儲在次級(虛擬)存儲器中。圖3示出了內(nèi)核進(jìn)程調(diào)度的狀態(tài)圖200。狀態(tài)圖包括“創(chuàng)建”狀態(tài)201、“等待”狀 態(tài)207、“運(yùn)行”狀態(tài)205、“阻塞”狀態(tài)209、“換出并阻塞”狀態(tài)213、“換出并等待”狀態(tài)211 以及“終止”狀態(tài)203。以下對這些狀態(tài)進(jìn)行全面描述。本發(fā)明的實施方式通過使得多個操作系統(tǒng)彼此依次工作而消除了“換出和等待, 換出和阻塞”狀態(tài)的需要,并且變得更加專用于其管理的資源,由此使用等待狀態(tài)作為傳入 “接收到的”外包或者外發(fā)路由(out-routed)事件的隊列。本發(fā)明的實施方式保留了部署 多線程的能力,換出等待/阻塞部署為用于完成本設(shè)計的其他實現(xiàn)的設(shè)備。主進(jìn)程狀態(tài)以下典型的進(jìn)程狀態(tài)在所有種類的計算機(jī)系統(tǒng)上都是可能的。在這些狀態(tài)中的多 數(shù)狀態(tài)中,進(jìn)程“存儲”在主存儲器中。創(chuàng)建(也稱為“新建”)。當(dāng)進(jìn)程第一次被創(chuàng)建時,其具有“創(chuàng)建”或者“新建”狀態(tài)。在 該狀態(tài)中,進(jìn)程等待對“就緒”狀態(tài)的準(zhǔn)入。該準(zhǔn)入將通過長期調(diào)度器或者準(zhǔn)入調(diào)度器來批 準(zhǔn)或者延遲。通常在多數(shù)臺式計算機(jī)系統(tǒng)中,該準(zhǔn)入將自動地批準(zhǔn),然而對于實時操作系 統(tǒng),該準(zhǔn)入可以延遲。在實時操作系統(tǒng)(RTOS)中,使過多進(jìn)程準(zhǔn)入到“就緒”狀態(tài)可能導(dǎo)致系統(tǒng)資源的過飽和以及過度競爭,從而導(dǎo)致不能滿足進(jìn)程時限的需要。就緒(也稱為“等待”或者“可運(yùn)行”)?!熬途w”或者“等待”的進(jìn)程已經(jīng)被加載到主存 儲器中,并且其等待在CPU上執(zhí)行(將由分派器或者短期調(diào)度器上下文切換至CPU)。在系 統(tǒng)執(zhí)行的任何時刻可能存在多個“就緒”進(jìn)程。例如,在單處理器系統(tǒng)中,在任何時刻僅可 以執(zhí)行一個進(jìn)程,而所有其他的“并發(fā)執(zhí)行”進(jìn)程等待執(zhí)行。運(yùn)行(也稱為“活躍”或者“執(zhí)行”)?!斑\(yùn)行”、“執(zhí)行”或者“活躍”的進(jìn)程是當(dāng)前在CPU 上執(zhí)行的進(jìn)程。從該狀態(tài),進(jìn)程可能超過其分配的時間片并且由操作系統(tǒng)上下文切換出并 且回到“就緒”。進(jìn)程可以指示其已經(jīng)結(jié)束并且終止,或者其可能在一些需要的資源(諸如 輸入/輸出資源)上阻塞并且移至“阻塞”狀態(tài)。阻塞(也稱為“休眠”)。如果進(jìn)程在資源(諸如,文件、信號量或者設(shè)備)上“阻塞”,其 將從CPU被移除(因為阻塞的進(jìn)程不能繼續(xù)執(zhí)行)并且將處于阻塞狀態(tài)。進(jìn)程將保留“阻 塞”直到其資源變得可用,然而這可能導(dǎo)致死鎖。從阻塞狀態(tài),操作系統(tǒng)可以阻止進(jìn)程的資 源的可用性通知給該進(jìn)程阻塞(可以通過中斷來向操作系統(tǒng)本身提示資源可用性)。一旦 操作系統(tǒng)得知進(jìn)程不再阻塞,則進(jìn)程再次“就緒”,并且可以從那里分派至其“運(yùn)行”狀態(tài)。從 那里,進(jìn)程可以使用其新可用的資源。終止進(jìn)程可以通過完成其執(zhí)行或者被顯式地殺死(kill)而從“運(yùn)行”狀態(tài)終止。在這 兩種情況的任意一種中,進(jìn)程移至“終止”狀態(tài)。如果在進(jìn)入該狀態(tài)之后,進(jìn)程沒有從存儲 器中移除,則該狀態(tài)還可以稱為“僵死”(zombie)。附加進(jìn)程狀態(tài)對于支持虛擬存儲器的系統(tǒng)中的進(jìn)程,兩個附加的狀態(tài)是可用的。在這兩個狀態(tài) 中,進(jìn)程都“存儲”在次級存儲器(通常是硬盤)上。換出和等待(也稱為“掛起和等待”)。在支持虛擬存儲器的系統(tǒng)中,可以將進(jìn)程換出,即通過 中期調(diào)度器將其從主存儲器中移除并且放置到虛擬存儲器中。進(jìn)程可以由此換回到等待狀 態(tài)中。換出和阻塞(也稱為“掛起和阻塞”)。阻塞的進(jìn)程也可以被換出。在這種情況下,進(jìn)程可以同 時換出和阻塞,并且可以在與換出和等待進(jìn)程相同的條件下被再次換入(但是在這種情況 下,進(jìn)程將移至阻塞狀態(tài),并且可能仍然等待資源變得可用)。調(diào)度多任務(wù)內(nèi)核(如Linux)允許在任何給定時刻存在不止一個進(jìn)程,并且允許每個進(jìn) 程如同它是系統(tǒng)上唯一的進(jìn)程那樣運(yùn)行。進(jìn)程不需要知道任何其他進(jìn)程,除非將其明確設(shè) 計為那樣。這使得程序更加易于開發(fā)、維護(hù)和移植。雖然系統(tǒng)中的每個CPU每次只能執(zhí)行進(jìn) 程中的一個線程,但是看似可以同時執(zhí)行來自多個進(jìn)程的多個線程。這是因為,線程被調(diào)度 為運(yùn)行非常短的時間段,然后給其他線程運(yùn)行的機(jī)會。內(nèi)核的調(diào)度器強(qiáng)制執(zhí)行線程調(diào)度策略,包括線程可以執(zhí)行的時間、線程可以執(zhí)行多久以及在一些情況下線程可以在何處(SMP 系統(tǒng)上)執(zhí)行。通常,調(diào)度器在其自身的線程中運(yùn)行,其由計時器中斷喚醒。否則,其經(jīng)由系 統(tǒng)調(diào)用或者希望讓出系統(tǒng)的另一內(nèi)核線程來調(diào)用。線程將被允許執(zhí)行特定的時間量,然后 將發(fā)生到調(diào)度器線程的上下文切換,隨后發(fā)生到調(diào)度器選擇的線程的另一上下文切換。該 循環(huán)繼續(xù)進(jìn)行,并且以這種方式,實現(xiàn)了 CPU使用的特定策略。CPU限制和I/O限制的線程執(zhí)行的線程傾向于是CPU限制的或者是I/O限制(輸入/輸出限制)的。也就是, 一些線程耗費大量時間來使用CPU執(zhí)行計算,而其他的線程耗費大量時間來等待相對較慢 的I/O操作完成。例如,排序DNA的線程將是CPU限制的。獲取字處理程序輸入的線程將 是I/O限制的,因為其耗費了其多數(shù)時間用于等待人的鍵入。線程是否應(yīng)當(dāng)視為CPU限制 或者I/O限制并非總是清楚的。如果調(diào)度器非常關(guān)注于此,則其最好的做法是猜測。很多 調(diào)度器確實關(guān)心線程是否應(yīng)當(dāng)視為CPU限制或者I/O限制,因此,用于將線程分類為這一種 或者另一種的技術(shù)是調(diào)度器的重要部分。調(diào)度器傾向于給I/O限制的線程訪問CPU的優(yōu)先 級。接受人的輸入的程序傾向于是I/O限制的-即使是最快的打字員在每次擊鍵之間也具 有相當(dāng)多的時間量,在此期間,他或者她進(jìn)行交互的程序僅在等待。對與人交互的程序給予 優(yōu)先級是重要的,因為當(dāng)人在期待立即響應(yīng)時,速度和響應(yīng)性的缺乏將更容易被感覺到。輪轉(zhuǎn)調(diào)度算法調(diào)度是將任務(wù)指派給一組資源的過程。這在諸如計算和生產(chǎn)過程的多種領(lǐng)域中是 很重要的概念。調(diào)度是多任務(wù)和多處理操作系統(tǒng)設(shè)計以及實時操作系統(tǒng)設(shè)計中的關(guān)鍵概念。調(diào)度 是指為進(jìn)程指派優(yōu)先級隊列中優(yōu)先級的方法。該指派由稱為調(diào)度器的軟件來實現(xiàn)。在通用操作系統(tǒng)中,調(diào)度器的目的是均衡處理器負(fù)載,并且防止任何一個進(jìn)程獨 占處理器或者缺乏資源。在諸如工業(yè)中的自動控制設(shè)備(例如機(jī)器人)的實時環(huán)境中,調(diào) 度器還需要保證進(jìn)程可以滿足時限;這對于保持系統(tǒng)穩(wěn)定是關(guān)鍵性的。輪轉(zhuǎn)是對于操作系統(tǒng)中的進(jìn)程最簡單的調(diào)度算法。該算法以相同的份額和順序?qū)?時間片指派給每個進(jìn)程,將所有的進(jìn)程處理為具有相同的優(yōu)先級。在設(shè)置有優(yōu)先級的調(diào)度 系統(tǒng)中,通常以輪轉(zhuǎn)方式來尋址相同優(yōu)先級的進(jìn)程。該算法起始于PDB (進(jìn)程描述符塊)列 表的開始,當(dāng)時間片變得可用時,給予每個應(yīng)用以相同的CPU機(jī)會。輪轉(zhuǎn)調(diào)度具有易于在軟件中實現(xiàn)的巨大優(yōu)勢。因為操作系統(tǒng)必須具有對列表開始 的引用以及對當(dāng)前應(yīng)用的引用,所以其可以只通過沿著PDB數(shù)組或者鏈表找到下一元素, 來容易地決定接下來運(yùn)行哪一個。一旦到達(dá)數(shù)組的結(jié)尾,將選擇重置回數(shù)組的開始。必須 對PDB進(jìn)行檢查以保證不會疏忽地選擇阻塞的應(yīng)用,因為這將不必要地浪費CPU時間,或者 更嚴(yán)重地,使得任務(wù)認(rèn)為其已經(jīng)找到其資源,而實際上其還應(yīng)當(dāng)?shù)却Pg(shù)語“輪轉(zhuǎn)”來自其 他領(lǐng)域所公知的輪轉(zhuǎn)原理,其中每個人依次得到對某個事物的平等共享。簡言之,每個進(jìn)程被指派以某個時間間隔,其被稱為其定額,在這段時間期間允許 該進(jìn)程運(yùn)行。如果進(jìn)程在其定額結(jié)束時仍然在運(yùn)行,則CPU被搶占并給予另一進(jìn)程。如果 在定額結(jié)束之前進(jìn)程已經(jīng)阻塞或者結(jié)束,則在進(jìn)程阻塞時進(jìn)行CPU切換。按照調(diào)度算法如何處理時鐘中斷,可以將調(diào)度算法分為兩類。非搶占式調(diào)度
如果一旦將CPU給予進(jìn)程,該進(jìn)程就將保持該CPU,則調(diào)度規(guī)則是非搶占式的。以 下是非搶占式調(diào)度的一些特性1.在非搶占式系統(tǒng)中,較長的作業(yè)使得短作業(yè)等待,但是所有進(jìn)程的綜合處理是 公平的。2.在非搶占式系統(tǒng)中,響應(yīng)時間更加可預(yù)測,因為傳入的高優(yōu)先級的作業(yè)不可以 替換等待的作業(yè)。3.在非搶占式調(diào)度中,調(diào)度器在以下兩種情況下執(zhí)行作業(yè)a.當(dāng)系統(tǒng)從運(yùn)行狀態(tài)切換至等待狀態(tài)時。b.當(dāng)進(jìn)程終止時。搶占式調(diào)度如果一旦將CPU給予進(jìn)程,CPU可以被奪走,則調(diào)度規(guī)則是搶占式的。允許邏輯上 可運(yùn)行的進(jìn)程暫時掛起的策略稱為搶占式調(diào)度,并且與“運(yùn)行直至完成”方法相對。輪換調(diào)度是搶占式的(在時間片的末端);因此,其在時間共享環(huán)境中是有效的, 在該環(huán)境中,系統(tǒng)需要保證交互式用戶的合理的響應(yīng)時間。輪換方案最令人關(guān)注的問題是定額的長度。定額設(shè)置得過短會導(dǎo)致過多的上下文 切換并且降低CPU效率。另一方面,定額設(shè)置得過長可能導(dǎo)致較差的響應(yīng)時間,并且接近于 先到先服務(wù)(FCFS)。這在以下示例中示出。假設(shè)任務(wù)切換花費2msec。如果定額為8msec,則可以保證非常良好的響應(yīng)時間。 在該示例中,20個用戶全部登錄到一個CPU服務(wù)器上;每個用戶同時發(fā)起請求。每個任務(wù)最 多花費IOmsec (8msec定額+2msec開銷),并且第20個用戶在200msec (10msec*20)即1/5 秒內(nèi)得到響應(yīng)。另一方面,效率是可用時間總時間=8ms/10ms = 80%,即20%的CPU時間浪費在開銷上。對于200msec 的定額,效率是 200msec/202msec =約 99%但是,如果20個用戶同時發(fā)起請求,則響應(yīng)時間是202*20 = 4040msec,或者> 4 秒,該響應(yīng)時間不佳。為了全面了解真實情況,考慮參數(shù)定義 響應(yīng)時間進(jìn)程完成的時間。OS可能想要傾向于特定類型的進(jìn)程,或者最小化 平均時間之類的統(tǒng)計屬性。 實現(xiàn)時間這包括算法和維護(hù)的復(fù)雜度 開銷決定要調(diào)度哪個進(jìn)程以及收集做出選擇所需的數(shù)據(jù)的時間 公平性對不同的用戶進(jìn)程進(jìn)行不同對待的程度所以,較大的定額保證更加有效,而較小的定額保證較好的響應(yīng)時間。吞吐量和周 轉(zhuǎn)取決于系統(tǒng)中作業(yè)的數(shù)目和每個任務(wù)的I/O使用。輪轉(zhuǎn)顯然是公平的。在任何情況下,輪轉(zhuǎn)調(diào)度下的平均等待時間通常是相當(dāng)長的_進(jìn)程可能使用小于 其時間片的時間片(例如,阻塞信號量或者I/O操作)。除非沒有其他任務(wù)運(yùn)行,否則閑置 任務(wù)不應(yīng)當(dāng)?shù)玫紺PU (其不應(yīng)當(dāng)參加輪轉(zhuǎn))。多數(shù)目前的主要操作系統(tǒng)運(yùn)行輪轉(zhuǎn)的變體,并且它們帶來的最重要的改進(jìn)可能是 進(jìn)程的優(yōu)先級類別。設(shè)置這些類別的簡單算法是將優(yōu)先級設(shè)置1/f,其中f是進(jìn)程使用的最后定額的部分。僅使用了其100msec共享中的2msec的進(jìn)程將得到優(yōu)先級等級50,而在阻塞前使用 了 50msec的進(jìn)程將得到優(yōu)先級等級2。因此,使用了其全部100msec定額的進(jìn)程將得到最
低的優(yōu)先級(其將是1,在其他系統(tǒng)上,優(yōu)先級是C語言風(fēng)格的W......99],而不像Linux
將其設(shè)置為從1到99)。對于KOS調(diào)度器,可察覺地存在三種操作系統(tǒng)設(shè)計的配置。圖1示出了緊密集群 KOS配置,其中資源如同所有其他傳統(tǒng)的操作系統(tǒng)一樣沿外周長分布。圖4示出了具有在KOS概念設(shè)計下可行的若干附加特征的系統(tǒng)300。這些附加特 征包括中央路由OS設(shè)施301,其僅被指定用于如下目的從輸入設(shè)備接收事件并且將其路 由至適當(dāng)?shù)姆植糘S以得到對資源的訪問。在這種設(shè)計下,每個操作系統(tǒng)具有嵌入其存儲器 使用的有限數(shù)目的資源,對于這些資源,操作系統(tǒng)可以立即到達(dá)以獲得對向其指派的每個 事件的完全解析。在外周長中的是附加資源,其可以被認(rèn)為是這樣的系統(tǒng)資源,即每個內(nèi)核 OS必須共享該系統(tǒng)資源,并且可以為擴(kuò)展事件(需要擴(kuò)展資源來完成的作業(yè))而預(yù)留。如圖4所示,系統(tǒng)300在OS設(shè)施301周圍還包括多個操作系統(tǒng)310-316。操作系 統(tǒng)310-316示意性地被示為由資源的殼330包圍,該資源的殼330繼而由應(yīng)用的殼340包 圍。內(nèi)核操作調(diào)度器的配置的一種方法是星型配置。在星型配置下,一個內(nèi)核配置用 于充當(dāng)中央分派器,其作用是接受就緒狀態(tài)的進(jìn)程;為這些進(jìn)程挑選(screen)需要的資 源,諸如額外的存儲器分配、棧需求或者魯棒的I/O業(yè)務(wù)等;以及將進(jìn)程分派到配置用于支 持此類請求的適當(dāng)操作系統(tǒng)環(huán)境。在星型配置下,沒有進(jìn)程會阻塞或者休眠,業(yè)務(wù)流僅使用 三個狀態(tài)運(yùn)行狀態(tài)、等待狀態(tài)和切換狀態(tài)。系統(tǒng)S1內(nèi)的星型核心內(nèi)核配置充當(dāng)核心的內(nèi)核由η個其他內(nèi)核包圍。圖5示出了根據(jù)本發(fā)明一個實施方式的系 統(tǒng)S1內(nèi)的星型核心內(nèi)核配置350。該配置包括具有KOS 360的中央路由操作系統(tǒng),其由內(nèi) 核操作系統(tǒng)351-356包圍,該內(nèi)核操作系統(tǒng)351-356由應(yīng)用的殼363包圍。包圍操作系統(tǒng) 351-356中每一個的殼對應(yīng)于操作系統(tǒng)351-356中每一個的可用資源。中央路由操作系統(tǒng) 執(zhí)行以下典型的進(jìn)程狀態(tài)1.當(dāng)進(jìn)程第一次在系統(tǒng)S1內(nèi)被創(chuàng)建時,其具有新建進(jìn)程狀態(tài),其中其挑選需要的 資源(參見系統(tǒng)資源部分)。一旦確定了所需要的資源,核心即查找可能滿足這些資源需求 的操作系統(tǒng)(其可能理想地處于閑置狀態(tài)),諸如I/O操作系統(tǒng)(參見I/O操作系統(tǒng))。一 旦確定了的適當(dāng)0S,便將進(jìn)程移至切換狀態(tài)(通常不是就緒狀態(tài)),并且在時鐘的下一個周 期將進(jìn)程分派給系統(tǒng)S1內(nèi)的適當(dāng)操作系統(tǒng)。2.核心具有“運(yùn)行狀態(tài)”,其用于基于已經(jīng)被分派并且當(dāng)前應(yīng)當(dāng)運(yùn)行的進(jìn)程來與所 有其他的運(yùn)行狀態(tài)通信。核心的運(yùn)行狀態(tài)主要是不只是靜止的通信狀態(tài)或者虛擬運(yùn)行狀 態(tài),其并不實際運(yùn)行進(jìn)程,而是記錄系統(tǒng)S內(nèi)所有運(yùn)行進(jìn)程的情況并且將每個狀態(tài)通告給 控制臺。3.剛剛創(chuàng)建的進(jìn)程的就緒狀態(tài),其在星型核心內(nèi)核下是充當(dāng)分類狀態(tài)或者挑選狀 態(tài)的狀態(tài),而在星型內(nèi)核下的任何外圍內(nèi)核中,其充當(dāng)?shù)却隣顟B(tài)或者可運(yùn)行狀態(tài),與其在傳 統(tǒng)的進(jìn)程狀態(tài)下一樣。圖6是在通信通道C 680上通信的多個內(nèi)核601、630和640的高層框圖,每個內(nèi)核具有切換出的應(yīng)用程序A和切換入的應(yīng)用程序B。例如,內(nèi)核601由中央處理單元602 執(zhí)行并且包含調(diào)度器607、KOS 610,該KOS 610具有運(yùn)行狀態(tài)611、等待狀態(tài)612以及用于 切換應(yīng)用程序A 615的切換狀態(tài)613。圖6示出了切換出的應(yīng)用A 615和切換入的應(yīng)用B 605。內(nèi)核630和640與內(nèi)核601類似地操作,此處將不再描述。通信通道C 680在內(nèi)核中 的KOS調(diào)度器之間并且跨越CPU。共享的存儲器圖7示出了系統(tǒng)700,該系統(tǒng)700包括由Σ ^20, Σ 2721、Σ 3722和Σ 4724指示的 共享存儲器,以及操作系統(tǒng)環(huán)境710-713。參考圖7,共享存儲器是Unix操作系統(tǒng)的一部 分,并且雖然提供的概念是在特定的約定中使用,但是根據(jù)本發(fā)明的實施方式,其也可以按 照特定方式來實現(xiàn)以用于分布式操作系統(tǒng)之目的。如果每個操作系統(tǒng)內(nèi)核變?yōu)閷S谜{(diào)度 器,并且存在具有這些專用調(diào)度器的四個此類操作系統(tǒng),則每個操作系統(tǒng)這樣來設(shè)計,使得 其按照允許共享其他調(diào)度器的資源的方式來與其他調(diào)度器通信。如果在每個調(diào)度器初始化 (啟動)時已經(jīng)將其他調(diào)度器所知的特定資源附于其上,則每個調(diào)度器在其操作中的給定 點可以將不是其所提供的資源類別一部分的操作外包給其他調(diào)度器。每個調(diào)度器被指派以其與其他調(diào)度器共享的存儲器的一部分,并且在將操作外包 給需要利用待訪問和操作的數(shù)據(jù)集來運(yùn)行程序以便完成的其他調(diào)度器時,外包調(diào)度器僅向 接收調(diào)度器傳送指針和文件描述符,而不是傳送數(shù)據(jù)量本身??梢栽诮邮照{(diào)度器上對指針 和文件描述符進(jìn)行排隊,以便在其CPU上處理。IPC設(shè)施和協(xié)議棧IPC設(shè)施以及協(xié)議棧兩者都與UNIX OS構(gòu)造隔開,并且已經(jīng)適當(dāng)?shù)丶蔀楣ぞ?。這 些工具對于本發(fā)明也是有用的。這些工具可以配置用于基本上以其預(yù)定的形式來提供集群 中的操作系統(tǒng)之間的通信,只不過現(xiàn)在分布式計算并入特定計算機(jī)系統(tǒng)而不是跨過若干平臺。IPC調(diào)度器圖8示出了作為一個資源的網(wǎng)絡(luò)控制器,示出了向網(wǎng)絡(luò)操作系統(tǒng)(NOS) 755傳送的 數(shù)據(jù)分組751。參考圖8,內(nèi)核調(diào)度器提供了針對資源進(jìn)程獲取的過濾,并且內(nèi)核調(diào)度器首 先選擇確定處理應(yīng)當(dāng)在哪里發(fā)生所需要的資源。每個CPU是通用CPU,而每個操作系統(tǒng)的 內(nèi)核變得更加特定,并且專用于資源分組或者集合的分配。圖8示出了根據(jù)本發(fā)明使用的 特定和專用操作系統(tǒng)的一個實施方式。NOS 755能夠使用FTP、PPP、調(diào)制解調(diào)器、Airport、 TCP/IP、NFS和Appletalk協(xié)議中的任意一種或者多種協(xié)議,并且使用具有代理選項的端可以理解,存儲器被劃分為象限,并且存儲器的部分在每個操作系統(tǒng)之間劃分,而 可以通過指派在系統(tǒng)間傳遞指針和文件描述符,而不是移動大量數(shù)據(jù)。IPC設(shè)施被用來允許 進(jìn)程傳送消息,以便以事務(wù)協(xié)議的形式傳送所需要的事務(wù)。在一個實施方式中,諸如語音合成器的應(yīng)用能夠使用特定I/00S而在CPU上連續(xù) 運(yùn)行,而沒有中斷使該處理中斷。在另一實施方式中,允許諸如視頻流的應(yīng)用使用特定CPU、 存儲器和OS運(yùn)行,不受到在其生命過程期間換入和換出程序的調(diào)度器的控制。圖9示出了根據(jù)本發(fā)明一個實施方式的KOS 790,其用于向I/O鍵781、I/O視頻 783、I/O盤784、I/O通用串行總線785、I/O輔助端口 786、打印OS 787以及I/O網(wǎng)絡(luò)控制器788指派進(jìn)程。參考圖9,I/O總線具有控制器,并且該控制器是總線上資源的管理器。 資源需要將數(shù)據(jù)沿總線來回移動。因為I/O是每個計算機(jī)的基本功能,所以其不應(yīng)當(dāng)再是 操作系統(tǒng)的子功能。根據(jù)本發(fā)明的一個實施方式,操作系統(tǒng)協(xié)調(diào)多個全部并行并且異步操 作的從屬操作系統(tǒng)。I/O操作系統(tǒng)I/O操作系統(tǒng)執(zhí)行從集中式異步中央OS的數(shù)據(jù)獲取,并且執(zhí)行控制器功能,該功 能確定如何以及何時傳送數(shù)據(jù)。根據(jù)本發(fā)明,部署一種構(gòu)造,其中,基于便攜概念的操作系統(tǒng)的功能可以將其功能 分為線程,其中線程類似于進(jìn)程,但是可以與其他線程代碼、數(shù)據(jù)和其他資源共享。在一個實施方式中,如圖10所示,構(gòu)造部署有操作系統(tǒng)801、803、805、807、812和 814的功能,而系統(tǒng)調(diào)用全部形成異步操作系統(tǒng)810和816,其使用線程化通信來一起操作。 具有其自己獨立內(nèi)核的每個操作系統(tǒng)被專門設(shè)計用于兩個專用功能和隊列管理。該布置 通過將所有的任務(wù)分布在計算機(jī)中來拆解周期時間,并且使用多個CPU。每個內(nèi)核依賴于 CPU,而控制器由CPU或者專用控制器代替。主KOS進(jìn)程狀態(tài)以下典型的進(jìn)程狀態(tài)在所有種類的計算機(jī)系統(tǒng)上都是可行的。在這些狀態(tài)中的多 數(shù)狀態(tài)中,進(jìn)程“存儲”在主存儲器上。創(chuàng)建(也稱為“新建”)。當(dāng)打開應(yīng)用時,進(jìn)程被第一次創(chuàng)建,其具有“創(chuàng)建”或者“新建” 狀態(tài)。在該應(yīng)用狀態(tài)中,進(jìn)程等待準(zhǔn)入至“就緒”運(yùn)行狀態(tài)。該準(zhǔn)入將由長期或者準(zhǔn)入KOS 調(diào)度器來批準(zhǔn)或者延遲。在準(zhǔn)入期間,檢查該進(jìn)程所需要的資源,其后將其準(zhǔn)入到運(yùn)行狀 態(tài);或者可以將其重新指派為切換狀態(tài),以切換至具有該進(jìn)程運(yùn)行所需的適當(dāng)資源的另一 CPU操作系統(tǒng)。就緒(等待)該狀態(tài)類似于以上所述的“就緒”主進(jìn)程狀態(tài)。運(yùn)行該狀態(tài)類似于以上所述的“運(yùn)行”主進(jìn)程狀態(tài)。切換(之前稱為阻塞)(之前也稱為“休眠”)。代替使進(jìn)程“阻塞”在資源(諸如文件、信號量或者設(shè)備) 上,進(jìn)程從當(dāng)前CPU和操作系統(tǒng)被移除(因為阻塞的進(jìn)程不能繼續(xù)執(zhí)行)并且處于阻塞狀 態(tài),移至其需要的資源連續(xù)可用的另一 CPU和操作系統(tǒng)。在單個CPU/單個OS情況下,進(jìn)程 將保持“阻塞”,直到其資源變得可用,這可能會遺憾地導(dǎo)致死鎖。從阻塞狀態(tài),操作系統(tǒng)可 以將使進(jìn)程阻塞的資源的可用性通知給該進(jìn)程(通過中斷向操作系統(tǒng)本身提示資源可用 性)。一旦進(jìn)程到達(dá)其資源可用的適當(dāng)操作系統(tǒng),進(jìn)程即再次準(zhǔn)入到“就緒”,并且可以從“就 緒”被分派至其“運(yùn)行”狀態(tài),此后進(jìn)程可以使用其新的可用資源。終止該狀態(tài)類似于以上所述的“終止”主進(jìn)程狀態(tài)。附加進(jìn)程狀態(tài)兩種附加狀態(tài)對于支持虛擬存儲器的系統(tǒng)中的進(jìn)程是可用的。在這兩種狀態(tài)中,進(jìn)程“存儲”在次級存儲器(通常是硬盤)上。換出和等待該狀態(tài)類似于以上所述的“交換和等待”主進(jìn)程狀態(tài)。換出和阻塞該狀態(tài)類似于以上所述的“換出和阻塞”主進(jìn)程狀態(tài)。圖11示出了支持信令的協(xié)議。例如,協(xié)議KC可以用于同步多個內(nèi)核Ks_852、 κι/0文件系統(tǒng)I853、K應(yīng)用力54、K控制855禾Π K總線控制856。 討論了用于同步三個或者更多內(nèi)核以與 操作環(huán)境中的中央和核心內(nèi)核同步工作的方法。UNIX操作系統(tǒng)通常由稱為內(nèi)核的核心組 成,而內(nèi)核執(zhí)行所有的中央命令并且跨過執(zhí)行實現(xiàn)操作的特定任務(wù)的環(huán)境來分布多個處理 或者節(jié)點。此處描述的方法的不同之處在于首先允許中央核心內(nèi)核將所有的輸入和輸出 操作中的大部分外包給I/O內(nèi)核,然后該I/O內(nèi)核將執(zhí)行此操作的其余部分而不對中央內(nèi) 核或者核心造成進(jìn)一步負(fù)擔(dān)。在操作系統(tǒng)內(nèi),文件1/0(即,去往和來自存儲器的數(shù)據(jù)傳送)占用了傳統(tǒng)內(nèi)核的 比例較大的操作,并且當(dāng)傳統(tǒng)的內(nèi)核可以從此類繁重任務(wù)(也即,I/O)中解放出來時,由內(nèi) 核執(zhí)行的操作(諸如,應(yīng)用和中斷命令的管理,以及諸如在特定CPU上調(diào)度處理時間的其他 核心布置)將以降低的延遲完成。該方法描述了中央層級式內(nèi)核與若干從屬和/或異步內(nèi)核的操作之間的任務(wù)分 離。一種對稱內(nèi)核處理環(huán)境,其中對稱內(nèi)核使用環(huán)境變量來異步地處理共享信息,以控制 和指出可能在此類環(huán)境一致性下另外發(fā)生的沖突。該方法還描述了對稱的、形而上的類輪 (wheel-like)設(shè)備上的多個輪換(rotating)內(nèi)核,其全部通過環(huán)境變量來共享信息,這些 環(huán)境變量用于控制內(nèi)核與其操作的命令和數(shù)據(jù)之間的沖突。通信協(xié)議根據(jù)本發(fā)明的實施方式,通信協(xié)議被定義為在環(huán)境下運(yùn)行的內(nèi)核之間的通信,以 及在那些內(nèi)核下運(yùn)行的進(jìn)程之間的通信協(xié)議。通過使通信由所考慮的特定類型通信外部的 進(jìn)程來管理,通信協(xié)議允許兩個或者更多進(jìn)程存在并且在每個進(jìn)程之間同時通信。根據(jù)配 置架構(gòu)的類型,可以不同地設(shè)計通信協(xié)議。進(jìn)程排隊至通信端口而不是用于進(jìn)程之間通信的表。如圖12所示,進(jìn)程911-916 都嘗試訪問通信端口 910。在釋放請求和資源時,進(jìn)程管理器管理進(jìn)程之間的通信。在該 類似端口的通信過程期間,相對于標(biāo)準(zhǔn)IPC表配置而提供的多個優(yōu)點之一在于不止兩個 進(jìn)程可以同時通信。另一個優(yōu)點在于所有的通信由進(jìn)程之間的協(xié)議而不是握手概念來管 理。當(dāng)六個或者更多進(jìn)程排隊以建立彼此之間的通信時,每個進(jìn)程需要建立其自身與一個 或者多個其他進(jìn)程之間的直接連接。例如,在圖12中,進(jìn)程911具有要釋放的資源A,并且進(jìn)程912開始請求資源A。 在進(jìn)程911與912之間建立了通信,通過該通信它們具有與資源A的共享關(guān)系,其由進(jìn)程管 理器來管理,該進(jìn)程管理器執(zhí)行兩個進(jìn)程之間的通信。如果在給定情況下,進(jìn)程911和進(jìn)程 912都請求資源C,并且進(jìn)程911在請求資源C的同時正在釋放資源A,而進(jìn)程915沒有開始 釋放資源C,則阻塞進(jìn)程912的請求,直到進(jìn)程911獲取資源C并釋放它。該給定情況由以 下事實決定存在多個請求資源的進(jìn)程,并且可能可用資源不足。根據(jù)按照本發(fā)明的KOS的實施方式,以下所述的管理器都被使用,包括但不限于關(guān)系管理器、處理器管理器、線程管理器、資源管理器和資源分配管理器。以下的討論描述 了這些管理器以及K0S的其他組件如何運(yùn)作。關(guān)系管理器關(guān)系管理器管理在任意給定時刻環(huán)境中運(yùn)行的多個內(nèi)核之間的關(guān)系。雖然每個內(nèi) 核可以負(fù)責(zé)執(zhí)行其內(nèi)核代碼的任意數(shù)目的給定線程,但是該因素不進(jìn)入由關(guān)系管理器執(zhí)行 的任務(wù)內(nèi)。根據(jù)本發(fā)明的實施方式,由關(guān)系管理器執(zhí)行的任務(wù)是涉及內(nèi)核及其彼此關(guān)系的 那些任務(wù)。取決于配置的類型,每個關(guān)系管理器使用特定的已建立協(xié)議來通信,以便在洋蔥 圈(Ring-Onion)內(nèi)核系統(tǒng)內(nèi)組織的內(nèi)核之間或者跨四個配置架構(gòu)中每一個內(nèi)的操作系統(tǒng) 來共享信息。這在圖13中示出,其示出了資源管理器921和資源分配管理器922。在圖13 內(nèi),稱為資源共享的協(xié)議{A1}表示從關(guān)系管理器發(fā)送出的、請求駐留在環(huán)境中的特定資源 的知識的協(xié)議數(shù)據(jù)。本圖中并且在相同資源管理器下的{B1}表示完全相同的協(xié)議的另一 層,其通告與資源空出或者到資源被釋放的估計時間有關(guān)的信息。{C1}是第三參數(shù)和協(xié)議 層,其指示接收到的與已經(jīng)被請求的、空出的資源或者特定資源駐留在哪里有關(guān)的信息。在另一示例中,關(guān)系管理器RM1產(chǎn)生針對關(guān)系管理器RM2下的資源A1的請求。 如果關(guān)系管理器冊2知道A1正在被使用,則關(guān)系管理器RM2可能通過進(jìn)行其資源管理器 RsMgr2的請求來估計釋放A1的時間長度,由此通過層級式協(xié)議的系統(tǒng)向請求的源發(fā)回信 肩、o一旦RM1得知A1的釋放,RM1即使用例如特定協(xié)議層來向RM3發(fā)送信號。只要RM3 得知其內(nèi)核或者其內(nèi)核的線程之一占用了 A1資源,則如果在環(huán)形架構(gòu)中,RM3信號通知環(huán) 境中所有操作內(nèi)核或者操作系統(tǒng)的資源分配管理器;如果在星型中心架構(gòu)下,RM3僅信號 通知命令控制操作系統(tǒng)或者內(nèi)核。任務(wù)分布的配置雖然駐留在所有內(nèi)核上的調(diào)度器對于如何在任何執(zhí)行中分布任務(wù)來說是集中式 的,這些調(diào)度器對于本發(fā)明以及如何實現(xiàn)工作流來說也是集中式的。存在四種或者更多類 型的配置,在所述配置下,本發(fā)明的實施方式執(zhí)行被指派給環(huán)境的任務(wù),并且將其確定為環(huán) 境的中心命令結(jié)構(gòu),這些配置命名如下架構(gòu)1.層級式結(jié)構(gòu)在多個內(nèi)核在本發(fā)明下的環(huán)境中同時運(yùn)行的層級式結(jié)構(gòu)中,主機(jī)內(nèi)核對于所有的 控制是集中式的,并且接收所有傳入的將要由該環(huán)境執(zhí)行的作業(yè)或者任務(wù)。命令內(nèi)核為任 務(wù)挑選所需要的資源,并且將特定任務(wù)指派到適當(dāng)內(nèi)核,所述任務(wù)將在該適當(dāng)內(nèi)核處執(zhí)行 直到完成。命令內(nèi)核之下是關(guān)系管理器,其管理命令內(nèi)核與環(huán)境中運(yùn)行的后續(xù)內(nèi)核之間的 關(guān)系。關(guān)系管理器通過類似于以上所述的控制協(xié)議結(jié)構(gòu)來管理其他內(nèi)核。關(guān)系管理器記錄 并且均衡在環(huán)境內(nèi)運(yùn)行的其他內(nèi)核中的每個內(nèi)核之間的資源請求和資源需求。為了執(zhí)行這 一事務(wù),關(guān)系管理器必須理解所有的任務(wù)和作業(yè)最初指派至何處以及為什么將其指派給特 定內(nèi)核。在層級式結(jié)構(gòu)下,將安裝在環(huán)境中的資源指派給特定內(nèi)核;例如,將打印機(jī)指派給 特定內(nèi)核,而將視頻屏幕指派給另一內(nèi)核。由于獲得特定資源的延遲,需要特定I/O驅(qū)動任 務(wù)的任務(wù)將不會中斷視頻/音頻驅(qū)動任務(wù)。
2.輪轉(zhuǎn)輪轉(zhuǎn)配置由以預(yù)定順序被指派給內(nèi)核的任務(wù)組成。在這種情況下,如果內(nèi)核不包 含執(zhí)行任務(wù)所需要的資源,則關(guān)系管理器負(fù)責(zé)按順序?qū)⒃撊蝿?wù)轉(zhuǎn)發(fā)給下一個內(nèi)核。根據(jù)本 發(fā)明,輪轉(zhuǎn)配置可以適合多種不同的情況,然而,在其他情況中,其可能不受益于本發(fā)明預(yù) 期的所期望的益處。在輪轉(zhuǎn)配置下,每個內(nèi)核在環(huán)境中彼此異步地運(yùn)行,并且由關(guān)系管理器鏈接,該關(guān) 系管理器由此與每個相應(yīng)內(nèi)核下的每個資源管理器通信。輪轉(zhuǎn)配置不具有控制的中心點。 在該配置中,不存在命令內(nèi)核。將每個內(nèi)核視為在抽象環(huán)形配置中,并且通過其相應(yīng)的關(guān)系 管理器連接至其他內(nèi)核。3.先進(jìn)先出在FiFo配置下,每個內(nèi)核在先到先服務(wù)的基礎(chǔ)上執(zhí)行呈現(xiàn)給環(huán)境的每個任務(wù)。如 果需要將特定任務(wù)呈現(xiàn)給內(nèi)核,并且內(nèi)核空出足以接受給定任務(wù),則任務(wù)將駐留在該內(nèi)核 直到任務(wù)變?yōu)獒槍Y源阻塞的。4.星型中心星型中心架構(gòu)通過具有圍繞中央命令內(nèi)核的多個內(nèi)核的環(huán)來定義。中央命令內(nèi)核 是控制內(nèi)核,其使用其設(shè)施來接收和組織針對星型配置下其他內(nèi)核的任務(wù)請求。星型配置 根據(jù)環(huán)境內(nèi)的資源而將從屬內(nèi)核分組為星座。考慮操作系統(tǒng),其中給定任務(wù)需要使用給定 資源,而其他的任務(wù)通常在該資源上阻塞,直到一個任務(wù)完成其使用。根據(jù)本發(fā)明,在克服 此類瓶頸中,內(nèi)核線程專用于運(yùn)行特定內(nèi)核的拷貝,同時允許其他內(nèi)核使用其相應(yīng)的線程。 針對多個操作系統(tǒng)的多個條件之一是允許專用內(nèi)核使用如下能力來處理特定資源,即擠 出(thread out)其代碼的拷貝來處理特定類型的多個附加資源;由此,多個內(nèi)核不僅在多 個CPU上運(yùn)行,而且在跨CPU的多重性的其本身的多個拷貝上運(yùn)行。5.洋蔥圈內(nèi)核系統(tǒng)在洋蔥圈內(nèi)核系統(tǒng)中,多個卸下(strip-down)內(nèi)核在操作系統(tǒng)的服務(wù)結(jié)構(gòu)內(nèi)同 時工作。操作系統(tǒng)的服務(wù)結(jié)構(gòu)是指構(gòu)成服務(wù)的特定操作系統(tǒng)集合的所有附屬和輔助文件。 這些服務(wù)可以是共享的。在該架構(gòu)下,給定設(shè)計的多樣性,諸如內(nèi)核代碼外部的系統(tǒng)調(diào)用設(shè) 施和其他機(jī)制可能影響特定需求下的性能。在洋蔥圈內(nèi)核系統(tǒng)的情況下,內(nèi)核全部執(zhí)行單 個操作系統(tǒng)內(nèi)核的任務(wù),但是相對于彼此異步地執(zhí)行,并且在分離的CPU上執(zhí)行,同時共享 附屬文件和設(shè)備。上面的圖1示出了洋蔥圈內(nèi)核系統(tǒng),其中內(nèi)核的系統(tǒng)異步地執(zhí)行任務(wù),但是共享 相同的服務(wù)和設(shè)施。雖然每個內(nèi)核在其本地空間內(nèi)具有一組即時服務(wù)設(shè)施,但是更廣泛的 服務(wù)在環(huán)境內(nèi)的所有內(nèi)核之間共享。雖然圖1示出所有內(nèi)核在沒有命令和控制內(nèi)核的情況下彼此異步地操作,但是根 據(jù)本發(fā)明的架構(gòu)也允許安裝命令和控制內(nèi)核,由此,星型中心系統(tǒng)架構(gòu)的類似規(guī)范將適用 于洋蔥圈架構(gòu)一致地應(yīng)用。多處理器同步在傳統(tǒng)同步模型中成立的一個基本假設(shè)是線程保持內(nèi)核的專有權(quán)和使用(除了 中斷),直到其準(zhǔn)備離開內(nèi)核或者在資源上阻塞。對多處理器而言這不再是有效模型,因為 每個處理器可能同時執(zhí)行內(nèi)核代碼。在使用多線程的多處理器模型下,當(dāng)每個處理器能夠執(zhí)行其內(nèi)核代碼的拷貝時,所有類型的數(shù)據(jù)都需要保護(hù)。在本發(fā)明下,這些類型的保護(hù)是有 效的,因為環(huán)境內(nèi)存在多個內(nèi)核,并且每個內(nèi)核具有多個線程,這是利用全部運(yùn)行其自己的 內(nèi)核代碼拷貝的多個進(jìn)程來進(jìn)行操作的結(jié)果。處理器管理器處理器(此后稱為CPU)成為要進(jìn)行管理的資源,如同本發(fā)明的其他資源一樣。更 具體地,處理器管理器是管理CPU的數(shù)目及其對環(huán)境下運(yùn)行的內(nèi)核的分配的進(jìn)程,或者是 管理內(nèi)核線程使用的內(nèi)核特定進(jìn)程的拷貝。針對將要執(zhí)行特定內(nèi)核代碼的拷貝以使用特定 資源的內(nèi)核線程的使用的每個請求,都受到處理器管理器的管理。處理器的數(shù)目需要由處 理器管理器來編目和分配給當(dāng)前環(huán)境中執(zhí)行的每個線程。一個示例提供了對進(jìn)程進(jìn)行通信的進(jìn)程間通信表的訪問,特別是存在于現(xiàn)代內(nèi)核 中的進(jìn)程間通信表。該數(shù)據(jù)結(jié)構(gòu)不是由中斷處理程序來訪問,并且不支持可能阻塞訪問該 數(shù)據(jù)結(jié)構(gòu)的進(jìn)程的任何操作。因此,在單處理器系統(tǒng)上,內(nèi)核可以在不鎖定表的情況下對其 進(jìn)行操作。然而,在多處理器系統(tǒng)下,情況可能并非如此。因此,在本發(fā)明中,在創(chuàng)建運(yùn)行其 駐留內(nèi)核代碼的多個拷貝的進(jìn)程之間的協(xié)作,并且需要使用附加到其他內(nèi)核上的多個資源 的多個內(nèi)核時,此類表需要進(jìn)行擴(kuò)展。根據(jù)本發(fā)明,一旦兩個進(jìn)程同時訪問此類表以便在 進(jìn)程之間通信,則該表必須被鎖定,并且建議對當(dāng)前抽象進(jìn)行修改,以允許對此類表的管 理由處理器管理器來執(zhí)行。當(dāng)兩個或者更多進(jìn)程試圖同時訪問IPC表時,處理器管理器必 須實現(xiàn)對表的鎖定,直到一個或者多個進(jìn)程終止其通信鏈接,此后另一進(jìn)程訪問方被允許 訪問該表。雖然鎖定機(jī)制在IPC通信中是原語,但是在本發(fā)明中,其可以根據(jù)多處理器系統(tǒng) IPC的原語進(jìn)行擴(kuò)展,以便允許三個或者更多進(jìn)程在任何時間進(jìn)行通信。進(jìn)程間通信表內(nèi)核間通信表在傳統(tǒng)的內(nèi)核系統(tǒng)下,內(nèi)核僅僅檢查已鎖定標(biāo)志并且將其置位到鎖定位置以便對 表進(jìn)行鎖定,或者在對表進(jìn)行解鎖時將其重置。在本發(fā)明中,IPC和IKT相應(yīng)地成為系統(tǒng)中 待管理的另一資源。表的復(fù)雜度導(dǎo)致了系統(tǒng)環(huán)境的復(fù)雜等級。如在本發(fā)明中,也如在多處 理器系統(tǒng)中,在不同的處理器上運(yùn)行但是由處理器管理器來管理的兩個線程,可以同時檢 測針對相同資源的單個已鎖定標(biāo)志。如果兩者都發(fā)現(xiàn)其未被置位,則兩者將同時試圖訪問 特定的資源。因此,根據(jù)本發(fā)明,僅一個進(jìn)程執(zhí)行標(biāo)志的檢測,并且在這種情況下,如果資源 是處理器,則此類檢測由處理器管理器來執(zhí)行,如果資源是處理器以外的資源,則由資源管 理器來執(zhí)行。管理器的這種設(shè)置是同時訪問可能導(dǎo)致不可預(yù)知結(jié)果的情況下的一種預(yù)防措 施。線程管理器根據(jù)本發(fā)明,線程管理器定義為一種在這種本地內(nèi)核下運(yùn)行的進(jìn)程,其記錄指派 給在該內(nèi)核下運(yùn)行的輕量級進(jìn)程(LWP)和其他進(jìn)程的線程的所有使用。線程管理器將該信 息報告給運(yùn)行以協(xié)助多個內(nèi)核環(huán)境的同步的其他管理系統(tǒng)。如果MKE按照以上五種配置之 一來組織,則可以改變線程管理器的報告以滿足特定環(huán)境的需求。這對于線程管理器來說 是重要的,例如用于報告所指派的線程的數(shù)目,以便較好地記錄特定系統(tǒng)下給定的資源。資 源的報告由資源管理器負(fù)責(zé);因此資源管理器據(jù)此依靠線程管理器來提供該類型的信息。資源管理器
根據(jù)本發(fā)明,資源管理器定義為被視為存在于環(huán)境內(nèi)的資源的管理者。資源例如 被視為對于任何操作系統(tǒng)環(huán)境的主要組成部分,由此在存在或者可以存在多個駐留內(nèi)核的 系統(tǒng)下,聲明承擔(dān)了重要意義。資源管理器管理駐留在本地內(nèi)核等級的資源,并且每當(dāng)特定 任務(wù)需要特定資源時,其請求經(jīng)由資源管理器,并且如果請求針對特定內(nèi)核上的不可用資 源,則資源管理器將聯(lián)系關(guān)系管理器以便建立需要資源的任務(wù)與具有該特定資源的內(nèi)核之 間的關(guān)系。資源分配管理器根據(jù)本發(fā)明,資源分配管理器執(zhí)行對已經(jīng)在如下進(jìn)程間分配的所有資源的記錄, 這些進(jìn)程已經(jīng)啟動了在一個內(nèi)核上發(fā)起、但是需要可能附加于另一內(nèi)核上的資源的任務(wù)。 在這種情況下,資源管理器可能需要聯(lián)系資源分配管理器,以便查找特定資源,或者清查環(huán) 境內(nèi)所有可用的資源。在這種情況下,管理所有資源在內(nèi)核之間的分配的資源分配管理器 向資源管理器提供必要的信息。在特定架構(gòu)下,資源分配管理器和資源管理器可以存在于OS或者內(nèi)核系統(tǒng)中,而 不是存在于環(huán)境內(nèi)的命令內(nèi)核系統(tǒng)或者操作系統(tǒng)中。為了討論本發(fā)明的實施方式的目的, 資源分配和資源管理器都作為命令操作和內(nèi)核系統(tǒng)的一部分而存在。附加示例圖14-圖23示出了本發(fā)明的實施方式的更加詳細(xì)的示例。根據(jù)本發(fā)明的一個實 施方式,KOS在個體操作系統(tǒng)內(nèi)非集中地執(zhí)行。進(jìn)程交換諸如使用共享存儲器的信息,以通 知其他進(jìn)程資源何時可用或者資源何時可能變得可用。作為一個示例,圖14示出了兩個進(jìn) 程1001和1010,其交換關(guān)于使用共享存儲器1015的資源Rl的信息。共享存儲器1015包 含指示進(jìn)程101等待的資源Rl現(xiàn)在可用的信息。進(jìn)程1010現(xiàn)在可以諸如通過產(chǎn)生對資源 的調(diào)用來請求該資源。可以理解,雖然圖14示出了包含關(guān)于一個資源的信息的共享存儲器,但是在其他 實施方式中,共享存儲器包含關(guān)于多個資源的信息。共享存儲器還能夠包含與圖14中示出 的不同的信息,或者附加到圖14所示的信息。在另一實施方式中,每個KOS包含指示其他KOS和每個支持的資源的表。該表還 指示資源如何調(diào)用(諸如,通過入口點或者對操作系統(tǒng)的系統(tǒng)調(diào)用),以及當(dāng)前執(zhí)行特定操 作系統(tǒng)的處理器上的負(fù)載。例如,在三處理器環(huán)境中,每個處理器執(zhí)行KOS并且支持不同資 源,圖15A-圖15C示出了存儲在每個KOS中的表。圖15A示出了存儲在操作系統(tǒng)OS 1中 的表。圖15A中的行1101示出操作系統(tǒng)0S2具有入口點P2,支持資源R2和R3,并且具有 10%的系統(tǒng)(處理器)負(fù)載。行1102示出操作系統(tǒng)0S3具有入口點P3,支持資源R3,并且 具有10%的負(fù)載。針對0S2的圖15B中的表以及針對0S3的表15C的解釋是類似的,并且此處將不 再描述。在操作中,操作系統(tǒng)周期性地交換信息,諸如在特定時間或者當(dāng)其資源參數(shù)改變超 過預(yù)定閾值時。圖16示出了以不同格式存儲資源信息、將資源映射至操作系統(tǒng)的表。例如,圖16 的表中的行1202示出資源Rl當(dāng)前通過OS 1可訪問,行1202示出資源R2通過0S2和OSl 可訪問,而行1203示出資源R3通過0S2和0S3可訪問。圖15A-圖15C和圖16中的表僅是示意性的。本領(lǐng)域技術(shù)人員將認(rèn)識到,根據(jù)本
26發(fā)明的實施方式,多種不同格式和類型的信息包括在資源表中。圖17示出根據(jù)本發(fā)明一個實施方式的具有多個K0S的系統(tǒng)1250交換資源信息。 系統(tǒng)1250包括具有關(guān)系管理器1251A和資源管理器1251B的K0S 1251,具有關(guān)系管理器 1255A和資源管理器1255B的K0S 1255,具有關(guān)系管理器1261A和資源管理器1260B的K0S 1260。如上所述,當(dāng)K0S需要資源時,其使用資源管理器來檢查其本地內(nèi)核等級。如果不能 找到資源或者資源不可用,則其調(diào)用其關(guān)系管理器以通過另一內(nèi)核操作系統(tǒng)來訪問資源。圖18-圖23示出了根據(jù)本發(fā)明的中央K0S的實施方式。圖18示出了執(zhí)行多個操 作系統(tǒng)OS 11310、0S2 131U0S3 1312和0S41313的計算機(jī)系統(tǒng)1300,每個操作系統(tǒng)配置用 于訪問一個或者多個資源。操作系統(tǒng)OS 11310和0S2 1311都配置用于訪問打印機(jī)1320。 操作系統(tǒng)0S3 1312配置用于訪問磁盤1321,而操作系統(tǒng)0S4 1313配置用于訪問視頻顯示 器1322。在一個實施方式中,OS 1313特別適于與視頻顯示器對接。例如,OS 1313t可以 包括視頻顯示器驅(qū)動器,而OS 1310、0S2 1311和0S3 1312不包括;或者其對于視頻顯示 器1322的接口支持更多特征、具有較小的使用量、較快或者這些的任意組合。本領(lǐng)域技術(shù) 人員將認(rèn)識到系統(tǒng)1300上僅有一些操作系統(tǒng)配置用于訪問資源,而其他的沒有這樣配置, 以及一些操作系統(tǒng)比其他的操作系統(tǒng)更適于訪問特定資源的多種原因。在操作中,進(jìn)程請求對資源的使用,并且被引入內(nèi)核操作調(diào)度器(K0S) 1305。K0S 1305首先確定內(nèi)核操作系統(tǒng)1310-1313中的哪個最能夠向進(jìn)程提供所請求的資源,然后 將該進(jìn)程指派給選定的內(nèi)核操作系統(tǒng)。當(dāng)多個內(nèi)核操作系統(tǒng)能夠提供所請求的資源時, K0S1305使用下面討論的選擇標(biāo)準(zhǔn)。作為一個示例,進(jìn)程調(diào)用打印功能以訪問打印機(jī)1320。 雖然0S 11310和0S2 1311都能夠訪問打印機(jī)1320,但是選擇0S 1310,因為其更為空閑。圖19更加詳細(xì)地示出了 K0S 1305。如圖19所示,在一個實施方式中,K0S 1305 包括命令內(nèi)核1400和關(guān)系管理器1410。圖20示出了根據(jù)本發(fā)明實施方式的存儲在圖19的關(guān)系管理器1410中的進(jìn)程表 1450。進(jìn)程表存儲與進(jìn)程、將其指派給的資源及其優(yōu)先級有關(guān)的信息。例如,表1450的行 1451示出具有進(jìn)程ID 1572的進(jìn)程當(dāng)前被指派給資源R1并且具有優(yōu)先級1??梢岳斫猓渌畔⒁部梢源鎯υ谶M(jìn)程表1450中,諸如指示進(jìn)程是否在等待資 源、其已經(jīng)等待資源多久的信息,這只是其他類型信息的幾個示例。圖21是根據(jù)本發(fā)明實施方式的調(diào)度內(nèi)核操作系統(tǒng)以處理進(jìn)程的方法1500的流程 圖。在開始步驟1501之后,在步驟1503中,方法確定是否存在在計算機(jī)系統(tǒng)上執(zhí)行的任何 操作系統(tǒng)(0S)能夠提供資源。然后,在步驟1505中,該方法確定是否不止一個0S能夠提 供資源。如果僅有一個0S能夠提供資源,則方法轉(zhuǎn)到步驟1515 ;否則,其進(jìn)入步驟1510。在步驟1510中,使用一個或者多個選擇標(biāo)準(zhǔn)來選擇多個0S中的一個,如下關(guān)于圖 22所述,方法進(jìn)入步驟1515。在步驟1515中,向進(jìn)程分配資源,而在步驟1520中,方法結(jié) 束o圖22示出了圖21所示的方法1510的步驟,用于從全部可以提供所請求的資源的 多個內(nèi)核操作系統(tǒng)中選擇一個內(nèi)核操作系統(tǒng)。在第一個步驟1550中,該方法選擇具有最小 負(fù)載的操作系統(tǒng)。在步驟1555中,該方法確定單個0S是否滿足該標(biāo)準(zhǔn)。如果滿足,則該方 法轉(zhuǎn)到步驟1575。否則,該方法繼續(xù)到步驟1560,僅考慮那些具有最小負(fù)載的0S。在步驟1560中,該方法從其余0S中選擇具有最少等待或者最少阻塞進(jìn)程的0S,將其他的從考慮中排除。在步驟1565中,該方法確定是否僅有一個OS具有最少剩余或者阻 塞進(jìn)程。如果僅有一個OS具有最少剩余或者阻塞的進(jìn)程,則該方法轉(zhuǎn)到步驟1575。否則, 該方法繼續(xù)到步驟1570,其中以輪換或者其他的輪轉(zhuǎn)方式從其余OS中選擇一個OS。然后, 在步驟1575,由選定的OS來為進(jìn)程分配所請求的資源。該方法在步驟1580停止。此處,認(rèn) 為“選擇標(biāo)準(zhǔn)”包括OS的狀態(tài)(阻塞或者等待的進(jìn)程的數(shù)目,以及執(zhí)行OS的處理器上的負(fù) 載)??梢岳斫?,步驟1510僅是示例性的。本領(lǐng)域技術(shù)人員將認(rèn)識到多種變體。例如, 步驟1510能夠以不同的順序布置;能夠添加一些步驟而其他的能夠刪除;或者執(zhí)行步驟的 完全不同組。作為一個不同的步驟,當(dāng)兩個OS都能夠提供資源時,選擇在較快的微處理器 上執(zhí)行的OS。圖23示出了根據(jù)本發(fā)明一個實施方式的系統(tǒng)1600的組件以及當(dāng)進(jìn)程請求計算機(jī) 系統(tǒng)上的資源時的事務(wù)序列。系統(tǒng)1600包括執(zhí)行進(jìn)程1610A并且提供對資源1610B的訪 問的操作系統(tǒng)1610,執(zhí)行進(jìn)程1660A并且提供對資源1660A-D的訪問的操作系統(tǒng)1660,以 及 KOS 1650。如圖23所示,進(jìn)程1610A諸如通過資源管理器來產(chǎn)生針對資源1660B的請求 1706。如虛線1706所示,資源是本地不可用的,所以針對資源1660B的請求1720被轉(zhuǎn)發(fā)至 KOS 1650。KOS 1650確定OS 1660可以提供該資源,所以針對該資源的請求1730被轉(zhuǎn)發(fā)至 提供資源1660B的OS 1660。“提供”資源的步驟取決于所請求的特定資源。如果資源是CPU,則指派可以包括 將進(jìn)程的標(biāo)識符置于OS 450的運(yùn)行隊列中。如果資源是磁盤,則指派可以包括將進(jìn)程置于 將進(jìn)程分派給磁盤的隊列上。根據(jù)本發(fā)明,能夠?qū)⑦M(jìn)程從一個OS切換至另一個。作為一個示例,當(dāng)進(jìn)程通過一 個OS訪問資源時,可以向執(zhí)行該OS的處理器指派其他任務(wù),該處理器由此變慢。換言之, OS是資源。根據(jù)本發(fā)明的KOS能夠?qū)⑦M(jìn)程重新指派給能夠更加有效地執(zhí)行進(jìn)程的另一 CPU。本發(fā)明的實施方式允許資源更加有效地共享,在提供資源的操作系統(tǒng)之間均衡負(fù) 載。這減少了瓶頸、進(jìn)程饑餓以及影響多處理器系統(tǒng)的其他問題。此外,可以很容易地將進(jìn) 程指派給指定用于執(zhí)行特定任務(wù)的資源和操作系統(tǒng),還獲得了更加有效的進(jìn)程執(zhí)行??梢岳斫?,根據(jù)本發(fā)明的K0S、其每個組件以及此處所述的每個算法能夠存儲在計 算機(jī)可讀介質(zhì)中,該計算機(jī)可讀介質(zhì)包含用于實現(xiàn)KOS的功能的計算機(jī)可執(zhí)行指令。指令 能夠作為一個或者多個軟件組件、一個或者多個硬件組件、這些的組合或者執(zhí)行算法的步 驟的計算機(jī)所使用的任何元件而存儲在計算機(jī)可讀介質(zhì)中。雖然此處在合并了促進(jìn)理解本發(fā)明的構(gòu)造和操作原理的細(xì)節(jié)的特定實施方式的 方面描述了本發(fā)明,但是于此對于特定實施方式及其細(xì)節(jié)的提及不旨在限制所附的權(quán)利要 求的范圍。在不脫離由所附權(quán)利要求定義的本發(fā)明的精神和范圍的情況下,對選擇用于示 出的實施方式可以做出修改對于本領(lǐng)域技術(shù)人員將是明顯的。
權(quán)利要求
一種計算機(jī)系統(tǒng),包括多個資源;以及包含多個操作系統(tǒng)的存儲器,每個操作系統(tǒng)包含內(nèi)核調(diào)度器,其中多個內(nèi)核調(diào)度器配置用于協(xié)調(diào)向所述計算機(jī)系統(tǒng)上執(zhí)行的進(jìn)程分配所述資源。
2.根據(jù)權(quán)利要求1所述的計算機(jī)系統(tǒng),進(jìn)一步包括多個中央處理單元,每個在所述多 個中央處理單元中不同的一個上執(zhí)行。
3.根據(jù)權(quán)利要求1所述的計算機(jī)系統(tǒng),其中所述多個資源包括以下任意兩個或者更 多鍵盤控制器、視頻控制器、音頻控制器、網(wǎng)絡(luò)控制器、磁盤控制器、通用串行總線控制器 和打印機(jī)。
4.根據(jù)權(quán)利要求1所述的計算機(jī)系統(tǒng),其中所述多個內(nèi)核調(diào)度器配置用于使用通信協(xié) 議來共享與資源相關(guān)的信息。
5.根據(jù)權(quán)利要求4所述的計算機(jī)系統(tǒng),其中所述通信協(xié)議配置用于訪問共享存儲器。
6.根據(jù)權(quán)利要求4所述的計算機(jī)系統(tǒng),其中所述通信協(xié)議包括進(jìn)程間通信或者協(xié)議棧。
7.根據(jù)權(quán)利要求4所述的計算機(jī)系統(tǒng),其中所述通信協(xié)議包括傳輸控制協(xié)議/網(wǎng)際協(xié)議。
8.根據(jù)權(quán)利要求4所述的計算機(jī)系統(tǒng),其中所述通信協(xié)議包括訪問信號量、管道、信 號、消息隊列、對數(shù)據(jù)的指針和文件描述符。
9.根據(jù)權(quán)利要求4所述的計算機(jī)系統(tǒng),其中所述進(jìn)程包括彼此通信的至少三個進(jìn)程。
10.根據(jù)權(quán)利要求1所述的計算機(jī)系統(tǒng),其中所述多個內(nèi)核調(diào)度器中的每一個包括用 于協(xié)調(diào)分配所述資源的關(guān)系管理器。
11.根據(jù)權(quán)利要求10所述的計算機(jī)系統(tǒng),其中所述多個關(guān)系管理器中的每一個包括資 源管理器,所述資源管理器配置用于確定與所述多個資源中的一個或者多個有關(guān)的資源信 肩、o
12.根據(jù)權(quán)利要求11所述的計算機(jī)系統(tǒng),其中所述資源信息包括直到資源變?yōu)榭捎脮r 的估計時間。
13.一種計算機(jī)系統(tǒng),包括存儲器,包含內(nèi)核調(diào)度器和配置用于訪問多個資源的多個操作系統(tǒng)內(nèi)核,其中所述內(nèi) 核調(diào)度器配置用于將請求來自所述多個資源的資源的進(jìn)程指派給所述多個操作系統(tǒng)內(nèi)核 中相應(yīng)的一個。
14.根據(jù)權(quán)利要求13所述的計算機(jī)系統(tǒng),進(jìn)一步包括多個處理器,每個處理器執(zhí)行所 述多個操作系統(tǒng)中相應(yīng)的一個。
15.根據(jù)權(quán)利要求14所述的計算機(jī)系統(tǒng),其中所述內(nèi)核調(diào)度器基于所述多個處理器上 的負(fù)載在所述多個操作系統(tǒng)內(nèi)核上調(diào)度進(jìn)程。
16.根據(jù)權(quán)利要求13所述的計算機(jī)系統(tǒng),其中所述資源包括以下兩個或更多鍵盤控 制器、視頻控制器、音頻控制器、網(wǎng)絡(luò)控制器、磁盤控制器、通用串行總線控制器和打印機(jī)。
17.根據(jù)權(quán)利要求13所述的計算機(jī)系統(tǒng),進(jìn)一步包括進(jìn)程表,其對針對資源的請求與 所述多個操作系統(tǒng)內(nèi)核中的一個或者多個進(jìn)行匹配。
18.根據(jù)權(quán)利要求13所述的計算機(jī)系統(tǒng),進(jìn)一步包括所述多個操作系統(tǒng)內(nèi)核的配對之間的通信通道。
19.根據(jù)權(quán)利要求13所述的計算機(jī)系統(tǒng),其中所述多個操作系統(tǒng)內(nèi)核配置用于交換與 以下有關(guān)的信息處理器負(fù)載、資源可用性以及資源變?yōu)榭捎脮r的估計時間。
20.一種內(nèi)核調(diào)度系統(tǒng),包括多個處理器,每個處理器執(zhí)行操作系統(tǒng)內(nèi)核,并且配置用于訪問一個或者多個資源;以及指派模塊,被編程用于對請求資源的進(jìn)程進(jìn)行匹配,以及用于將所述進(jìn)程分派給多個 操作系統(tǒng)內(nèi)核中能夠訪問所述資源的一個。
21.根據(jù)權(quán)利要求20所述的內(nèi)核調(diào)度系統(tǒng),其中所述多個處理器中的每一個由相應(yīng)的 處理器調(diào)度器來控制。
22.一種為操作系統(tǒng)內(nèi)核指派資源的方法,包括基于其訪問資源的能力,從多個操作系統(tǒng)內(nèi)核中選擇操作系統(tǒng)內(nèi)核;以及 將所述進(jìn)程指派給選擇的操作系統(tǒng)內(nèi)核。
23.根據(jù)權(quán)利要求22所述的方法,其中所述多個操作系統(tǒng)內(nèi)核全部在單個存儲器內(nèi)執(zhí)行。
24.一種在單個計算機(jī)系統(tǒng)的存儲器上的第一操作系統(tǒng)和第二操作系統(tǒng)之間共享進(jìn)程 執(zhí)行的方法,包括在所述第一操作系統(tǒng)的控制下,在所述存儲器內(nèi)執(zhí)行進(jìn)程;以及 將第一進(jìn)程的控制移交給所述存儲器內(nèi)的第二操作系統(tǒng),由此在所述第二操作系統(tǒng)的 控制下,在所述存儲器內(nèi)執(zhí)行第一進(jìn)程。
25.根據(jù)權(quán)利要求24所述的方法,其中在所述第一操作系統(tǒng)和所述第二操作系統(tǒng)的控 制下執(zhí)行進(jìn)程都訪問單個資源。
26.根據(jù)權(quán)利要求25所述的方法,進(jìn)一步包括使用共享存儲器、進(jìn)程間通信以及信號 量之一,在所述第一操作系統(tǒng)和所述第二操作系統(tǒng)之間交換進(jìn)程信息。
全文摘要
本發(fā)明在多操作系統(tǒng)計算機(jī)系統(tǒng)中分配資源,從而避免了瓶頸以及由對于有限資源的競爭所導(dǎo)致的其他降級。在一個實施方式中,計算機(jī)系統(tǒng)包括資源和多個處理器,多個處理器執(zhí)行提供對資源的訪問的多個操作系統(tǒng)。資源包括打印機(jī)、磁盤控制器、存儲器、網(wǎng)絡(luò)控制器以及其他經(jīng)常訪問的資源。每個操作系統(tǒng)包含內(nèi)核調(diào)度器。而且,多個內(nèi)核調(diào)度器配置用于向在計算機(jī)系統(tǒng)上執(zhí)行的進(jìn)程協(xié)調(diào)分配資源。
文檔編號G06F9/46GK101896886SQ200880120073
公開日2010年11月24日 申請日期2008年11月5日 優(yōu)先權(quán)日2007年10月31日
發(fā)明者E·B·卡特 申請人:艾科立方公司