版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、,實時操作系統(tǒng)ucOS,目標: 本章向?qū)W員介紹操作系統(tǒng)基本概念,通過 本課的學(xué)習(xí),學(xué)員應(yīng)該掌握如下知識: 操作系統(tǒng)概述 操作系統(tǒng)基本概念,學(xué)時:1.5,一.凡從事嵌入式系統(tǒng)開發(fā)工作的人,必須對嵌入式操作系統(tǒng)有足夠的了解。 二.對于初學(xué)者,從C/OS-II開始是個明智的選擇。 1. C/OS-II麻雀雖小,卻五臟基本全(它是個微內(nèi)核) 2.可以學(xué)習(xí)實時系統(tǒng)的一些編程技巧。 3.可以把在學(xué)校中學(xué)到的操作系統(tǒng)抽象概念具體化。 4.具有很強的實用性。 5.學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)應(yīng)用的好例子。,7.1 實時系統(tǒng)概述,7.1.1 操作系統(tǒng)基本功能,操作系統(tǒng),處理器的管理,存儲管理,網(wǎng)絡(luò)和通信的管理,總之,需要一大堆
2、表,7.2 實時系統(tǒng)概述,實時系統(tǒng)與非實時系統(tǒng)的本質(zhì)區(qū)別就在于實時系統(tǒng)中的任務(wù)都有時間限制。,時間限制有兩種:一種是任務(wù)的周期性,按一定周期啟動執(zhí)行的任務(wù)稱為周期性任務(wù)。而隨機啟動執(zhí)行的任務(wù)稱為非周期性任務(wù)。另一種時間限制為時限,即要求任務(wù)在規(guī)定時間內(nèi)完成。,7.2.1 實時系統(tǒng)重要參數(shù),系統(tǒng)發(fā)出處理要求到系統(tǒng)給出應(yīng)答信號的時間,數(shù)據(jù)有效等待時間,任務(wù)之間切換而使用的時間,計算機接收到中斷信號到操作系統(tǒng)作出響應(yīng),并完成轉(zhuǎn)入中斷服務(wù)程序的時間,在一給定時間內(nèi),系統(tǒng)可以處理的事件總數(shù),7.2.2 多任務(wù)系統(tǒng),簡單地說,就是能用一個處理器 并發(fā)(注意,不是同時! ) 地運行多個程序的計算機管理系統(tǒng)。
3、,并發(fā):由同一個處理器輪換地運行多個程序?;蛘哒f是由多個 程序輪班地占用處理器這個資源。 且在占用這個資源期間,并不一定能夠把程序運行完畢。,并發(fā)過程 示意圖,處理器如何進行程序的 切換?,7.2.3 使用實時操作系統(tǒng)的必要性,嵌入式實時操作系統(tǒng)在目前的嵌入式應(yīng)用中用得越來越廣泛,尤其在功能復(fù)雜、系統(tǒng)龐大的應(yīng)用中顯得愈來愈重要。在嵌入式應(yīng)用中,只有把CPU嵌入到系統(tǒng)中,同時又把操作系統(tǒng)嵌入進去,才是真正的計算機嵌入式應(yīng)用。使用實時操作系統(tǒng)主要有以下幾個因素: 嵌入式實時操作系統(tǒng)提高了系統(tǒng)的可靠性。 提高了開發(fā)效率,縮短了開發(fā)周期。 嵌入式實時操作系統(tǒng)充分發(fā)揮了CPU的多任務(wù)潛力。,7.2.4
4、實時操作系統(tǒng)的優(yōu)缺點,優(yōu)點:在嵌入式實時操作系統(tǒng)環(huán)境下開發(fā)實時應(yīng)用程序使程序的設(shè)計和擴展變得容易,不需要大的改動就可以增加新的功能。通過將應(yīng)用程序分割成若干獨立的任務(wù)模塊,使應(yīng)用程序的設(shè)計過程大為簡化;而且對實時性要求苛刻的事件都得到了快速、可靠的處理。通過有效的系統(tǒng)服務(wù),嵌入式實時操作系統(tǒng)使得系統(tǒng)資源得到更好的利用。,缺點:但是,使用嵌入式實時操作系統(tǒng)還需要額外的ROM/RAM開銷,25%的CPU額外負荷,以及內(nèi)核的費用。,思考:嵌入式系統(tǒng)任務(wù)的典型結(jié)構(gòu),由于嵌入式系統(tǒng)完成的是對一個裝置或設(shè)備的控制任務(wù),任務(wù)的功能相對固定,因此在一般情況下系統(tǒng)支持的典型任務(wù)是一個無限循環(huán)結(jié)構(gòu),C語言任務(wù)結(jié)構(gòu)
5、如下:void mytask(void *pdata)for(;)用戶編寫的代碼;從任務(wù)的代碼來看,任務(wù)實質(zhì)上就是一個返回為void的函數(shù),并在函數(shù)無限循環(huán)中完成用戶的工作,那么,用戶應(yīng)用程序如何來響應(yīng)用戶的一些外部異步事件呢?,7.3 操作系統(tǒng)的基本概念,代碼的臨界段也稱為臨界區(qū),指處理時不可分割的代碼,運行這些代碼不允許被打斷。一旦這部分代碼開始執(zhí)行,則不允許任何中斷打入。為確保臨界區(qū)代碼的執(zhí)行,在進入臨界區(qū)之前要關(guān)中斷,而臨界區(qū)代碼執(zhí)行完成以后要立即開中斷。,代碼的臨界段,7.3 操作系統(tǒng)的基本概念(續(xù)),共享資源,可以被一個以上任務(wù)使用的資源叫做共享資源。為了防止數(shù)據(jù)被破壞,每個任務(wù)在
6、與共享資源打交道時,必須獨占該資源,這叫做互斥。,訪問共享資源之前申請信號量,其它任務(wù)訪問受阻 而不能使用共享資源,得到允許后,才能使用共享資源,7.3 操作系統(tǒng)的基本概念(續(xù)),任務(wù)的優(yōu)先級,每個任務(wù)都有其優(yōu)先級(priority),分為靜態(tài)優(yōu)先級和動態(tài)優(yōu)先級兩種。 應(yīng)用程序執(zhí)行過程中諸任務(wù)優(yōu)先級不變,則稱之為靜態(tài)優(yōu)先級。在靜態(tài)優(yōu)先級系統(tǒng)中,諸任務(wù)以及它們的時間約束在程序編譯時是已知的。 應(yīng)用程序執(zhí)行過程中,如果任務(wù)的優(yōu)先級是可變的,則稱之為動態(tài)優(yōu)先級。,任務(wù)執(zhí)行時的順序,7.3 操作系統(tǒng)的基本概念(續(xù)),調(diào)度,新任務(wù),調(diào)度就是決定該輪到哪個任務(wù)運行了,執(zhí)行,7.3 操作系統(tǒng)的基本概念(續(xù))
7、,調(diào)度的時間及方式,當一個新的任務(wù)被創(chuàng)建時,是執(zhí)行新任務(wù)還是繼續(xù)執(zhí)行父任務(wù)? 當一個任務(wù)運行完畢時; 當一個任務(wù)由于I/O、信號量或其他的某個原因被阻塞時; 當一個I/O中斷發(fā)生時,表明某個I/O操作已經(jīng)完成,而等待該I/O操作的任務(wù)轉(zhuǎn)入就緒狀態(tài); 在分時系統(tǒng)中,當一個時鐘中斷發(fā)生時。,不可搶占(non-preemptive)調(diào)度方式:一個進程若被選中就一直運行下去,直到它被阻塞(I/O,或正在等待其他進程),或主動地交出CPU。 可搶占(preemptive)調(diào)度方式:當一個進程在運行時,調(diào)度程序可以打斷它。另外,在其他一些情形下,如就緒隊列中有新進程的優(yōu)先級高于當前正運行的進程,也可能立即
8、進行調(diào)度。,7.3 操作系統(tǒng)的基本概念(續(xù)),非占先式(不可剝奪型),非占先式(non-preemptive) 非占先式內(nèi)核要求每個任務(wù)自我放棄CPU的所有權(quán)。非占先式調(diào)度法也稱作合作型多任務(wù),各個任務(wù)彼此合作共享一個CPU。異步事件還是由中斷服務(wù)來處理。中斷服務(wù)可以使一個高優(yōu)先級的任務(wù)由掛起狀態(tài)變?yōu)榫途w狀態(tài)。但中斷服務(wù)以后控制權(quán)還是回到原來被中斷了的那個任務(wù),直到該任務(wù)主動放棄CPU的使用權(quán)時,那個高優(yōu)先級的任務(wù)才能獲得CPU的使用權(quán)。,7.3 操作系統(tǒng)的基本概念(續(xù)),占先式(可剝奪型),占先式(preemptive)也稱為可剝奪型 當系統(tǒng)響應(yīng)時間很重要時,要使用占先式內(nèi)核。因此絕大多數(shù)商
9、業(yè)上銷售的實時內(nèi)核都是占先式內(nèi)核。最高優(yōu)先級的任務(wù)一旦就緒,總能得到CPU的控制權(quán)。當一個運行著的任務(wù)使一個比它優(yōu)先級高的任務(wù)進入了就緒狀態(tài),當前任務(wù)的CPU使用權(quán)就被剝奪了,或者說被掛起了,那個高優(yōu)先級的任務(wù)立刻得到了CPU的控制權(quán)。如果是中斷服務(wù)子程序使一個高優(yōu)先級的任務(wù)進入就緒態(tài),中斷完成時,中斷了的任務(wù)被掛起,優(yōu)先級高的那個任務(wù)開始運行。,可重入函數(shù),可以被一個以上的任務(wù)調(diào)用,而不必擔心數(shù)據(jù)的破壞??芍厝胄秃瘮?shù)任何時候都可以被中斷,一段時間以后又可以運行,而相應(yīng)數(shù)據(jù)不會丟失??芍厝胄秃瘮?shù)最好只使用局部變量,即變量保存在CPU寄存器中或堆棧中。,一個不可重入型函數(shù)的例子 int Temp
10、; void swap (int *x,int*y) Temp=*x; *X=*Y; *y=Temp; 一個可重入型函數(shù)的例子 void swap (int *x,int*y) int Temp; Temp=*x; *X=*Y; *y=Temp; ,使用以下技術(shù)之一即可使Swap()函數(shù)具有可重入性: 1.把Temp定義為局部變量 2.調(diào)用Swap()函數(shù)之前關(guān)中斷,調(diào)動后再開中斷 3.用信號量禁止該函數(shù)在使用過程中被再次調(diào)用 如果中斷發(fā)生在Swap()函數(shù)調(diào)用之前或調(diào)用之后,兩個任務(wù)中的X,Y值都會是正確的。,7.3 操作系統(tǒng)的基本概念(續(xù)),死鎖,死鎖(deadlock) 指兩個任務(wù)無限期
11、地互相等待對方控制著的資源。設(shè)任務(wù)T1正獨享資源R1 ,任務(wù)T2正獨享資源R2,此時任務(wù)T1又要使用資源R2,任務(wù)T2也要使用資源R1,于是兩個任務(wù)都無法繼續(xù)執(zhí)行了。,防止死鎖的方法 1)先得到全部需要的資源,再做下一步的工作; 2)用同樣的順序申請多個資源; 3)釋放資源時,使用相反的順序; 4)使用等待超時。,7.3 操作系統(tǒng)的基本概念(續(xù)),中斷,中斷是一種硬件機制,通知CPU有個異步事件發(fā)生了。 中斷一旦被識別,CPU保存部分或全部現(xiàn)場(context)后跳轉(zhuǎn)到中斷服務(wù)子程序(ISR) ,ISR結(jié)束后可返回到: 在前/后臺系統(tǒng)中,返回到后臺程序; 對不可剝奪型內(nèi)核,返回到被中斷了的任務(wù)
12、; 對可剝奪型內(nèi)核,返回到就緒狀態(tài)優(yōu)先級最高的任務(wù)。 中斷使得CPU可以在事件發(fā)生時才進行處理,而不必讓CPU不斷地查詢是否有事件發(fā)生。 通過開/關(guān)中斷可以讓CPU響應(yīng)或不響應(yīng)中斷。 在實時環(huán)境應(yīng)注意不要使關(guān)中斷時間過長。,7.3 操作系統(tǒng)的基本概念(續(xù)),時鐘節(jié)拍,時鐘節(jié)拍(clock tick)是特定的周期性中斷,是實時內(nèi)核的心臟。 中斷之間的時間間隔取決于系統(tǒng)實時性要求,一般為10-200ms。 時鐘節(jié)拍率越快,系統(tǒng)的額外開銷就越大。,7.3 操作系統(tǒng)的基本概念(續(xù)),任務(wù)代碼,任務(wù)堆棧,內(nèi)存,處理器,處理器通過兩個指針寄存器(PC和SP)來與任務(wù)代碼和任務(wù)堆棧建立聯(lián)系并運行它,寄存器組
13、,運行環(huán)境包括了兩部分:處理器中的運行環(huán)境和內(nèi)存中的運行環(huán)境,7.3 操作系統(tǒng)的基本概念(續(xù)),7.3.1 多任務(wù)運行時的問題,處理器,?,當有多個任務(wù)時,處理器中的運行環(huán)境應(yīng)該怎么辦?,寄存器組,程序運行環(huán)境,7.3.2 多任務(wù)運行時的問題處理,程序,在內(nèi)存中為每個任務(wù)創(chuàng)建一個虛擬的處理器,由操作系統(tǒng)的調(diào)度器按某種規(guī)則來進行這兩個復(fù)制工作,寄存器組,寄存器組,也就是說,任務(wù)的切換是 任務(wù)運行環(huán)境的切換,7.3.3 虛擬處理器,虛擬處理器應(yīng)該存儲的主要信息: 1. 程序的斷點地址(PC) 2. 任務(wù)堆棧指針(SP) 3. 程序狀態(tài)字寄存器(PSW) 4. 通用寄存器內(nèi)容 5. 函數(shù)調(diào)用信息(已
14、存在于堆棧),另外再用一個數(shù)據(jù)結(jié)構(gòu)保存任務(wù)堆棧 指針(SP),這個數(shù)據(jù)結(jié)構(gòu)叫做任務(wù) 控制塊,它除了保存任務(wù)堆棧指針之 外還要負責保存任務(wù)其他信息。,這些內(nèi)容通常保存在任務(wù)堆棧中,這些內(nèi)容也常叫做任務(wù)的上下文。,任務(wù)控制塊是由操作系統(tǒng)另行構(gòu)造的一個數(shù)據(jù)結(jié)構(gòu),每個任務(wù)都有一個。,任務(wù)控制塊結(jié)構(gòu)的主要成員 typedef struct os_tcb OS_STK *OSTCBStkPtr; /指向任務(wù)堆棧棧頂?shù)闹羔?INT8U OSTCBStat;/任務(wù)的當前狀態(tài)標志 INT8U OSTCBPrio; /任務(wù)的優(yōu)先級別 OS_TCB;,其實,程序切換的關(guān)鍵是 把程序的私有堆棧指針賦 予處理器的堆棧指針SP,要建立一個概念:具有 控制塊的程序才是一個 可以被系統(tǒng)所運行的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年廣西醫(yī)科大學(xué)公開招聘項目聘用制工作人員備考題庫(七)及答案詳解一套
- 2026年四川天府新區(qū)華陽社區(qū)衛(wèi)生服務(wù)中心(第四次)編外人員招聘的備考題庫及一套完整答案詳解
- 2026年天津市共航城市建設(shè)發(fā)展有限公司面向社會公開招聘備考題庫完整答案詳解
- 2026年關(guān)于公開招聘專職人民調(diào)解員的備考題庫參考答案詳解
- 2026年云南省紅河州和信公證處招聘備考題庫及答案詳解參考
- 2026年中央國家機關(guān)某部委所屬事業(yè)單位招聘高校畢業(yè)生備考題庫及參考答案詳解一套
- 2026年廣安市中醫(yī)醫(yī)院招聘8人備考題庫含答案詳解
- 疾控采購內(nèi)控制度
- 醫(yī)保報銷內(nèi)控制度
- 內(nèi)控控制制度手冊
- 2025-2026學(xué)年教科版三年級科學(xué)上冊期末階段綜合培優(yōu)卷
- 電子數(shù)據(jù)取證分析師安全培訓(xùn)水平考核試卷含答案
- 上海市園林工程估算指標(SHA2-12-2025)
- 涉水工程影響國家基本水文測站影響評價分析報告
- 2026中國石油大學(xué)(北京)非教師崗位招聘24人筆試模擬試題及答案解析
- 門診年度總結(jié)
- 沈陽盛京軍勝農(nóng)業(yè)發(fā)展科技有限公司及所屬企業(yè)2025年面向社會招聘備考題庫帶答案詳解
- 入駐直播協(xié)議書
- 2025年監(jiān)理工程師考試案例分析(土木建筑)真題答案(完整版)
- 2025 新能源電力交易實戰(zhàn)指南
- 血液凈化中心(透析室)年度述職報告
評論
0/150
提交評論