Mach
| Íåîáõîäèìî ïðîâåðèòü êà÷åñòâî ïåðåâîäà è ïðèâåñòè ñòàòüþ â ñîîòâåòñòâèå ñî ñòèëèñòè÷åñêèìè ïðàâèëàìè Ýíöèêëîïåäèè. |
|  ýòîé ñòàòüå íå õâàòàåò ññûëîê íà èñòî÷íèêè èíôîðìàöèè.
Èíôîðìàöèÿ äîëæíà áûòü ïðîâåðÿåìà, èíà÷å îíà ìîæåò áûòü ïîñòàâëåíà ïîä ñîìíåíèå è óäàëåíà.
Âû ìîæåòå îòðåäàêòèðîâàòü ýòó ñòàòüþ, äîáàâèâ ññûëêè íà àâòîðèòåòíûå èñòî÷íèêè. Ýòà îòìåòêà ñòîèò íà ñòàòüå ñ 16 ìàÿ 2008. |
Mach â ìèêðîÿäðî îïåðàöèîííîé ñèñòåìû, ðàçðàáîòàííîå â Carnegie Mellon University ïðè ïðîâåäåíèè èññëåäîâàòåëüñêèõ ðàáîò â îáëàñòè îïåðàöèîííûõ ñèñòåì, ãëàâíûì îáðàçîì, ðàñïðåäåë¸ííûõ è ïàðàëëåëüíûõ âû÷èñëåíèé. Ýòî îäèí èç ñàìûõ ïåðâûõ ïðèìåðîâ ìèêðîÿäðà, íî äî ñèõ ïîð îí ÿâëÿåòñÿ ñòàíäàðòîì äëÿ äðóãèõ ïîäîáíûõ ïðîåêòîâ.
Ïðîåêò ñóùåñòâîâàë ñ 1985 ïî 1994 ãîäû è áûë çàêîí÷åí âûïóñêîì Mach 3.0. Íåñêîëüêî èññëåäîâàòåëüñêèõ ãðóïï ïðîäîëæèëè ðàçðàáîòêó Mach; íàïðèìåð, Óíèâåðñèòåò Þòà íåêîòîðîå âðåìÿ â¸ë ïðîåêò Mach 4 [1] (àíãë.). Mach ðàçðàáàòûâàëñÿ êàê çàìåíà ÿäðà BSD UNIX, ïîýòîìó íå áûëî íåîáõîäèìîñòè â ðàçðàáîòêå íîâîãî îïåðàöèîííîãî îêðóæåíèÿ. Äàëüíåéøèå íàó÷íî-èññëåäîâàòåëüñêèå ðàáîòû ïî ïðîåêòó Mach, ïîõîæå, çàêîí÷åíû; íåñìîòðÿ íà ýòî, Mach è åãî ïðîèçâîäíûå èñïîëüçóþòñÿ â ðÿäå êîììåð÷åñêèõ îïåðàöèîííûõ ñèñòåì, íàïðèìåð, NeXTSTEP, íàèáîëåå çàìåòíîé èç êîòîðûõ ÿâëÿåòñÿ Mac OS X, â êîòîðîé èñïîëüçóåòñÿ ÿäðî XNU, âîáðàâøåå â ñåáÿ Mach 2.5. Ñèñòåìà óïðàâëåíèÿ âèðòóàëüíîé ïàìÿòüþ Mach áûëà ïåðåíÿòà ðàçðàáîò÷èêàìè BSD â CSRG è èñïîëüçóåòñÿ â ñîâðåìåííûõ UNIX-ñèñòåìàõ, ïðîèçâîäíûõ îò BSD, íàïðèìåð, FreeBSD. Íè Mac OS X, íè FreeBSD íå ñîõðàíèëè ìèêðîÿäåðíóþ àðõèòåêòóðó, èñïîëüçóåìóþ â Mach, õîòÿ Mac OS X ïðåäëàãàåò äëÿ èñïîëüçîâàíèÿ â ïðèëîæåíèÿõ ìèêðîÿäåðíóþ ñèñòåìó ìåæïðîöåññíîãî âçàèìîäåéñòâèÿ è ïðèìèòèâû óïðàâëåíèÿ.
Mach ÿâëÿåòñÿ ëîãè÷åñêèì ïðîäîëæåíèåì ÿäðà Accent, òàêæå ðàçðàáîòàííîãî â Carnegie Mellon University. Âåäóùèé ðàçðàáîò÷èê ïðîåêòà Ðè÷àðä Ðàøèä ñ 1991 ãîäà ðàáîòàåò â Microsoft â ïîäðàçäåëåíèè Microsoft Research. Åù¸ îäèí èç îñíîâíûõ ðàçðàáîò÷èêîâ, Àâàäèñ Òåâàíèàí ðàáîòàë ãëàâîé äåïàðòàìåíòà ðàçðàáîòêè ïðîãðàìì â NeXT, çàòåì, äî ìàðòà 2006, ãëàâîé äåïàðòàìåíòà ïåðñïåêòèâíûõ ïðîãðàììíûõ òåõíîëîãèé â Apple.
Ñîäåðæàíèå |
[ïðàâèòü] Êîíöåïöèÿ
Òàê êàê Mach áûë ñïðîåêòèðîâàí êàê áûñòðàÿ çàìåíà òðàäèöèîííîìó ÿäðó Unix, ìû ðàññìîòðèì â îñíîâíîì îòëè÷èÿ Mach îò Unix. Ñòàëî ïîíÿòíûì, ÷òî Unix-êîíöåïöèÿ «âñ¸ â ôàéë» áîëüøå íå ðàáîòàåò íà ñîâðåìåííûõ ñèñòåìàõ, íî òàêèå ñèñòåìû, êàê Plan 9 îò Bell Labs, âñ¸ æå ïûòàþòñÿ ñëåäîâàòü ïî ýòîìó ïóòè. Ðàçðàáîò÷èêè Mach çàìåòèëè íåãèáêîñòü òàêîãî ïîäõîäà, è ïðåäïîëîæèëè, ÷òî äðóãîé óðîâåíü âèðòóàëèçàöèè ìîæåò çàñòàâèòü ñèñòåìó «ðàáîòàòü» ñíîâà.
Îäíà èç âàæíåéøèõ àáñòðàêöèé â Unix â ýòî êîíâåéåðû (pipe). ×òî ïîõîæå íà êîíâåéåðû è ïîçâîëèò íà áîëåå îáùåì óðîâíå ñäåëàòü äîñòóïíûì ðàçëè÷íûå ïåðåìåùåíèÿ èíôîðìàöèè ìåæäó ïðîãðàììàìè? Òàêàÿ ñèñòåìà ìîæåò ñóùåñòâîâàòü, èñïîëüçóÿ ìåæïðîöåññíîå âçàèìîäåéñòâèå (IPC) â ïîõîæèé íà êîíâåéåðû ïðèíöèï îðãàíèçàöèè âçàèìîäåéñòâèÿ ïðîöåññîâ, ïîçâîëÿþùèé ïåðåìåùàòü ëþáóþ ôàéëîïîäîáíóþ èíôîðìàöèþ ìåæäó äâóìÿ ïðîãðàììàìè.  òî âðåìÿ êàê âî ìíîãèõ ñèñòåìàõ, âêëþ÷àÿ ðàçëè÷íûå Unix, óæå íåñêîëüêî ëåò ñóùåñòâîâàëè ðàçëè÷íûå ðåàëèçàöèè IPC, íî îíè áûëè ïðåäíàçíà÷åíû äëÿ ñïåöèàëüíûõ öåëåé è íå ìîãëè îáåñïå÷èòü òî, ÷òî ñîçäàòåëè Mach îò íèõ æäàëè.
 Carnegie Mellon University íà÷àëè ðàçðàáîòêó ÿäðà Accent, èñïîëüçóÿ IPC, áàçèðóþùèéñÿ íà ðàçäåëÿåìîé ïàìÿòè. Accent áûë ýêñïåðèìåíòàëüíîé ñèñòåìîé ñî ìíîæåñòâîì âîçìîæíîñòåé, ðàçðàáàòûâàåìûõ ïî âåÿíèþ ìîäû çà âñ¸ âðåìÿ ðàçðàáîòêè. Äîïîëíèòåëüíî, ïîëåçíîñòü Accent äëÿ èññëåäîâàíèÿ áûëà îãðàíè÷åíà, ïîòîìó ÷òî îí íå áûë Unix-ñîâìåñòèìûì, à Unix áûë óæå ñòàíäàðòîì äå-ôàêòî âî âñåõ èññëåäîâàòåëüñêèõ ÎÑ. Êðîìå òîãî, Accent áûë æ¸ñòêî ïðèâÿçàí ê ïëàòôîðìå, íà êîòîðîé ðàçðàáàòûâàëñÿ. Íî â íà÷àëå 1980-õ êàçàëîñü, ÷òî âñêîðå ïîÿâèòñÿ ìíîæåñòâî íîâûõ ïëàòôîðì, ìíîãèå èç êîòîðûõ áóäóò ïîääåðæèâàòü ìàññîâûé ïàðàëëåëèçì.
 íà÷àëå ðàçðàáîòêà Mach ðàññìàòðèâàëàñü, â îñíîâíîì, êàê ïîïûòêà ñîçäàòü êîíöåïòóàëüíî «÷èñòûé», îñíîâàííûé íà Unix, ëåãêî ïîðòèðóåìûé Accent. Áûëè ñôîðìóëèðîâàíû ñëåäóþùèå îñíîâíûå êîíöåïöèè:
