PetOS是一個(gè)自行è¨(shè)計(jì)的嵌入å¼å¯¦(shÃ)時(shÃ)æ“作系統(tÇ’ng)。本文介紹了PetOS的技術(shù)背景,并詳細(xì)é—¡è¿°PetOS系統(tÇ’ng)ä¸çš„任務(wù)調(dià o)度機(jÄ«)制ã€ä»»å‹™(wù)ç®¡ç†æ©Ÿ(jÄ«)制以åŠä¸æ–·ç®¡ç†æ©Ÿ(jÄ«)制的實(shÃ)ç¾(xià n)原ç†,指出PetOS在應(yÄ«ng)用ä¸çš„優(yÅu)缺點(diÇŽn)。
1 引言
在嵌入å¼é ˜(lÇng)域ä¸ï¼ŒåµŒå…¥å¼å¯¦(shÃ)時(shÃ)æ“作系統(tÇ’ng)æ£å¾—到越來越廣泛的應(yÄ«ng)用。采用嵌入å¼å¯¦(shÃ)時(shÃ)æ“作系統(tÇ’ng)(RTOS)å¯ä»¥æ›´åˆç†ã€æ›´æœ‰æ•ˆåœ°åˆ©ç”¨CPU 的資æº,簡化應(yÄ«ng)用軟件的è¨(shè)計(jì),縮çŸç³»çµ±(tÇ’ng)開發(fÄ)時(shÃ)é–“,更好地ä¿è‰ç³»çµ±(tÇ’ng)的實(shÃ)時(shÃ)性和å¯é 性。由于RTOS需å 用一定的系統(tÇ’ng)資æºï¼ˆå°¤å…¶æ˜¯RAM 資æºï¼‰,åªæœ‰Î¼C/OS IIã€PalOSç‰å°‘數(shù)實(shÃ)時(shÃ)æ“作系統(tÇ’ng)能在å°RAM 系統(tÇ’ng)上é‹(yùn)行。相å°äºŽÎ¼C/OS II[2]ç‰å•†æ¥(yè)æ“作系統(tÇ’ng),PalOS[1]æ“作系統(tÇ’ng)是完全å…è²»(fèi)çš„æ“作系統(tÇ’ng),具有æºç¢¼å…¬é–‹ã€å…§(nèi)æ ¸ç°¡å–®ç‰çš„特點(diÇŽn)。但該系統(tÇ’ng)䏿”¯æŒä»»å‹™(wù)優(yÅu)先級ã€ä¸æ–·ç‰ç›¸å°å¾©(fù)雜的功能,ä¸èƒ½å¾ˆå¥½çš„æ»¿è¶³åµŒå…¥å¼é›»åè¨(shè)備的需è¦ã€‚
2 PetOS簡介
PalOS是UCLAï¼ˆåŠ å·žå¤§å¸(xué)洛山機(jÄ«)åˆ†æ ¡ï¼‰ç‚ºå‚³æ„Ÿå™¨ç¶²(wÇŽng)絡(luò)而è¨(shè)計(jì)微型æ“系統(tÇ’ng)。系統(tÇ’ng)輪詢æ¯å€‹(gè)任務(wù)的消æ¯éšŠ(duì)列,如果å˜åœ¨æ¶ˆæ¯å‰‡èª¿(dià o)用任務(wù)相應(yÄ«ng)的消æ¯è™•ç†å‡½æ•¸(shù)。但是這種簡單的輪詢機(jÄ«)制和系統(tÇ’ng)çµ(jié)æ§‹(gòu)無法滿足更為復(fù)雜的應(yÄ«ng)用需求。在任務(wù)管ç†ã€ç³»çµ±(tÇ’ng)時(shÃ)é˜ç®¡ç†å’Œä¸æ–·ç®¡ç†ç‰åŠŸèƒ½ä¸Š,PalOSçš„åŠŸèƒ½éƒ½æœ‰å¾…åŠ å¼·(qiáng)。
PetOS以PalOS為原型,改進(jìn)了任務(wù)調(dià o)度算法,引入優(yÅu)先級的概念。æ¯å€‹(gè)任務(wù)坿 ¹æ“š(jù)é‡è¦ç¨‹åº¦çš„ä¸åŒè¢«è³¦äºˆä¸€å®šçš„優(yÅu)先級, CPU總是讓處于就緒態(tà i)çš„ã€å„ª(yÅu)先級最高的任務(wù)å…ˆé‹(yùn)行,從而實(shÃ)ç¾(xià n)任務(wù)的優(yÅu)先級管ç†ã€‚PetOSé‚„æä¾›äº†åš´(yán)æ ¼å„ª(yÅu)先級調(dià o)度模å¼å’Œéžåš´(yán)æ ¼å„ª(yÅu)先級調(dià o)度模å¼ï¼Œç”¨äºŽç·©è§£é«˜å„ª(yÅu)先級任務(wù)æŒçºŒ(xù)被調(dià o)度時(shÃ),低優(yÅu)先級任務(wù)出ç¾(xià n)‘餓æ»â€™çš„ç¾(xià n)象。

