一種多任務(wù)操作環(huán)境狀態(tài)的計(jì)算機(jī)調(diào)度方法
【專利摘要】本發(fā)明屬于計(jì)算機(jī)調(diào)度【技術(shù)領(lǐng)域】,具體涉及一種多任務(wù)操作環(huán)境狀態(tài)的計(jì)算機(jī)調(diào)度方法。本發(fā)明主要解決現(xiàn)有的調(diào)度方法存在消耗內(nèi)存大和任務(wù)調(diào)度復(fù)雜的問題。本發(fā)明的技術(shù)方案為:一種多任務(wù)操作環(huán)境狀態(tài)的計(jì)算機(jī)調(diào)度方法,所述的多狀態(tài)調(diào)度器從工業(yè)控制作業(yè)、流程中的多個(gè)狀態(tài)中選定第一種任務(wù)狀態(tài),二級(jí)多任務(wù)調(diào)度器啟動(dòng)第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群和所述二級(jí)任務(wù)群的硬件資源,當(dāng)二級(jí)多任務(wù)調(diào)度器調(diào)度的第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)達(dá)到第二種任務(wù)狀態(tài)的切換條件時(shí),多狀態(tài)調(diào)度器就會(huì)關(guān)閉第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群及所用的硬件資源,啟動(dòng)第二種任務(wù)狀態(tài)依次循環(huán)直至完成工業(yè)控制的作業(yè)和流程。本發(fā)明具有操作簡(jiǎn)單的優(yōu)點(diǎn)。
【專利說明】一種多任務(wù)操作環(huán)境狀態(tài)的計(jì)算機(jī)調(diào)度方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于基于狀態(tài)的多任務(wù)操作環(huán)境的計(jì)算機(jī)調(diào)度【技術(shù)領(lǐng)域】,具體涉及一種多任務(wù)操作環(huán)境狀態(tài)的計(jì)算機(jī)調(diào)度方法。
【背景技術(shù)】
[0002]在一個(gè)復(fù)雜的工業(yè)控制系統(tǒng)中,如果可以將這個(gè)系統(tǒng)劃分為若干個(gè)有限的狀態(tài),然后對(duì)每個(gè)狀態(tài)下的任務(wù)分別實(shí)時(shí)的調(diào)度和處理,會(huì)使得系統(tǒng)控制變得簡(jiǎn)單明了,非常便于系統(tǒng)的維護(hù)和管理。在現(xiàn)有的幾種多任務(wù)操作環(huán)境的調(diào)度方法有如下幾種:
[0003]1、基于位圖優(yōu)先級(jí)的調(diào)度方法是:首先建立了 64個(gè)優(yōu)先級(jí)位圖,每個(gè)任務(wù)一個(gè)優(yōu)先級(jí),將所有的任務(wù)都分配一個(gè)優(yōu)先級(jí),然后調(diào)度器會(huì)按照優(yōu)先級(jí)的先后順序來調(diào)度系統(tǒng)任務(wù),任務(wù)的數(shù)量不能超過64個(gè)。對(duì)于有大量的任務(wù)處理時(shí),這種調(diào)度方法就失效了,而且每個(gè)事件都要建立64個(gè)位圖,因此會(huì)消耗大量?jī)?nèi)存。uCOS就具有這方面的代表性。
[0004]2、基于隊(duì)列優(yōu)先級(jí)的調(diào)度方法是:建立一組優(yōu)先級(jí)為8級(jí)或16級(jí)的隊(duì)列,每級(jí)優(yōu)先級(jí)隊(duì)列中可以包含若干個(gè)同等優(yōu)先級(jí)的任務(wù),調(diào)度器首先按照優(yōu)先級(jí)高的任務(wù)先調(diào)度,然后在同級(jí)別中的任務(wù)按照等時(shí)間片的方法調(diào)度。任務(wù)數(shù)量沒有限制,內(nèi)存消耗小,但是處理狀態(tài)任務(wù)時(shí),由于不能在調(diào)度層處理狀態(tài)切換和任務(wù)調(diào)度管理,因此在任務(wù)層上完成狀態(tài)切換和相應(yīng)的任務(wù)調(diào)度就會(huì)非常復(fù)雜。FreeRTOS具有這方面的代表性。
[0005]3、基于層級(jí)管理的調(diào)度方法是:將系統(tǒng)任務(wù)分為硬件層驅(qū)動(dòng)、系統(tǒng)層任務(wù)和應(yīng)用層任務(wù)的三級(jí)任務(wù),硬件層驅(qū)動(dòng)高于系統(tǒng)層任務(wù),而系統(tǒng)層任務(wù)級(jí)別高于應(yīng)用層級(jí)別,硬件層驅(qū)動(dòng)為系統(tǒng)層任務(wù)服務(wù),系統(tǒng)層任務(wù)服務(wù)于應(yīng)用層任務(wù),硬件層驅(qū)動(dòng)和系統(tǒng)層任務(wù)在系統(tǒng)后臺(tái)執(zhí)行,調(diào)度器在調(diào)度應(yīng)用層的任務(wù)時(shí),根據(jù)應(yīng)用層任務(wù)的需求分別掛載硬件層驅(qū)動(dòng)和系統(tǒng)層任務(wù),當(dāng)硬件層驅(qū)動(dòng)或系統(tǒng)任務(wù)有該應(yīng)用層所等待的事件被觸發(fā)后,調(diào)度器通知應(yīng)用層任務(wù)。windowsCE、uClinux具有這方面的代表性。
[0006]綜上,在基于狀態(tài)的多任務(wù)操作環(huán)境的計(jì)算機(jī)調(diào)度方法中,上述各個(gè)系統(tǒng)調(diào)度方法的執(zhí)行效率和系統(tǒng)開發(fā)成本的控制都不理想,都是基于任務(wù)的調(diào)度,沒有在操作系統(tǒng)級(jí)上直接處理狀態(tài)和任務(wù)。
【發(fā)明內(nèi)容】
[0007]本發(fā)明主要針對(duì)現(xiàn)有的多任務(wù)操作環(huán)境的調(diào)度方法存在消耗內(nèi)存大和任務(wù)調(diào)度復(fù)雜的問題,提供一種多任務(wù)操作環(huán)境狀態(tài)的計(jì)算機(jī)調(diào)度方法。
[0008]本發(fā)明為解決上述問題而采取的技術(shù)方案為:
[0009]一種多任務(wù)操作環(huán)境狀態(tài)的計(jì)算機(jī)調(diào)度方法,包括一個(gè)多狀態(tài)調(diào)度器和一個(gè)二級(jí)多任務(wù)調(diào)度器,所述的多狀態(tài)調(diào)度器從工業(yè)控制作業(yè)、流程中的多個(gè)狀態(tài)中選定第一種任務(wù)狀態(tài),二級(jí)多任務(wù)調(diào)度器啟動(dòng)第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群和所述二級(jí)任務(wù)群的硬件資源,當(dāng)二級(jí)多任務(wù)調(diào)度器調(diào)度的第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)達(dá)到第二種任務(wù)狀態(tài)的切換條件時(shí),多狀態(tài)調(diào)度器就會(huì)關(guān)閉第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群及所用的硬件資源,啟動(dòng)第二種任務(wù)狀態(tài),此時(shí)二級(jí)多任務(wù)調(diào)度器啟動(dòng)第二種任務(wù)狀態(tài)下的二級(jí)任務(wù)群和該二級(jí)任務(wù)群所需的硬件資源,當(dāng)二級(jí)多任務(wù)調(diào)度器調(diào)度的第二種任務(wù)狀態(tài)下的二級(jí)任務(wù)達(dá)到第三種任務(wù)狀態(tài)的切換條件時(shí),多狀態(tài)調(diào)度器就會(huì)關(guān)閉第二種任務(wù)狀態(tài)下的二級(jí)任務(wù)群及所用的硬件資源,啟動(dòng)第三種任務(wù)狀態(tài),依次循環(huán)直至完成工業(yè)控制的作業(yè)和流程。
[0010]所述多狀態(tài)調(diào)度器的調(diào)度步驟如下:
[0011](I)、啟動(dòng)工業(yè)控制裝置,初始化工業(yè)控制裝置基本的硬件資源,建立工業(yè)控制裝置中作業(yè)、流程的任務(wù)狀態(tài);
[0012](2)、建立不同任務(wù)狀態(tài)之間的切換條件;
[0013](3)、建立每個(gè)任務(wù)狀態(tài)下的二級(jí)任務(wù)群的登記表;
[0014](4)、啟動(dòng)多狀態(tài)調(diào)度器并進(jìn)入第一種任務(wù)狀態(tài);
[0015](5)、建立第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群,將二級(jí)任務(wù)群登錄到第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群的登記表中,其中所述的二級(jí)任務(wù)群中的任務(wù)包括高優(yōu)先級(jí)的二級(jí)任務(wù)、相同優(yōu)先級(jí)的二級(jí)任務(wù)和需要?jiǎng)儕Z內(nèi)核的二級(jí)任務(wù);
[0016](6)、二級(jí)多任務(wù)調(diào)度器進(jìn)行二級(jí)任務(wù)群調(diào)度并運(yùn)行該二級(jí)任務(wù)群中的任務(wù);
[0017](7)、當(dāng)所述二級(jí)任務(wù)群中的任務(wù)運(yùn)行到第二種任務(wù)狀態(tài)所需要的切換條件時(shí),則開始建立第二種任務(wù)狀態(tài)的二級(jí)任務(wù)群,并將二級(jí)任務(wù)群登錄到第二種任務(wù)狀態(tài)下的二級(jí)任務(wù)群的登記表中,二級(jí)多任務(wù)調(diào)度器進(jìn)行二級(jí)任務(wù)群調(diào)度并運(yùn)行該二級(jí)任務(wù)群中的任務(wù);當(dāng)所述二級(jí)任務(wù)群中的任務(wù)運(yùn)行到第三種任務(wù)狀態(tài)所需要的切換條件時(shí),則開始建立第三種任務(wù)狀態(tài)的二級(jí)任務(wù)群,依次循環(huán)直至完成工業(yè)控制的作業(yè)和流程。
[0018]所述二級(jí)多任務(wù)調(diào)度器的調(diào)度步驟如下:
[0019](I)、初始化第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群所需的堆棧、內(nèi)存;
[0020](2)、初始化并啟動(dòng)第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群所需的輸入輸出硬件設(shè)備;
[0021](3)、建立任務(wù)就緒指針、任務(wù)等待指針和任務(wù)休眠指針,將任務(wù)就緒指針指向第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)登記表;
[0022](4)、首先判斷有無就緒的二級(jí)任務(wù),如果沒有,工業(yè)控制裝置休眠;如果有,則二級(jí)多任務(wù)調(diào)度器就會(huì)將就緒二級(jí)任務(wù)的優(yōu)先級(jí)別與當(dāng)前工業(yè)控制裝置正在執(zhí)行的二級(jí)任務(wù)的優(yōu)先級(jí)別進(jìn)行對(duì)比,判斷就緒二級(jí)任務(wù)是高優(yōu)先級(jí)的二級(jí)任務(wù)、相同優(yōu)先級(jí)的二級(jí)任務(wù)還是低優(yōu)先級(jí)的二級(jí)任務(wù),如果是高優(yōu)先級(jí)的二級(jí)任務(wù),則二級(jí)多任務(wù)調(diào)度器控制執(zhí)行就緒二級(jí)任務(wù);如果是相同優(yōu)先級(jí)的二級(jí)任務(wù),則二級(jí)多任務(wù)調(diào)度器在時(shí)間片到達(dá)后控制就緒二級(jí)任務(wù);如果是低優(yōu)先級(jí)的二級(jí)任務(wù),則二級(jí)多任務(wù)調(diào)度器返回當(dāng)前正在執(zhí)行的二級(jí)任務(wù);
[0023](5)、當(dāng)步驟(4)選定了需要執(zhí)行的二級(jí)任務(wù)后,如果該二級(jí)任務(wù)是需要?jiǎng)儕Z內(nèi)核的二級(jí)任務(wù),該二級(jí)任務(wù)設(shè)置內(nèi)核鎖定,如果此時(shí)二級(jí)多任務(wù)調(diào)度器需要新就緒二級(jí)任務(wù)調(diào)度時(shí),則二級(jí)多任務(wù)調(diào)度器判斷內(nèi)核鎖定后會(huì)返回執(zhí)行當(dāng)前需要?jiǎng)儕Z內(nèi)核的二級(jí)任務(wù)直至任務(wù)完成,內(nèi)核解鎖后,二級(jí)多任務(wù)調(diào)度器才執(zhí)行新就緒二級(jí)任務(wù);
[0024](6)、如果步驟(4)選定的二級(jí)任務(wù)需要等待某一事件觸發(fā)時(shí),則會(huì)加入任務(wù)等待指針的隊(duì)列中,當(dāng)該等待的事件觸發(fā)后,二級(jí)多任務(wù)調(diào)度器將會(huì)使該任務(wù)就緒并執(zhí)行步驟
(4),其中所述的事件包括中斷信號(hào)、外圍設(shè)備的觸發(fā)信號(hào)或等待數(shù)據(jù)處理完成信號(hào);
[0025](7)、當(dāng)二級(jí)任務(wù)群中的二級(jí)任務(wù)執(zhí)行完成后,就會(huì)輸出狀態(tài)切換條件同時(shí)二級(jí)多任務(wù)調(diào)度器退出工作,輸出的狀態(tài)切換條件用于啟動(dòng)多狀態(tài)調(diào)度器切換下一個(gè)狀態(tài)。
[0026]由于一個(gè)復(fù)雜的工業(yè)控制系統(tǒng)中,使用狀態(tài)機(jī)控制,會(huì)使得系統(tǒng)控制變得簡(jiǎn)單且便于系統(tǒng)的維護(hù)和管理。因此本發(fā)明采用上述技術(shù)方案,使用了系統(tǒng)底層調(diào)度切換系統(tǒng)的狀態(tài),并使得當(dāng)前狀態(tài)下的任務(wù)群?jiǎn)为?dú)占系統(tǒng)的硬件資源,又因?yàn)椴捎昧烁邇?yōu)先級(jí)的任務(wù)先運(yùn)行、內(nèi)核可剝奪、實(shí)時(shí)處理技術(shù),這樣將會(huì)提高系統(tǒng)任務(wù)執(zhí)行的效率;由于狀態(tài)的調(diào)度沒有放在任務(wù)中執(zhí)行,簡(jiǎn)化和縮短了系統(tǒng)開發(fā)過程。
【專利附圖】
【附圖說明】
[0027]圖1是本發(fā)明工業(yè)控制裝置的框架圖;
[0028]圖2是本發(fā)明方法的流程圖;
[0029]圖3是本發(fā)明狀態(tài)創(chuàng)建流程圖;
[0030]圖4是本發(fā)明多狀態(tài)調(diào)度器流程圖;
[0031]圖5是本發(fā)明二級(jí)多任務(wù)調(diào)度器的流程圖。
【具體實(shí)施方式】
[0032]實(shí)施例1
[0033]如圖1,圖2,圖3,圖4和圖5所示,一種多任務(wù)操作環(huán)境狀態(tài)的計(jì)算機(jī)調(diào)度方法,包括一個(gè)多狀態(tài)調(diào)度器和一個(gè)二級(jí)多任務(wù)調(diào)度器,所述的多狀態(tài)調(diào)度器從工業(yè)控制作業(yè)、流程中的多個(gè)狀態(tài)中選定第一種任務(wù)狀態(tài),二級(jí)多任務(wù)調(diào)度器啟動(dòng)第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群和所述二級(jí)任務(wù)群的硬件資源,當(dāng)二級(jí)多任務(wù)調(diào)度器調(diào)度的第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)達(dá)到第二種任務(wù)狀態(tài)的切換條件時(shí),多狀態(tài)調(diào)度器就會(huì)關(guān)閉第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群及所用的硬件資源,啟動(dòng)第二種任務(wù)狀態(tài),此時(shí)二級(jí)多任務(wù)調(diào)度器啟動(dòng)第二種任務(wù)狀態(tài)下的二級(jí)任務(wù)群和該二級(jí)任務(wù)群所需的硬件資源,當(dāng)二級(jí)多任務(wù)調(diào)度器調(diào)度的第二種任務(wù)狀態(tài)下的二級(jí)任務(wù)達(dá)到第三種任務(wù)狀態(tài)的切換條件時(shí),多狀態(tài)調(diào)度器就會(huì)關(guān)閉第二種任務(wù)狀態(tài)下的二級(jí)任務(wù)群及所用的硬件資源,啟動(dòng)第三種任務(wù)狀態(tài),依次循環(huán)直至完成工業(yè)控制的作業(yè)和流程;
[0034]其中多狀態(tài)調(diào)度器的調(diào)度步驟如下:
[0035](I)、啟動(dòng)工業(yè)控制裝置,初始化工業(yè)控制裝置基本的硬件資源,建立工業(yè)控制裝置中作業(yè)、流程的任務(wù)狀態(tài);
[0036](2)、建立不同任務(wù)狀態(tài)之間的切換條件;
[0037](3)、建立每個(gè)任務(wù)狀態(tài)下的二級(jí)任務(wù)群的登記表;
[0038](4)、啟動(dòng)多狀態(tài)調(diào)度器并進(jìn)入第一種任務(wù)狀態(tài);
[0039](5)、建立第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群,將二級(jí)任務(wù)群登錄到第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群的登記表中,其中所述的二級(jí)任務(wù)群中的任務(wù)包括高優(yōu)先級(jí)的二級(jí)任務(wù)、相同優(yōu)先級(jí)的二級(jí)任務(wù)和需要?jiǎng)儕Z內(nèi)核的二級(jí)任務(wù);
[0040](6)、二級(jí)多任務(wù)調(diào)度器進(jìn)行二級(jí)任務(wù)群調(diào)度并運(yùn)行該二級(jí)任務(wù)群中的任務(wù);
[0041](7)、當(dāng)所述二級(jí)任務(wù)群中的任務(wù)運(yùn)行到第二種任務(wù)狀態(tài)所需要的切換條件時(shí),則開始建立第二種任務(wù)狀態(tài)的二級(jí)任務(wù)群,并將二級(jí)任務(wù)群登錄到第二種任務(wù)狀態(tài)下的二級(jí)任務(wù)群的登記表中,二級(jí)多任務(wù)調(diào)度器進(jìn)行二級(jí)任務(wù)群調(diào)度并運(yùn)行該二級(jí)任務(wù)群中的任務(wù);當(dāng)所述二級(jí)任務(wù)群中的任務(wù)運(yùn)行到第三種任務(wù)狀態(tài)所需要的切換條件時(shí),則開始建立第三種任務(wù)狀態(tài)的二級(jí)任務(wù)群,依次循環(huán)直至完成工業(yè)控制的作業(yè)和流程。
[0042]二級(jí)多任務(wù)調(diào)度器的調(diào)度步驟如下:
[0043](I)、初始化第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群所需的堆棧、內(nèi)存;
[0044](2)、初始化并啟動(dòng)第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群所需的輸入輸出硬件設(shè)備;
[0045](3)、建立任務(wù)就緒指針、任務(wù)等待指針和任務(wù)休眠指針,將任務(wù)就緒指針指向第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)登記表;
[0046](4)、首先判斷有無就緒的二級(jí)任務(wù),如果沒有,工業(yè)控制裝置休眠;如果有,則二級(jí)多任務(wù)調(diào)度器就會(huì)將就緒二級(jí)任務(wù)的優(yōu)先級(jí)別與當(dāng)前工業(yè)控制裝置正在執(zhí)行的二級(jí)任務(wù)的優(yōu)先級(jí)別進(jìn)行對(duì)比,判斷就緒二級(jí)任務(wù)是高優(yōu)先級(jí)的二級(jí)任務(wù)、相同優(yōu)先級(jí)的二級(jí)任務(wù)還是低優(yōu)先級(jí)的二級(jí)任務(wù),如果是高優(yōu)先級(jí)的二級(jí)任務(wù),則二級(jí)多任務(wù)調(diào)度器控制執(zhí)行就緒二級(jí)任務(wù);如果是相同優(yōu)先級(jí)的二級(jí)任務(wù),則二級(jí)多任務(wù)調(diào)度器在時(shí)間片到達(dá)后控制就緒二級(jí)任務(wù);如果是低優(yōu)先級(jí)的二級(jí)任務(wù),則二級(jí)多任務(wù)調(diào)度器返回當(dāng)前正在執(zhí)行的二級(jí)任務(wù);
[0047](5)、當(dāng)步驟(4)選定了需要執(zhí)行的二級(jí)任務(wù)后,如果該二級(jí)任務(wù)是需要?jiǎng)儕Z內(nèi)核的二級(jí)任務(wù),該二級(jí)任務(wù)設(shè)置內(nèi)核鎖定,如果此時(shí)二級(jí)多任務(wù)調(diào)度器需要新就緒二級(jí)任務(wù)調(diào)度時(shí),則二級(jí)多任務(wù)調(diào)度器判斷內(nèi)核鎖定后會(huì)返回執(zhí)行當(dāng)前需要?jiǎng)儕Z內(nèi)核的二級(jí)任務(wù)直至任務(wù)完成,內(nèi)核解鎖后,二級(jí)多任務(wù)調(diào)度器才執(zhí)行新就緒二級(jí)任務(wù);
[0048](6)、如果步驟(4)選定的二級(jí)任務(wù)需要等待某一事件觸發(fā)時(shí),則會(huì)加入任務(wù)等待指針的隊(duì)列中,當(dāng)該等待的事件觸發(fā)后,二級(jí)多任務(wù)調(diào)度器將會(huì)使該任務(wù)就緒并執(zhí)行步驟
(4),其中所述的事件包括中斷信號(hào)、外圍設(shè)備的觸發(fā)信號(hào)或等待數(shù)據(jù)處理完成信號(hào);
[0049](7)、當(dāng)二級(jí)任務(wù)群中的二級(jí)任務(wù)執(zhí)行完成后,就會(huì)輸出狀態(tài)切換條件同時(shí)二級(jí)多任務(wù)調(diào)度器退出工作,輸出的狀態(tài)切換條件用于啟動(dòng)多狀態(tài)調(diào)度器切換下一個(gè)狀態(tài)。
【權(quán)利要求】
1.一種多任務(wù)操作環(huán)境狀態(tài)的計(jì)算機(jī)調(diào)度方法,其特征在于:包括一個(gè)多狀態(tài)調(diào)度器和一個(gè)二級(jí)多任務(wù)調(diào)度器,所述的多狀態(tài)調(diào)度器從工業(yè)控制作業(yè)、流程中的多個(gè)狀態(tài)中選定第一種任務(wù)狀態(tài),二級(jí)多任務(wù)調(diào)度器啟動(dòng)第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群和所述二級(jí)任務(wù)群的硬件資源,當(dāng)二級(jí)多任務(wù)調(diào)度器調(diào)度的第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)達(dá)到第二種任務(wù)狀態(tài)的切換條件時(shí),多狀態(tài)調(diào)度器就會(huì)關(guān)閉第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群及所用的硬件資源,啟動(dòng)第二種任務(wù)狀態(tài),此時(shí)二級(jí)多任務(wù)調(diào)度器啟動(dòng)第二種任務(wù)狀態(tài)下的二級(jí)任務(wù)群和該二級(jí)任務(wù)群所需的硬件資源,當(dāng)二級(jí)多任務(wù)調(diào)度器調(diào)度的第二種任務(wù)狀態(tài)下的二級(jí)任務(wù)達(dá)到第三種任務(wù)狀態(tài)的切換條件時(shí),多狀態(tài)調(diào)度器就會(huì)關(guān)閉第二種任務(wù)狀態(tài)下的二級(jí)任務(wù)群及所用的硬件資源,啟動(dòng)第三種任務(wù)狀態(tài),依次循環(huán)直至完成工業(yè)控制的作業(yè)和流程。
2.根據(jù)權(quán)利要求1所述的一種多任務(wù)操作環(huán)境狀態(tài)的計(jì)算機(jī)調(diào)度方法,其特征在于:所述多狀態(tài)調(diào)度器的調(diào)度步驟如下: (1)、啟動(dòng)工業(yè)控制裝置,初始化工業(yè)控制裝置基本的硬件資源,建立工業(yè)控制裝置中作業(yè)、流程的任務(wù)狀態(tài); (2)、建立不同任務(wù)狀態(tài)之間的切換條件; (3)、建立每個(gè)任務(wù)狀態(tài)下的二級(jí)任務(wù)群的登記表; (4)、啟動(dòng)多狀態(tài)調(diào)度器并進(jìn)入第一種任務(wù)狀態(tài); (5)、建立第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群,將二級(jí)任務(wù)群登錄到第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群的登記表中,其中所述的二級(jí)任務(wù)群中的任務(wù)包括高優(yōu)先級(jí)的二級(jí)任務(wù)、相同優(yōu)先級(jí)的二級(jí)任務(wù)和需 要?jiǎng)儕Z內(nèi)核的二級(jí)任務(wù); (6)、二級(jí)多任務(wù)調(diào)度器進(jìn)行二級(jí)任務(wù)群調(diào)度并運(yùn)行該二級(jí)任務(wù)群中的任務(wù); (7)、當(dāng)所述二級(jí)任務(wù)群中的任務(wù)運(yùn)行到第二種任務(wù)狀態(tài)所需要的切換條件時(shí),則開始建立第二種任務(wù)狀態(tài)的二級(jí)任務(wù)群,并將二級(jí)任務(wù)群登錄到第二種任務(wù)狀態(tài)下的二級(jí)任務(wù)群的登記表中,二級(jí)多任務(wù)調(diào)度器進(jìn)行二級(jí)任務(wù)群調(diào)度并運(yùn)行該二級(jí)任務(wù)群中的任務(wù);當(dāng)所述二級(jí)任務(wù)群中的任務(wù)運(yùn)行到第三種任務(wù)狀態(tài)所需要的切換條件時(shí),則開始建立第三種任務(wù)狀態(tài)的二級(jí)任務(wù)群,依次循環(huán)直至完成工業(yè)控制的作業(yè)和流程。
3.根據(jù)權(quán)利要求1所述的一種多任務(wù)操作環(huán)境狀態(tài)的計(jì)算機(jī)調(diào)度方法,其特征在于:所述二級(jí)多任務(wù)調(diào)度器的調(diào)度步驟如下: (1)、初始化第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群所需的堆棧、內(nèi)存; (2)、初始化并啟動(dòng)第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)群所需的輸入輸出硬件設(shè)備; (3)、建立任務(wù)就緒指針、任務(wù)等待指針和任務(wù)休眠指針,將任務(wù)就緒指針指向第一種任務(wù)狀態(tài)下的二級(jí)任務(wù)登記表; (4)、首先判斷有無就緒的二級(jí)任務(wù),如果沒有,工業(yè)控制裝置休眠;如果有,則二級(jí)多任務(wù)調(diào)度器就會(huì)將就緒二級(jí)任務(wù)的優(yōu)先級(jí)別與當(dāng)前工業(yè)控制裝置正在執(zhí)行的二級(jí)任務(wù)的優(yōu)先級(jí)別進(jìn)行對(duì)比,判斷就緒二級(jí)任務(wù)是高優(yōu)先級(jí)的二級(jí)任務(wù)、相同優(yōu)先級(jí)的二級(jí)任務(wù)還是低優(yōu)先級(jí)的二級(jí)任務(wù),如果是高優(yōu)先級(jí)的二級(jí)任務(wù),則二級(jí)多任務(wù)調(diào)度器控制執(zhí)行就緒二級(jí)任務(wù);如果是相同優(yōu)先級(jí)的二級(jí)任務(wù),則二級(jí)多任務(wù)調(diào)度器在時(shí)間片到達(dá)后控制就緒二級(jí)任務(wù);如果是低優(yōu)先級(jí)的二級(jí)任務(wù),則二級(jí)多任務(wù)調(diào)度器返回當(dāng)前正在執(zhí)行的二級(jí)任務(wù);(5)、當(dāng)步驟(4)選定了需要執(zhí)行的二級(jí)任務(wù)后,如果該二級(jí)任務(wù)是需要?jiǎng)儕Z內(nèi)核的二級(jí)任務(wù),該二級(jí)任務(wù)設(shè)置內(nèi)核鎖定,如果此時(shí)二級(jí)多任務(wù)調(diào)度器需要新就緒二級(jí)任務(wù)調(diào)度時(shí),則二級(jí)多任務(wù)調(diào)度器判斷內(nèi)核鎖定后會(huì)返回執(zhí)行當(dāng)前需要?jiǎng)儕Z內(nèi)核的二級(jí)任務(wù)直至任務(wù)完成,內(nèi)核解鎖后,二級(jí)多任務(wù)調(diào)度器才執(zhí)行新就緒二級(jí)任務(wù); (6)、如果步驟(4)選定的二級(jí)任務(wù)需要等待某一事件觸發(fā)時(shí),則會(huì)加入任務(wù)等待指針的隊(duì)列中,當(dāng)該等待的事件觸發(fā)后,二級(jí)多任務(wù)調(diào)度器將會(huì)使該任務(wù)就緒并執(zhí)行步驟(4),其中所述的事件包括中斷信號(hào)、外圍設(shè)備的觸發(fā)信號(hào)或等待數(shù)據(jù)處理完成信號(hào); (7)、當(dāng)二級(jí)任務(wù)群中的二級(jí)任務(wù)執(zhí)行完成后,就會(huì)輸出狀態(tài)切換條件同時(shí)二級(jí)多任務(wù)調(diào)度器退出工作,輸 出的狀態(tài)切換條件用于啟動(dòng)多狀態(tài)調(diào)度器切換下一個(gè)狀態(tài)。
【文檔編號(hào)】G06F9/48GK104021041SQ201410260884
【公開日】2014年9月3日 申請(qǐng)日期:2014年6月12日 優(yōu)先權(quán)日:2014年6月12日
【發(fā)明者】楊育紅, 蘇偉, 王振華 申請(qǐng)人:山西江河海融科技有限公司