- «çàäà÷à» â íàáîð ðåñóðñîâ êîòîðûå ïîçâîëÿþò «ïîòîêàì» èñïîëíÿòüñÿ
- «ïîòîê» â åäèíèöà, èñïîëíÿþùàÿñÿ íà ïðîöåññîðå
- «ïîðò» îïðåäåëÿåò çàùèù¸ííûé êîíâåéåð äëÿ IPC ìåæäó çàäà÷àìè
- «ñîîáùåíèå» ïåðåìåùàåòñÿ ìåæäó ïðîãðàììàìè ÷åðåç ïîðò
Mach ðàçðàáîòàí íà êîíöåïöèÿõ IPC Accentâ™à, íî ñäåëàí ñèñòåìîé, áîëüøå ïîõîæåé íà Unix, êîòîðàÿ ïîçâîëÿåò çàïóñêàòü Unix-ïðîãðàììû ñ ìèíèìàëüíûìè èçìåíåíèÿìè èëè âîâñå áåç íèõ. Äëÿ äîñòèæåíèÿ ýòîé öåëè â Mach ïîÿâèëàñü êîíöåïöèÿ «ïîðòà», ïðåäñòàâëÿþùåãî êîíåö â äâóõñòîðîííåì IPC. Ïîðòû áûëè çàùèùåíû è èìåëè ïðàâà, ïîäîáíûå ïðàâàì äîñòóïà íà ôàéëû â Unix, à òàêæå èñïîëüçîâàëè î÷åíü ïîõîæóþ íà Unix ìîäåëü çàùèòû. Äîïîëíèòåëüíî Mach ðàçðåøàë ëþáîé ïðîãðàììå âëàäåòü ïðèâèëåãèÿìè, êîòîðûìè îáû÷íî âëàäååò òîëüêî ÿäðî, ïîçâîëÿÿ íåïðèâèëåãèðîâàííîìó óðîâíþ (user-space) îáðàùàòüñÿ ê àïïàðàòíîìó îáåñïå÷åíèþ.
 Mach, êàê â Unix, ÎÑ îïÿòü ñòàëà ãëàâíûì îáðàçîì íàáîðîì óòèëèò. Êàê è Unix, â Mach åñòü êîíöåïöèÿ «äðàéâåðà» êàê ïîñðåäíèêà ìåæäó ñîáñòâåííî ÿäðîì è àïïàðàòíûì îáåñïå÷åíèåì. Îäíàêî âñå äðàéâåðû äëÿ ñóùåñòâóþùåãî àïïàðàòíîãî îáåñïå÷åíèÿ äîëæíû áûòü âêëþ÷åíû â ìèêðîÿäðî. Äðóãèå àðõèòåêòóðû, áàçèðóþùèåñÿ íà ñëîÿõ àáñòðàêöèè îò îáîðóäîâàíèÿ èëè ýêçîÿäðàõ ìîãóò îòäåëÿòü äðàéâåðû èç ìèêðîÿäðà.
