在傳統的嵌入å¼å¯¦æ™‚æ“作系統ä¸ï¼Œå…§æ ¸å’Œæ‡‰ç”¨éƒ½é‹è¡Œåœ¨åŒä¸€ç‰¹æ¬Šç´šï¼Œæ‡‰ç”¨ç¨‹åºå¯ä»¥ç„¡é™åˆ¶çš„è¨ªå•æ•´å€‹ç³»çµ±åœ°å€ç©ºé–“ã€‚å› æ¤åœ¨æŸäº›æƒ…æ³ä¸‹ï¼Œæ‡‰ç”¨çš„æ½›åœ¨å±éšªå‹•ä½œæœƒå½±éŸ¿å…¶ä»–æ‡‰ç”¨å’Œå…§æ ¸çš„æ£å¸¸é‹è¡Œï¼Œç”šè‡³å°Žè‡´ç³»çµ±å´©æ½°æˆ–者誤æ“作。
為了滿足航空電åå°é«˜å¯é 性ã€é«˜å¯ç”¨æ€§ä»¥åŠé«˜æœå‹™æ€§çš„è¦æ±‚, 1997å¹´1月ARINC發布了ARINC653ï¼ˆèˆªç©ºé›»åæ‡‰ç”¨è»Ÿä»¶æ¨™æº–接å£ï¼‰ï¼Œå¹¶äºŽ2003å¹´7月發布ARINC653 Supplement 1,å°å€é–“管ç†ã€å€é–“通信åŠå¥åº·ç›£æ¸¬éƒ¨åˆ†é€²è¡Œäº†è£œå……說明,用以è¦èŒƒèˆªç©ºé›»åè¨å‚™å’Œç³»çµ±çš„開發。
隨å³ï¼Œåœ‹å¤–å„大嵌入å¼é–‹ç™¼å•†ç›¸ç¹¼æŽ¨å‡ºæ¤é¡žæ”¯æŒARINC653ï¼Œå…·æœ‰å…§æ ¸å’Œæ‡‰ç”¨ä¿è·æ©Ÿåˆ¶çš„æ“ä½œç³»çµ±ã€‚ä½†åœ¨åœ‹å…§çš„åµŒå…¥å¼é ˜åŸŸï¼Œé€™æ¨£çš„ç ”ç©¶é‚„æœ‰ä¸€å®šå·®è·ã€‚基于æ¤ï¼Œæœ¬æ–‡æå‡ºäº†ä¸€ç¨®èˆªç©ºé›»å嵌入å¼å¯¦æ™‚æ“作系統(A-RTOS,Avionics RTOS)的一種è¨è¨ˆæ€è·¯ï¼Œå¹¶åœ¨å…·æœ‰MMU和支æŒé«˜ç´šä¿è·æ¨¡å¼çš„目標æ¿ä¸Šå®Œæˆäº†å¯¦ç¾ã€‚
èˆªç©ºé›»åæ¨™æº–ARINC653
ARINC653主è¦é—¡è¿°äº†æ¨¡å¡ŠåŒ–ç¶œåˆèˆªç©ºé›»åè¨å‚™IMA(Integrated Modular Avionics)使用的應用軟件的基線æ“作環境。 它定義了航空應用與下層æ“作環境之間的接å£å’Œæ•¸æ“šäº¤æ›çš„æ¨¡å¼ä»¥åŠæœå‹™çš„行為,并æè¿°äº†åµŒå…¥å¼èˆªç©ºé›»å軟件的é‹è¡Œæ™‚環境。
ARINC653 Supplement 1å°ARINC653的補充主è¦åŒ…括以下幾點:åœ¨ç³»çµ±çµæ§‹ä¸Šï¼Œæå‡ºäº†System Partition的概念,明確å€é–“上的應用調度應該是å€é–“級別的,這些應用共享å€é–“資æº;å€é–“ç®¡ç†æ–¹é¢ï¼Œé—¡è¿°å€é–“調度ä¸ä¸»æ™‚間框架的定義原則,并補充了å€é–“模å¼çš„變é·éŽç¨‹;å°å€é–“間通信的原則進行更為詳盡的說明;å¢žåŠ é—œäºŽå¥åº·ç›£æ¸¬çš„錯誤級別和錯誤處ç†çš„解釋。
軟件構æˆ
航空電åä¸çš„æ ¸å¿ƒæ¨¡å¡Šè»Ÿä»¶åŒ…括兩類:æ‡‰ç”¨è»Ÿä»¶å’Œæ ¸å¿ƒè»Ÿä»¶ã€‚ä½äºŽæ‡‰ç”¨è»Ÿä»¶å’Œæ“作系統OS之間的APEX(APplication EXecutive)接å£ï¼Œå®šç¾©äº†ç³»çµ±ç‚ºæ‡‰ç”¨è»Ÿä»¶æä¾›çš„一個功能集åˆã€‚利用這個功能集åˆï¼Œæ‡‰ç”¨è»Ÿä»¶å¯ä»¥æŽ§åˆ¶ç³»çµ±çš„調度,通信和內部狀態信æ¯ã€‚APEX接å£ç›¸ç•¶äºŽç‚ºæ‡‰ç”¨æä¾›çš„一種高層語言。而å°äºŽOSä¾†èªªï¼Œæ˜¯é—œäºŽåƒæ•¸å’Œå…¥å£æ©Ÿåˆ¶çš„定義。
[align=center]

