什么是實(shí)時(shí)操作系統(tǒng)?
我們先把這個(gè)詞拆分成兩部分,一個(gè)是實(shí)時(shí)(Real Time),它指的是實(shí)現(xiàn)一個(gè)功能的線程或者一個(gè)任務(wù)必須在一個(gè)確定的時(shí)間內(nèi)完成。而另一個(gè)詞操作系統(tǒng)(OS)則表示一個(gè)控制和管理計(jì)算機(jī)的硬件、軟件并可以合理分配及調(diào)度相應(yīng)資源,以便可以提供給用戶(hù)的程序。那么實(shí)時(shí)操作系統(tǒng)的實(shí)質(zhì)就在于“實(shí)時(shí)性”,它要保證如果有一個(gè)任務(wù)需要執(zhí)行,那么操作系統(tǒng)必須在較短時(shí)間內(nèi)執(zhí)行此任務(wù)。
講到了RTOS,就需要提一嘴我們?cè)谌粘G度胧介_(kāi)發(fā)中經(jīng)常使用的前后臺(tái)系統(tǒng)。該系統(tǒng)由一個(gè)無(wú)限循環(huán)的程序組成,這個(gè)循環(huán)按順序執(zhí)行不同的應(yīng)用模塊(系統(tǒng)的后臺(tái)),由中斷服務(wù)程序處理異步事件(系統(tǒng)的前臺(tái))。一些核心關(guān)鍵操作必須由中斷程序進(jìn)行執(zhí)行,以便可以及時(shí)處理。而由中斷程序提供的信息在對(duì)應(yīng)后臺(tái)程序沒(méi)有順序執(zhí)行到之前,是不會(huì)被處理的,處理的延遲時(shí)間由后臺(tái)程序循環(huán)執(zhí)行的快慢來(lái)決定。
可以看到這種前后臺(tái)系統(tǒng)結(jié)構(gòu)非常簡(jiǎn)潔清晰,但是它的實(shí)時(shí)性主要是靠外部中斷信號(hào),如果軟件規(guī)模變大,處理的模塊變多,變得很難管理,實(shí)時(shí)性也根本難以保障。所以需要一個(gè)機(jī)制可以給予不同任務(wù)優(yōu)先級(jí)的管理,讓優(yōu)先級(jí)更高的任務(wù)可以先獲得資源進(jìn)行處理。于是就有實(shí)時(shí)操作系統(tǒng)的出現(xiàn)。
實(shí)時(shí)操作系統(tǒng)(RTOS)的開(kāi)發(fā)旨在為了讓某些具有時(shí)效性、實(shí)時(shí)性的任務(wù)可以?xún)?yōu)先獲得資源進(jìn)行處理。根據(jù)對(duì)時(shí)間的硬件要求不同,又分為軟實(shí)時(shí)系統(tǒng)和硬實(shí)時(shí)系統(tǒng)。示意圖如下:
如上圖所示,RTOS將任務(wù)分成了不同等級(jí),總是讓優(yōu)先級(jí)更高的任務(wù)先運(yùn)行。同時(shí),中斷優(yōu)先級(jí)最高,可以打斷所有任務(wù),來(lái)處理緊急任務(wù)。
接下來(lái)再介紹一下RTOS的兩個(gè)核心機(jī)制:多任務(wù)和任務(wù)調(diào)度。
1.多任務(wù):
傳統(tǒng)的CPU處理器同時(shí)只能執(zhí)行一個(gè)任務(wù),一個(gè)多任務(wù)OS通過(guò)快速的任務(wù)切換,可以使它在人眼中看起來(lái)好像每個(gè)任務(wù)都在并行執(zhí)行。
2.任務(wù)調(diào)度:
對(duì)于可剝奪型內(nèi)核,優(yōu)先級(jí)高的任務(wù)一旦響應(yīng),就會(huì)剝奪優(yōu)先級(jí)較低的任務(wù)的CPU使用權(quán),從而提高了系統(tǒng)的實(shí)時(shí)響應(yīng)能力。例如FreeRTOS,該操作系統(tǒng)支持搶占式調(diào)度和時(shí)間片調(diào)度。搶占式調(diào)度顧名思義就是任務(wù)一直運(yùn)行直至有比其優(yōu)先級(jí)更高的任務(wù)搶占,來(lái)進(jìn)行任務(wù)切換。而時(shí)間片調(diào)度則是每個(gè)任務(wù)都有相同的優(yōu)先級(jí),每個(gè)任務(wù)會(huì)運(yùn)行固定的時(shí)間片個(gè)數(shù)或者遇到阻塞函數(shù),才會(huì)執(zhí)行切換。
下面通過(guò)一張框圖,來(lái)說(shuō)明一下搶占式調(diào)度如何在RTOS中運(yùn)行。
運(yùn)行過(guò)程描述如下:
1.首先任務(wù)1此時(shí)在運(yùn)行,此時(shí)任務(wù)2準(zhǔn)備就緒,且任務(wù)2比任務(wù)1的優(yōu)先級(jí)高,所有在搶占式調(diào)度器的作用下,任務(wù)2會(huì)搶占任務(wù)1的執(zhí)行。
2.任務(wù)2此時(shí)在運(yùn)行中,運(yùn)行過(guò)程中任務(wù)3進(jìn)入就緒。由于任務(wù)3比任務(wù)2優(yōu)先級(jí)高,任務(wù)3搶占進(jìn)行執(zhí)行。
相信大家已經(jīng)對(duì)實(shí)時(shí)操作系統(tǒng)有了初步的認(rèn)識(shí),本文介紹的內(nèi)容只是冰山一角,如果有興趣的話,可以找一款開(kāi)源RTOS進(jìn)行深入學(xué)習(xí)!