Îïåðàöèîííûå ñèñòåìû ðåàëüíîãî âðåìåíè äëÿ àâèîíèêè: îáçîð
Áëàãîäàðÿ ðàçâèòèþ âû÷èñëèòåëüíîé òåõíèêè â ïîñëåäíåå âðåìÿ ñòàëî âîçìîæíûì âîçëîæèòü íà îäèí ìîäóëü çàäà÷è, âûïîëíÿåìûå ðàíåå íåñêîëüêèìè ïðîöåññîðíûìè ìîäóëÿìè, ïðè ýòîì óëó÷øèâ ìàññîãàáàðèòíûå õàðàêòåðèñòèêè ñèñòåìû óïðàâëåíèÿ è ñíèçèâ åå ñòîèìîñòü. Òàêàÿ òåíäåíöèÿ â àâèàöèîííîé òåõíèêå ïðèâåëà ê ïîÿâëåíèþ êîíöåïöèè èíòåãðèðîâàííîé ìîäóëüíîé àâèîíèêè - ÈÌÀ (Integrated Modular Avionics,IMA).
Ïðîáëåìà èíòåãðàöèè ôóíêöèé óïðàâëåíèÿ â åäèíûé ìîäóëü ñîñòîèò â òîì, ÷òî íåîáõîäèìî ðàçäåëÿòü ñòàâøèå òåïåðü îáùèìè ðåñóðñû (ïðîöåññîðíîå âðåìÿ, ïàìÿòü, êàíàëû îáìåíà) ìåæäó ðàçëè÷íûìè çàäà÷àìè, ïðè ýòîì îáåñïå÷èâàÿ òàêîé æå óðîâåíü íàäåæíîñòè è íåçàâèñèìîñòè ôóíêöèé, êàê è áûë ðàíåå. Êëþ÷åâóþ ðîëü â ðåøåíèè äàííîé ïðîáëåìû èãðàåò îïåðàöèîííàÿ ñèñòåìà ðåàëüíîãî âðåìåíè.
 íàñòîÿùåå âðåìÿ íà ìèðîâîì ðûíêå ïðèñóòñòâóåò íåñêîëüêî êîììåð÷åñêèõ ÎÑРäëÿ îòâåòñòâåííûõ ïðèìåíåíèé (òàáë. 1).  äàííîé ñòàòüå ïðèâåäåí îáçîð ÎÑÐÂ, äîñòóïíûõ íà ðîññèéñêîì ðûíêå, íà îñíîâå èíôîðìàöèè èç îòêðûòûõ èñòî÷íèêîâ è ëè÷íîãî îïûòà àâòîðîâ.
