專利名稱:多任務系統(tǒng)中的任務執(zhí)行環(huán)境切換方法
技術領域:
本發(fā)明涉及一種多任務操作系統(tǒng)(OS)中的任務執(zhí)行環(huán)境信息的切換方法,具體涉及一種用于多項任務共享堆棧存儲器并用于執(zhí)行其它CPU資源的獨占訪問控制的技術。
背景技術:
圖6是示出根據(jù)常規(guī)技術的多任務系統(tǒng)的處理方法的流程圖。在該常規(guī)技術中,多項任務共享同一堆棧區(qū)域。對于各個公共堆棧區(qū)域,在對任務自始至終而執(zhí)行的單元中,任務向公共堆棧區(qū)域的分配得到排他性的控制。該區(qū)別特征在于,在任務之間共享堆棧存儲器時分配處理過程的單元被設置為“對任務自始至終的執(zhí)行”。
參照圖6,將描述根據(jù)在日本出版專利文獻(日本未審查專利出版6-168145)中公開的根據(jù)常規(guī)技術的多任務處理系統(tǒng)中的堆??刂撇僮?。當存在執(zhí)行任務的請求時,首先,在步驟S41中判斷堆棧區(qū)域是否被共享該堆棧區(qū)域的其它任務所使用。當判斷結果為其它任務沒有正在使用該堆棧區(qū)域時,處理過程轉向步驟S42,其中任務被設置為可執(zhí)行。同時,當判斷出其它任務正在使用公共堆棧區(qū)域時,處理過程轉向步驟S43,其中延遲任務向可執(zhí)行狀態(tài)的過渡。因此,可以改進公共堆棧區(qū)域的存儲器使用效率。
上述常規(guī)技術的操作系統(tǒng)具有堆棧管理功能,其用于將單個堆棧區(qū)域分配給具有相同優(yōu)先權的多項任務。因此,單個堆棧區(qū)域被具有相同優(yōu)先權的多項任務共享。不過,假設共同使用單個區(qū)域的多項任務并不同時被執(zhí)行,并且這些任務的執(zhí)行順序可以提前確定。例如,在三項任務A、B和C共享單個堆棧區(qū)域的情況下,可做如下設置,即,在任務A終止執(zhí)行后執(zhí)行任務B,并在任務B終止執(zhí)行后執(zhí)行任務C。也就是說,公共堆棧區(qū)域只分配給將被獨占執(zhí)行的單個任務。進一步,還可能將單個任務區(qū)域分配給單個任務,使其獨占使用。例如,當管理十項任務時,OS為兩項任務中的每一項分配獨占使用的堆棧區(qū)域,為四項具有相同優(yōu)先權的任務分配單個公共堆棧區(qū)域,并為其余四項具有相同優(yōu)先權的任務分配單個公共堆棧區(qū)域。結果,雖然任務有十項,但是堆棧區(qū)域的總數(shù)卻為四個。因此,可以獲得m<n的關系式,其中,任務總數(shù)為n(n為正整數(shù)),堆棧區(qū)域的總數(shù)為m(m為正整數(shù))。因此,可以降低整個堆棧區(qū)域相對于RAM(隨機訪問存儲器)的整個存儲容量的比例。結果,有可能將多任務OS程序安裝到單片機中,在該單片機中,內置RAM的存儲容量受到限制。
不過,由于在多項任務共享堆棧存儲器時用于分配處理過程的單元被設置為“對任務自始至終的執(zhí)行”,所以上述常規(guī)技術具有如下問題。例如,在任務處理過程中可能執(zhí)行通信的情況下,例如從主函數(shù)調用子函數(shù)時,或者在可能同時啟動的多項任務之間執(zhí)行處理的情況下,不可能共享任務堆棧區(qū)域。在這些情況中,有必要獨立地確保用于獨占處理的堆棧和其它任務處理的堆棧。因此,不可能降低存儲量。
發(fā)明內容
因此,本發(fā)明的主要目的是實現(xiàn)如下目標即使在任務處理過程中可能執(zhí)行通信的情況下,例如,在從主函數(shù)調用子函數(shù)時,或者在可能同時啟動的多項任務之間執(zhí)行處理過程的情況下,實現(xiàn)任務堆棧區(qū)域的共享,從而降低整個系統(tǒng)中所使用的存儲量。
為了解決以上問題,根據(jù)本發(fā)明的多任務系統(tǒng)中的任務執(zhí)行環(huán)境切換方法,包括如下步驟第一步驟,用于將任務獨占執(zhí)行環(huán)境堆棧中的當前任務執(zhí)行環(huán)境信息疏散到上下文疏散區(qū)域,作為用于從所述任務中的主函數(shù)對子函數(shù)進行調用處理的預處理;
第二步驟,用于從所述任務的執(zhí)行環(huán)境表中將所述子函數(shù)的執(zhí)行環(huán)境信息存儲于用于所述任務的函數(shù)的執(zhí)行環(huán)境堆棧中;第三步驟,用于從所述任務中的所述主函數(shù)調用所述子函數(shù);和第四步驟,用于在處理過程從所述子函數(shù)返回所述主函數(shù)時,將在所述第一步驟中疏散到所述上下文疏散區(qū)域的所述任務執(zhí)行環(huán)境信息,存儲于用于所述任務函數(shù)的執(zhí)行環(huán)境堆棧中。
在本發(fā)明中,多項任務共享作為單個單元的堆棧區(qū)域,該單元包括函數(shù)的起始直至終止。在這方面,本發(fā)明不同于常規(guī)技術,在常規(guī)技術中,堆棧區(qū)域作為包含從任務執(zhí)行開始直至任務執(zhí)行結束的單元而被共享。因此,在本發(fā)明中可以通過小于任務單元的函數(shù)單元而在多項任務之間共享所述堆棧。
具體而言,獨占執(zhí)行環(huán)境堆棧被分配給由OS管理的每項任務,而用于函數(shù)的公共執(zhí)行環(huán)境堆棧作為包含函數(shù)的起始直至終止的單個單元而被分配。當存在調用子函數(shù)的請求時,判斷是否正在使用用于函數(shù)的公共執(zhí)行環(huán)境堆棧。當判斷出正在使用時,任務轉向執(zhí)行等待狀態(tài)。當判斷出沒有正在使用時,當前的任務執(zhí)行環(huán)境信息被疏散到上下文疏散區(qū)域,分配給子函數(shù)的用于函數(shù)的公共執(zhí)行環(huán)境堆棧被設置為“正在使用”,子函數(shù)的執(zhí)行環(huán)境信息被替換為用于函數(shù)的執(zhí)行環(huán)境堆棧,并且通過使用該執(zhí)行環(huán)境堆棧來調用子函數(shù)。當處理過程從子函數(shù)返回時,所疏散的任務執(zhí)行環(huán)境信息被替換為如下的任務獨占的執(zhí)行環(huán)境堆棧,所述任務獨占的執(zhí)行環(huán)境堆棧將被返回到就在調用子函數(shù)之前的任務執(zhí)行環(huán)境信息。
結果,根據(jù)本發(fā)明,即使可能在任務處理過程中執(zhí)行通信,或者甚至在可同時啟動的多項任務之間執(zhí)行通信,也可以執(zhí)行堆棧區(qū)域的共享。因此,可降低整個系統(tǒng)中所使用的存儲量。
存在本發(fā)明進一步包括如下步驟的實施例就在所述第二步驟之前,將在所述執(zhí)行環(huán)境表中的所述任務執(zhí)行信息轉換成排斥其它任務而待使用的獨占狀態(tài);和在所述第四步驟之后立刻釋放所述獨占狀態(tài)。
進一步存在若干針對前述實施例的實施例。在其中一個實施例中,在所述第一步驟中,判斷是否設置標志用于指示在所述執(zhí)行環(huán)境表中的每個任務執(zhí)行環(huán)境信息中所提供的另一任務正在使用,并且當判斷出正在設置所述標志時,則所述任務在所述第一步驟中被轉向等待狀態(tài);當在所述第一步驟中判斷出所述標志還未設置時,在用于轉換到所述獨占狀態(tài)的步驟中設置所述標志,以將所述執(zhí)行環(huán)境表中的所述任務執(zhí)行信息轉換成所述獨占狀態(tài);并且在用于釋放所述獨占狀態(tài)的步驟中,通過清除所述標志來釋放所述獨占狀態(tài)。在這種情況下,當在第一步驟中正在設置所述標志時,返回錯誤,而不調用子函數(shù)。
在另一實施例中,通過將狀態(tài)改變?yōu)槿蝿照{度禁止狀態(tài),執(zhí)行用于向所述獨占狀態(tài)過渡的步驟;并且通過將任務改變?yōu)槿蝿照{度允許狀態(tài),執(zhí)行用于釋放所述獨占狀態(tài)的步驟。這里所說的調度指的是針對由OS處理的多項任務而對CPU所進行的分配(安排)。
在又一實施例中,通過將任務改變?yōu)橹袛嘟範顟B(tài),執(zhí)行用于向所述獨占狀態(tài)過渡的步驟;并且通過將任務改變?yōu)橹袛嘣试S狀態(tài),執(zhí)行用于釋放所述獨占狀態(tài)的步驟。
否則,通過將任務改變?yōu)榛旧舷拗屏苏{度和中斷的CPU鎖定狀態(tài),可執(zhí)行用于轉向獨占狀態(tài)的步驟。
在上述的采用轉向獨占狀態(tài)的實施例中,沒有必要檢查子函數(shù)的調用,也沒有必要將任務轉向等待狀態(tài)。因此,處理效率變高。
另外,在本發(fā)明中,還存在如下實施例,其中,所述任務執(zhí)行環(huán)境是堆棧寄存器;并且所述任務執(zhí)行環(huán)境信息是用在所述子函數(shù)中的堆棧區(qū)域地址。進一步,還存在如下實施例,即,所述上下文疏散區(qū)域表明堆棧區(qū)域地址。
根據(jù)以上描述的本發(fā)明,可以通過小于任務單元的函數(shù)單元,在多項任務之間共享堆棧區(qū)域。因此,可以減少整個系統(tǒng)中所使用的存儲量。因此,可以采用小容量的存儲器操作多任務系統(tǒng)。
本發(fā)明是一種用于在多任務系統(tǒng)中切換任務執(zhí)行環(huán)境的方法,該方法使得,即使在任務處理過程期間執(zhí)行通信的情況下,或者甚至在可能同時啟動的多項任務之間執(zhí)行通信的情況下,也能夠共享堆棧區(qū)域。因此,作為一種用于減小用在整個系統(tǒng)中的存儲量的技術,本發(fā)明是非常有效的。
本發(fā)明的其它目的將從以下對優(yōu)選實施例和所附權利要求書的描述中變得清晰。本領域的技術人員通過實施本發(fā)明將認識到本發(fā)明還具有許多其它優(yōu)點。
圖1是示出本發(fā)明第一實施例中的多任務系統(tǒng)的結構的方框圖;圖2是在本發(fā)明的第一實施例中用于從主函數(shù)調用子函數(shù)的處理過程的流程圖;圖3是本發(fā)明第一實施例中的子函數(shù)調用檢查處理過程的流程圖;圖4示出本發(fā)明第一實施例中當上下文疏散區(qū)域指示子函數(shù)執(zhí)行環(huán)境信息時如何使用堆棧區(qū)域;圖5是本發(fā)明第二實施例中用于在從主函數(shù)調用子函數(shù)時提供獨占狀態(tài)的處理過程的流程圖;和圖6是描述根據(jù)常規(guī)技術的公共堆棧區(qū)域的獨占控制的流程圖。
具體實施例方式
下文中,將針對本發(fā)明的各優(yōu)選實施例,參照附圖詳細描述多任務系統(tǒng)中的任務執(zhí)行環(huán)境切換方法的實施例。
第一實施例圖1是示出根據(jù)本發(fā)明第一實施例的多任務系統(tǒng)的結構的方框圖。在該多任務系統(tǒng)中,操作系統(tǒng)(OS)1并行管理多項任務Ti(i=1,2,……,n),并控制它們的執(zhí)行。每項任務Ti都包括各自的堆棧STi(i=1,2,……n),作為獨占使用的執(zhí)行環(huán)境。在任務T1中,主函數(shù)f1調用子函數(shù)f2。
操作系統(tǒng)1包括執(zhí)行環(huán)境表A0和上下文疏散區(qū)域B0。執(zhí)行環(huán)境表A0包含子函數(shù)f2的執(zhí)行環(huán)境信息A1、子函數(shù)f2’的執(zhí)行環(huán)境信息A2,……。子函數(shù)f2的執(zhí)行環(huán)境信息A1存儲任務T1執(zhí)行子函數(shù)f2時所使用的執(zhí)行環(huán)境堆棧的地址值。上下文疏散區(qū)域B0包括任務T1疏散區(qū)域B1、任務T2疏散區(qū)域B2,……。這些任務疏散區(qū)域是具有如下特征的區(qū)域,即,這些區(qū)域用于在改變作為堆棧寄存器的任務獨占使用執(zhí)行環(huán)境堆棧ST1之前疏散當前的堆棧寄存器值。可分別提供子函數(shù)執(zhí)行環(huán)境信息和任務疏散區(qū)域中的至少一個。SPf是用于函數(shù)的執(zhí)行環(huán)境堆棧。
圖2是示出在本發(fā)明的第一實施例中用于從主函數(shù)調用子函數(shù)的處理過程的流程圖。首先,在步驟S1中,檢查執(zhí)行環(huán)境表A0中的子函數(shù)f2的執(zhí)行環(huán)境信息A1是否“正在使用”。當確認其沒有正在被使用時,處理過程移向步驟S2。當確認其正被使用時,處理過程移向步驟S11。
在步驟S2中,任務獨占使用執(zhí)行環(huán)境堆棧ST1中的當前任務執(zhí)行環(huán)境信息被疏散到上下文疏散區(qū)域B0的任務T1疏散區(qū)域B1,以對其進行保存。
然后,在步驟S3中,執(zhí)行環(huán)境表A0中的子函數(shù)f2的執(zhí)行環(huán)境信息A1被存儲于作為堆棧寄存器的用于函數(shù)的執(zhí)行環(huán)境堆棧SPf中,這就為執(zhí)行子函數(shù)f2進行了準備。
然后,在步驟S4中,執(zhí)行環(huán)境表A0中的子函數(shù)f2的執(zhí)行環(huán)境信息A1被設置為“正在使用”??梢栽O置標志用來使執(zhí)行環(huán)境信息A1處于“正在使用”。例如,通過將執(zhí)行環(huán)境表A0(陣列變量)中的執(zhí)行環(huán)境信息A1的最低位設置為“1”,可以將執(zhí)行環(huán)境信息A1設置為“正在使用”,通過將所述最低位設置為“0”,可以將執(zhí)行環(huán)境信息A1設置為“沒有正在使用”。
然后,在步驟S5中,調用子函數(shù)f2,并在步驟S6中啟動子函數(shù)f2的處理。當對子函數(shù)f2的處理結束時,在步驟S7中對其進行檢查,并且處理過程從子函數(shù)f2返回到主函數(shù)f1。
然后,在步驟S8中,先前步驟S2中的上下文疏散區(qū)域B0的任務T1疏散區(qū)域B1中所疏散的執(zhí)行環(huán)境信息被替換為任務獨占使用執(zhí)行環(huán)境堆棧ST1。
然后,在步驟S9中,執(zhí)行環(huán)境表A0中的子函數(shù)f2的執(zhí)行環(huán)境信息A1被設置為“沒有正在使用”。例如,為了將執(zhí)行環(huán)境信息A1設置為“沒有正在使用”,其最低位被設置為“0”。當執(zhí)行環(huán)境信息A1被設置為“沒有正在使用”時,如果有必要則搜索用于子函數(shù)f2的執(zhí)行環(huán)境信息的等待任務。如果存在等待任務,則有必要釋放該任務的等待狀態(tài)。在此不描述其詳細的處理過程。最后,該處理過程返回到步驟10中的主函數(shù)f1。
同時,當在步驟S1中判斷出執(zhí)行環(huán)境表A0中的子函數(shù)f2的執(zhí)行環(huán)境信息A1被設置為“正在使用”時,處理過程進入步驟S11,在步驟S11中,檢查是否可以調用子函數(shù)f2。當判斷出可以調用子函數(shù)f2時,處理過程轉向步驟S2。當判斷出不能調用子函數(shù)f2時,處理過程進入步驟S12,使處理過程返回主函數(shù)f1。
圖3是示出用于檢查是否可以調用子函數(shù)f2的過程的流程圖。在下文中對該過程進行詳細描述。首先,在步驟S21中,檢查所述任務是否轉向等待狀態(tài)。當確定該任務未轉向等待狀態(tài)時,處理過程轉向步驟S22。當確定該任務轉向等待狀態(tài)時,處理過程轉向步驟S23。作為步驟S21的處理過程的一種具體實例,例如存在這樣一種處理過程,其中,當特定OS中的特定變量的值為“1”時,所述任務轉向等待狀態(tài),而當特定變量為“0”時,所述任務不轉向等待狀態(tài)。
當在步驟S21中確定任務不轉向等待狀態(tài)時,處理過程進入步驟S22以執(zhí)行處理過程,并返回一不能被調用的值。同時,當在步驟S21中確定任務轉向等待狀態(tài)時,處理過程轉向步驟S23。
在步驟S23中,任務T1被轉向等待狀態(tài)。此時,子函數(shù)f2的執(zhí)行環(huán)境信息A1被設置處于使用等待狀態(tài),從而連接到OS中的等待提示,同時改變任務T1的狀態(tài)變量并執(zhí)行向OS所管理的另一任務的過渡處理。在此不描述向等待狀態(tài)的過渡處理的細節(jié)。
當任務T1轉向步驟S23中的等待狀態(tài)并且由于某些原因而釋放等待狀態(tài)時,處理過程轉向步驟S24。在步驟S24中,檢查等待狀態(tài)是否被正確釋放。當確定其被正確釋放時,處理過程轉向步驟S26。不過,當確定其沒有被正確釋放時,處理過程轉向步驟S25。例如,可以根據(jù)下文所述來判斷等待狀態(tài)是否被正確釋放,也就是說,當確定子函數(shù)f2的執(zhí)行環(huán)境信息A1的使用被另一任務被終止并且信息A1被釋放時,可以判斷出等待狀態(tài)被正確釋放。同時,當確定任務1的等待狀態(tài)通過強制等待釋放請求等進行釋放時,可以判斷出等待狀態(tài)沒有被正確釋放。
當在步驟S24中確定等待狀態(tài)沒有被正確釋放時,處理過程轉向步驟S25。在步驟S25中執(zhí)行終止處理,并且返回不能被調用的值。
當在步驟S11的檢查處理過程中確定不能調用子函數(shù)時,處理過程轉向步驟S12。也就是說,返回到主函數(shù)f1的處理過程。此時,有必要將不能調用子函數(shù)f2通知給主函數(shù)f1。因此,例如通過返回一錯誤值向主函數(shù)進行通知。當在步驟S11的檢查處理過程中確定可以調用函數(shù)時,處理過程轉向步驟S2。在這種情況下,步驟S2及其之后的處理過程以上述方式得以執(zhí)行。
在上下文疏散區(qū)域B0表明子函數(shù)f2的執(zhí)行環(huán)境信息A1的值“(SP)+4”的情況下,參照圖4描述用于函數(shù)的執(zhí)行環(huán)境堆棧SPf的使用。在這種情況下,子函數(shù)f2的執(zhí)行環(huán)境信息A1的值指示子函數(shù)執(zhí)行處理堆棧區(qū)域2,并且返回SP保存區(qū)域3指示子函數(shù)f2的執(zhí)行環(huán)境信息A1的值“(SP)+4”。在任務T1中使用的最后的地址被保存于用于子函數(shù)f2的堆棧區(qū)域的返回SP保存區(qū)域3中。
如上文所述,在本實施例中,通過使所述函數(shù)由開始至結束形成單個單元,若干任務共享所述堆棧區(qū)域。因為基于比任務單元小的函數(shù)單元而在若干任務之間共享了所述堆棧,因此即使在任務處理中也可能執(zhí)行通信的情況下,或者甚至在可能同時啟動的任務之間執(zhí)行通信的情況下,也可以共享堆棧區(qū)域。因此,可以減少在整個系統(tǒng)中所使用的存儲量。
第二實施例圖5示出在本發(fā)明的第二實施例中用于從主函數(shù)f1調用子函數(shù)f2的處理過程的流程圖。圖5所示的該實施例的處理過程在以下方面不同于第一實施例的處理過程(圖2)。也就是說,第二實施例在步驟S31中執(zhí)行向獨占狀態(tài)過渡的處理過程,并在步驟S38中執(zhí)行釋放獨占狀態(tài)的處理過程,從而取代了步驟S4中的設置標志來指示“正在使用”的處理過程和步驟9中的設置標志來指示“沒有正在使用”的處理過程。這將在下文中予以詳細描述。
首先,在步驟S31中,轉向獨占狀態(tài)。獨占狀態(tài)指的是,例如,任務調度禁止狀態(tài)、中斷禁止狀態(tài)或CPU鎖定狀態(tài)。
接著,在步驟S32中,在任務獨占使用執(zhí)行環(huán)境堆棧ST1中的當前任務執(zhí)行環(huán)境信息被疏散到上下文疏散區(qū)域B0的任務T1疏散區(qū)域B1,以對其進行保存。
然后,在步驟S33中,執(zhí)行環(huán)境表A0中的子函數(shù)f2的執(zhí)行環(huán)境信息A1被存儲于用于函數(shù)的執(zhí)行環(huán)境堆棧SPf中。然后,在步驟S34中調用子函數(shù)f2,并且在步驟S35中啟動子函數(shù)f2的處理過程。當子函數(shù)f2的處理過程結束時,在步驟S36中對其進行檢查,并且該處理過程從子函數(shù)f2返回到主函數(shù)f1。
然后,在步驟S37中,在步驟S32中上下文疏散區(qū)域B0的任務T1疏散區(qū)域B1中所疏散的執(zhí)行環(huán)境信息,被替換成任務獨占使用執(zhí)行環(huán)境堆棧ST1。
然后,在步驟S38中釋放獨占狀態(tài)。在步驟S31中任務被提前設置成任務調度禁止狀態(tài)的情況下,在獨占狀態(tài)的釋放處理過程中(步驟S38),任務被設置成任務調度允許狀態(tài)。進一步,當在步驟S31中任務被提前設置成中斷禁止狀態(tài)時,在獨占狀態(tài)的釋放處理過程中(步驟S38),該任務被設置成中斷允許狀態(tài)。更進一步,當在步驟S31中任務被提前設置成CPU鎖定狀態(tài)時,在獨占狀態(tài)的釋放處理過程中(步驟S38),CPU鎖定狀態(tài)被釋放。
在執(zhí)行了步驟S38的上述處理過程后,在步驟S39中,該處理過程最后返回到主函數(shù)f1。
如上文所述,在本實施例中,通過使所述函數(shù)由開始至結束形成單個單元,若干任務共享所述堆棧區(qū)域。因為采用比任務單元小的函數(shù)單元而在若干任務之間共享了所述堆棧,因此即使在任務處理過程中可能執(zhí)行通信的情況下,甚至在可能同時啟動的任務之間執(zhí)行通信的情況下,也可以共享堆棧區(qū)域。因此,可以減少在整個系統(tǒng)中所使用的存儲量。另外,圖2所示的用于檢查子函數(shù)是否可以被調用的處理過程是沒有必要的,并且沒有任何向任務等待狀態(tài)的轉移,這提供了更高的處理效率。
第三實施例在上述的第一實施例和第二實施例中,子函數(shù)f2的執(zhí)行環(huán)境信息A1被認為是執(zhí)行環(huán)境信息。作為替代,還可以進行如下構造,即,使子函數(shù)執(zhí)行環(huán)境信息A1為CPU的運行模式,并在主函數(shù)f1的執(zhí)行過程中將運行模式疏散到上下文疏散區(qū)域B0,以便在從主函數(shù)f1調用子函數(shù)f2的處理過程期間對其進行保存,從而切換子函數(shù)f2的CPU運行模式。
進一步,在具有多個CPU的多處理器的情況下,可以采用如下方式進行構建,即,在子函數(shù)f2的執(zhí)行環(huán)境信息A1中指定特定的CPU,并且在從主函數(shù)f1調用子函數(shù)f2的處理過程中切換待使用的CPU。
本發(fā)明已經參照最優(yōu)選的實施例進行了詳細描述。不過,在不偏離所附權利要求書的精神和寬闊范圍的前提下,可以對各組成部分進行各種不同的組合和修改。
權利要求
1.一種多任務系統(tǒng)中的任務執(zhí)行環(huán)境切換方法,包括如下步驟第一步驟,用于將任務獨占使用執(zhí)行環(huán)境堆棧中的當前任務執(zhí)行環(huán)境信息疏散到上下文疏散區(qū)域,作為用于從所述任務中的主函數(shù)對子函數(shù)進行調用處理的預處理;第二步驟,用于從所述任務的執(zhí)行環(huán)境表中將所述子函數(shù)的執(zhí)行環(huán)境信息存儲于用于所述任務的函數(shù)的執(zhí)行環(huán)境堆棧中;第三步驟,用于從所述任務中的所述主函數(shù)調用所述子函數(shù);和第四步驟,用于在處理過程從所述子函數(shù)返回所述主函數(shù)時,將在所述第一步驟中疏散到所述上下文疏散區(qū)域的所述任務執(zhí)行環(huán)境信息,存儲于所述任務獨占使用執(zhí)行環(huán)境堆棧的任務中。
2.根據(jù)權利要求1所述的任務執(zhí)行環(huán)境切換方法,進一步包括如下步驟就在所述第二步驟之前,將所述執(zhí)行環(huán)境表中的所述任務執(zhí)行信息轉換成排斥其它任務而待使用的獨占狀態(tài);和在所述第四步驟之后立刻釋放所述獨占狀態(tài)。
3.根據(jù)權利要求2所述的任務執(zhí)行環(huán)境切換方法,其中在所述第一步驟中,判斷是否設置標志用于指示在所述執(zhí)行環(huán)境表中的每個任務執(zhí)行環(huán)境信息中所提供的另一任務正在使用,當判斷出正在設置所述標志時,則所述任務在所述第一步驟中被轉向等待狀態(tài);當在所述第一步驟中判斷出所述標志還未設置時,在用于轉換到所述獨占狀態(tài)的所述步驟中設置所述標志,以通過在用于轉換到所述獨占狀態(tài)的所述步驟中設置所述標志,來將在所述執(zhí)行環(huán)境表中的所述任務執(zhí)行信息轉換成所述獨占狀態(tài);并且在用于釋放所述獨占狀態(tài)的所述步驟中,通過清除所述標志來釋放所述獨占狀態(tài)。
4.根據(jù)權利要求2所述的任務執(zhí)行環(huán)境切換方法,其中通過將任務改變?yōu)槿蝿照{度禁止狀態(tài),執(zhí)行用于向所述獨占狀態(tài)過渡的所述步驟;并且通過將任務改變?yōu)槿蝿照{度允許狀態(tài),執(zhí)行用于釋放所述獨占狀態(tài)的所述步驟。
5.根據(jù)權利要求2所述的任務執(zhí)行環(huán)境切換方法,其中通過將任務改變?yōu)橹袛嘟範顟B(tài),執(zhí)行用于向所述獨占狀態(tài)過渡的所述步驟;并且通過將任務改變?yōu)橹袛嘣试S狀態(tài),執(zhí)行用于釋放所述獨占狀態(tài)的所述步驟。
6.根據(jù)權利要求1所述的任務執(zhí)行環(huán)境切換方法,其中所述任務執(zhí)行環(huán)境是堆棧寄存器;并且所述任務執(zhí)行環(huán)境信息是在所述子函數(shù)中使用的堆棧區(qū)域地址。
7.根據(jù)權利要求1所述的任務執(zhí)行環(huán)境切換方法,其中所述上下文疏散區(qū)域指示堆棧區(qū)域地址。
全文摘要
本發(fā)明公開一種多任務系統(tǒng)中的任務執(zhí)行環(huán)境切換方法,包括如下步驟第一步驟,用于將任務獨占使用執(zhí)行環(huán)境堆棧的當前任務執(zhí)行環(huán)境信息疏散到上下文疏散區(qū)域,作為用于從所述任務中的主函數(shù)對子函數(shù)進行調用處理的預處理;第二步驟,用于從所述任務的執(zhí)行環(huán)境表中將子函數(shù)的執(zhí)行環(huán)境信息存儲于用于所述任務的函數(shù)的執(zhí)行環(huán)境堆棧中;第三步驟,用于從所述任務中的主函數(shù)調用所述子函數(shù);和第四步驟,用于在處理過程從所述子函數(shù)返回所述主函數(shù)時,將在第一步驟中疏散到所述上下文疏散區(qū)域的所述任務執(zhí)行環(huán)境信息,存儲于所述任務獨占使用執(zhí)行環(huán)境堆棧的任務中。
文檔編號G06F9/50GK101042660SQ200710089508
公開日2007年9月26日 申請日期2007年3月22日 優(yōu)先權日2006年3月23日
發(fā)明者小林圭太 申請人:松下電器產業(yè)株式會社