【正文】
第 10章 RTX51實時操作系統(tǒng) 主要內(nèi)容 ? 操作系統(tǒng)基本概念 ? RTX51系統(tǒng)特點 ? RTX51的程序結(jié)構(gòu) ? RTX51的功能函數(shù) ? RTX51的任務(wù)調(diào)度 ? RTX51的系統(tǒng)配置 ? RTX51的應(yīng)用舉例 操作系統(tǒng)基本概念 前后臺系統(tǒng) ? 前后臺系統(tǒng)的組成:前臺和后臺程序 ? 后臺: 是一個無限循環(huán)的應(yīng)用程序,循環(huán)中調(diào)用相應(yīng)的任務(wù)函數(shù)完成相應(yīng)的操作,各個任務(wù)依次運行,沒有調(diào)度,運行的次序不能改變。 ? 前臺: 是中斷服務(wù)程序,處理異步事件。 任 務(wù) 1任 務(wù) 2任 務(wù) 2任 務(wù) n任 務(wù) nI S R 3I S R 2I S R 1后 臺前 臺?適用情形: ? 一般不復(fù)雜且實時性要求不高的小系統(tǒng)很適合采用前后臺系統(tǒng),例如微波爐、電話機、玩具等。 ? 在另外一些基于省電的應(yīng)用中,由于平時微處理器處在停機狀態(tài),所有的事都靠中斷服務(wù)來完成,因此也常常采用前后臺系統(tǒng)模式。 操作系統(tǒng) 操作系統(tǒng)( Operating System,簡稱 OS)是計算機中最基本的程序。操作系統(tǒng)負(fù)責(zé)計算機系統(tǒng)中全部軟、硬資源的分配以及回收、控制與協(xié)調(diào)等并發(fā)的活動;操作系統(tǒng)提供用戶接口,使用戶獲得良好的工作環(huán)境;操作系統(tǒng)為用戶擴展新的系統(tǒng)功能提供軟件平臺。 操作系統(tǒng)的主要包括四大功能: ?處理機管理:解決 CPU的分時復(fù)用。 ?存儲管理:配合 CPU調(diào)度內(nèi)存。 ?設(shè)備管理:分配外設(shè)的使用,包括獨享、共享和虛擬。 ?軟件資源管理:解決程序和信息的存取和管理等問題。 實時操作系統(tǒng)( RTOS)是指當(dāng)外界事件或數(shù)據(jù)產(chǎn)生時,能夠接受并以 足夠快的速度 予以處理,其處理的結(jié)果又能在規(guī)定的時間 之內(nèi)來控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)作出快速響應(yīng),并控制所有實時任務(wù)協(xié)調(diào)一致運行的操作系統(tǒng)。 用戶的應(yīng)用程序是運行于 RTOS之上的各個任務(wù), RTOS根據(jù)各個任務(wù)的要求,進(jìn)行資源(包括存儲器、外設(shè)等)管理、消息管理、任務(wù)調(diào)度和異常處理等工作。 實時多任務(wù)操作系統(tǒng),以分時方式運行多個任務(wù),看上去好像是多個任務(wù) “ 同時 ” 運行。任務(wù)之間的切換應(yīng)當(dāng)以優(yōu)先級為根據(jù),只有具有 優(yōu)先服務(wù)方式 的 RTOS才是真正的實時操作系統(tǒng),而時間分片方式和協(xié)作方式的 RTOS并不是真正的“ 實時 ” 。 實時操作系統(tǒng) 臨界區(qū) ? 臨界資源:任何時候都只允許一個任務(wù)訪問的資源。 ? 臨界區(qū)或臨界段:用于訪問臨界資源的代碼段。 ? 臨界代碼段 不允許多個并發(fā)任務(wù)交叉執(zhí)行 ,否則會產(chǎn)生嚴(yán)重后果,比如進(jìn)入中斷后的現(xiàn)場保護(hù)代碼等。 ? 為確保臨界區(qū)代碼的安全執(zhí)行,在進(jìn)入臨界區(qū)之前要關(guān)中斷,而臨界區(qū)代碼執(zhí)行完以后要立即開中斷 程序運行時可使用的軟、硬件環(huán)境統(tǒng)稱為資源。資源可以是輸入 /輸出設(shè)備,例如打印機、鍵盤和顯示器;資源也可以是一個變量、一個結(jié)構(gòu)或一個數(shù)組等。 共享資源就是指可以被一個以上任務(wù)使用的資源。為防止數(shù)據(jù)被破壞,每個任務(wù)在與共享資源打交道時,必須獨占該資源,這叫 互斥 。 資源與共享資源 任務(wù),也稱為線程,是一個簡單的程序。一般地,每個任務(wù)都是一個無限的循環(huán)。 任務(wù)有五種狀態(tài):休眠態(tài)、就緒態(tài)、運行態(tài)、掛起態(tài)(等待某一事件發(fā)生)和被中斷態(tài)。任何時刻,一個任務(wù)都處于這五種狀態(tài)之一的狀態(tài)下。 休眠態(tài) 相當(dāng)于該任務(wù)駐留在內(nèi)存中,但并不被多任務(wù)內(nèi)核所調(diào)度。 就緒態(tài) 意味著該任務(wù)已經(jīng)準(zhǔn)備好,可以運行了,但由于該任務(wù)的優(yōu)先級比正在運行的任務(wù)的優(yōu)先級低,還暫不能運行 。 運行態(tài) 的任務(wù)是指該任務(wù)掌握了 CPU的控制權(quán),正在運行。 掛起態(tài) 指該任務(wù)在等待,等待某一事件的發(fā)生。被中斷狀態(tài) 是指,發(fā)生中斷時, CPU提供相應(yīng)的中斷服務(wù),原來正在運行的任務(wù)暫不能運行,就進(jìn)入了被中斷狀態(tài)。 任務(wù) 內(nèi)核與任務(wù)切換 ?內(nèi)核 內(nèi)核是操作系統(tǒng)最基本的部分。多任務(wù)系統(tǒng)中,內(nèi)核負(fù)責(zé)管理各個任務(wù),或者說為每個任務(wù)分配 CPU時間,并且內(nèi)核決定一個程序在什么時候?qū)δ巢糠钟布僮鞫嚅L時間。內(nèi)核負(fù)責(zé)任務(wù)之間的通信,它提供的基本服務(wù)是任務(wù)切換。 ?任務(wù)切換 當(dāng)多任務(wù)內(nèi)核決定運行另外的任務(wù)時,保存正在運行任務(wù)的當(dāng)前狀態(tài),即保存 CPU寄存器中的全部內(nèi)容。這些內(nèi)容保存在任務(wù)的當(dāng)前狀態(tài)保存區(qū),也就是任務(wù)自己的棧區(qū)之中。入棧工作完成以后,就把下一個將要運行的任務(wù)的當(dāng)前狀態(tài)從任務(wù)的棧中重新裝入 CPU的寄存器,并開始下一個任務(wù)的運行。這個過程就稱為任務(wù)切換。 任 務(wù) 1 任 務(wù) 3 任 務(wù) 2 T C Bs t a t u ss pp r i o r i t y...T C Bs t a t u ss pp r i o r i t y...T C Bs t a t u ss pp r i o r i t y...C P U 存 儲 器s p...存 儲 器C P U寄存器內(nèi)容多任務(wù)切換示意圖 調(diào)度是內(nèi)核的主要職責(zé)之一,調(diào)度就是決定該輪到哪個任務(wù)運行了。任務(wù)的調(diào)度方式有基于時間片輪轉(zhuǎn)的調(diào)度和基于優(yōu)先級的調(diào)度。多數(shù)實時系統(tǒng)是基于優(yōu)先級調(diào)度法的。基于優(yōu)先級的調(diào)度法指 CPU總是讓處于就緒態(tài)的優(yōu)先級最高的任務(wù)先運行。至于何時讓高優(yōu)先級任務(wù)掌握 CPU的使用權(quán),有兩種不同的情況。 占先式調(diào)度;非占先式調(diào)度。 調(diào)度 ?占先式調(diào)度 任何時候具有最高優(yōu)先級且已就緒的任務(wù)先執(zhí)行。一個正在執(zhí)行的任務(wù)放棄處理器的條件為:自愿放棄處理器(等待資源或執(zhí)行完畢);有高優(yōu)先級任務(wù)啟動,該高優(yōu)先級任務(wù)將搶占其執(zhí)行。當(dāng)一個運行著的任務(wù)使一個比它優(yōu)先級更高的任務(wù)進(jìn)入了就緒狀態(tài)時,當(dāng)前任務(wù)的 CPU