Äàëåå, åñëè íåò äðóãèõ îãîâîðîê, äëÿ êðàòêîñòè áóäóò èñïîëüçîâàòüñÿ ñëåäóþùèå íàçâàíèÿ ÎÑ: LynxOS âìåñòî LynxOS-178; VxWorks âìåñòî VxWork 653; QNX âìåñòî QNX Neutrino.
Äîêóìåíòû, ðåãëàìåíòèðóþùèå òðåáîâàíèÿ ê ÎÑÐÂ
Ñòàíäàðò DO-178 (Software Consideration in Airborne Systems and Equipment Certification) îïðåäåëÿåò òðåáîâàíèÿ ê ïðîöåññó ðàçðàáîòêè ïðîãðàììíîãî îáåñïå÷åíèÿ è òùàòåëüíîñòè åãî ïðîâåðêè â çàâèñèìîñòè îò åãî óðîâíÿ êðèòè÷íîñòè. Óðîâåíü êðèòè÷íîñòè ÏÎ îïðåäåëÿåòñÿ íà îñíîâå àíàëèçà ñåðüåçíîñòè ïîñëåäñòâèé îòêàçà â ÏÎ. Âñåãî ïðåäóñìîòðåíî ïÿòü óðîâíåé êðèòè÷íîñòè ÏÎ (îò A äî E).
MILS (Multiple Independent Levels of Secutiry) ïðåäñòàâëÿåò ñîáîé ñïåöèàëüíûé ïîäõîä ê ïðîåêòèðîâàíèþ ÎÑ, ïðåïÿòñòâóþùèé ðàñïðîñòðàíåíèþ îøèáîê ïðèêëàäíîãî ïðîãðàììíîãî îáåñïå÷åíèÿ âî âðåìÿ âûïîëíåíèÿ, à òàêæå óïðîùàþùèé âåðèôèêàöèþ ïðîãðàìì çà ñ÷åò ìîäóëüíîñòè ÏÎ. Âñå ïðèëîæåíèÿ ïîìåùàþòñÿ â òàê íàçûâàåìûå ðàçäåëû (partitions). Ðàçäåëû èìåþò âûäåëåííûå ðåñóðñû (îáëàñòü ïàìÿòè, ïðîöåññîðíîå âðåìÿ â òå÷åíèå êàæäîãî öèêëà ñèñòåìû, äîñòóï ê êàíàëàì îáìåíà è ïð). Äîñòóï ê âûäåëåííûì ðåñóðñàì ãàðàíòèðóåòñÿ ÎÑ, ðàáîòàþùåé â ðåæèìå ñóïåðâèçîðà. Òàêèì îáðàçîì, íà îäíîì ïðîöåññîðíîì ìîäóëå ïîä óïðàâëåíèåì îäíîé ÎÑ ìîæåò ðàáîòàòü ïðèêëàäíîå ÏÎ ðàçíîãî óðîâíÿ êðèòè÷íîñòè — åñëè ñáîé ïðîèçîéäåò â ìåíåå êðèòè÷íîì (è, ñîîòâåòñòâåííî, ìåíåå ïðîâåðåííîì) ÏÎ, ýòî íèêàê íå ïîâëèÿåò íà ðàáîòó äðóãèõ ðàçäåëîâ, òàê êàê ïîïûòêè «óçóðïèðîâàòü» ÷óæèå ðåñóðñû áóäóò ïðåñå÷åíû îïåðàöèîííîé ñèñòåìîé. Èäåè MILS ïåðåêëèêàþòñÿ ñ èäåÿìè ÈÌÀ è DO-178B.
Ñòàíäàðò ARINC-653 (Avionics Application Software Standard Interface) ñïåöèôèöèðóåò èíòåðôåéñ ïðèêëàäíîãî ïðîãðàììíîãî îáåñïå÷åíèÿ APEX, ïîääåðæèâàþùèé êîíöåïöèþ ðàçäåëîâ â äóõå MILS. Äàííûé èíòåðôåéñ âêëþ÷àåò ôóíêöèè óïðàâëåíèÿ ðàçäåëàìè, ïðîöåññàìè, ðàçäåëåíèåì âðåìåíè, êîììóíèêàöèÿìè ìåæäó ðàçäåëàìè è âíóòðè ðàçäåëà, ìîíèòîðèíã ñîñòîÿíèÿ ñèñòåìû. Íàäî îòìåòèòü, ÷òî ñòàíäàðò ARINC-653 îïèñûâàåò îáùåïðèçíàííûé ïîäõîä ê ðåàëèçàöèè èäåé MILS äëÿ ÈÌÀ, õîòÿ ìîãóò áûòü è äðóãèå ðåàëèçàöèè. Àâèàöèîííàÿ ÎÑÐÂ, ñîîòâåòñòâóþùàÿ ARINC-653, èìååò ïðåèìóùåñòâà, òàê êàê äàííûé ñòàíäàðò õîðîøî èçâåñòåí è ïîíÿòåí ìåæäóíàðîäíûì ñåðòèôèöèðóþùèì îðãàíàì, ïîýòîìó íà ñèñòåìó, ïîñòðîåííóþ ïî ýòîìó ñòàíäàðòó, ïðîùå ïîëó÷èòü ñåðòèôèêàò ñîîòâåòñòâèÿ DO-178B.
Ñòàíäàðò Reusable Software Components.  ñîîòâåòñòâèè ñ DO-178B ïðîãðàììíîå îáåñïå÷åíèå òîé èëè èíîé ñèñòåìû àâèàöèîííîãî ïðèìåíåíèÿ ïðîõîäèò ïðîöåäóðó ñåðòèôèêàöèè ïîëíîñòüþ, äàæå åñëè îíî èñïîëüçóåò ìîäóëè (êîìïîíåíòû), êîòîðûå óæå áûëè ñåðòèôèöèðîâàíû ðàíåå â ñîñòàâå äðóãîé ñèñòåìû. Îäíîé èç ïîñëåäíèõ èíèöèàòèâ FAA (Ôåäåðàëüíîå àãåíòñòâî ïî ñåðòèôèêàöèè ãðàæäàíñêîé àâèàöèè, ÑØÀ) ÿâëÿåòñÿ îïðåäåëåíèå êðèòåðèåâ âîçìîæíîñòè ìíîãîêðàòíîãî èñïîëüçîâàíèÿ ÏÎ áåç ïîâòîðíîé ñåðòèôèêàöèè. Êîìïîíåíòû, êîòîðûå ìîæíî ïîâòîðíî íå ñåðòèôèöèðîâàòü, íàçûâàþòñÿ RSC (Reusable Software Components). ×òîáû ïîëó÷èòü ñåðòèôèêàò íà RSC, íóæíî çàòðàòèòü áîëüøå óñèëèé, íî çàòåì RSC äàåò ñåðüåçíóþ ýêîíîìèþ.
Ðîññèéñêèå äîêóìåíòû, îïðåäåëÿþùèå òðåáîâàíèÿ ê ÏÎ (è â òîì ÷èñëå ê ÎÑÐÂ):
Ñðàâíåíèå ÎÑ Ð ïðîâîäèëîñü ïî 13 ïàðàìåòðàì, êîòîðûå ó÷èòûâàþò òåõíè÷åñêèå êðèòåðèè, óäîáñòâî ðàçðàáîòêè è ýêîíîìè÷åñêèå ïàðàìåòðû.
Âðåìåííûå ïàðàìåòðû ÎÑ
Îäíèì èç îñíîâíûõ òðåáîâàíèé ê ÎÑ Ð ÿâëÿåòñÿ ìèíèìàëüíîå âðåìÿ çàäåðæêè îáðàáîòêè òîãî èëè èíîãî ñîáûòèÿ. Íà ïðàêòèêå ýòî îçíà÷àåò, ÷òî äîëæíû áûòü ìàëû ñëåäóþùèå ïàðàìåòðû:
Ê ñîæàëåíèþ, îáúåêòèâíî ñðàâíèòü óêàçàííûå ïàðàìåòðû ðàçëè÷íûõ ÎÑ Ð íå ïðîñòî, ïîòîìó ÷òî äàííûå ïàðàìåòðû çàâèñÿò íå òîëüêî îò êà÷åñòâà ÎÑ, íî è îò âîçìîæíîñòåé èñïîëüçóåìîé àïïàðàòíîé ïëàòôîðìû.  èäåàëå, âñå ñðàâíèâàåìûå ÎÑ äîëæíû áûòü óñòàíîâëåíû íà îäíó è òó æå àïïàðàòíóþ ïëàòôîðìó, ïîñëå ÷åãî äîëæíû áûòü ñäåëàíû ñîîòâåòñòâóþùèå èçìåðåíèÿ. Íî äàæå ýòè èçìåðåíèÿ íå äàäóò îáúåêòèâíîãî ðåçóëüòàòà, ïîòîìó ÷òî ðàçëè÷íûå ÎÑ ìîãóò áûòü â áîëüøåé èëè ìåíüøåé ñòåïåíè àäàïòèðîâàíû ê êîíêðåòíîé àïïàðàòóðå.
Äëÿ ñðàâíåíèÿ âðåìåííûõ ïàðàìåòðîâ â äàííîé ñòàòüå èñïîëüçîâàíû ôðàãìåíòèðîâàííûå äàííûå, íàéäåííûå â Ñåòè, êîòîðûå çà÷àñòóþ ïîëó÷åíû ïðè òåñòèðîâàíèè ÎÑ íà ðàçëè÷íîì îáîðóäîâàíèè, ïðè ýòîì íå âñåãäà ïîíÿòåí ñîñòàâ è õàðàêòåð òåñòîâ.
Äîñòàòî÷íî îáúåêòèâíûìè äàííûìè ìîæíî ñ÷èòàòü ðåçóëüòàòû, ïîëó÷åííûå ýêñïåðòàìè æóðíàëà Dedicated System, ïðîâîäèâøèìè òåñòèðîâàíèå è ïðàêòè÷åñêîå ñðàâíåíèå QNX RTOS 6.1, VxWorks AE 1.1 è Windows CE.NET íà x86 ïëàòôîðìå. Õîòÿ íà ñåãîäíÿøíèé ìîìåíò ýòè äàííûå óñòàðåëè, àâòîðàì äàííîé ñòàòüè íå óäàëîñü íàéòè áîëåå ñâåæåãî ìàòåðèàëà.  òàáë. 2 ïðèâåäåíû âûáîðî÷íûå äàííûå î ñðàâíåíèè ïðîèçâîäèòåëüíîñòè QNX Neutrino 6.1, VxWorks AE 1.1.  îò÷åòå Dedicated Systems ïðåäïî÷òåíèå ñ òî÷êè çðåíèÿ áûñòðîäåéñòâèÿ áûëî îòäàíî QNX, ïðè÷åì îòíîøåíèå áàëëîâ áûëî óñòàíîâëåíî êàê 9:5 (QNX:VxWorks), ïîòîìó êàê â ïðîöåññå òåñòèðîâàíèÿ â VxWorks áûëè îáíàðóæåíû äâå îøèáêè, çà èñïðàâëåíèåì êîòîðûõ ïðèøëîñü îáðàùàòüñÿ â ñëóæáó ïîääåðæêè.
 òàáë. 3 ïðèâåäåíû äàííûå î õàðàêòåðèñòèêàõ LynxOS. Ñîñòàâ èñïîëüçîâàâøèõñÿ òåñòîâ íå óêàçàí.  êà÷åñòâå äàííûõ î õàðàêòåðèñòèêàõ LynxOS èíòåðåñíà ÷åòâåðòàÿ êîëîíêà (òåñòèðîâàíèå íà x86-ïëàòôîðìå). Ïî ñðàâíåíèþ ñ VxWorks è QNX, ÎÑ Ð LynxOS ïîêàçûâàåò îãðîìíóþ çàäåðæêó ïðè ðåàêöèè íà ïðåðûâàíèå (áîëåå ÷åì â 5 ðàç). Âðåìÿ ïåðåêëþ÷åíèå êîíòåêñòà (èìååòñÿ â âèäó âðåìÿ ïåðåêëþ÷åíèÿ ìåæäó äâóìÿ ïîòîêàìè â îäíîì ïðîöåññå) îäèíàêîâîå ñ QNX è ìåíüøå ïðèìåðíî â 1,5 ðàçà, ÷åì ó VxWorks.