圖1給出了ARINC653ä¸å„部分之間的關系[/align]
分å€å’Œå€é–“管ç†
分å€ï¼ˆPartitioning)是ARINC653ä¸ä¸€å€‹æ ¸å¿ƒæ¦‚念。在IMA(Integrated Modular Avionics)系統ä¸ï¼Œä¸€å€‹æ ¸å¿ƒæ¨¡å¡ŠæœƒåŒ…å«ä¸€å€‹æˆ–å¤šå€‹èˆªç©ºé›»åæ‡‰ç”¨ï¼Œå¹¶ä¸”這些應用è¦èƒ½å¤ ç¨ç«‹é‹è¡Œã€‚分å€å°±æ˜¯èˆªç©ºé›»å應用ä¸çš„一個功能劃分。分å€çš„å–®ä½ç¨±ç‚ºå€é–“,å€é–“å…§çš„æ¯ä¸€å€‹åŸ·è¡Œå–®å…ƒç¨±ç‚ºé€²ç¨‹ã€‚æ¯ä¸€å€‹å€é–“具有自己ç¨ç«‹çš„æ•¸æ“šã€ä¸Šä¸‹æ–‡å’Œé‹è¡Œç’°å¢ƒï¼Œé€™æ¨£åšçš„å¥½è™•æ˜¯èƒ½å¤ é˜²æ¢ä¸€å€‹å€é–“的錯誤影響到其他å€é–“。å¦å¤–,它能使得整個系統容易驗è‰ã€ç¢ºèªå’Œèªè‰ã€‚
å€é–“化以åŠå€é–“的管ç†å’Œèª¿åº¦æ˜¯ç”±OS來實ç¾çš„。ARINC653為å€é–“的調度è¦å®šäº†ä¸€ç¨®åŸºäºŽæ™‚間窗的循環調度算法。這種調度算法的原ç†å¦‚圖2所示。
[align=center]