Ãëàâíûì îòëè÷èåì îò Unix áûëî òî, ÷òî óòèëèòû äîëæíû áûëè ðàáîòàòü íå ñ ôàéëàìè, à ñ çàäà÷àìè. Áîëüøå êîäà áûëî ïåðåìåùåíî èç ÿäðà â íåïðèâèëåãèðîâàííûé ðåæèì. ßäðî çà ñ÷¸ò ýòîãî ñòàëî ñóùåñòâåííî ìåíüøå, îòñþäà òåðìèí ìèêðîÿäðî äëÿ îáîçíà÷åíèÿ ÿäðà Mach.  îòëè÷èå îò òðàäèöèîííûõ ñèñòåì, ïîä Mach ïðîöåññ (èëè «çàäà÷à») ìîæåò ñîñòîÿòü èç íàáîðà ïîòîêîâ. Mach áûë ïåðâîé ÎÑ, êîòîðàÿ îïðåäåëèëà ïîíÿòèå ïîòîê â ýòîì ñìûñëå. Çàäà÷è ÿäðà áûëè ñâåäåíû ê ðàáîòå ñ îáîðóäîâàíèåì è ïîääåðæêå óòèëèò.
Ñóùåñòâîâàíèå ïîðòîâ è èñïîëüçîâàíèå IPC îïðåäåëÿåò áîëüøèíñòâî ðàçëè÷èé ìåæäó Mach è òðàäèöèîííûìè ÿäðàìè.  Unix äëÿ îáðàùåíèÿ ê ÿäðó èñïîëüçóþòñÿ «ñèñòåìíûå âûçîâû» èëè «ñèãíàë». Ïðîãðàììà èñïîëüçóåò áèáëèîòåêó, ÷òîáû ðàçìåñòèòü äàííûå â èçâåñòíîì ìåñòå â ïàìÿòè, è çàòåì âûçûâàåò ñïåöèàëüíîå ïðîãðàììíîå ïðåðûâàíèå. Êîãäà ñèñòåìà âïåðâûå çàïóñêàåò ÿäðî, îíà óñòàíàâëèâàåò îáðàáîò÷èê ýòîãî ïðåðûâàíèÿ, ïîýòîìó ïðîãðàììà, ïîðîæäàþùàÿ ïðåðûâàíèå, âûçûâàåò ÿäðî, êîòîðîå èññëåäóåò ïðèøåäøóþ èíôîðìàöèþ è ñîâåðøàåò äåéñòâèÿ.
 Mach äëÿ ýòîé öåëè èñïîëüçóåòñÿ IPC. Ïðîãðàììà çàïðàøèâàåò ó ÿäðà äîñòóï ê ïîðòó, à çàòåì èñïîëüçóåò ìåõàíèçì IPC äëÿ ïîñûëêè ñîîáùåíèé â ïîðò.  äðóãèõ ÿäðàõ ýòè ñîîáùåíèÿ îáðàáàòûâàþòñÿ ñèñòåìíûìè âûçîâàìè; â Mach ïðàêòè÷åñêè âñå çàïðîñû îáðàáàòûâàþòñÿ äðóãîé ïðîãðàììîé.