Ñòàáèëüíîñòü âðåìåííûõ ïàðàìåòðîâ
Ïîìèìî âðåìåííûõ õàðàêòåðèñòèê äëÿ ÎÑ Ð âàæíà òàêæå ñòàáèëüíîñòü ýòèõ õàðàêòåðèñòèê. Èìåííî ýòîò êðèòåðèé âî ìíîãîì îïðåäåëÿåò «æåñòêîñòü» ÎÑ ÐÂ, ò.å. ïðåäñêàçóåìîñòü âðåìåíè îáðàáîòêè äàííûõ, ìîìåíòà âûäà÷è ðåçóëüòàòîâ è ò.ä.
Èñõîäÿ èç äàííûõ æóðíàëà Dedicated System, QNX îïåðåæàåò ïî ýòîìó êðèòåðèþ VxWorks êàê ïî ðàçáðîñó õàðàêòåðèñòèê â ñåðèè îäíîòèïíûõ òåñòîâ (îòíîøåíèå ìàêñèìóìà âðåìåíè ê ñðåäíåìó çíà÷åíèþ ñóùåñòâåííî ìåíüøå), òàê è ñ ðîñòîì íàãðóçêè (âðåìÿ ïåðåêëþ÷åíèÿ ïîòîêà ïðè óâåëè÷åíèè ÷èñëà ïîòîêîâ 2...128 åä. ó QNX âûðîñëî òîëüêî â 1,65 ðàçà, òîãäà êàê ó VxWorks — â 2,24 ðàçà).
Ïî äàííûì, ïîëó÷åííûì â êîìïàíèè ÐÒÑîôò, èçâåñòíî, ÷òî LynxOS èìååò ïðèáëèçèòåëüíî òå æå õàðàêòåðèñòèêè, ÷òî VxWorks.
Óïðàâëåíèå äîñòóïîì ê ðåñóðñàì
Îöåíèì êà÷åñòâî ðàçãðàíè÷åíèÿ äîñòóïà, ïðåäëàãàåìîå òîé èëè èíîé ÎÑ ÐÂ, ê êðèòè÷åñêèì ðåñóðñàì âû÷èñëèòåëüíîé ñèñòåìû, òàêèì êàê ïàìÿòü è ïðîöåññîðíîå âðåìÿ.
Ïåðâûé âîïðîñ, íà êîòîðûé íóæíî íàéòè îòâåò — ïîääåðæèâàåò ëè ÎÑ ìîäåëü ïðîöåññîâ. Ïðîöåññ — ýòî ëîãè÷åñêèé îáúåêò, êîòîðûé âëàäååò îäíèì èëè íåñêîëüêèìè ïîòîêàìè, àññîöèèðîâàííûìè ñ íèìè ðåñóðñàìè è êîíòåêñòîì — ñîäåðæèìûì ðåãèñòðîâ è ñ÷åò÷èêîâ â êàæäûé îòäåëüíûé ìîìåíò âðåìåíè.
Çàäà÷à ïðîöåññîâ ñîñòîèò:
Ñåãìåíòèðîâàíèå òàêæå îáåñïå÷èâàåò ðàçäåëåíèå àäðåñíûõ ïðîñòðàíñòâ (â ýòîì ñìûñëå âîçìîæíîñòè ñåãìåíòèðîâàíèÿ è ïðîöåññîâ äóáëèðóþò äðóã äðóãà). Êðîìå òîãî, ñåãìåíòèðîâàíèå îáåñïå÷èâàåò êàæäîìó ñåãìåíòó, ñîäåðæàùåìó îäèí èëè íåñêîëüêî ïðîöåññîâ (èëè ïîòîêîâ, åñëè ÎÑ íå ïîääåðæèâàåò ìîäåëü ïðîöåññîâ), ãàðàíòèðîâàííûé áþäæåò âðåìåíè. Òàêèì îáðàçîì, åñëè âûñîêîïðèîðèòåòíûé ïîòîê çàöèêëèòñÿ è íàðóøèò ðàáîòó ñâîåãî ñåãìåíòà, âñå îñòàëüíûå ñåãìåíòû áóäóò ïîëó÷àòü ïðîöåññîðíîå âðåìÿ â ñîîòâåòñòâèè ñ óñòàíîâêàìè, îïðåäåëåííûìè íà ñòàäèè ïðîåêòèðîâàíèÿ, è ïðîäîëæàòü íîðìàëüíî ôóíêöèîíèðîâàòü.
LynxOS è QNX ïîääåðæèâàþò êàê ìîäåëü ïðîöåññîâ, òàê è ñåãìåíòèðîâàíèå.
ÎÑ VxWorks èìååò ìåõàíèçì ñåãìåíòèðîâàíèÿ, íî íå ïîääåðæèâàåò ïðîöåññíóþ ìîäåëü.  öåëîì, ýòî äîïóñòèìî, òàê êàê ñåãìåíòèðîâàíèå îáåñïå÷èâàåò ðàçäåëåíèå àäðåñíûõ ïðîñòðàíñòâ. Íî îòñóòñòâèå ïðîöåññîâ íåñåò íåêîòîðûå íåóäîáñòâà. Îáû÷íî äåëåíèå íà ñåãìåíòû âûïîëíÿåòñÿ èñõîäÿ èç öåëåâîãî ïðåäíàçíà÷åíèÿ ÏÎ è åãî êðèòè÷íîñòè. Íàïðèìåð, íåêîòîðûé ñåãìåíò ìîæåò ñîäåðæàòü ÏÎ óïðàâëåíèÿ ïèëîòàæíî-íàâèãàöèîííûì êîìïëåêñîì, èìåþùåå âûñîêèé óðîâåíü êðèòè÷íîñòè. Íî äàííîå ÏÎ òàêæå ïðåäñòàâëÿåò ñîáîé äîñòàòî÷íî ñëîæíûé êîìïëåêñ, êîòîðûé ëîãè÷íî áûëî áû ðàçäåëèòü íà íåçàâèñèìûå (ïî ïàìÿòè) ìîäóëè. ÎÑ VxWorks òàêóþ âîçìîæíîñòü íå ïðåäîñòàâëÿåò, òî åñòü ñåãìåíò áóäåò ñîñòîÿòü èç ïîòîêîâ ñ îáùåé ïàìÿòüþ, ÷òî óñëîæíÿåò îðãàíèçàöèþ ïàðàëëåëüíîé ðàçðàáîòêè è, â êîíå÷íîì ñ÷åòå, ñíèæàåò íàäåæíîñòü ÏÎ.
Ïîääåðæêà ìóëüòèïðîöåññîðíûõ è ðàñïðåäåëåííûõ ñèñòåì
Ñòîèìîñòü ìíîãîïðîöåññîðíûõ ìîäóëåé â ïîñëåäíåå âðåìÿ ñóùåñòâåííî ñíèçèëàñü, è ïîòîìó îíè ñòàëè âñå ÷àùå ïðèìåíÿòüñÿ âî âñòðîåííûõ ñèñòåìàõ. Ðàçóìååòñÿ, ÎÑ Ð äîëæíà îáåñïå÷èâàòü ïîääåðæêó òàêèõ ïëàò.
Äðóãîå ïåðñïåêòèâíîå íàïðàâëåíèå â ïîñòðîåíèè ÑÀÓ — ýòî ðàñïðåäåëåííûå ñèñòåìû, ãäå ìîäóëè ðàçíåñåíû â ïðîñòðàíñòâå, à êîììóíèêàöèÿ ìåæäó íèìè ïðîèñõîäèò ÷åðåç íåêîòîðóþ ñåòåâóþ ñðåäó. Îïÿòü æå ïðèìåíÿåìàÿ ÎÑ Ð äîëæíà èìåòü óäîáíûå è íàäåæíûå ñðåäñòâà äëÿ îðãàíèçàöèè âçàèìîäåéñòâèÿ ìîäóëåé: ïîääåðæêà ðàçëè÷íûõ ñåòåâûõ ïðîòîêîëîâ, ñðåäñòâà îáåñïå÷åíèÿ ñåòåâîé ïðîçðà÷íîñòè.
ÎÑ ÐÂ QNX ïðåäëàãàåò ïîääåðæêó ìíîãîïðîöåññîðíûõ ïëàò. Äëÿ VxWorks òàêàÿ ïîääåðæêà ïîêà òîëüêî àíîíñèðîâàíà. Àâèàöèîííîé âåðñèè LynxOS ñ ïîääåðæêîé ìíîãîïðîöåññîðíûõ ïëàò ïîêà òîæå íå ñóùåñòâóåò.
 îòíîøåíèè ïîääåðæêè ñåòåâûõ ïðîòîêîëîâ íóæíî îòìåòèòü, ÷òî ÎÑ Ð LynxOS, VxWorks è QNX îáëàäàþò ïðèìåðíî ðàâíûìè (è øèðîêèìè) âîçìîæíîñòÿìè. Äîïîëíèòåëüíûì ïëþñîì ÎÑ Ð QNX ÿâëÿåòñÿ åå ñïåöèàëüíàÿ àðõèòåêòóðà ñåòåâîé ïîäñèñòåìû, îáåñïå÷èâàþùàÿ ñåòåâóþ «ïðîçðà÷íîñòü» ïðèêëàäíûõ ïðîãðàìì: ëþáîé ïðîöåññ ìîæåò âûçâàòü äðóãîé ïðîöåññ íà óäàëåííîì ìîäóëå òàê æå, êàê è ïðîöåññ íà ëîêàëüíîì ìîäóëå.