圖2 åŸºäºŽæ™‚é–“çª—çš„å¾ªç’°èª¿åº¦ç®—æ³•åŽŸç† [/align]
為了完æˆå„å€é–“的周期性調度,由OSç¶è·ä¸€å€‹å›ºå®šæ™‚間長度的主時間框架,該時間框架在模塊的é‹è¡ŒæœŸå…§å‘¨æœŸæ€§çš„é‡å¾©ã€‚æ¯å€‹æ™‚間框架å¯ä»¥åŠƒåˆ†ç‚ºè‹¥å¹²å€‹æ™‚é–“çª—å£ã€‚系統利用一個事先確定的é…置表,在è¦å®šçš„æ™‚間窗å£å…§æ¿€æ´»å°æ‡‰å€é–“çš„é‹è¡Œã€‚é€™æ¨£å°±èƒ½å¤ ä¿è‰æ¯å€‹æ‡‰ç”¨åœ¨åˆ†é…給它的時間周期內訪å•公共資æºä¸è¢«æ‰“斷。
ARINC supplement 1å°ä¸»æ™‚間框架的時間定義原則進行了補充。它è¦å®šä¸»æ™‚é–“æ¡†æž¶çš„å¤§å°æ‡‰è©²æ˜¯æ ¸å¿ƒæ¨¡å¡Šä¸æ‰€æœ‰å€é–“周期的最å°å…¬å€æ•¸çš„æ£æ•´æ•¸å€ï¼Œå¹¶æ‡‰è€ƒæ…®åˆ°æ¯å€‹å€é–“æ¯æ¬¡åŸ·è¡Œçš„æ™‚é–“é•·åº¦å’ŒåŸ·è¡Œé »çŽ‡ã€‚
在ARINC653 Supplement 1發布時åˆå¢žåŠ äº†ç³»çµ±å€é–“屬性和啟動æ¢ä»¶å±¬æ€§ã€‚å€é–“的工作模å¼åŒ…括空閑,冷啟動,熱啟動和æ£å¸¸å››ç¨®ï¼Œå¦‚圖3所示。æ¯å€‹å€é–“所需資æºåœ¨ç³»çµ±æ§‹å»ºæ™‚指定,在å€é–“åˆå§‹åŒ–å®Œæˆæ™‚å€é–“å°è±¡å‰µå»ºã€‚OS在進入é‹è¡Œæ¨¡å¼æ™‚啟動應用å€é–“,然åŽå€é–“進入æ£å¸¸é‹è¡Œæ¨¡å¼ã€‚監測管ç†åŠŸèƒ½åœ¨éŸ¿æ‡‰è‡´å‘½éŒ¯èª¤æ™‚å°‡é‡å•Ÿå€é–“æˆ–è€…åœæ¢å€é–“çš„é‹è¡Œã€‚
[align=center]

圖3 å€é–“狀態轉化模型 [/align]
A-RTOS系統è¨è¨ˆèˆ‡å¯¦ç¾
A-RTOSçš„ç³»çµ±çµæ§‹å¦‚圖4所示。在æ¤ç³»çµ±ä¸ï¼Œå„個應用工作在所屬å€é–“的環境ä¸,å¹¶ä¸”æ‡‰ç”¨å’Œå…§æ ¸åŠå„個應用之間都被ä¿è·å¢»éš”é›¢ï¼Œç„¡æ³•ç›¸äº’ç ´å£žï¼Œå¾žè€Œä¿è‰äº†æ ¸å¿ƒæ¨¡å¡Šçš„å¯é 性。
[align=center]

圖4 A-RTOSçš„ç³»çµ±çµæ§‹[/align]
隔離和ä¿è·æ©Ÿåˆ¶
隔離和ä¿è·æ˜¯ARINC653首è¦å¼·èª¿çš„ç‰¹æ€§ï¼Œä¹Ÿæ˜¯å¿…é ˆè§£æ±ºçš„é‡é»žä¹‹ä¸€ã€‚A-RTOS主è¦é‡‡ç”¨å…©ç¨®æ–¹å¼ä¾†å¯¦ç¾æ‡‰ç”¨èˆ‡å…§æ ¸ä»¥åŠæ‡‰ç”¨ä¹‹é–“的隔離和ä¿è·ã€‚
ç¬¬ä¸€ç¨®æ–¹å¼æ˜¯ä½¿ç”¨å…§å˜ç®¡ç†å–®å…ƒMMU。通éŽMMUèƒ½å¤ å¯¦ç¾é‚輯地å€åˆ°ç‰©ç†åœ°å€çš„轉化,并且å°è¨ªå•權é™é€²è¡ŒæŽ§åˆ¶ã€‚這樣å¯ä»¥ä¿è·æ“ä½œç³»çµ±å…§æ ¸ä¸å—æ‡‰ç”¨è»Ÿä»¶æœ‰æ„æˆ–ç„¡æ„çš„ç ´å£žï¼Œä¹Ÿæœ‰æ•ˆçš„é˜²æ¢äº†å„æ‡‰ç”¨è»Ÿä»¶ä¹‹é–“çš„ç›¸äº’ç ´å£žã€‚åœ–5給出了MMUçš„é 目錄ï¼é 表方å¼çš„地å€è½‰æ›æµç¨‹ã€‚
[align=center]