Èñïîëüçîâàíèå IPC äëÿ ïåðåäà÷è ñîîáùåíèé ïîääåðæèâàåò ïîòîêè è êîíêóðåíöèþ. Òàê êàê çàäà÷è ñîñòîÿò èç ìíîæåñòâà ïîòîêîâ, è èõ êîä â ïîòîêàõ èñïîëüçóåò ìåõàíèçì IPC. Mach ìîæåò çàìîðîçèòü èëè ðàçìîðîçèòü ïîòîê, ïîêà ñîîáùåíèå îáðàáàòûâàåòñÿ. Ýòî ïîçâîëÿåò ñèñòåìå áûòü ðàñïðåäåë¸ííîé íà ìíîæåñòâî ïðîöåññîðîâ, èñïîëüçóÿ ðàçäåëÿåìóþ ïàìÿòü ïðÿìî â áîëüøèíñòâå ñîîáùåíèé Mach, èëè ïóò¸ì äîáàâëåíèÿ êîäà äëÿ êîïèðîâàíèÿ ñîîáùåíèÿ â äðóãîé ïðîöåññîð, åñëè òðåáóåòñÿ.  òðàäèöèîííîì ÿäðå ýòî òðóäíî ðåàëèçîâàòü, ïîòîìó ÷òî ñèñòåìà äîëæíà áûòü óâåðåíà, ÷òî ðàçëè÷íûå ïðîãðàììû íå ïûòàþòñÿ ïèñàòü â òóæå ñàìóþ ïàìÿòü íà ðàçëè÷íûõ ïðîöåññîðàõ.  Mach ýòî õîðîøî îïðåäåëåíî è ëåãêî ðåàëèçóåòñÿ; ïðîöåññ ñîâåðøàþùèé äîñòóï ê ïàìÿòè, ïîðòàì äåëàåòñÿ ãðàæäàíèíîì ñèñòåìû.
Ñèñòåìà IPC èìååò ïðîáëåìû ñ ïðîèçâîäèòåëüíîñòüþ, äëÿ ïðåîäîëåíèÿ êîòîðûõ áûëî ðàçðàáîòàíî íåñêîëüêî ñòðàòåãèé.  ÷àñòíîñòè, Mach èñïîëüçóåò åäèíûé ìåõàíèçì ðàçäåëåíèÿ ïàìÿòè äëÿ ôèçè÷åñêîé ïåðåäà÷è ñîîáùåíèé îò îäíîé ïðîãðàììû ê äðóãîé. Ôèçè÷åñêè êîïèðîâàíèÿ ñîîáùåíèÿ áóäåò ìåäëåííûì, ïîýòîìó Mach îáðàùàåòñÿ ê áëîêó óïðàâëåíèÿ ïàìÿòüþ (MMU) äëÿ áûñòðîãî ñîîòíåñåíèÿ äàííûõ â îäíîé ïðîãðàììå è â äðóãîé. Òîëüêî åñëè äàííûå çàïèñûâàþòñÿ îíè áóäóò ôèçè÷åñêè ñêîïèðîâàíû, ïðîöåññ íàçûâàþùèéñÿ «êîïèðîâàíèå ïðè çàïèñè» (copy-on-write; cow).
Ñîîáùåíèÿ òàêæå ïðîâåðÿþòñÿ íà öåëîñòíîñòü ÿäðîì, ÷òîáû èçáåæàòü ïëîõèõ äàííûõ, êîòîðûå âûâåäóò èç ñòðîÿ îäíó èç ïðîãðàìì, ñîñòàâëÿþùèõ ñèñòåìó. Ïîðòû áûëè ðàçðàáîòàíû íà îñíîâå ôàéëîâîé ñèñòåìû Unix. Ýòî ïîçâîëèëî ïîðòàì èñïîëüçîâàòü ñóùåñòâóþùèå êîíöåïöèè íàâèãàöèè ïî ôàéëîâîé ñèñòåìå, à òàêæå ïðàâà äîñòóïà.
Ïî ñðàâíåíèþ ñ áîëåå òðàäèöèîííûìè ÎÑ ðàçðàáîòêà òàêîé ñèñòåìû ñòàíîâèòñÿ ïðîùå. Áîëüøàÿ ÷àñòü ñèñòåìû ìîæåò áûòü çàïóùåíà, îòëàæåíà è ñîçäàíà ñ ïîìîùüþ òåõ æå óòèëèò, ÷òî è ïðîãðàììû äëÿ òðàäèöèîííîé ñèñòåìû. Ñ ìîíîëèòíûì ÿäðîì îøèáêà â êîäå òðåáóåò âûêëþ÷åíèÿ öåëîé ìàøèíû è ïåðåçàãðóçêè, â òî âðåìÿ êàê â Mach òðåáóåòñÿ òîëüêî ïåðåçàïóñê ïðîãðàììû. Äîïîëíèòåëüíî ïîëüçîâàòåëü ìîæåò óêàçûâàòü ñèñòåìå âêëþ÷èòü èëè âûêëþ÷èòü âîçìîæíîñòè ïî ñâîåìó æåëàíèþ. Òàê êàê ÎÑ â ýòî êîëëåêöèÿ ïðîãðàìì, ðàçðàáîò÷èêè ìîãóò äîáàâëÿòü èëè óäàëÿòü å¸ ÷àñòè, ïðîñòî çàïóñêàÿ èëè óáèâàÿ èõ, êàê è ëþáóþ äðóãóþ ïðîãðàììó.
[ïðàâèòü] Ðàçðàáîòêà
Mach èçíà÷àëüíî ðàñïîëàãàëñÿ, êàê äîïîëíèòåëüíûé êîä, íàïèñàííûé ê ñóùåñòâóþùåìó 4.2BSD ÿäðó, êîòîðûé ïîçâîëÿë êîìàíäå ðàáîòàòü íà ñèñòåìå çàäîëãî äî òîãî, êàê îíà áûëà çàâåðøåíà. Ðàáîòà íà÷àëàñü ñ óæå ãîòîâîé Accent IPC/ïîðò ñèñòåìû, è ïåðåìåñòèëàñü íà äðóãèå êëþ÷åâûå ÷àñòè OS, çàäà÷è, ïîòîêè è âèðòóàëüíóþ ïàìÿòü. Ýòè ÷àñòè áûëè ïåðåïèñàíû íà âûçîâ ôóíêöèé â Mach; ïàðàëëåëüíî ñ ýòèì âåëàñü ðàáîòà íàä 4.3BSD.
 1986 ñèñòåìà áûëà çàâåðøåíà è ìîãëà çàïóñêàòñÿ íà DEC VAX. Íåñìîòðÿ íà ìàëîå ïðàêòè÷íîå çíà÷åíèå, öåëü ñîçäàòü ìèêðîÿäðî áûëà âîïëîùåíà â æèçíü. Âñêîðå ïîñëåäîâàë âûïóñê âåðñèé äëÿ IBM PC/RT è Sun Microsystems 68030 ðàáî÷èõ ñòàíöèé, ïðåäîñòàâëÿÿ ïîðòèðóåìîñòü ñèñòåìû. Ê 1987 â ñïèñîê âêëþ÷åíû Encore Multimax è Sequent Balance. Release 1 âûøåë â ýòîò ãîä, à Release 2 â ñëåäóþùèé.
Âñå ýòî âðåìÿ îáåùàííîå «íàñòîÿùåå» ìèêðîÿäðî íå áûëî ñîçäàíî. Ýòè ðàííèå âåðñèè Mach âêëþ÷àëè áîëüøóþ ÷àñòü 4.3BSD ÿäðà, ñèñòåìû èçâåñòíûå êàê POE, â ðåçóëüòàòå ýòî ÿäðî áûëî ôàêòè÷åñêè áîëüøå ÷åì Unix íà êîòîðîì îíî áàçèðîâàëîñü. Îäíàêî, öåëü ïåðåìåñòèòü Unix ñëîé èç ÿäðà, ãäå îíî áîëåå ïðîñòî ðàçðàáàòûâàëîñü è çàìåíÿëîñü áûëà äîñòèãíóòà. Ïðîèçâîäèòåëüíîñòü îñòàâëÿëà æåëàòü ëó÷øåãî, è áûë îñóùåñòâëåí ðÿä àðõèòåêòóðíûõ èçìåíåíèé ÷òîáû ðåøèòü ýòó ïðîáëåìó.
 ðåçóëüòàòå Mach 3 âûøåë â 1990, è ïðîèçâåë èíòåíñèâíûé èíòåðåñ. Ìàëåíüêàÿ êîìàíäà, êîòîðàÿ ñäåëàëà Mach, ïîðòèðîâàëà åãî íà ìíîæåñòâî ïëàòôîðì, âêëþ÷àÿ ñëîæíûå ìóëüòèïðîöåññîðíûå ñèñòåìû êîòîðûå ñîçäàâàëè ñåðü¸çíûå ïðîáëåìû äëÿ ñòàðîìîäíûõ ÿäåð. Òàêæå áûë âûçâàí èíòåðåñ â êîììåð÷åñêîì ðûíêå, ãäå íàøëèñü êîìïàíèè êîòîðûå õîòåëè áû èìåòü âîçìîæíîñòü ìåíÿòü ïëàòôîðìû, è åñëè áû îíè ïîðòèðîâàëè ñâîè ÎÑ íà Mach, òî ìîãëè áû áåçáîëåçíåííî ìåíÿòü ïëàòôîðìû.