Ïîääåðæêà ôàéëîâûõ ñèñòåì
Âîçìîæíîñòü õðàíåíèÿ èíôîðìàöèè â âèäå ôàéëîâ ÿâëÿåòñÿ óäîáíîé è òðàäèöèîííîé. È íàîáîðîò, îòñóòñòâèå òàêîé âîçìîæíîñòè ñîçäàåò òðóäíîñòè ïðè õðàíåíèè ðåäêî èçìåíÿåìûõ äàííûõ è ñîçäàíèè ðàñïðåäåëåííûõ ñèñòåì.
 òàáë. 4 ïîêàçàíà ïîääåðæêà ôàéëîâûõ ñèñòåì êàæäîé èç ðàññìàòðèâàåìûõ ÎÑ.
QNX îáëàäàåò íàèáîëåå øèðîêîé ïîääåðæêîé ôàéëîâûõ ñèñòåì. Êðîìå òîãî, åå ôàéëîâàÿ ñèñòåìà íà ôëýø ÿâëÿåòñÿ îòêàçîóñòîé÷èâîé.
Êà÷åñòâî äîêóìåíòàöèè
Êà÷åñòâî äîêóìåíòàöèè ÎÑ Ð LynxOS, VxWorks, QNX äîñòàòî÷íî âûñîêîå. Îäíàêî åñòü è íàðåêàíèÿ ïî ïîâîäó äîêóìåíòàöèè:
Òåì íå ìåíåå, êîìïàíèè ðàáîòàþò íàä êà÷åñòâîì ìàòåðèàëà. Äîêóìåíòàöèÿ íà òåêóùóþ âåðñèþ QNX (6.3.2) ñóùåñòâåííî ðàñøèðåíà, íàëèöî ïåðåðàáîòêà íåêîòîðûõ ÷àñòåé.
Êà÷åñòâî òåõíè÷åñêîé ïîääåðæêè
Ïî êà÷åñòâó îôèöèàëüíîé òåõíè÷åñêîé ïîääåðæêè íåñîìíåííûé ëèäåð — ýòî LynxOS. Êîìïàíèÿ LynuxWorks îáåùàåò äàòü îòâåò íà ëþáîé òåõíè÷åñêèé âîïðîñ â òå÷åíèå 4 ÷àñîâ ñ ìîìåíòà îïóáëèêîâàíèÿ çàïðîñà. LynxOS ðàñïðîñòðàíÿåòñÿ íà òåððèòîðèè Ðîññèè êîìïàíèåé ÐÒÑîôò, èìåþùåé áîëüøîé øòàò ñîòðóäíèêîâ, ñïîñîáíûõ îêàçàòü êâàëèôèöèðîâàííóþ ïîìîùü. Íåäîñòàòêîì LynxOS ÿâëÿåòñÿ òî, ÷òî ÎÑ ïîêà ÷òî íå î÷åíü ðàñïðîñòðàíåíà â Ðîññèè, ñîîòâåòñòâåííî, íåò ñôîðìèðîâàâøåãîñÿ ñîîáùåñòâà ïîëüçîâàòåëåé, è äàæå íåò ðóññêîÿçû÷íîãî ôîðóìà.
Êîìïàíèÿ QSS (ïðîèçâîäèòåëü QNX) òàêæå ïðåäëàãàåò õîðîøåå êà÷åñòâî òåõíè÷åñêîé ïîääåðæêè, íî áûñòðîòà îòâåòà íå ãàðàíòèðóåòñÿ.  îòëè÷èå îò LynxOS ÎÑ Ð QNX èìååò õîðîøî îðãàíèçîâàííîå ñîîáùåñòâî ïîëüçîâàòåëåé êàê çà ðóáåæîì, òàê è â Ðîññèè. Îòâåòû íà áîëüøèíñòâî âîïðîñîâ ìîæíî íàéòè íà ýòèõ ôîðóìàõ. QNX â íàøåé ñòðàíå ðàñïðîñòðàíÿåòñÿ êîìïàíèåé «ÑÂÄ Âñòðàèâàåìûå Ñèñòåìû», ñîòðóäíèêè êîòîðîé ñïîñîáíû îêàçàòü ãðàìîòíóþ òåõïîääåðæêó è âûïîëíèòü ðàáîòû ïî àäàïòàöèè ÎÑ íà ñïåöèôè÷íûå ïðîöåññîðíûå ïëàòû. Êðîìå òîãî, êîìïàíèÿ èìååò ïðÿìûå êîíòàêòû ñ QSS è ìîæåò ïîëó÷èòü êîíñóëüòàöèè ïî ñëîæíûì âîïðîñàì ó ðàçðàáîò÷èêà ÎÑ Ð QNX.
Êîìïàíèÿ WindRiver, ðàçðàáîò÷èê VxWorks, òðàäèöèîííî ïðèäåðæèâàåòñÿ çàêðûòîé òåõíè÷åñêîé ïîëèòèêè, òî åñòü èíôîðìàöèþ î ïðèíöèïàõ ðàáîòû ÎÑ ïîëó÷èòü äîñòàòî÷íî òÿæåëî. Ðóññêîÿçû÷íîãî ôîðóìà ó äàííîé ÎÑ òàêæå íåò. ÎÑ Ð VxWorks ó íàñ â ñòðàíå ðàñïðîñòðàíÿåòñÿ êîìïàíèåé «ÀÂÄ Ñèñòåìñ», êîòîðàÿ â îñíîâíîì çàíèìàåòñÿ ïðîäàæàìè ãîòîâûõ ïðîãðàììíî-àïïàðàòíûõ ðåøåíèé çàðóáåæíîãî ïðîèçâîäñòâà.
Îòêðûòîñòü èñõîäíûõ êîäîâ
Îòêðûòàÿ ÎÑ ÐÂ èìååò ïî êðàéíåé ìåðå òðè ïðåèìóùåñòâà:
Ñ ñåíòÿáðÿ 2007 ãîäà êîìïàíèÿ QSS îòêðûëà èñõîäíûå êîäû ÿäðà QNX (âêëþ÷àÿ ïàêåò ñåãìåíòèðîâàíèÿ Adaptive Partitioning, ïàêåò âûñîêîé ãîòîâíîñòè High Availability). Íåìíîãèì ïîçæå áûëè îòêðûòû èñõîäíûå êîäû ñåòåâîé ïîäñèñòåìû.  íàñòîÿùåå âðåìÿ íà îôèöèàëüíîì ñàéòå äîñòóïíà äëÿ ñêà÷èâàíèÿ áåòà-âåðñèÿ 6.4.0.
Íàäî îòìåòèòü, ÷òî íà ñåãîäíÿøíèé äåíü íå âñå ìîäóëè QNX îòêðûòû (íàïðèìåð, íåò êîäîâ äëÿ ãðàôè÷åñêîé è ôàéëîâîé ñèñòåì), è ëèöåíçèÿ íàëàãàåò îãðàíè÷åíèå íà èñïîëüçîâàíèå «èñõîäíèêîâ»: òîëüêî äëÿ íåêîììåð÷åñêîãî ïðèìåíåíèÿ. Òåì íå ìåíåå, ïîëüçîâàòåëü QNX ïîëó÷àåò óêàçàííûå âûøå ïðåèìóùåñòâà áåñïëàòíî.
Èñõîäíûå êîäû LynxOS è VxWorks äîñòóïíû â ïðîäàæå. Öåíà íà òàêîé ïðîäóêò äîãîâîðíàÿ.
Èíñòðóìåíòàëüíûå ñðåäñòâà
Íàëè÷èå õîðîøèõ èíñòðóìåíòàëüíûõ ñðåäñòâ âî ìíîãîì îïðåäåëÿåò êà÷åñòâî è ñêîðîñòü ðàçðàáîòêè ïðèêëàäíûõ ïðîãðàìì ïîä òó èëè èíóþ ÎÑ. Íàäî îòìåòèòü, ÷òî LynxOS, VxWorks è QNX â íàñòîÿùåå âðåìÿ ïðåäîñòàâëÿþò õîðîøåãî êà÷åñòâà èíñòðóìåíòàëüíûå ñðåäñòâà, êîòîðûå âêëþ÷àþò èíòåãðèðîâàííóþ ñðåäó ðàçðàáîòêè (ÈÑÐ) è îòëàäêè ïðèêëàäíîãî ÏÎ, ñðåäñòâà ïðîôèëèðîâàíèÿ ïðîãðàìì (äëÿ îáíàðóæåíèÿ «óçêèõ ìåñò» ïî ïðîèçâîäèòåëüíîñòè, ïàìÿòè è ïð.). Ýðãîíîìèêà ÈÑÐ äëÿ äàííûõ ÎÑ Ð â öåëîì íå óñòóïàåò ðàçâèòûì ñðåäñòâàì ðàçðàáîòêè äëÿ îáû÷íûõ ÎÑ (íàïðèìåð, MS Windows).
Ïåðåíîñèìîñòü ïðèêëàäíîãî ÏÎ
Ïåðåíîñèìîñòü ïðèêëàäíîãî ÏÎ îáåñïå÷èâàåò âîçìîæíîñòü åãî èñïîëüçîâàíèÿ ïîä äðóãèå ÎÑ (â òîì ÷èñëå, íå ÎÑ ÐÂ). Ïåðåíîñèìîñòü äàåò îïðåäåëåííóþ íåçàâèñèìîñòü ðàçðàáîò÷èêó ïðèêëàäíîãî ÏÎ îò ÎÑ ÐÂ: â ñëó÷àå íåîáõîäèìîñòè ìîæíî ñ íåâûñîêèìè èçäåðæêàìè ïåðåéòè íà äðóãóþ ÎÑ.
Âîçìîæíîñòü íàïèñàíèÿ ïåðåíîñèìîãî ÏÎ îïðåäåëÿåòñÿ â òåêóùèé ìîìåíò ñîîòâåòñòâèåì ñòàíäàðòó POSIX. Âñå ðàññìàòðèâàåìûå ÎÑ ÐÂ ïîääåðæèâàþò ñòàíäàðò POSIX 1003.1. Ïðåèìóùåñòâî åñòü ó LynxOS — äàííàÿ ÎÑ îáëàäàåò áèíàðíîé ñîâìåñòèìîñòüþ ñ ÎÑ Linux. Òî åñòü ïðèëîæåíèÿ Linux ìîãóò áûòü çàïóùåíû ïîä LynxOS áåç ïåðåêîìïèëèðîâàíèÿ. È, íàîáîðîò, ïðèëîæåíèÿ LynxOS ìîãóò áûòü çàïóùåíû â Linux (âåðñèè 2.4.x c áèáëèîòåêîé ÿçûêà Ñè glibs âåðñèè 2.2.2).
Îñòàëüíûå ÎÑ Ð äëÿ çàïóñêà Linux-ïðèëîæåíèé òðåáóþò èõ ïåðåêîìïèëÿöèè.  ýòîì ñëó÷àå çà÷àñòóþ ïðîöåññ ïåðåíîñà äàæå POSIX-ñîâìåñòèìûõ ïðèëîæåíèé ìîæåò ñòàòü äîñòàòî÷íî òðóäîåìêèì èç-çà ðàçíèöû â ðåàëèçàöèè áèáëèîòåê è êîìïèëÿòîðîâ.
Ïîääåðæêà ïðîöåññîðíûõ àðõèòåêòóð
Îòå÷åñòâåííûå ðàçðàáîò÷èêè ñèñòåì óïðàâëåíèÿ äëÿ àâèàöèè â ñåãîäíÿøíèé ïåðèîä ïåðåõîäà îò âíóòðèôèðìåííûõ ÎÑ ê êîììåð÷åñêèì çà÷àñòóþ îêàçûâàþòñÿ â ñèòóàöèè, êîãäà íóæíî ïîäîáðàòü è àäàïòèðîâàòü ÎÑРê óæå ñóùåñòâóþùåé ïðîöåññîðíîé ïëàòå.  ýòîì ñëó÷àå îäíèì èç êëþ÷åâûõ àðãóìåíòîâ ïðè âûáîðå ÎÑ ÿâëÿåòñÿ ïîääåðæêà àðõèòåêòóðû ïðîöåññîðà, èñïîëüçóåìîãî íà ïëàòå.
Ñîîòâåòñòâèå àâèàöèîííûì ñòàíäàðòàì
 çàðóáåæíîé ïðàêòèêå ÏÎ äëÿ ñèñòåì àâèîíèêè äîëæíî èìåòü ñåðòèôèêàò ñîîòâåòñòâèÿ ñòàíäàðòó DO-178B. Åñëè ÏÎ ðàçíûõ óðîâíåé êðèòè÷íîñòè âûïîëíÿåòñÿ íà îäíîì ïðîöåññîðíîì ìîäóëå, òî ïðèìåíÿåìàÿ ÎÑРäîëæíà ïîääåðæèâàòü êîíöåïöèþ ðàçäåëîâ. (Èíà÷å äîêàçàòü íåðàñïðîñòðàíåíèå îøèáêè ïðàêòè÷åñêè íåâîçìîæíî). Êàê óæå ãîâîðèëîñü, ëó÷øå, åñëè èíòåðôåéñ ïðîãðàììèðîâàíèÿ ÎÑРñîîòâåòñòâóåò ñòàíäàðòó ARINC-653, òàê êàê ñòàíäàðò õîðîøî èçâåñòåí çàðóáåæíûì ñåðòèôèêàöèîííûì îðãàíàì.
