專利名稱:計(jì)算環(huán)境中多任務(wù)處理的方法與系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及在計(jì)算環(huán)境下的多任務(wù)處理(multitasking),尤其涉及在無硬件中斷計(jì)算環(huán)境下的多任務(wù)處理。
背景技術(shù):
有時(shí)候,需要在支持有限功能的計(jì)算環(huán)境內(nèi)工作。這會(huì)減少復(fù)雜性并有助于調(diào)試。然而,為了提供有限的功能,需要禁止或不提供某些特性。一種這樣的特性是系統(tǒng)或硬件中斷。禁止系統(tǒng)中斷會(huì)減少環(huán)境的復(fù)雜性,然而是有代價(jià)的。該代價(jià)是不能提供某些功能,比如多任務(wù)處理。
多任務(wù)處理允許單個(gè)進(jìn)程與一個(gè)或多個(gè)其它單個(gè)進(jìn)程共享資源,而不需要該進(jìn)程在允許另一進(jìn)程執(zhí)行之前完全退出。替代地,多任務(wù)處理進(jìn)程保持常駐于存儲(chǔ)器中。
然而在禁止系統(tǒng)中斷時(shí),不進(jìn)行多任務(wù)處理。替代地,在將要共享資源的另一進(jìn)程開始執(zhí)行之前,一進(jìn)程運(yùn)行一段時(shí)間,將其狀態(tài)保存在永久存儲(chǔ)器中,然后才完全退出。這會(huì)增加復(fù)雜性并降低系統(tǒng)性能。因此,需要有一種在無硬件中斷的情況下支持多任務(wù)處理的能力。
發(fā)明內(nèi)容
通過提供一種在計(jì)算環(huán)境下進(jìn)行多任務(wù)處理的方法,克服了現(xiàn)有技術(shù)的缺陷,并提供了附加的優(yōu)點(diǎn)。該方法包括例如在無硬件中斷計(jì)算環(huán)境下執(zhí)行第一進(jìn)程;以及多任務(wù)處理第一進(jìn)程和無硬件中斷計(jì)算環(huán)境的第二進(jìn)程,其中該多任務(wù)處理包括利用一個(gè)或多個(gè)事件指示符。
在一個(gè)實(shí)例中,指示符的利用包括切換一個(gè)或多個(gè)事件指示符中的至少一個(gè)事件指示符,以指示將執(zhí)行第一進(jìn)程和第二進(jìn)程中的哪個(gè)進(jìn)程。
在另一實(shí)施例中,提供一種在單處理器環(huán)境下進(jìn)行多任務(wù)處理的方法。該方法包括例如在無硬件中斷單處理器環(huán)境下執(zhí)行第一進(jìn)程;以及多任務(wù)處理第一進(jìn)程和無硬件中斷單處理器環(huán)境的第二進(jìn)程。
這里也描述了對(duì)應(yīng)于上述方法的系統(tǒng)與計(jì)算機(jī)程序產(chǎn)品,并且對(duì)它們提出權(quán)利要求。
通過本發(fā)明的技術(shù),實(shí)現(xiàn)了附加特征和優(yōu)點(diǎn)。這里詳細(xì)描述本發(fā)明的其它實(shí)施例和方面,并且將其考慮為本發(fā)明的一部分。
在說明書所附的權(quán)利要求中特別指出關(guān)于本發(fā)明的主題,并對(duì)其提出權(quán)利要求。從結(jié)合附圖的如下詳細(xì)描述中,本發(fā)明的上述和其它目的、特征以及優(yōu)點(diǎn)將會(huì)很明顯,其中圖1a描述用以合并和使用本發(fā)明一個(gè)或多個(gè)方面的計(jì)算環(huán)境的一個(gè)實(shí)施例;圖1b描述按照本發(fā)明一方面,在圖1a的計(jì)算環(huán)境的存儲(chǔ)器中常駐的診斷執(zhí)行程序(executive)的實(shí)例;圖2描述與初始化技術(shù)有關(guān)聯(lián)的邏輯的實(shí)例,該初始化技術(shù)與本發(fā)明一方面的多任務(wù)處理功能有關(guān);以及圖3描述與本發(fā)明一方面的多任務(wù)處理功能有關(guān)聯(lián)的邏輯的實(shí)例。
具體實(shí)施例方式
概述按照本發(fā)明一方面,提供一種允許進(jìn)程在無硬件中斷計(jì)算環(huán)境下協(xié)作進(jìn)行多任務(wù)處理的多任務(wù)處理功能。例如,這些進(jìn)程利用事件指示符進(jìn)行多任務(wù)處理。這些事件指示符的切換(toggling)指示某進(jìn)程將要休眠,而另一進(jìn)程將要執(zhí)行。
詳細(xì)描述參照圖1a,描述一個(gè)用以合并和使用本發(fā)明一個(gè)或多個(gè)方面的計(jì)算環(huán)境的實(shí)施例。計(jì)算環(huán)境100包括例如中央處理單元102,存儲(chǔ)器104(比如主存儲(chǔ)器),以及比如經(jīng)由一個(gè)或多個(gè)總線108彼此連接的一個(gè)或多個(gè)輸入/輸出(I/O)設(shè)備106。
作為一個(gè)實(shí)例,計(jì)算環(huán)境100包括一由加州圣荷西的英特爾公司提供、實(shí)現(xiàn)可擴(kuò)展固件接口(EFI)的Itanium處理器。EFI是一支持實(shí)用程序,比如診斷程序或操作系統(tǒng)加載程序的固件工作環(huán)境。EFI是針對(duì)特定規(guī)范而構(gòu)建的,在URLhttp//developer.intel.com/technology/EFI中有一規(guī)范實(shí)例,因此這里完整地參考引用了其中的內(nèi)容。EFI通過建立某些規(guī)則,允許機(jī)器無需大量的配置或功能即可工作。作為實(shí)例,將進(jìn)程限制到特定優(yōu)先級(jí)。換而言之,根據(jù)該規(guī)范,如果給定的進(jìn)程在低或中等優(yōu)先級(jí)下工作,可暫時(shí)增加其工作優(yōu)先級(jí),但不允許降低其工作優(yōu)先級(jí)。而且,不允許較高優(yōu)先級(jí)的進(jìn)程啟動(dòng)較低優(yōu)先級(jí)的進(jìn)程。
盡管EFI已建立這些規(guī)則以降低復(fù)雜性,但即使在EFI環(huán)境中,仍然有實(shí)現(xiàn)更強(qiáng)功能的需要。因此,已采取措施克服EFI的某些局限。例如,現(xiàn)在提供一種功能,其中較高優(yōu)先級(jí)的任務(wù)能夠啟動(dòng)較低優(yōu)先級(jí)的任務(wù)。這在于2001年7月2日申請、名為“啟動(dòng)低優(yōu)先級(jí)任務(wù)的方法”(IBM檔案第BEA920010009US1號(hào))的美國專利申請09/898,978中有所描述,因此這里通過參考將其整體并入。
作為另一實(shí)例,在EFI環(huán)境中,禁止系統(tǒng)或硬件中斷,以便減少環(huán)境中的復(fù)雜性。然而,禁止中斷會(huì)影響提供某些可能有益的功能。這比如包括多任務(wù)處理,其中單獨(dú)和不同的進(jìn)程共享計(jì)算環(huán)境的資源(比如硬件資源,如CPU、存儲(chǔ)器等)以執(zhí)行。因此,按照本發(fā)明一方面,提供一種允許在無硬件中斷環(huán)境下進(jìn)行多任務(wù)處理的功能。
參照圖2,描述與在無硬件中斷環(huán)境下使能多任務(wù)處理的初始化過程相關(guān)聯(lián)的邏輯的實(shí)施例。首先,在步驟200初始化一執(zhí)行程序進(jìn)程。該執(zhí)行程序進(jìn)程通常是以高于其它進(jìn)程的優(yōu)先級(jí)運(yùn)行的進(jìn)程,但不是必須的。例如,它可以是一負(fù)責(zé)啟動(dòng)、監(jiān)控和解釋診斷測試結(jié)果的診斷執(zhí)行程序110(圖1b)。該診斷執(zhí)行程序常駐于存儲(chǔ)器中,并且在一特權(quán)級(jí)別下運(yùn)行,該級(jí)別允許它對(duì)診斷測試具有至少某種控制。該初始化包括例如為一事件指示符(比如標(biāo)志)初始化預(yù)定義尺寸(一位或多位)的存儲(chǔ)器位置。
除初始化該執(zhí)行程序進(jìn)程之外,在步驟202創(chuàng)建一輪詢事件(比如在EFI中為EVT_Notify_signal事件)(圖2)。例如,該輪詢事件指示當(dāng)進(jìn)程因事件而休眠時(shí),會(huì)復(fù)位(比如清除)一對(duì)應(yīng)事件指示符,并且允許一個(gè)或多個(gè)進(jìn)程執(zhí)行。眾所周知,該輪詢事件是一支持等待標(biāo)志切換的軟件結(jié)構(gòu)。在一些環(huán)境下,比如EFI,提供一個(gè)或多個(gè)應(yīng)用編程接口(API)以創(chuàng)建該輪詢事件。
而且,在步驟S204初始化一個(gè)或多個(gè)其它進(jìn)程。在診斷實(shí)例中,這些進(jìn)程可以是測試。然而,這些進(jìn)程不必是診斷測試;可初始化其它類型的進(jìn)程。類似于執(zhí)行程序,這些進(jìn)程中的每個(gè)都創(chuàng)建一事件指示符,并且將其置于選定存儲(chǔ)器位置。類似地,在步驟206,每個(gè)進(jìn)程創(chuàng)建它自己的相似于執(zhí)行程序的事件的事件。
然后在步驟208,這些進(jìn)程注冊到執(zhí)行程序上。這包括例如注冊握手,其中交換這些進(jìn)程的事件指示符的存儲(chǔ)器位置。例如,一進(jìn)程向執(zhí)行程序提供有關(guān)它的指示符的位置的指示。因此,在該例中,執(zhí)行程序和其它進(jìn)程相互協(xié)作的方面在于,其至少隱式地共同工作以允許多任務(wù)處理。該注冊過程完成初始化技術(shù),并允許開始多任務(wù)處理。
參照圖3,描述與無硬件終端環(huán)境中多任務(wù)處理相關(guān)的邏輯的實(shí)施例。首先,在步驟300,執(zhí)行程序?qū)?duì)應(yīng)于一協(xié)作進(jìn)程事件的標(biāo)志設(shè)置為表示該協(xié)作進(jìn)程可以運(yùn)行。在步驟302,執(zhí)行程序的標(biāo)志處于清除狀態(tài),并且執(zhí)行程序休眠以等待它的事件。在步驟304,調(diào)度進(jìn)程,比如EFI調(diào)度進(jìn)程確定已觸發(fā)協(xié)作進(jìn)程的事件,并且其喚醒協(xié)作進(jìn)程以便執(zhí)行。在一個(gè)實(shí)例中,EFI調(diào)度程序?qū)⒃撨M(jìn)程置于執(zhí)行就緒隊(duì)列中。
在步驟306,該進(jìn)程執(zhí)行,并且在步驟308,該進(jìn)程在期望時(shí)刻(比如在執(zhí)行結(jié)束時(shí)或其它選定時(shí)刻)觸發(fā)執(zhí)行程序的事件。例如,該進(jìn)程設(shè)置執(zhí)行程序標(biāo)志。而且,該進(jìn)程在步驟309休眠以等待它的事件標(biāo)志,并且將它的事件標(biāo)志復(fù)位。
然后在步驟310,調(diào)度進(jìn)程確定已觸發(fā)執(zhí)行程序進(jìn)程的事件,并且喚醒執(zhí)行程序進(jìn)程以便執(zhí)行。在步驟312,執(zhí)行程序進(jìn)程執(zhí)行一段時(shí)間(比如直到完成特定任務(wù)為止,或其它選定時(shí)刻),并且在步驟300繼續(xù)處理。
前面詳細(xì)描述了允許在無硬件中斷環(huán)境中對(duì)進(jìn)程執(zhí)行多任務(wù)處理的多任務(wù)處理功能。在一個(gè)實(shí)例中,該環(huán)境是單處理器環(huán)境??梢灾С秩我鈹?shù)量的進(jìn)程。
優(yōu)點(diǎn)有利地,在無硬件中斷環(huán)境下允許進(jìn)行多任務(wù)處理。多任務(wù)處理允許進(jìn)程共享資源(比如硬件資源,如CPU、存儲(chǔ)器等)而無需終止執(zhí)行。替代地,每個(gè)進(jìn)程在存儲(chǔ)器中保持活躍,以便保持進(jìn)程的狀態(tài)。這些進(jìn)程簡單地進(jìn)入休眠以允許一個(gè)或多個(gè)其它進(jìn)程執(zhí)行,并且接著被輪流喚醒。資源共享是透明的,其中用戶并不知道多個(gè)進(jìn)程正在相同的物理硬件中工作。
該多任務(wù)處理功能有利地允許多個(gè)進(jìn)程同時(shí)運(yùn)行,其中通過一組由標(biāo)志控制的事件,在進(jìn)程之間來回傳遞活躍執(zhí)行權(quán)(activeexecution)。
該多任務(wù)處理能力有利于許多功能,包括診斷測試。有利地,診斷執(zhí)行程序執(zhí)行一段時(shí)間,然后允許一個(gè)或多個(gè)其它測試進(jìn)程運(yùn)行。按照本發(fā)明一方面,該診斷執(zhí)行程序是具有一個(gè)優(yōu)先級(jí)(比如中等或高優(yōu)先級(jí))的中等優(yōu)先級(jí)調(diào)度程序,當(dāng)觸發(fā)低優(yōu)先級(jí)進(jìn)程的事件時(shí),其允許產(chǎn)生該低優(yōu)先級(jí)進(jìn)程。低優(yōu)先級(jí)的進(jìn)程執(zhí)行一段時(shí)間,然后允許執(zhí)行程序再次運(yùn)行。
因此,按照本發(fā)明的一個(gè)或多個(gè)方面,在不允許和/或不使用硬件中斷的環(huán)境中提供多任務(wù)處理。另外,程序員能夠在EFI和類似環(huán)境所不允許的方向上跨越特權(quán)域。
可選實(shí)施例雖然以上描述了計(jì)算環(huán)境的實(shí)例,但其僅僅是例子。具有不同部件的計(jì)算環(huán)境可合并和/或使用本發(fā)明的一個(gè)或多個(gè)方面。例如,處理器可以是Itanium處理器之外的其它處理器,和/或英特爾處理器之外的其它處理器。而且,該計(jì)算環(huán)境不必包括EFI環(huán)境。其它變形也是可能的,并將其考慮為本發(fā)明的一部分。而且,在不背離本發(fā)明的精神的前提下,其它計(jì)算和/或工作環(huán)境可以合并和使用本發(fā)明的一個(gè)或多個(gè)方面。
而且,在另一實(shí)施例中,執(zhí)行程序進(jìn)程可以是診斷執(zhí)行程序以外的進(jìn)程。在另一實(shí)施例中,不必有執(zhí)行程序進(jìn)程,而是只需有將要多任務(wù)處理的進(jìn)程。而且,這些進(jìn)程不必是診斷測試。而且,雖然在該例中每次僅有一個(gè)進(jìn)程活躍運(yùn)行,但是在其它實(shí)例中,多個(gè)進(jìn)程可活躍運(yùn)行。
本發(fā)明可包括在一件產(chǎn)品(比如一個(gè)或多個(gè)計(jì)算機(jī)程序產(chǎn)品)中,該產(chǎn)品比如具有計(jì)算機(jī)可用介質(zhì)。該介質(zhì)中比如體現(xiàn)了計(jì)算機(jī)可讀程序代碼裝置,用于提供并有助于本發(fā)明的功能。該產(chǎn)品可包含為計(jì)算機(jī)系統(tǒng)的一部分,或者單獨(dú)出售。
另外,可提供機(jī)器可讀的至少一種程序存儲(chǔ)設(shè)備,其體現(xiàn)了可被機(jī)器執(zhí)行以完成本發(fā)明的功能的至少一個(gè)指令程序。
這里描述的流程圖僅為實(shí)例。在不背離本發(fā)明的精神的情況下,可以對(duì)描述的這些框圖或步驟(或操作)進(jìn)行許多變形。例如,這些步驟可以按不同的順序執(zhí)行,或者增加、刪除或修改這些步驟。所有這些變形均考慮為本發(fā)明的一部分。
雖然這里詳細(xì)描述和說明了優(yōu)選實(shí)施例,但是對(duì)于本領(lǐng)域技術(shù)人員顯而易見的是,在不背離本發(fā)明的精神的情況下,可作出各種改型、附加、替換等,并且都落在由所附權(quán)利要求定義的發(fā)明范圍中。
權(quán)利要求
1.一種在計(jì)算環(huán)境中進(jìn)行多任務(wù)處理的方法,該方法包括在無硬件中斷計(jì)算環(huán)境中執(zhí)行第一進(jìn)程;和多任務(wù)處理第一進(jìn)程與無硬件中斷計(jì)算環(huán)境中的第二進(jìn)程,其中該多任務(wù)處理包括利用一個(gè)或多個(gè)事件指示符。
2.如權(quán)利要求1所述的方法,其中指示符的利用包括切換一個(gè)或多個(gè)事件指示符中的至少一個(gè)事件指示符,以指示將要執(zhí)行第一進(jìn)程和第二進(jìn)程中的哪個(gè)進(jìn)程。
3.如權(quán)利要求1所述的方法,還包括創(chuàng)建一個(gè)或多個(gè)事件指示符中針對(duì)第一進(jìn)程的第一事件指示符;創(chuàng)建一個(gè)或多個(gè)事件指示符中針對(duì)第二進(jìn)程的第二事件指示符;以及在第一事件指示符和第二事件指示符之間切換,以多任務(wù)處理第一進(jìn)程和第二進(jìn)程。
4.如權(quán)利要求3所述的方法,其中第一事件指示符的設(shè)置允許第一進(jìn)程執(zhí)行。
5.如權(quán)利要求3所述的方法,其中第二事件指示符的設(shè)置允許第二進(jìn)程執(zhí)行。
6.如權(quán)利要求1所述的方法,還包括注冊第二進(jìn)程到第一進(jìn)程。
7.如權(quán)利要求6所述的方法,其中該注冊包括向第一進(jìn)程提供有關(guān)第二進(jìn)程的事件指示符的位置的指示;以及向第二進(jìn)程提供有關(guān)第一進(jìn)程的事件指示符的位置的指示。
8.如權(quán)利要求1所述的方法,其中第一進(jìn)程和第二進(jìn)程中的至少一個(gè)是執(zhí)行程序進(jìn)程。
9.如權(quán)利要求8所述的方法,其中第一進(jìn)程和第二進(jìn)程中的另一個(gè)是產(chǎn)生的進(jìn)程,其產(chǎn)生是由該執(zhí)行程序進(jìn)程響應(yīng)于一個(gè)或多個(gè)事件指示符中的一個(gè)事件指示符而促成的,其中該執(zhí)行程序進(jìn)程具有比該產(chǎn)生的進(jìn)程更高的優(yōu)先級(jí)。
10.如權(quán)利要求1所述的方法,其中第一進(jìn)程和第二進(jìn)程是協(xié)作進(jìn)程。
11.一種在計(jì)算環(huán)境中進(jìn)行多任務(wù)處理的系統(tǒng),所述系統(tǒng)包括在無硬件中斷計(jì)算環(huán)境中的第一進(jìn)程;和用于多任務(wù)處理第一進(jìn)程與無硬件中斷計(jì)算環(huán)境中的第二進(jìn)程的裝置,其中該用于多任務(wù)處理的裝置包括一個(gè)或多個(gè)事件指示符。
12.如權(quán)利要求11所述的系統(tǒng),其中用于多任務(wù)處理的裝置包括用于切換一個(gè)或多個(gè)事件指示符中的至少一個(gè)事件指示符,以指示將要執(zhí)行第一進(jìn)程和第二進(jìn)程中的哪個(gè)進(jìn)程的裝置。
13.如權(quán)利要求11所述的系統(tǒng),還包括用于創(chuàng)建一個(gè)或多個(gè)事件指示符中針對(duì)第一進(jìn)程的第一事件指示符的裝置;用于創(chuàng)建一個(gè)或多個(gè)事件指示符中針對(duì)第二進(jìn)程的第二事件指示符的裝置;以及用于在第一事件指示符和第二事件指示符之間切換,以多任務(wù)處理第一進(jìn)程和第二進(jìn)程的裝置。
14.如權(quán)利要求13所述的系統(tǒng),其中第一事件指示符的設(shè)置允許第一進(jìn)程執(zhí)行。
15.如權(quán)利要求13所述的系統(tǒng),其中第二事件指示符的設(shè)置允許第二進(jìn)程執(zhí)行。
16.如權(quán)利要求11所述的系統(tǒng),還包括用于注冊第二進(jìn)程到第一進(jìn)程的裝置。
17.如權(quán)利要求16所述的系統(tǒng),其中用于注冊的裝置包括用于向第一進(jìn)程提供有關(guān)第二進(jìn)程的事件指示符的位置的指示的裝置;以及用于向第二進(jìn)程提供有關(guān)第一進(jìn)程的事件指示符的位置的指示的裝置。
18.如權(quán)利要求11所述的系統(tǒng),其中第一進(jìn)程和第二進(jìn)程中的至少一個(gè)是執(zhí)行程序進(jìn)程。
19.如權(quán)利要求18所述的系統(tǒng),其中第一進(jìn)程和第二進(jìn)程中的另一個(gè)是產(chǎn)生的進(jìn)程,其產(chǎn)生是由該執(zhí)行程序進(jìn)程響應(yīng)于一個(gè)或多個(gè)事件指示符中的一個(gè)事件指示符而促成的,其中該執(zhí)行程序進(jìn)程具有比該產(chǎn)生的進(jìn)程更高的優(yōu)先級(jí)。
20.一種在計(jì)算環(huán)境中進(jìn)行多任務(wù)處理的系統(tǒng),所述系統(tǒng)包括在無硬件中斷計(jì)算環(huán)境中的第一進(jìn)程;和計(jì)算單元,用于多任務(wù)處理第一進(jìn)程與無硬件中斷計(jì)算環(huán)境中的第二進(jìn)程,其中該多任務(wù)處理包括利用一個(gè)或多個(gè)事件指示符。
21.至少一個(gè)機(jī)器可讀的程序存儲(chǔ)裝置,其體現(xiàn)了可被該機(jī)器運(yùn)行以在計(jì)算環(huán)境中執(zhí)行一種多任務(wù)處理方法的指令程序,所述方法包括在無硬件中斷計(jì)算環(huán)境中執(zhí)行第一進(jìn)程;以及多任務(wù)處理第一進(jìn)程與無硬件中斷計(jì)算環(huán)境中的第二進(jìn)程,其中該多任務(wù)處理包括利用一個(gè)或多個(gè)事件指示符。
22.如權(quán)利要求21所述的至少一個(gè)程序存儲(chǔ)裝置,其中指示符的利用包括切換一個(gè)或多個(gè)事件指示符中的至少一個(gè)事件指示符,以指示將要執(zhí)行第一進(jìn)程和第二進(jìn)程中的哪個(gè)進(jìn)程。
23.如權(quán)利要求21所述的至少一個(gè)程序存儲(chǔ)裝置,其中所述方法還包括注冊第二進(jìn)程到第一進(jìn)程。
24.一種在單處理器環(huán)境中進(jìn)行多任務(wù)處理的方法,該方法包括在無硬件中斷單處理器環(huán)境中執(zhí)行第一進(jìn)程;和多任務(wù)處理第一進(jìn)程與無硬件中斷單處理器環(huán)境中的第二進(jìn)程,其中該多任務(wù)處理包括利用一個(gè)或多個(gè)事件指示符。
全文摘要
公開了無硬件中斷環(huán)境下的多任務(wù)處理。利用事件指示符在環(huán)境的進(jìn)程之間進(jìn)行多任務(wù)處理。將要多任務(wù)處理的進(jìn)程彼此相互注冊,在處理期間,一個(gè)進(jìn)程切換事件指示符以允許另一進(jìn)程執(zhí)行。該切換允許這些進(jìn)程在無中斷環(huán)境下共享資源。
文檔編號(hào)G06F9/46GK1540509SQ20041003026
公開日2004年10月27日 申請日期2004年3月23日 優(yōu)先權(quán)日2003年4月22日
發(fā)明者弗雷德·A·鮑爾, 弗雷德 A 鮑爾 申請人:國際商業(yè)機(jī)器公司