圖5 é 目錄ï¼é 表方å¼çš„地å€è½‰æ›æµç¨‹ [/align]
第二種方å¼å°±æ˜¯ç³»çµ±èª¿ç”¨ã€‚A-RTOS為了實ç¾å°å…§æ ¸åŠæ‡‰ç”¨ä¹‹é–“çš„ä¿è·ï¼Œæä¾›äº†å…©ç¨®é‹è¡Œå½¢æ…‹:ç”¨æˆ¶æ…‹å’Œç³»çµ±æ…‹ã€‚å…¶ä¸æ“ä½œç³»çµ±å…§æ ¸æ˜¯é‹è¡Œåœ¨ç³»çµ±æ…‹çš„ã€‚å› æ¤ç”¨æˆ¶æ…‹çš„æ‡‰ç”¨æ˜¯ä¸èƒ½å¤ ç›´æŽ¥èª¿ç”¨ç³»çµ±å…§æ ¸æä¾›çš„功能接å£çš„ï¼Œå¿…é ˆé€šéŽTRAP系統調用方å¼ä¾†é€²è¡Œã€‚
æ¤ç¨®æ–¹å¼ä¸‹ï¼Œç•¶ç”¨æˆ¶æ…‹çš„æ‡‰ç”¨éœ€è¦èª¿ç”¨å…§æ ¸æä¾›çš„系統調用時,首先è¦åŸ·è¡Œä¸€çµ„特殊的指令使系統進入系統態以便執行需è¦çš„系統調用,當調用完æˆåŽï¼Œå…§æ ¸å°‡åŸ·è¡Œå¦ä¸€çµ„ç‰¹å¾æŒ‡ä»¤å°‡ç³»çµ±è¿”回到用戶態。
æ¯ç¨®æ”¯æŒä¿è·æ¨¡å¼çš„系統都æä¾›äº†å°ˆé–€çš„è»Ÿä¸æ–·å‘½ä»¤ä¾†å®Œæˆå¾žç”¨æˆ¶æ…‹é€²å…¥ç³»çµ±æ…‹çš„åŠŸèƒ½ã€‚ç³»çµ±æŽ›æŽ¥ä¸€å€‹è»Ÿä¸æ–·è™•ç†å‡½æ•¸ï¼Œæ‰€æœ‰çš„系統調用都通éŽé€™å€‹è»Ÿä¸æ–·é€²å…¥å¹¶ä»¥ä¸åŒçš„åƒæ•¸å€¼ï¼ˆå³ç³»çµ±èª¿ç”¨è™Ÿï¼‰ä¾†åР以å€åˆ†ã€‚
系統調用的å¦ä¸€ç¨®å½¢å¼æ˜¯ç¨±ç‚ºCALL-LIB的調用庫機制。æ¤ç¨®æ©Ÿåˆ¶é¡žä¼¼äºŽwindowsç³»çµ±çš„å‹•æ…‹éˆæŽ¥åº«ï¼Œå¯ä»¥æ»¿è¶³å‹•æ…‹åŠ è¼‰å’Œæ›´æ–°çµ„ä»¶çš„éœ€è¦ï¼Œä¹Ÿæ˜¯A-RTOS的特點之一。
å€é–“調度機制
ARINC653è¦å®šï¼Œå€é–“調度模å¼çš„主è¦ç‰¹å¾æ˜¯:1)調度單元是å€é–“ï¼›2)å€é–“沒有優先級;3)調度算法是é 先確定的,按照固定的周期é‡å¾©,并且åªèƒ½ç”±ç³»çµ±é›†æˆè€…進行é…置。æ¯å€‹å¾ªç’°ä¸ï¼Œè‡³å°‘è¦ç‚ºå€é–“分é…一個å€é–“窗å£ã€‚
在A-RTOSä¸ï¼Œç‚ºäº†æ–¹ä¾¿ç³»çµ±è™•ç†å’Œèƒ½æ›´å¥½ç¬¦åˆARINC653è¦èŒƒï¼Œå°ä»¥ä¸Šè¦å®šé€²è¡Œäº†ä¸€å®šç¨‹åº¦çš„修訂:調度單元是å€é–“和系統進程;å€é–“具有優先級。但這些修訂ä¸å½±éŸ¿æ“作系統å€é–“層POSä»¥åŠæ‡‰ç”¨ç¨‹åºä½¿ç”¨è€…,所以在外部特性上并ä¸èˆ‡ARINC653è¦å®šé•背。
除æ¤ä¹‹å¤–, A-RTOS還引入兩個系統å€é–“:Kernelå€é–“å’ŒIdleå€é–“。Kernelå€é–“優先級最高,用于為整個系統的é‹è¡Œæä¾›æ”¯æŒ;并且一些系統級進程,也屬于Kernelå€é–“,方便調度。Idleå€é–“å…·æœ‰æœ€ä½Žçš„å„ªå…ˆç´šï¼Œç”¨äºŽå¡«å……ç³»çµ±æ™‚é–“ã€‚ç•¶ç³»çµ±ä¸æ²’有其他å€é–“å¯ä»¥é‹è¡Œï¼Œå°±é‹è¡ŒIdleå€é–“。
A-RTOSå€é–“的調度原則是首先基于優先級調度,å°åŒä¸€å„ªå…ˆç´šçš„å€é–“å¯ä½¿ç”¨æ™‚間片輪轉調度或者基于時間窗的循環調度ç–略。
A-RTOS采用兩級調度機制。系統ä¸å…·æœ‰å€é–“的優先級ä½åœ–å’Œæ¯å€‹å„ªå…ˆç´šå°æ‡‰çš„就緒éˆè¡¨ï¼Œæ¯å€‹å€é–“ä¸ä¹ŸåŒ…å«ç³»çµ±é€²ç¨‹çš„優先級ä½åœ–å’Œå°æ‡‰çš„就緒éˆè¡¨ã€‚利用優先級ä½åœ–和就緒éˆè¡¨ï¼Œå¯ä»¥å¾ˆå®¹æ˜“的實ç¾å°å€é–“和系統進程的調度。圖6給出了這種調度模型。
[align=center]