LynxOS â ÷àñòè ñîîòâåòñòâèÿ ñòàíäàðòàì ÿâëÿåòñÿ ëèäåðîì. Îíà ïîääåðæèâàåò ARINC-653, ñóùåñòâóåò äîñòàòî÷íî ïðèìåðîâ ñèñòåì, ñåðòèôèöèðîâàííûõ ïî DO-178B, ïîñòðîåííûõ íà åå îñíîâå. Êëþ÷åâûì ìîìåíòîì ÿâëÿåòñÿ òî, ÷òî êîìïàíèÿ LynuxWorks ïðåäëàãàåò íàáîð RSC (ïðàâäà, àâòîðàì ñòàòüè íè÷åãî íå èçâåñòíî î öåíå).
VxWorks ñîîòâåòñòâóåò ñòàíäàðòó ARINC-653, è ñèñòåìû, ïîñòðîåííûå íà åå îñíîâå, ìîãóò áûòü ñåðòèôèöèðîâàíû ïî DO-178B (ñóùåñòâóåò áîëüøîå ÷èñëî ïðèìåðîâ).
QNX íå ñîîòâåòñòâóåò ARINC-653, è ïîêà íå ñóùåñòâóåò ñèñòåì íà èõ îñíîâå, ñåðòèôèöèðîâàííûõ ïî DO-178B.
Íàäî îòìåòèòü, ÷òî QNX-ñèñòåìû ïðèíöèïèàëüíî ìîãóò èñïîëüçîâàòüñÿ äëÿ ïîñòðîåíèÿ ÈÌÀ, ïîòîìó ÷òî QNX ïîääåðæèâàåò ñâîé ìåòîä îáåñïå÷åíèÿ êîíöåïöèè ðàçäåëîâ, êîòîðûé ÿâëÿåòñÿ âåñüìà õîðîøåé àëüòåðíàòèâîé ARINC-653 è, êðîìå òîãî, ïîçâîëÿåò ýêîíîìèòü ïðîöåññîðíîå âðåìÿ.
 ÷àñòè àíàëîãè÷íûõ ðîññèéñêèõ ñòàíäàðòîâ äëÿ âîåííîé àâèàöèè (ÃÎÑÒ Ð ÈÑÎ/ÌÝÊ 51904-2002) íåò åùå íè îäíîãî ïðèìåðà ñåðòèôèöèðîâàííîé ñèñòåìû, õîòÿ ïðèíöèïèàëüíî íà îñíîâå ëþáîé èç ðàññìàòðèâàåìûõ ÎÑ ìîæíî òàêóþ ñèñòåìó ðàçðàáîòàòü. Äëÿ ÎÑ Ð QNX â íàñòîÿùåå âðåìÿ âåäåòñÿ ðàáîòà ïî ïîäãîòîâêå îñíîâíûõ ìîäóëåé ÎÑ ê ñåðòèôèêàöèè.