Mach ïîëó÷èë âèäèìîå óñêîðåíèå êîãäà Open Source Foundation àíîíñèðîâàëî ÷òî îíè áóäóò ñîçäàâàòü áóäóùóþ âåðñèþ OSF/1 íà Mach 2.5, è áûëè áû ðàäû èñïîëüçîâàòü Mach 3. Mach 2.5 òàê æå áûë âûáðàí äëÿ NeXTSTEP ñèñòåì è íåêîòîðûì êîëè÷åñòâîì êîììåð÷åñêèõ ìóëüòèïðîöåññîðíûõ ïðîèçâîäèòåëåé. Ïðè ïîìîùè Mach 3 áûëî ñîâåðøåíî íåêîòîðîå ÷èñëî ïîïûòîê ïîðòèðîâàòü äðóãèå ÎÑ íà ýòî ÿäðî, âêëþ÷àÿ IBM Workplace OS è íåñêîëüêî ïîïûòîê îò Apple Computer ñîçäàòü êðîññ-ïëàòôîðìåííóþ âåðñèþ Mac OS.
Íåêîòîðîå âðåìÿ êàçàëîñü ÷òî êàæäàÿ ÎÑ ñîçäàííàÿ â êîíöå 1990-õ áóäåò áàçèðîâàòñÿ íà Mach.
[ïðàâèòü] Ïðîáëåìû ñ ïðîèçâîäèòåëüíîñòüþ
Mach èçíà÷àëüíî ïîçèöèîíèðîâàëñÿ êàê çàìåíà êëàññè÷åñêîìó Unix, è ïî ýòîé ïðè÷èíå ñîäåðæèò ìíîæåñòâî Unіõîâûõ èäåé. Ê ïðèìåðó, Mach èñïîëüçóåò ñèñòåìó ïðàâ è áåçîïàñíîñòè, îñíîâàííóþ íà Unixâ™îâîé ôàéëîâîé ñèñòåìå. Òàê êàê ÿäðî èñïîëíÿåòñÿ â ïðèâèëåãèðîâàíîì ðåæèìå (kernel-mode) è âîçìîæíî, ÷òî íåêîòîðàÿ ïðîãðàììà ïîøëåò êîìàíäó, êîòîðàÿ ïîâðåäèò ñèñòåìó, ÿäðó ïðèõîäèòñÿ ïðîâåðÿòü êàæäîå ñîîáùåíèå. Òàêæå áîëüøèíñòâî ôóíêöèîíàëà áûëî ðàñïîëîæåíî â ïðîãðàììàõ, èñïîëíÿþùèõñÿ â íåïðèâèëåãèðîâàííîì ðåæèìå (user-space), ýòî çíà÷èò, ÷òî íåîáõîäèì íåêîòîðûé ñïîñîá ðàçðåøåíèÿ òàêèì ïðîãðàììàì äîïîëíèòåëüíûõ äåéñòâèé, íàïðèìåð ðàáîòà ñ àïïàðàòíûì îáåñïå÷åíèåì.
Íåêîòîðûå âîçìîæíîñòè Mach áàçèðîâàëèñü íà òåõ æå ìåõàíèçìàõ IPC. Ê ïðèìåðó, Mach ñ ëåãêîñòüþ ìîæåò ïîääåðæèâàòü ìíîãîïðîöåññîðíûå êîìïüþòåðû.  òðàäèöèîííîì ÿäðå ýêñòåíñèâíàÿ ðàáîòà ïðîäåëûâàåòñÿ, ÷òîáû îáåñïå÷èòü ðååíòåðàáåëüíîñòü èëè ïðåðûâàåìîñòü ïðîãðàìì, çàïóùåííûõ íà ðàçíûõ ïðîöåññîðàõ è ñïîñîáíûõ âûçûâàòü ôóíêöèè ÿäðà â îäíî è òî æå âðåìÿ.  Mach êóñî÷êè îïåðàöèîííîé ñèñòåìû èçîëèðîâàíû â ñåðâåðàõ, êîòîðûå ìîãóò çàïóñêàòüñÿ, òàê æå, êàê è äðóãèå ïðîãðàììû â íà ëþáîì ïðîöåññîðå. Ïîòîìó òåîðåòè÷åñêè ÿäðî Mach òàêæå äîëæíî áûòü ðååíòåðàáåëüíûì, íî íà ïðàêòèêå ýòî íå ïðîáëåìà, òàê êàê âñå, ÷òî íóæíî Mach â ýòî íàïðàâèòü çàïðîñ êàêîé-íèáóäü íåïðèâèëåãèðîâàííîé ïðîãðàììå. Mach òàêæå âêëþ÷àë ñåðâåð, êîòîðûé ìîæåò ïåðåíàïðàâëÿòü ñîîáùåíèÿ íå òîëüêî ìåæäó ïðîãðàììàìè, íî è ïî ñåòè. Ðàáîòà â ýòîé îáëàñòè áûëà ïðîäåëàíà â êîíöå 1980-õ è íà÷àëå 1990-õ.
Èñïîëüçîâàíèå IPC äëÿ áîëüøèíñòâà çàäà÷ ñíèæàåò ïðîèçâîäèòåëüíîñòü.[1] Ñðàâíåíèÿ, ïðîâåäåííûå â 1997 ãîäó, ïîêàçàëè, ÷òî Unix, ïîñòðîåííûé íà Mach 3.0, íà 50 % ìåäëåííåå, ÷åì òðàäèöèîííûé Unix.[2]
Èññëåäîâàíèÿ ïîêàçàëè, ÷òî ïðîèçâîäèòåëüíîñòü ïàäàåò èç-çà IPC, è äîñòè÷ü óñêîðåíèÿ çà ñ÷åò ðàçäðîáëåíèÿ ÎÑ íà ìàëåíüêèå ñåðâåðà íåâîçìîæíî. Áûëî ñäåëàíî ìíîæåñòâî ïîïûòîê óëó÷øèòü ïðîèçâîäèòåëüíîñòü Mach, íî â ñåðåäèíå 1990 èíòåðåñ ïðîïàë. Êîíöåïöèÿ ñèñòåìû îñíîâàííîé íà IPC, ïîõîæå, óìåðëà.
Ôàêòè÷åñêè, èññëåäîâàíèå ïðèðîäû ïðîáëåì ïðîèçâîäèòåëüíîñòè âûÿâèëî íåñêîëüêî èíòåðåñíûõ ôàêòîâ: îäèí â IPC ñàì ïî ñåáå íå ÿâëÿåòñÿ ïðîáëåìîé, ïðîáëåìà â íåîáõîäèìîñòè îòîáðàæåíèÿ ïàìÿòè äëÿ åãî ïîääåðæêè, ÷òî äîáàâëÿåò íåáîëüøèå âðåìåííûå çàòðàòû. Áîëüøèíñòâî âðåìåíè (îêîëî 80 %) òðàòèòñÿ íà äîïîëíèòåëüíûå çàäà÷è â ÿäðå â íà îáðàáîòêó ñîîáùåíèÿ.  ïåðâóþ î÷åðåäü ïðîâåðêó ïðàâ ïîðòà è öåëîñòíîñòü ñîîáùåíèÿ.  òåñòàõ íà Intel 80486DX-50 ñòàíäàðòíûé Unix âûçîâ çàíèìàåò îêîëî 21 ìèêðîñåêóíäû, ñîîòâåòñòâóþùèé âûçîâ â Mach çàíèìàåò 114 ìèêðîñåêóíä. Èç íèõ 18 ìèêðîñåêóíä îòíîñÿòñÿ ê àïïàðàòíîìó îáåñïå÷åíèþ, îñòàëüíîå îòíîñèòñÿ ê ðàçëè÷íûì ôóíêöèÿì ÿäðà Mach.
Êîãäà Mach âïåðâûå áûë èñïîëüçîâàí â ñåðü¸çíûõ ðàçðàáîòêàõ (2.x âåðñèÿ), ïðîèçâîäèòåëüíîñòü áûëà íèæå, ÷åì â òðàäèöèîííûõ ÿäðàõ ïðèìåðíî íà 25 %. Ýòà öåíà íå âûçûâàëà áåñïîêîéñòâî, ïîòîìó ÷òî ñèñòåìà õîðîøî ïîðòèðîâàëàñü è ðàáîòàëà íà ìíîæåñòâå ïðîöåññîðîâ. Ôàêòè÷åñêè, ñèñòåìà ñêðûëà ñåðü¸çíûå ïðîáëåìû ñ ïðîèçâîäèòåëüíîñòüþ äî âûõîäà Mach 3, êîãäà ìíîæåñòâî ðàçðàáîò÷èêîâ ïîïûòàëîñü ñîçäàòü ñèñòåìû, çàïóñêàåìûå â íåïðèâèëåãèðîâàííîì ðåæèìå.
Êîãäà Mach 3 ïîïûòàëñÿ ïåðåìåñòèòü ÎÑ â íåïðèâèëåãèðîâàííûé ðåæèì, ïîòåðÿ ïðîèçâîäèòåëüíîñòè ñòàëà çàìåòíîé. Ðàññìîòðèì ïðîñòîé ïðèìåð: çàäà÷à óçíà¸ò òåêóùåå âðåìÿ. Ïîñûëàåòñÿ ñîîáùåíèå ÿäðó Mach, ýòî âûçûâàåò ïåðåêëþ÷åíèå êîíòåêñòà, îòîáðàæåíèå ïàìÿòè, çàòåì ÿäðî ïðîâåðÿåò ñîîáùåíèå è ïðàâà, åñëè âñå õîðîøî, òî âûçûâàåòñÿ ïåðåêëþ÷åíèå êîíòåêñòà íà ñåðâåð, çàòåì ñåðâåð âûïîëíÿåò äåéñòâèÿ è ïîñûëàåò ñîîáùåíèå íàçàä, ÿäðî âûäåëÿåò åù¸ ïàìÿòè, è ïåðåêëþ÷àåò êîíòåêñò äâàæäû.
Íî òóò åù¸ åñòü ïðîáëåìà. Îíà çàêëþ÷àåòñÿ â ñèñòåìå ïîäêà÷êè âèðòóàëüíîé ïàìÿòè. Òðàäèöèîííûå ìîíîëèòíûå ÿäðà çíàþò, ãäå ÿäðî è åãî ìîäóëè, à ãäå ïàìÿòü, êîòîðóþ ìîæíî âûãðóæàòü.  òî âðåìÿ êàê Mach íå èìååò íè ìàëåéøåãî ïðåäñòàâëåíèÿ î òîì, èç ÷åãî ñîñòîèò ñèñòåìà. Âìåñòî ýòîãî îí èñïîëüçóåò åäèíîå ðåøåíèå, äîáàâëÿþùåå ïðîáëåì ñ ïðîèçâîäèòåëüíîñòüþ. Mach 3 äàåò ïðîñòîé ìåíåäæåð ïàìÿòè, êîòîðûé îáðàùàåòñÿ ê äðóãèì ìåíåäæåðàì, âûïîëíÿþùèìñÿ â íåïðèâèëåãèðîâàííîì ðåæèìå, ÷òî çàñòàâëÿåò ñèñòåìó äåëàòü äîðîãèå IPC âûçîâû.
Ìíîãèå èç ýòèõ ïðîáëåì ñóùåñòâóþò â ëþáîé ñèñòåìå, êîòîðîé íåîáõîäèìî ðàáîòàòü íà ìíîãîïðîöåññîðíîé ìàøèíå, è â ñåðåäèíå 1980-õ êàçàëîñü, ÷òî áóäóùèé ðûíîê áóäåò íàïîëíåí èìè. Ôàêòè÷åñêè ýâîëþöèÿ íå ðàáîòàåò êàê îæèäàåòñÿ. Ìóëüòèïðîöåññîðíûå ìàøèíû èñïîëüçîâàëèñü â ñåðâåðíûõ ïðèëîæåíèÿõ â íà÷àëå 1990-õ, íî çàòåì èñ÷åçëè. Òåì âðåìåíåì ïðîèçâîäèòåëüíîñòü CPU âîçðàñòàëà íà 60 % â ãîä, óìíîæàÿ íåýôôåêòèâíîñòü êîäà. Ïëîõî, ÷òî ñêîðîñòü äîñòóïà ê ïàìÿòè ðàñòåò òîëüêî íà 7 % â ãîä, ýòî çíà÷èò, ÷òî öåíà îáðàùåíèÿ ê ïàìÿòè íå óìåíüøèëàñü, è âûçîâû IPC Machâ™à, êîòîðûå íå ñîõðàíÿþòñÿ â êýøå, ðàáîòàþò î÷åíü ìåäëåííî.
Íåñìîòðÿ íà âîçìîæíîñòè Mach, òàêèå ïîòåðè ïðîèçâîäèòåëüíîñòè â ðåàëüíîì ìèðå íå ïðèåìëåìû, ïîýòîìó áîëüøàÿ ÷àñòü ñîîáùåñòâà ðàçðàáîò÷èêîâ ÎÑ ïîñ÷èòàëà, ÷òî èñïîëüçîâàíèå IPC â êà÷åñòâå îñíîâû ÎÑ èçíà÷àëüíî ïðîâàëüíî.
[ïðàâèòü] Âîçìîæíûå ðåøåíèÿ
Êàê ìû óñòàíîâèëè âûøå, áîëüøèíñòâî ïðîèçâîäèòåëüíîñòè Mach 3 òåðÿåòñÿ íà IPC âûçîâàõ. Îäíàêî êîíöåïöèÿ «ìíîãîñåðâåðíîé ñèñòåìû» âñå åùå ìíîãîîáåùàþùàÿ, ïîýòîìó îíà òðåáóåò èññëåäîâàíèé. Ðàçðàáîò÷èêàì íåîáõîäèìî àêêóðàòíî èçîëèðîâàòü êîä â ìîäóëè, êîòîðûå íå äåëàþò âûçîâîâ îò ñåðâåðà ê ñåðâåðó. Ê ïðèìåðó, áîëüøàÿ ÷àñòü êîäà äëÿ ðàáîòû ñ ñåòüþ äîëæíà áûòü ïîìåùåíà â îòäåëüíûé ñåðâåð. Ïîä Unix ýòî íå òàê-òî ïðîñòî, ïîòîìó ÷òî ñèñòåìà áàçèðóåòñÿ íà èñïîëüçîâàíèè ôàéëîâîé ñèñòåìû äëÿ âñåãî îò ñåòè äî áåçîïàñíîñòè.
Áîëüøèíñòâî ðàçðàáîò÷èêîâ çàñòðÿëî íà îðèãèíàëüíîé êîíöåïöèè åäèíîãî áîëüøîãî ïàëëåòíîãî ñåðâåðà, êîòîðûé ïðåäîñòàâëÿåò ôóíêöèîíàëüíîñòü ÎÑ. Òàêæå äëÿ ïðîñòîòû ðàçðàáîòêè îíè ðàçðåøèëè îïåðàöèîííîé ñèñòåìå ðàáîòàòü â ïðèâèëåãèðîâàííîì è íåïðèâèëåãèðîâàííîì ðåæèìå. Ýòî ïîçâîëÿåò èì ðàçðàáàòûâàòü â íåïðèâèëåãèðîâàííîì ðåæèìå è èìåòü âñå íåâîçìîæíîñòè èäåè Mach, è çàòåì ïåðåìåùàòü îòëàæåííûé ñåðâåð â ïðèâèëåãèðîâàííûé ðåæèì ÷òîáû èìåòü ëó÷øóþ ïðîèçâîäèòåëüíîñòü. Íåñêîëüêî îïåðàöèîííûõ ñèñòåì ðàçðàáîòàíî ïîäîáíûì ìåòîäîì, èçâåñòíûì êàê «êî-ëîêåéøí» (co-location), ýòî èñïîëüçóåòñÿ â Lites (ïîðò 4.4BSD Lite), MkLinux, OSF/1 è NeXTSTEP/OPENSTEP/Mac OS X.  ChorusOS ýòó âîçìîæíîñòü ñäåëàëè ÷àñòüþ áàçîâîé ñèñòåìû, ðàçðåøèâ ñåðâåðàì ïåðåõîäèòü â ïðèâèëåãèðîâàííûé ðåæèì ñ ïîìîùüþ âñòðîåííûõ ìåõàíèçìîâ.
Mach 4 ïûòàëñÿ ðåøèòü ýòó ïðîáëåìó ñ ïîìîùüþ ðàäèêàëüíîãî íàáîðà óëó÷øåíèé.  ÷àñòíîñòè, îí íàõîäèë ïðîãðàììíûé êîä, êîòîðûé îáû÷íî íå çàïèñûâàåì, è ïîýòîìó êîïèðîâàíèå ïðè çàïèñè ñëó÷àåòñÿ ðåäêî. Ýòî äåëàëî âîçìîæíûì íå ñîïîñòàâëÿòü ïàìÿòü ìåæäó ïðîöåññàìè (map memory) äëÿ IPC, à âìåñòî ýòîãî èñïîëüçîâàòü ëîêàëüíûå îáëàñòè ïàìÿòè ïðîãðàìì. Ýòî ñîçäàëî êîíöåïöèþ «øàòòëîâ» è óâåëè÷èëî ïðîèçâîäèòåëüíîñòü, íî ðàçðàáîò÷èêàì äîñòàëàñü ñëîæíîñòü ñ óïðàâëåíèåì ñîñòîÿíèÿìè. Mach 4 òàêæå âêëþ÷èë âñòðîåííûå ìåõàíèçìû êîëîêåéøíà.
Âî âñåõ òåñòàõ IPC ïðîèçâîäèòåëüíîñòü áûëà íàçâàíà èñòî÷íèêîì ïðîáëåìû, åé ïðè÷èñëÿåòñÿ 73 % ïîòåðÿííûõ öèêëîâ.
 ñåðåäèíå 90-õ ðàáîòà íàä ìèêðîÿäåðíûìè ñèñòåìàìè îñòàíîâèëàñü. Õîòÿ ðûíîê âåðèë, ÷òî âñå íîâûå ñèñòåìû áóäóò ìèêðîÿäåðíûìè â 90-õ, ñåãîäíÿ òîëüêî îäíà øèðîêî èñïîëüçóåìàÿ ñèñòåìà Mac OS X èñïîëüçóåò êîëîêåéøí ñåðâåð ïîâåðõ ñèëüíî ìîäèôèöèðîâàííîé Mach 3.