圖1 PetOSå…§(nèi)æ ¸æ¡†æž¶
簡單輪詢或者優(yÅu)先級調(dià o)度都無法ä¿è‰ç³»çµ±(tÇ’ng)的實(shÃ)時(shÃ)性。這兩種調(dià o)度都基于事件驅(qÅ«)動,任務(wù)å¿…é ˆå®Œæˆäº‹ä»¶éŸ¿æ‡‰(yÄ«ng)æ‰æœƒåŸ·(zhÃ)行下一輪調(dià o)åº¦ï¼Œå› æ¤ç³»çµ±(tÇ’ng)的實(shÃ)時(shÃ)性會å—到事件響應(yÄ«ng)函數(shù)çš„ç²’åº¦çš„å½±éŸ¿ï¼Œç‚ºäº†å¢žåŠ ç³»çµ±(tÇ’ng)的實(shÃ)時(shÃ)性,PetOSåŠ å…¥äº†ä¸æ–·ç®¡ç†åŠç³»çµ±(tÇ’ng)時(shÃ)é˜ç®¡ç†ï¼Œç”¨äºŽæé«˜ç³»çµ±(tÇ’ng)的實(shÃ)時(shÃ)æ€§ã€‚ä¸æ–·å¯ä»¥ç”±ç¡¬ä»¶ç”¢(chÇŽn)生,也å¯ä»¥ç”±æ‡‰(yÄ«ng)用程åºç”¢(chÇŽn)ç”Ÿã€‚ä¸æ–·ç”¢(chÇŽn)生åŽï¼Œç³»çµ±(tÇ’ng)æœƒåŠæ™‚(shÃ)進(jìn)入䏿–·æ¨¡å¼é€²(jìn)行處ç†ï¼Œå¾žè€Œä¿è‰å¯¦(shÃ)時(shÃ)æ€§è¦æ±‚很高的事務(wù)èƒ½å¾—åˆ°åŠæ™‚(shÃ)的處ç†ã€‚
PetOSå…§(nèi)æ ¸æ¡†æž¶å¦‚åœ–1。
3 PetOS的實(shÃ)ç¾(xià n)
3.1 PETOS任務(wù)ç¶è·(hù)/調(dià o)度模塊
任務(wù)ç¶è·(hù)/調(dià o)度模塊是PetOSçš„æ ¸å¿ƒæ¨¡å¡Š è² (fù)責(zé)任務(wù)的管ç†å’Œèª¿(dià o)度。
·TASK(任務(wù)):
TASK是PetOS應(yÄ«ng)用程åºçš„é‚輯實(shÃ)é«”ï¼Œæ“æœ‰ç¨(dú)立的輸入響應(yÄ«ng)ã€æ¶ˆæ¯éŸ¿æ‡‰(yÄ«ng)和輸出控制,是PetOS的調(dià o)度實(shÃ)體。
PetOS任務(wù)具有如下5個(gè)狀態(tà i):
·UNREGISTER :由于Taskåˆ—è¡¨é‡‡ç”¨éœæ…‹(tà i)數(shù)組,æ¤ç‹€æ…‹(tà i)表示該數(shù)çµ„é …(xià ng)無效
·UNINIT:任務(wù)已經(jÄ«ng)注冊,但是尚未åˆå§‹åŒ–,ä¸å¯åŸ·(zhÃ)行
·STOP:任務(wù)åœæ¢?fà n)顟B(tà i)ã€‚ä¸æŽ¥å—æ¶ˆæ¯ï¼Œä¸å¯åŸ·(zhÃ)行。無數(shù)據(jù)
圖2 PetOS 任務(wù)狀態(tà i)轉(zhuÇŽn)æ›åœ–
·RUN:任務(wù)é‹(yùn)行狀態(tà i)ã€‚èƒ½æŽ¥å—æ¶ˆæ¯ï¼Œå¯ä»¥åŸ·(zhÃ)行
·PAUSE:任務(wù)掛起狀態(tà i):ä¸èƒ½æŽ¥å—消æ¯ï¼Œä¸å¯åŸ·(zhÃ)è¡Œã€‚ä½†ä¿æŒ?jÇn)?shù)據(jù)。
任務(wù)在PetOS啟動時(shÃ)被注冊,并常é§åœ¨æ“作系統(tÇ’ng)ä¸ã€‚峿“作系統(tÇ’ng)åˆå§‹åŒ–完畢并啟動之åŽï¼Œæ“作系統(tÇ’ng)調(dià o)度的任務(wù)列表是固定的。æ“作系統(tÇ’ng)啟動åŽï¼Œä»»å‹™(wù)åªæœƒåœ¨é‹(yùn)è¡Œã€æš«åœã€æŽ›èµ·ç‹€æ…‹(tà i)之å‰åˆ‡æ›ã€‚
任務(wù)狀態(tà i)圖如圖2:
為了方便任務(wù)的管ç†èˆ‡æŽ§åˆ¶ï¼Œæ¯å€‹(gè)TASK都會ç¶å®šTCB(task control block)。TCB類似于ç¾(xià n)代æ“作系統(tÇ’ng)ä¸é€²(jìn)程的PCB,它記錄了taskçš„å„種狀態(tà i)變é‡ã€æŽ§åˆ¶è®Šé‡ä»¥åŠæ¨™(biÄo)準(zhÇ”n)接å£çš„函數(shù)指é‡ï¼Œä¾¿äºŽPetOS和應(yÄ«ng)用程åºç¶è·(hù)。
Event(事件消æ¯ï¼‰:
Event是PetOS進(jìn)程調(dià o)度的粒度單ä½ã€‚
由于PetOSçš„æ¯å€‹(gè)任務(wù)ä¸å…·å‚™ç¨(dú)立的代碼/數(shù)據(jù)段/å †æ£§æŒ‡é‡ï¼Œæˆ‘們無法在任æ„çš„ä½ç½®æš«åœä¸€å€‹(gè)task而啟動å¦ä¸€å€‹(gè)。PetOS的解決ç–略是:將task拆分æˆç‚ºä¸€å€‹(gè)個(gè)ç¨(dú)立的由事件驅(qÅ«)å‹•çš„é‚輯模塊,æ¯å€‹(gè)task都有å„自ç¨(dú)立的事件隊(duì)列。Taskçš„æ¯å€‹(gè)é‚è¼¯åŠŸèƒ½éƒ½æœƒè¢«æ˜ å°„æˆä¸€å€‹(gè)事件,æ“作系統(tÇ’ng)通éŽè³¦äºˆæŸå€‹(gè)task響應(yÄ«ng)事件的權(quán)利來完æˆä¸€æ¬¡èª¿(dià o)度。而æ“作系統(tÇ’ng)的多任務(wù)調(dià o)度å¯ä»¥Task輪æµéŸ¿æ‡‰(yÄ«ng)事件來實(shÃ)ç¾(xià n)。
任務(wù)的調(dià o)度:

圖3調(dià o)度算法æµç¨‹åœ–
在嵌入å¼ç³»çµ±(tÇ’ng)ä¸ï¼Œå¾ˆå¤šæ‡‰(yÄ«ng)ç”¨è¦æ±‚執(zhÃ)行的優(yÅu)先級絕å°å„ª(yÅu)先,比如USB文件傳輸?shù)奶幚怼榇è€çetOS采用了多級任務(wù)機(jÄ«)制,并賦予高優(yÅu)先級的任務(wù)更高的執(zhÃ)行權(quán)é™ã€‚調(dià o)度時(shÃ),PetOs將優(yÅu)先調(dià o)度優(yÅu)先級高的任務(wù)。這種調(dià o)度方å¼ä¿è‰äº†é«˜å„ª(yÅu)先級任務(wù)的實(shÃ)時(shÃ)響應(yÄ«ng),但å¯èƒ½å°Ž(dÇŽo)致低優(yÅu)先級的任務(wù)æ°¸é (yuÇŽn)無法被執(zhÃ)行。為了緩解這種‘餓æ»â€™ç¾(xià n)象,PetOSæä¾›äº†å…©ç¨®å¯é¸çš„é…置:
·嚴(yán)æ ¼å„ª(yÅu)先級調(dià o)度模å¼ï¼šå³ï¼Œè‹¥é«˜å„ª(yÅu)先級的任務(wù)隊(duì)列ä¸å˜åœ¨é‚„有事件未響應(yÄ«ng)的任務(wù),則無æ¢ä»¶åŸ·(zhÃ)行高優(yÅu)先級的任務(wù)。
·éžåš´(yán)æ ¼å„ª(yÅu)先級調(dià o)度模å¼ï¼šå³ï¼Œç•¶(dÄng)高優(yÅu)先級隊(duì)列調(dià o)度一輪éŽåŽï¼Œæ¬¡å„ª(yÅu)先級的任務(wù)隊(duì)列ä¸çš„第一個(gè)待執(zhÃ)行任務(wù)å¯ä»¥å¾—到1次調(dià o)度。調(dià o)度完æˆåŽç¹¼çºŒ(xù)輪詢高優(yÅu)先級隊(duì)列。
å¯ä»¥çœ‹åˆ°å…©è€…çš„å€(qÅ«)別在于:嚴(yán)æ ¼èª¿(dià o)度模å¼å¯ä»¥ä¿è‰é«˜å„ª(yÅu)先級任務(wù)的絕å°å„ª(yÅu)先,但是低級任務(wù)å¯èƒ½å‡ºç¾(xià n)‘餓æ»â€™çš„æƒ…æ³ã€‚而å°äºŽéžåš´(yán)æ ¼èª¿(dià o)度模å¼ï¼Œä¸è«–任務(wù)優(yÅu)å…ˆç´šæœ‰å¤šä½Žï¼Œç¸½èƒ½ä»¥è¼ƒä½Žçš„é »çŽ‡åŸ·(zhÃ)行。
調(dià o)度算法的分æžåŠå„ª(yÅu)化:
在éžåš´(yán)æ ¼æ¨¡å¼ä¸‹ï¼Œè¨(shè)一級ã€äºŒç´šã€ä¸‰ç´štask隊(duì)列的長度分別為N1,N2,N3。則二級隊(duì)列ä¸èª¿(dià o)度一個(gè)任務(wù)需è¦åˆ¤æ–·ä¸€ç´šä»»å‹™(wù)N1次;三級隊(duì)列ä¸èª¿(dià o)度一個(gè)任務(wù)需è¦åœ¨ä¸€ç´šéšŠ(duì)列ä¸åˆ¤æ–·N1×N2次,在二級隊(duì)列ä¸åˆ¤æ–·N2次。在一級二級任務(wù)都很少被執(zhÃ)行,而三級隊(duì)列ä¸çš„任務(wù)消æ¯ç²’度很å°ä¸”執(zhÃ)è¡Œé »çŽ‡å¾ˆé«˜æ™‚(shÃ),任務(wù)調(dià o)度所å 用的系統(tÇ’ng)消耗便會急劇上å‡ã€‚
一種解決方法是:PetOS給æ¯å€‹(gè)消æ¯éšŠ(duì)åˆ—åŠ å…¥äº†32Bitæ¶ˆæ¯æ¨™(biÄo)記ä½ã€‚å…¶ä¸çš„æ¯ä¸€ä½å°æ‡‰(yÄ«ng)一個(gè)該優(yÅu)先級ä¸çš„任務(wù)ã€‚è‹¥æ¶ˆæ¯æ¨™(biÄo)記變é‡çš„æŸä¸€ä½ç‚º1,則代表該ä½å°æ‡‰(yÄ«ng)çš„taskå˜åœ¨å°šæœªéŸ¿æ‡‰(yÄ«ng)的事件;若為0,則表示該級隊(duì)列所有任務(wù)的事件都已經(jÄ«ng)處ç†å®Œç•¢ï¼Œå¯ä»¥èª¿(dià o)度次優(yÅu)先級的任務(wù)。
é€šéŽæ¶ˆæ¯æ¨™(biÄo)記ä½ç–略,若一級二級任務(wù)都ä¸å˜åœ¨éœ€è¦è¢«èª¿(dià o)度的任務(wù),則三級任務(wù)被調(dià o)度一次的代價(jià )åªæ˜¯æŸ¥è©¢ä¸€ç´šã€äºŒç´šä»»å‹™(wù)çš„æ¶ˆæ¯æ¨™(biÄo)記ä½å„一次,從而大大é™ä½Žäº†ç³»çµ±(tÇ’ng)的消耗。
3.2䏿–·ç®¡ç†/定時(shÃ)函數(shù)管ç†
䏿–·ç®¡ç†:
由于PetOS的實(shÃ)時(shÃ)性å—到事件粒度大å°çš„影響,系統(tÇ’ng)éœ€è¦æä¾›ä¸€ç¨®æ›´å¼·(qiáng)有力的實(shÃ)時(shÃ)性ä¿éšœï¼šä¸æ–·ã€‚PetOS䏿–·è™•ç†æ¨¡å¡Šä¸»è¦å®Œæˆä¸æ–·æºçš„判斷ã€ä¸æ–·å‘é‡çš„ç¶è·(hù)以åŠä¸æ–·éŸ¿æ‡‰(yÄ«ng)函數(shù)的調(dià o)度ç‰å·¥ä½œã€‚
PetOS支æŒ64個(gè)䏿–·æº[3]ï¼Œå¹¶å°æ¯å€‹(gè)䏿–·æºæ”¯æŒä¸é™æ•¸(shù)ç›®çš„ä¸æ–·è™•ç†å‡½æ•¸(shù)ï¼Œå› æ¤è©²åˆ—表是一個(gè)é›™å‘éˆè¡¨ï¼Œé‡Œé¢åŒ…æ¶µäº†è©²ä¸æ–·è™Ÿä¸‹çš„䏿–·è™•ç†å‡½æ•¸(shù),定ä½åŽä¾æ¬¡åŸ·(zhÃ)行該éˆè¡¨ä¸çš„函數(shù)。
采用éˆè¡¨æ–¹å¼ç¶è·(hù)䏿–·è™•ç†å‡½æ•¸(shù)å¯ä»¥æ›´åŠ éˆæ´»çš„ç¶è·(hù)䏿–·å‡½æ•¸(shù)列表,但是實(shÃ)éš›ä¸Šï¼Œå¾ˆå¤šä¸æ–·å‡½æ•¸(shù)都是一次性的,比如USB連接響應(yÄ«ng)函數(shù)在被調(dià o)用åŽï¼Œéœ€è¦å°‡è‡ªå·±å¾žè©²ä¸æ–·çš„函數(shù)列表內(nèi)åˆªé™¤ã€‚è€Œæ¤æ™‚(shÃ)ï¼Œä¸æ–·è™•ç†å‡½æ•¸(shù)æ£åœ¨ä½¿ç”¨è©²åˆ—è¡¨ï¼Œé€™æ¨£å°±å¼•èµ·äº†ä¸æ–·å‡½æ•¸(shù)éˆè¡¨çš„ä¸ä¸€è‡´æ€§ã€‚
è§£æ±ºçš„æ–¹å¼æ˜¯ï¼š
1)給所有函數(shù)奿Ÿ„åŠ å…¥ç‹€æ…‹(tà i)。
2)ç¶è·(hù)䏿–·å‡½æ•¸(shù)列表時(shÃ)ï¼Œå¦‚æžœå¥æŸ„處于閑置狀態(tà i),則進(jìn)行默èª(rèn)çš„æ“ä½œï¼›å¦‚æžœå¥æŸ„處于IRQ狀態(tà i)被刪除,則暫時(shÃ)ä¸é€²(jìn)行直接的刪除æ“ä½œï¼Œè€Œæ˜¯å°‡å¥æŸ„狀態(tà i)改æˆPETOS_IRQ_HANDLER_CALL_STATUS_DELETE。
3)當(dÄng)䏿–·è™•ç†ä¸»å‡½æ•¸(shù)調(dià o)用完該函數(shù)åŽï¼Œè‹¥ç™¼(fÄ)ç¾(xià n)該函數(shù)çš„å¥æŸ„狀態(tà i)已經(jÄ«ng)改變,則å¯å¾—知該函數(shù)已經(jÄ«ng)在調(dià o)用éŽç¨‹ä¸å°‡è‡ªå·±æ³¨éŠ·ã€‚IrqHandleræœƒåœ¨æ¤æ™‚(shÃ)é‡å¯«ä¸æ–·ç¶è·(hù)模塊API䏿³¨éŠ·å‡½æ•¸(shù),在這里將該函數(shù)奿Ÿ„刪除。
4ï¼‰é‡æ–°éˆæŽ¥ä¸æ–·å‡½æ•¸(shù)列表和定ä½tmpIrqHandler找到下一個(gè)䏿–·è™•ç†å‡½æ•¸(shù)奿Ÿ„。
䏿–·æ“´(kuò)展模塊ï¼ç³»çµ±(tÇ’ng)時(shÃ)é˜æ¨¡å¡Šå’Œå®šæ™‚(shÃ)觸發(fÄ)函數(shù):
䏿–·æ©Ÿ(jÄ«)制ä¿è‰äº†PetOSå°ç¡¬ä»¶è«‹æ±‚的實(shÃ)時(shÃ)性響應(yÄ«ng),而å°äºŽè»Ÿä»¶è«‹æ±‚的實(shÃ)時(shÃ)性則由PetOS系統(tÇ’ng)時(shÃ)é˜/定時(shÃ)觸發(fÄ)函數(shù)模塊完æˆã€‚該模塊主è¦å®Œæˆäº†å…©éƒ¨åˆ†å·¥ä½œï¼š
·系統(tÇ’ng)時(shÃ)é˜æ¨¡å¡Šï¼šç³»çµ±(tÇ’ng)æ¯éš”固定的時(shÃ)間產(chÇŽn)生一個(gè)時(shÃ)間䏿–·ã€‚利用å‰é¢çš„䏿–·æ©Ÿ(jÄ«)制,我們å¯ä»¥æ¨¡æ“¬ä¸€å€‹(gè)準(zhÇ”n)實(shÃ)時(shÃ)çš„ï¼Œä¸æ–·åŸ·(zhÃ)行的任務(wù)。具體方法為將這段代碼注冊為系統(tÇ’ng)時(shÃ)é˜çš„䏿–·è™•ç†å‡½æ•¸(shù)。
·定時(shÃ)觸發(fÄ)函數(shù)模塊:為了滿足嵌入å¼é›»å產(chÇŽn)哿‡‰(yÄ«ng)用程åºçš„需è¦ï¼ŒåŸºäºŽç³»çµ±(tÇ’ng)時(shÃ)é˜æ¨¡å¡Šï¼ŒPetOS供了定時(shÃ)觸發(fÄ)函數(shù)功能。用戶å¯ä»¥å‘系統(tÇ’ng)注冊一個(gè)定時(shÃ)觸發(fÄ)函數(shù),并指定其被調(dià o)用的時(shÃ)間。æ“作系統(tÇ’ng)通éŽé (yù)先注冊好的一個(gè)系統(tÇ’ng)時(shÃ)é˜ä¸æ–·è™•ç†å‡½æ•¸(shù)ä¾†æª¢æŸ¥æ˜¯å¦æœ‰éœ€è¦çš„定時(shÃ)觸發(fÄ)函數(shù)到期,并執(zhÃ)行調(dià o)度。
PetOS的任務(wù)調(dià o)度是以事件為單ä½ï¼Œä¸å¯èƒ½å‡ºç¾(xià n)兩個(gè)任務(wù)åŒæ™‚(shÃ)訪å•åŒä¸€æ®µä»£ç¢¼çš„æƒ…æ³ã€‚å› æ¤ï¼Œå¤§éƒ¨åˆ†ä»£ç¢¼ä¸éœ€è¦è€ƒæ…®é‡å…¥çš„å•題。
4 PetOSçš„ä¸è¶³åŠæ”¹é€²(jìn)æ–¹å‘
ç›®å‰çš„調(dià o)度算法還是å˜åœ¨ä»»å‹™(wù)優(yÅu)先級跨度太大的å•題,高優(yÅu)先級的任務(wù)å¯èƒ½ç›´æŽ¥å°Ž(dÇŽo)至低優(yÅu)先級任務(wù)的“餓æ»â€ã€‚
PetOSä¸å¯æ¶å 的任務(wù)調(dià o)度機(jÄ«)制,å„任務(wù)ç„¡ç¨(dú)立棧導(dÇŽo)致調(dià o)度ä¸å¤ éˆæ´»ï¼Œå¦‚果一個(gè)任務(wù)的消æ¯è™•ç†æ™‚(shÃ)間很長,則其他任務(wù)的消æ¯éŸ¿æ‡‰(yÄ«ng)時(shÃ)間也會很長,使得整個(gè)系統(tÇ’ng)的實(shÃ)時(shÃ)性顯得較差并且無法移æ¤é˜»å¡žå¼çš„æ‡‰(yÄ«ng)到到該系統(tÇ’ng)ä¸ã€‚
PetOS并沒有啟用多態(tà i)é‹(yùn)行模å¼ï¼Œè€Œæ˜¯ç°¡å–®çš„å°‡OS core和其他應(yÄ«ng)用程åºçš„地å€ç©ºé–“復(fù)用。這樣雖然簡化了系統(tÇ’ng)çµ(jié)æ§‹(gòu),但是帶來了OS core的地å€ç©ºé–“å¯èƒ½è¢«å…¶ä»–應(yÄ«ng)用程åºç›´æŽ¥è¨ªå•的隱患。
å› æ¤èª¿(dià o)度算法åŠå…§(nèi)å˜ç®¡ç†å°‡æ˜¯PetOS改進(jìn)的方å‘。
5 çµ(jié)æŸèªž
å¢žåŠ äº†å„ª(yÅu)先級調(dià o)度ã€ä»»å‹™(wù)管ç†ã€ä¸æ–·ç®¡ç†ã€ç³»çµ±(tÇ’ng)時(shÃ)é˜ç®¡ç†åŽï¼ŒPetOS由一個(gè)åªé©ç”¨äºŽç°¡å–®æ‡‰(yÄ«ng)用的微型æ“作系統(tÇ’ng)蛻變?yÅu)æ¦è“±?yÄ«ng)用于復(fù)雜環(huán)境的å°åž‹æ“作系統(tÇ’ng)。由于PetOS的模塊化çµ(jié)æ§‹(gòu)å’Œé–‹æ”¾æ€§çš„ä»£ç¢¼ï¼Œä½¿å¾—å„æ–¹æ¡ˆçš„æ“´(kuò)展性和å¯ç¶è·(hù)æ€§å¤§å¤§åŠ å¼·(qiáng),大大縮çŸäº†æ–¹æ¡ˆé–‹ç™¼(fÄ)ã€ç”¢(chÇŽn)å“ç¶è·(hù)çš„å‘¨æœŸå’Œæˆæœ¬ã€‚ç›®å‰ï¼ŒåŸºäºŽARM922硬件平臺,PetOS已經(jÄ«ng)實(shÃ)ç¾(xià n)了MP4/å¸(xué)ç¿’(xÃ)機(jÄ«)ç‰åµŒå…¥å¼æ¶ˆè²»(fèi)類電å產(chÇŽn)å“的方案,并已有æˆç†Ÿçš„產(chÇŽn)å“ä¸Šå¸‚ï¼Œè‰æ˜Žäº†PetOSçš„å¸‚å ´æ½›åŠ›ã€‚éš¨è‘—æ–°çš„æ‡‰(yÄ«ng)用需求,PetOS會得到進(jìn)一æ¥å®Œå–„,在嵌入å¼é ˜(lÇng)域發(fÄ)æ®æ›´å¤§çš„作用。
åƒè€ƒæ–‡ç»(xià n):
[1] UCLA Networked and Embedded Systems Lab. PALOS. http://sourceforge.net/projects/palos/ 2002
[2] JeanJ .Labrosse. uC /OS-11-æºç¢¼å…¬é–‹çš„實(shÃ)時(shÃ)åµŒäººå¼æ“作系統(tÇ’ng)[M],ä¸åœ‹é›»åŠ›å‡ºç‰ˆç¤¾ï¼Œ2001
[3] æœæ˜¥é›·ï¼ŽARM體系çµ(jié)æ§‹(gòu)與編程[M] 清è¯å¤§å¸(xué)出版社, 2003
[4] æ²ˆå‹æ…¶ï¼ŽåµŒå…¥å¼æ“作系統(tÇ’ng)的內(nèi)æ ¸ç ”ç©¶[J].微計(jì)算機(jÄ«)ä¿¡æ¯ï¼Œ2006,2-2:72-74