版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、ITRON4 0規(guī)范的實時操作系統(tǒng) NORTi ve基于u ITRON4.0規(guī)范的實時操作系統(tǒng)(NORTi version 4)-12011-03-21 22:45特長高速應答性NORTi是搶占式多任務操作系統(tǒng),當事件發(fā)生時通過基于優(yōu)先度的調(diào)度程序,實時地切換任務。系統(tǒng)內(nèi)核由仔細斟酌過的代碼構(gòu)成,在系統(tǒng)調(diào)用內(nèi)部不必通過查詢,1次即可選擇操作對象,而且中斷屏蔽時間被縮短到以前的一半,能最大限度地發(fā)揮CPU性能。此外,操作系統(tǒng)能夠?qū)雰?yōu)先度高于OS的中斷程序。此時,中斷屏蔽時間無限趨近于零。小型最佳優(yōu)化了TCB(Task Control Clock任務管理模塊)等操作系統(tǒng)內(nèi)部管理模塊大小,不會浪費
2、寶貴的RAM領(lǐng)域1個字節(jié)C語言編寫的內(nèi)核NORTi的大部分源代碼是用容易理解的C語言編寫的,有人認為用C語言編寫的操作系統(tǒng)性能不如匯編語言編寫的操作系統(tǒng),其實并非如此。用C語言編寫的操作系統(tǒng)通過編譯器分配寄存器,可以使用最少的寄存器完成存儲/復原等操作,相應系統(tǒng)就可高速運行。并且,因為應用過的源代碼可以兼容多種CPU,故新版CPU發(fā)布后,馬上就能保證可靠運行。兼容u ITRON4.0與u ITRON3.0兩種規(guī)范日本TRON協(xié)會的u ITRON4.0規(guī)范并不兼容3.0規(guī)范。而在NORTi里不僅支持u ITRON4.0規(guī)范,也實裝了u ITRON3.0規(guī)范的接口。在以前版本中開發(fā)的程序,不經(jīng)修改
3、即可與現(xiàn)系統(tǒng)共存直接使用。完整的u ITRON NORTi中完整的實裝了u ITRON4.0/3.0規(guī)范,并認真地進行了優(yōu)化組合、另外還提供了豐富的同步通信手段(不包括CPU異常處理程序定義)。支持多種處理器/編譯程序/調(diào)試工具由于NORTi支持大部分的1632位處理器,所以即使目標機器不同中,也可以用相同的作法使用NORTi。此外為了支持更多的開發(fā)環(huán)境,MiSPO公司正在與多家開發(fā)工具制造商進行合作,積極地尋求對策。任務的狀態(tài)在NORTi中可并行處理的程序單位稱為任務,任務始終處于NON-EXISTENT(未生成狀態(tài)),DORMANT(停止狀態(tài)),READY(準備狀態(tài)),RUNNING(執(zhí)行
4、狀態(tài)),WAITING(等待狀態(tài)),SUSPENDED(強制等待狀態(tài)),WAITING-SUSPENDED(雙重等待狀態(tài))等7個狀態(tài)的任1狀態(tài)。準備狀態(tài)(READY)因為更高優(yōu)先度處于執(zhí)行狀態(tài),或者相同優(yōu)先級的任務被提前執(zhí)行,而等待的狀態(tài)。執(zhí)行狀態(tài)(RUNNING)任務正在被處理器執(zhí)行的狀態(tài)。處于RUNNING狀態(tài)的任務同時只能存在1個。對于任務而言,READY狀態(tài)和RUNNING狀態(tài)沒有太大的差別,最優(yōu)先的READY任務也可以被稱為RUNNING任務。等待狀態(tài)(WAITING)等待狀態(tài)是指通過自任務呼叫的系統(tǒng)調(diào)用而停止執(zhí)行的狀態(tài)。在事件驅(qū)動的多任務系統(tǒng)中,被啟動的任務大部分的時間都應該處于等
5、待狀態(tài)中。否則,不能利用任務等待的時間執(zhí)行其他的任務。等待狀態(tài)根據(jù)其特點分為以下幾類。起床等待(slp_tsk,tslp_tsk)時間等待(dly_tsk)事件標識(event flag)成立等待(wai_flg,twai_flg)信號(semaphore)獲得等待(wai_sem,twai_sem)排他資源(mutex)獲得等待(loc_mtx,tloc_mtx)信箱(mail box)接收消息(message)等待(rcv_mbx,trcv_mbx)消息緩存(message buffer)發(fā)送消息等待(snd_mbf,tsnd_mbf)消息緩存(message buffer)接收消息等待(
6、rcv_mbf,trcv_mbf)數(shù)據(jù)隊列(data queue)發(fā)送消息等待(snd_dtp,tsnd_dtp)數(shù)據(jù)隊列(data queue)接收消息等待(rcv_dtp,trcv_dtp)會合(rendezvous)呼叫等待(cal_por,tcal_por)會合(rendezvous)應答等待(acp_por,tacp_por)會合(rendezvous)結(jié)束等待(cal_por,tcal_por)可變長內(nèi)存塊(memory block)獲得等待(get_mpl,tget_mpl)固定長內(nèi)存塊(memory block)獲得等待(get_mpf,tget_mpf)強制等待狀態(tài)(SUSP
7、ENDED)任務被其他任務中止執(zhí)行后進入的狀態(tài)。該狀態(tài)被利用的機會很少。設(shè)置的目的主要為了調(diào)試時暫時停止正在執(zhí)行的任務。雙重等待狀態(tài)(WAITING-SUSPENDED)是為了方便管理而分離出來的,其與強制等待狀態(tài)大致相同。只是當任務被其他任務停止時不是處于準備狀態(tài),而是處于等待狀態(tài)。當?shù)却龡l件滿足時,任務從等待狀態(tài)遷移到強制等待狀態(tài),而不是執(zhí)行狀態(tài)。停止狀態(tài)(DORMANT)停止狀態(tài)是指任務沒有被啟動時的狀態(tài)或任務結(jié)束時的狀態(tài),執(zhí)行中的任務即可以被自己呼叫的系統(tǒng)調(diào)用中止,也可以被其他任務強制中止,遷移到停止狀態(tài)。未生成狀態(tài)(NON-EXISTENT)是指任務未被生成的狀態(tài),或任務被刪除的狀態(tài)
8、。任務切換發(fā)生的時機NORTi由于是多任務操作系統(tǒng),當前執(zhí)行的任務可以被切換到更高優(yōu)先度的任務。任務切換發(fā)生的時機有以下4類(1)當前被執(zhí)行任務啟動了優(yōu)先度高于自身的任務,或者解除了更高優(yōu)先度任務的等待。(2)非任務上下文程序(中斷處理程序/中斷服務程序/時間事件處理程序)啟動優(yōu)先度高于當前被執(zhí)行任務的任務,或者解除了更高優(yōu)先度任務的等待。(3)等待狀態(tài)中優(yōu)先度高于當前被執(zhí)行任務的任務因超時(timeout)而被解除了等待。(4)執(zhí)行中的任務自己進入等待狀態(tài),如降低優(yōu)先度時,才能發(fā)生任務切換。對于優(yōu)先度相同或較低時,可以通過rot_rdq和chg_pri等系統(tǒng)調(diào)用將執(zhí)行中的任務回轉(zhuǎn)到等待執(zhí)行隊
9、列的末尾,來實現(xiàn)相同優(yōu)先級的任務間的互相切換。用語目標對象(object)和ID系統(tǒng)調(diào)用的操作對象系統(tǒng)稱為目標對象,為了識別目標對象,通過用戶指定的號碼被稱為ID。在內(nèi)核及軟件模塊的內(nèi)部,用戶不能直接指定的ID稱為目標對象ID。具有ID的目標對象包括:任務、信號、事件標識、信箱、消息緩存、會合用端口、可變長/固定長內(nèi)存池、數(shù)據(jù)隊列、排他資源、周期處理程序、報警處理程序、中斷服務程序等。通過目標對象ID區(qū)分的目標對象包括:中斷處理程序、會合、靜態(tài)生成的中斷服務程序任務上下文(context)直譯為上下文,指系統(tǒng)內(nèi)部某一時刻任務的全體執(zhí)行環(huán)境,稱為該任務的上下文。他是指任務被切換時,系統(tǒng)中被保存/
10、復原對象的總稱。也可以具體解釋為CPU的寄存器狀態(tài)。當在多任務中使用DSP(Digital signal processing數(shù)字信號處理)、浮點小數(shù)運算單元時,其寄存器類也必須進行上下文更換。若NORTi對其不支持時,用戶有必要對浮點運算等進行排他處理。非任務上下文程序中斷處理程序與時間事件處理程序合稱為非任務上下文程序。時間事件處理程序包括周期啟動處理程序、報警處理程序、溢出處理程序3種。(在u ITRON3.0規(guī)范中,非任務上下文程序被稱為任務獨立部分、時間事件處理程序被稱為時間處理程序)。由于非任務上下文程序的各個處理程序并不是任務,因此不能把自任務作為目標對象呼叫系統(tǒng)調(diào)用。調(diào)度(di
11、spatch)選擇執(zhí)行的任務并進行任務切換的過程被稱為調(diào)度。系統(tǒng)調(diào)用包括發(fā)生調(diào)度和不發(fā)生調(diào)度兩種。即使在發(fā)生調(diào)度的系統(tǒng)調(diào)用中,如果剛進入READY狀態(tài)的任務優(yōu)先度低于RUNNING狀態(tài)的優(yōu)先度,也不發(fā)生任務切換。另外,通過非任務上下文程序呼叫的系統(tǒng)調(diào)用發(fā)生調(diào)度時,當系統(tǒng)向任務的上下文還原時再統(tǒng)一執(zhí)行,這被稱為延遲調(diào)度。同步/通信功能同步功能在任務等候協(xié)作時使用,通信功能在任務間傳遞數(shù)據(jù)。由于通信一般都要求同步,因此將同步、通信功能放在一起表述。即使不使用同步通信功能,如果慎重設(shè)計程序,通過使用公用變量,任務間的協(xié)作及數(shù)據(jù)的傳遞也是可能的,但使用OS提供的同步/通信功能更加簡單、安全。在NORT
12、i中定義了信號、事件標識、信箱、消息緩存、會合用端口、數(shù)據(jù)隊列、排他資源等7種具有各自物征的同步通信功能。任務等待隊列對于1個目標對象,當有多個任務要求時,可以將任務排成任務等待隊列。其包括信號獲得等待任務、事件標識成立等待任務、信箱的消息接收等待任務、消息緩存的消息發(fā)送/接收等待任務、端口的會合呼叫/接收等待任務,可變長/固定長內(nèi)存池的內(nèi)存塊獲得等待任務,數(shù)據(jù)隊列送信/受信等待任務,排他資源獲得等待任務等。任務等待隊列原則上為先進先出(FIFO:First In First Out),信號、信箱、消息緩存受信側(cè)、可變長/固定長內(nèi)存池、排他資源等也可以按任務的優(yōu)先度或消息的優(yōu)先度進行排列。消息
13、等待行列(queuing)當對其他任務的要求不被受理時不發(fā)生錯誤,而將要求排成的隊列稱為消息等待隊列。任務的啟動要求、信箱/消息緩存/數(shù)據(jù)隊列的消息都可以被排成等待隊列。啟動任務要求的等待行列通過記錄啟動要求次數(shù)的計數(shù)器實現(xiàn)。信箱消息的等待行列通過指針連接的線型鏈實現(xiàn)。消息緩存/數(shù)據(jù)隊列消息的等待行列通過環(huán)形緩存實現(xiàn)。事件標識和任務異常沒有消息等待行列,他們通過OR運算結(jié)果來決定發(fā)生的事件及保留異常發(fā)生的原因。這種只記錄事件的有無、而不記錄次數(shù)的特征和消息等待隊列是不同的。無等待(polling)和超時(timeout)對于發(fā)生等待的系統(tǒng)調(diào)用,準備了無等待和超時中斷兩種機能。若無等待的系統(tǒng)調(diào)用
14、必須發(fā)生等待的話將產(chǎn)生錯誤。參數(shù)(parameter)與返回值(return parameter)在u ITRON4.0規(guī)范中,從用戶方傳遞過來的數(shù)據(jù)被稱為參數(shù),從系統(tǒng)調(diào)用側(cè)返回的數(shù)據(jù)稱為返回值。在本書中用C來表達一般的參數(shù)。系統(tǒng)調(diào)用的返回值原則上是錯誤代碼(error code),當返回其他值時,需將保存該值的地址指針作為參數(shù)傳遞。系統(tǒng)調(diào)用(system call)和服務程序(service call)通過應用程序調(diào)用系統(tǒng)內(nèi)核及軟件模塊的接口(API)稱為服務程序。內(nèi)核中的服務程序,特稱為系統(tǒng)調(diào)用。排他控制在多任務中,不能被同時訪問的對象可以被復數(shù)的任務訪問。系統(tǒng)中有許多排他(nore-en
15、trant)函數(shù)、公用數(shù)據(jù)等不能被同時利用的對象。為防止這些資源被同時訪問而實行的管理稱為排他控制。通常使用信號(semaphore)或排他資源(mutex)如果通過統(tǒng)一任務的優(yōu)先度,在訪問資源時,不必發(fā)生競爭任務的切換。那么就可以不進行排他控制(統(tǒng)一優(yōu)先度是不進行排他控制的有效手段)。實際上,使用semaphore時,因為經(jīng)常發(fā)生高優(yōu)先度的任務等待低優(yōu)先度任務返回semaphore的這種優(yōu)先度逆轉(zhuǎn)的復雜問題,所以有時暫時提高競爭區(qū)間的優(yōu)先度效果很好。在使用mutex時,有時也可以通過提高任務優(yōu)先度來解決問題,但是當進行排他控制的時間很短的話,通過暫時禁止調(diào)度或禁止中斷,可以簡單地實現(xiàn)排他控制
16、。閑置任務(idle task)閑置任務在其他所有任務停止時被執(zhí)行,在內(nèi)核中也有閑置任務。在用戶程序中,無限循環(huán)的最低優(yōu)先度的任務即為閑置任務。閑置任務雖然什么也不執(zhí)行,但卻有重要意義。在事件驅(qū)動方式的多任務系統(tǒng)中,若閑置任務始終不被執(zhí)行,表示CPU的性能不足或者徒勞耗費CPU資源的任務存在。靜態(tài)錯誤和動態(tài)錯誤從系統(tǒng)調(diào)用中返回的錯誤分為靜態(tài)錯誤和動態(tài)錯誤兩種。靜態(tài)錯誤是由于使用了范圍外ID號碼等異常參數(shù),與系統(tǒng)狀態(tài)無關(guān)而必然發(fā)生的錯誤。當程序調(diào)試完成后將自動消息失。動態(tài)錯誤是指還沒有進入等待隊列的任務被解除等待那樣,與系統(tǒng)的狀態(tài)或定時器(timing)等有關(guān)的錯誤。象polling失敗那樣,用
17、戶也可以編制積極利用動態(tài)錯誤的程序。在NORTi中,為了實現(xiàn)高速化,也內(nèi)置了不檢查靜態(tài)參數(shù)錯誤的程序連接庫。上下文錯誤(context error)有些系統(tǒng)調(diào)用是不能由非任務上下文程序(中斷處理程序和時間事件處理程序)進行調(diào)用的。否則,將從系統(tǒng)調(diào)用返回上下文錯誤。因為這是靜態(tài)的錯誤,所以在不檢查靜態(tài)參數(shù)的程序庫中,不能查出這個錯誤。靜態(tài)API與動態(tài)API在u ITRON4.0規(guī)范中,以大寫字母記述的生成系的系統(tǒng)調(diào)用稱為靜態(tài)API,但OS對其并不直接支持。靜態(tài)API結(jié)構(gòu)在編譯時,由TCB等管理模塊確保其在系統(tǒng)啟動時進行初始化。即在編譯前,需要生成對應靜態(tài)API的代碼,因此在u ITRON4.0規(guī)
18、范中導入了配置程序。NORTi的基礎(chǔ)是生成動態(tài)對象,因此NORTi的配置程序,在初始化時通過將配置文件中的靜態(tài)API替換為通常的動態(tài)API的代碼來實現(xiàn)靜態(tài)API。通用原則系統(tǒng)調(diào)用的名稱ITRON的系統(tǒng)調(diào)用基本上是xxx_yyy類型,xxx是操作方法的省略名,yyy是操作對象的省略名。從xxx_yyy派生的系統(tǒng)調(diào)用,在前面增加1個字母,變?yōu)閦xxx_yyy類型,如在polling的系統(tǒng)調(diào)用前面加p,有timeout的系統(tǒng)調(diào)用前面加t,獨自的系統(tǒng)調(diào)用前面加v數(shù)據(jù)類型的名稱ITRON的數(shù)據(jù)類型全部使用大寫字母,指針類型的名稱為P_,結(jié)構(gòu)體類型的名稱原則上為T_。參數(shù)的名稱在系統(tǒng)調(diào)用的定義中,參數(shù)名稱
19、原則如下p_數(shù)據(jù)地址指針pk_結(jié)構(gòu)體地址指針ppk_結(jié)構(gòu)體地址指針的指針id IDno編號atr屬性cd代碼sz大小(字節(jié)數(shù))cnt個數(shù)ptn位組合模式(bit pattern)i初始值0和負數(shù)的處理在系統(tǒng)調(diào)用的輸入輸出中,多數(shù)情況下0具有特殊的含義,以任務ID為例,用0指定自任務。所謂自任務是指呼叫的系統(tǒng)調(diào)用的操作對象為自身的任務,由于0具有特殊意義,因此ID號碼和優(yōu)先度都是從1開始的,在ITRON規(guī)范中負值與系統(tǒng)有關(guān),如系統(tǒng)調(diào)用的錯誤代碼為負。在u ITRON3.0規(guī)范前,負的ID號碼(-1)(-4)作為系統(tǒng)用被保留,但在u ITRON4.0規(guī)范中已經(jīng)被取消,在NORTi中也不使用。數(shù)據(jù)類
20、型(32位CPU)在IRON中,下列再定義類型由系統(tǒng)調(diào)用使用。INT,UINT為32位。通用的數(shù)據(jù)類型typedef signed char B;帶符號的8位整數(shù)typedef unsigned char UB;無符號的8位整數(shù)typedef short H;帶符號的16位整數(shù)typedef unsigned short UH;無符號的16位整數(shù)typedef long W;帶符號的32位整數(shù)typedef unsigned long UW;無符號的32位整數(shù)typedef char VB類型不定的數(shù)據(jù)(8位大小)typedef short VH類型不定的數(shù)據(jù)(16位大小)typedef lo
21、ng VW;類型不定的數(shù)據(jù)(32位大小)typedef void*VP指向類型不定數(shù)據(jù)的指針typedef void(*FP)();一般為程序的先頭地址IRON特有數(shù)據(jù)類型typedef int INT帶符號的整數(shù)typedef unsigned int UINT無符號的整數(shù)typedef int BOOL布爾值(FALSE(0)或TRUE(1)typedef INT FN;函數(shù)代碼typedef int ID;目標對象的ID代碼typedef int RDVNO;會合(rendezvous)號碼typedef unsigned int ATR;目標對象屬性typedef int ER;錯誤代碼typedef int PRI;任務優(yōu)先度typedef long TMO;超時(timeout)typedef int ER_ID;錯誤代碼或目標對象ID號碼typedef long DLYTIME;延遲時間typedef unsigned int STAT;目標對象的狀態(tài)typedef unsigned int MODE;服務程序的動作模式typedef unsign
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 6930-2024滾動軸承詞匯
- 法律法規(guī)經(jīng)濟與施工-二級注冊建筑師《法律、法規(guī)、經(jīng)濟與施工》押題密卷2
- 建筑裝飾裝修工程設(shè)計制圖標準
- 人教版語文一年級上冊全冊電子備課教案
- 高一化學教案:第一單元核外電子排布與周期律
- 2024屆湖北省黃梅縣某中學高考化學必刷試卷含解析
- 2024高中物理第三章相互作用4力的合成課后作業(yè)含解析新人教版必修1
- 2024高中語文考點鏈接6論述類文本閱讀提升訓練含解析新人教版必修5
- 2024高考化學一輪復習第9章化學實驗基礎(chǔ)第30講物質(zhì)的分離和提純精練含解析
- 2024高考化學一輪復習第四章第5課時氨和銨鹽教案魯科版
- 植皮的觀察與護理課件整理
- 第二版《高中物理題型筆記》上冊
- 水利工程實驗室量測作業(yè)指導書
- 人教數(shù)學七年級下全冊同步練習-初中數(shù)學七年級下冊全冊同步練習題(含答案)
- 部編版初中語文七至九年級語文教材各冊人文主題與語文要素匯總一覽表合集單元目標能力點
- 工程項目收入情況統(tǒng)計表
- GB/T 29490-2013企業(yè)知識產(chǎn)權(quán)管理規(guī)范
- 《中外資產(chǎn)評估準則》課件第6章 英國評估準則
- FZ∕T 63006-2019 松緊帶
- 罐區(qū)自動化系統(tǒng)總體方案(31頁)ppt課件
- 工程建設(shè)項目內(nèi)外關(guān)系協(xié)調(diào)措施
評論
0/150
提交評論