[ïðàâèòü] Ñëåäóþùåå ïîêîëåíèå
Èññëåäîâàíèÿ ïîêàçàëè, ÷òî ïðîáëåìà ïðîèçâîäèòåëüíîñòè IPC íå òàê ñòðàøíà, êàê ñ÷èòàåòñÿ. Íàïîìèíàåì, ÷òî îäíîñòîðîííèé âûçîâ íà BSD çàíèìàåò 20 ìèêðîñåêóíä, â òî âðåìÿ êàê íà Mach â 114, 11 èç êîòîðûõ â ýòî ïåðåêëþ÷åíèå êîíòåêñòà, èäåíòè÷íîãî BSD. Äîïîëíèòåëüíî 18 èñïîëüçóåòñÿ ìåíåäæåðîì ïàìÿòè äëÿ îòîáðàæåíèÿ ñîîáùåíèÿ ìåæäó íåïðèâèëåãèðîâàííîé ñðåäîé èñïîëíåíèÿ è ïðèâèëåãèðîâàííîé (user-space è kernel-space). Ýòî äîáàâëÿåò 31 ìèêðîñåêóíäó, ÷òî äîëüøå òðàäèöèîííîãî âûçîâà, íî íå íàìíîãî.
Îñòàâøàÿñÿ ÷àñòü ïðîáëåìû â ýòî ïðîâåðêè ïðàâ äîñòóïà ê ïîðòó ñîîáùåíèé.  òî âðåìÿ, êàê ýòî âûãëÿäèò î÷åíü âàæíûì, ôàêòè÷åñêè, ýòî òðåáóåòñÿ òîëüêî íà Unix ñèñòåìàõ. Ê ïðèìåðó, îäíîïîëüçîâàòåëüñêàÿ ñèñòåìà, çàïóùåííàÿ íà ìîáèëüíîì òåëåôîíå, ìîæåò íå íóæäàòüñÿ â òàêèõ âîçìîæíîñòÿõ, è ýòî òîò òèï ñèñòåì, â êîòîðûõ Mach ìîæåò áûòü èñïîëüçîâàí. Îäíàêî Mach ñîçäàåò ïðîáëåìû: êîãäà ïàìÿòü ïåðåìåùàåòñÿ â ÎÑ, äðóãèå çàäà÷è ìîãóò íå íóæäàòüñÿ â ýòîì. DOS è ðàííèå Mac OS èìåëè åäèíîå àäðåñíîå ïðîñòðàíñòâî, ðàçäåëÿåìîå âñåìè ïðîöåññàìè, ïîýòîìó â òàêèõ ñèñòåìàõ îòîáðàæåíèå ïàìÿòè â ïóñòàÿ òðàòà âðåìåíè.
Ýòè ðåàëèçàöèè ïîëîæèëè íà÷àëî âòîðîìó ïîêîëåíèþ ìèêðîÿäåð, êîòîðîå óìåíüøàåò ñëîæíîñòü ñèñòåìû, ðàçìåùàÿ áîëüøóþ ÷àñòü ôóíêöèîíàëüíîñòè â íåïðèâèëåãèðîâàííîì ðåæèìå èñïîëíåíèÿ. Íàïðèìåð, ÿäðî L4 âêëþ÷àåò òîëüêî 7 ôóíêöèé è èñïîëüçóåò 12 êèëîáàéò ïàìÿòè, òîãäà êàê Mach 3 âêëþ÷àåò îêîëî 140 ôóíêöèé è èñïîëüçóåò 330 êèëîáàéò ïàìÿòè. IPC âûçîâ íà L4 íà 486DX-50 çàíèìàåò òîëüêî 5 ìèêðîñåêóíä â áûñòðåå, ÷åì Unix âûçîâ íà ýòîé æå ñèñòåìå, è â 20 ðàç áûñòðåå, ÷åì Mach. Êîíå÷íî çäåñü íå ó÷èòûâàåòñÿ òîò ôàêò, ÷òî L4 íå îïåðèðóåò ðàçðåøåíèÿìè è áåçîïàñíîñòüþ, îñòàâëÿÿ èõ íà óñìîòðåíèå íåïðèâèëåãèðîâàííûì ïðîãðàììàì.
«Ïîòåíöèàëüíûå» óñêîðåíèÿ L4 îñíîâàíû íà ôàêòå, ÷òî íåïðèâèëåãèðîâàííûå ïðèëîæåíèÿ ÷àñòî ïðåäîñòàâëÿþò ìíîæåñòâî ôóíêöèé, êîòîðûå ôîðìàëüíî ïîääåðæèâàþòñÿ ÿäðîì. Ìîæíî ñðàâíèòü ïðîèçâîäèòåëüíîñòü MkLinux â êîëîêåéøí ðåæèìå è ïîðò L4, çàïóùåííûé â íåïðèâèëåãèðîâàííîì ðåæèìå. L4 äîáàâëÿåò òîëüêî îêîëî 5 %-10 % íàêëàäíûõ ðàñõîäîâ, â òî âðåìÿ êàê Mach äîáàâëÿåò 15 %, ÷òî âåñüìà èíòåðåñíî, åñëè ó÷èòûâàòü äâîéíûå ïåðåêëþ÷åíèÿ êîíòåêñòà.
 ðåçóëüòàòå íîâûå ìèêðîÿäðà èçìåíèëè èíäóñòðèþ â öåëîì, ìíîæåñòâî íåêîãäà ìåðòâûõ ïðîåêòîâ âðîäå GNU Hurd ñíîâà ïðèâëåêëî ê ñåáå âíèìàíèå.
