1、無(wú)操作系統(tǒng)的程序中,通常就是一個(gè)main()函數(shù),所有的操作都在這個(gè)函數(shù)里面順序、無(wú)限重復(fù)的運(yùn)行,如果要實(shí)現(xiàn)多個(gè)模塊功能,就只能按照先后順序一個(gè)一個(gè)的執(zhí)行,即便把某些功能用中斷的方式實(shí)現(xiàn),排在后面的程序段也會(huì)因?yàn)榍懊娉绦蚨蔚膱?zhí)行,造成很長(zhǎng)的延時(shí),在多個(gè)模塊需要及時(shí)響應(yīng)時(shí),就會(huì)很難進(jìn)行比較合理的設(shè)計(jì)。
2、μC/OS實(shí)時(shí)系統(tǒng)的基本原理:
(1)把需要實(shí)現(xiàn)的功能細(xì)分成多個(gè)子模塊,稱為“任務(wù)”。
(2)設(shè)置一個(gè)系統(tǒng)定時(shí)器,每隔一個(gè)固定的時(shí)間間隔,進(jìn)行一次任務(wù)切換(不需要等任務(wù)完全執(zhí)行完一遍,只要定時(shí)到了,就切換到下一個(gè)任務(wù))。
(3)定時(shí)器的時(shí)間間隔設(shè)置合理,一般為ms級(jí),這樣在一個(gè)比較長(zhǎng)的時(shí)間段內(nèi)(秒或分級(jí)),從宏觀上看,所有的任務(wù)看起來(lái)都在執(zhí)行,從而實(shí)現(xiàn)“實(shí)時(shí)”的效果。
(4)不同的任務(wù)有不同的優(yōu)先級(jí)次,優(yōu)先級(jí)高的會(huì)先執(zhí)行或優(yōu)先執(zhí)行;所有任務(wù)都需要在合理的時(shí)候進(jìn)行一段自身延時(shí),以便讓出CPU使用權(quán),進(jìn)行任務(wù)切換。
3、任務(wù)的構(gòu)成和管理方法:
(1)在無(wú)操作系統(tǒng)的程序里面,要實(shí)現(xiàn)功能模塊的切換,有兩種方法,中斷和跳轉(zhuǎn),但其本質(zhì)都是通過(guò)改變PC和入/出棧的方式來(lái)實(shí)現(xiàn)的。所以任務(wù)的切換實(shí)際上就是對(duì)PC和棧的操作,任務(wù)的管理就是建立一套數(shù)據(jù)結(jié)構(gòu)來(lái)對(duì)多個(gè)任務(wù)的PC、棧數(shù)據(jù)進(jìn)行保存、恢復(fù)、刪除等操作。
(2)第(1)步中說(shuō)到的數(shù)據(jù)結(jié)構(gòu)就是“任務(wù)控制塊”,它不是具體的功能模塊,而是系統(tǒng)管理任務(wù)所需要的數(shù)據(jù)結(jié)構(gòu)(一個(gè)結(jié)構(gòu)體數(shù)據(jù))。一個(gè)“任務(wù)控制塊”就是控制一個(gè)任務(wù)所需的必要信息集合,它包括了任務(wù)函數(shù)的入口地址,任務(wù)函數(shù)的堆棧地址、任務(wù)優(yōu)先級(jí)次等,每個(gè)任務(wù)都有一個(gè)“任務(wù)控制塊”,多個(gè)“任務(wù)控制塊”又形成一個(gè)鏈表,所以它里面還包含了這個(gè)鏈表的前一個(gè)控制塊、后一個(gè)控制塊的地址(指針)數(shù)據(jù),以便于系統(tǒng)對(duì)“控制塊”進(jìn)行查找。
(3)由于每個(gè)任務(wù)都相當(dāng)于一個(gè)main()函數(shù),所以每個(gè)任務(wù)都必須配套一個(gè)棧,用來(lái)保存其運(yùn)行過(guò)程中的寄存器狀態(tài),“任務(wù)控制塊”里面的棧地址就是指向這個(gè)任務(wù)棧的。在第一次進(jìn)入任務(wù)和過(guò)程中切換出去、切換回來(lái),都涉及到對(duì)這個(gè)棧空間的入棧、出棧操作。
(4)任務(wù)調(diào)度器建立兩站表,一張存放任務(wù)對(duì)應(yīng)的“任務(wù)控制塊”地址,一張存放任務(wù)優(yōu)先級(jí),兩張表按照優(yōu)先級(jí)先后順序一一對(duì)應(yīng),任務(wù)需要切換時(shí),調(diào)度器查找“優(yōu)先級(jí)”表中除去當(dāng)前任務(wù)外,最高優(yōu)先級(jí)的任務(wù)優(yōu)先級(jí),然后對(duì)照第一張表,找到這個(gè)任務(wù)的“任務(wù)控制塊”,最后根據(jù)“任務(wù)控制塊”所記錄的任務(wù)信息,進(jìn)行PC跳轉(zhuǎn)、入棧/出棧,實(shí)現(xiàn)切換。
(5)μC/OS系統(tǒng)里面除了任務(wù)切換外,還針對(duì)任務(wù)通信和同步,增加了消息管理機(jī)制;集成了動(dòng)態(tài)內(nèi)存管理模塊。豐富和完善了作為一個(gè)操作系統(tǒng)應(yīng)該具備的基礎(chǔ)架構(gòu)。