Ðàçâèòîñòü ñèñòåìû ïîäãîòîâêè ñïåöèàëèñòîâ
Áûñòðîòà è êà÷åñòâî îáó÷åíèÿ ïåðñîíàëà, ðàáîòàþùåãî ñ ÎÑ Ð è ðàçëè÷íûìè èíñòðóìåíòàðèÿìè ïî ðàçðàáîòêå è îòëàäêå ÏÎ íàïðÿìóþ ñâÿçàíî ñî ñêîðîñòüþ ðàçðàáîòêè ÏÎ è åãî êà÷åñòâîì. Âåäóùèå êîìïàíèè â îáëàñòè âñòðîåííîãî è ñèñòåìíîãî ÏÎ, òàêèå êàê WindRiver, LynuxWorks, QSS, ïðîâîäÿò øèðîêîìàñøòàáíóþ ïðîãðàììó êóðñîâ è òðåíèíãîâ ïî èçó÷åíèþ èñïîëüçîâàíèÿ ïðîäóêòîâ êîìïàíèè, â òîì ÷èñëå è ÎÑ ÐÂ.
Ðåçóëüòàòû ñðàâíåíèÿ
ÎÑРQNX Neutrino ÿâëÿåòñÿ íàèáîëåå ñîâåðøåííîé ÎÑ ñ òåõíè÷åñêîé òî÷êè çðåíèÿ, ðàñïîëàãàåò õîðîøèì íàáîðîì èíñòðóìåíòàëüíûõ ñðåäñòâ, èìååò îòíîñèòåëüíî íåâûñîêóþ öåíó. Ìèêðîÿäåðíàÿ àðõèòåêòóðà îáåñïå÷èâàåò âûñîêóþ íàäåæíîñòü è ìîäóëüíîñòü ðàçðàáàòûâàåìûõ ñèñòåì. Äîïîëíèòåëüíûì ïëþñîì ÿâëÿåòñÿ îòêðûòîñòü èñõîäíûõ êîäîâ. Íî åñòü è «ëîæêà äåãòÿ»: â íàñòîÿùåå âðåìÿ QNX ïðàêòè÷åñêè íèãäå íå èñïîëüçóåòñÿ â àâèàöèè, è ïî ýòîìó ïàðàìåòðó äàííàÿ ÎÑ ïðîèãðûâàåò êîíêóðåíòàì (LynxOS è VxWorks). Äîïîëíèòåëüíûé ìèíóñ QNX: íåñîîòâåòñòâèå ñòàíäàðòó ARINC-653.
Íàäî îòìåòèòü, ÷òî ïðèíöèïèàëüíî QNX Neutrino èìååò âñå íåîáõîäèìûå ìåõàíèçìû äëÿ ðàáîòû â ñèñòåìàõ àâèîíèêè. Êðîìå òîãî, íàäåæíîñòü è âûñîêàÿ ãîòîâíîñòü ñèñòåì íà áàçå QNX äîêàçàíà â äðóãèõ îòðàñëÿõ, â êîòîðûõ öåíà îøèáêè äàæå âûøå, ÷åì â àâèàöèè (óïðàâëåíèå ÿäåðíûì ðåàêòîðîì).
Ðàáîòà ïî ïîäãîòîâêå ê ñåðòèôèêàöèè QNX Neutrino ïî òðåáîâàíèÿì îòå÷åñòâåííûõ àâèàöèîííûõ ñòàíäàðòîâ â íàñòîÿùåå âðåìÿ âåäåòñÿ êîìïàíèåé SWD Software.
ÎÑРLynxOS-178, íàïðîòèâ, èìååò âñå íåîáõîäèìûå ñåðòèôèêàòû çà ðóáåæîì, õîòÿ ïî ìíîãèì äðóãèì êðèòåðèÿì âûãëÿäèò ìåíåå ïðåäïî÷òèòåëüíî, ÷åì QNX Neutrino. Îòìåòèì, ÷òî äëÿ ïðèìåíåíèÿ â ðîññèéñêîé àâèàöèîííîé ïðîìûøëåííîñòè ÎÑРLynxOS-178 òàêæå äîëæíà áûòü ñåðòèôèöèðîâàíà ïî îòå÷åñòâåííûì ÃÎÑÒ.
ÎÑ VxWorks èìååò äàâíþþ èñòîðèþ ïðèìåíåíèÿ â îòâåòñòâåííûõ ïðèëîæåíèÿõ çà ðóáåæîì. Òåì íå ìåíåå, íàø àíàëèç ïîêàçûâàåò, ÷òî îíà âûãëÿäèò ìåíåå ïðåäïî÷òèòåëüíî äâóõ ïåðâûõ ÎÑ ïî ìíîãèì êðèòåðèÿì. Êðîìå òîãî, àâòîðèòåò VxWorks ïîäðûâàåò ñòðàòåãèÿ çàêðûòîé ðàçðàáîòêè.
Ýêñïåðòíàÿ ãðóïïà / R&D.CNews