[ïðàâèòü] Îïåðàöèîííûå ñèñòåìû è ÿäðà, îñíîâàííûå íà Mach
- GNU Hurd
- Lites
- MkLinux
- mtXinu
- MachTen
- MacMach
- Mac OS X (Darwin)
- NeXTSTEP
- OSF/1
- Workplace OS
- xMach
- UNICOS MAX
[ïðàâèòü] Ñì. òàêæå
[ïðàâèòü] Ïðèìå÷àíèÿ
- â‘ M. Condict, D. Bolinger, E. McManus, D. Mitchell, S. Lewontin (April 1994). «Microkernel modularity with integrated kernel performance». Technical report, OSF Research Institute, Cambridge, MA.
- â‘ Hermann Härtig, Michael Hohmuth, Jochen Liedtke, Sebastian Schönberg, Jean Wolter (October 1997). «The performance of μ-kernel-based systems». Proceedings of the 16th ACM symposium on Operating systems principles (SOSP), Saint-Malo, France 31 (5): 67. DOI:10.1145/269005.266660. ISBN 0-89791-916-5. url2
[ïðàâèòü] Ññûëêè
- Ñòàòüÿ íà ñàéòå CITforum.ru: «Ìèêðîÿäðî Mach».
- Ñòàòüÿ Ñ. Êóçíåöîâà íà ñàéòå CITforum.ru: «Èññëåäîâàíèÿ è ðàçðàáîòêè â îáëàñòè îïåðàöèîííûõ ñèñòåì».
| Mach è Mach-ïîäîáíûå îïåðàöèîííûå ñèñòåìû | |
|---|---|
| GNU Hurd · GNU Mach · NeXTSTEP · MkLinux · Mac OS X |