圖6 A-RTOSçš„å€é–“調度模型[/align]
èª¿åº¦æ¨¡å¡Šé¦–å…ˆæ ¹æ“šç³»çµ±ä¸çš„å€é–“優先級ä½åœ–å’Œå€é–“就緒éˆè¡¨ä¾†é€²è¡Œå€é–“調度,被調度到的å€é–“冿 ¹æ“šå€é–“內的進程優先級ä½åœ–和進程就緒éˆè¡¨é€²è¡Œç³»çµ±é€²ç¨‹çš„èª¿åº¦ã€‚æ¤æ–¹æ³•相å°äºŽä¸€ç´šèª¿åº¦æ–¹å¼è€Œè¨€ï¼Œèƒ½å¤ ä¿è‰èª¿åº¦æ™‚é–“çš„ç¢ºå®šæ€§ï¼Œç³»çµ±èª¿åº¦æ™‚é–“ä¸æœƒå› 為å€é–“和系統進程的多少而發生變化,符åˆå¯¦æ™‚æ“作系統的定義。
在進行基于時間窗調度時,兩個系統å€é–“實際上也會åƒèˆ‡èª¿åº¦ã€‚Kernelå€é–“çš„é‹è¡Œæ™‚間會計算在å€é–“調度é…置表ä¸ç•¶å‰å€é–“çš„é‹è¡Œæ™‚é–“ä¸Šã€‚å› æ¤å°äºŽæŸæ‡‰ç”¨å€é–“而言,它的é‹è¡Œæ™‚間實際上會包å«ç³»çµ±å€é–“çš„é‹è¡Œã€‚
é€²ç¨‹æ± æ©Ÿåˆ¶
在A-RTOSä¸ï¼Œé€²ç¨‹æ± 是指一組由系統進行ç¶è·çš„é€²ç¨‹ï¼Œé€™äº›é€²ç¨‹èƒ½å¤ ç‚ºæ‡‰ç”¨æä¾›ä¸€çµ„æœå‹™ã€‚應用通éŽç³»çµ±æä¾›çš„調用接å£å°ç³»çµ±æå‡ºæ‡‰ç”¨è«‹æ±‚ï¼Œç³»çµ±æŠŠæ‡‰ç”¨çš„è«‹æ±‚äº¤çµ¦é€²ç¨‹æ± ï¼Œé€²ç¨‹æ± è‡ªå‹•é¸æ“‡ä¸€å€‹ç©ºé–‘進程å°å…¶é€²è¡Œæœå‹™ï¼Œç•¶æœå‹™å®Œç•¢ä»¥åŽï¼Œç³»çµ±æœƒå›žæ”¶è©²ç³»çµ±é€²ç¨‹ã€‚
é€²ç¨‹æ± ä¸»è¦æ‡‰ç”¨åœ¨æ™‚é˜å®šæ™‚器æœå‹™ã€ä¸æ–·æœå‹™å’Œç•°æ¥IOæ“作。
ç•°æ¥ä¿¡è™Ÿå’Œç•°æ¥IO機制
A-RTOS支æŒç•°æ¥ä¿¡è™Ÿæ©Ÿåˆ¶ï¼Œå…許在æŸç¨®æƒ…æ³ä¸‹COSä»¥ç•°æ¥æ–¹å¼ç™¼é€ä¿¡è™Ÿåˆ°ä¸Šå±¤çš„POS。異æ¥ä¿¡è™Ÿçš„一個典型使用就是異æ¥IO。這是由于在ARINC653的應用ä¸,POSä¸çš„進程通éŽç³»çµ±èª¿ç”¨ç”¢ç”Ÿé˜»å¡žæ€§IO請求的時候,如果IO䏿˜¯ç•°æ¥çš„,å‰‡æ¤æ™‚該進程就會阻塞,ç‰å¾…系統調用的返回。但是COSå¹¶ä¸çŸ¥é“POSä¸çš„æ‡‰ç”¨é€²ç¨‹çš„å˜åœ¨,ç•¶å…¶ä¸çš„一個進程阻塞的時候,整個å€é–“都會被阻塞。采用異æ¥IOæ–¹å¼å¯é¿å…這種情æ³çš„發生。
當應用請求了阻塞性的IOæœå‹™æ™‚,A-RTOS會啟動稱為一個系統進程來進行應用請求的IOæ“作,這就是異æ¥IO機制。A-RTOS將這種為實ç¾ç•°æ¥IOæ“作而創建的系統進程稱為worker進程。
如圖7,在ARINC653的應用ä¸ï¼Œç•¶POSä¸çš„一個進程調用異æ¥IO系統調用時,該系統調用檢查æ¤IO是å¦ç‚ºé˜»å¡žå·¥ä½œæ–¹å¼,如果是,則創建一個worker進程去完æˆé€™å€‹è¦æ±‚çš„IO工作,并返回一個AIO_PENDING值到POS。POS檢查到這個返回值以åŽ,把æ£åœ¨é€²è¡Œç•°æ¥IO調用的進程從就緒隊列å–下放到ç‰å¾…隊列,ç„¶åŽé€²è¡Œé‡èª¿åº¦ã€‚ç•¶worker進程完æˆäº†è¦æ±‚çš„IOæ“作時,å³ç™¼é€ç•°æ¥ä¿¡è™Ÿåˆ°POS,從而喚醒原阻塞進程。
[align=center]

圖7 ç•°æ¥IO工作æµç¨‹ç¤ºæ„圖[/align]