T ÌÎÑÊÎÂÑÊÈÉ ÃÎÑÓÄÀÐÑÒÂÅÍÍÛÉ ÓÍÈÂÅÐÑÈÒÅÒ èìåíè Ì.Â. ËÎÌÎÍÎÑÎÂÀ AF Ìåõàíèêî-ìàòåìàòè÷åñêèé ôàêóëüòåò Êàôåäðà âû÷èñëèòåëüíîé ìàòåìàòèêè Ê.Þ. Áîãà÷åâ Îïåðàöèîííûå ñèñòåìû ðåàëüíîãî âðåìåíè DR (ïðåäâàðèòåëüíûå ìàòåðèàëû ëåêöèé) Ìîñêâà 2000 ãîä Ñîäåðæàíèå Ñîäåðæàíèå 1.1. 1.2. 1.3. 1.4. Îïðåäåëåíèå îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè (ÎÑÐÂ) . . . . . . . . . Òèïè÷íûå âðåìåíà ðåàêöèè íà âíåøíèå ñîáûòèÿ â óïðàâëÿåìûõ ÎÑРïðîöåññàõ Îñíîâíûå îáëàñòè ïðèìåíåíèÿ ÎÑР. . . . . . . . . . . . . . . . . . . . . . . . Îñîáåííîñòè îáîðóäîâàíèÿ, íà êîòîðîì ðàáîòàþò ÎÑР. . . . . . . . . . . . . 2. Îñíîâíûå ïîëîæåíèÿ Îñíîâíûå îïðåäåëåíèÿ . . . . . . Òèïû çàäà÷ . . . . . . . . . . . . . Âèäû ïðîãðàììèðîâàíèÿ . . . . . Âèäû ðåñóðñîâ . . . . . . . . . . . Òèïû âçàèìîäåéñòâèÿ ïðîöåññîâ Ñîñòîÿíèÿ ïðîöåññà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AF 2.1. 2.2. 2.3. 2.4. 2.5. 2.6. T 1. Îïðåäåëåíèå è îñíîâíûå îñîáåííîñòè îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè (ÎÑÐÂ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Ñòàíäàðòû íà îïåðàöèîííûå ñèñòåìû ðåàëüíîãî âðåìåíè 3.1. Íîðìû ESSE êîíñîðöèóìà VITA . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Ñòàíäàðò POSIX 1003.1b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3. Ñòàíäàðò SCEPTRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. Òèïû àðõèòåêòóð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè DR 4.1. Îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä â ïðîãðàììèðîâàíèè . . . . . . 4.1.1. Îáúåêòû . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.2. Êëàññû è ïðåäñòàâèòåëè . . . . . . . . . . . . . . . . . . . . . 4.1.3. Ïîëèìîðôèçì . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.4. Íàñëåäîâàíèå . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. Êëàññè÷åñêèé è îáúåêòíî-îðèåíòèðîâàííûé ïîäõîäû ê ïîñòðîåíèþ 4.3. Ìîíîëèòíàÿ àðõèòåêòóðà . . . . . . . . . . . . . . . . . . . . . . . . . 4.4. Ìîäóëüíàÿ àðõèòåêòóðà (íà îñíîâå ìèêðîÿäðà) . . . . . . . . . . . . 4.5. Îáúåêòíàÿ àðõèòåêòóðà íà îñíîâå îáúåêòîâ-ìèêðîÿäåð . . . . . . . 4.6. Ñòðîåíèå ñèñòåì ðåàëüíîãî âðåìåíè . . . . . . . . . . . . . . . . . . 5. Ñèíõðîíèçàöèÿ è âçàèìîäåéñòâèå ïðîöåññîâ 5.1. 5.2. 5.3. 5.4. 5.5. 5.6. Ñåìàôîðû . . . . . . . . . . . . . . . . . . . . . . . . . . Ñîáûòèÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . Ïî÷òîâûå ÿùèêè . . . . . . . . . . . . . . . . . . . . . . . Âçàèìîäåéñòâèå êëèåíò ñåðâåð . . . . . . . . . . . . . Î÷åðåäè çàäà÷ . . . . . . . . . . . . . . . . . . . . . . . . Îáúåêòû ñèíõðîíèçàöèè POSIX . . . . . . . . . . . . . . 5.6.1. Îáúåêòû ñèíõðîíèçàöèè òèïà mutex . . . . . . . 5.6.2. Îáúåêòû ñèíõðîíèçàöèè òèïà condvar . . . . . . 5.7. Ïðèìåð èñïîëüçîâàíèÿ îáúåêòîâ ñèíõðîíèçàöèè POSIX 6. Óïðàâëåíèå çàäà÷àìè 6.1. Ïëàíèðîâàíèå çàäà÷ . . . . . . . . . . . . . . . . 6.1.1. Ïðèîðèòåòû . . . . . . . . . . . . . . . . 6.1.2. Ñòðàòåãèè ïëàíèðîâàíèÿ çàäà÷ . . . . . 6.1.3. Ïëàíèðîâàíèå ïåðèîäè÷åñêèõ çàäà÷ . . 6.1.4. Ðàçðàáîòêà õîðîøî ïëàíèðóåìûõ çàäà÷ 6.2. Ïåðåêëþ÷åíèå êîíòåêñòà . . . . . . . . . . . . . 6.3. Ïðåðûâàíèÿ . . . . . . . . . . . . . . . . . . . . 7. Óïðàâëåíèå ïàìÿòüþ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ÎÑР. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 6 7 8 10 10 13 13 13 15 16 17 17 17 18 22 22 22 23 23 24 25 25 26 26 27 28 28 30 31 31 32 32 32 33 33 38 38 38 39 40 40 41 42 42 Ñîäåðæàíèå 8. Îáçîð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AF T 8.1. Êëàññè÷åñêèå ñèñòåìû . . . . . . . . . . . . 8.1.1. CHORUS . . . . . . . . . . . . . . . . . 8.1.2. LynxOS . . . . . . . . . . . . . . . . . . 8.1.3. QNX . . . . . . . . . . . . . . . . . . . . 8.1.4. OS-9 . . . . . . . . . . . . . . . . . . . . 8.1.5. pSOS . . . . . . . . . . . . . . . . . . . 8.1.6. RTC . . . . . . . . . . . . . . . . . . . . 8.1.7. VRTX . . . . . . . . . . . . . . . . . . . 8.1.8. VxWorks . . . . . . . . . . . . . . . . . 8.2. Îáúåêòíî-îðèåíòèðîâàííûå ñèñòåìû . . . . . 8.2.1. SoftKernel . . . . . . . . . . . . . . . . . 8.3. Ñïåöèàëèçèðîâàííûå (÷àñòíûå) ÎÑР. . . . 8.4. Ñèñòåìû íà îñíîâå Linux . . . . . . . . . . . . 8.4.1. RT-Linux . . . . . . . . . . . . . . . . . 8.5. Ñèñòåìû íà îñíîâå Windows NT (Microsoft) 8.5.1. Hyperkernel . . . . . . . . . . . . . . . . 8.5.2. LP RT-Technology . . . . . . . . . . . . 8.5.3. Realtime ETS Kernel . . . . . . . . . . 8.5.4. Component Integrator . . . . . . . . . . 8.5.5. Willows RT . . . . . . . . . . . . . . . . 42 43 43 44 45 45 46 47 47 48 48 49 49 50 51 51 53 53 53 54 54 9. ßçûêè ðàçðàáîòêè äëÿ ñèñòåì ðåàëüíîãî âðåìåíè 54 10.Ñðåäû ðàçðàáîòêè äëÿ ñèñòåì ðåàëüíîãî âðåìåíè 56 11.Àðõèòåêòóðû ïðîöåññîðîâ 56 DR 11.1. Îñíîâíûå ÷åðòû àðõèòåêòóðû è èõ âëèÿíèå íà ñèñòåìû ðåàëüíîãî âðåìåíè . . 11.1.1. CISC è RISC ïðîöåññîðû . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.2. Îñíîâíûå ÷åðòû RISC àðõèòåêòóðû . . . . . . . . . . . . . . . . . . . . . 11.1.3. Êîíâåéåðèçàöèÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.4. Êýø ïàìÿòü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.5. Ìíîãîïðîöåññîðíûå àðõèòåêòóðû . . . . . . . . . . . . . . . . . . . . . . . 11.1.6. Ïîääåðæêà ìíîãîçàäà÷íîñòè è ìíîãîïðîöåññîðíîñòè . . . . . . . . . . . 11.1.7. Âëèÿíèå òðåáîâàíèé ðåàëüíîãî âðåìåíè íà âûáîð àðõèòåêòóðû ïðîöåññîðà 11.2. Îðãàíèçàöèÿ äàííûõ âî âíåøíåé ïàìÿòè . . . . . . . . . . . . . . . . . . . . . . 11.2.1. Îðãàíèçàöèÿ öåëî÷èñëåííûõ äàííûõ . . . . . . . . . . . . . . . . . . . . . 11.2.2. Îðãàíèçàöèÿ äàííûõ ñ ïëàâàþùåé òî÷êîé . . . . . . . . . . . . . . . . . . 11.2.3. Ïóòè ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè îïåðàòèâíîé ïàìÿòè . . . . . . . . 11.3. Ïðîöåññîðû Motorola 68xxx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3.1. Îáùèé îáçîð . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3.3. Ïðîãðàììíàÿ ìîäåëü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.4. Ïðîöåññîðû Intel 80x86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.4.1. Îáùèé îáçîð . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.4.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà . . . . . . . . . . . . . . . . . . . . . . . . . . 11.4.3. Ïðîãðàììíàÿ ìîäåëü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.5. Ïðîöåññîðû PowerPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.5.1. Îáùèé îáçîð . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.5.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà . . . . . . . . . . . . . . . . . . . . . . . . . . 11.5.3. Ïðîãðàììíàÿ ìîäåëü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.6. Ïðîöåññîðû SPARC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.6.1. Îáùèé îáçîð . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.6.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà . . . . . . . . . . . . . . . . . . . . . . . . . . 56 57 57 58 61 63 64 65 66 66 66 67 67 67 68 70 71 71 72 73 75 75 76 78 79 79 80 3 Ñîäåðæàíèå 12.Àðõèòåêòóðà ñèñòåìíîé øèíû . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T 11.6.3. Ïðîãðàììíàÿ ìîäåëü . . . . 11.7. Ïðîöåññîðû Intel 80960x . . . . . . 11.7.1. Îáùèé îáçîð . . . . . . . . . 11.7.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà 11.7.3. Ïðîãðàììíàÿ ìîäåëü . . . . 11.8. Ïðîöåññîðû ARM . . . . . . . . . . 11.8.1. Îáùèé îáçîð . . . . . . . . . 11.8.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà 11.8.3. Ïðîãðàììíàÿ ìîäåëü . . . . AF 12.1. Àðõèòåêòóðà øèíû VME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2. Àðõèòåêòóðà øèíû PCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 82 82 83 84 85 85 87 88 90 91 92 93 Ïðåäìåòíûé óêàçàòåëü (àíãëèéñêèé) 95 DR Ïðåäìåòíûé óêàçàòåëü (ðóññêèé) 4 1. Îïðåäåëåíèå è îñíîâíûå îñîáåííîñòè îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè (ÎÑÐÂ) Ïðåäèñëîâèå AF T Íàñòîÿùåå ïîñîáèå ïðåäñòàâëÿåò ñîáîé ââåäåíèå â îïåðàöèîííûå ñèñòåìû ðåàëüíîãî âðåìåíè (ÎÑÐÂ). Îïèñûâàþòñÿ èõ íàçíà÷åíèå, ñôåðû ïðèìåíåíèÿ, ãëàâíûå îñîáåííîñòè è ïðèíöèïû âíóòðåííåãî óñòðîéñòâà. Ðàññìàòðèâàþòñÿ îñíîâíûå âîçíèêàþùèå çàäà÷è è ìåòîäû èõ ðàçðåøåíèÿ. Ïðèâîäÿòñÿ íåñêîëüêî ñòàíäàðòîâ íà ÎÑÐÂ, à òàêæå îïèñûâàþòñÿ áîëåå äåñÿòè êîíêðåòíûõ ÎÑРðàçíûõ ïðîèçâîäèòåëåé.  ïîñîáèè äàí òàêæå îáçîð îñíîâíûõ àïïàðàòíûõ êîìïîíåíò è èõ âëèÿíèå íà ÎÑÐÂ. Ðàññìàòðèâàþòñÿ ïðîöåññîðû ñåìåéñòâ Motorola 68xxx, Intel 80x86, PowerPC, SPARC, Intel 80960, ARM, íà êîòîðûõ ïîñòðîåíî ïîäàâëÿþùåå áîëüøèíñòâî ïðîìûøëåííûõ êîìïüþòåðîâ, êîíòðîëëåðîâ è âñòðàèâàåìûõ ñèñòåì, à òàêæå àðõèòåêòóðû øèí VME è PCI, èãðàþùèõ äîìèíèðóþùóþ ðîëü â ïîäîáíûõ ñèñòåìàõ. 1. Îïðåäåëåíèå è îñíîâíûå îñîáåííîñòè îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè (ÎÑÐÂ)  ýòîì ðàçäåëå ìû ââåäåì ïîíÿòèå îïåðàöèîííîé ñèñòåìû ðåàëüíîãî âðåìåíè (ÎÑÐÂ) è ðàññìîòðèì îñíîâíûå îòëè÷èÿ ÎÑРîò äðóãèõ îïåðàöèîííûõ ñèñòåì. 1.1. Îïðåäåëåíèå îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè (ÎÑÐÂ) Ñóùåñòâóåò íåñêîëüêî îïðåäåëåíèé ñèñòåì ðåàëüíîãî âðåìåíè (ÎÑÐÂ) (real time operating systems (RTOS)), áîëüøèíñòâî èç êîòîðûõ ïðîòèâîðå÷èò äðóã äðóãó. Ìû ïðèâåäåì íåñêîëüêî èç íèõ, ÷òîáû ïðîäåìîíñòðèðîâàòü ðàçëè÷íûå âçãëÿäû íà íàçíà÷åíèå è îñíîâíûå çàäà÷è ÎÑÐÂ. 1. Ñèñòåìîé ðåàëüíîãî âðåìåíè íàçûâàåòñÿ ñèñòåìà, â êîòîðîé óñïåøíîñòü ðàáîòû ëþáîé ïðîãðàììû çàâèñèò íå òîëüêî îò åå ëîãè÷åñêîé ïðàâèëüíîñòè, íî îò âðåìåíè, çà êîòîðîå îíà ïîëó÷èëà ðåçóëüòàò. Åñëè âðåìåííûå îãðàíè÷åíèÿ íå óäîâëåòâîðåíû, òî ôèêñèðóåòñÿ ñáîé â ðàáîòå ñèñòåìû. DR Òàêèì îáðàçîì, âðåìåííûå îãðàíè÷åíèÿ äîëæíû áûòü ãàðàíòèðîâàííî óäîâëåòâîðåíû. Ýòî òðåáóåò îò ñèñòåìû áûòü ïðåäñêàçóåìîé, ò.å. âíå çàâèñèìîñòè îò ñâîåãî òåêóùåãî ñîñòîÿíèÿ è çàãðóæåííîñòè âûäàâàòü íóæíûé ðåçóëüòàò çà òðåáóåìîå âðåìÿ. Ïðè ýòîì æåëàòåëüíî, ÷òîáû ñèñòåìà îáåñïå÷èâàëà êàê ìîæíî áîëüøèé ïðîöåíò èñïîëüçîâàíèÿ èìåþùèõñÿ ðåñóðñîâ. Õîðîøèì ïðèìåðîì çàäà÷è, ãäå òðåáóåòñÿ ÎÑÐÂ, ÿâëÿåòñÿ óïðàâëåíèå ðîáîòîì, áåðóùèì äåòàëü ñ ëåíòû êîíâåéåðà. Äåòàëü äâèæåòñÿ, è ðîáîò èìååò ëèøü ìàëåíüêîå âðåìåííîå îêíî, êîãäà îí ìîæåò åå âçÿòü. Åñëè îí îïîçäàåò, òî äåòàëü óæå íå áóäåò íà íóæíîì ó÷àñòêå êîíâåéåðà, è, ñëåäîâàòåëüíî, ðàáîòà íå áóäåò ñäåëàíà, íåñìîòðÿ íà òî, ÷òî ðîáîò íàõîäèòñÿ â ïðàâèëüíîì ìåñòå. Åñëè îí ïîçèöèîíèðóåòñÿ ðàíüøå, òî äåòàëü åùå íå óñïååò ïîäúåõàòü, è îí çàáëîêèðóåò åé ïóòü. Äðóãèì ïðèìåðîì ìîæåò áûòü ñàìîëåò, íàõîäÿùèéñÿ íà àâòîïèëîòå. Ñåíñîðíûå ñåðâîäàò÷èêè äîëæíû ïîñòîÿííî ïåðåäàâàòü â óïðàâëÿþùèé êîìïüþòåð ðåçóëüòàòû èçìåðåíèé. Åñëè ðåçóëüòàò êàêîãî-ëèáî èçìåðåíèÿ áóäåò ïðîïóùåí, òî ýòî ìîæåò ïðèâåñòè ê íåäîïóñòèìîìó íåñîîòâåòñòâèþ ìåæäó ðåàëüíûì ñîñòîÿíèåì ñèñòåì ñàìîëåòà è èíôîðìàöèåé î íåì â óïðàâëÿþùåé ïðîãðàììå. Èíîãäà ðàçëè÷àþò ñèëüíîå (hard) è ñëàáîå (soft) òðåáîâàíèå ðåàëüíîãî âðåìåíè. Åñëè çàïàçäûâàíèå ïðîãðàììû ïðèâîäèò ê ïîëíîìó íàðóøåíèþ ðàáîòû óïðàâëÿåìîé ñèñòåìû, òî ãîâîðÿò î ñèëüíîì ðåàëüíîì âðåìåíè. Åñëè æå ýòî âåäåò òîëüêî ê ïîòåðå ïðîèçâîäèòåëüíîñòè, òî ãîâîðÿò î ñëàáîì ðåàëüíîì âðåìåíè. Áîëüøèíñòâî ïðîãðàììíîãî îáåñïå÷åíèÿ îðèåíòèðîâàíî íà ñëàáîå ðåàëüíîå âðåìÿ, à çàäà÷à õîðîøåé ÎÑРîáåñïå÷èòü óðîâåíü áåçîïàñíîãî ôóíêöèîíèðîâàíèÿ ñèñòåìû, äàæå åñëè óïðàâëÿþùàÿ ïðîãðàììà íèêîãäà íå çàêîí÷èò ñâîåé ðàáîòû. 5 1. Îïðåäåëåíèå è îñíîâíûå îñîáåííîñòè îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè (ÎÑÐÂ) T 2. Ñòàíäàðò POSIX 1003:1 îïðåäåëÿåò ÎÑРñëåäóþùèì îáðàçîì: Ðåàëüíîå âðåìÿ â îïåðàöèîííûõ ñèñòåìàõ ýòî ñïîñîáíîñòü îïåðàöèîííîé ñèñòåìû îáåñïå÷èòü òðåáóåìûé óðîâåíü ñåðâèñà â çàäàííûé ïðîìåæóòîê âðåìåíè. 3. Èíîãäà ñèñòåìàìè ðåàëüíîãî âðåìåíè íàçûâàþò ñèñòåìû ïîñòîÿííîé ãîòîâíîñòè (online ñèñòåìû), èëè èíòåðàêòèâíûå ñèñòåìû ñ äîñòàòî÷íûì âðåìåíåì ðåàêöèè. Îáû÷íî ýòî äåëàþò ïî ìàðêåòèíãîâûì ñîîáðàæåíèÿì. Äåéñòâèòåëüíî, åñëè èíòåðàêòèâíóþ ïðîãðàììó íàçûâàþò ðàáîòàþùåé â ðåàëüíîì âðåìåíè, òî ýòî ïðîñòî îçíà÷àåò ÷òî îíà óñïåâàåò îáðàáàòûâàòü çàïðîñû îò ÷åëîâåêà, äëÿ êîòîðîãî çàäåðæêà â ñîòíè ìèëëèñåêóíä äàæå íåçàìåòíà. AF 4. Èíîãäà ïîíÿòèå ñèñòåìà ðåàëüíîãî âðåìåíè îòîæäåñòâëÿþò ñ áûñòðàÿ ñèñòåìà. Ýòî íå âñåãäà ïðàâèëüíî. Âðåìÿ çàäåðæêè ðåàêöèè ÎÑРíà ñîáûòèå íå òàê óæ âàæíî (îíî ìîæåò äîñòèãàòü íåñêîëüêèõ ñåêóíä). Ãëàâíîå, ÷òîáû ýòî âðåìÿ áûëî äîñòàòî÷íî äëÿ ðàññìàòðèâàåìîãî ïðèëîæåíèÿ è ãàðàíòèðîâàííî. Î÷åíü ÷àñòî àëãîðèòì ñ ãàðàíòèðîâàííûì âðåìåíåì ðàáîòû ìåíåå ýôôåêòèâåí, ÷åì àëãîðèòì, òàêèì ñâîéñòâîì íå îáëàäàþùèé. Íàïðèìåð, àëãîðèòì áûñòðîé ñîðòèðîâêè (quicksort) â ñðåäíåì ðàáîòàåò çíà÷èòåëüíî áûñòðåå ìíîãèõ äðóãèõ àëãîðèòìîâ ñîðòèðîâêè, íî åãî ãàðàíòèðîâàííàÿ îöåíêà ñëîæíîñòè çíà÷èòåëüíî õóæå. 5. Âî ìíîãèõ âàæíûõ ñôåðàõ ïðèëîæåíèÿ ÎÑРââîäÿò ñâîè ïîíÿòèÿ ðåàëüíîãî âðåìåíè. Íàïðèìåð, ïðîöåññ öèôðîâîé îáðàáîòêè ñèãíàëà (digital signal processing, DSP) íàçûâàþò èäóùèì â ðåàëüíîì âðåìåíè, åñëè àíàëèç (ïðè ââîäå) è/èëè ãåíåðàöèÿ (ïðè âûâîäå) äàííûõ ìîæåò áûòü ïðîâåäåí çà òî æå âðåìÿ, ÷òî è àíàëèç è/èëè ãåíåðàöèÿ òåõ æå äàííûõ áåç öèôðîâîé îáðàáîòêè ñèãíàëà. Íàïðèìåð, åñëè ïðè îáðàáîòêå àóäèî äàííûõ òðåáóåòñÿ 2:01 ñåêóíä äëÿ àíàëèçà 2:00 ñåêóíä çâóêà, òî ýòî íå ïðîöåññ ðåàëüíîãî âðåìåíè. Åñëè æå òðåáóåòñÿ 1:99 ñåêóíä, òî ýòî ïðîöåññ ðåàëüíîãî âðåìåíè. 1.2. Òèïè÷íûå âðåìåíà ðåàêöèè íà âíåøíèå ñîáûòèÿ â óïðàâëÿåìûõ ÎÑРïðîöåññàõ DR Ñîãëàñíî îïðåäåëåíèþ, ÎÑРäîëæíà îáåñïå÷èòü òðåáóåìûé óðîâåíü ñåðâèñà â çàäàííûé ïðîìåæóòîê âðåìåíè Ýòîò ïðîìåæóòîê âðåìåíè îáû÷íî çàäàåòñÿ ïåðèîäè÷íîñòüþ è ñêîðîñòüþ ïðîöåññîâ, êîòîðûìè óïðàâëÿåò ñèñòåìà. Ïðèáëèçèòåëüíîå âðåìÿ ðåàêöèè â çàâèñèìîñòè îò îáëàñòè ïðèìåíåíèÿ ÎÑРìîæåò áûòü ñëåäóþùèì: ìàòåìàòè÷åñêîå ìîäåëèðîâàíèå íåñêîëüêî ìèêðîñåêóíä ðàäèîëîêàöèÿ íåñêîëüêî ìèëëèñåêóíä ñêëàäñêîé ó÷åò íåñêîëüêî ñåêóíä òîðãîâûå îïåðàöèè íåñêîëüêî ìèíóò óïðàâëåíèå ïðîèçâîäñòâîì íåñêîëüêî ìèíóò õèìè÷åñêèå ðåàêöèè íåñêîëüêî ÷àñîâ Âèäíî, ÷òî âðåìåíà î÷åíü ðàçíÿòñÿ è íàêëàäûâàþò ðàçëè÷íûå òðåáîâàíèÿ íà âû÷èñëèòåëüíóþ óñòàíîâêó, íà êîòîðîé ðàáîòàåò ÎÑÐÂ. 1.  çàâèñèìîñòè îò ñëîæíîñòè ïðîãðàììû óïðàâëåíèÿ ðåàëüíîå âðåìÿ íàêëàäûâàåò ðàçëè÷íûå óñëîâèÿ íà âû÷èñëèòåëüíóþ ìîùíîñòü ïðîöåññîðà äëÿ ÎÑÐÂ. 2. Âíåøíèå ñîáûòèÿ ñòàíîâÿòñÿ èçâåñòíû ñèñòåìå ïîñðåäñòâîì ïðåðûâàíèé (interrupt requests (IRQ)) (ò.å. çàïðîñîâ íà îáñëóæèâàíèå ñî ñòîðîíû âíåøíèõ óñòðîéñòâ). Ïîýòîìó çà÷àñòóþ äëÿ ÎÑРáîëåå âàæíà íå ìîùíîñòü ïðîöåññîðà, à õàðàêòåðèñòèêè êîìïüþòåðà, ñâÿçàííûå ñ ïîäñèñòåìîé ïðåðûâàíèé. Æåëàòåëüíûìè ÿâëÿþòñÿ íàëè÷èå êàê ìîæíî áîëüøåãî êîëè÷åñòâà óðîâíåé ïðåðûâàíèé (IRQ levels) (ò.å. àïïàðàòíîãî èëè/è ïðîãðàììíîãî äåêîäèðîâàíèÿ èñòî÷íèêà çàïðîñà); 6 1.3. Îñíîâíûå îáëàñòè ïðèìåíåíèÿ ÎÑРT êàê ìîæíî ìåíüøåå âðåìÿ ðåàêöèè íà ïðåðûâíèå (ò.å. êàê ìîæíî ìåíüøåå âðåìÿ ìåæäó ïîñòóïëåíèåì çàïðîñà íà îáñëóæèâàíèå è íà÷àëîì âûïîëíåíèÿ îáñëóæèâàþùåé ïðîãðàììû). 3. ÎÑР÷àñòî ñàìà ÿâëÿåòñÿ èíèöèàòîðîì ïåðèîäè÷åñêèõ ïðîöåññîâ, êîòîðûìè óïðàâëÿåò (íàïðèìåð, äâèæåíèåì ïðåññà èëè ëó÷à ðàäàðà). Ïîýòîìó ÿâëÿåòñÿ íåîáõîäèìûì íàëè÷èå îäíîãî èëè íåñêîëüêèõ òàéìåðîâ (àïïàðàòíûõ óñòðîéñòâ, âûäàþùèõ ïðåðûâàíèå ÷åðåç çàäàííûå ïðîìåæóòêè âðåìåíè), êîòîðûå ìîãóò ðàáîòàòü â ïåðèîäè÷åñêîì èëè æäóùåì ðåæèìå. AF 1.3. Îñíîâíûå îáëàñòè ïðèìåíåíèÿ ÎÑР òå÷åíèå äëèòåëüíîãî âðåìåíè îñíîâíûìè ïîòðåáèòåëÿìè ÎÑРáûëè âîåííàÿ è êîñìè÷åñêàÿ îáëàñòè. Ñåé÷àñ ñèòóàöèÿ êàðäèíàëüíî èçìåíèëàñü è ÎÑРìîæíî âñòðåòèòü äàæå â òîâàðàõ øèðîãî ïîòðåáëåíèÿ. Îñíîâíûå îáëàñòè ïðèìåíåíèÿ ÎÑÐÂ: Âîåííàÿ è êîñìè÷åñêàÿ îáëàñòè: áîðòîâîå è âñòðàèâàåìîå îáîðóäîâàíèå: ñèñòåìû èçìåðåíèÿ è óïðàâëåíèÿ, ðàäàðû; öèôðîâûå âèäåîñèñòåìû, ñèìóëÿòîðû; ðàêåòû, ñèñòåìû îïðåäåëåíèÿ ïîëîæåíèÿ è ïðèâÿçêè ê ìåñòíîñòè. Ïðîìûøëåííîñòü: àâòîìàòè÷åñêèå ñèñòåìû óïðàâëåíèÿ ïðîèçâîäñòâîì (ÀÑÓÏ) (computer-aided manufacturing (CAM)), àâòîìàòè÷åñêèå ñèñòåìû óïðàâëåíèÿ òåõíîëîãè÷åñêèì ïðîöåññîì (ÀÑÓÒÏ); ñèìóëÿòîðû, ñèñòåìû óïðàâëåíèÿ ìîòîðîì, àâòîìàòè÷åñêîå ñöåïëåíèå, ñèñòåìû àíòèáëîêèðîâêè êîëåñ. . . DR àâòîìîáèëåñòðîåíèå: ýíåðãåòèêà: ñáîð èíôîðìàöèè, óïðàâëåíèå äàííûìè è îáîðóäîâàíèåì. . . òåëåêîììóíèêàöèè: ôîííûå ñòàíöèè. . . êîììóíèêàöèîííîå îáîðóäîâàíèå, ñåòåâûå êîììóòàòîðû, òåëå- áàíêîâñêîå îáîðóäîâàíèå (íàïðèìåð, âî ìíîãèõ áàíêîìàòàõ ðàáîòàåò ÎÑРQNX). Òîâàðû øèðîêîãî ïîòðåáëåíèÿ: ìîáèëüíûå òåëåôîíû, íàïðèìåð, â òåëåôîíàõ ñòàíäàðòà GSM ðàáîòàåò ÎÑРpSOS; öèôðîâûå òåëåâèçèîííûå äåêîäåðû; öèôðîâîå òåëåâèäåíèå (ìóëüòèìåäèà, âèäåîñåðâåðû. . . ); êîìïüþòåðíîå è îôèñíîå îáîðóäîâàíèå (ïðèíòåðû, êîïèðû), íàïðèìåð, â ôàêñàõ ïðèìåíÿåòñÿ ÎÑРVxWorks, â óñòðîéñòâàõ ÷òåíèÿ êîìïàêò-äèñêîâ ÎÑРVRTX32. Îòìåòèì, ÷òî ÷àñòî ÎÑРñóùåñòâóþò â íåñêîëüêèõ âàðèàíòàõ: ïîëíîì è ñîêðàùåííîì, êîãäà îáúåì ñèñòåìû ñîñòàâëÿåò íåñêîëüêî êèëîáàéòîâ. 7 1. Îïðåäåëåíèå è îñíîâíûå îñîáåííîñòè îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè (ÎÑÐÂ) 1.4. Îñîáåííîñòè îáîðóäîâàíèÿ, íà êîòîðîì ðàáîòàþò ÎÑРT Âû÷èñëèòåëüíûå óñòàíîâêè, íà êîòîðûõ ïðèìåíÿþòñÿ ÎÑÐÂ, ìîæíî óñëîâíî ðàçäåëèòü íà òðè ãðóïïû. AF 1. Îáû÷íûå êîìïüþòåðû. Ïî ëîãè÷åñêîìó óñòðîéñòâó ñîâïàäàþò ñ íàñòîëüíûìè ñèñòåìàìè. Àïïàðàòíîå óñòðîéñòâî íåñêîëüêî îòëè÷àåòñÿ. Äëÿ îáåñïå÷åíèÿ ìèíèìàëüíîãî âðåìåíè ïðîñòîÿ â ñëó÷àå òåõíè÷åêîé íåïîëàäêè ïðîöåññîð, ïàìÿòü è ò.ä. ðàçìåùåíû íà ñúåìíîé ïëàòå, âñòàâëÿåìîé â ñïåöèàëüíûé ðàçúåì òàê íàçûâàåìîé ïàññèâíîé îñíîâíîé ïëàòû.  äðóãèå ðàçúåìû ýòîé ïëàòû âñòàâëÿþòñÿ ïëàòû ïåðèôåðèéíûõ êîíòðîëëåðîâ è äðóãîå îáîðóäîâàíèå. Ñàì êîìïüþòåð ïîìåùàåòñÿ â ñïåöèàëüíûé êîðïóñ, îáåñïå÷èâàþùèé çàùèòó îò ïûëè è ìåõàíè÷åñêèõ ïîâðåæäåíèé.  êà÷åñòâå ìîíèòîðîâ ÷àñòî èñïîëüçóþòñÿ æèäêîêðèñòàëè÷åñêèå äèñïëåè, èíîãäà ñ ñåíñî÷óâñòâèòåëüíûì ïîêðûòèåì. Ïî ýêîíîìè÷åñêèì ïðè÷èíàì ñðåäè ïðîöåññîðîâ ýòèõ êîìïüþòåðîâ äîìèíèðóåò ñåìåéñòâî Intel 80x86. Ïîäîáíûå âû÷èñëèòåëüíûå ñèñòåìû îáû÷íî íå èñïîëüçóþòñÿ äëÿ íåïîñðåäñòâåííîãî óïðàâëåíèÿ ïðîìûøëåííûì èëè èíûì îáîðóäîâàíèåì. Îíè â îñíîâíîì ñëóæàò êàê òåðìèíàëû äëÿ âçàèìîäåéñòâèÿ ñ ïðîìûøëåííûìè êîìïüþòåðàìè è âñòðîåííûìè êîíòðîëëåðàìè, äëÿ âèçóàëèçàöèè ñîñòîÿíèÿ îáîðóäîâàíèÿ è òåõíîëîãè÷åñêîãî ïðîöåññà. Íà òàêèõ êîìïüþòåðàõ â êà÷åñòâå îïåðàöèîííûõ ñèñòåì ÷àñòî èñïîëüçóþòñÿ îáû÷íûå îïåðàöèîííûå ñèñòåìû ñ äîïîëíèòåëüíûìè ïðîãðàììíûìè êîìïëåêñàìè, àäàïòèðóþùèìè èõ ê òðåáîâàíèÿì ðåàëüíîãî âðåìåíè. 2. Ïðîìûøëåííûå êîìïüþòåðû. Ñîòîÿò èç îäíîé ïëàòû, íà êîòîðîé ðàçìåùåíû: ïðîöåññîð, êîíòðîëëåð ïàìÿòè, ïàìÿòü 4-õ âèäîâ: ÏÇÓ, ïîñòîÿííîå çàïîìèíàþùåå óñòðîéñòâî (ROM, read-only memory), ãäå îáû÷íî ðàçìåùåíà ñàìà ÎÑÐÂ; òèïè÷íàÿ åìêîñòü 500Kb; DR ÎÇÓ, îïåðàòèâíîå çàïîìèíàþùåå óñòðîéñòâî (RAM, random access memory), êóäà çàãðóæàåòñÿ êîä è äàííûå ÎÑÐÂ; îáû÷íî îðãàíèçîâàíà íà áàçå äèíàìè÷åñêîé ïàìÿòè (dynamic RAM, DRAM); òèïè÷íàÿ åìêîñòü 16Mb; ñòàòè÷åñêîå ÎÇÓ (static RAM, SRAM) (òî æå, ÷òî è ÎÇÓ, íî ïèòàåòñÿ îò èìåþùåéñÿ íà ïëàòå áàòàðåéêè), ãäå ðàçìåùàþòñÿ êðèòè÷åñêè âàæíûå äàííûå, êîòîðûå íå äîëæíû ïðîïàäàòü ïðè âûêëþ÷åíèè ïèòàíèÿ; òèïè÷íàÿ åìêîñòü 2Mb; òèïè÷íîå âðåìÿ ñîõðàíåíèÿ äàííûõ 5 ëåò; ôëåø-ïàìÿòü (flash RAM) (ýëåêòðè÷åñêè ïðîãðàììèðóåìîå ÏÇÓ), êîòîðîå èãðàåò ðîëü äèñêà äëÿ ÎÑÐÂ; òèïè÷íàÿ åìêîñòü 4Mb; êîíòðîëëåðû ïåðèôåðèéíûõ óñòðîéñòâ: SCSI (Small Computer System Interface), Ethernet, COM ïîðòîâ, ïàðàëëåëüíîãî ïîðòà, íåñêîëüêî ïðîãðàììèðóåìûõ òàéìåðîâ. Íà ïëàòå íàõîäèòñÿ òàêæå êîíòðîëëåð è ðàçúåì øèíû, ÷åðåç êîòîðóþ êîìïüþòåð óïðàâëÿåò âíåøíèìè óñòðîéñòâàìè.  êà÷åñòâå øèíû â ïîäàâëÿþùåì áîëüøèíñòâå ñëó÷àåâ èñïîëüçóåòñÿ øèíà VME, êîòîðóþ â ïîñëåäíåå âðåìÿ ñòàëà òåñíèòü øèíà Compact PCI. Îòìåòèì, ÷òî íåñìîòðÿ íà íàëè÷èå êîíòðîëëåðà SCSI, îáû÷íî ÎÑРðàáîòàåò áåç äèñêîâûõ íàêîïèòåëåé, ïîñêîëüêó ïîñëåäíèå íå óäîâëåòâîðÿþò ïðåäúÿâëÿåìûì ê ñèñòåìàì ðåàëüíîãî âðåìåíè òðåáîâàíèÿì ïî íàäåæíîñòè, óñòîé÷èâîñòè ê âèáðàöèè, ãàáàðèòàì è âðåìåíè ãîòîâíîñòè ïîñëå âêëþ÷åíèÿ ïèòàíèÿ. Ïëàòà ïîìåùàåòñÿ â ñïåöèàëüíûé êîðïóñ (êðåéò), â êîòîðîì ðàçâåäåíû ðàçúåìû øèíû è óñòàíîâëåí áëîê ïèòàíèÿ. Êîðïóñ îáåñïå÷èâàåò íàäëåæàùèé òåìïåðàòóðíûé ðåæèì, çàùèòó îò ïûëè è ìåõàíè÷åñêèõ ïîâðåæäåíèé.  òîò æå êîðïóñ âñòàâëÿþòñÿ ïëàòû àíàëîãî-öèôðîâûõ è/èëè öèôðî-àíàëîãîâûõ ïðåîáðàçîâàòåëåé (ÀÖÏ è/èëè ÖÀÏ) 8 1.4. Îñîáåííîñòè îáîðóäîâàíèÿ, íà êîòîðîì ðàáîòàþò ÎÑРT (analog to digital and/or digital to analog converters, ADC and/or DAC), ÷åðåç êîòîðûå îñóùåñòâëÿåòñÿ ââîä/âûâîä óïðàâëÿþùåé èíôîðìàöèè, ïëàòû óïðàâëåíèÿ ýëåêòðîìîòîðàìè è ò.ï.  òîò æå êîðïóñ ìîãóò âñòàâëÿòüñÿ äðóãèå òàêèå æå (èëè èíûå) ïðîìûøëåííûå êîìïüþòåðû, îáðàçóÿ ìíîãîïðîöåññîðíóþ ñèñòåìó. AF Ñðåäè ïðîöåññîðîâ ïðîìûøëåííûõ êîìïüþòåðîâ äîìèíèðóþò ïðîöåññîðû ñåìåéñòâ PowerPC (Motorola IBM) è Motorola 68xxx (Motorola). Òàêæå ïðèñóòñòâóþò ïðîöåññîðû ñåìåéñòâ SPARC (SUN), Intel 80x86 (Intel), ARM (ARM), Intel 80960x (Intel). Ïðè âûáîðå ïðîöåññîðà îïðåäåëÿþùèìè ôàêòîðàìè ÿâëÿþòñÿ ïîëó÷åíèå òðåáóåìîé ïðîèçâîäèòåëüíîñòè ïðè íàèìåíüøåé òàêòîâîé ÷àñòîòå, à, çíà÷èò, è íàèìåíüøåé ðàññåèâàåìîé ìîùíîñòè, à òàêæå íàèìåíüøåå âðåìÿ ïåðåêëþ÷åíèÿ çàäà÷ è ðåàêöèè íà ïðåðûâàíèÿ. Ïîä÷åðêíåì âàæíîñòü ìàëîé ðàññåèâàåìîé ìîùíîñòè ïðîöåññîðà ñ òî÷êè çðåíèÿ ïîëó÷åíèÿ âûñîêîé îòêàçîóñòîé÷èâîñòè ñèñòåìû â öåëîì, ïîñêîëüêó ìàëûé íàãðåâ ïðîöåññîðà ïîçâîëÿåò îáîéòèñü áåç îõëàæäàþùåãî âåíòèëÿòîðà, êîòîðûé ÿâëÿåòñÿ äîñòàòî÷íî íåíàäåæíûì ìåõàíè÷åñêèì óñòðîéñòâîì. Ïðîìûøëåííûå êîìïüþòåðû èñïîëüçóþòñÿ äëÿ íåïîñðåäñòâåííîãî óïðàâëåíèÿ ïðîìûøëåííûì èëè èíûì îáîðóäîâàíèåì. Îíè ÷àñòî íå èìåþò ìîíèòîðà è êëàâèàòóðû, è äëÿ âçàèìîäåéñòâèÿ ñ íèìè ñëóæàò îáû÷íûå êîìïüþòåðû, ñîåäèíåííûå ñ íèìè ÷åðåç ïîñëåäîâàòåëüíûé ïîðò (COM ïîðò) èëè Ethernet. 3. ñèñòåìû. Óñòàíàâëèâàþòñÿ âíóòðü îáîðóäîâàíèÿ, êîòîðûì îíè óïðàâëÿþò. Äëÿ êðóïíîãî îáîðóäîâàíèÿ (íàïðèìåð, ëîêîìîòèâ èëè ñàìîëåò) ìîãóò ïî èñïîëíåíèþ ñîâïàäàòü ñ ïðîìûøëåííûìè êîìïüþòåðàìè. Äëÿ îáîðóäîâàíèÿ ïîìåíüøå (íàïðèìåð, ïðèíòåð) ìîãóò ïðåäñòàâëÿòü ñîáîé ïðîöåññîð ñ ñîïóòñòâóþùèìè ýëåìåíòàìè, ðàçìåùåííûé íà îäíîé ïëàòå ñ äðóãèìè ýëåêòðîííûìè êîìïîíåíòàìè ýòîãî îáîðóäîâàíèÿ. Äëÿ ìèíèàòþðíîãî îáîðóäîâàíèÿ (íàïðèìåð, ìîáèëüíûé òåëåôîí) ïðîöåññîð ñ ñîïóòñòâóþùèìè ýëåìåíòàìè ìîæåò áûòü ÷àñòüþ îäíîé èç áîëüøèõ èíòåãðàëüíûõ ñõåì ýòîãî îáîðóäîâàíèÿ. Âñòðàèâàåìûå  äàëüíåéøåì ïîä êîìïüþòåðîì äëÿ ÎÑРìû áóäåì ïîíèìàòü ïðîìûøëåííûé êîìïüþòåð. Îòìåòèì îñíîâíûå îñîáåííîñòè ÎÑÐÂ, äèêòóåìûå íåîáõîäèìîñòüþ åå ðàáîòû íà ïðîìûøëåííîì êîìïüþòåðå. Ñèñòåìà ÷àñòî äîëæíà ðàáîòàòü íà áåçäèñêîâîì êîìïüþòåðå è îñóùåñòâëÿòü íà÷àëüíóþ çàãðóçêó èç ÏÇÓ.  ñèëó ýòîãî: DR êðèòè÷åñêè âàæíûì ÿâëÿåòñÿ ðàçìåð ñèñòåìû; äëÿ ýêîíîìèè ìåñòà â ÏÇÓ ÷àñòü ñèñòåìû ÷àñòî õðàíèòñÿ â ñæàòîì âèäå è çàãðóæàåòñÿ â ÎÇÓ ïî ìåðå íåîáõîäèìîñòè; ñèñòåìà ÷àñòî ïîçâîëÿåò èñïîëíÿòü êîä êàê â ÎÇÓ, òàê è â ÏÇÓ; ïðè íàëè÷èè ñâîáîäíîãî ìåñòà â ÎÇÓ ñèñòåìà ÷àñòî êîïèðóåò ñåáÿ èç ìåäëåííîãî ÏÇÓ â áîëåå áûñòðîå ÎÇÓ; ñàìà ñèñòåìà êîìïèëèðóåòñÿ, ëèíêóåòñÿ è ïðåâðàùàåòñÿ â çàãðóçî÷íûé ìîäóëü íà äðóãîì, îáû÷íîì êîìïüþòåðå, ñâÿçàííîì ñ ïðîìûøëåííûì êîìïüþòåðîì ÷åðåç ïîñëåäîâàòåëüíûé ïîðò èëè Ethernet; ýòî òðåáóåò ñïåöèàëüíîãî êðîññïëàòôîðìåííîãî èíñòðóìåíòàðèÿ ðàçðàáîò÷èêà, ïîñêîëüêó òèïû ïðîöåññîðîâ è/èëè îïåðàöèîííûõ ñèñòåì íà ýòèõ äâóõ êîìïüþòåðàõ íå ñîâïàäàþò. Ñèñòåìà ïî-âîçìîæíîñòè äîëæíà ïîääåðæèâàòü êàê ìîæíî áîëåå øèðîêèé ðÿä ïðîöåññîðîâ, ÷òî äàåò âîçìîæíîñòü ïîòðåáèòåëþ âûáðàòü ïðîöåññîð ïîäõîäÿùåé ìîùíîñòè. Ñèñòåìà ïî-âîçìîæíîñòè äîëæíà ïîääåðæèâàòü êàê ìîæíî áîëåå øèðîêèé ðÿä ñïåöèàëüíîãî îáîðóäîâàíèÿ (ïåðèôåðèéíûå êîíòðîëëåðû, òàéìåðû è ò.ä.), êîòîðûå ìîãóò ñòîÿòü íà ïëàòå êîìïüþòåðà è ïëàòàõ, êîòîðûìè îí óïðàâëÿåò ÷åðåç îáùóþ øèíó. 9 2. Îñíîâíûå ïîëîæåíèÿ T Î÷åâèäíî, ÷òî äëÿ ïîëó÷åíèÿ çàêîí÷åííîé ñèñòåìû óïðàâëåíèÿ íå äîñòàòî÷íî ïðîìûøëåííîãî êîìïüþòåðà, ÀÖÏ è/èëè ÖÀÏ ïëàòû, êðåéòà è ÎÑÐÂ. Íóæíî åùå íàïèñàòü ïðîãðàììó, êîòîðàÿ áóäåò íåïîñðåäñòâåííî óïðàâëÿòü êîíêðåòíûì ïðîìûøëåííûì îáîðóäîâàíèåì. Äëÿ ýòîãî íåîáõîäèì (êðîññïëàòôîðìåííûé) èíñòðóìåíòàðèé ðàçðàáîò÷èêà, öåíà êîòîðîãî ìîæåò ïðåâîñõîäèòü öåíó ïåðå÷èñëåííûõ âûøå êîìïîíåíò, âìåñòå âçÿòûõ. Ïðàâäà, ýòîò èíñòðóìåíòàðèé íóæåí òîëüêî ðàçðàáîò÷èêó, è ïîëó÷åííàÿ ïðîãðàììà ìîæåò ðàáîòàòü íà ìíîãèõ êîìïüþòåðàõ. Êðèòè÷åñêè âàæíûì ïàðàìåòðîì äëÿ ÎÑРÿâëÿåòñÿ âðåìÿ åå ðåàêöèè íà ïðåðûâàíèÿ (êîòîðîå ñêëàäûâàåòñÿ èç àïïàðàòíîãî âðåìåíè çàäåðæêè è ïðîãðàììíûõ çàäåðæåê), à òàêæå ïðåäñêàçóåìîñòü ýòîãî âðåìåíè. AF 2. Îñíîâíûå ïîëîæåíèÿ  ýòîì ðàçäåëå ìû ââåäåì îñíîâíûå ïîíÿòèÿ, èñïîëüçóåìûå ïðè ðàññìîòðåíèè îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè. 2.1. Îñíîâíûå îïðåäåëåíèÿ Îïðåäåëåíèå. Ïðîãðàììà ýòî îïèñàíèå íà íåêîòîðîì ôîðìàëèçîâàííîì ÿçûêå àëãîðèòìà, ðåøàþùåãî ïîñòàâëåííóþ çàäà÷ó. Ïðîãðàììà ÿâëÿåòñÿ ñòàòè÷åñêîé åäèíèöåé, ò.å. íåèçìåíÿåìîé ñ òî÷êè çðåíèÿ îïåðàöèîííîé ñèñòåìû, åå âûïîëíÿþùåé. Îïðåäåëåíèå. Ïðîöåññîð ýòî óñòðîéñòâî, âûïîëíÿþùåå îïðåäåëåííûé íàáîð èíñòðóêöèé. Äëÿ òîãî, ÷òîáû áûòü âûïîëíåííîé, ïðîãðàììà äîëæíà áûòü ïðåæäå âñåãî ïåðåâåäåíà ñ àëãîðèòìè÷åñêîãî ÿçûêà íà ÿçûê ýòèõ èíñòðóêöèé (ñêîìïèëèðîâàíà). Îïðåäåëåíèå. Ïðîöåññ ýòî äèíàìè÷åñêàÿ ñóùíîñòü ïðîãðàììû, åå êîä â ïðîöåññå ñâîåãî âûïîëíåíèÿ. Èìååò ñîáñòâåííûå îáëàñòè ïàìÿòè ïîä êîä è äàííûå, ñîáñòâåííûé ñòåê, (â ñèñòåìàõ ñ âèðòóàëüíîé ïàìÿòüþ) ñîáñòâåííîå îòîáðàæåíèå âèðòóàëüíîé ïàìÿòè íà ôèçè÷åñêóþ, DR ñîáñòâåííîå ñîñòîÿíèå. Ïðîöåññ ìîæåò íàõîäèòñÿ â îäíîì èç ñëåäóþùèõ òèïè÷íûõ ñîñòîÿíèé (òî÷íîå êîëè÷åñòâî è ñâîéñòâà òîãî èëè èíîãî ñîñòîÿíèÿ çàâèñÿò îò îïåðàöèîííîé ñèñòåìû): 1. îñòàíîâëåí ïðîöåññ îñòàíîâëåí è íå èñïîëüçóåò ïðîöåññîð; íàïðèìåð, â òàêîì ñîñòîÿíèè ïðîöåññ íàõîäèòñÿ ñðàçó ïîñëå ñîçäàíèÿ; 2. òåðìèíèðîâàí ïðîöåññ òåðìèíèðîâàí è íå èñïîëüçóåò ïðîöåññîð; íàïðèìåð, ïðîöåññ çàêîí÷èëñÿ, íî åùå íå óäàëåí îïåðàöèîííîé ñèñòåìîé; 3. æäåò ïðîöåññ æäåò íåêîòîðîãî ñîáûòèÿ (êîòîðûì ìîæåò áûòü àïïàðàòíîå èëè ïðîãðàììíîå ïðåðûâàíèå, ñèãíàë èëè äðóãàÿ ôîðìà ìåæïðîöåññíîãî âçàèìîäåéñòâèÿ); 4. ãîòîâ ïðîöåññ íå îñòàíîâëåí, íå òåðìèíèðîâàí, íå îæèäàåò, íå óäàëåí, íî è íå ðàáîòàåò; íàïðèìåð, ïðîöåññ ìîæåò íå ïîëó÷àòü äîñòóïà ê ïðîöåññîðó, åñëè â äàííûé ìîìåíò âûïîëíÿåòñÿ äðóãîé, áîëåå ïðèîðèòåòíûé ïðîöåññ; 5. âûïîëíÿåòñÿ ïðîöåññ âûïîëíÿåòñÿ è èñïîëüçóåò ïðîöåññîð; â ÎÑРýòî îáû÷íî îçíà÷àåò, ÷òî ýòîò ïðîöåññ ÿâëÿåòñÿ ñàìûì ïðèîðèòåòíûì, ñðåäè âñåõ ïðîöåññîâ, íàõîäÿùèõñÿ â ñîñòîÿíèè ãîòîâ. 10 2.1. Îñíîâíûå îïðåäåëåíèÿ T Îïðåäåëåíèå. Ñòåê (stack) ýòî îáëàñòü ïàìÿòè, â êîòîðîé ðàçìåùàþòñÿ ëîêàëüíûå ïåðåìåííûå, àðãóìåíòû è âîçâðàùàåìûå çíà÷åíèÿ ôóíêöèé. Âìåñòå ñ îáëàñòüþ ñòàòè÷åñêèõ äàííûõ ïîëíîñòüþ çàäàåò òåêóùåå ñîñòîÿíèå ïðîöåññà. Îïðåäåëåíèå. Âèðòóàëüíàÿ ïàìÿòü ýòî ïàìÿòü, â àäðåñíîì ïðîñòðàíñòâå êîòîðîé ðàáîòàåò ïðîöåññ. Âèðòóàëüíàÿ ïàìÿòü: 1. ïîçâîëÿåò óâåëè÷èòü îáúåì ïàìÿòè, äîñòóïíîé ïðîöåññàì çà ñ÷åò äèñêîâîé ïàìÿòè; 2. îáåñïå÷èâàåò âûäåëåíèå êàæäîìó èç ïðîöåññîâ âèðòóàëüíî íåïðåðûâíîãî áëîêà ïàìÿòè, íà÷èíàþùåãîñÿ (âèðòóàëüíî) ñ îäíîãî è òîãî æå àäðåñà; 3. îáåñïå÷èâàåò èçîëÿöèþ îäíîãî ïðîöåññà îò äðóãîãî. AF Òðàíñëÿöèåé âèðòóàëüíîãî àäðåñà â ôèçè÷åñêèé çàíèìàåòñÿ îïåðàöèîííàÿ ñèñòåìà. Äëÿ óñêîðåíèÿ ýòîãî ïðîöåññà ìíîãèå êîìïüþòåðíûå ñèñòåìû èìåþò ïîääåðæêó ñî ñòîðîíû àïïàðàòóðû, êîòîðàÿ ìîæåò áûòü ëèáî ïðÿìî â ïðîöåññîðå, ëèáî â ñïåöèàëüíîì óñòðîéñòâå óïðàâëåíèÿ ïàìÿòüþ. Ñðåäè ìåõàíèçìîâ òðàíñëÿöèè âèðòóàëüíîãî àäðåñà ïðåîáëàäàåò ñòðàíè÷íûé, ïðè êîòîðîì âèðòóàëüíàÿ è ôèçè÷åñêàÿ ïàìÿòü ðàçáèâàþòñÿ íà êóñêè ðàâíîãî ðàçìåðà, íàçûâàåìûå ñòðàíèöàìè (òèïè÷íûé ðàçìåð 4Kb), ìåæäó ñòðàíèöàìè âèðòóàëüíîé è ôèçè÷åñêîé ïàìÿòè óñòàíàâëèâàåòñÿ âçàèìíî-îäíîçíà÷íîå (äëÿ êàæäîãî ïðîöåññà) îòîáðàæåíèå. Îòìåòèì, ÷òî ÎÑРñòðåìÿòñÿ ïîëó÷èòü ìàêñèìàëüíóþ ïðîèçâîäèòåëüíîñòü íà èìåþùåìñÿ îáîðóäîâàíèè, ïîýòîìó íåêîòîðûå ÎÑРíå èñïîëüçóþò ìåõàíèçì âèðòóàëüíîé ïàìÿòè èç-çà çàäåðæåê, âíîñèìûõ ïðè òðàíñëÿöèè àäðåñà. Îïðåäåëåíèå. Ìåæïðîöåññíîå âçàèìîäåéñòâèå ýòî òîò èëè èíîé ñïîñîá ïåðåäà÷è èíôîðìàöèè èç îäíîãî ïðîöåññà â äðóãîé. Íàèáîëåå ðàñïðîñòðàíåííûìè ôîðìàìè âçàèìîäåéñòâèÿ ÿâëÿþòñÿ (íå âñå ñèñòåìû ïîääåðæèâàþò ïåðå÷èñëåííûå íèæå âîçìîæíîñòè): Ðàçäåëÿåìàÿ ïàìÿòü äâà (èëè áîëåå) ïðîöåññà èìåþò äîñòóï ê îäíîìó è òîìó æå áëîêó ïàìÿòè.  ñèñòåìàõ ñ âèðòóàëüíîé ïàìÿòüþ îðãàíèçàöèÿ òàêîãî âèäà âçàèìîäåéñòâèÿ òðåáóåò ïîääåðæêè ñî ñòîðîíû îïåðàöèîííîé ñèñòåìû, ïîñêîëüêó íåîáõîäèìî îòîáðàçèòü ñîîòâåòñòâóþùèå áëîêè âèðòóàëüíîé ïàìÿòè ïðîöåññîâ íà îäèí è òîò æå áëîê ôèçè÷åñêîé ïàìÿòè. 2. Ñåìàôîðû äâà (èëè áîëåå) ïðîöåññà èìåþò äîñòóï ê îäíîé ïåðåìåííîé, ïðèíèìàþùåé çíà÷åíèå 0 èëè 1. Ñàìà ïåðåìåííàÿ ÷àñòî íàõîäèòñÿ â îáëàñòè äàííûõ îïåðàöèîííîé ñèñòåìû è äîñòóï ê íåé îðãàíèçóåòñÿ ïîñðåäñòâîì ñïåöèàëüíûõ ôóíêöèé. DR 1. 3. Ñèãíàëû ýòî ñîîáùåíèÿ, äîñòàâëÿåìûå ïîñðåäñòâîì îïåðàöèîííîé ñèñòåìû ïðîöåññó. Ïðîöåññ äîëæåí çàðåãèñòðèðîâàòü îáðàáîò÷èê ýòîãî ñîîáùåíèÿ ó îïåðàöèîííîé ñèñòåìû, ÷òîáû ïîëó÷èòü âîçìîæíîñòü ðåàãèðîâàòü íà íåãî. ×àñòî îïåðàöèîííàÿ ñèñòåìà èçâåùàåò ïðîöåññ ñèãíàëîì î íàñòóïëåíèè êàêîãî-ëèáî ñáîÿ, íàïðèìåð, äåëåíèè íà 0, èëè î êàêîì-ëèáî àïïàðàòíîì ïðåðûâàíèè, íàïðèìåð, ïðåðûâàíèè òàéìåðà. 4. Ïî÷òîâûå ÿùèêè ýòî î÷åðåäü ñîîáùåíèé (îáû÷íî òåõ èëè èíûõ ñòðóêòóð äàííûõ), êîòîðûå ïîìåùàþòñÿ â ïî÷òîâûé ÿùèê ïðîöåññàìè è/èëè îïåðàöèîííîé ñèñòåìîé. Íåñêîëüêî ïðîöåññîâ ìîãóò æäàòü ïîñòóïëåíèÿ ñîîáùåíèÿ â ïî÷òîâûé ÿùèê è àêòèâèçèðîâàòüñÿ ïî åãî ïîñòóïëåíèè. Òðåáóåò ïîääåðæêè ñî ñòîðîíû îïåðàöèîííîé ñèñòåìû. Îïðåäåëåíèå. Ñîáûòèå ýòî îïîâåùåíèå ïðîöåññà ñî ñòîðîíû îïåðàöèîííîé ñèñòåìû î òîé èëè èíîé ôîðìå ìåæïðîöåññíîãî âçàèìîäåéñòâèÿ, íàïðèìåð, î ïðèíÿòèè ñåìàôîðîì íóæíîãî çíà÷åíèÿ, î íàëè÷èè ñèãíàëà, î ïîñòóïëåíèè ñîîáùåíèÿ â ïî÷òîâûé ÿùèê. Ñîçäàíèå, îáåñïå÷åíèå âçàèìîäåéñòâèÿ, ðàçäåëåíèå ïðîöåññîðíîãî âðåìåíè òðåáóåò îò îïåðàöèîííîé ñèñòåìû çíà÷èòåëüíûõ âû÷èñëèòåëüíûõ çàòðàò, îñîáåííî â ñèñòåìàõ ñ âèðòóàëüíîé ïàìÿòüþ. Ýòî ñâÿçàíî ïðåæäå âñåãî ñ òåì, ÷òî êàæäûé ïðîöåññ èìååò ñâîå îòîáðàæåíèå âèðòóàëüíîé ïàìÿòè íà ôèçè÷åñêóþ, êîòîðîå íàäî ìåíÿòü ïðè ïåðåêëþ÷åíèè ïðîöåññîâ è ïðè îáåñïå÷åíèè èõ äîñòóïà ê îáúåêòàì âçàèìîäåéñòâèÿ (îáùåé ïàìÿòè, ñåìàôîðàì, ïî÷òîâûì ÿùèêàì). Î÷åíü ÷àñòî áûâàåò òàê, ÷òî òðåáóåòñÿ çàïóñòèòü íåñêîëüêî êîïèé îäíîé è òîé æå 11 2. Îñíîâíûå ïîëîæåíèÿ T ïðîãðàììû, íàïðèìåð, äëÿ óïðàâëåíèÿ íåñêîëüêèìè åäèíèöàìè îäíîãî è òîãî æå îáîðóäîâàíèÿ.  ýòîì ñëó÷àå ìû íåñåì äâîéíûå íàêëàäíûå ðàñõîäû: äåðæèì â îïåðàòèâíîé ïàìÿòè íåñêîëüêî êîïèé êîäà îäíîé ïðîãðàììû è åùå òðàòèì äîïîëíèòåëüíîå âðåìÿ íà îáåñïå÷åíèå èõ âçàèìîäåéñòâèÿ. Óëó÷øàåò ñèòóàöèþ ââåäåíèå çàäà÷. Îïðåäåëåíèå. Çàäà÷à (èëè ïîòîê, èëè íèòü, thread) ýòî êàê-áû îäíà èç âåòâåé èñïîëíåíèÿ ïðîöåññà: ðàçäåëÿåò ñ ïðîöåññîì îáëàñòü ïàìÿòè ïîä êîä è äàííûå, èìååò ñîáñòâåííûé ñòåê, (â ñèñòåìàõ ñ âèðòóàëüíîé ïàìÿòüþ) ðàçäåëÿåò ñ ïðîöåññîì îòîáðàæåíèå âèðòóàëüíîé ïàìÿòè íà ôèçè÷åñêóþ. AF èìååò ñîáñòâåííîå ñîñòîÿíèå. DR Òàêèì îáðàçîì, ó äâóõ çàäà÷ â îäíîì ïðîöåññå âñÿ ïàìÿòü ÿâëÿåòñÿ ðàçäåëÿåìîé è äîïîëíèòåëüíûå ðàñõîäû, ñâÿçàííûå ñ ðàçíûì îòîáðàæåíèåì âèðòóàëüíîé ïàìÿòè íà ôèçè÷åñêóþ, ñâåäåíû ê íóëþ. Äëÿ çàäà÷ òàê æå, êàê äëÿ ïðîöåññîâ, îïðåäåëÿþòñÿ ïîíÿòèÿ ñîñòîÿíèÿ çàäà÷è è ìåæçàäà÷íîãî âçàèìîäåéñòâèÿ. Îïðåäåëåíèå. Ðåñóðñ ýòî îáúåêò, íåîáõîäèìûé äëÿ ðàáîòû ïðîöåññó èëè çàäà÷å. Îïðåäåëåíèå. Ïðèîðèòåò ýòî ÷èñëî, ïðèïèñàííîå îïåðàöèîííîé ñèñòåìîé êàæäîìó ïðîöåññó è çàäà÷å. ×åì áîëüøå ýòî ÷èñëî, òåì âàæíåå ýòîò ïðîöåññ èëè çàäà÷à è òåì áîëüøå ïðîöåññîðíîãî âðåìåíè îí èëè îíà ïîëó÷èò. Êàê îòìå÷àëîñü âûøå, ÷àñòî â ÎÑРçàäà÷à ñ ìåíüøèì ïðèîðèòåòîì ìîæåò âîîáùå íå ïîëó÷èòü óïðàâëåíèÿ ïðè íàëè÷èè â ñîñòîÿíèè ãîòîâíîñòè çàäà÷è ñ áîëüøèì ïðèîðèòåòîì. Åñëè â îïåðàöèîííîé ñèñòåìå ìîãóò îäíîâðåìåííî ñóùåñòâîâàòü íåñêîëüêî ïðîöåññîâ èëè/è çàäà÷, íàõîäÿùèõñÿ â ñîñòîÿíèè âûïîëíÿåòñÿ, òî ãîâîðÿò, ÷òî ýòî ìíîãîçàäà÷íàÿ ñèñòåìà, à ýòè ïðîöåññû íàçûâàþò ïàðàëëåëüíûìè. Îòìåòèì, ÷òî åñëè ïðîöåññîð îäèí, òî â êàæäûé ìîìåíò âðåìåíè íà ñàìîì äåëå ðåàëüíî âûïîëíÿåòñÿ òîëüêî îäèí ïðîöåññ èëè çàäà÷à. Ñèñòåìà ðàçäåëÿåò âðåìÿ ìåæäó òàêèìè âûïîëíÿþùèìèñÿ ïðîöåññàìè/çàäà÷àìè, äàâàÿ êàæäîìó èç íèõ êâàíò âðåìåíè, ïðîïîðöèîíàëüíûé åãî ïðèîðèòåòó. Ýòîò êâàíò âðåìåíè ÷àñòî íå çàâèñèò îò ñïåöèôèêè ðåøàåìîé çàäà÷è ðåàëüíîãî âðåìåíè, ïîýòîìó òàêîé ïîäõîä îáû÷íî íå èñïîëüçóåòñÿ â ÎÑÐÂ. Îáû÷íî â ÎÑРâ ñîñòîÿíèè âûïîëíåíèÿ ìîæåò áûòü òîëüêî îäèí ïðîöåññ.  õîðîøåé ÎÑРýòî ìîæíî èçìåíèòü ïðîãðàììíûì ïóòåì. Îïðåäåëåíèå. Ñâÿçûâàíèå (ëèíêîâêà, linkage) ýòî ïðîöåññ ïðåâðàùåíèÿ ñêîìïèëèðîâàííîãî êîäà (îáúåêòíûõ ìîäóëåé) â çàãðóçî÷íûé ìîäóëü (ò.å. òî, ÷òî ìîæåò èñïîëíÿòüñÿ ïðîöåññîðîì ïðè ïîääåðæêå îïåðàöèîííîé ñèñòåìû). Ðàçëè÷àþò: ñòàòè÷åñêîå ñâÿçûâàíèå, äèíàìè÷åñêîå ñâÿçûâàíèå, êîãäà êîä íåîáõîäèìûõ äëÿ ðàáîòû ïðîãðàììû áèáëèîòå÷íûõ ôóíêöèé ôèçè÷åñêè äîáàâëÿåòñÿ ê êîäó îáúåêòíûõ ìîäóëåé äëÿ ïîëó÷åíèÿ çàãðóçî÷íîãî ìîäóëÿ; êîãäà â ðåçóëüòèðóþùåì çàãðóçî÷íîì ìîäóëå ïðîñòàâëÿþòñÿ ëèøü ññûëêè íà êîä íåîáõîäèìûõ áèáëèîòå÷íûõ ôóíêöèé; ñàì êîä áóäåò ðåàëüíî äîáàâëåí ê çàãðóçî÷íîìó ìîäóëþ òîëüêî ïðè åãî èñïîëíåíèè. Ïðè ñòàòè÷åñêîì ñâÿçûâàíèè çàãðóçî÷íûå ìîäóëè ïîëó÷àþòñÿ î÷åíü áîëüøîãî ðàçìåðà. Ïîýòîìó ïîäàâëÿþùåå áîëüøèíñòâî ñîâðåìåííûõ îïåðàöèîííûõ ñèñòåì èñïîëüçóåò äèíàìè÷åñêîå ñâÿçûâàíèå, íåñìîòðÿ íà òî, ÷òî ïðè ýòîì íà÷àëüíàÿ çàãðóçêà ïðîöåññà íà èñïîëíåíèå ìåäëåííåå, ÷åì ïðè ñòàòè÷åñêîì ñâÿçûâàíèè èç-çà íåîáõîäèìîñòè ïîèñêà è çàãðóçêè êîäà íóæíûõ áèáëèîòå÷íûõ ôóíêöèé (÷àñòî òîëüêî òåõ èç íèõ, êîòîðûå íå áûëè çàãðóæåíû äëÿ äðóãèõ ïðîöåññîâ). 12 2.2. Òèïû çàäà÷ 2.2. Òèïû çàäà÷ 1. Öèêëè÷åñêèå 2. Ïåðèîäè÷åñêèå 3. Èìïóëüñíûå ñîâ. T Âñÿêèé ïðîöåññ ñîäåðæèò îäíó èëè íåñêîëüêî çàäà÷. Îïåðàöèîííàÿ ñèñòåìà ïîçâîëÿåò çàäà÷å ïîðîæäàòü íîâûå çàäà÷è. Çàäà÷è ïî ñâîåé ìàíåðå äåéñòâîâàòü ìîæíî ðàçäåëèòü íà 3 êàòåãîðèè. çàäà÷è. Õàðàêòåðíû äëÿ ïðîöåññîâ óïðàâëåíèÿ è èíòåðàêòèâíûõ ïðîöåñ- ñèíõðîíèçàöèè. çàäà÷è. Õàðàêòåðíû äëÿ ìíîãèõ òåõíîëîãè÷åñêèõ ïðîöåññîâ è çàäà÷ AF çàäà÷è. Õàðàêòåðíû äëÿ çàäà÷ ñèãíàëèçàöèè è àñèíõðîííûõ òåõíîëîãè÷åñêèõ ïðîöåññîâ. 2.3. Âèäû ïðîãðàììèðîâàíèÿ  çàâèñèìîñòè îò àðõèòåêòóðû öåëåâîãî êîìïüþòåðà è íàçíà÷åíèÿ, ïîäõîäû ê íàïèñàíèþ ïðîãðàìì ìîæíî ðàçäåëèòü íà 3 ãðóïïû. 1. Ïîñëåäîâàòåëüíîå ïðîãðàììèðîâàíèå. Ïðîãðàììà èñïîëíÿåòñÿ íà îäíîì ïðîöåññîðå â âèäå îäíîãî ïðîöåññà, ñîñòîÿùåãî èç îäíîé çàäà÷è. Ïîâåäåíèå ïðîãðàììû äåòåðìèíèðîâàíî. Ðåçóëüòàò ðàáîòû íå çàâèñèò îò âðåìåííûõ õàðàêòåðèñòèê êîìïüþòåðà, òàêèõ, êàê ïðîèçâîäèòåëüíîñòü ïðîöåññîðà, ñêîðîñòü ïåðåêëþ÷åíèÿ çàäà÷, âðåìÿ ðåàêöèè íà âíåøíèå ñîáûòèÿ. 2. Ïàðàëëåëüíîå ïðîãðàììèðîâàíèå. Ðàçëè÷àþò êâàçè-ïàðàëëåëüíûå ïðîãðàììû, ñîñòîÿùèå èç íåñêîëüêèõ íåçàâèñèìûõ ïðîöåññîâ, è èñòèííî-ïàðàëëåëüíûå ïðîãðàììû, ñîñòîÿùèå èç íåñêîëüêèõ ñâÿçàííûõ ìåæäó ñîáîé ïàðàëëåëüíî ðàáîòàþùèõ ïðîöåññîâ èëè/è çàäà÷. Êîíå÷íîå ñîñòîÿíèå ïðîãðàììû ìîæåò çàâèñåòü îò âðåìåííûõ õàðàêòåðèñòèê êîìïüþòåðà, êîãäà ïðîöåññû èëè/è çàäà÷è ìîãóò çàâåðøàòüñÿ â ðàçíîì ïîðÿäêå. DR 3. Ïðîãðàììèðîâàíèå äëÿ ñèñòåì ðåàëüíîãî âðåìåíè. ßâëÿåòñÿ ïî-íåîáõîäèìîñòè ïàðàëëåëüíûì, ïîñêîëüêó íà îäíîì êîìïüþòåðå îáû÷íî ðàáîòàþò íåñêîëüêî ïðîöåññîâ è çàäà÷, óïðàâëÿþùèõ îáîðóäîâàíèåì, íàõîäÿùèìñÿ â îäíîé òåõíîëîãè÷åñêîé öåïî÷êå. Ïî îïðåäåëåíèþ ðåàëüíîãî âðåìåíè íåîáõîäèìî ãàðàíòèðîâàííî ñîáëþñòè âðåìåííûå îãðàíè÷åíèÿ è ïðè ýòîì îáåñïå÷èòü ìàêñèìàëüíî âûñîêóþ ñêîðîñòü âûïîëíåíèÿ. 2.4. Âèäû ðåñóðñîâ Ïî ñâîåé ïðèðîäå ðåñóðñû ìîæíî ðàçäåëèòü íà àïïàðàòíûå: ïðîöåññîð, îáëàñòü ïàìÿòè, ïåðèôåðèéíûå óñòðîéñòâà, ïðåðûâàíèÿ, ïðîãðàììíûå: ïðîãðàììà, äàííûå, ôàéëû, ñîîáùåíèÿ. 13 2. Îñíîâíûå ïîëîæåíèÿ Ïðîöåññ 1 Ïðîöåññ 3 Ðàçäåëÿåìûé íå êðèòè÷íûé ðåñóðñ T Ïðîöåññ 2 Ïðîöåññ 3 Ïðîöåññ 2 Ïðîöåññ 1 Ðàçäåëÿåìûé êðèòè÷íûé ðåñóðñ AF Ðèñ. 1. Âèäû ðàçäåëÿåìûõ ðåñóðñîâ Ïî ñâîèì õàðàêòåðèñòèêàì ðåñóðñû ðàçäåëÿþò íà: àêòèâíûå: ïàññèâíûå: ïðèíàäëåæàò îäíîìó ïðîöåññó; âðåìÿ æèçíè ñîâïàäàåò ñ âðåìåíåì æèçíè ïðîöåññà, ðàçäåëÿåìûå: ìîãóò áûòü èñïîëüçîâàíû íåñêîëüêèìè ïðîöåññàìè; ñóùåñòâóþò, ïîêà åñòü õîòü îäèí ïðîöåññ, êîòîðûé èõ èñïîëüçóåò, ïîñòîÿííûå: DR ñïîñîáíû õðàíèòü èíôîðìàöèþ, ëîêàëüíûå: ñïîñîáíû èçìåíÿòü èíôîðìàöèþ (ïðîöåññîð), èñïîëüçóþòñÿ ïîñðåäñòâîì îïåðàöèé çàõâàòèòü è îñâîáîäèòü, âðåìåííûå èñïîëüçóþòñÿ ïîñðåäñòâîì îïåðàöèé ñîçäàòü è óäàëèòü. Ðàçäåëÿåìûå ðåñóðñû áûâàþò: íå êðèòè÷íûå: êðèòè÷íûå: 14 ìîãóò áûòü èñïîëüçîâàíû îäíîâðåìåííî íåñêîëüêèìè ïðîöåññàìè (íàïðèìåð, æåñòêèé äèñê èëè êàíàë Ethernet) ìîãóò áûòü èñïîëüçîâàíû òîëüêî îäíèì ïðîöåññîì, è ïîêà ýòîò ïðîöåññ íå çàâåðøèò ðàáîòó ñ ðåñóðñîì, ïîñëåäíèé íå äîñòóïåí äðóãèì ïðîöåññàì (íàïðèìåð, ðàçäåëÿåìàÿ ïàìÿòü, äîñòóïíàÿ íà çàïèñü). 2.5. Òèïû âçàèìîäåéñòâèÿ ïðîöåññîâ Ïî òèïó âçàèìîäåéñòâèÿ ðàçëè÷àþò ñîòðóäíè÷àþùèå ïðîöåññû: ïðîöåññû, ðàçäåëÿþùèå òîëüêî êîììóíèêàöèîííûé êàíàë, ïî êîòîðîìó îäèí ïåðåäàåò äàííûå, à äðóãîé èõ ïîëó÷àåò; ïðîöåññû, îñóùåñòâëÿþùèå âçàèìíóþ ñèíõðîíèçàöèþ: êîãäà ðàáîòàåò îäèí, äðóãîé æäåò îêîí÷àíèÿ åãî ðàáîòû (òèïè÷íî äëÿ ïðîãðàìì, óïðàâëÿþùèõ ðÿäîì òåõíîëîãè÷åñêèõ ïðîöåññîâ); êîíêóðèðóþùèå ïðîöåññû: AF T 2.5. Òèïû âçàèìîäåéñòâèÿ ïðîöåññîâ ïðîöåññû, èñïîëüçóþùèå ñîâìåñòíî ðàçäåëÿåìûé ðåñóðñ; ïðîöåññû, èñïîëüçóþùèå êðèòè÷åñêèå ñåêöèè; ïðîöåññû, èñïîëüçóþùèå âçàèìíûå èñêëþ÷åíèÿ. DR Îïðåäåëåíèå. Êðèòè÷åñêàÿ ñåêöèÿ ýòî ó÷àñòîê ïðîãðàììû, íà êîòîðîì çàïðåùàåòñÿ ïåðåêëþ÷åíèå çàäà÷ äëÿ îáåñïå÷åíèÿ èñêëþ÷èòåëüíîãî èñïîëüçîâàíèÿ ðåñóðñîâ òåêóùèì ïðîöåññîì (çàäà÷åé). Âñå ÎÑРïðåäîñòàâëÿþò ñèñòåìíûå âûçîâû âîéòè â êðèòè÷åñêóþ ñåêöèþ è âûéòè èç êðèòè÷åñêîé ñåêöèè. Îòìåòèì, ÷òî îáû÷íûå îïåðàöèîííûå ñèñòåìû òàêîé âîçìîæíîñòè ïîëüçîâàòåëüñêèì ïðîãðàììàì íå äàþò. Âðåìÿ ïðåáûâàíèÿ ïðîöåññà (çàäà÷è) â êðèòè÷åñêîé ñåêöèè äîëæíî áûòü êàê ìîæíî ìåíüøå, òàê êàê èíà÷å ìîæíî íàðóøèòü âðåìåííûå îãðàíè÷åíèÿ íà ñêîðîñòü ðåàêöèè íà âíåøíèå ñîáûòèÿ. Õîðîøàÿ ÎÑРäîëæíà äàæå ïðè íàõîæäåíèè â êðèòè÷åñêîé ñåêöèè ñîáèðàòü ïðåðûâàíèÿ â î÷åðåäü îòëîæåííûõ ïðåðûâàíèé è îáðàáîòàòü èõ ïðè âûõîäå èç êðèòè÷åñêîé ñåêöèè. Îïðåäåëåíèå. Âçàèìíîå èñêëþ÷åíèå (mutual exclusion, mutex) ýòî ñïîñîá ñèíõðîíèçàöèè ïàðàëëåëüíî ðàáîòàþùèõ ïðîöåññîâ (çàäà÷), èñïîëüçóþùèõ ðàçäåëÿåìûé ïîñòîÿííûé êðèòè÷íûé ðåñóðñ. Åñëè ðåñóðñ çàíÿò, òî ñèñòåìíûé âûçîâ çàõâàòèòü ðåñóðñ ïåðåâîäèò ïðîöåññ (çàäà÷ó) èç ñîñòîÿíèÿ âûïîëíåíèÿ â ñîñòîÿíèå îæèäàíèÿ. Êîãäà ðåñóðñ áóäåò îñâîáîæäåí ïîñðåäñòâîì ñèñòåìíîãî âûçîâà îñâîáîäèòü ðåñóðñ, òî ýòîò ïðîöåññ (çàäà÷à) âåðíåòñÿ â ñîñòîÿíèå âûïîëíåíèÿ è ïðîäîëæèò ñâîþ ðàáîòó. Ðåñóðñ ïðè ýòîì ïåðåéäåò â ñîñòîÿíèå çàíÿò. Åñëè ïðîöåññû íåçàâèñèìû (íå èìåþò ñîâìåñòíî èñïîëüçóåìûõ ðåñóðñîâ), òî ñèíõðîíèçàöèÿ èõ ðàáîòû íå òðåáóåòñÿ. Åñëè æå ïðîöåññû èñïîëüçóþò ðàçäåëÿåìûé ðåñóðñ, òî èõ äåÿòåëüíîñòü íåîáõîäèìî ñèíõðîíèçèðîâàòü. Íàïðèìåð, ïðè èñïîëüçîâàíèè îáùåãî áëîêà ïàìÿòè ïðîáëåìû ìîãóò âîçíèêíóòü äàæå åñëè îäèí ïðîöåññ (çàäà÷à) òîëüêî ÷èòàåò äàííûå, à äðóãîé òîëüêî ïèøåò. Ïðè ñèíõðîíèçàöèè çàäà÷ íåîáõîäèìî áîðîòüñÿ ñ 3-ìÿ ïðîáëåìàìè: 1. áëîêèðîâêà (lockout): ïðîöåññ (çàäà÷à) îæèäàåò ðåñóðñ, êîòîðûé íèêîãäà íå îñâîáîäèòñÿ, 2. òóïèê (deadlock): äâà ïðîöåññà (çàäà÷è) âëàäåþò êàæäûé ïî ðåñóðñó è îæèäàþò îñâîáîæäåíèÿ ðåñóðñà, êîòîðûì âëàäååò äðóãîé ïðîöåññ (çàäà÷à), 3. ãîëîäîâêà (starvation): ïðîöåññ (çàäà÷à) ìîíîïîëèçèðîâàë ïðîöåññîð. Äëÿ ìèíèìèçàöèè ýòèõ ïðîáëåì èñïîëüçóþòñÿ ñëåäóþùèå èäåè. Êîëè÷åñòâî ðåñóðñîâ îãðàíè÷åíî, ïîýòîìó íåëüçÿ äîïóñêàòü ñîçäàíèÿ çàäà÷, äëÿ êîòîðûõ íåäîñòàòî÷íî ðåñóðñîâ äëÿ âûïîëíåíèÿ. 15 2. Îñíîâíûå ïîëîæåíèÿ Çàäà÷è äåëÿòñÿ íà ãðóïïû: íåàêòèâíûå çàäà÷è, êîòîðûì þùèå ñîáûòèé çàäà÷è; òàêèì âîîáùå; íå õâàòèëî äàæå ïàññèâíûõ ðåñóðñîâ, è îæèäàçàäà÷àì àêòèâíûé ðåñóðñ (ïðîöåññîð) íå äàåòñÿ T çàäà÷è, ó êîòîðûõ åñòü âñå íåîáõîäèìûå ïàññèâíûå ðåñóðñû, íî íåò ïðîöåññîðà; ÿâëÿþòñÿ êàíäèäàòàìè íà ïîëó÷åíèå ïðîöåññîðà â ñëó÷àå åãî îñâîáîæäåíèÿ; ãîòîâûå âûïîëíÿþùèåñÿ ïðîöåññîð. çàäà÷è, ó êîòîðûõ åñòü âñå íåîáõîäèìûå ïàññèâíûå ðåñóðñû, è AF 2.6. Ñîñòîÿíèÿ ïðîöåññà Ðàññìîòðèì áîëåå äåòàëüíî ñîñòîÿíèÿ ïðîöåññà è ïåðåõîäû èç îäíîãî ñîñòîÿíèÿ â äðóãîå. Ñîñòîÿíèÿ: 1. íå ñóùåñòâóåò, 2. íå îáñëóæèâàåòñÿ, 3. ãîòîâ, 4. âûïîëíÿåòñÿ, 5. îæèäàåò ðåñóðñ, 6. îæèäàåò íàçíà÷åííîå âðåìÿ, 7. îæèäàåò ñîáûòèÿ. Ïåðåõîäû èç ñîñòîÿíèÿ â ñîñòîÿíèå: 1. ïåðåõîä 1 2: ñîçäàíèå ïðîöåññà DR 2. ïåðåõîä 2 1: óíè÷òîæåíèå ïðîöåññà 3. ïåðåõîä 2 3: àêòèâèçàöèÿ ïðîöåññà äèñïåò÷åðîì 4. ïåðåõîä 3 2: äåçàêòèâèçàöèÿ ïðîöåññà 5. ïåðåõîä 3 4: çàãðóçêà íà âûïîëíåíèå ïðîöåññà äèñïåò÷åðîì 6. ïåðåõîä 4 3: òðåáîâàíèå îáñëóæèâàíèÿ îò ïðîöåññîðà äðóãèì ïðîöåññîì 7. ïåðåõîä 4 2: çàâåðøåíèå ïðîöåññà 8. ïåðåõîä 4 5: áëîêèðîâêà ïðîöåññà äî îñâîáîæäåíèÿ òðåáóåìîãî ðåñóðñà 9. ïåðåõîä 4 6: áëîêèðîâêà ïðîöåññà äî èñòå÷åíèÿ çàäàííîãî âðåìåíè 10. ïåðåõîä 4 7: áëîêèðîâêà ïðîöåññà äî ïðèõîäà ñîáûòèÿ 11. ïåðåõîä 2 6: àêòèâèçàöèÿ ïðîöåññà ïðèâîäèò ê îæèäàíèþ âðåìåííîé çàäåðæêè 12. ïåðåõîä 2 7: àêòèâèçàöèÿ ïðîöåññà ïðèâîäèò ê îæèäàíèþ ñîáûòèÿ 13. ïåðåõîä 2 5: àêòèâèçàöèÿ ïðîöåññà ïðèâîäèò ê îæèäàíèþ îñâîáîæäåíèÿ ðåñóðñà 14. ïåðåõîä 5 3: àêòèâèçàöèÿ ïðîöåññà èç-çà îñâîáîæäåíèÿ îæèäàâøåãîñÿ ðåñóðñà 15. ïåðåõîä 6 3: àêòèâèçàöèÿ ïðîöåññà ïî èñòå÷åíèå çàäàííîãî âðåìåíè 16 3. Ñòàíäàðòû íà îïåðàöèîííûå ñèñòåìû ðåàëüíîãî âðåìåíè 16. ïåðåõîä 7 3: àêòèâèçàöèÿ ïðîöåññà èç-çà ïðèõîäà îæèäàâøåãîñÿ ñîáûòèÿ T Ïåðåõîä 4 3 â ñèñòåìàõ ðåàëüíîãî âðåìåíè ïðîèñõîäèò ñðàçó, êàê òîëüêî â ñîñòîÿíèå ãîòîâíîñòè ïåðåéäåò ïðîöåññ ñ áîëüøèì ïðèîðèòåòîì. Òàêîé ìåõàíèçì íàçûâàþò ïðèîðèòåòíûì ïåðåêëþ÷åíèåì (preemption, áóêâàëüíî: ïðèîðèòåòíîå ïðàâî íà ïîêóïêó). Ñèñòåìà ðåàëüíîãî âðåìåíè äîëæíà îñóùåñòâëÿòü ïåðåêëþ÷åíèå çàäà÷ â ñîîòâåòñòâèè ñ ýòèì ïðèíöèïîì. 3. Ñòàíäàðòû íà îïåðàöèîííûå ñèñòåìû ðåàëüíîãî âðåìåíè AF  ýòîì ðàçäåëå ìû ðàññìîòðèì ñóùåñòâóþùèå ñòàíäàðòû íà ÎÑÐÂ. Êàê è âî ìíîãèõ äðóãèõ îáëàñòÿõ, ñòàíäàðòû ñòàëè ïîÿâëÿòüñÿ ëèøü ïîñëå òîãî, êàê óæå áûë ñîçäàí ðÿä ÎÑÐÂ. Îñíîâíîé öåëüþ ââåäåíèÿ ñòàíäàðòîâ ÿâëÿåòñÿ îáëåã÷åíèå ïåðåíîñà ïðîãðàììíîãî îáåñïå÷åíèÿ èç îäíîé ñèñòåìû â äðóãóþ. Îòìåòèì, ÷òî ðàçðàáîò÷èêè ñèñòåì ðåàëüíîãî âðåìåíè ÷àñòî ñòàâÿò çàäà÷ó îáåñïå÷åíèÿ ìàêñèìàëüíîé ñêîðîñòè ðàáîòû è êîìïàêòíîñòè ÎÑРâûøå çàäà÷è åå ñòàíäàðòèçàöèè. Ïîýòîìó, ñ îäíîé ñòîðîíû, ñðåäè ÎÑРïðåîáëàäàþò ñèñòåìû ñ óíèêàëüíûì óñòðîéñòâîì, à ñ äðóãîé ñòîðîíû, ìíîãèå ñòàíäàðòû íîñÿò âåñüìà îáùèé õàðàêòåð. Ïðè ýòîì äàæå ñèñòåìû, äåêëàðèðóþùèå ñâîþ ñîâìåñòèìîñòü ñ íåêîòîðûì ñòàíäàðòîì, îáû÷íî ñîäåðæàò ðÿä ðàñøèðåíèé, âûõîäÿùèõ çà åãî ðàìêè. Òåì íå ìåíåå, âàæíîñòü ñòàíäàðòîâ ñîñòîèò â òîì, ÷òî îíè ôàêòè÷åñêè âûñòóïàþò â êà÷åñòâå àêñèîìàòè÷åñêîé áàçû, çàäàþùåé îïðåäåëåíèÿ ðàññìàòðèâàåìûõ îáúåêòîâ è ïîíÿòèé. Ìû êðàòêî ðàññìîòðèì íåñêîëüêî ñòàíäàðòîâ. Ïîäðîáíî áóäåò ðàññìîòðåí òîëüêî íàèáîëåå ñòàðûé è çàâåðøåííûé èç íèõ åâðîïåéñêèé ñòàíäàðò SCEPTRE. 3.1. Íîðìû ESSE êîíñîðöèóìà VITA DR Íîðìû ESSE êîíñîðöèóìà VITA (VMEbus International Trade Association) íàõîäÿòñÿ â ñòàäèè ðàçðàáîòêè, íî óæå îêàçûâàþò âëèÿíèå íà ðàçðàáîò÷èêîâ ÎÑРâ ñèëó âåñîìîñòè îðãàíèçàöèè VITA (íàïîìíèì, øèíà VME çàíèìàåò ëèäèðóþùåå ïîëîæåíèå ñðåäè øèí äëÿ ïðîìûøëåííûõ êîìïüþòåðîâ è âñòðàèâàåìûõ ñèñòåì). Íîðìû ïðåæäå âñåãî îðèåíòèðîâàíû íà óíèôèêàöèþ ïðèëîæåíèé äëÿ âñòðàèâàåìûõ ñèñòåì â îáëàñòè òåëåêîììóíèêàöèé, àâòîìîáèëåñòðîåíèÿ è ïðîìûøëåííîñòè. Îñíîâíîé öåëüþ íîðì ESSE òàêæå ÿâëÿåòñÿ ñòàíäàðòèçàöèÿ ÎÑР(ÿäðà è ïîäñèñòåìû ââîäà/âûâîäà). 3.2. Ñòàíäàðò POSIX 1003.1b Ñòàíäàðò POSIX (Portable Operating System Interface) 1003.1b, ðàíåå ñóùåñòâîâàâøèé ïîä ðàáî÷èì èìåíåì POSIX 1003.4 è ðàçðàáîòàííûé IEEE (Institute of Electrical and Electronical Engineers), îïðåäåëÿåò ðàñøèðåíèÿ ñòàíäàðòà POSIX 1001 íà îïåðàöèîííûå ñèñòåìû UNIX, êîòîðûå ïîçâîëÿþò èñïîëüçîâàòü ïîñëåäíèå â êà÷åñòâå ÎÑÐÂ. Áîëüøèíñòâî ïðèëîæåíèé UNIX ìîãóò áûòü ïåðåíåñåíû â òàêèå ñèñòåìû, ïîñêîëüêó ñòàíäàðò POSIX 1003.1b îáåñïå÷èâàåò åäèíûé ñ ñèñòåìàìè UNIX ïðîãðàììíûé èíòåðôåéñ (API, application interface). Ñòàíäàðò POSIX 1003 ñîñòîèò ñëåäóþùèõ ÷àñòåé. 1. POSIX 1003.1 îïðåäåëÿåò ñòàíäàðò íà îñíîâíûå êîìïîíåíòû îïåðàöèîííîé ñèñòåìû, API äëÿ ïðîöåññîâ, ôàéëîâîé ñèñòåìû, óñòðîéñòâ è ò.ä. 2. POSIX 1003.2 îïðåäåëÿåò ñòàíäàðò íà îñíîâíûå óòèëèòû. 3. POSIX 1003.1b îïðåäåëÿåò ñòàíäàðò íà îñíîâíûå ðàñøèðåíèÿ ðåàëüíîãî âðåìåíè. 4. POSIX 1003.1ñ îïðåäåëÿåò ñòàíäàðò íà çàäà÷è (threads). 5. POSIX 1003.1d îïðåäåëÿåò ñòàíäàðò íà äîïîëíèòåëüíûå ðàñøèðåíèÿ ðåàëüíîãî âðåìåíè (òàêèå, êàê, íàïðèìåð, ïîääåðæêà îáðàáîò÷èêîâ ïðåðûâàíèé); ýòîò ñòàíäàðò åùå 17 3. Ñòàíäàðòû íà îïåðàöèîííûå ñèñòåìû ðåàëüíîãî âðåìåíè T îôèöèàëüíî íå óòâåðæäåí, íî íåêîòîðûå ÎÑРçàÿâëÿþò î ñâîåé ïîääåðæêå íåêîòîðûõ åãî ÷àñòåé. Ñòàíäàðòó POSIX 1003 ñ ðàñøèðåíèåì 1003.1b óäîâëåòâîðÿþò òàêèå ñèñòåìû, êàê Lynx, VxWorks, QNX. Íåêîòîðûå ñèñòåìû, íàïðèìåð, CHORUS, îáåñïå÷èâàþò ïîääåðæêó ñòàíäàðòà 1003.1b ïðè çàãðóçêå ïîñòàâëÿåìîãî ïðîãðàììíîãî îáåñïå÷åíèÿ, ò.å. èìåþò êàê áû äâà òèïà API: îðèãèíàëüíûé ñîáñòâåííûé è ñòàíäàðòíûé. 3.3. Ñòàíäàðò SCEPTRE AF Ñòàíäàðò SCEPTRE (Standartisation du Cur des Executifs des Produits Temps Reel Europeens) (åâðîïåéñêèé ñòàíäàðò íà îñíîâû ñèñòåì ðåàëüíîãî âðåìåíè, çäåñü èãðà ñëîâ: sceptre ïî-ôðàíöóçñêè îçíà÷àåò ñêèïåòð) ðàçðàáàòûâàëñÿ â 198090 ãîäû. Çà âðåìÿ åãî ñîçäàíèÿ ïîÿâèëèñü íîâûå êîíöåïöèè â ÎÑÐÂ, íå âñå èç êîòîðûõ óñïåëè íàéòè îòðàæåíèå â ñòàíäàðòå.  ñòàíäàðòå îáúåäèíåíû óñèëèÿ èíæåíåðîâ è èññëåäîâàòåëåé â ðàçðàáîòêå ãðóïï ñïåöèôèêàöèé äëÿ ïðîìûøëåííûõ ïðèëîæåíèé; äàíû îïðåäåëåíèÿ è îïèñàíèÿ íàáîðà ìåòîäîâ è ïîäõîäîâ, èñïîëüçóåìûõ â ÎÑÐÂ; îïðåäåëåíû ñåìü îñíîâíûõ öåëåé, êîòîðûå äîëæíà ïðåñëåäîâàòü ÎÑÐÂ; ýòî: 1. àäåêâàòíîñòü ïîñòàâëåííîé çàäà÷å, 2. áåçîïàñíîñòü (ñèñòåìà äîëæíà áûòü ìàêñèìàëüíî óñòîé÷èâîé ê àïïàðàòíûì è ïðîãðàììíûì ñáîÿì), 3. ìèíèìàëüíàÿ ñòîèìîñòü, 4. ìàêñèìàëüíàÿ ïðîèçâîäèòåëüíîñòü, 5. ïåðåíîñèìîñòü (âîçìîæíîñòü ðåàëèçîâàòü ñèñòåìó íà äðóãîì òèïå ïðîöåññîðà, àäåêâàòíîì ïîñòàâëåííîé çàäà÷å), 6. àäàïòèâíîñòü (ñïîñîáíîñòü ñèñòåìû ïðèñïîñàáëèâàòüñÿ ê íîâîìó óïðàâëÿåìîìó åþ îáîðóäîâàíèþ è/èëè çàäà÷àì), DR 7. ìîäóëüíîñòü (ñèñòåìà äîëæíà ñîñòîÿòü èç äîñòàòî÷íî íåçàâèñèìûõ êîìïîíåíò, èç êîòîðûõ ìîæíî ïîñòðîèòü ñèñòåìó, äîñòàòî÷íóþ äëÿ ðåøåíèÿ ïîñòàâëåííîé çàäà÷è íà èìåþùåìñÿ îáîðóäîâàíèè). Âåñü ñåðâèñ, ïðåäîñòàâëÿåìûé îïåðàöèîííîé ñèñòåìîé, ðàçäåëåí â ñòàíäàðòå íà ñëåäóþùèå ãðóïïû: 18 êîììóíèêàöèè (ìåæïðîöåññíîå âçàèìîäåéñòâèå), ñèíõðîíèçàöèÿ (ñèíõðîíèçàöèÿ ïðîöåññîâ), êîíòðîëü è ïëàíèðîâàíèå çàäà÷, óïðàâëåíèå ïàìÿòüþ, óïðàâëåíèå ïðåðûâàíèÿìè è îáîðóäîâàíèåì ââîäà/âûâîäà, âûñîêîóðîâíåâûé èíòåðôåéñ ââîäà/âûâîäà è óïðàâëåíèÿ ïåðèôåðèéíûìè óñòðîéñòâàìè, óïðàâëåíèå ôàéëàìè, óïðàâëåíèå òðàíçàêöèÿìè (ñîîáùåíèÿìè è ïåðåäà÷àìè äàííûõ), îáðàáîòêà îøèáîê è èñêëþ÷åíèé, 3.3. Ñòàíäàðò SCEPTRE óïðàâëåíèå âðåìåíåì. T Îñíîâíûå ôóíêöèè îïåðàöèîííîé ñèñòåìû ðàçäåëåíû ñòàíäàðòîì íà ñëåäóþùèå ãðóïïû: âûäåëåíèå ïàìÿòè è àäðåñàöèÿ îáúåêòîâ, ñîçäàíèå è óäàëåíèå îáúåêòîâ, äîñòóï ê äðóãèì ìàøèíàì. Ñòàíäàðò ðàçäåëÿåò çàäà÷è íà äâà êëàññà. (íåïîñðåäñòâåííûå) çàäà÷è ýòî çàäà÷è, îáåñïå÷èâàþùèå èíòåðôåéñ ìåæäó ïðèëîæåíèåì è åãî âíåøíèì îêðóæåíèåì, íàïðèìåð, çàäà÷è ââîäà/âûâîäà, çàäà÷è, îáðàáàòûâàþùèå ñîáûòèÿ òàéìåðà. Òàêèå çàäà÷è àêòèâèçèðóþòñÿ íåïîñðåäñòâåííî ñèãíàëîì, ïðèõîäÿùèì ñ óïðàâëÿåìîãî èíòåðôåéñà (èç âíåøíåãî ìèðà). Ýòà àêòèâèçàöèÿ ðåàëèçóåòñÿ ïîñðåäñòâîì ìåõàíèçìà ïðåðûâàíèé. Ïðÿìûå AF Êîñâåííûå (îòëîæåííûå) çàäà÷è ýòî çàäà÷è, àêòèâèçèðóåìûå äðóãèìè çàäà÷àìè. Òàêèå çàäà÷è îïåðèðóþò ñ äàííûìè, ïîëó÷åííûìè îò ïðÿìûõ çàäà÷ èëè îò äðóãèõ êîñâåííûõ çàäà÷. Ñòàíäàðò îïðåäåëÿåò îñíîâíûå âèäû âçàèìîîòíîøåíèé ìåæäó çàäà÷àìè: ñîçäàíèå, óäàëåíèå, àêòèâèçàöèÿ, îñòàíîâêà, êîììóíèêàöèÿ, ñèíõðîíèçàöèÿ, îáìåí ñèãíàëàìè, DR âçàèìíîå èñêëþ÷åíèå. Ñòàíäàðò îïðåäåëÿåò îñíîâíûå âèäû ñîñòîÿíèÿ çàäà÷. Íå ñóùåñòâóåò: íåò ñâÿçàííîãî ñ çàäà÷åé äåñêðèïòîðà (ñòðóêòóðû äàííûõ, õàðàêòåðèçóþùåé çàäà÷ó ñ òî÷êè çðåíèÿ îïåðàöèîííîé ñèñòåìû). Ñóùåñòâóåò: çàäà÷à îáëàäàåò îïðåäåëåííûì äåñêðèïòîðîì. Íå èñïîëíèìà: ñÿ. Èñïîëíèìà: çàäà÷à ñóùåñòâóåò, íî íå ìîæåò íè àêòèâèçèðîâàòüñÿ, íè ïðîäîëæèòü- çàäà÷à ñóùåñòâóåò è åå ìîæíî èñïîëíèòü. Íå îáñëóæèâàåòñÿ: øåíà. çàäà÷à èñïîëíèìà, íî òðåáóåò àêòèâèçàöèè èëè óñïåøíî çàâåð- Îæèäàåò: Àêòèâíà: çàäà÷à îáñëóæèâàåòñÿ è íå îæèäàåò âûïîëíåíèÿ êàêîãî-ëèáî óñëîâèÿ, à òîëü- Îáñëóæèâàåòñÿ: çàäà÷à èñïîëíèìà, íà÷èíàåò èñïîëíåíèå è íå òåðìèíèðîâàíà. çàäà÷à îáñëóæèâàåòñÿ è îæèäàåò âûïîëíåíèÿ îïðåäåëåííîãî óñëîâèÿ äëÿ ïðîäîëæåíèÿ ñâîåãî èñïîëíåíèÿ. êî îæèäàåò êîãäà îñâîáîäèòñÿ ïðîöåññîð îò äðóãèõ çàäà÷. 19 3. Ñòàíäàðòû íà îïåðàöèîííûå ñèñòåìû ðåàëüíîãî âðåìåíè Ãîòîâà: çàäà÷à àêòèâíà è îæèäàåò ïðîöåññîðà. Âûïîëíÿåòñÿ: çàäà÷à èñïîëüçóåò ïðîöåññîð. T Ñòàíäàðò îïðåäåëÿåò îñíîâíûå âèäû ìåæçàäà÷íîãî âçàèìîäåéñòâèÿ: Îáìåí ñèãíàëàìè (ñîáûòèÿìè). Õîòÿ ñîáûòèå ïðåäïîëàãàåò íàëè÷èå õîòÿ áû äâóõ çàäà÷, ñòàíäàðò SCEPTRE àññîöèèðóåò ñîáûòèå ñ åäèíñòâåííîé çàäà÷åé. Ñäåëàíî ýòî ïî ñëåäóþùèì ïðè÷èíàì: õîòÿ ñîáûòèå ìîæåò îæèäàòüñÿ íåñêîëüêèìè çàäà÷àìè, ñ íèì íåîáõîäèìî ñâÿçàíà åäèíñòâåííàÿ î÷åðåäü îæèäàíèÿ; àññîöèàöèÿ ñîáûòèÿ òîëüêî ñ îäíîé çàäà÷åé ìèíèìèçèðóåò ðàñõîäû íà àäðåñàöèþ ïðè îáìåíå ñîáûòèÿìè (âñÿ íåîáõîäèìàÿ èíôîðìàöèÿ, êîòîðîé îáìåíèâàþòñÿ çàäà÷è äîëæíà áûòü çàëîæåíà â ñàìîì ñîáûòèè). AF Õîòÿ ñîáûòèå ñâÿçàíî ñ îäíîé çàäà÷åé, îáìåí ñîáûòèÿìè ìåæäó äâóìÿ çàäà÷àìè ÿâëÿåòñÿ îïåðàöèåé, â êîòîðîé ó÷àñòâóþò îáå çàäà÷è: îäíà çàäà÷à æäåò ñèãíàëà, à âòîðàÿ åãî ïîñûëàåò. Ñîáûòèå ñ òî÷êè çðåíèÿ SCEPTRE ýòî îáúåêò, ïðèíèìàþùèé äâà ñîñòîÿíèÿ: ïðèáûë èëè íå ïðèáûë. Íàä ñîáûòèÿìè îïðåäåëåíû ýëåìåíòàðíûå îïåðàöèè: ïîñëàòü, îæèäàòü, î÷èñòèòü (óäàëèòü ïîñòóïèâøåå ñîáûòèå), ïðîâåðèòü (ïîñòóïëåíèå). Êîììóíèêàöèÿ. Ñòðàòåãèè êîììóíèêàöèè ìåæäó çàäà÷àìè, ðàáîòàþùèìè íà îäíîì êîìïüþòåðå, ðåàëèçîâàíû â âèäå îäíîé ñòðóêòóðû î÷åðåäè: î÷åðåäè îæèäàþùèõ çàäà÷, î÷åðåäè ñîîáùåíèé. DR Íàä î÷åðåäÿìè (îðãàíèçîâàííûìè ïî ïðèíöèïó FIFO, First In - First Out) îïðåäåëåíû ñëåäóþùèå ýëåìåíòàðíûå îïåðàöèè: ïîëîæèòü ýëåìåíò (çàäà÷ó, ñîîáùåíèå) â î÷åðåäü, âçÿòü ýëåìåíò (çàäà÷ó, ñîîáùåíèå) èç î÷åðåäè, î÷èñòèòü î÷åðåäü, ïðîâåðèòü íàëè÷èå ýëåìåíòà (çàäà÷è, ñîîáùåíèÿ). Èñêëþ÷åíèÿ ýòî íåîæèäàííàÿ ñèòóàöèÿ, â ðåçóëüòàòå êîòîðîé çàäà÷à íå ìîæåò äàëåå èñïîëíÿòüñÿ. Äåòåêòèðîâàíèå èñêëþ÷åíèé ìîæåò áûòü ïðîãðàììíûì èëè àïïàðàòíûì. Òèïû èñêëþ÷åíèé: ñèíõðîííûå (íàïðèìåð, ïðè ïîäñ÷åòå âðåìåíè), àñèíõðîííûå (âñå îñòàëüíûå, íàïðèìåð, ñèòóàöèÿ äåëåíèÿ íà 0). Äëÿ îáñëóæèâàíèÿ èñêëþ÷åíèÿ íåîáõîäèìû: 20 îáñëóæèâàþùàÿ ïðîãðàììà, ñîîòâåòñòâóþùàÿ çàäà÷à (â ñîñòîÿíèè îæèäàíèÿ èñêëþ÷åíèÿ), ìåõàíèçì ïåðåêëþ÷åíèÿ îò òåêóùåé çàäà÷è ê çàäà÷å îáðàáîòêè èñêëþ÷åíèÿ, ìåõàíèçì âîçâðàòà èç çàäà÷è îáðàáîòêè èñêëþ÷åíèÿ ê òåêóùåé çàäà÷å. Ñåìàôîðû ýòî âûñîêîóðîâíåâûé ìåõàíèçì ñèíõðîíèçàöèè çàäà÷. Ðàçëè÷àþò: 3.3. Ñòàíäàðò SCEPTRE ýòî ìåõàíèçì âçàèìíîãî èñêëþ÷åíèÿ äëÿ çàùèòû êðèòè÷íîãî ðàçäåëÿåìîãî ðåñóðñà; îïðåäåëåíû ñëåäóþùèå ýëåìåíòàðíûå îïåðàöèè: âçÿòü (åñëè ñåìàôîð óæå âçÿò äðóãîé çàäà÷åé, òî ýòà îïåðàöèÿ ïåðåâîäèò çàäà÷ó â ñîñòîÿíèå îæèäàíèÿ îñâîáîæäåíèÿ ñåìàôîðà), âåðíóòü (åñëè ñåìàôîð îæèäàåòñÿ äðóãîé çàäà÷åé, òî îíà ìîæåò áûòü àêòèâèçèðîâàíà è ìîæåò âûòåñíèòü òåêóùóþ çàäà÷ó, íàïðèìåð, åñëè åå ïðèîðèòåò âûøå), ïîïðîáîâàòü âçÿòü (åñëè ñåìàôîð ñâîáîäåí, òî âçÿòü åãî, èíà÷å âåðíóòü ïðèçíàê çàíÿòîñòè ñåìàôîðà áåç ïåðåâîäà çàäà÷è â ñîñòîÿíèå îæèäàíèÿ; èñïîëüçóåòñÿ, åñëè çàäà÷à ìîæåò ïðîäîëæèòü ðàáîòó áåç çàòðåáîâàííîãî ðåñóðñà, íàïðèìåð, åñëè ìîæíî èñïîëüçîâàòü äðóãîé ðåñóðñ). AF T Äâîè÷íûå (áóëåâñêèå) ñåìàôîðû Îäèí ñåìàôîð ìîæåò îæèäàòüñÿ íåñêîëüêèìè çàäà÷àìè, ïîýòîìó ñèñòåìà îðãàíèçóåò î÷åðåäü çàäà÷, îæèäàþùèõ ñåìàôîð.  ýòîé î÷åðåäè ìîãóò áûòü çàäà÷è ñ ðàçíûì ïðèîðèòåòîì, ïîýòîìó äîëæíà áûòü âîçìîæíîñòü óïðàâëåíèÿ ïîðÿäêîì àêòèâèçàöèè çàäà÷ èç î÷åðåäè (â ïîðÿäêå ïîñòóïëåíèÿ (FIFO) èëè â ïîðÿäêå ïîñòóïëåíèÿ, íà÷èíàÿ ñ ñàìûõ ïðèîðèòåòíûõ (òàêàÿ î÷åðåäü íàçûâàåòñÿ ïðèîðèòåòíîé)). ýòî ìåõàíèçì âçàèìíîãî èñêëþ÷åíèÿ äëÿ çàùèòû ðåñóðñà, êîòîðûé ìîæåò áûòü îäíîâðåìåííî èñïîëüçîâàí íå áîëåå, ÷åì îãðàíè÷åííûì ôèêñèðîâàííûì ÷èñëîì çàäà÷ (íàïðèìåð, 4-õ êàíàëüíûé ïîðò ââîäà/âûâîäà ìîæåò áûòü èñïîëüçîâàí íå áîëåå ÷åì ÷åòûðüìÿ çàäà÷àìè, òðåáóþùèìè ïî îäíîìó êàíàëó êàæäàÿ). Ñåìàôîð ïðåäñòàâëÿåò ñîáîé ñ÷åò÷èê, óìåíüøàåìûé ïðè êàæäîé âûäà÷å ðåñóðñà è óâåëè÷èâàåìûé ïðè êàæäîì åãî âîçâðàùåíèè. Åñëè ñ÷åò÷èê íå íàõîäèòñÿ â çàäàííîì äèàïàçîíå (ðåñóðñà áîëüøå íåò), òî ïðè çàòðåáîâàíèè ðåñóðñà çàäà÷à ïåðåéäåò â ñîñòîÿíèå îæèäàíèÿ. Íàä ñåìàôîðîì îïðåäåëåíû ñëåäóþùèå ýëåìåíòàðíûå îïåðàöèè: Ñ÷åòíûå ñåìàôîðû DR âçÿòü k åäèíèö èç ñåìàôîðà, ò.å. óìåíüøèòü ñ÷åò÷èê íà k (åñëè â ñ÷åò÷èêå íåò k åäèíèö, òî ýòà îïåðàöèÿ ïåðåâîäèò çàäà÷ó â ñîñòîÿíèå îæèäàíèÿ íàëè÷èÿ êàê ìèíèìóì k åäèíèö â ñåìàôîðå), âåðíóòü k åäèíèö â ñåìàôîð, ò.å. óâåëè÷èòü ñ÷åò÷èê íà k (åñëè ñåìàôîð îæèäàåòñÿ äðóãîé çàäà÷åé è åé òðåáóåòñÿ íå áîëåå k åäèíèö, òî îíà ìîæåò áûòü àêòèâèçèðîâàíà è ìîæåò âûòåñíèòü òåêóùóþ çàäà÷ó, íàïðèìåð, åñëè åå ïðèîðèòåò âûøå), ïîïðîáîâàòü âçÿòü k åäèíèö èç ñåìàôîðà (åñëè ñåìàôîð ñâîáîäåí, òî âçÿòü k åäèíèö èç åãî, èíà÷å âåðíóòü ïðèçíàê çàíÿòîñòè ñåìàôîðà áåç ïåðåâîäà çàäà÷è â ñîñòîÿíèå îæèäàíèÿ). Êàê è äëÿ äâîè÷íûõ ñåìàôîðîâ ñèñòåìà îðãàíèçóåò îæèäàþùèõ ñåìàôîð. ïðèîðèòåòíóþ î÷åðåäü çàäà÷, Ìîäåëü êëèåíò ñåðâåð ýòî âûñîêîóðîâíåâûé êîìáèíèðîâàííûé ìåõàíèçì êîììóíèêàöèè çàäà÷. Ñîñòîèò èç î÷åðåäè ïåðåäàâàåìîé èíôîðìàöèè (ñîîáùåíèé) è ñîáûòèÿ, ïîñûëàåìîãî â ñëó÷àå, åñëè î÷åðåäü íå ïóñòà.  íàñòîÿùèé ìîìåíò ñòàíäàðò ðàçâèâàåòñÿ äëÿ ïîääåðæàíèÿ: òðåáîâàíèé æåñòêîãî ðåàëüíîãî âðåìåíè, íåçàâèñèìîñòè îò îêðóæåíèÿ (òèïà ïðîöåññîðà, âèäà êîìïüþòåðà, ÿçûêà ðàçðàáîòêè ïðèëîæåíèé), ðàñïðåäåëåííûõ è ìíîãîïðîöåññîðíûõ âû÷èñëåíèé, òðåáîâàíèé ïîâûøåííîé íàäåæíîñòè. 21 4. Òèïû àðõèòåêòóð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè T 4. Òèïû àðõèòåêòóð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè  ýòîì ðàçäåëå ìû ðàññìîòðèì áàçèñíûå ïðèíöèïû âíóòðåííåãî óñòðîéñòâà îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè. Ìû ðàññìîòðèì êëàññè÷åñêèé è îáúåêòíî-îðèåíòèðîâàííûé ïîäõîäû ê ïîñòðîåíèþ ÎÑÐÂ, à òàêæå òðè îñíîâíûõ òèïà àðõèòåêòóð ÎÑÐÂ: 1. ìîíîëèòíûé, 2. ìîäóëüíûé, AF 3. îáúåêòíûé. 4.1. Îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä â ïðîãðàììèðîâàíèè Ðàññìîòðèì êðàòêî, íà óðîâíå èäåé, î÷åíü ïîïóëÿðíûé â ïîñëåäíåå âðåìÿ îáúåêòíîîðèåíòèðîâàííûé ïîäõîä ê ðàçðàáîòêå ïðîãðàììíîãî îáåñïå÷åíèÿ. Âñÿêàÿ ïðîãðàììà, ðàáîòàþùàÿ (óïðàâëÿþùàÿ, àíàëèçèðóþùàÿ è ò.ä.) ñ íåêîé ñèñòåìîé (ïðîãðàììíîé, àïïàðàòíîé è ò.ä.), ôàêòè÷åñêè ðàáîòàåò ñ íåêèì ôîðìàëèçîâàííûì ïðåäñòàâëåíèåì îá ýòîé ñèñòåìå, íàçûâàåìîì ìîäåëüþ. Îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä ýòî òåõíèêà ïîñòðîåíèÿ è îïèñàíèÿ ýòîé ìîäåëè.  ýòîé òåõíèêå ìû ìîäåëèðóåì ñèñòåìó êàê íåêîòîðîå êîëè÷åñòâî âçàèìîäåéñòâóþùèõ îáúåêòîâ. Òàêèì îáðàçîì, âíå çàâèñèìîñòè îò òèïà ìîäåëèðóåìîé ñèñòåìû ìû ïðåäñòàâëÿåì åå ñîäåðæàíèå êàê íàáîð îáúåêòîâ ñ òåìè èëè èíûìè ñâÿçÿìè ìåæäó íèìè. Êàêèå îáúåêòû áóäóò âêëþ÷åíû â ìîäåëü è êàêèå ñâÿçè ìåæäó íèìè áóäóò ó÷òåíû â ìîäåëè, çàâèñèò îò ïîñòàâëåííîé çàäà÷è. ×åëîâå÷åñêîå ìûøëåíèå âîñïðèíèìàåò îêðóæàþùèé ìèð â òåðìèíàõ îáúåêòîâ. Ïîýòîìó ïðè èñïîëüçîâàíèè îáúåêòíî-îðèåíòèðîâàííîãî ïîäõîäà ÷åëîâåêó ëåã÷å ñîçäàâàòü ìîäåëü, è ñàìà ìîäåëü ïîëó÷àåòñÿ ïîíÿòíåå è áîëåå ñîîòíîñèòñÿ ñ ðåàëüíîñòüþ. Äëÿ âíåñåíèÿ óòî÷íåíèé â ìîäåëü è/èëè åå ìîäèôèêàöèè ÷àñòî äîñòàòî÷íî âíåñòè ëîêàëüíûå èçìåíåíèÿ â îäèí îáúåêò. 4.1.1. Îáúåêòû DR Îáúåêò õàðàêòåðèçóåòñÿ íàáîðîì îïåðàöèé è ñîñòîÿíèåì, çàïîìèíàþùèì ýôôåêò îò ýòèõ îïåðàöèé. Ñíàðóæè îáúåêòà (ò.å. èñïîëüçóÿ åãî â ìîäåëè) ìû âèäèì òîëüêî ýòè îïåðàöèè, íî íå òî, êàê îíè óñòðîåíû è êàê ðàáîòàþò. Âíóòðåííîñòü îáúåêòà (åãî âíóòðåííÿÿ èíôîðìàöèÿ) ñêðûòà îò äðóãèõ îáúåêòîâ. Äðóãèìè ñëîâàìè, îáúåêò õàðàêòåðèçóåòñÿ òåì, ÷òî îí âûïîëíÿåò, íî íå òåì, êàê îí ýòî äåëàåò. Âíóòðè îáúåêòà ìû ìîæåì âèäåòü åãî èíôîðìàöèîííóþ ñòðóêòóðó è äåòàëè ðåàëèçàöèè åãî îïåðàöèé.  èíôîðìàöèîííîé ñòðóêòóðå âûäåëÿþò òðè êîìïîíåíòû: ÷àñòè îáúåêòà (åñëè ïðèñóòñòâóþò) ïîâåäåíèå àòðèáóòû îáúåêòà îñíîâíûå õàðàêòåðèñòèêè, êîòîðûå íàäî ïîìíèòü îá îáúåêòå; ýòî äðóãèå îáúåêòû, èç êîòîðûõ ñîñòàâëåí äàííûé îáúåêò, êîòîðûé â ýòîì ñëó÷àå íàçûâàåòñÿ àãðåãàòíûì (ñîñòàâíûì) (íàïðèìåð, îáúåêò ÷åëîâåê ìîæåò áûòü ïðåäñòàâëåí êàê ñîñòîÿùèé èç îáúåêòîâ ðóêà, íîãà è ò.ä.), îáúåêòà ýòî íàáîð îïåðàöèé ñ îáúåêòîì. Îòíîøåíèÿ ìåæäó îáúåêòàìè â ìîäåëè ðàçäåëÿþò íà ñòàòè÷åñêèå, ñóùåñòâóþùèå â òå÷åíèå äëèòåëüíîãî âðåìåíè è ïîäðàçóìåâàþùèå, ÷òî âçàèìîäåéñòâóþùèå îáúåêòû çíàþò î ñóùåñòâîâàíèè äðóã äðóãà; äèíàìè÷åñêèå, êîãäà îáúåêòû óñòàíàâëèâàþò ñâÿçü ìåæäó ñîáîé â ïðîöåññå ðàáîòû. Ýòè îòíîøåíèÿ ìåæäó îáúåêòàìè A è B ðåàëèçóþòñÿ â âèäå ïîñûëêè îáúåêòîì A çàïðîñà íà âûïîëíåíèå òîé èëè èíîé îïåðàöèè (îáúåêòà B ) îáúåêòó B . Ñ ïðîãðàììíîé òî÷êè çðåíèÿ ïîä çàïðîñîì îáû÷íî ïîíèìàþò ïîñûëêó ñîîáùåíèÿ. 22 4.1. Îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä â ïðîãðàììèðîâàíèè T Âñÿ èíôîðìàöèÿ â îáúåêòíî-îðèåíòèðîâàííîé ñèñòåìå õðàíèòñÿ â åå îáúåêòàõ, è âûïîëíèòü ñ íåé êàêîå-ëèáî äåéñòâèå ìîæíî, òîëüêî ïîñëàâ îáúåêòó(àì) çàïðîñ íà âûïîëíåíèå ýòîãî äåéñòâèÿ. Ïîâåäåíèå è èíôîðìàöèÿ èíêàïñóëèðîâàíû â îáúåêòå. Îáúåêòû, òàêèì îáðàçîì, îáåñïå÷èâàþò ñîêðûòèå èíôîðìàöèè. Ïîíÿòèå îáúåêòà òåñíî ñâÿçàíî ñ ïîíÿòèåì àáñòðàêòíîãî òèïà äàííûõ. Àáñòðàêòíûé òèï äàííûõ ýòî ìîäåëü (ñòðóêòóðà äàííûõ) ñ îïðåäåëåííûì íàáîðîì îïåðàöèé, âîçäåéñòâóþùèõ íà íåå. Ïðåèìóùåñòâà àáñòðàêòíûõ òèïîâ äàííûõ: îíè ìîãóò áûòü èñïîëüçîâàíû íåçàâèñèìî îò èõ ðåàëèçàöèè (ìåõàíèçìà ñîêðûòèÿ èíôîðìàöèè), AF îíè ïðîñòû: èõ ïîëüçîâàòåëü íå ìîæåò áûòü âîâëå÷åí â èõ ëîãè÷åñêóþ ñòðóêòóðó, ïîñêîëüêó ìîæåò îïåðèðîâàòü ëèøü ñ èõ ñïåöèôèêàöèåé. Ïðåèìóùåñòâà èñïîëüçîâàíèÿ îáúåêòîâ: 1. Äâîéíàÿ çàùèòà: Âíóòðè îáúåêòà. Àòðèáóòû îáúåêòà ìîãóò áûòü èçìåíåíû òîëüêî âíóòðåííèìè ìåòîäàìè îáúåêòà. Ïîëüçîâàòåëþ íå íàäî çíàòü ðåàëèçàöèþ ýòèõ ìåòîäîâ. Âíå îáúåêòà. Îáúåêò íå çíàåò ñâîåãî îêðóæåíèÿ è íå ìîæåò åãî ñëó÷àéíî ìîäèôèöèðîâàòü. Òîëüêî ñàì îáúåêò îòâå÷àåò çà ñâîå ïîâåäåíèå. 2. Ìîäóëüíîñòü: ïðèëîæåíèå ñîñòîèò èç îáúåêòîâ, îáìåíèâàþùèõñÿ ñîîáùåíèÿìè. 3. Ëåãêîñòü îòëàäêè è ñîïðîâîæäåíèÿ ÿâëÿåòñÿ ñëåäñòâèåì çàùèùåííîñòè è ìîäóëüíîñòè. 4. Ïîâòîðíàÿ èñïîëüçóåìîñòü: õîðîøèé îáúåêò íå çàâèñèò îò ñâîåãî îêðóæåíèÿ è ìîæåò áûòü áåç ïðîáëåì èñïîëüçîâàí íà äðóãîé àðõèòåêòóðå ïðîöåññîðà èëè â äðóãîé çàäà÷å. 4.1.2. Êëàññû è ïðåäñòàâèòåëè DR Äëÿ îïèñàíèÿ îáúåêòîâ, èìåþùèõ îäèíàêîâîå ïîâåäåíèå è èíôîðìàöèîííóþ ñòðóêòóðó, ââîäÿò ïîíÿòèå êëàññà îáúåêòîâ. Êëàññ ïðåäñòàâëÿåò ñîáîé øàáëîí äëÿ ñîçäàíèÿ îáúåêòîâ è îïðåäåëÿåò âíóòðåííå óñòðîéñòâî ýòèõ îáúåêòîâ. Îáúåêòû îäíîãî êëàññà èìåþò îäèíàêîâîå îïðåäåëåíèå äëÿ ñâîèõ îïåðàöèé è èíôîðìàöèîííûõ ñòðóêòóð. Íå ñëåäóåò ïóòàòü êëàññ îáúåêòà è åãî òèï. Òèï îïðåäåëÿåòñÿ íàáîðîì îïåðàöèé, êîòîðûå ñ íèì ìîæíî ïðîèçâîäèòü. Êëàññ æå âêëþ÷àåò â ñåáÿ, ïîìèìî ýòîãî, åùå èíôîðìàöèîííóþ ñòðóêòóðó. Ïîýòîìó ìîæíî ðàññìàòðèâàòü êëàññ êàê îäíó èç âîçìîæíûõ ðåàëèçàöèé òèïà.  îáúåêòíî-îðèåíòèðîâàííûõ ñèñòåìàõ êàæäûé îáúåêò ïðèíàäëåæèò íåêîòîðîìó êëàññó. Îáúåêò, ïðèíàäëåæàùèé íåêîòîðîìó êëàññó, íàçûâàåòñÿ ïðåäñòàâèòåëåì ýòîãî êëàññà. ×àñòî òåðìèíû îáúåêò è ïðåäñòàâèòåëåì êëàññà èñïîëüçóþòñÿ êàê ñèíîíèìû. Òàêèì îáðàçîì, ïðåäñòàâèòåëü ýòî îáúåêò, ñîçäàííûé ïî êëàññó. Êëàññ îïèñûâàåò (ïîâåäåí÷åñêóþ è èíôîðìàöèîííóþ) ñòðóêòóðó ïðåäñòàâèòåëÿ, à òåêóùåå ñîñòîÿíèå ïðåäñòàâèòåëÿ îïðåäåëÿåòñÿ îïåðàöèÿìè, âûïîëíÿåìûìè ñ íèì. 4.1.3. Ïîëèìîðôèçì Äèíàìè÷åñêîå âçàèìîäåéñòâèå ïðåäñòàâèòåëåé, ñîçäàííûõ èç êëàññîâ, îïðåäåëÿåò ïîâåäåíèå ìîäåëè. Âçàèìîäåéñòâèå ïðåäñòàâèòåëåé îñóùåñòâëÿåòñÿ ïóòåì ïîñûëêè çàïðîñîâ ìåæäó íèìè. Åñëè ïðåäñòàâèòåëü ïîñûëàåò çàïðîñ è åìó íå âàæíî, ê êàêîìó êëàññó ïðèíàäëåæèò ïðåäñòàâèòåëüïîëó÷àòåëü, òî ýòî íàçûâàþò ïîëèìîðôèçìîì. Äðóãèìè ñëîâàìè, ïîëèìîðôèçì îçíà÷àåò, ÷òî îòïðàâèòåëþ çàïðîñà íå òðåáóåòñÿ çíàòü êëàññ ïðåäñòàâèòåëÿ ïîëó÷àòåëÿ; ïðåäñòàâèòåëüïîëó÷àòåëü ìîæåò ïðèíàäëåæàòü ëþáîìó êëàññó. 23 4. Òèïû àðõèòåêòóð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè 4.1.4. Íàñëåäîâàíèå T Îäíàêî, îáû÷íî èñïîëüçóþò ïîíÿòèå îãðàíè÷åííîãî ïîëèìîðôèçìà, êîãäà íà âîçìîæíûå êëàññû ïðåäñòàâèòåëÿïîëó÷àòåëÿ íàêëàäûâàþò íåêîòîðûå îãðàíè÷åíèÿ.  êà÷åñòâå òàêèõ îãðàíè÷åíèé îáû÷íî âûñòóïàþò òðåáîâàíèÿ íàñëåäîâàíèÿ (ñì. íèæå) îò íåêîòîðîãî êëàññà. Ïîëèìîðôèçì ïîçâîëÿåò äèíàìè÷åñêè èçìåíèòü óïðàâëÿåìûé îáúåêò áåç èçìåíåíèÿ ïîâåäåíèÿ óïðàâëÿþùåãî îáúåêòà. Íàïðèìåð, çàìåíà îáúåêòà ýëåêòðè÷åñêèé äâèãàòåëü íà îáúåêò äâèãàòåëü âíóòðåííåãî ñãîðàíèÿ íå ïîâëèÿåò íà îáúåêò óïðàâëÿþùåå óñòðîéñòâî, èñïîëüçóþùèé àáñòðàêòíûé îáúåêò äâèãàòåëü. AF Ïðè îïèñàíèè êëàññîâ ìîæíî çàìåòèòü, ÷òî ìíîãèå èç íèõ èìåþò îáùèå õàðàêòåðèñòèêè (ïîâåäåí÷åñêèå è èíôîðìàöèîííûå ñòðóêòóðû). Ìû ìîæåì ñîáðàòü îáùèå õàðàêòåðèñòèêè â îäèí ñïåöèàëüíûé êëàññ è ñäåëàòü îñòàëüíûå êëàññû åãî íàñëåäíèêàìè.  ýòîì ñëó÷àå ïðè îïèñàíèè ýòèõ êëàññîâ ìû äîëæíû áóäåì ëèøü îïèñàòü äîáàâî÷íûå êîìïîíåíòû, ñïåöèôè÷íûå äëÿ êàæäîãî èç êëàññîâ. Ãîâîðÿò, ÷òî êëàññ B ÿâëÿåòñÿ íàñëåäíèêîì êëàññà A , åñëè îïåðàöèè è èíôîðìàöèîííûå ñòðóêòóðû, îïèñàííûå â êëàññå A , ÿâëÿþòñÿ ÷àñòüþ (ïîäìíîæåñòâîì) êëàññà B . Ïðè ýòîì êëàññ B íàçûâàþò ïîòîìêîì êëàññà A , à êëàññ A ïðåäêîì äëÿ êëàññà B . Åñëè êëàññ B ÿâëÿåòñÿ íåïîñðåäñòâåííûì ïîòîìêîì êëàññà A , òî åãî íàçûâàþò äî÷åðíèì, à êëàññ A ðîäèòåëüñêèì äëÿ êëàññà B . Íàñëåäîâàíèå ïîçâîëÿåò ïîâòîðíî èñïîëüçîâàòü îáùèå îïèñàíèÿ. Ñ ïðîãðàììíîé òî÷êè çðåíèÿ ýòî îçíà÷àåò âîçìîæíîñòü ïîâòîðíîãî èñïîëüçîâàíèÿ ñóùåñòâóþùåãî êîäà, ÷òî ÷àñòî ðàññìàòðèâàåòñÿ êàê îñíîâíîå ïðåèìóùåñòâî îáúåêòíî-îðèåíòèðîâàííîãî ïîäõîäà. Ïðè íàñëåäîâàíèè ìû òàêæå èìååì åùå îäíî ïðåèìóùåñòâî. Åñëè ìû õîòèì èçìåíèòü õàðàêòåðèñòèêè êëàññà ïðåäêà, òî ýòî íàäî ñäåëàòü òîëüêî â îäíîì ìåñòå â åãî îïèñàíèè. Ïðè ýòîì ýòè èçìåíåíèÿ áóäóò àâòîìàòè÷åñêè âíåñåíû âî âñå åãî ïîòîìêè. Ïðè íàñëåäîâàíèè íåêîòîðûå ïîâåäåí÷åñêèå è/èëè èíôîðìàöèîííûå ñòðóêòóðû ìîãóò ïåðåîïðåäåëÿòü ñîîòâåòñòâóþùèå ñòðóêòóðû ïðåäêà. Ïåðåîïðåäåëåíèÿ ÿâëÿåòñÿ äîñòàòî÷íî ëåãêèì è ãèáêèì ñïîñîáîì ïîñòðîåíèÿ íîâûõ êëàññîâ, íî îíî çàòðóäíÿåò ïîíèìàíèå èåðàðõè÷åñêîé ñòðóêòóðû êëàññîâ, ïîñêîëüêó ïîòîìîê íàñëåäóåò òîëüêî ÷àñòü õàðàêòåðèñòèê ïðåäêà, à äðóãóþ ÷àñòü ïåðåîïðåäåëÿåò. Íàñëåäîâàíèå ìîæåò èñïîëüçîâàòüñÿ äëÿ ñëåäóþùèõ öåëåé. DR 1. Ïîâòîðíîå èñïîëüçîâàíèå êîäà ñ ïîìîùüþ íàñëåäîâàíèÿ ìîæåò ïðîÿâëÿòüñÿ äâóìÿ ïóòÿìè: à) ó äâóõ êëàññîâ íàõîäèòñÿ îáùàÿ ÷àñòü, îíà âûäåëÿåòñÿ â àáñòðàêòíûé êëàññ, êîòîðûé íàñëåäóåòñÿ ýòèìè êëàññàìè; á) íàõîäèòñÿ ïîäõîäÿùèé êëàññ â áèáëèîòåêå êëàññîâ è ñòðîèòñÿ åãî ïîòîìîê, îáëàäàþùèé íóæíûìè ñâîéñòâàìè. 2. Ïîñòðîåíèå ïîäòèïà. Åñëè ïîòîìêà êëàññà A ìîæíî èñïîëüçîâàòü âî âñåõ ìåñòàõ, ãäå èñïîëüçîâàí êëàññ A , òî ãîâîðÿò, ÷òî êëàññû ïîâåäåí÷åñêè ñîâìåñòèìû, à ïîòîìîê ïðåäñòàâëÿåò ïîäêëàññ êëàññà-ïðåäêà. Íà ïðàêòèêå ýòî îçíà÷àåò, ÷òî ïîòîìîê èìååò òîò æå ïðîãðàììíûé èíòåðôåéñ, ÷òî è ïðåäîê. Ýòî îáû÷íî ïîëó÷àåòñÿ, åñëè íàñëåäîâàíèå îáðàçîâàíî òîëüêî ðàñøèðåíèåì, à íå ïåðåîïðåäåëåíèåì, ñòðóêòóð â ïðåäêå, ïðè÷åì ðàñøèðåíèå íå íàëîæèëî íèêàêèõ äîïîëíèòåëüíûõ îãðàíè÷åíèé íà ñòðóêòóðû ïðåäêà. 3. Ñïåöèàëèçàöèÿ êëàññà. Åñëè ïîòîìîê ìîäèôèöèðîâàí ïðè íàñëåäîâàíèè òàê, ÷òî îí áîëåå íå ÿâëÿåòñÿ ïîâåäåí÷åñêè ñîâìåñòèìûì ñ ïðåäêîì, òî ãîâîðÿò, ÷òî êëàññ áûë ñïåöèàëèçèðîâàí. Îáû÷íî ýòî îçíà÷àåò, ÷òî ÷àñòü îïåðàöèé è/èëè èíôîðìàöèîííûõ ñòðóêòóð, áûëà ïåðåîïðåäåëåíà èëè óäàëåíà. 4. Êîíöåïòóàëüíàÿ. Èñïîëüçîâàíèå èäåè íàñëåäîâàíèÿ ïðîÿâëÿåò ïðè÷èííî-ñëåäñòâåííûå ñâÿçè è ÿâëÿåòñÿ èíòóèòèâíî ïîíÿòíîé. 24 4.2. Êëàññè÷åñêèé è îáúåêòíî-îðèåíòèðîâàííûé ïîäõîäû ê ïîñòðîåíèþ ÎÑРT 4.2. Êëàññè÷åñêèé è îáúåêòíî-îðèåíòèðîâàííûé ïîäõîäû ê ïîñòðîåíèþ ÎÑР ñèëó ïðåèìóùåñòâ îáúåêòíî-îðèåíòèðîâàííîãî ïîäõîäà ïðèëîæåíèÿ ñîçäàþòñÿ íà åãî îñíîâå, èñïîëüçóÿ òîò èëè èíîé ÿçûê ïðîãðàììèðîâàíèÿ, íàèëó÷øèì îáðàçîì ïîääåðæèâàþùèé ýòîò ïîäõîä. Àðõèòåêòóðû æå êëàññè÷åñêèõ îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè îñíîâàíû íà àðõèòåêòóðàõ UNIX ñèñòåì è èñïîëüçóþò òðàäèöèîííûé ïðîöåäóðíûé ïîäõîä ê ïðîãðàììèðîâàíèþ. Ñî÷åòàíèå îáúåêòíî-îðèåíòèðîâàííûõ ïðèëîæåíèé è ïðîöåäóðíûõ îïåðàöèîííûõ ñèñòåì èìååò ðÿä íåäîñòàòêîâ. AF 1. Ïðîèñõîäèò ðàçðûâ ïàðàäèãìû ïðîãðàììèðîâàíèÿ: â åäèíîì ðàáîòàþùåì êîìïëåêñå (ïðèëîæåíèå + ÎÑÐÂ) ðàçíûå êîìïîíåíòû èñïîëüçóþò ðàçíûå ïîäõîäû ê ðàçðàáîòêå ïðîãðàììíîãî îáåñïå÷åíèÿ. 2. Íå èñïîëüçóþòñÿ âñå âîçìîæíîñòè îáúåêòíî-îðèåíòèðîâàííîãî ïîäõîäà. 3. Âîçíèêàþò íåêîòîðûå ïîòåðè ïðîèçâîäèòåëüíîñòè èç-çà ðàçíîãî òèïà èíòåðôåéñîâ â ÎÑРè ïðèëîæåíèè. Åñòåñòâåííî âîçíèêàåò èäåÿ ñòðîèòü ñàìó ÎÑÐÂ, èñïîëüçóÿ îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä. Ïðè ýòîì êàê ïðèëîæåíèå, òàê è îïåðàöèîííàÿ ñèñòåìà ïîëíîñòüþ îáúåêòíî-îðèåíòèðîâàíû è èñïîëüçóþò âñå ïðåèìóùåñòâà ýòîãî ïîäõîäà; ïðèëîæåíèå è ÎÑРìîãóò áûòü ïîëíîñòüþ èíòåãðèðîâàíû, ïîñêîëüêó èñïîëüçóþò îäèí îáúåêòíî-îðèåíòèðîâàííûé ÿçûê ïðîãðàììèðîâàíèÿ; îáåñïå÷èâàåòñÿ ñîãëàñîâàíèå èíòåðôåéñîâ ÎÑРè ïðèëîæåíèÿ; ïðèëîæåíèå ìîæåò ìîäåëèðîâàòü ÎÑРäëÿ ñâîèõ ïîòðåáíîñòåé, çàêàçûâàÿ íóæíûå åìó îáúåêòû; åäèíûé êîìïëåêñ ïðèëîæåíèå + ÎÑРÿâëÿåòñÿ ìîäóëüíûì è ëåãêî ìîäåðíèçèðóåìûì. DR Èäåÿ ðåàëèçîâàíà â ÎÑРSoftKernel, öåëèêîì íàïèñàííîé íà C++. 4.3. Ìîíîëèòíàÿ àðõèòåêòóðà ÎÑРñ ìîíîëèòíîé àðõèòåêòóðîé ìîæíî ïðåäñòàâèòü â âèäå ïðèêëàäíîãî óðîâíÿ: ñîñòîèò èç ðàáîòàþùèõ ïðèêëàäíûõ ïðîöåññîâ; ñèñòåìíîãî óðîâíÿ: ñîñòîèò èç ìîíîëèòíîãî ÿäðà îïåðàöèîííîé ñèñòåìû, â êîòîðîì ìîæíî âûäåëèòü ñëåäóþùèå ÷àñòè: èíòåðôåéñ ìåæäó ïðèëîæåíèÿìè è ÿäðîì (API), ñîáñòâåííî ÿäðî ñèñòåìû, èíòåðôåéñ ìåæäó ÿäðîì è îáîðóäîâàíèåì (äðàéâåðû óñòðîéñòâ). API â òàêèõ ñèñòåìàõ èãðàåò äâîéíóþ ðîëü: 1. óïðàâëåíèå âçàèìîäåéñòâèåì ïðèêëàäíûõ ïðîöåññîâ è ñèñòåìû, 2. îáåñïå÷åíèå íåïðåðûâíîñòè âûïîëíåíèÿ êîäà ñèñòåìû (ò.å. îòñóòñòâèå ïåðåêëþ÷åíèÿ çàäà÷ âî âðåìÿ èñïîëíåíèÿ êîäà ñèñòåìû). Îñíîâíûì ïðåèìóùåñòâîì ìîíîëèòíîé àðõèòåêòóðû ÿâëÿåòñÿ åå îòíîñèòåëüíàÿ áûñòðîòà ðàáîòû ïî ñðàâíåíèþ ñ äðóãèìè àðõèòåêòóðàìè. Îäíàêî, äîñòèãàåòñÿ ýòî, â-îñíîâíîì, çà ñ÷åò íàïèñàíèÿ çíà÷èòåëüíûõ ÷àñòåé ñèñòåìû íà àññåìáëåðå. Íåäîñòàòêè ìîíîëèòíîé àðõèòåêòóðû. 25 4. Òèïû àðõèòåêòóð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè T 1. Ñèñòåìíûå âûçîâû, òðåáóþùèå ïåðåêëþ÷åíèÿ óðîâíåé ïðèâèëåãèé (îò ïîëüçîâàòåëüñêîé çàäà÷è ê ÿäðó), äîëæíû áûòü ðåàëèçîâàíû API êàê ïðåðûâàíèÿ èëè ëîâóøêè (ñïåöèàëüíûé òèï èñêëþ÷åíèé). Ýòî ñèëüíî óâåëè÷èâàåò âðåìÿ èõ ðàáîòû. 2. ßäðî íå ìîæåò áûòü ïðåðâàíî ïîëüçîâàòåëüñêîé çàäà÷åé (non-preemptable). Ýòî ìîæåò ïðèâîäèòü ê òîìó, ÷òî âûñîêîïðèîðèòåòíàÿ çàäà÷à ìîæåò íå ïîëó÷èòü óïðàâëåíèÿ èç-çà ðàáîòû íèçêîïðèîðèòåòíîé. Íàïðèìåð, íèçêîïðèîðèòåòíàÿ çàäà÷à çàïðîñèëà âûäåëåíèå ïàìÿòè, ñäåëàëà ñèñòåìíûé âûçîâ, äî îêîí÷àíèÿ êîòîðîãî ñèãíàë àêòèâèçàöèè âûñîêîïðèîðèòåòíîé çàäà÷è íå ñìîæåò åå àêòèâèçèðîâàòü. AF 3. Ñëîæíîñòü ïåðåíîñà íà íîâûå àðõèòåêòóðû ïðîöåññîðà èç-çà çíà÷èòåëüíûõ àññåìáëåðíûõ âñòàâîê. 4. Íåãèáêîñòü è ñëîæíîñòü ðàçâèòèÿ: èçìåíåíèå ÷àñòè ÿäðà ñèñòåìû òðåáóåò åãî ïîëíîé ïåðåêîìïèëÿöèè. 4.4. Ìîäóëüíàÿ àðõèòåêòóðà (íà îñíîâå ìèêðîÿäðà) Ìîäóëüíàÿ àðõèòåêòóðà ïîÿâèëàñü êàê ïîïûòêà óáðàòü óçêîå ìåñòî API è îáëåã÷èòü ìîäåðíèçàöèþ ñèñòåìû è ïåðåíîñ åå íà íîâûå ïðîöåññîðû. API â ìîäóëüíîé àðõèòåêòóðå èãðàåò òîëüêî îäíó ðîëü: îáåñïå÷èâàåò ñâÿçü ïðèêëàäíûõ ïðîöåññîâ è ñïåöèàëüíîãî ìîäóëÿ ìåíåäæåðà ïðîöåññîâ. Îäíàêî, òåïåðü ìèêðîÿäðî èãðàåò äâîéíóþ ðîëü: 1. óïðàâëåíèå âçàèìîäåéñòâèåì ÷àñòåé ñèñòåìû (íàïðèìåð, ìåíåäæåðîâ ïðîöåññîâ è ôàéëîâ), 2. îáåñïå÷åíèå íåïðåðûâíîñòè âûïîëíåíèÿ êîäà ñèñòåìû (ò.å. îòñóòñòâèå ïåðåêëþ÷åíèÿ çàäà÷ âî âðåìÿ èñïîëíåíèÿ ìèêðîÿäðà). DR Íåäîñòàòêè ìîäóëüíîé àðõèòåêòóðû ôàêòè÷åñêè òå æå, ÷òî è ó ìîíîëèòíîé. Ïðîáëåìû ïåðåøëè ñ óðîâíÿ API íà óðîâåíü ìèêðîÿäðà. Ñèñòåìíûé èíòåðôåéñ ïî-ïðåæíåìó íå äîïóñêàåò ïåðåêëþ÷åíèÿ çàäà÷ âî âðåìÿ ðàáîòû ìèêðîÿäðà, òîëüêî ñîêðàòèëîñü âðåìÿ ïðåáûâàíèÿ â ýòîì ñîñòîÿíèè. API ïî-ïðåæíåìó ìîæåò áûòü ðåàëèçîâàí òîëüêî íà àññåìáëåðå, ïðîáëåìû ñ ïåðåíîñèìîñòüþ ìèêðîÿäðà óìåíüøèëèñü (â ñâÿçè ñ ñîêðàùåíèåì åãî ðàçìåðà), íî îñòàëèñü. 4.5. Îáúåêòíàÿ àðõèòåêòóðà íà îñíîâå îáúåêòîâ-ìèêðîÿäåð  ýòîé àðõèòåêòóðå (èñïîëüçóåìîé â ÎÑРSoftKernel) API îòñóòñòâóåò âîîáùå. Âçàèìîäåéñòâèå ìåæäó êîìïîíåíòàìè ñèñòåìû (ìèêðîÿäðàìè) è ïîëüçîâàòåëüñêèìè ïðîöåññàìè îñóùåñòâëÿåòñÿ ïîñðåäñòâîì îáû÷íîãî âûçîâà ôóíêöèé, ïîñêîëüêó è ñèñòåìà, è ïðèëîæåíèÿ íàïèñàíû íà îäíîì ÿçûêå (C++). Ýòî îáåñïå÷èâàåò ìàêñèìàëüíóþ ñêîðîñòü ñèñòåìíûõ âûçîâîâ. Ôàêòè÷åñêîå ðàâíîïðàâèå âñåõ êîìïîíåíò ñèñòåìû îáåñïå÷èâàåò âîçìîæíîñòü ïåðåêëþ÷åíèÿ çàäà÷ â ëþáîå âðåìÿ, ò.å. ñèñòåìà ïîëíîñòüþ preemptible. Îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä îáåñïå÷èâàåò ìîäóëüíîñòü, áåçîïàñíîñòü, ëåãêîñòü ìîäåðíèçàöèè è ïîâòîðíîãî èñïîëüçîâàíèÿ êîäà. Ðîëü API èãðàåò êîìïèëÿòîð è äèíàìè÷åñêèé ðåäàêòîð îáúåêòíûõ ñâÿçåé (linker). Ïðè ñòàðòå ïðèëîæåíèÿ äèíàìè÷åñêèé linker çàãðóæàåò íóæíûå åìó ìèêðîÿäðà (ò.å., â îòëè÷èå îò ïðåäûäóùèõ ñèñòåì, íå âñå êîìïîíåíòû ñàìîé îïåðàöèîííîé ñèñòåìû äîëæíû áûòü çàãðóæåíû â îïåðàòèâíóþ ïàìÿòü). Åñëè ìèêðîÿäðî óæå çàãðóæåíî äëÿ äðóãîãî ïðèëîæåíèÿ, òî îíî ïîâòîðíî íå çàãðóæàåòñÿ, à èñïîëüçóåòñÿ êîä è äàííûå óæå èìåþùåãîñÿ ìèêðîÿäðà. Âñå ýòè ïðèåìû ïîçâîëÿþò ñîêðàòèòü îáúåì òðåáóåìîé ïàìÿòè. Ïîñêîëüêó ðàçíûå ïðèëîæåíèÿ ðàçäåëÿþò îäíè ìèêðîÿäðà, òî îíè äîëæíû ðàáîòàòü â îäíîì àäðåñíîì ïðîñòðàíñòâå. Ñëåäîâàòåëüíî, ñèñòåìà íå ìîæåò èñïîëüçîâàòü âèðòóàëüíóþ 26 4.6. Ñòðîåíèå ñèñòåì ðåàëüíîãî âðåìåíè Ìèêðîÿäðà è ìîäóëè. Ìíîãèå ÎÑ ïîääåðæèâàþò äèíàìè÷åñêóþ çàãðóçêó êîìïîíåíò ñèñòåìû, íàçûâàåìûõ ìîäóëÿìè. Îäíàêî, ìîäóëè íå ïîääåðæèâàþò îáúåêòíîîðèåíòèðîâàííûé ïîäõîä (íàïîìíèì, ìèêðîÿäðî ÿâëÿåòñÿ ôàêòè÷åñêè ïðåäñòàâèòåëåì íåêîòîðîãî êëàññà). Äàëåå, îáìåí èíôîðìàöèåé ñ ìîäóëÿìè ïðîèñõîäèò ïîñðåäñòâîì ñèñòåìíûõ âûçîâîâ, ÷òî äîñòàòî÷íî äîðîãî. AF T ïàìÿòü è òåì ñàìûì ðàáîòàåò áûñòðåå (òàê êàê èñêëþ÷àþòñÿ çàäåðæêè íà òðàíñëÿöèþ âèðòóàëüíîãî àäðåñà â ôèçè÷åñêèé). Ïîñêîëüêó âñå ïðèëîæåíèÿ è ñàìè ìèêðîÿäðà ðàáîòàþò â îäíîì àäðåñíîì ïðîñòðàíñòâå, òî îíè çàãðóæàþòñÿ â ïàìÿòü, íà÷èíàÿ ñ íåèçâåñòíîãî íà ìîìåíò êîìïèëÿöèè àäðåñà. Ñëåäîâàòåëüíî, ïðèëîæåíèÿ è ìèêðîÿäðà íå äîëæíû çàâèñåòü îò íà÷àëüíîãî àäðåñà (êàê ïî êîäó, òàê è ïî äàííûì (ïîñëåäíåå îáåñïå÷èòü çíà÷èòåëüíî ñëîæíåå)). Ýòî ñâîéñòâî àâòîìàòè÷åñêè îáåñïå÷èâàåò âîçìîæíîñòü çàïèñè ïðèëîæåíèé è ìîäóëåé â ÏÇÓ, ñ ïîñëåäóþùèì èõ èñïîëíåíèåì êàê â ñàìîì ÏÇÓ, òàê è â îïåðàòèâíîé ïàìÿòè. Ìèêðîÿäðà ïî ñâîèì õàðàêòåðèñòèêàì íàïîìèíàþò ñòðóêòóðû, èñïîëüçóåìûå â äðóãèõ îïåðàöèîííûõ ñèñòåìàõ, îäíàêî åñòü è ñâîè ðàçëè÷èÿ. Ìèêðîÿäðà è äðàéâåðû. Ìèêðîÿäðà è DLL Ìíîãèå ÎÑ ïîääåðæèâàþò âîçìîæíîñòü ñâîåãî ðàñøèðåíèÿ ïîñðåäñòâîì äðàéâåðîâ (ñïåöèàëüíûõ ìîäóëåé, îáû÷íî ñëóæàùèõ äëÿ ïîääåðæêè îáîðóäîâàíèÿ). Îäíàêî, äðàéâåðû ÷àñòî äîëæíû áûòü ñòàòè÷åñêè ñâÿçàíû ñ ÿäðîì (ò.å. îáðàçîâûâàòü ñ íèì ñâÿçàííûé çàãðóçî÷íûé îáðàç åùå äî çàãðóçêè) è äîëæíû ðàáîòàòü â ïðèâèëåãèðîâàííîì (ñóïåðïîëüçîâàòåëüñêîì) ðåæèìå. Äàëåå, êàê è ìîäóëè îíè íå ïîääåðæèâàþò îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä è äîñòóïíû ïðèëîæåíèÿì òîëüêî ïîñðåäñòâîì ñèñòåìíûõ âûçîâîâ. (Dynamically Linked Libraries, äèíàìè÷åñêè ñâÿçûâàåìûå áèáëèîòåêè). Ìíîãèå ñèñòåìû îôîðìëÿþò áèáëèîòåêè, èç êîòîðûõ áåðóòñÿ ôóíêöèè ïðè äèíàìè÷åñêîì ñâÿçûâàíèè, â âèäå ñïåöèàëüíûõ ìîäóëåé, íàçûâàåìûõ DLL. DLL îáåñïå÷èâàåò ðàçäåëåíèå ñâîåãî êîäà è äàííûõ äëÿ âñåõ ðàáîòàþùèõ ïðèëîæåíèé, â òî âðåìÿ, êàê äëÿ ìèêðîÿäåð ìîæíî óïðàâëÿòü äîñòóïîì äëÿ êàæäîãî êîíêðåòíîãî ïðèëîæåíèÿ. DLL íå ïîääåðæèâàåò îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä, êîä DLL íå ÿâëÿåòñÿ ïîçèöèîííî-íåçàâèñèìûì, è ïîòîìó íå ìîæåò áûòü çàïèñàí â ÏÇÓ. DR 4.6. Ñòðîåíèå ñèñòåì ðåàëüíîãî âðåìåíè Ñèñòåìó ðåàëüíîãî âðåìåíè ìîæíî ðàçäåëèòü êàê áû íà òðè ñëîÿ: 1. ßäðî ñîäåðæèò òîëüêî ñòðîãèé ìèíèìóì, íåîáõîäèìûé äëÿ ðàáîòû ñèñòåìû: óïðàâëåíèå çàäà÷àìè, èõ ñèíõðîíèçàöèÿ è âçàèìîäåéñòâèå, óïðàâëåíèå ïàìÿòüþ è óñòðîéñòâàìè ââîäà/âûâîäà; ðàçìåð ÿäðà î÷åíü îãðàíè÷åí: ÷àñòî íåñêîëüêî êèëîáàéòîâ. 2. Ñèñòåìà óïðàâëåíèÿ ñîäåðæèò ÿäðî è ðÿä äîïîëíèòåëüíûõ ñåðâèñîâ, ðàñøèðÿþùèõ åãî âîçìîæíîñòè: ðàñøèðåííîå óïðàâëåíèå ïàìÿòüþ, ââîäîì/âûâîäîì, çàäà÷àìè, ôàéëàìè è ò.ä., îáåñïå÷èâàåò òàêæå âçàèìîäåéñòâèå ñèñòåìû è óïðàâëÿþùåãî/óïðàâëÿåìîãî îáîðóäîâàíèÿ. 3. Ñèñòåìà ðåàëüíîãî âðåìåíè ñîäåðæèò ñèñòåìó óïðàâëåíèÿ è íàáîð óòèëèò: ñðåäñòâà ðàçðàáîòêè (êîìïèëÿòîðû, îòëàä÷èêè è ò.ä.), ñðåäñòâà âèçóàëèçàöèè (âçàèìîäåéñòâèÿ ÷åëîâåêà è îïåðàöèîííîé ñèñòåìû). Êðèòåðèè âûáîðà ÎÑÐÂ: ïðîèçâîäèòåëüíîñòü, íàäåæíîñòü, êðóãëîñóòî÷íàÿ ãîòîâíîñòü, ïîääåðæêà ðàçëè÷íûõ òèïîâ ïðîöåññîðîâ, 27 5. Ñèíõðîíèçàöèÿ è âçàèìîäåéñòâèå ïðîöåññîâ ïîääåðæêà ìíîãîïðîöåññîðíîñòè, íàëè÷èå ñðåäñòâ ðàçðàáîòêè íà òðåáóåìîì ÿçûêå, íàëè÷èå ìåõàíèçìîâ ðåàëüíîãî âðåìåíè, ïîääåðæêà ôàéëîâîé ñèñòåìû. Ðîëü óïðàâëÿþùåé ñèñòåìû ÎÑÐÂ: óïðàâëÿåò âçàèìíûì èñêëþ÷åíèåì è âçàèìîäåéñòâèåì çàäà÷ äëÿ îïòèìèçàöèè âðåìåíè èñïîëüçîâàíèÿ ïðîöåññîðà; óïðàâëåíèå îñíîâûâàåòñÿ íà âåäóùèõñÿ ÎÑРòàáëèöàõ äåñêðèïòîðîâ çàäà÷; ïðåäîñòàâëÿåò ïðèëîæåíèþ îñíîâíûå âîçìîæíîñòè ïî óïðàâëåíèþ âðåìåíåì, ïåðèôåðèéíûìè óñòðîéñòâàìè, âçàèìîäåéñòâèþ ñ îïåðàòîðîì; AF T ïðåäîñòàâëÿåò íàáîð áèáëèîòå÷íûõ ôóíêöèé äëÿ óäîáíîãî äîñòóïà ê âîçìîæíîñòÿì ñèñòåìû, íàïðèìåð, ïî÷òîâûå ÿùèêè, ñåìàôîðû è ò.ä. çàíèìàåòñÿ ïëàíèðîâàíèåì çàäà÷. 5. Ñèíõðîíèçàöèÿ è âçàèìîäåéñòâèå ïðîöåññîâ Äîñòóï ïðîöåññîâ (çàäà÷) ê ðàçëè÷íûì ðåñóðñàì (îñîáåííî ðàçäåëÿåìûì) â ìíîãîçàäà÷íûõ ñèñòåìàõ òðåáóåò ñèíõðîíèçàöèè äåéñòâèé ýòèõ ïðîöåññîâ (çàäà÷). Ñïîñîáû îñóùåñòâëåíèÿ âçàèìîäåéñòâèÿ ïîäðàçäåëÿþò íà: áåçîïàñíîå âçàèìîäåéñòâèå, íåáåçîïàñíîå âçàèìîäåéñòâèå, êîãäà îáìåí äàííûìè îñóùåñòâëÿåòñÿ ïîñðåäñòâîì îáúåêòîâ âçàèìîäåéñòâèÿ, ïðåäîñòàâëÿåìûõ ñèñòåìîé; ïðè ýòîì öåëîñòíîñòü èíôîðìàöèè è íåäåëèìîñòü îïåðàöèé ñ íåþ (ò.å. îòñóòñòâèå íåæåëàòåëüíîãî ïåðåêëþ÷åíèÿ çàäà÷) íåÿâíî îáåñïå÷èâàþòñÿ ñèñòåìîé; ïðèìåðàìè òàêèõ îáúåêòîâ âçàèìîäåéñòâèÿ ÿâëÿþòñÿ ñåìàôîðû, ñèãíàëû è ïî÷òîâûå ÿùèêè; DR êîãäà îáìåí äàííûìè îñóùåñòâëÿåòñÿ ïîñðåäñòâîì ðàçäåëÿåìûõ ðåñóðñîâ (íàïðèìåð, îáùèõ ïåðåìåííûõ), íå çàâèñèìûõ îò ñèñòåìíûõ îáúåêòîâ âçàèìîäåéñòâèÿ; ïðè ýòîì öåëîñòíîñòü èíôîðìàöèè è íåäåëèìîñòü ÿâíî îáåñïå÷èâàåòñÿ ñàìèì ïðèëîæåíèåì (â ïîäàâëÿþùåì áîëüøèíñòâå ñëó÷àåâ ïîñðåäñòâîì òîãî èëè èíîãî ñèñòåìíîãî îáúåêòà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ). Ïîñêîëüêó äëÿ ëþáîãî òèïà âçàèìîäåéñòâèÿ òðåáóþòñÿ ñèñòåìíûå îáúåêòû ñèíõðîíèçàöèè, òî âñå èìåþùèåñÿ ÎÑРïðåäîñòàâëÿþò ïðèëîæåíèÿì íåêîòîðûé íàáîð òàêèõ îáúåêòîâ. Íèæå ìû ðàññìîòðèì ñàìûå ðàñïðîñòðàíåííûå èç íèõ. 5.1. Ñåìàôîðû Îïðåäåëåíèå. Ñåìàôîð ýòî îáúåêò ñèíõðîíèçàöèè, çàäàþùèé êîëè÷åñòâî ïîëüçîâàòåëåé (çàäà÷, ïðîöåññîâ), èìåþùèõ îäíîâðåìåííûé äîñòóï ê íåêîòîðîìó ðåñóðñó. Ñ êàæäûì ñåìàôîðîì ñâÿçàíû ñ÷åò÷èê (çíà÷åíèå ñåìàôîðà) è î÷åðåäü îæèäàíèÿ (ïðîöåññîâ, çàäà÷, îæèäàþùèõ ïðèíÿòèå ñ÷åò÷èêîì îïðåäåëåííîãî çíà÷åíèÿ). Ðàçëè÷àþò: 28 äâîè÷íûå (áóëåâñêèå) ñåìàôîðû ñ÷åòíûå ñåìàôîðû ýòî ìåõàíèçì âçàèìíîãî èñêëþ÷åíèÿ äëÿ çàùèòû êðèòè÷íîãî ðàçäåëÿåìîãî ðåñóðñà; íà÷àëüíîå çíà÷åíèå ñ÷åò÷èêà òàêîãî ñåìàôîðà ðàâíî 1; ýòî ìåõàíèçì âçàèìíîãî èñêëþ÷åíèÿ äëÿ çàùèòû ðåñóðñà, êîòîðûé ìîæåò áûòü îäíîâðåìåííî èñïîëüçîâàí íå áîëåå, ÷åì îãðàíè÷åííûì ôèêñèðîâàííûì ÷èñëîì çàäà÷ n ; íà÷àëüíîå çíà÷åíèå ñ÷åò÷èêà òàêîãî ñåìàôîðà ðàâíî n . 5.1. Ñåìàôîðû = 1 äëÿ áóëåâñêèõ âçÿòü k åäèíèö èç ñåìàôîðà, ò.å. óìåíüøèòü ñ÷åò÷èê íà k (åñëè â ñ÷åò÷èêå íåò k åäèíèö, òî ýòà îïåðàöèÿ ïåðåâîäèò çàäà÷ó â ñîñòîÿíèå îæèäàíèÿ íàëè÷èÿ êàê ìèíèìóì k åäèíèö â ñåìàôîðå, è äîáàâëÿåò åå â êîíåö î÷åðåäè îæèäàíèÿ ýòîãî ñåìàôîðà); âåðíóòü k åäèíèö â ñåìàôîð, ò.å. óâåëè÷èòü ñ÷åò÷èê íà k (åñëè ñåìàôîð îæèäàåòñÿ äðóãîé çàäà÷åé è åé òðåáóåòñÿ íå áîëåå, ÷åì íîâîå òåêóùåå çíà÷åíèå ñ÷åò÷èêà åäèíèö, òî îíà ìîæåò áûòü àêòèâèçèðîâàíà, óäàëåíà èç î÷åðåäè îæèäàíèÿ è ìîæåò âûòåñíèòü òåêóùóþ çàäà÷ó, íàïðèìåð, åñëè åå ïðèîðèòåò âûøå); ïîïðîáîâàòü âçÿòü k åäèíèö èç ñåìàôîðà (åñëè â ñ÷åò÷èêå k åäèíèö, òî âçÿòü k åäèíèö èç åãî, èíà÷å âåðíóòü ïðèçíàê çàíÿòîñòè ñåìàôîðà áåç ïåðåâîäà çàäà÷è â ñîñòîÿíèå îæèäàíèÿ); AF k T Íàä ñåìàôîðàìè îïðåäåëåíû ñëåäóþùèå ýëåìåíòàðíûå îïåðàöèè (íèæå ñåìàôîðîâ) ïðîâåðèòü ñåìàôîð, ò.å. ïîëó÷èòü çíà÷åíèå ñ÷åò÷èêà; áëîêèðîâàòü ñåìàôîð, ò.å. âçÿòü èç íåãî ñòîëüêî åäèíèö, ñêîëüêî â íåì åñòü (ïðè ýòîì èíîãäà áûâàþò äâå ðàçíîâèäíîñòè ýòîé îïåðàöèè: âçÿòü ñòîëüêî, ñêîëüêî åñòü â äàííûé ìîìåíò, èëè âçÿòü ñòîëüêî, ñêîëüêî åñòü â íà÷àëüíûé ìîìåíò, ò.å. ìàêñèìàëüíî âîçìîæíîå êîëè÷åñòâî, èìåííî ïîñëåäíåå îáû÷íî íàçûâàþò áëîêèðîâêîé, ïîñêîëüêó òàêàÿ çàäà÷à áóäåò ìîíîïîëüíî âëàäåòü ðåñóðñîì); ðàçáëîêèðîâàòü ñåìàôîð, ò.å. âåðíóòü ñòîëüêî åäèíèö, ñêîëüêî âñåãî áûëî âçÿòî äàííîé çàäà÷åé ïî êîìàíäå áëîêèðîâàòü. Ëîãè÷åñêàÿ ñòðóêòóðà äâîè÷íûõ ñåìàôîðîâ îñîáåííî ïðîñòà. Ñ÷åò÷èê ñåìàôîðà s èíèöèàëèçèðóåòñÿ 1 ïðè ñîçäàíèè. Äëÿ äîñòóïà ê íåìó îïðåäåëåíû äâå ïðèìèòèâíûå îïåðàöèè: Get(s) âçÿòü (èëè çàêðûòü) ñåìàôîð s , ò.å. çàïðîñèòü ðåñóðñ; ýòà îïåðàöèÿ âû÷èòàåò èç ñ÷åò÷èêà 1; P ut(s) âåðíóòü (èëè îòêðûòü) ñåìàôîð, ò.å. îñâîáîäèòü ðåñóðñ; ýòà îïåðàöèÿ ïðèáàâëÿåò ê ñ÷åò÷èêó 1. DR Ýòè îïåðàöèè íåäåëèìû, ò.å. ïåðåêëþ÷åíèå çàäà÷ âî âðåìÿ èõ èñïîëíåíèÿ çàïðåùåíî.  ïðîöåññå ðàáîòû ñîñòîÿíèå ñ÷åò÷èêà ìîæåò áûòü: 1 ðåñóðñ ñâîáîäåí, 0 ðåñóðñ çàíÿò, î÷åðåäü îæèäàíèÿ ïóñòà, 0 ðåñóðñ çàíÿò, â î÷åðåäè îæèäàíèÿ íàõîäÿòñÿ j j çàäà÷. m < m Ðàññìîòðèì ïðèìåð. 1. A:Get çàäà÷à A çàâëàäåëà ðåñóðñîì, 2. C:Get çàäà÷à C çàïðîñèëà ðåñóðñ, êîòîðûé çàíÿò, ñëåäîâàòåëüíî, çàäà÷à ðîâàíà è ïîìåùåíà â î÷åðåäü îæèäàíèÿ, C çàáëîêè- 3. B:Get çàäà÷à B çàïðîñèëà ðåñóðñ, êîòîðûé çàíÿò, ñëåäîâàòåëüíî, çàäà÷à ðîâàíà è ïîìåùåíà â î÷åðåäü îæèäàíèÿ, B çàáëîêè- 4. A:P ut çàäà÷à A îñâîáîäèëà ðåñóðñ, êîòîðûé áûë ïåðåäàí ïåðâîé çàäà÷å â î÷åðåäè îæèäàíèÿ, ò.å. C (êîòîðàÿ â ñâîþ î÷åðåäü àêòèâèçèðîâàíà), 5. C:P ut çàäà÷à C îñâîáîäèëà ðåñóðñ, êîòîðûé áûë ïåðåäàí ïåðâîé çàäà÷å â î÷åðåäè îæèäàíèÿ, ò.å. B (êîòîðàÿ â ñâîþ î÷åðåäü àêòèâèçèðîâàíà), 29 5. Ñèíõðîíèçàöèÿ è âçàèìîäåéñòâèå ïðîöåññîâ B:P ut çàäà÷à âûçîâåò Get . B îñâîáîäèëà ðåñóðñ, êîòîðûé áóäåò ïåðåäàí ïåðâîé çàäà÷å, êîòîðàÿ T 6. AF Èíîãäà ðàññìàòðèâàþò ëè÷íûå èëè ïðèâàòíûå ñåìàôîðû. Òàêîé ñåìàôîð ñîçäàåòñÿ çàäà÷åé T ñðàçó â çàêðûòîì ñîñòîÿíèè. Ïðè ýòîì çàäà÷à T èìååò ïðàâî âûçûâàòü òîëüêî ôóíêöèþ Get , à âñå îñòàëüíûå çàäà÷è òîëüêî ôóíêöèþ P ut . Ñ ïîìîùüþ òàêèõ ñåìàôîðîâ ëåãêî îðãàíèçîâàòü îáìåí ìåæäó çàäà÷àìè ïî òèïó êëèåíò ñåðâåð. Çàäà÷à T1 (ñåðâåð) ñðàçó ïîñëå ñòàðòà ñîçäàåò ëè÷íûé ñåìàôîð S1 è âûçûâàåò ôóíêöèþ S1 :Get() . Òåì ñàìûì îíà áëîêèðóåòñÿ äî îñâîáîæäåíèÿ ñåìàôîðà S1 . Çàäà÷à T2 (êëèåíò) ñðàçó ïîñëå ñòàðòà ñîçäàåò ëè÷íûé ñåìàôîð S2 , ïîäãîòàâëèâàåò äàííûå â ðàçäåëÿåìîé ñ çàäà÷åé T1 ïàìÿòè è âûçûâàåò ôóíêöèþ S1 :P ut() . Ýòî ïðèâîäèò ê àêòèâèçàöèè çàäà÷è T1 . Çàäà÷à T2 ïðîäîëæàåò ðàáîòó è âûçûâàåò ôóíêöèþ S2 :Get() , áëîêèðóÿñü äî îñâîáîæäåíèÿ ñåìàôîðà S2 . Çàäà÷à T1 (ñåðâåð) ïî îêîí÷àíèè îáðàáîòêè äàííûõ âûçûâàåò ôóíêöèè S2 :P ut() , S1 :Get() , àêòèâèçèðóÿ çàäà÷ó T2 (êëèåíòà) è áëîêèðóÿ ñåáÿ. Íèæå ìû ðàññìîòðèì äðóãèå ñïîñîáû ðåàëèçàöèè âçàèìîäåéñòâèÿ êëèåíò ñåðâåð. 5.2. Ñîáûòèÿ Îïðåäåëåíèå. Ñîáûòèå ýòî ëîãè÷åñêèé ñèãíàë (îïîâåùåíèå), ïðèõîäÿùèé àñèíõðîííî ïî îòíîøåíèþ ê òå÷åíèþ ïðîöåññà. Ñ êàæäûì ñîáûòèåì ñâÿçàíû áóëåâñêàÿ ïåðåìåííàÿ E , ïðèíèìàþùàÿ äâà çíà÷åíèÿ 0 ñîáûòèå íå ïðèøëî, è 1 ñîáûòèå ïðèøëî, è î÷åðåäü îæèäàíèÿ (ïðîöåññîâ, çàäà÷, îæèäàþùèõ ïðèõîäà ñîáûòèÿ). Íàä ñîáûòèÿìè îïðåäåëåíû ñëåäóþùèå ýëåìåíòàðíûå îïåðàöèè: S end(E ) ïîñëàòü ñîáûòèå, ò.å. óñòàíîâèòü ïåðåìåííóþ E â 1 (ïî òðàäèöèè UNIX ñèñòåì ýòó ôóíêöèþ îáû÷íî íàçûâàþò K ill , ïîñêîëüêó ñðåäè ñîáûòèé îïðåäåëåíî òàêîå, åäèíñòâåííîé ðåàêöèåé íà êîòîðîå ÿâëÿåòñÿ íåìåäëåííîå àâàðèéíîå çàâåðøåíèå ïîëó÷èâøåé åãî çàäà÷è), ïðè ýòîì âñå çàäà÷è èç î÷åðåäè îæèäàíèÿ àêòèâèçèðóþòñÿ; W ait(E ) îæèäàòü ñîáûòèÿ, (åñëè ñîáûòèÿ íåò, ò.å. ïåðåìåííàÿ E ðàâíà 0 , òî ýòà îïåðàöèÿ ïåðåâîäèò çàäà÷ó â ñîñòîÿíèå îæèäàíèÿ ïðèõîäà ñîáûòèÿ, è äîáàâëÿåò åå â êîíåö î÷åðåäè îæèäàíèÿ ýòîãî ñîáûòèÿ, êàê òîëüêî ñîáûòèå ïðèäåò, çàäà÷à áóäåò àêòèâèçèðîâàíà); DR ( ) î÷èñòèòü (óäàëèòü ïîñòóïèâøåå ñîáûòèå), ò.å. óñòàíîâèòü ïåðåìåííóþ Reset E 0; ( ) ïðîâåðèòü (ïîñòóïëåíèå) ïîëó÷èòü çíà÷åíèå ïåðåìåííîé T est E E E â . Ðàññìîòðèì ïðèìåð. 1. 2. 3. 4. 5. 30 çàäà÷à B âûçâàëà ïðîäîëæàåò èñïîëíåíèå; B:W ait B W ait ; ïîñêîëüêó Reset áûëà âûçâàíà ôóíêöèÿ óñòàíîâêè çàäà÷åé); B:W ait íèÿ; C:W ait íèÿ; ïîñêîëüêó E ïîñêîëüêó E = 0 , òî çàäà÷à = 0 , òî çàäà÷à A:S end óñòàíîâèòü E àêòèâèçèðîâàòü B è C . = 1, E E = 1 , òî ýòî íå èìååò íèêàêîãî ýôôåêòà, = 0 (îäíîé çàäà÷ A , B èëè C , èëè äðóãîé B çàáëîêèðîâàíà è ïîìåùåíà â î÷åðåäü îæèäà- C çàáëîêèðîâàíà è ïîìåùåíà â î÷åðåäü îæèäà- àêòèâèçèðîâàòü âñå çàäà÷è èç î÷åðåäè îæèäàíèÿ, ò.å. 5.3. Ïî÷òîâûå ÿùèêè 5.3. Ïî÷òîâûå ÿùèêè T Îïðåäåëåíèå. Ïî÷òîâûå ÿùèêè ýòî îáúåêò îáìåíà äàííûìè ìåæäó çàäà÷àìè, óñòðîåííûé â âèäå î÷åðåäè FIFO. Ñ êàæäûì ïî÷òîâûì ÿùèêîì ñâÿçàíû: 1. î÷åðåäü ñîîáùåíèé (îáðàçóþùàÿ ñîäåðæèìîå ïî÷òîâîãî ÿùèêà), 2. î÷åðåäü çàäà÷, îæèäàþùèõ ñîîáùåíèé â ïî÷òîâîì ÿùèêå, 3. î÷åðåäü çàäà÷, îæèäàþùèõ îñâîáîæäåíèÿ ìåñòà â ïî÷òîâîì ÿùèêå, AF 4. ìåõàíèçì âçàèìíîãî èñêëþ÷åíèÿ, îáåñïå÷èâàþùèé ïðàâèëüíûé äîñòóï íåñêîëüêèõ çàäà÷ ê îäíèì è òåì æå ñîîáùåíèÿì â ïî÷òîâîì ÿùèêå. Êîëè÷åñòâî çàäà÷, îæèäàþùèõ ñîîáùåíèÿ â ïî÷òîâîì ÿùèêå, îáû÷íî íå îãðàíè÷åíî. Êîëè÷åñòâî æå ñîîáùåíèé â ÿùèêå îáû÷íî îãðàíè÷åíî ïàðàìåòðîì, óêàçàííûì ïðè ñîçäàíèè ÿùèêà. Ýòî ñâÿçàíî ñ òåì, ÷òî ðàçìåð êàæäîãî ñîîáùåíèÿ óêàçûâàåòñÿ ïðè ñîçäàíèè ÿùèêà è ìîæåò áûòü çíà÷èòåëüíûì. Åñëè ÿùèê ïîëîí è çàäà÷à ïûòàåòñÿ ïîìåñòèòü â íåãî íîâîå ñîîáùåíèå, òî îíà áëîêèðóåòñÿ äî òåõ ïîð, ïîêà â ÿùèêå íå ïîÿâèòñÿ ñâîáîäíîå ìåñòî. Íàä ïî÷òîâûìè ÿùèêàìè îïðåäåëåíû ñëåäóþùèå ýëåìåíòàðíûå îïåðàöèè ïîïðîáîâàòü ïîëîæèòü ñîîáùåíèå â ïî÷òîâûé ÿùèê åñëè â ÿùèêå åñòü ñâîáîäíîå ìåñòî, òî ýòà îïåðàöèÿ ýêâèâàëåíòíà ïîëîæèòü, èíà÷å âåðíóòü ïðèçíàê îòñóòñòâèÿ ìåñòà; ïîëîæèòü â íà÷àëî òî æå, ÷òî ïîëîæèòü, òîëüêî ñîîáùåíèå ïîìåùàåòñÿ â ãîëîâó î÷åðåäè; ïîïðîáîâàòü ïîëîæèòü â íà÷àëî òî æå, ÷òî ïîïðîáîâàòü ïîëîæèòü, òîëüêî ñîîáùåíèå ïîìåùàåòñÿ â ãîëîâó î÷åðåäè; DR ïîëîæèòü ñîîáùåíèå â ïî÷òîâûé ÿùèê, ïðè ýòîì çàäà÷à, âûçâàâøàÿ ýòó îïåðàöèþ ìîæåò áûòü áëîêèðîâàíà è ïîìåùåíà â î÷åðåäü çàäà÷, îæèäàþùèõ îñâîáîæäåíèÿ ìåñòà â ÿùèêå, åñëè â ÿùèêå íåò ñâîáîäíîãî ìåñòà (àêòèâèçàöèÿ íàñòóïèò ñðàçó ïîñëå âçÿòèÿ ïåðâîãî æå ñîîáùåíèÿ èç î÷åðåäè ñîîáùåíèé); åñëè î÷åðåäü îæèäàþùèõ ñîîáùåíèÿ çàäà÷ íåïóñòà, òî àêòèâèçèðóþòñÿ âñå çàäà÷è èç ýòîé î÷åðåäè; âçÿòü ñîîáùåíèå èç ïî÷òîâîãî ÿùèêà, ïðè ýòîì çàäà÷à, âûçâàâøàÿ ýòó îïåðàöèþ ìîæåò áûòü áëîêèðîâàíà è ïîìåùåíà â î÷åðåäü çàäà÷, îæèäàþùèõ ñîîáùåíèÿ, åñëè â ÿùèêå íåò ñîîáùåíèé; ïðè ïîñòóïëåíèè ñîîáùåíèÿ îíà áóäåò àêòèâèçèðîâàíà; ïðè ýòîì, åñëè â î÷åðåäè îæèäàþùèõ ñîîáùåíèÿ çàäà÷ íàõîäèòñÿ áîëåå îäíîé çàäà÷è, òî ïðè âûïîëíåíèè îïåðàöèè âçÿòü îáåñïå÷èâàåòñÿ ìåõàíèçì âçàèìíîãî èñêëþ÷åíèÿ çàäà÷ (ò.å. ïîêà âûïîëíÿåòñÿ ýòà îïåðàöèÿ îäíîé çàäà÷åé âñå äðóãèå çàäà÷è, çàïðîñèâøèå òó æå îïåðàöèþ, çàáëîêèðîâàíû); ïîïðîáîâàòü âçÿòü ñîîáùåíèå èç ïî÷òîâîãî ÿùèêà åñëè â ÿùèêå åñòü ñîîáùåíèÿ, òî ýòà îïåðàöèÿ ýêâèâàëåíòíà âçÿòü, èíà÷å âåðíóòü ïðèçíàê îòñóòñòâèÿ ñîîáùåíèé; î÷èñòèòü ÿùèê óäàëèòü âñå ñîîáùåíèÿ èç î÷åðåäè. Ôàêòè÷åñêè îïèñàííûé ìåõàíèçì ïðåäñòàâëÿåò ñîáîé âçàèìîäåéñòâèå êëèåíòñåðâåð, êîãäà çàäà÷èêëèåíòû ïîìåùàþò çàïðîñû â ïî÷òîâûé ÿùèê, à çàäà÷èñåðâåðû èõ îòòóäà çàáèðàþò. 5.4. Âçàèìîäåéñòâèå êëèåíò ñåðâåð Îïðåäåëåíèå. Âçàèìîäåéñòâèåì êëèåíò ñåðâåð íàçûâàåòñÿ ñïîñîá ïåðåäà÷è èíôîðìàöèè îò îäíîé çàäà÷è ê äðóãîé. Ðàíåå ìû ðàññìîòðåëè íåñêîëüêî ñïîñîáîâ îáåñïå÷åíèÿ òàêîãî âçàèìîäåéñòâèÿ (ñì. ñåìàôîðû è ïî÷òîâûå ÿùèêè). 31 5. Ñèíõðîíèçàöèÿ è âçàèìîäåéñòâèå ïðîöåññîâ 5.5. Î÷åðåäè çàäà÷ T Äëÿ îáåñïå÷åíèÿ ðàññìîòðåííûõ âûøå âèäîâ âçàèìîäåéñòâèÿ è ñèíõðîíèçàöèè çàäà÷ îïåðàöèîííàÿ ñèñòåìà ñòðîèò ðÿä î÷åðåäåé çàäà÷. ýòî î÷åðåäü çàäà÷, íàõîäÿùèõñÿ â ñîñòîÿíèè èñïîëíåíèÿ (ïîëó÷àþùèõ ïðîöåññîðíîå âðåìÿ â ñîîòâåòñòâèè ñ òåì èëè èíûì àëãîðèòìîì ðàçäåëåíèÿ âðåìåíè). Î÷åðåäü âûïîëíÿåìûõ çàäà÷ Î÷åðåäü çàäà÷, îæèäàþùèõ ñåìàôîðà Î÷åðåäü çàäà÷, îæèäàþùèõ ñîáûòèÿ ôîðà. ýòî î÷åðåäü çàäà÷, íàõîäÿùèõñÿ â ñîñòîÿíèè ãîòîâíîñòè. ñòðîèòñÿ äëÿ êàæäîãî ñîçäàííîãî ñåìà- AF Î÷åðåäü ãîòîâûõ çàäà÷ ñòðîèòñÿ äëÿ êàæäîãî ñîáûòèÿ. Ýòî áàçîâûå î÷åðåäè, íà îñíîâå êîòîðûõ ñòðîÿòñÿ äðóãèå. Íàïðèìåð, ïî÷òîâûå ÿùèêè ÷àñòî ðåàëèçóþòñÿ íà áàçå ñåìàôîðîâ è ñîáûòèé, è ñ êàæäûì èç ïî÷òîâûõ ÿùèêîâ ñâÿçàíû ïî äâå î÷åðåäè çàäà÷ (îæèäàþùèõ ñîîáùåíèé è îæèäàþùèõ ñâîáîäíîãî ìåñòà â ÿùèêå). Ýòè î÷åðåäè âåäóòñÿ îïåðàöèîííîé ñèñòåìîé, ïîýòîìó èñïîëüçîâàíèå ëþáîãî îáúåêòà âçàèìîäåéñòâèÿ è ñèíõðîíèçàöèè, ïðèâîäèò ê ñèñòåìíûì âûçîâàì. Ïðè ëþáîì òàêîì âûçîâå èñïîëíåíèå ïðîõîäèò ïî ÿäðó ñèñòåìû è ìåíåäæåðàì çàäà÷ è ïàìÿòè, è, ñëåäîâàòåëüíî, ëþáîé âûçîâ ñîïðÿæåí ñ äîïîëíèòåëüíûìè ðàñõîäàìè. 5.6. Îáúåêòû ñèíõðîíèçàöèè POSIX Ñòàíäàðò POSIX 1003.1b (ñì. ðàçäåë 3.2) îïðåäåëÿåò ðÿä îáúåêòîâ ñèíõðîíèçàöèè, êîòîðûå äîëæíû ïðèñóòñòâîâàòü â ñèñòåìàõ ðåàëüíîãî âðåìåíè: Ñåìàôîðû: ëîãè÷åñêè ñîâïàäàþò ñ îïèñàííûìè âûøå áóëåâñêèìè ñåìàôîðàìè. Èäåíòèôèêàòîðîì ñåìàôîðà ÿâëÿåòñÿ èìÿ, ñèíòàêñè÷åñêè óñòðîåííîå êàê èìÿ ôàéëà. Î÷åðåäè ñîîáùåíèé: ëîãè÷åñêè ñîâïàäàþò ñ îïèñàííûìè âûøå ïî÷òîâûìè ÿùèêàìè. Èäåíòèôèêàòîðîì î÷åðåäè ÿâëÿåòñÿ èìÿ, ñèíòàêñè÷åñêè óñòðîåííîå êàê èìÿ ôàéëà. DR Ðàçäåëÿåìàÿ ïàìÿòü: åå èäåíòèôèêàòîðîì ÿâëÿåòñÿ èìÿ, ñèíòàêñè÷åñêè óñòðîåííîå êàê èìÿ ôàéëà. Ñòàíäàðò POSIX 1003.1c (ñì. ðàçäåë 3.2) îïðåäåëÿåò ðÿä îáúåêòîâ ñèíõðîíèçàöèè, êîòîðûå äîëæíû ïðèñóòñòâîâàòü â ñèñòåìàõ, èñïîëüçóþùèõ çàäà÷è (threads): Îáúåêòû mutex: îáåñïå÷èâàþò âçàèìíîå èñêëþ÷åíèå (MUTual EXclusion) ðàáîòàþùèõ çàäà÷ (ñì. ðàçäåë 5.6.1). Îáúåêòû condvar: îáåñïå÷èâàþò âçàèìíîå èñêëþ÷åíèå ðàáîòàþùèõ çàäà÷ ïðè ïðèíÿòèè óñëîâíîé ïåðåìåííîé (CONDitional VARiable) îïðåäåëåííîãî çíà÷åíèÿ (ñì. ðàçäåë 5.6.2). 5.6.1. Îáúåêòû ñèíõðîíèçàöèè òèïà mutex Îáúåêòû ñèíõðîíèçàöèè òèïà mutex ôàêòè÷åñêè ïðåäñòàâëÿþò ñîáîé íåêîòîðå ðàçâèòèå áóëåâñêèõ ñåìàôîðîâ â ïëàíå ïîâûøåíèÿ áåçîïàñíîñòè ðàáîòû ïðîãðàììû. Òèïè÷íûé öèêë ðàáîòû ñ ðàçäåëÿåìûì ðåñóðñîì ñëåäóþùèé: âçÿòü ñåìàôîð, ðàáîòàòü ñ ðåñóðñîì, âåðíóòü ñåìàôîð. Îäíàêî, åñëè â ðåçóëüòàòå îøèáêè â ïðîãðàììå îíà âíà÷àëå âûçîâåò ôóíêöèþ âåðíóòü ñåìàôîð (íå âçÿâ åãî!), à çàòåì âûïîëíèò ïðèâåäåííûé âûøå öèêë ðàáîòû ñ ðàçäåëÿåìûì ðåñóðñîì, òî ôóíêöèÿ âçÿòü ñåìàôîð íå áëîêèðóåò çàäà÷ó, åñëè ðåñóðñ çàíÿò. 32 5.7. Ïðèìåð èñïîëüçîâàíèÿ îáúåêòîâ ñèíõðîíèçàöèè POSIX T Äëÿ áîðüáû ñ ýòèì ÿâëåíèåì ââîäèòñÿ îáúåêò mutex, êîòîðûé ôàêòè÷åñêè ñîñòîèò èç ïàðû: áóëåâñêîãî ñåìàôîðà è èäåíòèôèêàòîðà çàäà÷è òåêóùåãî âëàäåëüöà ñåìàôîðà (ò.å. òîé çàäà÷è, êîòîðàÿ óñïåøíî âûçâàëà ôóíêöèþ âçÿòü è ñòàëà âëàäåëüöåì ðàçäåëÿåìîãî ðåñóðñà). Äëÿ äîñòóïà ê îáúåêòó mutex m îïðåäåëåíû òðè ïðèìèòèâíûå îïåðàöèè: Lock (m) áëîêèðîâàòü mutex m , åñëè m óæå çàáëîêèðîâàí äðóãîé çàäà÷åé, òî ýòà îïåðàöèÿ ïåðåâîäèò çàäà÷ó â ñîñòîÿíèå îæèäàíèÿ ðàçáëîêèðîâàíèÿ m ; U nlock (m) ðàçáëîêèðîâàòü mutex m , (åñëè m îæèäàåòñÿ äðóãîé çàäà÷åé, òî îíà ìîæåò áûòü àêòèâèçèðîâàíà, óäàëåíà èç î÷åðåäè îæèäàíèÿ è ìîæåò âûòåñíèòü òåêóùóþ çàäà÷ó, íàïðèìåð, åñëè åå ïðèîðèòåò âûøå); åñëè âûçâàâøàÿ ýòó îïåðàöèþ çàäà÷à íå ÿâëÿåòñÿ âëàäåëüöåì m , òî îïåðàöèÿ íå èìååò íèêàêîãî ýôôåêòà; T ryLock (m) ïîïðîáîâàòü áëîêèðîâàòü mutex m , åñëè m íå áëîêèðîâàí, òî ýòà îïåðàöèÿ ýêâèâàëåíòíà Lock (m) , èíà÷å âîçâðàùàåòñÿ ïðèçíàê íåóäà÷è. AF Ýòè îïåðàöèè íåäåëèìû, ò.å. ïåðåêëþ÷åíèå çàäà÷ âî âðåìÿ èõ èñïîëíåíèÿ çàïðåùåíî. 5.6.2. Îáúåêòû ñèíõðîíèçàöèè òèïà condvar Îáúåêò ñèíõðîíèçàöèè òèïà condvar äàåò âîçìîæíîñòü çàäà÷å îæèäàòü âûïîëíåíèÿ íåêîòîðûõ óñëîâèé. Ôàêòè÷åñêè îí ñîñòîèò èç îáúåêòà ñîáûòèÿ E (ñì. ðàçäåë 5.2), ñ îäíèì îòëè÷èåì: ïðè ïîñòóïëåíèè ñîáûòèÿ (ïîñðåäñòâîì ôóíêöèè S end ) òîëüêî îäíà èç î÷åðåäè îæèäàþùèõ ñîáûòèÿ çàäà÷ àêòèâèçèðóåòñÿ. Äëÿ äîñòóïà ê îáúåêòó condvar E îïðåäåëåíû òðè ïðèìèòèâíûå îïåðàöèè: ( m òèïà mutex) ïðîèçâîäèò ñëåäóþùèå äåéñòâèÿ (ïåðâûå äâà èç íèõ ò.å. ïåðåêëþ÷åíèå çàäà÷ âî âðåìÿ èõ èñïîëíåíèÿ çàïðåùåíî): ( ) äëÿ òåêóùåé çàäà÷è (ò.å. âûçâàâøåé ýòó îïåðàöèþ), âûçâàòü ( ), âûçâàòü ( ); ( ) âûçâàòü ( ); ( ) âûçâàòü ( ) è àêòèâèçèðîâàòü âñå îæèäàþùèå çàäà÷è (ò.å. òîò âûçâàòü S ignal E Broadcast E U nlock m W ait E Lock m S end E S end E DR ) (ãäå W ait E ; m íåäåëèìû, æå ýôôåêò, ÷òî è äëÿ ôóíêöèè S end , îïèñàííîé â ðàçäåëå 5.2. 5.7. Ïðèìåð èñïîëüçîâàíèÿ îáúåêòîâ ñèíõðîíèçàöèè POSIX Ïðèâîäèìàÿ íèæå ïðîãðàììà ñ÷èòûâàåò ñòðîêó ñî ñòàíäàðòíîãî ââîäà è âûâîäèò åå íà ñòàíäàðòíûé âûâîä. Äëÿ ÷òåíèÿ ñòðîêè è äëÿ åå âûâîäà ñîçäàþòñÿ äâå çàäà÷è (thread), êîäîì äëÿ êîòîðûõ ÿâëÿþòñÿ ôóíêöèè reader è writer ñîîòâåòñòâåííî. Ïîñêîëüêó çàäà÷è ðàáîòàþò â òîì æå àäðåñíîì ïðîñòðàíñòâå, ÷òî è ñîçäàâøèé èõ ïðîöåññ, òî îíè àâòîìàòè÷åñêè ðàçäåëÿþò âñå ïåðåìåííûå, âêëþ÷àÿ áóôåð ñîîáùåíèé msgbuf. Äëÿ îðãàíèçàöèè âçàèìíîãî èñêëþ÷åíèÿ ïðè äîñòóïå ê êðèòè÷åñêèì ðàçäåëÿåìûì ðåñóðñàì (ïåðåìåííûì done, msglen, msgbuf) èñïîëüçóåòñÿ îáúåêò ñèíõðîíèçàöèè mutex mutx. #include <stdio.h> #include <pthread.h> /* Êîìïèëÿöèÿ â POSIX-ñîâìåñòèìûõ ñèñòåìàõ (íàïðèìåð, Linux): */ /* cc <èìÿ_ôàéëà> -lpthread */ #define BUF_LEN 256 pthread_mutex_t mutx; /* Îáúåêò ñèíõðîíèçàöèè òèïà mutex */ 33 5. Ñèíõðîíèçàöèÿ è âçàèìîäåéñòâèå ïðîöåññîâ /* Ïðèçíàê îêîí÷àíèÿ ðàáîòû /* Äëèíà ñîîáùåíèÿ /* Áóôåð äëÿ ñîîáùåíèÿ */ */ */ T int done; int msglen; char msgbuf[BUF_LEN]; DR AF /* Æäàòü ñîîáùåíèÿ, ïî åãî ïîñòóïëåíèè âûâåñòè åãî íà ýêðàí. Ôóíêöèÿ ðàáîòàåò êàê íåçàâèñèìàÿ çàäà÷à, âûçûâàåìàÿ îïåðàöèîííîé ñèñòåìîé, ïîýòîìó ïðîòîòèï ôèêñèðîâàí. Àðãóìåíò argp íå èñïîëüçóåòñÿ. */ void * writer (void * argp) { for (;;) { pthread_mutex_lock (&mutx); /* "çàõâàòèòü" mutex if (done) { /* Íàïå÷àòàòü èäåíòèôèêàòîð òåêóùåé çàäà÷è printf ("Thread %x exits\n", (int)pthread_self ()); pthread_mutex_unlock (&mutx); /* "îñâîáîäèòü" mutex pthread_exit (0); /* çàâåðøèòü çàäà÷ó return 0; /* íèêîãäà } if (msglen) { printf ("*> %s\n", msgbuf); /* âûâåñòè íà ýêðàí msglen = 0; } pthread_mutex_unlock (&mutx); /* "îñâîáîäèòü" mutex /* Ïîìåñòèòü çàäà÷ó â êîíåö î÷åðåäè ãîòîâûõ çàäà÷ ñ òåì /* æå ïðèîðèòåòîì sched_yield (); } } /* Ñ÷èòàòü ñîîáùåíèå è ïîìåñòèòü åãî â áóôåð. Ôóíêöèÿ ðàáîòàåò êàê íåçàâèñèìàÿ çàäà÷à, âûçûâàåìàÿ îïåðàöèîííîé ñèñòåìîé, ïîýòîìó ïðîòîòèï ôèêñèðîâàí. Àðãóìåíò argp íå èñïîëüçóåòñÿ. */ void * reader (void *argp) { for (;;) { pthread_mutex_lock (&mutx); /* "çàõâàòèòü" mutex if (!msglen) { /* Ñ÷èòàòü ñîîáùåíèå. Âûõîä ïî Ctrl+D if (!fgets (msgbuf, BUF_LEN, stdin)) break; msglen = strlen (msgbuf) + 1; } pthread_mutex_unlock (&mutx); /* "îñâîáîäèòü" mutex /* Ïîìåñòèòü çàäà÷ó â êîíåö î÷åðåäè ãîòîâûõ çàäà÷ ñ òåì /* æå ïðèîðèòåòîì sched_yield (); } 34 */ */ */ */ */ */ */ */ */ */ */ */ */ */ 5.7. Ïðèìåð èñïîëüçîâàíèÿ îáúåêòîâ ñèíõðîíèçàöèè POSIX int main () { pthread_t wtid, rtid; */ */ */ /* äåñêðèïòîðû çàäà÷ */ /* ñîçäàòü mutex */ AF if (pthread_mutex_init (&mutx, 0)) perror ("pthread_mutex_init"); */ T } /* Íàïå÷àòàòü èäåíòèôèêàòîð òåêóùåé çàäà÷è printf ("Thread %x exits\n", (int)pthread_self ()); pthread_mutex_unlock (&mutx); /* "îñâîáîäèòü" mutex pthread_exit (0); /* çàâåðøèòü çàäà÷ó return 0; /* íèêîãäà if (pthread_create (&wtid, 0, writer, 0)) /* ñîçäàòü çàäà÷ó */ perror ("pthread_create"); if (pthread_create (&rtid, 0, reader, 0)) /* ñîçäàòü çàäà÷ó */ perror ("pthread_create"); if (!pthread_join (rtid, 0)) /* æäàòü îêîí÷àíèÿ çàäà÷è rtid */ done = 1; pthread_join (wtid, 0); /* æäàòü îêîí÷àíèÿ çàäà÷è wtid */ if (pthread_mutex_destroy (&mutx)) perror ("pthread_mutex_destroy"); } return 0; /* óäàëèòü mutex */ Åñëè âî âðåìÿ ðàáîòû ýòîé ïðîãðàììû ïîñìîòðåòü ñïèñîê çàäà÷ â ñèñòåìå, òî ìû óâèäèì, ÷òî ýòîé ïðîãðàììå èõ ñîîòâåòñòâóåò ÷åòûðå (!): DR 1. çàïóùåííûé ïðîöåññ, 2. ãëàâíàÿ çàäà÷à, ñîîòâåòñòâóþùàÿ ôóíêöèè main, 3. çàäà÷à, ñîîòâåòñòâóþùàÿ ôóíêöèè reader, 4. çàäà÷à, ñîîòâåòñòâóþùàÿ ôóíêöèè writer. Ïðèâåäåííàÿ âûøå ïðîãðàììà ÿâëÿåòñÿ íå ñîâñåì êîððåêòíîé â ñëåäóþùåì ñìûñëå. Êàæäàÿ èç ôóíêöèé reader/writer äåëàåò ïðåäïîëîæåíèå î òîì, ÷òî âòîðàÿ ôóíêöèÿ writer/reader â ìîìåíò âûçîâà ôóíêöèè sched_yield æäåò òîëüêî îñâîáîæäåíèÿ mutex mutx. Äëÿ äàííîé ïðîãðàììû ýòî ïðåäïîëîæåíèå âåðíî, íî â îáùåì ñëó÷àå òðåáóåòñÿ îáåñïå÷èòü, ÷òîáû ïîñëå âûïîëíåíèÿ ôóíêöèè reader/writer ñëåäóþùåé âûïîëíÿëàñü writer/reader, åñëè æå ïîñëåäíÿÿ çàíÿòà (íå îáðàáîòàëà ïðåäûäóùåå ñîîáùåíèå), òî òåêóùàÿ çàäà÷à äîëæíà ïåðåéòè â ñîñòîÿíèå îæèäàíèÿ, à íå ïîòðåáëÿòü ïðîöåññîðíûå ðåñóðñû â áåñïîëåçíîì öèêëå îïðîñà. Íèæå ïðèâîäèòñÿ ìîäèôèöèðîâàííûé âàðèàíò ýòîé ïðîãðàììû, â êîòîðîì ïîìèìî îáúåêòà mutex äëÿ âçàèìíîãî èñêëþ÷åíèÿ ïðè äîñòóïå ê ðàçäåëÿåìûì äàííûì èñïîëüçóåòñÿ îáúåêò condvar äëÿ ñèíõðîíèçàöèè ñàìèõ çàäà÷. Ôóíêöèåé pthread_cond_wait çàäà÷à ïåðåõîäèò â ðåæèì îæèäàíèÿ äàííûõ îò äðóãîé çàäà÷è, à ôóíêöèåé pthread_cond_signal îíà ñîîáùàåò î ãîòîâíîñòè äàííûõ. #include <stdio.h> #include <pthread.h> 35 5. Ñèíõðîíèçàöèÿ è âçàèìîäåéñòâèå ïðîöåññîâ #define BUF_LEN 256 /* /* /* /* /* Îáúåêò ñèíõðîíèçàöèè òèïà mutex Îáúåêò ñèíõðîíèçàöèè òèïà condvar Ïðèçíàê îêîí÷àíèÿ ðàáîòû Äëèíà ñîîáùåíèÿ Áóôåð äëÿ ñîîáùåíèÿ */ */ */ */ */ AF pthread_mutex_t mutx; pthread_cond_t condx; int done; int msglen; char msgbuf[BUF_LEN]; T /* Êîìïèëÿöèÿ â POSIX-ñîâìåñòèìûõ ñèñòåìàõ (íàïðèìåð, Linux): */ /* cc <èìÿ_ôàéëà> -lpthread */ DR /* Æäàòü ñîîáùåíèÿ, ïî åãî ïîñòóïëåíèè âûâåñòè åãî íà ýêðàí. Ôóíêöèÿ ðàáîòàåò êàê íåçàâèñèìàÿ çàäà÷à, âûçûâàåìàÿ îïåðàöèîííîé ñèñòåìîé, ïîýòîìó ïðîòîòèï ôèêñèðîâàí. Àðãóìåíò argp íå èñïîëüçóåòñÿ. */ void * writer (void * argp) { for (;;) { pthread_mutex_lock (&mutx); /* "çàõâàòèòü" mutex */ while (!msglen) { /* Îñâîáîäèòü mutex è æäàòü ñèãíàëà îò condvar, */ /* çàòåì "çàõâàòèòü" mutex îïÿòü */ pthread_cond_wait (&condx, &mutx); if (done) { /* Íàïå÷àòàòü èäåíòèôèêàòîð òåêóùåé çàäà÷è */ printf ("Thread %x exits\n", (int)pthread_self ()); pthread_mutex_unlock (&mutx);/*"îñâîáîäèòü" mutex*/ pthread_exit (0); /* çàâåðøèòü çàäà÷ó */ return 0; /* íèêîãäà */ } } printf ("*> %s\n", msgbuf); /* âûâåñòè íà ýêðàí */ msglen = 0; /* Ïîñëàòü ñèãíàë condvar */ pthread_cond_signal (&condx); pthread_mutex_unlock (&mutx); /* "îñâîáîäèòü" mutex */ } } /* Ñ÷èòàòü ñîîáùåíèå è ïîìåñòèòü åãî â áóôåð. Ôóíêöèÿ ðàáîòàåò êàê íåçàâèñèìàÿ çàäà÷à, âûçûâàåìàÿ îïåðàöèîííîé ñèñòåìîé, ïîýòîìó ïðîòîòèï ôèêñèðîâàí. Àðãóìåíò argp íå èñïîëüçóåòñÿ. */ void * reader (void *argp) { for (;;) { pthread_mutex_lock (&mutx); /* "çàõâàòèòü" mutex if (!msglen) { 36 */ 5.7. Ïðèìåð èñïîëüçîâàíèÿ îáúåêòîâ ñèíõðîíèçàöèè POSIX */ T /* Ñ÷èòàòü ñîîáùåíèå. Âûõîä ïî Ctrl+D if (!fgets (msgbuf, BUF_LEN, stdin)) break; msglen = strlen (msgbuf) + 1; /* Ïîñëàòü ñèãíàë condvar pthread_cond_signal (&condx); */ } AF } while (msglen) { /* Îñâîáîäèòü mutex è æäàòü ñèãíàëà îò condvar, */ /* çàòåì "çàõâàòèòü" mutex îïÿòü */ pthread_cond_wait (&condx, &mutx); } pthread_mutex_unlock (&mutx); /* "îñâîáîäèòü" mutex */ } /* Íàïå÷àòàòü èäåíòèôèêàòîð òåêóùåé çàäà÷è printf ("Thread %x exits\n", (int)pthread_self ()); pthread_mutex_unlock (&mutx); /* "îñâîáîäèòü" mutex pthread_exit (0); /* çàâåðøèòü çàäà÷ó return 0; /* íèêîãäà int main () { pthread_t wtid, rtid; if (pthread_mutex_init (&mutx, 0)) perror ("pthread_mutex_init"); if (pthread_cond_init (&condx, 0)) perror ("pthread_cond_init"); */ */ */ */ /* äåñêðèïòîðû çàäà÷ */ /* ñîçäàòü mutex */ /* ñîçäàòü condvar */ DR if (pthread_create (&wtid, 0, writer, 0)) /* ñîçäàòü çàäà÷ó */ perror ("pthread_create"); if (pthread_create (&rtid, 0, reader, 0)) /* ñîçäàòü çàäà÷ó */ perror ("pthread_create"); if (!pthread_join (rtid, 0)) /* æäàòü îêîí÷àíèÿ çàäà÷è rtid */ { done = 1; pthread_cond_signal (&condx); } pthread_join (wtid, 0); /* æäàòü îêîí÷àíèÿ çàäà÷è wtid */ if (pthread_mutex_destroy (&mutx)) perror ("pthread_mutex_destroy"); if (pthread_cond_destroy (&condx)) perror ("pthread_cond_destroy"); } /* óäàëèòü mutex */ return 0; 37 6. Óïðàâëåíèå çàäà÷àìè 6. Óïðàâëåíèå çàäà÷àìè 6.1. Ïëàíèðîâàíèå çàäà÷ T Óïðàâëåíèå çàäà÷àìè (ïðîöåññàìè, ïðîöåäóðàìè îáðàáîòêè ïðåðûâàíèé) ÿâëÿåòñÿ âàæíåéøåé ôóíêöèåé ëþáîé îïåðàöèîííîé ñèñòåìû. Èìåííî ñïåöèôè÷åñêèé ìåõàíèçì ïëàíèðîâàíèÿ çàäà÷ è ïðîöåäóð îáðàáîòêè ïðåðûâàíèé äåëàåò îïåðàöèîííóþ ñèñòåìó ñèñòåìîé ðåàëüíîãî âðåìåíè. DR AF Íåîáõîäèìîñòü ïëàíèðîâàíèÿ çàäà÷ ïîÿâëÿåòñÿ, êàê òîëüêî â î÷åðåäè àêòèâíûõ (ãîòîâûõ) çàäà÷ ïîÿâëÿþòñÿ áîëåå îäíîé çàäà÷è (â ìíîãîïðîöåññîðíûõ ñèñòåìàõ áîëåå ÷èñëà èìåþùèõñÿ ïðîöåññîðîâ). Àëãîðèòì ïëàíèðîâàíèÿ çàäà÷ ÿâëÿåòñÿ îñíîâíûì îòëè÷èåì ñèñòåì ðåàëüíîãî âðåìåíè îò îáû÷íûõ îïåðàöèîííûõ ñèñòåì.  ïîñëåäíèõ öåëüþ ïëàíèðîâàíèÿ ÿâëÿåòñÿ îáåñïå÷åíèå âûïîëíåíèÿ âñåõ çàäà÷ èç î÷åðåäè ãîòîâûõ çàäà÷, îáåñïå÷èâàÿ èëëþçèþ èõ ïàðàëëåëüíîé ðàáîòû è íå äîïóñêàÿ ìîíîïîëèçàöèþ ïðîöåññîðà êàêîé-ëèáî èç çàäà÷.  ÎÑРæå öåëüþ ïëàíèðîâàíèÿ ÿâëÿåòñÿ îáåñïå÷åíèå âûïîëíåíèÿ êàæäîé ãîòîâîé çàäà÷è ê îïðåäåëåííîìó ìîìåíòó âðåìåíè, ïðè ýòîì ÷àñòî ïàðàëëåëüíîñòü ðàáîòû çàäà÷ íå äîïóñêàåòñÿ, ïîñêîëüêó òîãäà âðåìÿ èñïîëíåíèÿ çàäà÷è áóäåò çàâèñåòü îò íàëè÷èÿ äðóãèõ çàäà÷. Âàæíåéøèì òðåáîâàíèåì ïðè ïëàíèðîâàíèè çàäà÷ â ÎÑРÿâëÿåòñÿ ïðåäñêàçóåìîñòü âðåìåíè ðàáîòû çàäà÷è. Ýòî âðåìÿ íå äîëæíî çàâèñåòü îò òåêóùåé çàãðóæåííîñòè ñèñòåìû, êîëè÷åñòâà çàäà÷ â î÷åðåäÿõ îæèäàíèÿ (ïðîöåññîðà, ñåìàôîðà, ñîáûòèÿ, . . . ) è ò.ä. Ïðè ýòîì æåëàòåëüíî, ÷òîáû äëèíà ýòèõ î÷åðåäåé íå áûëà áû îãðàíè÷åíà (ò.å. îãðàíè÷åíà òîëüêî îáúåìîì ïàìÿòè, äîñòóïíîé ñèñòåìå). Îïðåäåëåíèå. Ïëàíèðîâùèê çàäà÷ (scheduler) ýòî ìîäóëü (ïðîãðàììà), îòâå÷àþùèé çà ðàçäåëåíèå âðåìåíè èìåþùèõñÿ ïðîöåññîðîâ ìåæäó âûïîëíÿþùèìèñÿ çàäà÷àìè. Îòâå÷àåò çà êîììóòàöèþ çàäà÷ èç ñîñòîÿíèÿ áëîêèðîâêè â ñîñòîÿíèå ãîòîâíîñòè, è çà âûáîð çàäà÷è (çàäà÷ ïî ÷èñëó ïðîöåññîðîâ) èç ÷èñëà ãîòîâûõ äëÿ èñïîëíåíèÿ ïðîöåññîðîì(àìè).  ìíîãîïðîöåññîðíûõ ñèñòåìàõ êîëè÷åñòâî î÷åðåäåé ãîòîâûõ çàäà÷ (î÷åðåäåé îæèäàíèÿ) ìîæåò çàâèñåòü îò òèïà àðõèòåêòóðû ñèñòåìû.  ñèììåòðè÷íûõ ìíîãîïðîöåññîðíûõ ñèñòåìàõ (SMP, Symmetric MultiProcessor system) îáû÷íî åñòü îäíà î÷åðåäü îæèäàíèÿ äëÿ âñåõ ïðîöåññîðîâ.  äðóãèõ ñèñòåìàõ ìîæåò áûòü ïî îäíîé î÷åðåäè íà ïðîöåññîð (èëè ïî îäíîé î÷åðåäè íà ãðóïïó ïðîöåññîðîâ, îáðàçóþùèõ SMP ñèñòåìó). 6.1.1. Ïðèîðèòåòû Íàïîìíèì, ÷òî ïðèîðèòåòîì íàçûâàåòñÿ ÷èñëî, ïðèïèñàííîå îïåðàöèîííîé ñèñòåìîé (à èìåííî, ïëàíèðîâùèêîì çàäà÷) êàæäîìó ïðîöåññó è çàäà÷å. Ñóùåñòâóþò íåñêîëüêî ñõåì íàçíà÷åíèÿ ïðèîðèòåòîâ. Ôèêñèðîâàííûå Òóðíèðíîå 38 ïðèîðèòåòû ïðèîðèòåò çàäà÷å íàçíà÷àåòñÿ ïðè åå ñîçäàíèè è íå ìåíÿåòñÿ â òå÷åíèå åå æèçíè. Ýòà ñõåìà ñ ðàçëè÷íûìè äîïîëíåíèÿìè ïðèìåíÿåòñÿ â áîëüøèíñòâå ñèñòåì ðåàëüíîãî âðåìåíè.  ñõåìàõ ïëàíèðîâàíèÿ ÎÑР÷àñòî òðåáóåòñÿ, ÷òîáû ïðèîðèòåò êàæäîé çàäà÷è áûë óíèêàëüíûì, ïîýòîìó ÷àñòî ÎÑРèìåþò áîëüøîå ÷èñëî ïðèîðèòåòîâ (îáû÷íî 255 è áîëåå). íèæàåòñÿ. îïðåäåëåíèå ïðèîðèòåòà ïðèîðèòåò ïîñëåäíåé èñïîëíÿâøåéñÿ çàäà÷è ïî- Îïðåäåëåíèå ïðèîðèòåòà ïî àëãîðèòìó round robin ïðèîðèòåò çàäà÷è îïðåäåëÿåòñÿ åå íà÷àëüíûì ïðèîðèòåòîì è âðåìåíåì åå îáñëóæèâàíèÿ. ×åì áîëüøå çàäà÷à îáñëóæèâàåòñÿ ïðîöåññîðîì, òåì ìåíüøå åå ïðèîðèòåò (íî íå îïóñêàåòñÿ íèæå íåêîòîðîãî ïîðîãîâîãî çíà÷åíèÿ). Ýòà ñõåìà â òîì èëè èíîì âèäå ïðèìåíÿåòñÿ â áîëüøèíñòâå UNIX ñèñòåì. 6.1. Ïëàíèðîâàíèå çàäà÷ AF T Îòìåòèì, ÷òî â ðàçíûõ ñèñòåìàõ ðàçëè÷íûå àëãîðèòìû ïëàíèðîâàíèÿ çàäà÷ ìîãóò ââîäèòü íîâûå ñõåìû èçìåíåíèÿ ïðèîðèòåòîâ. Íàïðèìåð, â ñèñòåìå OS-9 ïðèîðèòåòû îæèäàþùèõ çàäà÷ óâåëè÷èâàþòñÿ äëÿ èçáåæàíèÿ ñëèøêîì áîëüøèõ âðåìåí îæèäàíèÿ. Ïðèìåð UNIX ñèñòåìû ñ ôèêñèðîâàííûìè ïðèîðèòåòàìè: ïóñòü ãîòîâàÿ çàäà÷à T1 èìååò ïðèîðèòåò 1 , ãîòîâàÿ çàäà÷à T2 èìååò ïðèîðèòåò 5 . Òîãäà çàäà÷à T1 ïîëó÷èò 5=6 ïðîöåññîðíîãî âðåìåíè, à çàäà÷à T2 1=6 , Îïðåäåëåíèå. Ñèòóàöèþ, êîãäà áîëåå ïðèîðèòåòíàÿ çàäà÷à áëîêèðîâàíà ìåíåå ïðèîðèòåòíîé, âëàäåþùåé ðàçäåëÿåìûì ðåñóðñîì, òðåáóåìûì ïðèîðèòåòíîé çàäà÷å, íàçûâàþò èíâåðñèåé ïðèîðèòåòîâ. Âñå ÎÑÐÂ, îñóùåñòâëÿþùèå ïëàíèðîâàíèå çàäà÷ íà îñíîâå èõ ïðèîðèòåòîâ, èñïîëüçóþò òå èëè èíûå ìåõàíèçìû áîðüáû ñ ýòèì ÿâëåíèåì. Íàèáîëåå ÷àñòî èñïîëüçóþò ìåõàíèçì ò.í. íàñëåäîâàíèÿ ïðèîðèòåòîâ, êîãäà çàäà÷à, âëàäåþùàÿ ðàçäåëÿåìûì ðåñóðñîì âðåìåííî ïîëó÷àåò ïðèîðèòåò áîëåå ïðèîðèòåòíîé çàäà÷è, îæèäàþùåé ýòîò ðåñóðñ. Ïðèîðèòåò âîçâðàùàåòñÿ ê ïðåæíåìó çíà÷åíèþ, êîãäà çàäà÷à îñâîáîæäàåò ðàçäåëÿåìûé ðåñóðñ. 6.1.2. Ñòðàòåãèè ïëàíèðîâàíèÿ çàäà÷ Ðàññìîòðèì ñïîñîáû, êîòîðûìè ïëàíèðîâùèê âûáèðàåò î÷åðåäíóþ çàäà÷ó äëÿ ïåðåäà÷è íà âûïîëíåíèå ïðîöåññîðó. Íèæå ìû âíà÷àëå ðàññìîòðèì ÷èñòûå ñïîñîáû, îáû÷íî ïðèìåíÿåìûå òîëüêî â ñî÷åòàíèè ñ äðóãèìè. Î÷åðåäü îæèäàíèÿ òèïà FIFO: ïåðâîé áóäåò èñïîëíåíà ïåðâîé ïîñòóïèâøàÿ çàäà÷à. Î÷åðåäü îæèäàíèÿ, îòñîðòèðîâàííàÿ ïî âðåìåíè èñïîëíåíèÿ çàäà÷: áóäåò èñïîëíåíà çàäà÷à, èñïîëíÿâøàÿñÿ äî ýòîãî ñàìîå êîðîòêîå âðåìÿ. Íåñêîëüêî î÷åðåäåé îæèäàíèÿ Î÷åðåäü îæèäàíèÿ, îòñîðòèðîâàííàÿ ïî ïðèîðèòåòó çàäà÷: ïåðâîé DR (îäíîãî èç ïðèâåäåííûõ âûøå òèïîâ): ïîñòóïèâøàÿ çàäà÷à ïîïàäàåò â îäíó èç î÷åðåäåé â çàâèñèìîñòè îò ïðèîðèòåòà çàäà÷è, âûáîðêà ïðîèçâîäèòñÿ èç ãîëîâû ïåðâîé î÷åðåäè, åñëè ïîñëåäíÿÿ ïóñòà, òî âûáèðàåòñÿ ãîëîâà âòîðîé î÷åðåäè è ò.ä.; ÷àñòî çàäà÷è â ðàçíûõ î÷åðåäÿõ ïîëó÷àþò ðàçíûé êâàíò âðåìåíè â çàâèñèìîñòè îò íîìåðà î÷åðåäè (ïåðâàÿ î÷åðåäü ìåíüøèé êâàíò, òàê êàê çàäà÷è â íåé ïîëó÷àþò äîñòóï ê ïðîöåññîðó ÷àùå). ïîëíåíà çàäà÷à, èìåþùàÿ íàèâûñøèé ïðèîðèòåò. ïåðâîé áóäåò èñ-  UNIX ñèñòåìàõ ïðèìåíÿåòñÿ ñëåäóþùèé ñïîñîá ïëàíèðîâàíèÿ. Âñå ïðîöåññîðíîå âðåìÿ ðàçáèòî íà êâàíòû ôèêñèðîâàííîé äëèíû. Âñå ãîòîâûå çàäà÷è ïîëó÷àò ñâîé êâàíò âðåìåíè, íî ÷àñòîòà ýòîãî çàâèñèò îò îáùåãî êîëè÷åñòâà ãîòîâûõ çàäà÷ è èõ ïðèîðèòåòà. Èçíà÷àëüíî çàäà÷à ïîëó÷àåò âûñîêèé ïðèîðèòåò. Åñëè â òå÷åíèå ñâîåãî êâàíòà çàäà÷à èñïîëüçóåò ïðîöåññîð (íå áëîêèðóåòñÿ ñ ñàìîãî íà÷àëà), òî åå ïðèîðèòåò íå ìåíÿåòñÿ èëè äàæå ïîâûøàåòñÿ. Ñ äðóãîé ñòîðîíû, åñëè çàäà÷à èñïîëüçóåò ñâîé êâàíò ïîëíîñòüþ (íå áëîêèðóåòñÿ äî åãî îêîí÷àíèÿ), òî åå ïðèîðèòåò ïîíèæàåòñÿ. Òàêàÿ ñòðàòåãèÿ îáåñïå÷èâàåò âûñîêóþ ñðåäíþþ ïðîèçâîäèòåëüíîñòü ñèñòåìû è áûñòðîå âðåìÿ ðåàêöèè äëÿ èíòåðàêòèâíûõ ïðîãðàìì (òèïà òåêñòîâûõ ðåäàêòîðîâ), íî àáñîëþòíî íå ãîäèòñÿ äëÿ ñèñòåì ðåàëüíîãî âðåìåíè, ïîñêîëüêó ïðîöåññîðíîå âðåìÿ, ïîëó÷àåìîå çàäà÷åé, çàâèñèò îò êîëè÷åñòâà äðóãèõ çàäà÷ è èõ àêòèâíîñòè.  ñèñòåìàõ ðåàëüíîãî âðåìåíè îáû÷íî ïðèìåíÿåòñÿ ñëåäóþùèé àëãîðèòì ïëàíèðîâàíèÿ. Çàäà÷è èìåþò ôèêñèðîâàííûå ïðèîðèòåòû, êîòîðûå ìîãóò äèíàìè÷åñêè ìåíÿòüñÿ ñàìîé çàäà÷åé èëè ïëàíèðîâùèêîì. Ïðîöåññîð ïîëó÷àåò çàäà÷à, èìåþùàÿ ñàìûé âûñîêèé ïðèîðèòåò. Åñëè òàêàÿ çàäà÷à íå îäíà (íàïðèìåð, íå âñå çàäà÷è èìåþò ðàçíûé ïðèîðèòåò), òî ñðåäè çàäà÷ ñ ñàìûì âûñîêèì ïðèîðèòåòîì îðãàíèçóåòñÿ ïëàíèðîâàíèå ñ èçìåíåíèåì ïðèîðèòåòà ïî ñõåìå round robin (òàê íàçûâàåìàÿ ñõåìà RRS, round robin scheduling). Ïîäîáíàÿ ñõåìà àâòîìàòè÷åñêè îáåñïå÷èâàåò preemtion çàäà÷à ñ ëþáûì ïðèîðèòåòîì (âêëþ÷àÿ ÿäðî ñèñòåìû) ìîæåò áûòü ïðåðâàíà çàäà÷åé ñ áîëåå âûñîêèì ïðèîðèòåòîì. 39 6. Óïðàâëåíèå çàäà÷àìè 6.1.3. Ïëàíèðîâàíèå ïåðèîäè÷åñêèõ çàäà÷ X n i=1 T Áîëüøèíñòâî çàäà÷ â ñèñòåìàõ ðåàëüíîãî âðåìåíè ïåðèîäè÷åñêèå, àêòèâèçèðóåìûå ñèãíàëîì òàéìåðà èëè äàò÷èêà. Äëÿ òàêèõ çàäà÷ ðàçðàáîòàíû ñïåöèàëüíûå ïðèåìû ðàçäåëåíèÿ âðåìåíè. Î÷åâèäíî, ÷òî â îäíîïðîöåññîðíîé ñèñòåìå äîëæíî áûòü âûïîëíåíî ñîîòíîøåíèå Ri Ti 1 < ; AF ãäå Ti è Ri ñîîòâåòñòâåííî ïåðèîä è ìàêñèìàëüíîå âðåìÿ ðàáîòû çàäà÷è i , n êîëè÷åñòâî çàäà÷ â ñèñòåìå. Ëþáàÿ ñõåìà ïëàíèðîâàíèÿ äîëæíà îáåñïå÷èâàòü âûïîëíåíèå ýòîãî ñîîòíîøåíèÿ.  1973ã. Liu è Layland ïðåäëîæèëè ìåòîä àíàëèçà ïåðèîäè÷åñêèõ çàäà÷ â ÎÑÐÂ, íàçâàííûé RMA (Rate Monotonic Analysis), è ñîîòâåòñòâóþùóþ ñõåìó ïëàíèðîâàíèÿ, íàçâàííóþ RMS (Rate Monotonic Scheduling).  èñõîäíîì âàðèàíòå â ýòîé ñõåìå ïðåäïîëàãàåòñÿ, ÷òî âñå çàäà÷è â ñèñòåìå ïåðèîäè÷åñêèå è ìåæäó íèìè îòñóòñòâóåò âçàèìîäåéñòâèå. Ïðèîðèòåò çàäà÷è â RMS îáðàòíî ïðîïîðöèîíàëåí ïåðèîäó, ò.å. çàäà÷à èìååò òåì âûøå ïðèîðèòåò, ÷åì êîðî÷å åå ïåðèîä. Ïðè ýòîì äëÿ îáåñïå÷åíèÿ ñòàáèëüíîñòè ðàáîòû ñèñòåìû äîëæíî áûòü âûïîëíåíî ñîîòíîøåíèå X n i=1 Ri Ti (21=n 1) < n : Îòìåòèì, ÷òî äëÿ ðåàëèçàöèè ñõåìû RMS òðåáóåòñÿ, ÷òîáû ïðèîðèòåòû ó âñåõ çàäà÷ áûëè ðàçëè÷íûìè.  èñõîäíîì âàðèàíòå RMA èñïîëüçóåòñÿ íåðåàëèñòè÷íîå ïðåäïîëîæåíèå î íåçàâèñèìîñòè âñåõ çàäà÷. Ïîýòîìó Liu è Layland ðàñøèðèëè RMA íà îáùèé ñëó÷àé. Åñëè ìåæäó çàäà÷àìè åñòü çàâèñèìîñòü, òî íåîáõîäèìî ïðèíèìàòü ìåðû äëÿ áîðüáû ñ èíâåðñèåé ïðèîðèòåòîâ. Liu è Layland ïðåäëîæèëè èñïîëüçîâàòü PCP (Priority Celling Protocol). Îñíîâíûå ñîñòàâëÿþùèå ïðîòîêîëà: áëîêèðîâêà ðåñóðñà íåâîçìîæíà, åñëè óðîâåíü åãî ïðèîðèòåòíîñòè âûøå, ÷åì óðîâåíü ïðèîðèòåòíîñòè çàïðîñèâøåãî áëîêèðîâêó ïðèëîæåíèÿ; DR êàæäîìó ðàçäåëÿåìîìó ðåñóðñó è êàæäîìó ïðèëîæåíèþ (íàáîðó çàäà÷) ïðèïèñàí óðîâåíü ïðèîðèòåòíîñòè (íå ïóòàòü ñ ïðèîðèòåòîì); ïðèîðèòåò áëîêèðóþùèõ (ò.å. âëàäåþùèõ ðåñóðñîì) çàäà÷ âðåìåííî óâåëè÷èâàåòñÿ. Îòìåòèì, ÷òî ÷àùå èñïîëüçóåòñÿ ïðîñòîé ìåõàíèçì íàñëåäîâàíèÿ ïðèîðèòåòîâ (ñì. âûøå). Ïðè óñëîâèè ïðèìåíåíèÿ ýòîãî ïðîòîêîëà Liu è Layland ïîêàçàëè, ÷òî ïëàíèðîâàíèå ñèíõðîííûõ çàäà÷ äîëæíî óäîâëåòâîðÿòü äëÿ êàæäîãî k ñëåäóþùåìó óñëîâèþ X k i=1 Ri Ti + Ak Tk (21=k 1) < n ; ãäå Ak ýòî ìàêñèìàëüíîå âðåìÿ îæèäàíèÿ çàäà÷è k , êîòîðîå ÿâëÿåòñÿ ñóììîé âðåìåí, ïðîâåäåííûõ çàäà÷àìè ñ ìåíüøèì ïðèîðèòåòîì â êðèòè÷åñêèõ ñåêöèÿõ. 6.1.4. Ðàçðàáîòêà õîðîøî ïëàíèðóåìûõ çàäà÷ Êàêèì áû óìíûì íå áûë àëãîðèòì íàçíà÷åíèÿ ïðèîðèòåòîâ è ïëàíèðîâàíèÿ íåâåðíî íàïèñàííàÿ çàäà÷à ìîæåò èñïîðòèòü îáùóþ çàãðóæåííîñòü ñèñòåìû. Ðàññìîòðèì, íàïðèìåð, ñëåäóþùóþ ñèñòåìó. Ïóñòü â ñèñòåìå åñòü äâà âõîäà A1 , B1 è äâà âûõîäà A2 , B2 . Äâå çàäà÷è T1 , T2 çàíèìàþòñÿ ïîëó÷åíèåì äàííûõ ñ âõîäà, èõ ïðåîáðàçîâàíèåì è ïåðåäà÷åé íà ñîîòâåòñòâóþùèé âûõîä. Êàê áóäåò ðàñïðåäåëåíî âðåìÿ ìåæäó ýòèìè äâóìÿ çàäà÷àìè? 40 6.2. Ïåðåêëþ÷åíèå êîíòåêñòà AF T Ïðè èñïîëüçîâàíèè êëàññè÷åñêîãî ïîëèíãà (polling), êîãäà çàäà÷è ïîñòîÿííî îïðàøèâàþò âõîä íà íàëè÷èå äàííûõ, âñå ïðîöåññîðíîå âðåìÿ ðàçäåëÿåòñÿ ìåæäó íèìè. Ïðè ýòîì âî âðåìÿ îáðàáîòêè äàííûõ äëÿ ïåðâîé çàäà÷è äàííûå âòîðîé ìîãóò áûòü ïîòåðÿíû, ïîñêîëüêó îíè íå áûëè âçÿòû âîâðåìÿ. Åñëè æå òðåáóåòñÿ çàïóñòèòü åùå îäíó çàäà÷ó T3 , òî âðåìÿ äëÿ íåå äîëæíî çàâèñåòü îò òîãî, áûëè ëè äàííûå íà âõîäå çàäà÷ T1 èëè T2 (ïîñêîëüêó îò ýòîãî çàâèñèò âðåìÿ èõ ðàáîòû è, ñîîòâåòñòâåííî, âðåìÿ, îñòàâøååñÿ äî ñëåäóþùåãî çàïðîñà äàííûõ). Îäíàêî, ìû âñå ðàâíî èìååì òðè ïîñòîÿííî ðàáîòàþùèå çàäà÷è. Íàèëó÷øåå ðåøåíèå äëÿ ïëàíèðîâàíèÿ: 3 ïðîöåññîðà, íî ýòî ñëèøêîì äîðîãî. Åñëè æå ðàçäåëÿòü âðåìÿ ìåæäó ýòèìè çàäà÷àìè, òî ñèñòåìà áóäåò èñïîëüçîâàòü 2=3 ïðîöåññîðíîãî âðåìåíè, äàæå åñëè âõîäíûõ äàííûõ íåò. Ñ òî÷êè çðåíèÿ ñèñòåìû ðåàëüíîãî âðåìåíè íàèëó÷øåå ðåøåíèå ýòî àêòèâèçàöèÿ çàäà÷ T1 è T2 ïðåðûâàíèåì ïî ãîòîâíîñòè äàííûõ. 6.2. Ïåðåêëþ÷åíèå êîíòåêñòà Êîíòåêñò çàäà÷è ýòî íàáîð äàííûõ, çàäàþùèõ ñîñòîÿíèå ïðîöåññîðà ïðè âûïîëíåíèè çàäà÷è. Îáû÷íî ñîâïàäàåò ñ íàáîðîì ðåãèñòðîâ, äîñòóïíûõ äëÿ èçìåíåíèÿ ïðèêëàäíîé çàäà÷å.  ñèñòåìàõ ñ âèðòóàëüíîé ïàìÿòüþ ìîæåò âêëþ÷àòü ðåãèñòðû, îòâå÷àþùèå çà òðàíñëÿöèþ âèðòóàëüíîãî àäðåñà â ôèçè÷åñêèé (îáû÷íî äîñòóïíû íà çàïèñü òîëüêî îïåðàöèîííîé ñèñòåìå). Ïåðåêëþ÷åíèå çàäà÷ ýòî ïåðåõîä ïðîöåññîðà îò èñïîëíåíèÿ îäíîé çàäà÷è ê äðóãîé. Ìîæåò áûòü èíèöèèðîâàíî: 1. ïëàíèðîâùèêîì çàäà÷ (íàïðèìåð, îñâîáîäèëñÿ ðåñóðñ è â î÷åðåäü ãîòîâûõ çàäà÷ ïîïàëà îæèäàâøàÿ åãî ïðèîðèòåòíàÿ çàäà÷à), 2. ïðåðûâàíèåì (àïïàðàòíûì ïðåðûâàíèåì) (íàïðèìåð, çàïðîñ íà îáñëóæèâàíèå îò âíåøíåãî óñòðîéñòâà), 3. èñêëþ÷åíèåì (ïðîãðàììíûì ïðåðûâàíèåì) (íàïðèìåð, ñèñòåìíûé âûçîâ). DR Ïîñêîëüêó êîíòåêñò ïîëíîñòüþ îïðåäåëÿåò, êàêàÿ çàäà÷à áóäåò âûïîëíÿòüñÿ, òî çà÷àñòóþ òåðìèíû ïåðåêëþ÷åíèå çàäà÷ è ïåðåêëþ÷åíèå êîíòåêñòà óïîòðåáëÿþò êàê ñèíîíèìû. Îïðåäåëåíèå. Äèñïåò÷åð (dispatcher) ýòî ìîäóëü (ïðîãðàììà), îòâå÷àþùèé çà ïåðåêëþ÷åíèå êîíòåêñòà. Ïðè ïåðåêëþ÷åíèè çàäà÷ äèñïåò÷åðó íåîáõîäèìî: 1. êîððåêòíî îñòàíîâèòü ðàáîòàþùóþ çàäà÷ó; äëÿ ýòîãî à) âûïîëíèòü èíñòðóêöèè òåêóùåé çàäà÷è, óæå çàãðóæåííûå â ïðîöåññîð, íî åùå íå âûïîëíåííûå (ñîâðåìåííûå ïðîöåññîðû èìåþò âíóòðè ñåáÿ êîíâåéåðû èíñòðóêöèé, êóäà ìîãóò çàãðóæàòüñÿ áîëåå 10 èíñòðóêöèé, íåêîòîðûå èç êîòîðûõ ìîãóò áûòü âåñüìà ñëîæíûìè, íàïðèìåð, çàïèñàòü â ïàìÿòü 32 ðåãèñòðà), îáû÷íî ýòî äåëàåòñÿ àïïàðàòíî; á) ñîõðàíèòü â îïåðàòèâíîé ïàìÿòè ðåãèñòðû òåêóùåé çàäà÷è; 2. íàéòè, ïîäãîòîâèòü è çàãðóçèòü çàòðåáîâàííóþ çàäà÷ó (îáðàáîò÷èê ïðåðûâàíèé â ýòîì ñëó÷àå òðåáóåòñÿ åùå óñòàíîâèòü èñòî÷íèê ïðåðûâàíèÿ); 3. çàïóñòèòü íîâóþ çàäà÷ó, äëÿ ýòîãî à) âîññòàíîâèòü èç îïåðàòèâíîé ïàìÿòè ðåãèñòðû íîâîé çàäà÷è (ñîõðàíåííûå ðàíåå, åñëè îíà äî ýòîãî óæå ðàáîòàëà); á) çàãðóçèòü â ïðîöåññîð èíñòðóêöèè íîâîé çàäà÷è (ñîâðåìåííûå ïðîöåññîðû íà÷èíàþò âûïîëíÿòü èíñòðóêöèè òîëüêî ïîñëå çàãðóçêè êîíâåéåðà), ýòà ôàçà äåëàåòñÿ àïïàðàòíî. 41 8. Îáçîð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè 6.3. Ïðåðûâàíèÿ T Êàæäàÿ èç ýòèõ ñòàäèé âíîñèò ñâîé âêëàä â çàäåðæêó ïðè ïåðåêëþ÷åíèè êîíòåêñòà. Ïîñêîëüêó ëþáîå ïðèëîæåíèå ðåàëüíîãî âðåìåíè äîëæíî îáåñïå÷èòü âûäà÷ó ðåçóëüòàòà â çàäàííîå âðåìÿ, òî ýòà çàäåðæêà äîëæíà áûòü ìàëà, äåòåðìèíèðîâàíà è èçâåñòíà. Ýòî ÷èñëî ÿâëÿåòñÿ îäíîé èç âàæíåéøèõ õàðàêòåðèñòèê ÎÑÐÂ. Äåòåðìèíèðîâàííîñòü îñîáåííî âàæíà ïðè îáðàáîòêå ïðåðûâàíèé, ïîñêîëüêó èõ ìîæåò áûòü íåñêîëüêî â î÷åðåäè ïðåðûâàíèé, è îáðàáîò÷èê äîëæåí îáñëóæèòü èõ âñå. Ïðèëîæåíèå äîëæíî çíàòü, ñêîëüêî âðåìåíè ýòî çàéìåò â íàèõóäøåì ñëó÷àå. AF Ïðåðûâàíèÿ ÿâëÿþòñÿ îñíîâíûì èñòî÷íèêîì ñîîáùåíèÿ âíåøíèì óñòðîéñòâîì î ãîòîâíîñòè äàííûõ èëè íåîáõîäèìîñòè ïåðåäà÷è äàííûõ. Ïî ñàìîìó íàçíà÷åíèþ ñèñòåì ðåàëüíîãî âðåìåíè, ïðåðûâàíèÿ ÿâëÿþòñÿ îäíèì èç îñíîâíûõ îáúåêòîâ â ÎÑÐÂ. Âðåìÿ ðåàêöèè íà ïðåðûâàíèå ýòî âðåìÿ ïåðåêëþ÷åíèÿ êîíòåêñòà îò òåêóùåé çàäà÷è ê ïðîöåäóðå îáðàáîòêè ïðåðûâàíèÿ.  ìíîãîçàäà÷íûõ ñèñòåìàõ âðåìÿ îæèäàíèÿ ïðåðûâàíèÿ (ñîáûòèÿ) ìîæåò áûòü èñïîëüçîâàíî äðóãîé çàäà÷åé. Ïðåðûâàíèå ìîæåò ïðîèçîéòè âî âðåìÿ îáðàáîòêè ñèñòåìíîãî âûçîâà è âî âðåìÿ êðèòè÷åñêîé ñåêöèè. 7. Óïðàâëåíèå ïàìÿòüþ Èñïîëüçîâàíèå âèðòóàëüíîé ïàìÿòè ÿâëÿåòñÿ íàñòîëüêî óäîáíûì ñðåäñòâîì ðàçäåëåíèÿ çàäà÷ è îáåñïå÷åíèÿ èì íåïðåðûâíîãî àäðåñíîãî ïðîñòðàíñòâà, íà÷èíàþùåãîñÿ ñ ôèêñèðîâàííîãî àäðåñà, ÷òî îíî èñïîëüçóåòñÿ âî ìíîãèõ ñèñòåìàõ. Îäíàêî, íàëè÷èå âèðòóàëüíîé ïàìÿòè ïðîòèâîðå÷èò îñíîâíûì ïðèíöèïàì ÎÑÐÂ. DR Äàæå åñëè âñå ñòðàíèöû âèðòóàëüíîé ïàìÿòè íàõîäÿòñÿ â ôèçè÷åñêîé ïàìÿòè, çàäåðæêà, âíîñèìàÿ ïðè òðàíñëÿöèè àäðåñà, íå äåòåðìèíèðîâàíà. Îíà çàâèñèò îò òîãî, áûëè ëè óæå îáðàùåíèÿ ê äàííîé ñòðàíèöå (ò.å. íàõîäèòñÿ ëè îíà â êýøå òðàíñëÿöèè ñòðàíèö, íàçûâàåìîì TLB, Translation Look-aside Buffers). Åñëè æå íå âñå ñòðàíèöû âèðòóàëüíîé ïàìÿòè íàõîäÿòñÿ â ôèçè÷åñêîé ïàìÿòè, òî çàäåðæêà, âíîñèìàÿ ïðè òðàíñëÿöèè àäðåñà, íå òîëüêî íå äåòåðìèíèðîâàíà, íî è ìîæåò áûòü î÷åíü áîëüøîé (âêëþ÷àåò âðåìÿ çàãðóçêè ñòðàíèöû ñ äèñêà). Äëÿ óìåíüøåíèÿ ýòîé ïðîáëåìû, ÎÑРïðåäîñòàâëÿþò ñïåöèàëüíûå ñèñòåìíûå âûçîâû, çàêðåïëÿþùèå óêàçàííûå ñòðàíèöû â ôèçè÷åñêîé ïàìÿòè (ò.å. çàïðåùàþùèå ïåðåíîñèòü èõ íà äèñê). 8. Îáçîð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè Ðàññìîòðèì íåêîòîðûå èç ñèñòåì ðåàëüíîãî âðåìåíè. Ïî ñïîñîáó ðàçðàáîòêè ïðîãðàììíîãî îáåñïå÷åíèÿ èõ ðàçäåëÿþò íà ñëåäóþùèå êàòåãîðèè: Self-Hosted ÎÑРýòî ñèñòåìû, â êîòîðûõ ïîëüçîâàòåëè ìîãóò ðàçðàáàòûâàòü ïðèëîæåíèÿ, ðàáîòàÿ â ñàìîé ÎÑÐÂ. Îáû÷íî ýòî ïðåäïîëàãàåò, ÷òî ÎÑРïîääåðæèâàåò ôàéëîâóþ ñèñòåìó, ñðåäñòâà ââîäà-âûâîäà, ïîëüçîâàòåëüñêèé èíòåðôåéñ, èìåþòñÿ êîìïèëÿòîðû, îòëàä÷èê, ñðåäñòâà àíàëèçà ïðîãðàìì, òåêñòîâûå ðåäàêòîðû, ðàáîòàþùèå ïîä óïðàâëåíèåì ÎÑÐÂ. Äîñòîèíñòâîì òàêèõ ñèñòåì ÿâëÿåòñÿ áîëåå ïðîñòîé è íàãëÿäíûé ìåõàíèçì ñîçäàíèÿ è çàïóñêà ïðèëîæåíèé, êîòîðûå ðàáîòàþò íà òîé æå ìàøèíå, ÷òî è ïîëüçîâàòåëü. Íåäîñòàòêîì ÿâëÿåòñÿ òî, ÷òî ïðîìûøëåííîìó êîìïüþòåðó âî âðåìÿ åãî ðåàëüíîé ýêñïëóàòàöèè ÷àñòî âîîáùå íå òðåáóåòñÿ ïîëüçîâàòåëüñêèé èíòåðôåéñ è âîçìîæíîñòü çàïóñêà 42 8.1. Êëàññè÷åñêèå ñèñòåìû T òÿæåëîâåñíûõ ïðîãðàìì âðîäå êîìïèëÿòîðà. Ñëåäîâàòåëüíî, áîëüøèíñòâî èç îïèñàííûõ âûøå âîçìîæíîñòåé ÎÑРïðîñòî íå èñïîëüçóþòñÿ è òîëüêî çðÿ çàíèìàþò ïàìÿòü è äðóãèå ðåñóðñû êîìïüþòåðà. Îáû÷íî self-hosted ÎÑРïðèìåíÿþòñÿ íà îáû÷íûõ êîìïüþòåðàõ ïðîìûøëåííîãî èñïîëíåíèÿ (ñì. îïèñàíèå îáîðóäîâàíèÿ íà ñ. 8). Host/Target ÎÑРýòî ñèñòåìû, â êîòîðûõ îïåðàöèîííàÿ ñèñòåìà è(èëè) êîìïüþòåð, íà êîòîðîì ðàçðàáàòûâàþòñÿ ïðèëîæåíèÿ (host), è îïåðàöèîííàÿ ñèñòåìà è(èëè) êîìïüþòåð, íà êîòîðîì çàïóñêàþòñÿ ïðèëîæåíèÿ (target), ðàçëè÷íû. Ñâÿçü ìåæäó êîìïüþòåðàìè îñóùåñòâëÿåòñÿ ñ ïîìîùüþ ïîñëåäîâàòåëüíîãî ñîåäèíåíèÿ (COM ïîðòà), ethernet, îáùåé øèíû VME èëè compact PCI.  êà÷åñòâå host ñèñòåìû îáû÷íî âûñòóïàþò êîìïüþòåð ïîä óïðàâëåíèåì UNIX èëè Windows NT, â êà÷åñòâå target ñèñòåìû ïðîìûøëåííûé èëè âñòðàèâàåìûé êîìïüþòåð ïîä óïðàâëåíèåì ÎÑÐÂ. Áûâàþò ñèñòåìû, â êîòîðûõ íà îäíîì êîìïüþòåðå ðàáîòàþò äâå îïåðàöèîííûõ ñèñòåìû: îáû÷íàÿ è ðåàëüíîãî âðåìåíè. AF Äîñòîèíñòâîì òàêèõ ñèñòåì ÿâëÿåòñÿ èñïîëüçîâàíèå âñåõ ðåñóðñîâ îáû÷íîé ñèñòåìû (òàêèõ, êàê ãðàôè÷åñêèé èíòåðôåéñ, ôàéëîâàÿ ñèñòåìà, áûñòðûé ïðîöåññîð è áîëüøîé îáúåì îïåðàòèâíîé ïàìÿòè) äëÿ ñîçäàíèÿ ïðèëîæåíèé è óìåíüøåíèå ðàçìåðîâ ÎÑРçà ñ÷åò âêëþ÷åíèÿ òîëüêî íóæíûõ ïðèëîæåíèþ êîìïîíåíò. Íåäîñòàòêîì ÿâëÿåòñÿ îòíîñèòåëüíàÿ ñëîæíîñòü ïðîãðàììíûõ êîìïîíåíò: êðîññ-êîìïèëÿòîðà, óäàëåííîãî çàãðóç÷èêà è îòëàä÷èêà, è ò.ä. Îòìåòèì, ÷òî, ñ îäíîé ñòîðîíû, ðîñò ìîùíîñòè ïðîìûøëåííûõ êîìïüþòåðîâ ïîçâîëÿåò èñïîëüçîâàòü self-hosted ñèñòåìû íà áîëüøåì ÷èñëå âû÷èñëèòåëüíûõ ñèñòåì. Ñ äðóãîé ñòîðîíû, óâåëè÷èâàþùååñÿ ðàñïðîñòðàíåíèå âñòðàèâàåìûõ ñèñòåì (â ðàçíîîáðàçíîì ïðîìûøëåííîì è áûòîâîì îáîðóäîâàíèè), ðàñøèðÿåò ñôåðó ïðèìåíåíèÿ host/target ñèñòåì (ïîñêîëüêó ïðè áîëüøèõ îáúåìàõ âûïóñêà öåíà ñèñòåìû ÿâëÿåòñÿ îïðåäåëÿþùèì ôàêòîðîì).  çàâèñèìîñòè îò ïðîèñõîæäåíèÿ, ÎÑРðàçäåëÿþò íà ñëåäóþùèå ãðóïïû. Îáû÷íûå ÎÑ, èñïîëüçóåìûå â êà÷åñòâå ÎÑÐÂ. ×àñòî ê îáû÷íûì ÎÑ äîáàâëÿþò äîïîëíèòåëüíûå ìîäóëè, ðåàëèçóþùèå ïîääåðæêó ñïåöèôè÷åñêîãî îáîðóäîâàíèÿ (íàïðèìåð, øèíû VME), à òàêæå ïëàíèðîâàíèå çàäà÷ è îáðàáîòêó ïðåðûâàíèé â ñîîòâåòñòâèå ñ òðåáîâàíèÿìè ê ÎÑРè ñãëàæèâàþùèå íåâîçìîæíîñòü ïðåðâàòü ÿäðî ñèñòåìû. Âñå òàêèå ñèñòåìû îòíîñÿòñÿ ê ðàçðÿäó self-hosted. DR ñïåöèàëèçèðîâàííûå îïåðàöèîííûå ñèñòåìû äëÿ ïðèìåíåíèÿ â çàäà÷àõ ðåàëüíîãî âðåìåíè. Áûâàþò êàê self-hosted, òàê è host/target (áîëüøèíñòâî), íåêîòîðûå ÎÑРïîääåðæèâàþò îáå ìîäåëè. Ñîáñòâåííî ÎÑРÑïåöèàëèçèðîâàííûå (÷àñòíûå) ÎÑРýòî ÎÑÐÂ, ðàçðàáîòàííûå äëÿ êîíêðåòíîãî ìèêðîêîíòðîëëåðà åãî ïðîèçâîäèòåëåì. ×àñòî íå ÿâëÿþòñÿ ïîëíîöåííûìè ÎÑ, à ïðåäñòàâëÿþò åäèíûé ìîäóëü ñ ïðèëîæåíèåì è îáåñïå÷èâàþò òîëüêî íåîáõîäèìûé ìèíèìóì ôóíêöèîíàëüíîñòè. Âñå òàêèå ñèñòåìû îòíîñÿòñÿ ê ðàçðÿäó host/target. Ïî âíóòðåííåìó ñòðîåíèþ ðàçëè÷àþò êëàññè÷åñêèå è îáúåêòíî-îðèåíòèðîâàííûå ñèñòåìû. 8.1. Êëàññè÷åñêèå ñèñòåìû Ðàññìîòðèì ñèñòåìû, îñíîâàííûå íà êëàññè÷åñêîì ïðîöåäóðíîì ïîäõîäå ê ïðîãðàììèðîâàíèþ. 8.1.1. CHORUS Ñèñòåìà CHORUS âûïóñêàåòñÿ ôèðìîé Chorus Systeme (Saint Quentin Yvelines, France).  íîÿáðå 1997ã. ôèðìà ïðèîáðåòåíà êîìïàíèåé Sun Microsystems (Menlo Park, CA, USA). Îñíîâíûå õàðàêòåðèñòèêè: 43 8. Îáçîð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè Òèï: 2. Àðõèòåêòóðà: 3. Ñòàíäàðò: 4. Ñâîéñòâà êàê ÎÑÐÂ: íà îñíîâå ìèêðîÿäðà ñîáñòâåííûé è POSIX 1003 Ìíîãîçàäà÷íîñòü: POSIX 1003 (ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü) Ìíîãîïðîöåññîðíîñòü: äà Óðîâíåé ïðèîðèòåòîâ: Ïëàíèðîâàíèå: ïðèîðèòåòíîå, FIFO; preemptive ÿäðî AF host-target (CHORUS/Micro è CHORUS/ClassiX) è self-hosted (CHORUS/MiX) T 1. 5. ÎÑ ðàçðàáîòêè (host): 6. Ïðîöåññîðû (target): 7. Ëèíèè ñâÿçè host-target: 8. Ìèíèìàëüíûé ðàçìåð: 9. Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ: 10. CHORUS/UNIX/Windows Intel 80x86, Motorola 68xxx, Motorola 88xxx, SPARC, PowerPC, T805, MIPS, PA-RISC, YMP (Cray), DEC Alpha ïîñëåäîâàòåëüíûé êàíàë è ethernet 10Kb äëÿ CHORUS/Micro, 50Kb äëÿ CHORUS/ClassiX POSIX 1003 (ñåìàôîðû, mutex, condvar) Ñðåäñòâà ðàçðàáîòêè: CHORUS/Harmony èíòåãðèðîâàííàÿ ñðåäà ðàçðàáîòêè C/C++, âêëþ÷àþùàÿ êîìïèëÿòîðû, îòëàä÷èê, àíàëèçàòîð CHORUS/JaZZ âèðòóàëüíàÿ ìàøèíà Java 8.1.2. LynxOS Ñèñòåìà LynxOS âûïóñêàåòñÿ ôèðìîé Lynx Real Time Systems (Los Gatos, USA). Îñíîâíûå õàðàêòåðèñòèêè: Òèï: self-hosted DR 1. 2. Àðõèòåêòóðà: 3. Ñòàíäàðò: 4. Ñâîéñòâà êàê ÎÑÐÂ: POSIX 1003 Ìíîãîçàäà÷íîñòü: POSIX 1003 (ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü) Ìíîãîïðîöåññîðíîñòü: äà Óðîâíåé ïðèîðèòåòîâ: 255 Ïëàíèðîâàíèå: FIFO, round robin, Quantum; preemptive ÿäðî 5. ÎÑ ðàçðàáîòêè (host): 6. Ïðîöåññîðû (target): 7. Ëèíèè ñâÿçè host-target: 8. Ìèíèìàëüíûé ðàçìåð: 44 íà îñíîâå ìèêðîÿäðà Intel 80x86, Motorola 68xxx, SPARC, PowerPC ïîëíîé ñèñòåìû: 256Kb óñå÷åííîé ñèñòåìû: 124Kb òîëüêî ÿäðà: 33Kb 8.1. Êëàññè÷åñêèå ñèñòåìû Ñèñòåìó ìîæíî çàïèñàòü â ROM. 10. Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ: Ñðåäñòâà ðàçðàáîòêè: POSIX 1003 (ñåìàôîðû, mutex, condvar) T 9. Êîìïëåêòû ðàçðàáîò÷èêà, âêëþ÷àþùèå êîìïèëÿòîð C/C++, îòëàä÷èê, àíàëèçàòîð X Windows/Motif äëÿ Lynx TotalView ìíîãîïðîöåññíûé îòëàä÷èê AF 8.1.3. QNX Ñèñòåìà QNX âûïóñêàåòñÿ ôèðìîé QNX SoftWare Systems (USA). Îñíîâíûå õàðàêòåðèñòèêè: 1. Òèï: 2. Àðõèòåêòóðà: 3. Ñòàíäàðò: 4. Ñâîéñòâà êàê ÎÑÐÂ: self-hosted íà îñíîâå ìèêðîÿäðà POSIX 1003 Ìíîãîçàäà÷íîñòü: POSIX 1003 (ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü) Ìíîãîïðîöåññîðíîñòü: äà Óðîâíåé ïðèîðèòåòîâ: 32 Ïëàíèðîâàíèå: FIFO, round robin, àäàïòèâíîå; preemptive ÿäðî 5. ÎÑ ðàçðàáîòêè (host): 6. Ïðîöåññîðû (target): 7. Ëèíèè ñâÿçè host-target: 8. Ìèíèìàëüíûé ðàçìåð: 9. Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ: Intel 80x86 DR 60Kb 10. POSIX 1003 (ñåìàôîðû, mutex, condvar) Ñðåäñòâà ðàçðàáîòêè: Êîìïëåêòû ðàçðàáîò÷èêà, âêëþ÷àþùèå êîìïèëÿòîð C/C++, îòëàä÷èê, àíàëèçàòîð îò QNX è íåçàâèñèìûõ ïîñòàâùèêîâ (íàïðèìåð, Watcom/SyBase); X Windows/Motif äëÿ QNX. 8.1.4. OS-9 Ñèñòåìà OS-9 âûïóñêàåòñÿ ôèðìîé Microware (USA). Îñíîâíûå õàðàêòåðèñòèêè: 1. Òèï: 2. Àðõèòåêòóðà: 3. Ñòàíäàðò: 4. Ñâîéñòâà êàê ÎÑÐÂ: host-target íà îñíîâå ìèêðîÿäðà ñîáñòâåííûé, âûçîâû ïîõîæè íà UNIX Ìíîãîçàäà÷íîñòü: ìíîãîïðîöåññíîñòü Ìíîãîïðîöåññîðíîñòü: 45 8. Îáçîð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè Óðîâíåé ïðèîðèòåòîâ: Ïëàíèðîâàíèå: ïðèîðèòåòíîå, FIFO, ñïåöèàëüíûé ìåõàíèçì ïëàíèðîâàíèÿ (ñì. ðàçäåë 6.1.1); preemptive ÿäðî 5. ÎÑ ðàçðàáîòêè (host): 6. Ïðîöåññîðû (target): 7. Ëèíèè ñâÿçè host-target: 8. Ìèíèìàëüíûé ðàçìåð: 9. Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ: Motorola 68xxx, Intel 80x86, ARM, MIPS, PowerPC ïîñëåäîâàòåëüíûé êàíàë è ethernet 16Kb AF 10. ñîáûòèÿ, . . . UNIX/Windows T ðàçäåëÿåìàÿ ïàìÿòü, ñèãíàëû, ñåìàôîðû, Ñðåäñòâà ðàçðàáîòêè: Hawk èíòåãðèðîâàííàÿ ñðåäà ðàçðàáîòêè íà C/C++ PersonalJava âèðòóàëüíàÿ ìàøèíà Java 8.1.5. pSOS Ñèñòåìà pSOS âûïóñêàåòñÿ Integrated Systems (Santa Clara, USA).  ôåâðàëå 2000ã. ôèðìà ïðèîáðåòåíà êîìïàíèåé Wind River Systems (Alameda, CA, USA). Îñíîâíûå õàðàêòåðèñòèêè: 1. Òèï: host-target 2. Àðõèòåêòóðà: 3. Ñòàíäàðò: 4. Ñâîéñòâà êàê ÎÑÐÂ: íà îñíîâå ìèêðîÿäðà DR ñîáñòâåííûé ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü Ìíîãîïðîöåññîðíîñòü: äà Óðîâíåé ïðèîðèòåòîâ: 255 Ïëàíèðîâàíèå: ïðèîðèòåòíîå; preemptive ÿäðî 5. ÎÑ ðàçðàáîòêè (host): 6. Ïðîöåññîðû (target): 7. Ëèíèè ñâÿçè host-target: 8. Ìèíèìàëüíûé ðàçìåð: 9. Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ: 10. UNIX/Windows Motorola 68xxx, Intel 80x86, Intel 80960, ARM, MIPS, PowerPC 15Kb ñåìàôîðû, mutex, ñîáûòèÿ, . . . Ñðåäñòâà ðàçðàáîòêè: 46 Ìíîãîçàäà÷íîñòü: Èíòåãðèðîâàííàÿ ñðåäà ðàçðàáîòêè íà C/C++/Ada 8.1. Êëàññè÷åñêèå ñèñòåìû 8.1.6. RTC 1. Òèï: 2. Àðõèòåêòóðà: 3. Ñòàíäàðò: 4. Ñâîéñòâà êàê ÎÑÐÂ: host-target (RTC) è self-hosted (RTC/PC) ìîíîëèòíàÿ SCEPTRE (RTC) è ñîáñòâåííûé (RTC/PC) Ìíîãîçàäà÷íîñòü: ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü AF T Ñèñòåìà RTC (Real Time Craft) âûïóñêàåòñÿ ôèðìîé GSI-TECSI (Paris, France). Îñíîâíûå õàðàêòåðèñòèêè: Ìíîãîïðîöåññîðíîñòü: äà (RTC); íåò (RTC/PC) Óðîâíåé ïðèîðèòåòîâ: 65532 Ïëàíèðîâàíèå: ïðèîðèòåòíîå, FIFO; preemptive ÿäðî 5. ÎÑ ðàçðàáîòêè (host): 6. Ïðîöåññîðû (target): 7. Ëèíèè ñâÿçè host-target: 8. Ìèíèìàëüíûé ðàçìåð: 9. Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ: 10. òîëüêî Intel 80x86) ÿùèêè) UNIX/Windows Intel 80x86, Motorola 68xxx, Intel 80C166, Am39K (äëÿ RTC/PC ethernet 1.5Kb (RTC); 4Kb (RTC/PC) SCEPTRE (ñåìàôîðû, ñèãíàëû, ïî÷òîâûå Ñðåäñòâà ðàçðàáîòêè: Êîìïèëÿòîð C, îòëàä÷èê Watcom TRC. 8.1.7. VRTX DR Ñèñòåìà VRTX âûïóñêàåòñÿ ôèðìîé Ready Systems (Sunnyvale, USA). Îñíîâíûå õàðàêòåðèñòèêè: 1. Òèï: 2. Àðõèòåêòóðà: 3. Ñòàíäàðò: 4. Ñâîéñòâà êàê ÎÑÐÂ: host-target ñîáñòâåííûé Ìíîãîçàäà÷íîñòü: ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü Ìíîãîïðîöåññîðíîñòü: íåò Óðîâíåé ïðèîðèòåòîâ: 255 Ïëàíèðîâàíèå: ïðèîðèòåòíîå; preemptive ÿäðî 5. ÎÑ ðàçðàáîòêè (host): UNIX/Windows 6. Ïðîöåññîðû (target): 7. Ëèíèè ñâÿçè host-target: 8. Ìèíèìàëüíûé ðàçìåð: Motorola 68xxx, Intel 80x86, Intel 80960, PowerPC ïîñëåäîâàòåëüíûé êàíàë, ethernet, øèíà VME 16Kb 47 8. Îáçîð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè 10. Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ: Ñðåäñòâà ðàçðàáîòêè: ñåìàôîðû, î÷åðåäè, ñèãíàëû, . . . T 9. MasterWorks èíòåãðèðîâàííàÿ ñðåäà ðàçðàáîòêè Xray ñïåöèàëèçèðîâàííûé îòëàä÷èê Simulator Xray ýìóëÿòîð ÿäðà 8.1.8. VxWorks AF Ñèñòåìà VxWorks âûïóñêàåòñÿ ôèðìîé Wind River Systems (Alameda, CA, USA). Îñíîâíûå õàðàêòåðèñòèêè: 1. Òèï: 2. Àðõèòåêòóðà: 3. Ñòàíäàðò: 4. Ñâîéñòâà êàê ÎÑÐÂ: host-target ìîíîëèòíàÿ ñîáñòâåííûé è POSIX 1003 Ìíîãîçàäà÷íîñòü: ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü Ìíîãîïðîöåññîðíîñòü: äà Óðîâíåé ïðèîðèòåòîâ: 256 Ïëàíèðîâàíèå: ïðèîðèòåòíîå; preemptive ÿäðî 5. ÎÑ ðàçðàáîòêè (host): 6. Ïðîöåññîðû (target): Motorola 68xxx, Intel 80x86, Intel 80960, PowerPC, SPARC, Alpha, DR MIPS, ARM UNIX/Windows 7. Ëèíèè ñâÿçè host-target: 8. Ìèíèìàëüíûé ðàçìåð: 9. Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ: 10. ïîñëåäîâàòåëüíûé êàíàë, ethernet, øèíà VME 58Kb ... ñåìàôîðû POSIX 1003, î÷åðåäè, ñèãíàëû, Ñðåäñòâà ðàçðàáîòêè: TORNADO èíòåãðèðîâàííàÿ ñðåäà ðàçðàáîòêè C/C++ VxSim ýìóëÿòîð äëÿ UNIX WindView ãðàôè÷åñêèé âèçóàëèçàòîð ñîñòîÿíèÿ çàäà÷ 8.2. Îáúåêòíî-îðèåíòèðîâàííûå ñèñòåìû Ðàññìîòðèì ñèñòåìû, îñíîâàííûå íà îáúåêòíî-îðèåíòèðîâàííîì ïîäõîäå ê ðàçðàáîòêå ïðîãðàìíîãî îáåñïå÷åíèÿ (ñì. ðàçäåë 4.1). Ê èõ ÷èñëó ìû áóäåì îòíîñèòü ñèñòåìû, íå òîëüêî ïðåäîñòàâëÿþùèå ñðåäñòâà ðàçðàáîòêè è íàáîðû áèáëèîòåê äëÿ îáúåêòíî-îðèåíòèðîâàííûõ ÿçûêîâ, íî è ñàìè íàïèñàííûå íà òàêèõ ÿçûêàõ. 48 8.3. Ñïåöèàëèçèðîâàííûå (÷àñòíûå) ÎÑР8.2.1. SoftKernel 1. Òèï: 2. Àðõèòåêòóðà: 3. Ñòàíäàðò: 4. Ñâîéñòâà êàê ÎÑÐÂ: host-target íà îñíîâå îáúåêòîâ-ìèêðîÿäåð ñîáñòâåííûé AF T Ñèñòåìà SoftKernel âûïóñêàåòñÿ ôèðìîé Microprocess (Courbevoie, France). Îñíîâíûå õàðàêòåðèñòèêè: Ìíîãîçàäà÷íîñòü: ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü Ìíîãîïðîöåññîðíîñòü: äà Óðîâíåé ïðèîðèòåòîâ: 255 Ïëàíèðîâàíèå: ïðèîðèòåòíîå, FIFO; preemptive ÿäðî 5. ÎÑ ðàçðàáîòêè (host): 6. Ïðîöåññîðû (target): 7. Ëèíèè ñâÿçè host-target: 8. Ìèíèìàëüíûé ðàçìåð: 9. Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ: 10. ÿùèêè UNIX/Windows Motorola 68xxx, PowerPC, Intel 80960, ARM, SPARC ïîñëåäîâàòåëüíûé êàíàë è ethernet 40Kb ñåìàôîðû, ñèãíàëû, ñîáûòèÿ, ïî÷òîâûå Ñðåäñòâà ðàçðàáîòêè: SoftWorks èíòåãðèðîâàííàÿ ñðåäà ðàçðàáîòêè C/C++ DR 8.3. Ñïåöèàëèçèðîâàííûå (÷àñòíûå) ÎÑРÑèñòåìû, ïðîåêòèðóåìûå ïîä êîíêðåòíóþ ìîäåëü ìèêðîêîíòðîëëåðà èëè êîíêðåòíóþ çàäà÷ó, îáëàäàþò îïðåäåëåííûìè ïðåèìóùåñòâàìè: íàèâûñøàÿ ïðîèçâîäèòåëüíîñòü, íàèëó÷øèé ó÷åò îñîáåííîñòåé îáîðóäîâàíèÿ, íàèáîëüøàÿ êîìïàêòíîñòü. Íåäîñòàòêè áîëüøîå âðåìÿ ðàçðàáîòêè, âûñîêàÿ ñòîèìîñòü, íåïåðåíîñèìîñòü. Ïðèìåðàìè òàêèõ ñèñòåì ÿâëÿþòñÿ ÎÑÐÂ, ðàçðàáîòàííûå ìíîãèìè ïðîèçâîäèòåëÿìè ýëåêòðîííîé òåõíèêè (Sony, Sagem, . . . ), à òàêæå ñèñòåìû, ðàçðàáîòàííûå ïîä êîíêðåòíóþ áîëüøóþ çàäà÷ó (íàïðèìåð, óïðàâëåíèå æåëåçíûìè äîðîãàìè TGV âî Ôðàíöèè). 49 8. Îáçîð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè 8.4. Ñèñòåìû íà îñíîâå Linux T Ðàññìîòðèì ñèñòåìû íà îñíîâå Linux ñâîáîäíî ðàñïðîñòðàíÿåìîé âåðñèè ñèñòåìû UNIX. Îíà ïîëó÷èëà çíà÷èòåëüíîå ðàñïîñòðàíåíèå íà íàñòîëüíûõ êîìïüþòåðàõ â ñèëó ñâîåé áåñïëàòíîñòè è êà÷åñòâà. Ïîÿâèâøèñü íà ìàøèíàõ ñ ïðîöåññîðàìè Intel 80x86, ñåé÷àñ îíà ïîääåðæèâàåò ïðîöåññîðû Alpha, SPARC, PowerPC, ARM, Motorola 68xxx, MIPS. Îòêðûòîñòü èñõîäíûõ òåêñòîâ ñèñòåìû ïîçâîëÿåò ðåàëèçîâûâàòü íà åå îñíîâå ñïåöèàëèçèðîâàííûå ñèñòåìû è îáåñïå÷èâàòü ïîääåðæêó íîâîãî îáîðóäîâàíèÿ. Ïðèñïîñîáëåíèå ñèñòåìû Linux ê òðåáîâàíèÿì ðåàëüíîãî âðåìåíè ïðîèñõîäèò ïî ñëåäóþùèì òðåì íàïðàâëåíèÿì. AF 1. Ïîääåðæêà ñòàíäàðòîâ POSIX, êàñàþùèõñÿ ñèñòåì ðåàëüíîãî âðåìåíè. Ñòàíäàðò POSIX 1003.1c (thread ðàáîòà ñ çàäà÷àìè) óæå ïîääåðæàí, ñòàíäàðò POSIX 1003.1b (ðàñøèðåíèÿ ðåàëüíîãî âðåìåíè) ïîääåðæàí ëèøü ÷àñòè÷íî: ðåàëèçîâàíû ìåõàíèçìû óïðàâëåíèÿ ïàìÿòüþ è ìåõàíèçìû ïëàíèðîâàíèÿ çàäà÷, ìåõàíèçìû æå ðàáîòû ñ òàéìåðàìè, ñèãíàëû, POSIX ñåìàôîðû è î÷åðåäè ñîîáùåíèé ïîêà íå ðåàëèçîâàíû. 2. Ïîääåðæêà ñïåöèàëüíîãî îáîðóäîâàíèÿ, âàæíåéøèì èç êîòîðûõ ÿâëÿåòñÿ øèíà VME. Óæå ñóùåñòâóåò ïîääåðæêà ìîñòà VMEPCI. Âåäóòñÿ ðàçðàáîòêè ïî îáåñïå÷åíèþ âûïîëíåíèÿ Linux èç ÏÇÓ. Òàêæå äëÿ ñèñòåì ðåàëüíîãî âðåìåíè âàæíûì ÿâëÿåòñÿ ïîâûøåíèå ðàçðåøåíèÿ òàéìåðà ñèñòåìû. 3. Ðåàëèçàöèÿ ìåõàíèçìà preemption äëÿ ÿäðà ñèñòåìû. Ýòîò ìåõàíèçì, ñ îäíîé ñòîðîíû, ÿâëÿåòñÿ íåîáõîäèìûì äëÿ òîãî, ÷òîáû ñèñòåìó ìîæíî áûëî íàçûâàòü ñèñòåìîé ðåàëüíîãî âðåìåíè, à ñ äðóãîé ñòîðîíû, îí ÿâëÿåòñÿ î÷åíü ñëîæíûì äëÿ ðåàëèçàöèè. Linux, êàê è âñå UNIX ñèñòåìû, íàäîëãî çàïðåùàåò ïðåðûâàíèÿ ïðè âõîäå â ÿäðî ñèñòåìû, è ÿâëÿåòñÿ ñóùåñòâåííî íå preemptive. Ñóùåñòâóåò íåñêîëüêî ïðîåêòîâ ðåàëèçàöèè premption äëÿ ÿäðà Linux. Ïî ñïîñîáó ðåøåíèÿ çàäà÷è èõ ìîæíî ðàçäåëèòü íà äâå ãðóïïû. DR 1. Ìåõàíèçì preemption ðåàëèçóåòñÿ ïóòåì ïåðåïèñûâàíèÿ ÿäðà ñèñòåìû (áëàãî îíî äîñòóïíî â èñõîäíûõ òåêñòàõ). Íà ýòîì ïóòè ìîæíî äîñòè÷ü ñàìûõ êà÷åñòâåííûõ ðåçóëüòàòîâ, íî íà äàííûé ìîìåíò çíà÷èòåëüíûõ óñïåõîâ â ýòîì ïëàíå íåò ïî ñëåäóþùèì ïðè÷èíàì: à) ñëèøêîì áîëüøîé îáúåì ðàáîòû, ñâÿçàííûé ñ áîëüøèì îáúåìîì ÿäðà; á) ñëèøêîì âûñîêàÿ ñêîðîñòü èçìåíåíèÿ ÿäðà, ïðè÷åì èçìåíåíèÿ âíîñÿòñÿ, íå ó÷èòûâàÿ èíòåðåñû ðåàëüíîãî âðåìåíè. 2. Ìåõàíèçì preemption ðåàëèçóåòñÿ ïóòåì íàïèñàíèÿ ìèêðîÿäðà, îòâå÷àþùåãî çà äèñïåò÷åðèçàöèþ ïðåðûâàíèé è çàäà÷. ßäðî Linux ðàáîòàåò êàê çàäà÷à ñ íèçêèì ïðèîðèòåòîì. Ñàìî ÿäðî ëèøü íåçíà÷èòåëüíî èçìåíåíî, äëÿ ïðåäîòâðàùåíèÿ áëîêèðîâàíèÿ èì àïïàðàòíûõ ïðåðûâàíèé. Çàäà÷è â òàêîé ñèñòåìå ðàçäåëåíû íà äâå ãðóïïû: à) ïðîöåññû, ðàáîòàþùèå ïîä óïðàâëåíèåì òîëüêî ìèêðîÿäðà (íå èñïîëüçóþùèå ôóíêöèè ÿäðà Linux); ýòè ïðîöåññû óäîâëåòâîðÿþò òðåáîâàíèÿì ðåàëüíîãî âðåìåíè, ïîñêîëüêó ìîãóò ïðåðûâàòü ÿäðî Linux; á) ïðîöåññû, ðàáîòàþùèå ïîä óïðàâëåíèåì Linux (îáû÷íûå ïðèëîæåíèÿ, êîòîðûå â äàííîé ñèñòåìå ðàññìàòðèâàþòñÿ êàê ïîäçàäà÷è ïðîöåññà ÿäðà Linux), à òàêæå çàäà÷è ðàáîòàþùèå ïîä óïðàâëåíèåì ìèêðîÿäðà, íî èñïîëüçóþùèå ôóíêöèè Linux; ýòè ïðîöåññû íå óäîâëåòâîðÿþò òðåáîâàíèÿì ðåàëüíîãî âðåìåíè, ïîñêîëüêó ìîãóò áûòü áëîêèðîâàíû ÿäðîì Linux. Íåäîñòàòêîì òàêîãî ïîäõîäà ÿâëÿåòñÿ íåîáõîäèìîñòü ðåàëèçàöèè ìèêðîÿäðà, îáåñïå÷èâàþùåãî ôóíêöèîíèðîâàíèÿ ïðîöåññîâ ðåàëüíîãî âðåìåíè. Íàïðèìåð, åñëè ïðîöåññ 50 8.5. Ñèñòåìû íà îñíîâå Windows NT (Microsoft) 8.4.1. RT-Linux T ðåàëüíîãî âðåìåíè õî÷åò ðàáîòàòü ñ êîììóíèêàöèîííûì ïîðòîì (íàïðèìåð, COM ïîðòîì), òî äðàéâåð ýòîãî ïîðòà íàäî ïåðåíåñòè èç ÿäðà Linux â ìèêðîÿäðî (ïîñêîëüêó èñïîëüçîâàíèå äðàéâåðà Linux ñäåëàåò ýòîò ïðîöåññ çàâèñèìûì îò òåêóùåé çàãðóæåííîñòè ñèñòåìû è äðóãèõ íåïðåäñêàçóåìûõ ôàêòîðîâ). Íàèáîëåå çàêîí÷åííîé ðåàëèçàöèåé ýòîãî ïîäõîäà ÿâëÿåòñÿ ïðîåêò RT-Linux. AF Ñèñòåìà RT-Linux ÿâëÿåòñÿ ñâîáîäíî ðàñïðîñòðàíÿåìîé, ðàçðàáàòûâàåìîé ýíòóçèàñòàìè â ðÿäå óíèâåðñèòåòîâ ìèðà. Ñîçäàíà â New Mexico Institute of Mining and Technology (USA). Ïðåäñòàâëÿåò ñîáîé ïðîñòåéøåå ìèêðîÿäðî, îòâå÷àþùåå çà ñîçäàíèå è ïëàíèðîâàíèå çàäà÷, îáåñïå÷åíèå èõ âçàèìîäåéñòâèÿ è äèñïåò÷åðèçàöèþ ïðåðûâàíèé. Ðåàëèçîâàí ïðîñòåéøèé ïðèîðèòåòíûé ìåõàíèçì ïëàíèðîâàíèÿ è åäèíñòâåííûé ìåõàíèçì âçàèìîäåéñòâèÿ î÷åðåäü ñîîáùåíèé FIFO. ßäðî Linux ðàáîòàåò êàê ñàìàÿ íèçêîïðèîðèòåòíàÿ çàäà÷à. Ñàìî ÿäðî ïîäïðàâëåíî: ìàêðîîïðåäåëåíèÿ, îòâå÷àþùèå çà çàïðåùåíèå/ðàçðåøåíèå ïðåðûâàíèé çàìåíåíû íà âûçîâ ñîîòâåòñòâóþùèõ ôóíêöèé ìèêðîÿäðà. Çàäà÷è Linux íå ìîãóò ïðåðâàòü ÿäðî Linux, çàäà÷è æå ìèêðîÿäðà ìîãóò. Òèïè÷íûé ìåõàíèçì ôóíêöèîíèðîâàíèÿ ñèñòåìû ñëåäóþùèé. Êðèòè÷åñêàÿ ÷àñòü ïðèëîæåíèÿ (íàïðèìåð, ïîëó÷åíèå äàííûõ ñ äàò÷èêà) ðåàëèçóåòñÿ êàê ïðîöåññ ìèêðîÿäðà. ×àñòü, îòâå÷àþùàÿ çà âèçóàëèçàöèþ è õðàíåíèå äàííûõ, ðåàëèçóåòñÿ êàê ïðîöåññ Linux. Ýòè äâà ïðîöåññà âçàèìîäåéñòâóþò ïîñðåäñòâîì î÷åðåäè ñîîáùåíèé FIFO. Ïðîñòîòà ìèêðîÿäðà ïîçâîëÿåò ðàçðàáîò÷èêàì ëåãêî åãî ìîäèôèöèðîâàòü äëÿ óäîâëåòâîðåíèÿ ñâîèõ ïîòðåáíîñòåé. Ìèíèìàëüíûé ðàçìåð ñèñòåìû äëÿ çàïèñè â ÏÇÓ (áåç X-Windows) 2.7Mb. 8.5. Ñèñòåìû íà îñíîâå Windows NT (Microsoft) Àðãóìåíòû Microsoft "çà"èñïîëüçîâàíèå Windows NT â êà÷åñòâå ÎÑÐÂ. Ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü ñèñòåìû. Ïîääåðæêà ìíîãîïðîöåññîðíîñòè. Preemption çàäà÷. DR Preemption ïðåðûâàíèé è âîçìîæíîñòü èõ ìàñêèðîâàíèÿ. Ðàñïðåäåëåíèå ïðåðûâàíèé ìåæäó ïðîöåññîðàìè â ìíîãîïðîöåññîðíîé ñèñòåìå. Äëÿ óìåíüøåíèÿ âðåìåíè ïðåáûâàíèÿ â ïðîöåäóðå îáðàáîòêè ïðåðûâàíèÿ (Interrupt Service Routine, ISR) îáðàáîò÷èê âûçûâàåò ñïåöèàëüíóþ ïðîöåäóðó (Deffered Procedure Call, DPC) è çàêàí÷èâàåò ðàáîòó. Îñíîâíàÿ äåÿòåëüíîñòü ïî îáðàáîòêå ïðåðûâàíèÿ âûïîëíÿåòñÿ DPC. Ïðîöåäóðå DPC íàçíà÷àåòñÿ ïðèîðèòåò è îíà íà÷èíàåò âûïîëíÿòñÿ, óïðàâëÿåìàÿ ïëàíèðîâùèêîì. Àñèíõðîííûé ââîä/âûâîä. Ïðÿìîé äîñòóï ê îáîðóäîâàíèþ ïîñðåäñòâîì èíòåðôåéñà HAL (Hardware Abstraction Level). HAL îáåñïå÷èâàåò èçîëÿöèþ ïðèëîæåíèÿ îò äåòàëåé ðåàëèçàöèè îáîðóäîâàíèÿ, îáåñïå÷èâàÿ ïëàòôîðìåííî-íåçàâèñèìûé ïðÿìîé äîñòóï ê îáîðóäîâàíèþ. Ñïåöèàëüíàÿ ñõåìà ïðèîðèòåòîâ. Âñå ïðèîðèòåòû ðàçäåëåíû íà äâå ãðóïïû: 1. Êëàññ äèíàìè÷åñêèõ ïðèîðèòåòîâ (16): ïðèîðèòåòû îò 0 äî 15 (0 ñàìûé íèçêèé). Ýòè ïðèîðèòåòû äèíàìè÷åñêè ìåíÿþòñÿ ïëàíèðîâùèêîì ïî àëãîðèòìó, áëèçêîìó ê ïðèíÿòîìó â UNIX ñèñòåìàõ (ñì. ðàçäåë 6.1.2). 2. Êëàññ ïðèîðèòåòîâ ðåàëüíîãî âðåìåíè (7): ïðèîðèòåòû 16, 2226, 31. Ýòè ïðèîðèòåòû ôèêñèðîâàíû, çàäà÷è èç ýòîãî êëàññà ïëàíèðóþòñÿ íà îñíîâå ïðèîðèòåòíîé î÷åðåäè è ïîëó÷àþò óïðàâëåíèå ðàíüøå çàäà÷ ñ äèíàìè÷åñêèìè ïðèîðèòåòàìè. 51 8. Îáçîð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè Ïðîñòðàíñòâî ââîäà-âûâîäà äëÿ çàäà÷ èç êëàññà ðåàëüíîãî âðåìåíè íå ó÷àñòâóåò â ñòðàíè÷íîì îáìåíå ìåõàíèçìà âèðòóàëüíîé ïàìÿòè. T Äëÿ çàêðåïëåíèÿ ñòðàíèö çàäà÷è â ïàìÿòè ñóùåñòâóåò ñïåöèàëüíûé ñèñòåìíûé âûçîâ (VirtualLock()). Ïðåäîñòàâëÿþòñÿ îáúåêòû ñèíõðîíèçàöèè: êðèòè÷åñêèå ñåêöèè, òàéìåðû, ñîáûòèÿ, mutex, . . . Àðãóìåíòû "ïðîòèâ"èñïîëüçîâàíèÿ Windows NT â êà÷åñòâå ÎÑÐÂ. ßäðî ñèñòåìû íå preemptive. AF Íåäîñòàòêè ìåõàíèçìà DPC: 1. Âñå ïðîöåäóðû DPC, âûçûâàåìûå îáðàáîò÷èêîì ïðåðûâàíèé, ïîëó÷àþò îäèí è òîò æå ïðèîðèòåò (èç-çà ìàëîãî êîëè÷åñòâà ïðèîðèòåòîâ) è îáðàáàòûâàþòñÿ ïëàíèðîâùèêîì â ïîðÿäêå ïîñòóïëåíèÿ (FIFO). Òåì ñàìûì íèçêîïðèîðèòåòíûå ïðåðûâàíèÿ áóäóò îáðàáàòûâàòüñÿ ðàíåå âûñîêîïðèîðèòåòíûõ, íî ïîñòóïèâøèõ ïîçäíåå. 2. Ñèñòåìà íå äàåò âîçìîæíîñòè óçíàòü, ñêîëüêî DPC ñòîèò â î÷åðåäè, ïîýòîìó íåëüçÿ óçíàòü, êîãäà íà÷íåò îáðàáàòûâàòüñÿ ïðåðûâàíèå. Òàêèì îáðàçîì, ñóùåñòâóåò ñëó÷àéíàÿ çàäåðæêà ìåæäó ïðèõîäîì ïðåðûâàíèÿ è íà÷àëîì åãî îáðàáîòêè. Îòìåòèì, ÷òî äëÿ òàêèõ áûñòðîäåéñòâóþùèõ óñòðîéñòâ, êàê äèñêîâûå è ñåòåâûå êîíòðîëëåðû, çàäåðæêà â íåñêîëüêî ìèëëèñåêóíä ìîæåò îêàçàòüñÿ êðèòè÷åñêîé. 3. Äëÿ êàæäîãî ïðåðûâàíèÿ òîëüêî îäèí ýêçåìïëÿð DPC ìîæåò áûòü â î÷åðåäè. Ñëåäîâàòåëüíî, ïðîöåäóðà DPC äîëæíà óìåòü îáðàáàòûâàòü ïîâòîðÿþùèåñÿ ïðåðûâàíèÿ, à îáîðóäîâàíèå äîëæíî óìåòü áóôåðèçèðîâàòü ïðåðûâàíèÿ âî èçáåæàíèå ïîòåðè äàííûõ. Ýòî óäîðîæàåò êàê äðàéâåðû óñòðîéñòâ, òàê è îáîðóäîâàíèå. Îòìåòèì, ÷òî íåñìîòðÿ íà íåäîñòàòêè DPC, Windows NT âûíóæäåíà âûíîñèòü îáðàáîòêó ïðåðûâàíèé èç ISR â DPC, ïîñêîëüêó âî âðåìÿ ISR âñå ïðåðûâàíèÿ çàïðåùåíû è èõ ìîæíî ïîòåðÿòü. DR 52 Ìàëîå êîëè÷åñòâî ïðèîðèòåòîâ â êëàññå ðåàëüíîãî âðåìåíè (7) ïðèâîäèò ê òîìó, ÷òî ìíîãî çàäà÷ áóäóò èìåòü îäèíàêîâûé ïðèîðèòåò è ïëàíèðîâàòüñÿ àëãîðèòìîì òèïà round robin. Ñëåäîâàòåëüíî, âðåìÿ äî íà÷àëà èñïîëíåíèÿ çàäà÷è áóäåò ñëó÷àéíîé âåëè÷èíîé (çàâèñèò îò òåêóùåé çàãðóæåííîñòè ñèñòåìû). Íå ðåøåíà ïðîáëåìà èíâåðñèè ïðèîðèòåòîâ (ñì. ðàçäåë 6.1.1). Âìåñòî òðàäèöèîííîãî äëÿ ÎÑРìåõàíèçìà íàñëåäîâàíèÿ ïðèîðèòåòîâ (ñì. ðàçäåë 6.1.1) Windows NT íàçíà÷àåò çàäà÷å, èç-çà íèçêîïðèîðèòåòíîñòè ïðîñòàèâàþùåé â òå÷åíèå íåêîòîðîãî ïåðèîäà âðåìåíè, ñëó÷àéíûé óðîâåíü ïðèîðèòåòà, ïîçâîëÿþùèé åé íà÷àòü ðàáîòó. Ýòî íåïðåäñêàçóåìî è íåïðèåìëåìî äëÿ ÎÑÐÂ. Ïîñêîëüêó ïðèîðèòåò çàäà÷ êëàññà ðåàëüíîãî âðåìåíè íå ìåíÿåòñÿ, òî ýòîò ìåõàíèçì äåéñòâóåò òîëüêî íà çàäà÷è èç äèíàìè÷åñêîãî êëàññà. Òåì ñàìûì ñèòóàöèÿ òîëüêî óõóäøàåòñÿ: ïðèîðèòåò íèçêîïðèîðèòåòíûõ çàäà÷ ðåàëüíîãî âðåìåíè íå ìåíÿåòñÿ, à âûñîêîïðèîðèòåòíûå çàäà÷è ìîãóò áûòü âûòåñíåíû ñîâñåì íèçêîïðèîðèòåòíûìè çàäà÷àìè èç äèíàìè÷åñêîãî êëàññà. Âûñîêîïðèîðèòåòíûå çàäà÷è ìîãóò áëîêèðîâàòüñÿ íèçêîïðèîðèòåòíûìè. Äåëî â òîì, ÷òî ïðèîðèòåòû çàäà÷ èç êëàññà ðåàëüíîãî âðåìåíè âñå-òàêè ìîãóò ìåíÿòñÿ. Íåêîòîðûå êîìïîíåíòû ÿäðà ðàáîòàþò íà óðîâíå ïðèîðèòåòà äèíàìè÷åñêîãî êëàññà. Ñëåäîâàòåëüíî, íåêîòîðûå ñèñòåìíûå âûçîâû ïðèâîäÿò ê ïîíèæåíèþ ïðèîðèòåòà è âûâîäó çàäà÷è èç êëàññà ðåàëüíîãî âðåìåíè. Ïðè ýòîì îíà ìîæåò áûòü çàáëîêèðîâàíà äðóãîé çàäà÷åé, èìåâøåé äî ýòîãî áîëåå íèçêèé ïðèîðèòåò. 8.5. Ñèñòåìû íà îñíîâå Windows NT (Microsoft) Âñå ñòðàíèöû íåàêòèâíîãî ïðîöåññà (íàïðèìåð, îæèäàþùåãî äàííûõ), ìîãóò áûòü ïåðåíåñåíû íà äèñê, íåñìîòðÿ íà çàêðåïëåíèå èõ âûçîâîì VirtualLock(). Ýòî ïðèâîäèò ê ñëó÷àéíûì çàäåðæêàì ïðè àêòèâèçàöèè ïðîöåññà (íàïðèìåð, ïðè ïîñòóïëåíèè îæèäàâøèõñÿ äàííûõ). T Äëÿ Windows NT îôèöèàëüíî íå ïðèâîäÿòñÿ âðåìåíà ñèñòåìíûõ âûçîâîâ è âðåìåíà áëîêèðîâàíèÿ ïðåðûâàíèé. Ñèñòåìó íåâîçìîæíî èñïîëüçîâàòü áåç äèñïëåÿ è êëàâèàòóðû. Ñèñòåìà ïðåäúÿâëÿåò ñëèøêîì áîëüøèå äëÿ ÎÑРçàïðîñû íà ïàìÿòü. AF Äëÿ óñòðàíåíèÿ ýòèõ íåäîñòàòêîâ ðÿä êîìïàíèé ïðåäëàãàåò ïðîãðàììíûå (àïïàðàòíûå) ñðåäñòâà. Îñíîâíûå èäåè èõ ïîñòðîåíèÿ òå æå, ÷òî è äëÿ Linux. Ïîñêîëüêó èñõîäíûé êîä ñèñòåìû íåäîñòóïåí, òî, â îòëè÷èå îò Linux, ñóùåñòâóåò òîëüêî îäèí ñïîñîá ïðèñïîñîáèòü ñèñòåìó ê òðåáîâàíèÿì ðåàëüíîãî âðåìåíè: ðàçðàáîòàòü ìèêðîÿäðî, îáåñïå÷èâàþùåå íàäëåæàùåå ïëàíèðîâàíèå çàäà÷ è äèñïåò÷åðèçàöèþ ïðåðûâàíèé, à Window NT âûïîëíÿòü êàê ïðîöåññ. 8.5.1. Hyperkernel Ñèñòåìà Hyperkernel âûïóñêàåòñÿ ôèðìîé Nematron. Ïðåäñòàâëÿåò ñîáîé ÿäðî, îáåñïå÷èâàþùåå äåòåðìèíèñòè÷íîå ïëàíèðîâàíèå è ðàáîòàþùåå íà óðîâíå ïðèâèëåãèé 0 ïðîöåññîðà Intel 80x86 âìåñòå ñ Windows NT. Çàäà÷è Hyperkernel íå âèäíû Windows NT. Äëÿ íèõ îïðåäåëåíû 8 óðîâíåé ïðèîðèòåòîâ ñ preemptive ïëàíèðîâàíèåì.  êà÷åñòâå ñðåäñòâà ðàçðàáîòêè èñïîëüçóþòñÿ ñòàíäàðòíûå äëÿ Windows NT êîìïèëÿòîðû Visual C/C++ è ñïåöèàëüíûå áèáëèîòåêè. Èñïîëüçóåòñÿ API Win32 è ñòàíäàðòíûé HAL. Ðàçðåøåíèå òàéìåðà: 1 ìèêðîñåêóíäà, ìèíèìàëüíûé êâàíò âðåìåíè 20 ìèêðîñåêóíä. Âðåìÿ çàäåðæêè ðåàêöèè íà ïðåðûâàíèå: 5 ìèêðîñåêóíä, ïåðåêëþ÷åíèå êîíòåêñòà 4 ìèêðîñåêóíäû íà Intel Pentium 133Mhz. 8.5.2. LP RT-Technology Ñèñòåìà LP RT-Technology âûïóñêàåòñÿ ôèðìîé LP Elektronik GmbH è âêëþ÷àåò òðè êîìïîíåíòû. DR 1. Ïëàòó äëÿ øèíû ISA, îáåñïå÷èâàþùóþ 7 äîïîëíèòåëüíûõ óðîâíåé ïðåðûâàíèé. Äëÿ âçàèìîäåéñòâèÿ ñ îñòàëüíîé ñèñòåìîé ïëàòà èñïîëüçóåò NMI íåìàñêèðóåìîå ïðåðûâàíèå ïðîöåññîðà Intel 80x86. 2. LP-RTWin Toolkit êîìïëåêò ðàçðàáîò÷èêà ISR, èñïîëüçóåìûé ñîâìåñòíî ñ Visual C/C++ è îòëàä÷èêîì SoftICE ôèðìû NuMega. 3. LP-VxWin RTAcc ïðîãðàììíûé êîìïëåêñ, îáåñïå÷èâàþùèé ñîñóùåñòâîâàíèå Windows NT è VxWorks íà îäíîì PC. Äâå îïåðàöèîííûå ñèñòåìû âçàèìîäåéñòâóþò ïîñðåäñòâîì ïðîòîêîëà TCP/IP ÷åðåç ðàçäåëÿåìóþ ïàìÿòü.  êà÷åñòâå ñðåäñòâà ðàçðàáîòêè èñïîëüçóåòñÿ Tornado êîìïëåêò ðàçðàáîò÷èêà äëÿ VxWorks. 8.5.3. Realtime ETS Kernel Ñèñòåìà Realtime ETS Kernel âûïóñêàåòñÿ ôèðìîé Phar Lap SoftWare â äâóõ âàðèàíòàõ. 1. TNT Embedded ToolSuite, Realtime Edition, âêëþ÷àþùèé: Realtime ETS Kernel, ETS TCP/IP, îòëàä÷èê CodeView ñ ïîääåðæêîé Borland Turbo Debugger àññåìáëåð 386ASM, linker, ïîääåðæêó êîìïèëÿòîðîâ Visual C/C++, Borland C/C++, Watcom C/C++ è API Win32. 2. Realtime ETS Kernel ïîëíàÿ çàìåíà Windows NT, âêëþ÷àåò: êîìïàêòíîå ÿäðî (28Kb), ïîääåðæèâàþùåå Win32 API è èñïîëüçóþùåå ñòàíäàðòíûå áèáëèîòåêè êîìïèëÿòîðîâ; ÿäðî èìååò 32 óðîâíÿ ïðèîðèòåòîâ è ìîæåò áûòü çàïèñàíî â ÏÇÓ. 53 9. ßçûêè ðàçðàáîòêè äëÿ ñèñòåì ðåàëüíîãî âðåìåíè 8.5.4. Component Integrator T Ñèñòåìà Component Integrator âûïóñêàåòñÿ ôèðìîé VenturCom, Inc.  îòëè÷èå îò ïðåäûäóùèõ ñèñòåì, çäåñü íå ââîäèòñÿ íîâîå ÿäðî, à ïðåäëàãàþòñÿ ïàêåòû, ðàñøèðÿþùèå ðÿä óçêèõ ìåñò Windows NT. 1. Embedded Component Kit (ECK), âêëþ÷àþùèé: ïîääåðæêó ðàáîòû áåç äèñïëåÿ è êëàâèàòóðû, óìåíüøåíèå ïîòðåáíîñòè â ïàìÿòè, îòêëþ÷åíèå ñòðàíè÷íîãî îáìåíà, ïîääåðæêó ôëåø-ïàìÿòè (âîçìîæíîñòü çàãðóçêè ñ ôëåø-ïàìÿòè îáúåìîì 10Mb) è øèíû VME. AF 2. Real-time Extension (RTX), âêëþ÷àþùèé: ïîääåðæêó òàéìåðîâ (ðàçðåøåíèå 1 ìèêðîñåêóíäà, ìèíèìàëüíûé êâàíò âðåìåíè 100 ìèêðîñåêóíä), îòêëþ÷åíèå âèðòóàëüíîé ïàìÿòè, ðàáîòà ñ ôèçè÷åñêîé ïàìÿòüþ (ò.å. òîæäåñòâåííîå îòîáðàæåíèå âèðòóàëüíîé ïàìÿòè íà ôèçè÷åñêóþ), 128 íîâûõ óðîâíåé ïðèâèëåãèé. Âðåìÿ çàäåðæêè ðåàêöèè íà ïðåðûâàíèå: 520 ìèêðîñåêóíä, 8.5.5. Willows RT Ñèñòåìà Willows RT âûïóñêàåòñÿ ôèðìîé Willows SoftWare, Inc.  îòëè÷èå îò ïðåäûäóùèõ ñèñòåì, çäåñü ïðèëîæåíèå âîîáùå íå áóäåò çàïóñêàòüñÿ â Window NT. Windows NT èñïîëüçóåòñÿ òîëüêî êàê ïëàòôîðìà ðàçðàáîòêè, ïðèëîæåíèå æå áóäåò ðàáîòàòü ïîä óïðàâëåíèåì íàñòîÿùåé ÎÑР(QNX, VxWorks, . . . ). Ñèñòåìà ñîñòîèò èç òðåõ ÷àñòåé. 1. Áèáëèîòåêè TWIN32 è TWIN16, çàìåíÿþùèå áèáëèîòåêè Microsoft è ðåàëèçóþùèå API. 2. TWIN Platform Abstraction Layer, ÿäðî, îáåñïå÷èâàþùåå ñèñòåìíûå âûçîâû Microsoft. 3. TWIN Binary Interface, îáåñïå÷èâàþùèé òðàíñëÿöèþ âûçîâîâ Platform Abstraction Layer â API èñïîëüçóåìîé ÎÑÐÂ. 9. ßçûêè ðàçðàáîòêè äëÿ ñèñòåì ðåàëüíîãî âðåìåíè DR Îñíîâíûìè êðèòåðèÿìè ïðè âûáîðå ÿçûêà äëÿ ðàçðàáîòêè ïðèëîæåíèÿ ðåàëüíîãî âðåìåíè ÿâëÿþòñÿ: 1. Ïîëó÷åíèå íàèâûñøåé ïðîèçâîäèòåëüíîñòè ïðèëîæåíèÿ ðåàëüíîãî âðåìåíè. Èç ýòîãî òðåáîâàíèÿ êàê ïðàâèëî âûòåêàåò, ÷òî ÿçûê äîëæåí áûòü êîìïèëèðóåìîãî (êàê C, C++), à íå èíòåðïðåòèðóåìîãî (êàê Java) òèïà, è äëÿ íåãî äîëæåí ñóùåñòâîâàòü êîìïèëÿòîð ñ âûñîêîé ñòåïåíüþ îïòèìèçàöèè êîäà. Îòìåòèì, ÷òî äëÿ ñîâðåìåííûõ ïðîöåññîðîâ êà÷åñòâî êîìïèëÿòîðà îñîáåííî âàæíî, ïîñêîëüêó äëÿ íèõ îïòèìèçàöèÿ ìîæåò óñêîðÿòü ðàáîòó ïðîãðàììû â íåñêîëüêî ðàç ïî ñðàâíåíèþ ñ íåîïòèìèçèðîâàííûì âàðèàíòîì, ïðè÷åì ÷àñòî îïòèìèçèðóþùèé êîìïèëÿòîð ìîæåò ïîðîäèòü êîä áîëåå áûñòðûé, ÷åì íàïèñàííûé íà àññåìáëåðå ÷åëîâåêîì. Òåõíîëîãèè îïòèìèçàöèè ðàçâèâàþòñÿ äîñòàòî÷íî ìåäëåííî è ÷àñòî òðåáóþòñÿ ãîäû íà ðàçðàáîòêó âûñîêîýôôåêòèâíîãî êîìïèëÿòîðà. Ïîýòîìó îáû÷íî äëÿ áîëåå ñòàðûõ è ñ áîëåå ïðîñòîé ñòðóêòóðîé ÿçûêîâ èìåþòñÿ áîëåå êà÷åñòâåííûå êîìïèëÿòîðû, ÷åì äëÿ äîñòàòî÷íî ìîëîäûõ è ñëîæíî óñòðîåííûõ ÿçûêîâ. 2. Ïîëó÷åíèå äîñòóïà ê ðåñóðñàì îáîðóäîâàíèÿ ëèáî ïîñðåäñòâîì ÿçûêîâûõ êîíñòðóêöèé, ëèáî ïîñðåäñòâîì èìåþùèõñÿ äëÿ âûáðàííîãî ÿçûêà áèáëèîòå÷íûõ ôóíêöèé. 3. Âîçìîæíîñòü âûçîâà ïðîöåäóð, íàïèñàííûõ íà äðóãîì ÿçûêå, íàïðèìåð, íà ÿçûêå àññåìáëåðà. Èç ýòîãî òðåáîâàíèÿ âûòåêàåò, ÷òî ïîñëåäîâàòåëüíîñòü âûçîâà ïîäïðîãðàìì (ìåõàíèçì èìåíîâàíèÿ îáúåêòîâ, ïåðåäà÷è àðãóìåíòîâ è ïîëó÷åíèÿ âîçâðàùàåìîãî çíà÷åíèÿ) äîëæíà áûòü äîêóìåíòèðîâàíà äëÿ âûáðàííîãî ÿçûêà. 54 9. ßçûêè ðàçðàáîòêè äëÿ ñèñòåì ðåàëüíîãî âðåìåíè T 4. Ïåðåíîñèìîñòü ïðèëîæåíèÿ, ïîä êîòîðîé îáû÷íî ïîíèìàþò êàê âîçìîæíîñòü åãî ñêîìïèëèðîâàòü äðóãèì êîìïèëÿòîðîì, èìåþùèìñÿ íà òîé æå ïëàòôîðìå, òàê è âîçìîæíîñòü åãî ñêîìïèëèðîâàòü íà äðóãîé ïëàòôîðìå è/èëè äðóãîé îïåðàöèîííîé ñèñòåìå. 5. Ïîääåðæêà îáúåêòíî-îðèåíòèðîâàííîãî ïîäõîäà ñòàëà â ïîñëåäíåå âðåìÿ íåîáõîäèìîñòüþ, çà÷àñòóþ âûõîäÿ â ñïèñêå òðåáîâàíèé íà ïåðâîå ìåñòî. Ýòî îáúÿñíÿåò èñïîëüçîâàíèå ÿçûêà Java â ÎÑÐÂ. ×àñòî ïîìèìî ïåðå÷èñëåííûõ âûøå òåõíè÷åñêèõ òðåáîâàíèé âûáîð ÿçûêà ðàçðàáîòêè äèêòóåòñÿ îðãàíèçàöèîííî-ôèíàíñîâûìè ìîòèâàìè: AF 1. Âûáèðàòü ïðèõîäèòüñÿ èç ñïèñêà ïîääåðæèâàåìûõ ÿçûêîâ, êîòîðûìè îáû÷íî ÿâëÿþòñÿ C è C++. Ó ïîñòàâùèêà ÎÑРáûâàåò ìîæíî çàêàçàòü ïîääåðæêó íîâîãî ÿçûêà, íî ýòî áóäåò ñòîèòü î÷åíü äîðîãî. 2. Âûáîð ÿçûêà ìîæåò äèêòîâàòüñÿ íàëè÷èåì çíà÷èòåëüíî îáúåìà ïðîãðàììíîãî îáåñïå÷åíèÿ íà ýòîì ÿçûêå. Îáû÷íî ôèðìà-ðàçðàáîò÷èê ÏÎ (ïðîãðàììíîãî îáåñïå÷åíèÿ) óæå èìååò àðõèâ ïðåäûäóùèõ ðàçðàáîòîê, è ÿçûê, íà êîòîðîì îíè íàïèñàíû, äèêòóåò â ýòîì ñëó÷àå ÿçûê äëÿ íîâûõ ðàçðàáîòîê. 3. Âûáîð ÿçûêà ìîæåò äèêòîâàòüñÿ îòðàñëåâûì ñòàíäàðòîì â òîé îáëàñòè, äëÿ êîòîðîé ïèøåòñÿ ïðèëîæåíèå. Íàïðèìåð, äëÿ ðàçðàáîòîê â âîåííîé îáëàñòè â ÑØÀ ïðèíÿò ÿçûê Ada, è âñå ÏÎ äëÿ ýòîé ñôåðû ïèøåòñÿ íà ýòîì ÿçûêå. Îñíîâíûå ÿçûêè ðàçðàáîòêè äëÿ ÎÑÐÂ: C. Îáåñïå÷èâàåò ïîëó÷åíèå âûñîêîé ïðîèçâîäèòåëüíîñòè çà ñ÷åò õîðîøî ðàçðàáîòàííûõ îïòèìèçèðóþùèõ êîìïèëÿòîðîâ, êîòîðûå äëÿ ñîâðåìåííûõ ïðîöåññîðîâ ÷àñòî äàþò êîä áîëåå ýôôåêòèâíûé, ÷åì íàïèñàííûé íà àññåìáëåðå. ßçûê C äàåò ïðÿìîé äîñòóï ê îáîðóäîâàíèþ è âîçìîæíîñòü âûçîâà ïðîöåäóð íà äðóãèõ ÿçûêàõ. Ïðèëîæåíèÿ ïîëó÷àþòñÿ ïåðåíîñèìûìè (îñîáåííî, åñëè ÎÑРïîääåðæèâàþò îäèíàêîâûé ñòàíäàðò, íàïðèìåð POSIX), îäíàêî, îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä íà óðîâíå ÿçûêîâûõ êîíñòðóêöèé îòñóòñòâóåò. DR Àññåìáëåð. Îáåñïå÷èâàåò ïîëó÷åíèå íàèâûñøåé ïðîèçâîäèòåëüíîñòè, ïðÿìîé äîñòóï ê îáîðóäîâàíèþ, âîçìîæíîñòü âûçîâà ëþáûõ ïðîöåäóð íà äðóãèõ ÿçûêàõ. Îäíàêî, ïðèëîæåíèÿ ïîëó÷àþòñÿ íå ïåðåíîñèìûìè, îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä îòñóòñòâóåò. Îáû÷íî àññåìáëåð èñïîëüçóåòñÿ òîëüêî äëÿ íàïèñàíèÿ íåáîëüøèõ è ÷åòêî ëîêàëèçîâàííûõ ôðàãìåíòîâ ïðèëîæåíèÿ, òàêèõ, êàê îáðàáîò÷èêè ïðåðûâàíèé, äðàéâåðû óñòðîéñòâ, êðèòè÷åñêèå ïî âðåìåíè èñïîëíåíèÿ ñåêöèè. C++. Java. Ada. Âêëþ÷àåò ÿçûê C êàê ïîäìíîæåñòâî è íàñëåäóåò âñå åãî ïîëîæèòåëüíûå êà÷åñòâà. C++ äîáàâëÿåò ïîääåðæêó îáúåêòíî-îðèåíòèðîâàííîãî ïîäõîäà íà óðîâíå ÿçûêîâûõ êîíñòðóêöèé. Êàê ÿçûê èíòåðïðåòèðóåìîãî òèïà, èìååò î÷åíü íèçêóþ ýôôåêòèâíîñòü ïîëó÷àåìîãî êîäà. Äîñòóï îáîðóäîâàíèþ è âûçîâû ïðîöåäóð íà äðóãèõ ÿçûêàõ òîëüêî ïîñðåäñòâîì áèáëèîòå÷íûõ ôóíêöèé (îáû÷íî íàïèñàííûõ íà C). Java îáåñïå÷èâàåò íàèâûñøóþ ïåðåíîñèìîñòü ïðèëîæåíèÿ íà óðîâíå äâîè÷íîãî êîäà, è ÿâëÿåòñÿ îáúåêòíîîðèåíòèðîâàííûì ÿçûêîì. ßçûê Ada ðàçðàáàòûâàëñÿ (â 19751979ãã.) ñïåöèàëüíî äëÿ ïðèìåíåíèÿ âî âñòðàèâàåìûõ ñèñòåìàõ è ñèñòåìàõ ðåàëüíîãî âðåìåíè ìèíèñòåðñòâà îáîðîíû ÑØÀ. Îáåñïå÷èâàåò ïîëó÷åíèå âûñîêîé ïðîèçâîäèòåëüíîñòè çà ñ÷åò õîðîøî ðàçðàáîòàííûõ îïòèìèçèðóþùèõ êîìïèëÿòîðîâ. ßçûê Ada äàåò ïðÿìîé äîñòóï ê îáîðóäîâàíèþ è âîçìîæíîñòü âûçîâà ïðîöåäóð íà äðóãèõ ÿçûêàõ (÷òî, îäíàêî, íå ïðèâåòñòâóåòñÿ ñòàíäàðòîì). Ïðèëîæåíèÿ ïîëó÷àþòñÿ ïåðåíîñèìûìè çà ñ÷åò åæåãîäíîé àòòåñòàöèè êîìïèëÿòîðîâ íà 55 11. Àðõèòåêòóðû ïðîöåññîðîâ ßçûêè ÷åòâåðòîãî ïîêîëåíèÿ (CASE ñðåäñòâà). Ñðåäñòâà CASE (Computer Aided Software Engenering) ïîëó÷èëè øèðîêîå ðàñïðîñòðàíåíèå ïðè ðàçðàáîòêå ïðèëîæåíèé ðåàëüíîãî âðåìåíè â ñèëó áîëüøîé ñëîæíîñòè ïîñëåäíèõ. ßçûêè ÷åòâåðòîãî ïîêîëåíèÿ ïðåäñòàâëÿþò ñîáîé ôîðìàëèçîâàííûé ñïîñîá îïèñàíèÿ îáúåêòîâ, èõ ñâîéñòâ è âçàèìîîòíîøåíèé ìåæäó ñîáîé. Ïî ýòîìó ôîðìàëüíîìó îïèñàíèþ êîìïèëÿòîð ñòðîèò òåêñò ïðèëîæåíèÿ íà ÿçûêå áîëåå íèçêîãî óðîâíÿ (îáû÷íî ïðåäîñòàâëÿåòñÿ âûáîð ìåæäó C/C++/Java). Çàòåì ýòîò òåêñò ìîæíî ñêîìïèëèðîâàòü óæå îáû÷íûì êîìïèëÿòîðîì. Ïîñêîëüêó ìîæíî äîáàâëÿòü ôðàãìåíòû íà ÿçûêå áîëåå íèçêîãî óðîâíÿ, òî CASE ñðåäñòâà íàñëåäóþò âñå ïîëîæèòåëüíûå ñâîéñòâà ïîñëåäíåãî. AF T óäîâëåòâîðåíèå ñòàíäàðòó. Îäíàêî, îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä íà óðîâíå ÿçûêîâûõ êîíñòðóêöèé îòñóòñòâóåò. 10. Ñðåäû ðàçðàáîòêè äëÿ ñèñòåì ðåàëüíîãî âðåìåíè Ê ñðåäàì ðàçðàáîòêè â ñèñòåìàõ ðåàëüíîãî âðåìåíè óäåëÿþò çíà÷èòåëüíî áîëüøå âíèìàíèÿ, ÷åì â îáû÷íûõ ñèñòåìàõ. Ýòî ñâÿçàíî êàê ñî ñëîæíîñòüþ è îòâåòñòâåííîñòüþ ðàçðàáàòûâàåìûõ ïðèëîæåíèé, òàê è ñî ñëîæíîñòüþ ìîäåëè ðàçðàáîòêè, êîãäà ïëàòôîðìà, ãäå ðàçðàáàòûâàåòñÿ ïðèëîæåíèå, îòëè÷àåòñÿ îò ïëàòôîðìû, ãäå îíî çàïóñêàåòñÿ. Îñíîâíûå òðåáîâàíèÿ ê ñðåäàì ðàçðàáîòêè äëÿ ÎÑÐÂ: 1. Ïîääåðæêà âûáðàííîãî ÿçûêà ïðîãðàììèðîâàíèÿ. 2. Îáåñïå÷åíèå ñîâìåñòíîé ðàáîòû êîëëåêòèâà ðàçðàáîò÷èêîâ íàä îäíèì ïðîåêòîì. 3. Îáåñïå÷åíèå óïðàâëåíèÿ ïðîåêòîì: äîáàâëåíèå/óäàëåíèå ôàéëîâ ñ àâòîìàòè÷åñêîé ãåíåðàöèåé makefile-îâ, êîíòðîëü âåðñèé, âåäåíèå íåñêîëüêèõ êîíôèãóðàöèé. 4. Îáåñïå÷åíèå ðàçðàáîòêè äëÿ íåñêîëüêèõ ïëàòôîðì: ðàçäåëåíèå ðåçóëüòàòîâ òðàíñëÿöèè îäíîãî ïðèëîæåíèÿ äëÿ ðàçíûõ öåëåâûõ ñèñòåì. DR 5. Ïîääåðæêà çàïóñêà è îòëàäêè ïðèëîæåíèé (íàïîìíèì, ÷àñòî ñèñòåìà, ãäå ïðèëîæåíèå çàïóñêàåòñÿ, îòëè÷àåòñÿ îò ñèñòåìû, ãäå îíî ðàçðàáàòûâàåòñÿ). 6. Óïðàâëåíèå äîêóìåíòàöèåé: ñðåäñòâà àâòîìàòè÷åñêîé ãåíåðàöèè äîêóìåíòàöèè è ðàçíîîáðàçíûõ îò÷åòîâ. 7. Âîçìîæíîñòü ïîäêëþ÷åíèÿ âíåøíèõ óòèëèò: âîçìîæíîñòü èñïîëüçîâàíèÿ àëüòåðíàòèâíîãî ðåäàêòîðà, êîìïèëÿòîðà, îòëàä÷èêà, ñðåäñòâà êîíòðîëÿ âåðñèé è ò.ä. Ýòî ïîçâîëÿåò èñïîëüçîâàòü îäíó è òó æå ñðåäó ðàçðàáîòêè íà ðàçíûõ ïëàòôîðìàõ. 11. Àðõèòåêòóðû ïðîöåññîðîâ Ðàññìîòðèì àðõèòåêòóðû îñíîâíûõ ïðîöåññîðîâ, ïðèìåíÿåìûõ â ÎÑÐÂ. 11.1. Îñíîâíûå ÷åðòû àðõèòåêòóðû è èõ âëèÿíèå íà ñèñòåìû ðåàëüíîãî âðåìåíè Ðàññìîòðèì îñíîâíûå ïóòè, êîòîðûìè ðàçðàáîò÷èêè ïðîöåññîðîâ ïûòàþòñÿ ïîâûñèòü èõ ïðîèçâîäèòåëüíîñòü è òî, êàê ýòî âëèÿåò íà ñèñòåìû ðåàëüíîãî âðåìåíè. 56 11.1. Îñíîâíûå ÷åðòû àðõèòåêòóðû è èõ âëèÿíèå íà ñèñòåìû ðåàëüíîãî âðåìåíè 11.1.1. CISC è RISC ïðîöåññîðû F F I C T I C T Îñíîâíîé âðåìåííîé õàðàêòåðèñòèêîé äëÿ ïðîöåññîðà ÿâëÿåòñÿ âðåìÿ öèêëà, ðàâíîå 1= , ãäå òàêòîâàÿ ÷àñòîòà ïðîöåññîðà. Âðåìÿ, çàòðà÷èâàåìîå ïðîöåññîðîì íà çàäà÷ó, ìîæåò áûòü âû÷èñëåíî ïî ôîðìóëå , ãäå ÷èñëî öèêëîâ íà îäíó èíñòðóêöèþ, âðåìÿ íà îäèí öèêë, ÷èñëî èíñòðóêöèé íà çàäà÷ó. Ðàçðàáîò÷èêè êëàññè÷åñêèõ ñèñòåì (êîòîðûå òåïåðü íàçûâàþò CISC (Complete Instruction Set Computer)) ñòðåìèëèñü óìåíüøèòü ôàêòîð .  ïðîöåññîðàõ ðåàëèçîâûâàëèñü âñå áîëåå ñëîæíûå èíñòðóêöèè, äëÿ âûïîëíåíèÿ êîòîðûõ âíóòðè íåãî ñàìîãî çàïóñêàëèñü ñïåöèàëüíûå ïðîöåäóðû (òàê íàçûâàåìûé ìèêðîêîä), çàãðóæàåìûå èç ÏÇÓ âíóòðè ïðîöåññîðà. Ýòîìó ïóòè ñïîñîáñòâîâàëî òî, ÷òî óëó÷øåíèÿ â òåõíèêå ïðîèçâîäñòâà ïîëóïðîâîäíèêîâ äåëàëè âîçìîæíûì ðåàëèçàöèþ âñå áîëåå ñëîæíûõ èíòåãðèðîâàííûõ öåïåé. Îäíàêî, íà ýòîì ïóòè î÷åíü òðóäíî óìåíüøèòü äâà äðóãèõ ôàêòîðà: ïîñêîëüêó èíñòðóêöèè ñëîæíûå è òðåáóþò ïðîãðàììíîãî äåêîäèðîâàíèÿ è â ñèëó àïïàðàòíîé ñëîæíîñòè. Êîíöåïöèÿ RISC (Reduced Instruction Set Computer) âîçíèêëà èç ñòàòèñòè÷åñêîãî àíàëèçà òîãî, êàê ïðîãðàììíîå îáåñïå÷åíèå èñïîëüçóåò ðåñóðñû ïðîöåññîðà. Èññëåäîâàíèÿ ñèñòåìíûõ ÿäåð è îáúåêòíûõ ìîäóëåé, ïîðîæäåííûõ îïòèìèçèðóþùèìè êîìïèëÿòîðàìè, ïîêàçàëè ïîäàâëÿþùåå äîìèíèðîâàíèå ïðîñòåéøèõ èíñòðóêöèé äàæå â êîäå äëÿ CISC ìàøèí. Ñëîæíûå èíñòðóêöèè èñïîëüçóþòñÿ ðåäêî, ïîñêîëüêó ìèêðîêîä îáû÷íî íå ñîäåðæèò â òî÷íîñòè òå ïðîöåäóðû, êîòîðûå íóæíû äëÿ ïîääåðæêè ðàçëè÷íûõ ÿçûêîâ âûñîêîãî óðîâíÿ è ñðåä èñïîëíåíèÿ ïðîãðàìì. Ïîýòîìó ðàçðàáîò÷èêè RISC ïðîöåññîðîâ óáðàëè ðåàëèçîâàííûå â ìèêðîêîäå ïðîöåäóðû è ïåðåäàëè ïðîãðàììíîìó îáåñïå÷åíèþ íèçêîóðîâíåâîå óïðàâëåíèå ìàøèíîé. Ýòî ïîçâîëèëî çàìåíèòü ïðîöåññîðíûé ìèêðîêîä â ÏÇÓ íà ïîäïðîãðàììó â áîëåå áûñòðîé ÎÇÓ. Ðàçðàáîò÷èêè RISC ïðîöåññîðîâ óëó÷øèëè ïðîèçâîäèòåëüíîñòü çà ñ÷åò óìåíüøåíèÿ äâóõ ôàêòîðîâ: (çà èñïîëüçîâàíèÿ òîëüêî ïðîñòûõ èíñòðóêöèé) è (çà ñ÷åò óïðîùåíèÿ ïðîöåññîðà). Îäíàêî, èçìåíåíèÿ, âíåñåííûå äëÿ óìåíüøåíèÿ ÷èñëà öèêëîâ íà èíñòðóêöèþ è âðåìåíè íà öèêë, èìåþò òåíäåíöèþ ê óâåëè÷åíèþ ÷èñëà èíñòðóêöèé íà çàäà÷ó. Ýòîò ìîìåíò áûë â öåíòðå âíèìàíèÿ êðèòèêîâ RISC àðõèòåêòóðû. Îäíàêî, èñïîëüçîâàíèå îïòèìèçèðóþùèõ êîìïèëÿòîðîâ è äðóãèõ òåõíè÷åñêèõ ïðèåìîâ, ïðàêòè÷åñêè ëèêâèäèðóåò ýòó ïðîáëåìó. T I C C AF T T DR 11.1.2. Îñíîâíûå ÷åðòû RISC àðõèòåêòóðû Ó RISC ïðîöåññîðà âñå èíñòðóêöèè èìåþò îäèíàêîâûé ôîðìàò è ñîñòîÿò èç áèòîâûõ ïîëåé, îïðåäåëÿþùèõ êîä èíñòðóêöèè è èäåíòèôèöèðóþùèõ åå îïåðàíäû.  ñèëó ýòîãî äåêîäèðîâàíèå èíñòðóêöèé ïðîèçâîäèòñÿ àïïàðàòíî, ò.å. ìèêðîêîä íå òðåáóåòñÿ. Ïðè ýòîì â ñèëó îäèíàêîâîãî ñòðîåíèÿ âñåõ èíñòðóêöèé ïðîöåññîð ìîæåò äåêîäèðîâàòü íåñêîëüêî ïîëåé îäíîâðåìåííî äëÿ óñêîðåíèÿ ýòîãî ïðîöåññà. Èíñòðóêöèè, ïðîèçâîäÿùèå îïåðàöèè â ïàìÿòè, îáû÷íî ëèáî óâåëè÷èâàþò âðåìÿ öèêëà, ëèáî ÷èñëî öèêëîâ íà èíñòðóêöèþ. Òàêèå èíñòðóêöèè òðåáóþò äîïîëíèòåëüíîãî âðåìåíè äëÿ ñâîåãî èñïîëíåíèÿ, òàê êàê òðåáóåòñÿ âû÷èñëèòü àäðåñà îïåðàíäîâ, ñ÷èòàòü èõ èç ïàìÿòè, âû÷èñëèòü ðåçóëüòàò îïåðàöèè è çàïèñàòü åãî îáðàòíî â ïàìÿòü. Äëÿ óìåíüøåíèÿ íåãàòèâíîãî âëèÿíèÿ òàêèõ èíñòðóêöèé, ðàçðàáîò÷èêè RISC ïðîöåññîðîâ âûáðàëè àðõèòåêòóðó ÷òåíèå/çàïèñü, â êîòîðîé âñå îïåðàöèè âûïîëíÿþòñÿ íàä îïåðàíäàìè â ðåãèñòðàõ ïðîöåññîðà, à îñíîâíàÿ ïàìÿòü äîñòóïíà òîëüêî ïîñðåäñòâîì èíñòðóêöèé ÷òåíèÿ/çàïèñè. Äëÿ ýôôåêòèâíîñòè ýòîãî ïîäõîäà RISC ïðîöåññîðû èìåþò áîëüøîå êîëè÷åñòâî ðåãèñòðîâ. Àðõèòåêòóðà ÷òåíèå/çàïèñü òàêæå ïîçâîëÿåò óìåíüøèòü êîëè÷åñòâî ðåæèìîâ àäðåñàöèè ïàìÿòè, ÷òî ïîçâîëÿåò óïðîñòèòü äåêîäèðîâàíèå èíñòðóêöèé. Äëÿ CISC àðõèòåêòóð âðåìÿ èñïîëíåíèÿ èíñòðóêöèè îáû÷íî èçìåðÿåòñÿ â ÷èñëå öèêëîâ íà èíñòðóêöèþ. Ðàçðàáîò÷èêè RISC àðõèòåêòóð, îäíàêî, ñòðåìèëèñü ïîëó÷èòü ñêîðîñòü âûïîëíåíèÿ èíñòðóêöèè, ðàâíóþ îäíîé èíñòðóêöèè çà öèêë. Äëÿ RISC ïðîöåññîðà âî ìíîãèõ ñëó÷àÿõ òîëüêî íàëè÷èå îïòèìèçèðóþùåãî êîìïèëÿòîðà ïîçâîëÿåò ðåàëèçîâàòü âñå åãî âîçìîæíîñòè. Îòìåòèì, ÷òî êîìïèëÿòîð ìîæåò íàèëó÷øèì 57 11. Àðõèòåêòóðû ïðîöåññîðîâ 11.1.3. Êîíâåéåðèçàöèÿ T îáðàçîì îïòèìèçèðîâàòü êîä èìåííî äëÿ RISC àðõèòåêòóð (â ñèëó èõ ïðîñòîòû). Ïðîãðàììèðîâàíèå íà ÿçûêå àññåìáëåðà èñ÷åçàåò äëÿ RISC ïðèëîæåíèé, òàê êàê êîìïèëÿòîðû ÿçûêîâ âûñîêîãî óðîâíÿ ìîãóò ïðîèçâîäèòü î÷åíü ñèëüíóþ îïòèìèçàöèþ. DR AF Êîíâåéåðèçàöèÿ ÿâëÿåòñÿ îäíèì èç îñíîâíûõ ñïîñîáîâ ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè ïðîöåññîðà. Êîíâåéåðíûé ïðîöåññîð ïðèíèìàåò íîâóþ èíñòðóêöèþ êàæäûé öèêë äàæå åñëè ïðåäûäóùèå èíñòðóêöèè íå çàâåðøåíû.  ðåçóëüòàòå âûïîëíåíèå íåñêîëüêèõ èíñòðóêöèé ïåðåêðûâàåòñÿ è â ïðîöåññîðå íàõîäÿòñÿ ñðàçó íåñêîëüêî èíñòðóêöèé â ðàçíîé ñòåïåíè ãîòîâíîñòè. Èñïîëíåíèå èíñòðóêöèé ìîæåò áûòü ðàçäåëåíî íà íåñêîëüêî ñòàäèé: âûáîðêà, äåêîäèðîâàíèå, èñïîëíåíèå, çàïèñü ðåçóëüòàòîâ. Êîíâåéåð èíñòðóêöèé ìîæåò óìåíüøèòü ÷èñëî öèêëîâ íà èíñòðóêöèþ ïîñðåäñòâîì îäíîâðåìåííîãî èñïîëíåíèÿ íåñêîëüêèõ èíñòðóêöèé, íàõîäÿùèõñÿ íà ðàçíûõ ñòàäèÿõ. Ïðè ïðàâèëüíîé àïïàðàòíîé ðåàëèçàöèè êîíâåéåð, èìåþùèé n ñòàäèé ìîæåò îäíîâðåìåííî èñïîëíÿòü n ïîñëåäîâàòåëüíûõ èíñòðóêöèé. Íîâàÿ èíñòðóêöèÿ ìîæåò ïðèíèìàòüñÿ ê èñïîëíåíèþ íà êàæäîì öèêëå, è ýôôåêòèâíàÿ ñêîðîñòü èñïîëíåíèÿ, òàêèì îáðàçîì, åñòü îäèí öèêë íà èíñòðóêöèþ. Îäíàêî, ýòî ïðåäïîëàãàåò, ÷òî êîíâåéåð âñåãäà çàïîëíåí ïîëåçíûìè èíñòðóêöèÿìè è íåò çàäåðæåê â ïðîõîæäåíèè èíñòðóêöèé ÷åðåç êîíâåéåð. Óïðàâëåíèå êîíâåéåðîì èíñòðóêöèé òðåáóåò íàäëåæàùåãî ýôôåêòèâíîãî óïðàâëåíèÿ òàêèìè ñîáûòèÿìè, êàê ïåðåõîäû, èñêëþ÷åíèÿ èëè ïðåðûâàíèÿ, êîòîðûå ìîãóò ïîëíîñòüþ íàðóøèòü ïîòîê èíñòðóêöèé. Íàïðèìåð, ðåçóëüòàò óñëîâíîãî ïåðåõîäà èçâåñòåí, òîëüêî êîãäà ýòà èíñòðóêöèÿ áóäåò èñïîëíåíà. Åñëè êîíâåéåð áûë çàïîëíåí èíñòðóêöèÿìè, ñëåäóþùèìè çà èíñòðóêöèåé óñëîâíîãî ïåðåõîäà è ïåðåõîä ñîñòîÿëñÿ, òî âñå ýòè èíñòðóêöèè äîëæíû áûòü âûáðîøåíû èç êîíâåéåðà. Áîëåå òîãî, âíóòðè êîíâåéåðà ìîãóò îêàçàòüñÿ âçàèìîçàâèñèìûå èíñòðóêöèè. Íàïðèìåð, åñëè èíñòðóêöèÿ â ñòàäèè äåêîäèðîâàíèÿ äîëæíà ÷èòàòü èç ÿ÷åéêè ïàìÿòè, çíà÷åíèå êîòîðîé ÿâëÿåòñÿ ðåçóëüòàòîì ðàáîòû èíñòðóêöèè, íàõîäÿùåéñÿ â ñòàäèè èñïîëíåíèÿ, òî êîíâåéåð áóäåò îñòàíîâëåí íà îäèí öèêë, ïîñêîëüêó ýòîò ðåçóëüòàò áóäåò äîñòóïåí òîëüêî ïîñëå ñòàäèè çàïèñè ðåçóëüòàòîâ. Ïîýòîìó êîìïèëÿòîðó íåîáõîäèìî ïåðåóïîðÿäî÷èòü èíñòðóêöèè â ïðîãðàììå òàê, ÷òîáû ïî-âîçìîæíîñòè èçáåæàòü çàâèñèìîñòåé ìåæäó èíñòðóêöèÿìè âíóòðè êîíâåéåðà. Äëÿ óìåíüøåíèÿ âðåìåíè ïðîñòîÿ êîíâåéåðà ïðèìåíÿþò ðÿä ìåð. 58 Òàáëèöà ðåãèñòðîâ (register scoreboarding) Ïåðåèìåíîâàíèå ðåãèñòðîâ (register renaming) ïîçâîëÿåò ïðîñëåäèòü çà èñïîëüçîâàíèåì ðåãèñòðîâ. Îíà èìååò áèò äëÿ êàæäîãî ðåãèñòðà ïðîöåññîðà. Åñëè ýòîò áèò óñòàíîâëåí, òî ðåãèñòð íàõîäèòñÿ â ñîñòîÿíèè îæèäàíèÿ çàïèñè ðåçóëüòàòà. Ïîñëå çàïèñè ðåçóëüòàòà ýòîò áèò ñáðàñûâàåòñÿ, ðàçðåøàÿ èñïîëüçîâàíèå ýòîãî ðåãèñòðà. Åñëè ýòîò áèò ñáðîøåí äëÿ âñåõ ðåãèñòðîâ, çíà÷åíèÿ êîòîðûõ èñïîëüçóþòñÿ â òåêóùåé èíñòðóêöèè, òî åå ìîæíî âûïîëíÿòü, íå äîæèäàÿñü çàâåðøåíèÿ èñïîëíåíèÿ ïðåäûäóùèõ èíñòðóêöèé. ÿâëÿåòñÿ àïïàðàòíîé òåõíèêîé óìåíüøåíèÿ êîíôëèêòîâ èç-çà ðåãèñòðîâûõ ðåñóðñîâ. Êîìïèëÿòîðû ïðåîáðàçóþò ÿçûêè âûñîêîãî óðîâíÿ â àññåìáëåðíûé êîä, íàçíà÷àÿ ðåãèñòðàì òå èëè èíûå çíà÷åíèÿ.  ñóïåðñêàëÿðíîì ïðîöåññîðå îïåðàöèÿ ìîæåò ïîòðåáîâàòü ðåãèñòð äî òîãî, êàê ïðåäûäóùàÿ èíñòðóêöèÿ çàêîí÷èëà èñïîëüçîâàíèå ýòîãî ðåãèñòðà. Ýòî ñîñòîÿíèå íå ÿâëÿåòñÿ êîíôëèêòîì äàííûõ, ïîñêîëüêó ýòîé îïåðàöèè íå òðåáóåòñÿ çíà÷åíèå ðåãèñòðà, à òîëüêî ñàì ðåãèñòð. Îäíàêî, ýòà ñèòóàöèÿ ïðèâîäèò ê îñòàíîâêå êîíâåéåðà äî îñâîáîæäåíèÿ ðåãèñòðà. Èäåÿ ðàçðåøåíèÿ ýòîé ïðîáëåìû ñîñòîèò â ñëåäóþùåì: áåðåì ñâîáîäíûé ðåãèñòð, ïåðåèìåíîâûâàåì åãî äëÿ ñîîòâåòñòâèÿ ïàðàìåòðàì èíñòðóêöèè, è äàåì èíñòðóêöèè åãî èñïîëüçîâàòü â êà÷åñòâå òðåáóåìîãî åé ðåãèñòðà. 11.1. Îñíîâíûå ÷åðòû àðõèòåêòóðû è èõ âëèÿíèå íà ñèñòåìû ðåàëüíîãî âðåìåíè DR AF C T T Çàäåðæêè âíóòðè êîíâåéåðà ìîãóò áûòü òàêæå âûçâàíû âðåìåíåì äîñòóïà ê îïåðàòèâíîé ïàìÿòè DRAM, êîòîðîå íàìíîãî ïðåâûøàåò âðåìÿ öèêëà. Ýòà ïðîáëåìà â çíà÷èòåëüíîé ñòåïåíè ñíèìàåòñÿ ïðè èñïîëüçîâàíèè êýø ïàìÿòè è áóôåðà ïðåäâûáîðêè èíñòðóêöèé (î÷åðåäè èíñòðóêöèé). Òàê êàê ïîòîê èíñòðóêöèé â CISC ïðîöåññîðå íåðåãóëÿðíûé è âðåìÿ èñïîëíåíèÿ îäíîé èíñòðóêöèè ( ) íå ïîñòîÿííî, òî êîíâåéåðèçàöèÿ â ýòîì ñëó÷àå èìååò ñåðüåçíûé íåäîñòàòîê, äåëàþùèé åå ìàëîïðèãîäíîé ê èñïîëüçîâàíèþ â CISC ïðîöåññîðàõ: èìåííî, îíà ïðèâîäèò ê î÷åíü ñèëüíîìó óñëîæíåíèþ ïðîöåññîðà. RISC ïðîöåññîðû èñïîëüçóþò îäèí è òîò æå ôîðìàò âñåõ èíñòðóêöèé äëÿ òîãî, ÷òîáû óñêîðèòü äåêîäèðîâàíèå è óïðîñòèòü óïðàâëåíèå êîíâåéåðîì, ïîýòîìó âñå èíñòðóêöèè èñïîëíÿþòñÿ çà îäèí öèêë. Îäíèì èç ñïîñîáîâ äàëüíåéøåãî ïîâûøåíèÿ áûñòðîäåéñòâèÿ ÿâëÿåòñÿ êîíâåéåðèçàöèÿ ñòàäèé êîíâåéåðà. Òàêèå ïðîöåññîðû íàçûâàþòñÿ ñóïåðêîíâåéåðíûìè. Ïðè òàêîì ïîäõîäå êàæäàÿ ñòàäèÿ êîíâåéåðà, òàêàÿ êàê êýø (ñì. íèæå) èëè ÀËÓ (àðèôìåòè÷åñêîå è ëîãè÷åñêîå óñòðîéñòâî), ìîæåò ïðèíèìàòü íîâóþ èíñòðóêöèþ êàæäûé öèêë, äàæå åñëè ýòà ñòàäèÿ íå çàâåðøèëà èñïîëíåíèå òåêóùåé èíñòðóêöèè. Îòìåòèì, ÷òî äîáàâëåíèå íîâûõ óðîâíåé êîíâåéåðèçàöèè èìååò ñìûñë òîëüêî â ñëó÷àå, åñëè ðàçðàáîò÷èê ìîæåò çíà÷èòåëüíî óâåëè÷èòü ÷àñòîòó ïðîöåññîðà. Îäíàêî, óâåëè÷åíèå ïðîèçâîäèòåëüíîñòè çà ñ÷åò óâåëè÷åíèÿ âíóòðåííåé ÷àñòîòû ïðîöåññîðà èìååò ðÿä íåäîñòàòêîâ. Âî-ïåðâûõ, ýòî óâåëè÷èâàåò ïîòðåáëåíèå ýíåðãèè ïðîöåññîðîì, ÷òî äåëàåò ñóïåðêîíâåéåðíûå ïðîöåññîðû ìàëîïðèãîäíûìè äëÿ âñòðàèâàåìûõ ñèñòåì. Âî-âòîðûõ, ýòî ââîäèò íîâûå òðóäíîñòè â ñîïðÿæåíèè ïðîöåññîðà ñ ïàìÿòüþ íèæíåãî óðîâíÿ, òàêîé êàê DRAM. Áûñòðîäåéñòâèå ýòîé ïàìÿòè ðàñòåò íå òàê áûñòðî, êàê ñêîðîñòü ïðîöåññîðîâ, ïîýòîìó ÷åì áûñòðåå ïðîöåññîð, òåì áîëüøå ðàçðûâ â ïðîèçâîäèòåëüíîñòè ìåæäó íèì è îñíîâíîé ïàìÿòüþ. Äðóãèì ñïîñîáîì óâåëè÷åíèÿ ïðîèçâîäèòåëüíîñòè ïðîöåññîðîâ ÿâëÿåòñÿ âûïîëíåíèå áîëåå ÷åì îäíîé îïåðàöèè îäíîâðåìåííî. Òàêèå ïðîöåññîðû íàçûâàþòñÿ ñóïåðñêàëÿðíûìè. Îíè èìåþò äâà èëè áîëåå êîíâåéåðîâ èíñòðóêöèé, ðàáîòàþùèõ ïàðàëëåëüíî, ÷òî çíà÷èòåëüíî óâåëè÷èâàåò ñêîðîñòü îáðàáîòêè ïîòîêà èíñòðóêöèé. Îäíèì èç äîñòîèíñòâ ñóïåðñêàëÿðíîé àðõèòåêòóðû ÿâëÿåòñÿ âîçìîæíîñòü óâåëè÷åíèÿ ïðîèçâîäèòåëüíîñòè áåç íåîáõîäèìîñòè óâåëè÷åíèÿ ÷àñòîòû ïðîöåññîðà. Ñóïåðñêàëÿðíîìó ïðîöåññîðó òðåáóåòñÿ áîëåå øèðîêèé äîñòóï ê ïàìÿòè, òàê, ÷òîáû îí ìîã áðàòü ñðàçó ãðóïïó èç íåñêîëüêèõ èíñòðóêöèé äëÿ èñïîëíåíèÿ. Äèñïåò÷åð àíàëèçèðóåò ýòè ãðóïïû è çàïîëíÿåò êàæäûé èç êîíâåéåðîâ òàê, ÷òîáû ñíèçèòü âçàèìîçàâèñèìîñòü äàííûõ è êîíôëèêòû ðåãèñòðîâ. Âûïîëíåíèå èíñòðóêöèé ìîæåò áûòü íå ïî ïîðÿäêó ïîñòóïëåíèÿ, òàê, ÷òîáû êîìàíäû ïåðåõîäà áûëè ïðîàíàëèçèðîâàíû ðàíüøå, óáèðàÿ çàäåðæêè â ñëó÷àå îñóùåñòâëåíèÿ ïåðåõîäà. Êîìïèëÿòîð äîëæåí îïòèìèçèðîâàòü êîä äëÿ îáåñïå÷åíèÿ çàïîëíåíèÿ âñåõ êîíâåéåðîâ. Òðåáîâàíèå îäíîãî è òîãî æå ðåñóðñà íåñêîëüêèìè èíñòðóêöèÿìè áëîêèðóåò èõ ïðîäâèæåíèå ïî êîíâåéåðó è ïðèâîäèò ê âñòàâêå öèêëîâ îæèäàíèÿ òðåáóåìîãî ðåñóðñà. Ñóïåðñêàëÿðíàÿ àðõèòåêòóðà ñ òðåìÿ èñïîëíÿþùèìè óñòðîéñòâàìè áóäåò ïîëíîñòüþ ýôôåêòèâíîé, òîëüêî åñëè ïîòîê èíñòðóêöèé îáåñïå÷èâàåò îäíîâðåìåííîå èñïîëüçîâàíèå ýòèõ òðåõ óñòðîéñòâ. Äëÿ îáåñïå÷åíèÿ ýòîãî óñëîâèÿ ñ ìèíèìàëüíûìè ðàñõîäàìè â ïðîöåññîðå âûäåëÿþò èñïîëíÿþùèå óñòðîéñòâà, ðàáîòàþùèå íåçàâèñèìî: Öåëî÷èñëåííîå óñòðîéñòâî (IU, Integer Unit) âûïîëíÿåò öåëî÷èñëåííûå îïåðàöèè (àðèôìåòè÷åñêèå, ëîãè÷åñêèå è îïåðàöèè ñðàâíåíèÿ) â ñâîåì ÀËÓ. Óñòðîéñòâî äëÿ ðàáîòû ñ ïëàâàþùåé òî÷êîé Óñòðîéñòâî óïðàâëåíèÿ ïàìÿòüþ (FPU, Floating Point Unit) îáû÷íî îòäåëåíî îò öåëî÷èñëåííîãî óñòðîéñòâà, êîòîðîå ðàáîòàåò òîëüêî ñ öåëûìè ÷èñëàìè è ÷èñëàìè ñ ôèêñèðîâàííîé òî÷êîé. Áîëüøèíñòâî FPU ñîâìåñòèìû ñî ñòàíäàðòîì ANSI/IEEE äëÿ äâîè÷íîé àðèôìåòèêè ñ ïëàâàþùåé òî÷êîé. (MMU, Memory Management Unit) âû÷èñëÿåò ðåàëüíûé ôèçè÷åñêèé àäðåñ ïî âèðòóàëüíîìó àäðåñó. 59 11. Àðõèòåêòóðû ïðîöåññîðîâ (BU, Branch Unit) çàíèìàåòñÿ ïðåäñêàçàíèåì óñëîâíûõ ïåðåõîäîâ, äëÿ òîãî, ÷òîáû èçáåæàòü ïðîñòîÿ êîíâåéåðà â îæèäàíèè ðåçóëüòàòà âû÷èñëåíèÿ óñëîâèÿ ïåðåõîäà. Óñòðîéñòâî ïðåäñêàçàíèÿ ïåðåõîäîâ T Ïîñêîëüêó óñëîâíûå ïåðåõîäû ìîãóò ñâåñòè íà íåò âñå ïðåèìóùåñòâà êîíâåéåðíîé îðãàíèçàöèè ïðîöåññîðà, îñòàíîâèìñÿ áîëåå ïîäðîáíî íà ïðèåìàõ, èñïîëüçóåìûõ BU äëÿ óìåíüøåíèÿ èõ íåãàòèâíîãî âëèÿíèÿ. (delay slots). Èíñòðóêöèþ, ïåðåäàþùóþ óïðàâëåíèå îò îäíîé ÷àñòè ïðîãðàììû äðóãîé, òðóäíî èñïîëíèòü çà îäèí öèêë. Îáû÷íî çàãðóçêà ïðîöåññîðíîãî óêàçàòåëÿ íà ñëåäóþùóþ èíñòðóêöèþ òðåáóåò îäèí öèêë, ïðåäâûáîðêà íîâîé èíñòðóêöèè òðåáóåò åùå îäèí. Äëÿ èçáåæàíèÿ ïðîñòîÿ, íåêîòîðûå RISC ïðîöåññîðû (íàïðèìåð, SPARC) ïîçâîëÿþò âñòàâèòü äîïîëíèòåëüíóþ èíñòðóêöèþ â òàê íàçûâàåìûé îòëîæåííûé ñëîò. Ýòà èíñòðóêöèÿ, êîòîðàÿ ðàñïîëîæåíà íåïîñðåäñòâåííî ïîñëå êîìàíäû ïåðåõîäà, íî áóäåò âûïîëíåíà äî òîãî, êàê áóäåò ñîâåðøåí ïåðåõîä. Îòëîæåííûå ñëîòû AF Îäíàêî, äëÿ ñóïåðñêàëÿðíûõ RISC ïðîöåññîðîâ îòëîæåííûå ñëîòû ðàáîòàþò íå î÷åíü õîðîøî. Çàäåðæêà ïðè ïåðåõîäå ìîæåò áûòü äâà öèêëà, à ñóïåðñêàëÿðíûé ïðîöåññîð, êîòîðûé âûïîëíÿåò çà öèêë n èíñòðóêöèé, äîëæåí íàéòè n èíñòðóêöèé äëÿ ïîìåùåíèÿ â êîíâåéåðû. Áèòû ïðåäñêàçàíèÿ ïåðåõîäà â èíñòðóêöèè. Íåêîòîðûå RISC ïðîöåññîðû (íàïðèìåð, PowerPC) èñïîëüçóþò áèòû ïðåäñêàçàíèÿ ïåðåõîäà, êîòîðûå óñòàíàâëèâàåò êîìïèëÿòîð â èíñòðóêöèè ïåðåõîäà, è ïðåäñêàçûâàþùèå, áóäåò èëè íåò ñîâåðøåí ïåðåõîä. DR Ñïåêóëÿòèâíîå èñïîëíåíèå èíñòðóêöèé (speculative execution). Íåêîòîðûå RISC ïðîöåññîðû (íàïðèìåð, ñòàðøèå ìîäåëè ñåìåéñòâ PowerPC è SPARC) èñïîëüçóþò òàê íàçûâàåìîå 'ñïåêóëÿòèâíîå' èñïîëíåíèå èíñòðóêöèé: ïðîöåññîð çàãðóæàåò â êîíâåéåð è íà÷èíàåò èñïîëíÿòü èíñòðóêöèè, íàõîäÿùèåñÿ çà òî÷êîé âåòâëåíèÿ, åùå íå çíàÿ, ïðîèçîéäåò ïåðåõîä èëè íåò. Ïðè ýòîì ÷àñòî âûáèðàåòñÿ íàèáîëåå âåðîÿòíàÿ âåòâü ïðîãðàììû (íà îñíîâå òîãî èëè èíîãî ïîäõîäà, ñì. íèæå). Åñëè ïîñëå èñïîëíåíèÿ êîìàíäû ïåðåõîäà îêàçàëîñü, ÷òî ïðîöåññîð íà÷àë èñïîëíÿòü íå òó âåòâü, òî âñå çàãðóæåííûå â êîíâåéåð èíñòðóêöèè èç ýòîé âåòâè è ðåçóëüòàòû èõ îáðàáîòêè ñáðàñûâàþòñÿ, è çàãðóæàåòñÿ ïðàâèëüíàÿ âåòâü. Ýâðèñòè÷åñêîå ïðåäñêàçàíèå ïåðåõîäîâ. Íåêîòîðûå RISC ïðîöåññîðû óìåíüøàþò çàäåðæêè, âíîñèìûå ïåðåõîäàìè, çà ñ÷åò èñïîëüçîâàíèÿ âñòðîåííîãî ïðåäñêàçàòåëÿ ïåðåõîäîâ. Îí ïðåäñêàçûâàåò, ÷òî ïåðåõîäû âïåðåä (ïðîâåðêè) ïðîèçâåäåíû íå áóäóò, à ïåðåõîäû íàçàä (öèêëû) - áóäóò. Äëÿ ýôôåêòèâíîé ðàáîòû óñòðîéñòâà ïðåäñêàçàíèÿ ïåðåõîäà âàæíî, ÷òîáû êîä óñëîâèÿ äëÿ óñëîâíîãî ïåðåõîäà áûë âû÷èñëåí êàê ìîæíî ðàíüøå (çà íåñêîëüêî èíñòðóêöèé äî ñàìîé êîìàíäû ïåðåõîäà). Ýòîãî äîáèâàþòñÿ íåñêîëüêèìè ñïîñîáàìè. Íåçàâèñèìîñòü àðèôìåòè÷åñêèõ îïåðàöèé è êîäà óñëîâèÿ.  CISC àðõèòåêòóðàõ âñå àðèôìåòè÷åñêèå îïåðàöèè âûñòàâëÿþò êîä óñëîâèÿ ïî ñâîåìó ðåçóëüòàòó. Ýòî ñäåëàíî äëÿ óìåíüøåíèÿ ôàêòîðà ÷èñëà èíñòðóêöèé íà çàäà÷ó, ïîñêîëüêó åñòü âåðîÿòíîñòü òîãî, ÷òî ñëåäóþùàÿ èíñòðóêöèÿ áóäåò âû÷èñëÿòü êîä óñëîâèÿ ïî ðåçóëüòàòó ïðåäûäóùåé èíñòðóêöèè è, ñëåäîâàòåëüíî, ìîæåò áûòü óäàëåíà. Îäíàêî ýòî ïðèâîäèò ê òîìó, ÷òî ìåæäó êîìàíäîé âû÷èñëåíèÿ êîäà óñëîâèÿ è êîìàíäîé ïåðåõîäà î÷åíü òðóäíî âñòàâèòü ïîëåçíûå èíñòðóêöèè, òàê êàê îíè èçìåíÿò êîä óñëîâèÿ.  RISC àðõèòåêòóðàõ àðèôìåòè÷åñêèå îïåðàöèè íå èçìåíÿþò êîä óñëîâèÿ (åñëè ïðîòèâíîå ÿâíî íå óêàçàíî â èíñòðóêöèè, ñì. íèæå). Ïîýòîìó âîçìîæíî ìåæäó èíñòðóêöèåé, âû÷èñëÿþùåé êîä óñëîâèÿ, è êîìàíäîé ïåðåõîäà âñòàâèòü äðóãèå èíñòðóêöèè (ïåðåóïîðÿäî÷èâ èõ). Ýòî ïîçâîëèò çàðàíåå óçíàòü, ïðîèçîéäåò èëè íåò ïåðåõîä è çàãðóçèòü êîíâåéåð èíñòðóêöèÿìè. I 60 11.1. Îñíîâíûå ÷åðòû àðõèòåêòóðû è èõ âëèÿíèå íà ñèñòåìû ðåàëüíîãî âðåìåíè T Ïîñêîëüêó âîçìîæíà ñèòóàöèÿ, êîãäà ñëåäóþùàÿ èíñòðóêöèÿ áóäåò âû÷èñëÿòü êîä óñëîâèÿ ïî ðåçóëüòàòó ïðåäûäóùåé èíñòðóêöèè, òî â RISC àðõèòåêòóðàõ ÷àñòü (SPARC) èëè âñå (PowerPC) àðèôìåòè÷åñêèå îïåðàöèè òàêæå èìåþò âòîðóþ ôîðìó, â êîòîðîé áóäåò âûñòàâëÿòüñÿ êîä óñëîâèÿ ïî èõ ðåçóëüòàòó. Òàêèì îáðàçîì, ÷àñòü èëè âñå àðèôìåòè÷åñêèå îïåðàöèè ïðèñóòñòâóþò â äâóõ âàðèàíòàõ: îäèí íå èçìåíÿåò êîä óñëîâèÿ (ïîäàâëÿþùåå áîëüøèíñòâî ñëó÷àåâ èñïîëüçîâàíèÿ), à äðóãîé âû÷èñëÿåò êîä óñëîâèÿ ïî ðåçóëüòàòó îïåðàöèè. Èñïîëüçîâàíèå íåñêîëüêèõ ðàâíîïðàâíûõ ðåãèñòðîâ ñ êîäîì óñëîâèÿ. Èñïîëüçîâàíèå êîäà óñëîâèÿ â êàæäîé èíñòðóêöèè. AF Íåêîòîðûå RISC ïðîöåññîðû (íàïðèìåð, PowerPC) èñïîëüçóþò íåñêîëüêî ðàâíîïðàâíûõ ðåãèñòðîâ, â êîòîðûõ îáðàçóåòñÿ ðåçóëüòàò âû÷èñëåíèÿ óñëîâèÿ. Íàä ýòèìè ðåãèñòðàìè îïðåäåëåíû ëîãè÷åñêèå îïåðàöèè, ÷òî èíîãäà ïîçâîëÿåò îïòèìèçèðóþùåìó êîìïèëÿòîðó çàìåíèòü êîìàíäû ïåðåõîäà ïðè âû÷èñëåíèè ñëîæíûõ ëîãè÷åñêèõ âûðàæåíèé íà êîìàíäû ëîãè÷åñêèõ îïåðàöèé ñ ýòèìè ðåãèñòðàìè. Íåêîòîðûå RISC ïðîöåññîðû (íàïðèìåð, ARM) èñïîëüçóþò êîä óñëîâèÿ â êàæäîé èíñòðóêöèè.  ôîðìàòå êàæäîé èíñòðóêöèè ïðåäóñìîòðåíî ïîëå, ãäå êîìïèëÿòîðîì çàïèñûâàåòñÿ êîä óñëîâèÿ, ïðè êîòîðîì îíà áóäåò âûïîëíåíà. Åñëè â ìîìåíò èñïîëíåíèÿ èíñòðóêöèè êîä óñëîâèÿ íå òàêîé, êàê â èíñòðóêöèè, òî îíà èãíîðèðóåòñÿ. Ýòî ïîçâîëÿåò âîîáùå îáîéòèñü áåç êîìàíä ïåðåõîäà ïðè âû÷èñëåíèè ðåçóëüòàòîâ óñëîâíûõ îïåðàöèé. 11.1.4. Êýø ïàìÿòü DR Âðåìÿ, íåîáõîäèìîå äëÿ âûáîðêè èíñòðóêöèé, â îñíîâíîì çàâèñèò îò ïîäñèñòåìû ïàìÿòè è ÷àñòî ÿâëÿåòñÿ îãðàíè÷èâàþùèì ôàêòîðîì äëÿ RISC ïðîöåññîðîâ â ñèëó âûñîêîé ñêîðîñòè èñïîëíåíèÿ èíñòðóêöèé. Íàïðèìåð, åñëè ïðîöåññîð ìîæåò áðàòü èíñòðóêöèè òîëüêî èç DRAM ñ âðåìåíåì äîñòóïà 60 ns, òî ñêîðîñòü èõ îáðàáîòêè (ïðè ðàñ÷åòå îäíà èíñòðóêöèÿ çà öèêë) áóäåò ñîîòâåòñòâîâàòü òàêòîâîé ÷àñòîòå 16:7 MHz. Ýòà ïðîáëåìà â çíà÷èòåëüíîé ñòåïåíè ñíèìàåòñÿ çà ñ÷åò èñïîëüçîâàíèÿ êýø ïàìÿòè. Êýø ïàìÿòü (cache) ýòî áûñòðîå ñòàòè÷åñêîå ÎÇÓ (SRAM), âñòàâëåííàÿ ìåæäó èñïîëíèòåëüíûìè óñòðîéñòâàìè è ñèñòåìíûì ÎÇÓ (RAM). Îíà ñîõðàíÿåò ïîñëåäíèå èñïîëüçîâàííûå èíñòðóêöèè è äàííûå, òàê, ÷òî öèêëû è îïåðàöèè ñ ìàññèâàìè áóäóò âûïîëíÿòüñÿ áûñòðåå. Êîãäà èñïîëíÿþùåìó óñòðîéñòâó íóæíû äàííûå è îíè íå íàõîäÿòñÿ â êýø ïàìÿòè, òî ýòî êýø-ïðîìàõ: ïðîöåññîð äîëæåí îáðàòèòüñÿ ê âíåøíåé ïàìÿòè äëÿ âûáîðêè äàííûõ. Åñëè òðåáóåìûå äàííûå íàõîäÿòñÿ â êýøå, òî ýòî êýø-ïîïàäàíèå: äîñòóï ê âíåøíåé ïàìÿòè íå òðåáóåòñÿ. Òàêèì îáðàçîì, êýøè ðàçãðóæàþò âíåøíèå øèíû, óìåíüøàÿ ïîòðåáíîñòü â íèõ ïðîöåññîðà. Ýòî ïîçâîëÿåò íåñêîëüêèì ïðîöåññîðàì ðàçäåëÿòü âíåøíèå øèíû áåç óìåíüøåíèÿ ïðîèçâîäèòåëüíîñòè êàæäîãî èç íèõ. Êýø ñîäåðæèò ñòðîêè èç íåñêîëüêèõ ïîñëåäîâàòåëüíûõ áàéòîâ (îáû÷íî 32 áàéòà), êîòîðûå çàãðóæàþòñÿ ïðîöåññîðîì, èñïîëüçóÿ òàê íàçûâàåìûé èìïóëüñíûé (èëè áëî÷íûé) äîñòóï (burst access). Äàæå åñëè CPU íóæåí îäèí áàéò, âñå ðàâíî áóäåò çàãðóæåíà öåëàÿ ñòðîêà, òàê êàê âåðîÿòíî, ÷òî òåì ñàìûì áóäóò çàãðóæåíû ñëåäóþùèå âûïîëíÿåìûå èíñòðóêöèè èëè èñïîëüçóåìûå äàííûå. Áëî÷íûå ïåðåäà÷è îáåñïå÷èâàåò âûñîêèå ñêîðîñòè ïåðåäà÷è äëÿ èíñòðóêöèé èëè äàííûõ â ïîñëåäîâàòåëüíûõ àäðåñàõ ïàìÿòè. Ïðè òàêèõ ïåðåäà÷àõ òîëüêî àäðåñ ïåðâîé èíñòðóêöèè èëè äàííîãî áóäåò ïîñëàí â ïîäñèñòåìó âíåøíåé ïàìÿòè. Âñå ïîñëåäóþùèå çàïðîñû èíñòðóêöèé èëè äàííûõ â ïîñëåäîâàòåëüíûõ àäðåñàõ ïàìÿòè íå òðåáóþò äîïîëíèòåëüíîé ïåðåäà÷è àäðåñà. Íàïðèìåð, çàãðóçêà 16 áàéòîâ òðåáóåò 5 öèêëîâ, åñëè MC68040 äåëàåò áëî÷íóþ ïåðåäà÷ó äëÿ çàãðóçêè ñòðîêè êýøà, è 8 öèêëîâ, åñëè ïàìÿòü íå ïîääåðæèâàåò áëî÷íûé ðåæèì ïåðåäà÷è. Êýø, â êîòîðîì âìåñòå õðàíÿòñÿ äàííûå è èíñòðóêöèè, íàçûâàåòñÿ åäèíûì êýøåì. Îäíèì èç ñïîñîáîâ ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè ÿâëÿåòñÿ ââåäåíèå â ïðîöåññîðå òðåõ øèí: àäðåñà, èíñòðóêöèé è äàííûõ.  Ãàðâàðäñêîé àðõèòåêòóðå êýøà ðàçäåëÿþò êýøè äëÿ èíñòðóêöèé è äàííûõ äëÿ óäâîåíèÿ ýôôåêòèâíîñòè êýø ïàìÿòè.  òèïè÷íîé Ãàðâàðäñêîé 61 11. Àðõèòåêòóðû ïðîöåññîðîâ T àðõèòåêòóðå ïðèñóòñòâóþò òðè âèäà êýø ïàìÿòè: ñïåöèàëüíûå êýøè (íàïðèìåð, TLB), âíóòðåííèå êýøè èíñòðóêöèé è äàííûõ (ïåðâîãî óðîâíÿ èëè L1 êýø) è âíåøíèé åäèíûé êýø (âòîðîãî óðîâíÿ èëè L2 êýø).  ïðîöåññîðàõ, èìåþùèõ èíòåãðèðîâàííûå êåøè ïåðâîãî è âòîðîãî óðîâíåé (ò.å. âíóòðè êîðïóñà ïðîöåññîðà), ÷àñòî äîïîëíèòåëüíî óñòàíàâëèâàþò åäèíûé êýø òðåòüåãî óðîâíÿ (L3) âíå ïðîöåññîðà. Îáû÷íî L1 êýø ðàáîòàåò íà ÷àñòîòå ïðîöåññîðà è èìååò ðàçìåð 8. . . 32Êá, L2 êýø ðàáîòàåò íà ÷àñòîòå ïðîöåññîðà èëè åå ïîëîâèíå è èìååò ðàçìåð 128Êá. . . 4Ìá, L3 êýø ðàáîòàåò íà ÷àñòîòå âíåøíåé øèíû è èìååò ðàçìåð 512Êá. . . 8Ìá. Êýøè äàííûõ â çàâèñèìîñòè îò èõ ïîâåäåíèÿ ïðè çàïèñè äàííûõ â êýø ðàçäåëÿþò íà äâà âèäà. AF 1. Êýø ñ ïðÿìîé çàïèñüþ (write-through cache). Ýòîò âèä êýø ïàìÿòè ïðè çàïèñè â íåå ñðàçó èíèöèèðóåò öèêë çàïèñè âî âíåøíþþ ïàìÿòü. Îñíîâíûì äîñòîèíñòâîì òàêîãî êýøà ÿâëÿåòñÿ ïðîñòîòà è òî, ÷òî äàííûå â êýøå è â ïàìÿòè âñåãäà èäåíòè÷íû, ÷òî óïðîùàåò ïîñòðîåíèå ìíîãîïðîöåññîðíûõ ñèñòåì. 2. Êýø ñ îáðàòíîé çàïèñüþ (write-back cache) Ýòîò âèä êýø ïàìÿòè ïðè çàïèñè â íåå íå çàïèñûâàåò äàííûå ñðàçó âî âíåøíþþ ïàìÿòü. Çàïèñü â ïàìÿòü îñóùåñòâëÿåòñÿ ïðè âûõîäå ñòðîêè èç êýøà èëè ïî çàïðîñó ñèñòåìû ñèíõðîíèçàöèè â ìíîãîïðîöåññîðíûõ ñèñòåìàõ. Òàêàÿ îðãàíèçàöèÿ êýø ïàìÿòè ìîæåò çíà÷èòåëüíî óñêîðèòü âûïîëíåíèå öèêëîâ, â êîòîðûõ îáíîâëÿåòñÿ îäíà è òà æå ÿ÷åéêà ïàìÿòè (áóäåò çàïèñàíî òîëüêî ïîñëåäíåå, à íå âñå ïðîìåæóòî÷íûå çíà÷åíèÿ êàê â êýøå ñ ïðÿìîé çàïèñüþ). Äðóãèì äîñòîèíñòâîì ÿâëÿåòñÿ óìåíüøåíèå ïîòðåáíîñòè ïðîöåññîðà âî âíåøíåé øèíå, ÷òî ïîçâîëÿåò ðàçäåëÿòü åå íåñêîëüêèì ïðîöåññîðàì. Íåäîñòàòêîì òàêîé îðãàíèçàöèè ÿâëÿåòñÿ óñëîæíåíèå ñõåìû ñèíõðîíèçàöèè êýøåé â ìíîãîïðîöåññîðíûõ ñèñòåìàõ.  ñèëó åãî çíà÷èòåëüíî áîëüøåé ýôôåêòèâíîñòè, áîëüøèíñòâî ñîâðåìåííûõ ïðîöåññîðîâ èñïîëüçóþò êýø ñ îáðàòíîé çàïèñüþ. Îðãàíèçàöèÿ êýø-ïàìÿòè. Êýø îñíîâàí íà ñðàâíåíèè àäðåñà. Äëÿ êàæäîé ñòðîêè êýøà õðàíèòñÿ àäðåñ åå ïåðâîãî ýëåìåíòà, íàçûâàåìûé àäðåñîì ñòðîêè. Äëÿ óìåíüøåíèÿ îáúåìà äîïîëíèòåëüíî õðàíèìîé èíôîðìàöèè (àäðåñîâ ñòðîê) è óñêîðåíèÿ ïîèñêà àäðåñà èñïîëüçóþò íåñêîëüêî òåõíè÷åñêèõ ïðèåìîâ. Ïóñòü äëèíà ñòðîêè åñòü 2b áàéò. Àäðåñà ñòðîê âûðîâíåíû íà ãðàíèöó ñâîåãî ðàçìåðà, ò.å. ïîñëåäíèå b áèò àäðåñà íóëåâûå è ïîòîìó íå õðàíÿòñÿ (ò.å. ðàçìåð àäðåñà óìåíüøåí äî 32 b áèò). DR 62 Ôèêñèðóåòñÿ íåêîòîðîå i . Ñòðîêè õðàíÿòñÿ êàê îäèí èëè íåñêîëüêî ( N ) ìàññèâîâ, îòñîðòèðîâàííûìè ïî ïîðÿäêó i ìëàäøèõ áèòîâ àäðåñà (ò.å. ìëàäøèõ ñðåäè îñòàâøèõñÿ 32 b ). Òàêèì îáðàçîì, k -é ýëåìåíò ìàññèâà èìååò àäðåñ, áèòû êîòîðîãî â ïîçèöèÿõ îò 32 i b + 1 äî 32 b îáðàçóþò ÷èñëî, ðàâíîå k . Ýòî ïîçâîëÿåò íå õðàíèòü ýòè áèòû (ò.å. ðàçìåð àäðåñà óìåíüøåí äî 32 b i áèò). Êîìáèíàöèÿ ÷èñåë b è i ïîäáèðàåòñÿ òàê, ÷òîáû ìëàäøèõ b + i áèò ëîãè÷åñêîãî àäðåñà ñîâïàäàëè áû ñ ñîîòâåòñòâóþùèìè áèòàìè ôèçè÷åñêîãî àäðåñà ïðè ñòðàíè÷íîì ïðåîáðàçîâàíèè (ò.å. áûëè áû ñìåùåíèåì â ñòðàíèöå). Ýòî ïîçâîëÿåò ïàðàëëåëüíî ïðîèçâîäèòü òðàíñëÿöèþ àäðåñà è ïîèñê â êýøå (ò.å. ïàðàëëåëüíî ðàáîòàòü MMU è êýøó). Ïðè òèïè÷íîì ðàçìåðå ñòðàíèöû 4Kb ýòî îçíà÷àåò b + i = 12 . Îïðåäåëåíèå òîãî, ñîäåðæèòñÿ ëè äàííûé àäðåñ â êýøå, ïðîèçâîäèòñÿ ñëåäóþùèì îáðàçîì. Áåðóòñÿ áèòû â ïîçèöèÿõ îò 32 i b + 1 äî 32 b , îáðàçóþùèå ÷èñëî k . Çàòåì áåðóòñÿ ýëåìåíòû ñ íîìåðîì k â êàæäîì èç N ìàññèâîâ è ó ïîëó÷åííûõ N ñòðîê ñðàâíèâàþòñÿ àäðåñà ñ 32 i b áèòàìè àäðåñà (êîòîðûå óæå òðàíñëèðîâàíû MMU â ôèçè÷åñêèé àäðåñ). Åñëè îáíàðóæåíî ñîâïàäåíèå (ò.å. èìååò ìåñòî êýø-ïîïàäàíèå), òî áåðåòñÿ áàéò ñ íîìåðîì b â ñòðîêå. 11.1. Îñíîâíûå ÷åðòû àðõèòåêòóðû è èõ âëèÿíèå íà ñèñòåìû ðåàëüíîãî âðåìåíè AF T Åñëè ðàññìàòðèâàåòñÿ âíåøíèé êýø, òî ñîãëàñîâûâàòü åãî ðàáîòó ñ MMU íå òðåáóåòñÿ, ïîñêîëüêó âíåøíèé êýø ðàáîòàåò óæå ñ ôèçè÷åñêèì àäðåñîì. Ïðèìåð: äëÿ PowerPC 603 âûáðàíî b = 5 (ò.å. äëèíà ñòðîêè 32 áàéòà), i = 7 (ò.å. äëèíà ìàññèâà 127), N = 2 (ò.å. èñïîëüçóþòñÿ äâà ìàññèâà). Äëÿ êàæäîé ñòðîêè êýøà ñ îáðàòíîé çàïèñüþ ïîìèìî àäðåñà õðàíèòñÿ òàêæå ïðèçíàê òîãî, ÷òî ýòà ñòðîêà ñîäåðæèò êîððåêòíûå äàííûå, ò.å. äàííûå â êýø ïàìÿòè è â îñíîâíîé ïàìÿòè ñîâïàäàþò. Ýòîò ïðèçíàê èñïîëüçóåòñÿ äëÿ çàïèñè ñòðîêè â ïàìÿòü ïðè åå âûõîäå èç êýø ïàìÿòè, à òàêæå â ìíîãîïðîöåññîðíûõ ñèñòåìàõ. Àëãîðèòìû çàìåíû äàííûõ â êýø ïàìÿòè. Åñëè âñå ñòðîêè êýø ïàìÿòè ñîäåðæàò êîððåêòíûå äàííûå, òî äëÿ îáåñïå÷åíèÿ êýøèðîâàíèÿ íîâûõ îáëàñòåé ïàìÿòè íåîáõîäèìî âûáðàòü ñòðîêó, êîòîðàÿ áóäåò ïåðåçàïèñàíà. Ýòà ñòðîêà âûõîäèò èç êýøà è, åñëè òðåáóåòñÿ, åå ñîäåðæèìîå áóäåò çàïèñàíî îáðàòíî â ïàìÿòü. Ñóùåñòâóþò òðè àëãîðèòìà çàìåíû äàííûõ â êýøå: âåðîÿòíîñòíûé ñëó÷àéíîå ÷èñëî; àëãîðèòì: â êà÷åñòâå íîìåðà ïåðåçàïèñûâàåìîé ñòðîêè èñïîëüçóåòñÿ FIFO àëãîðèòì: ïåðâàÿ çàïèñàííàÿ ñòðîêà áóäåò ïåðâîé ïåðåçàïèñàíà; LRU (Last Recently Used) àëãîðèòì: íàèìåíåå èñïîëüçóåìàÿ ñòðîêà áóäåò çàìåíåíà íîâîé. Äëÿ ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè ïðîöåññîðà ââîäÿòñÿ ðÿä ñïåöèàëüíûõ êýøåé. TLB BTC (Translation Look-aside Buffers) - ýòî êýø ïàìÿòü, èñïîëüçóåìàÿ MMU äëÿ õðàíåíèÿ ðåçóëüòàòîâ ïîñëåäíèõ òðàíñëÿöèé ëîãè÷åñêîãî àäðåñà â ôèçè÷åñêèé. Ñîäåðæèò ïàðû: ëîãè÷åñêèé àäðåñ è ñîîòâåòñòâóþùèé ôèçè÷åñêèé àäðåñ. (Branch Target Cache) ýòî êýø ïàìÿòü, èñïîëüçóåìàÿ BU äëÿ õðàíåíèÿ àäðåñà ïðåäûäóùåãî ïåðåõîäà è ïåðâîé èíñòðóêöèè, âûïîëíåííîé ïîñëå ïåðåõîäà. Èìååò öåëüþ áåç çàäåðæêè çàïîëíèòü êîíâåéåð èíñòðóêöèåé, åñëè ïåðåõîä óæå ðàíåå ñîñòîÿëñÿ. BTC ìîæåò çíà÷èòåëüíî ïîâûñèòü ïðîèçâîäèòåëüíîñòü ïðîöåññîðà, ó÷èòûâàÿ âðåìÿ, êîòîðîå îí áû ïðîñòàèâàë â îæèäàíèè çàïîëíåíèÿ êîíâåéåðà ïîñëå ïåðåõîäà. DR Ñîãëàñîâàíèå êýøåé â ìóëüòèïðîöåññîðíûõ ñèñòåìàõ. Åñëè íåñêîëüêî ïðîöåññîðîâ ïîäñîåäèíåíû ê îäíîé è òîé æå øèíå àäðåñà è äàííûõ è ðàçäåëÿþò îäíó è òó æå âíåøíþþ ïàìÿòü, òî äîëæåí áûòü ðåàëèçîâàí îïðåäåëåííûé ñëåäÿùèé ìåõàíèçì (snooping) äëÿ òîãî, ÷òîáû âñå âíóòðèïðîöåññîðíûå êýøè âñåãäà ñîäåðæàëè îäíè è òå æå äàííûå. Ðàññìîòðèì, íàïðèìåð, ñèñòåìó, ñîäåðæàùóþ äâà ïðîöåññîðà, êàæäûé èç êîòîðûõ ìîæåò áðàòü óïðàâëåíèå îáùåé øèíîé. Åñëè ïðîöåññîð 1, óïðàâëÿþùèé â äàííûé ìîìåíò øèíîé, çàïèñûâàåò â ÿ÷åéêó ïàìÿòè, êîòîðàÿ êýøèðîâàíà ïðîöåññîðîì 2, òî äàííûå â êýøå ïîñëåäíåãî ñòàíîâÿòñÿ óñòàðåâøèìè. Ñëåäÿùèé ìåõàíèçì ïîçâîëÿåò âòîðîìó ïðîöåññîðó îòñëåæèâàòü ñîñòîÿíèå øèíû àäðåñà, äàæå åñëè îí íå ÿâëÿåòñÿ â äàííûé ìîìåíò ãëàâíûì (ò.å. óïðàâëÿþùèì âíåøíåé øèíîé). Åñëè íà øèíå ïîÿâèëñÿ àäðåñ êýøèðîâàííûõ äàííûõ, òî ýòè äàííûå ïîìå÷àþòñÿ â êýøå êàê íåêîððåêòíûå. Êîãäà âòîðîé ïðîöåññîð ñòàíåò ãëàâíûì, îí äîëæåí áóäåò âûáðàòü â ñëó÷àå íåîáõîäèìîñòè îáíîâëåííûå äàííûå èç ðàçäåëÿåìîé ïàìÿòè. Åñëè ïðîöåññîð 1, óïðàâëÿþùèé â äàííûé ìîìåíò øèíîé, ÷èòàåò èç ÿ÷åéêè ïàìÿòè, êîòîðàÿ êýøèðîâàíà ïðîöåññîðîì 2, òî âîçìîæíî, ÷òî ðåàëüíûå äàííûå íàõîäÿòñÿ â êýøå ïðîöåññîðà 2 (åùå íå çàïèñàíû â ïàìÿòü, ò.å. ðåàëèçîâàí êýø ñ îáðàòíîé çàïèñüþ). Åñëè ýòî òàê, òî ñëåäÿùèé ìåõàíèçì èíèöèèðóåò öèêë çàïèñè ñòðîêè êýøà ïðîöåññîðà 2, ñîäåðæàùåé çàòðåáîâàííûå ïðîöåññîðîì 1 äàííûå, â ðàçäåëÿþìóþ ïàìÿòü. Ïîñëå ýòîãî ýòè äàííûå ñòàíîâÿòñÿ äîñòóïíûìè ïðîöåññîðó 1 è öèêë ÷òåíèÿ ïðîöåññîðà 1 ïðîäîëæàåòñÿ. 11.1.5. Ìíîãîïðîöåññîðíûå àðõèòåêòóðû Îäíèì èç ñàìûõ ðàäèêàëüíûõ ñïîñîáîâ ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè âû÷èñëèòåëüíîé ñèñòåìû ÿâëÿåòñÿ óñòàíîâêà íåñêîëüêèõ ïðîöåññîðîâ. Âûäåëÿþò íåñêîëüêî òèïîâ ïîñòðîåíèÿ 63 11. Àðõèòåêòóðû ïðîöåññîðîâ T ìíîãîïðîöåññîðíûõ ñèñòåì â çàâèñèìîñòè îò ñòåïåíè ñâÿçè ìåæäó îòäåëüíûìè ïðîöåññîðàìè â ñèñòåìå. 1. Ñèëüíî ñâÿçàííûå ïðîöåññîðû (èëè ñèììåòðè÷íûå ìóëüòèïðîöåññîðíûå ñèñòåìû, symmetrical multiprocessor system, SMP). Âñå ïðîöåññîðû ðàçäåëÿþò îáùóþ øèíó è îáùóþ ïàìÿòü, ìîãóò âûïîëíÿòü îäíó è òó æå çàäà÷ó, ïðè÷åì çàäà÷à ìîæåò ïåðåõîäèòü îò îäíîãî ïðîöåññîðà äðóãîìó. Åñëè îäèí ïðîöåññîð îòêàçûâàåò, îí ìîæåò áûòü çàìåíåí äðóãèì. SMP ïîäðàçóìåâàåò íàëè÷èå àïïàðàòíîãî ïðîòîêîëà ñèíõðîíèçàöèè êýøåé âñåõ ïðîöåññîðîâ (ñì. âûøå). Òèïè÷íûé ïðèìåð: ïëàòà ñ äâóìÿ ïðîöåññîðàìè Pentium. AF 2. Ñëàáî ñâÿçàííûå ïðîöåññîðû. ×àñòü ñèñòåìíîé ïàìÿòè ìîæåò áûòü ðàçäåëÿåìà, íî ïåðåõîä çàäà÷è îò îäíîãî ïðîöåññîðà ê äðóãîìó íåâîçìîæåí. Ìåõàíèçìû ñèíõðîíèçàöèè ñïåöèôè÷íû äëÿ êàæäîé ñèñòåìû (ïî÷òîâûå ÿùèêè, DPRAM, ïðåðûâàíèÿ). Òèïè÷íûé ïðèìåð: ñòîéêà VME ñ íåñêîëüêèìè ïðîöåññîðíûìè ïëàòàìè è ðàçäåëÿåìîé ïàìÿòüþ íà îäíîé èç ïëàò. 3. Ðàñïðåäåëåííûå ïðîöåññîðû. Íåñêîëüêî ïðîöåññîðîâ íå ðàçäåëÿþò íè îäíîãî îáùåãî ðåñóðñà, çà èñêëþ÷åíèåì ëèíèè ñâÿçè. Òèïè÷íûé ïðèìåð: ñîåäèíåííûå ïîñðåäñòâîì Ethernet ðàáî÷èå ñòàíöèè. Àðõèòåêòóðà SMP ÿâëÿåòñÿ ñàìîé äîðîãîé ñ òî÷êè çðåíèÿ àïïàðàòíîé ðåàëèçàöèè è ñàìîé äåøåâîé ñ òî÷êè çðåíèÿ ðàçðàáîòêè ïðîãðàììíîãî îáåñïå÷åíèÿ. È íàîáîðîò, ðàñïðåäåëåííûå ïðîöåññîðû ïî÷òè íå òðåáóþò àïïàðàòíûõ çàòðàò, íî ÿâëÿþòñÿ ñàìûì äîðîãèì ðåøåíèåì ñ òî÷êè çðåíèÿ ðàçðàáîòêè ÏÎ. Äëÿ äîñòèæåíèÿ îïòèìàëüíîãî êîìïðîìèññà äëÿ êðóãà ðåøàåìûõ çàäà÷ èñïîëüçóþò ðàçëè÷íûå êîìáèíàöèè îïèñàííûõ âûøå òåõíîëîãèé. 11.1.6. Ïîääåðæêà ìíîãîçàäà÷íîñòè è ìíîãîïðîöåññîðíîñòè DR  ñîâðåìåííûõ ïðîöåññîðàõ ïîääåðæêà ìíîãîçàäà÷íîñòè è ìíîãîïðîöåññîðíîñòè íå îãðàíè÷èâàåòñÿ àïïàðàòíîé ÷àñòüþ (âðîäå ðàññìîòðåííîãî âûøå ìåõàíèçìà ñèíõðîíèçàöèè êýøåé). Äëÿ îðãàíèçàöèè äîñòóïà ê êðèòè÷åñêèì ðàçäåëÿåìûì ðåñóðñàì íåîáõîäèìî â íàáîðå èíñòðóêöèé ïðîöåññîðà ïðåäóñìîòðåòü ñïåöèàëüíûå èíñòðóêöèè, îáåñïå÷èâàþùèå äîñòóï ê îáúåêòàì ñèíõðîíèçàöèè. Äåéñòâèòåëüíî, ñàìè îáúåêòû ñèíõðîíèçàöèè ÿâëÿþòñÿ ðàçäåëÿåìûìè, à äëÿ îáåñïå÷åíèÿ ïðàâèëüíîãî äîñòóïà ê ðàçäåëÿåìûì îáúåêòàì íåîáõîäèìî ââîäèòü îáúåêòû ñèíõðîíèçàöèè, êîòîðûå â ñâîþ î÷åðåäü òîæå ÿâëÿþòñÿ ðàçäåëÿåìûìè è ò.ä. Äëÿ âûõîäà èç ýòîãî çàìêíóòîãî êðóãà îïðåäåëÿþò íåêîòîðûå ïðèìèòèâíûå îáúåêòû ñèíõðîíèçàöèè, ê êîòîðûì âîçìîæåí îäíîâðåìåííûé äîñòóï íåñêîëüêèõ çàäà÷ èëè ïðîöåññîðîâ çà ñ÷åò èñïîëüçîâàíèÿ ñïåöèàëüíûõ èíñòðóêöèé äîñòóïà. Ðàññìîòðèì áîëåå ïîäðîáíî ñëó÷àé áóëåâñêîãî ñåìàôîðà. Çàäà÷à èëè ïðîöåññîð, ñîáèðàþùèéñÿ âçÿòü óïðàâëåíèå ðàçäåëÿåìûì ðåñóðñîì, íà÷èíàþò ñ ÷òåíèÿ çíà÷åíèÿ ñåìàôîðà. Åñëè îí îáíóëåí, òî çàäà÷à èëè ïðîöåññîð äîëæíû æäàòü, ïîêà ðåñóðñ ñòàíåò äîñòóïíûì. Åñëè ñåìàôîð óñòàíîâëåí â 1, òî çàäà÷à èëè ïðîöåññîð íåìåäëåííî åãî îáíóëÿþò, ÷òîáû ïîêàçàòü, ÷òî êîíòðîëèðóþò ðåñóðñ.  ïðîöåññå èçìåíåíèÿ ñåìàôîðà ìîæíî âûäåëèòü òðè ôàçû: ÷òåíèå, èçìåíåíèå, çàïèñü. Åñëè íà ñòàäèè ÷òåíèÿ âîçíèêíåò ïåðåêëþ÷åíèå çàäà÷ èëè äðóãîé ïðîöåññîð ñòàíåò ãëàâíûì íà øèíå, òî ìîæåò âîçíèêíóòü îøèáêà, òàê êàê äâå çàäà÷è èëè äâà ïðîöåññîðà êîíòðîëèðóþò îäèí è òîò æå ðåñóðñ. Àíàëîãè÷íî, åñëè ïåðåêëþ÷åíèå êîíòåêñòà ïðîèçîéäåò ìåæäó öèêëîì ÷òåíèÿ è çàïèñè, òî äâà ïðîöåññà ìîãóò âçÿòü ñåìàôîð, ÷òî òîæå ïðèâåäåò ê ñèñòåìíîé îøèáêå. Äëÿ ðåøåíèÿ ýòîé ïðîáëåìû áîëüøèíñòâî ïðîöåññîðîâ èìåþò èíñòðóêöèþ, âûïîëíÿþùóþ íåäåëèìûé öèêë ÷òåíèå èçìåíåíèå çàïèñü. Ïîñêîëüêó ýòî îäíà èíñòðóêöèÿ, òî ïåðåêëþ÷åíèå çàäà÷ âî âðåìÿ îïåðàöèè ñ ñåìàôîðîì íåâîçìîæíî. Òàê êàê îíà ïðîèçâîäèò íåäåëèìûé öèêë, òî ïðîöåññîð, åå âûïîëíÿþùèé, îñòàåòñÿ âëàäåëüöåì øèíû äî îêîí÷àíèÿ îïåðàöèè ñ ñåìàôîðîì. 64 11.1. Îñíîâíûå ÷åðòû àðõèòåêòóðû è èõ âëèÿíèå íà ñèñòåìû ðåàëüíîãî âðåìåíè T 11.1.7. Âëèÿíèå òðåáîâàíèé ðåàëüíîãî âðåìåíè íà âûáîð àðõèòåêòóðû ïðîöåññîðà Íå âñå îïèñàííûå âûøå ïðèåìû ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè ïðîöåññîðà óñêîðÿþò ðàáîòó òèïè÷íîé ñèñòåìû ðåàëüíîãî âðåìåíè, à èíîãäà è çàìåäëÿþò åå. Ýòèì îáúÿñíÿåòñÿ òî, ÷òî íà ðûíêå ñèñòåì äëÿ ÎÑРçíà÷èòåëüíóþ äîëþ çàíèìàþò ïðîöåññîðû ñ óñòàðåâøåé CISC àðõèòåêòóðîé, èìåþùèå ïðèìèòèâíûé êîíâåéåð è êýø. Ðàññìîòðèì îñíîâíûå ïðè÷èíû ýòîãî ïîëîæåíèÿ. Óâåëè÷åíèå ÷èñëà ðåãèñòðîâ â RISC ïðîöåññîðàõ ïðèâîäèò ê óâåëè÷åíèþ âðåìåíè íà ïåðåêëþ÷åíèå çàäà÷ è, â ÷àñòíîñòè, íà îáðàáîòêó ïðåðûâàíèé, ïîñêîëüêó íåîáõîäèìî ñîõðàíÿòü/âîññòàíàâëèâàòü çíà÷èòåëüíîå êîëè÷åñòâî ðåãèñòðîâ. Óâåëè÷åíèå ãëóáèíû êîíâåéåðà ïðèâîäèò ê óâåëè÷åíèþ âðåìåíè íà ïåðåêëþ÷åíèå çàäà÷ è, â ÷àñòíîñòè, íà îáðàáîòêó ïðåðûâàíèé, ïîñêîëüêó íåîáõîäèìî äîæäàòüñÿ âûïîëíåíèÿ âñåõ èíñòðóêöèé â êîíâåéåðå. Óâåëè÷åíèå ãëóáèíû êîíâåéåðà è ðàçìåðîâ êýøà íå âñåãäà ïðèâîäèò ê óñêîðåíèþ ðàáîòû ÎÑРèç-çà áîëüøîãî êîëè÷åñòâà ïðåðûâàíèé (ò.å. ïåðåêëþ÷åíèé çàäà÷), ïîñêîëüêó êîíâåéåðû è êýø íå óñïåâàþò çàïîëíèòüñÿ íåîáõîäèìûìè èíñòðóêöèÿìè è äàííûìè. Óâåëè÷åíèå ðàçìåðîâ êýøà ïðèâîäèò ê óâåëè÷åíèþ íàêëàäíûõ ðàñõîäîâ íà èõ ñèíõðîíèçàöèþ â ìíîãîïðîöåññîðíûõ ñèñòåìàõ.  ðÿäå ñèòóàöèé ÎÑРïðèõîäèòñÿ áëîêèðîâàòü âñå êîíâåéåðû ñóïåðñêàëÿðíîãî ïðîöåññîðà, êðîìå îäíîãî. Äåëî â òîì, ÷òî èíñòðóêöèè â òàêîì ïðîöåññîðå ìîãóò çàâåðøàòüñÿ íå â òîì ïîðÿäêå, â êîòîðîì îíè ïîäàâàëèñü â ïðîöåññîð. Íàïðèìåð, ïîòîê èíñòðóêöèé I4 ! I3 ! I2 ! I1 ! ïðîöåññîð ìîæåò áûòü ðàñïðåäåëåí ìåæäó äâóìÿ êîíâåéåðàìè êàê I3 ! I1 ! êîíâåéåð1 , I4 ! I2 ! êîíâåéåð2 . Åñëè èíñòðóêöèÿ I1 âûïîëíÿåòñÿ î÷åíü äîëãî (íàïðèìåð, â íåé äåëàåòñÿ îáðàùåíèå ê ïàìÿòè), òî èíñòðóêöèè I2 , I4 áóäóò èñïîëíåíû ðàíüøå, ÷åì I1 , I3 . Ýòà ñèòóàöèÿ íåäîïóñòèìà ïðè ðàáîòå ñ ââîäîì/âûâîäîì. Ïîýòîìó â ñóïåðñêàëÿðíûõ ïðîöåññîðàõ ñóùåñòâóþò èíñòðóêöèè, ïåðåâîäÿùèå åãî â ïîñëåäîâàòåëüíûé ðåæèì èñïîëíåíèÿ èíñòðóêöèé äëÿ îáåñïå÷åíèÿ èõ ïðàâèëüíîãî ïîðÿäêà. ×àñòî ýòè èíñòðóêöèè ôàêòè÷åñêè áëîêèðóþò âñå êîíâåéåðû, êðîìå îäíîãî. DR Äîâîäû (ñòàòèñòè÷åñêèé àíàëèç), ïîëîæåííûå â îñíîâó îáîñíîâàíèÿ RISC àðõèòåêòóðû, îêàçàëèñü íå ñîâñåì âåðíûìè äëÿ ÎÑÐÂ. ×àñòî ïðèëîæåíèå ÎÑРïðîâîäèò çíà÷èòåëüíóþ ÷àñòü âðåìåíè â îáðàáîòêå ïðåðûâàíèé îò âíåøíèõ óñòðîéñòâ. Îáðàáîò÷èêè ïðåðûâàíèé ÷àñòî ïèøóòñÿ íà àññåìáëåðå è íàëè÷èå ñëîæíûõ èíñòðóêöèé â CISC ïðîöåññîðå ïîçâîëÿåò óìåíüøèòü äëèíó îáðàáîò÷èêà. Íàëè÷èå ñëîæíûõ ðåæèìîâ àäðåñàöèè ïàìÿòè ïîçâîëÿåò îáîéòèñü ìåíüøèì êîëè÷åñòâîì ðåãèñòðîâ è, ñîîòâåòñòâåííî, åùå óìåíüøèòü îáðàáîò÷èê (çà ñ÷åò óìåíüøåíèÿ êîëè÷åñòâà ñîõðàíÿåìûõ/âîññòàíàâëèâàåìûõ ðåãèñòðîâ). AF Äëÿ óñêîðåíèÿ îáðàáîòêè ïðåðûâàíèé, â íåêîòîðûõ ïðîöåññîðàõ ïðèìåíÿþòñÿ ñïåöèàëüíûå ìåðû. Òàáëèöà ïðåðûâàíèé ìîæåò õðàíèòüñÿ âî âíóòðåííåé ïàìÿòè ïðîöåññîðà, ÷òî äåëàåò íå íóæíîé âûáîðêó èç âíåøíåé ïàìÿòè (Intel 80960). Ïðîöåññîð ìîæåò âêëþ÷àòü òåíåâûå ðåãèñòðû, ÷òî äåëàåò íå íóæíûì ñîõðàíåíèå êîíòåêñòà òåêóùåé çàäà÷è â ïðîñòûõ ïðîöåäóðàõ îáðàáîòêè ïðåðûâàíèé (HP-PA). Êðèòè÷åñêèå ïðîöåäóðû îáðàáîòêè ïðåðûâàíèé ìîãóò áûòü çàáëîêèðîâàíû â êýøå èíñòðóêöèé (Motorola 68060). Òàáëèöà ïðåðûâàíèé ìîæåò õðàíèòü ïåðâûå èíñòðóêöèè îáðàáîò÷èêà ïðåðûâàíèé, ÷òî óìåíüøàåò ïðîñòîé êîíâåéåðà (SPARC). 65 11. Àðõèòåêòóðû ïðîöåññîðîâ 11.2. Îðãàíèçàöèÿ äàííûõ âî âíåøíåé ïàìÿòè T  ñèñòåìàõ ðåàëüíîãî âðåìåíè äîñòàòî÷íî ÷àñòîé ÿâëÿåòñÿ ñèòóàöèÿ, êîãäà â îäíîì VME êðåéòå íàõîäÿòñÿ íåñêîëüêî ïëàò, ïîñòðîåííûõ íà ïðîöåññîðàõ ðàçíûõ ïðîèçâîäèòåëåé. Ýòè ïëàòû îáû÷íî ðåøàþò îáùóþ çàäà÷ó ïî óïðàâëåíèþ ïðîìûøëåííûì îáîðóäîâàíèåì è îáìåíèâàþòñÿ ìåæäó ñîáîé äàííûìè ÷åðåç ðàçäåëÿåìóþ ïàìÿòü (ñîáñòâåííî, ýòî åäèíñòâåííûé ñïîñîá îáìåíà, ïðåäîñòàâëÿåìûé øèíîé VME, ñì. ðàçäåë 12.1).  ýòîé ñèòóàöèè íåîáõîäèìî ñîãëàñîâàíèå ïðåäñòàâëåíèÿ äàííûõ â ïàìÿòè êàæäûì èç ó÷àñòâóþùèõ â îáìåíå ïðîöåññîðîâ. 11.2.1. Îðãàíèçàöèÿ öåëî÷èñëåííûõ äàííûõ AF Ïðè äîñòóïå ê öåëî÷èñëåííûì äàííûì îñíîâíûì âîïðîñîì ÿâëÿåòñÿ ñïîñîá íóìåðàöèè áàéòîâ â ñëîâå. Åñëè áû â 32-áèòíîé àðõèòåêòóðå ìèíèìàëüíûì àäðåñóåìûì ýëåìåíòîì îïåðàòèâíîé ïàìÿòè ÿâëÿëîñü áû 32-áèòíîå ñëîâî, òî âîïðîñ î íóìåðàöèè áàéòîâ â ñëîâå íå âñòàâàë áû.  ðåàëüíîé ñèòóàöèè, êîãäà ìèíèìàëüíûì àäðåñóåìûì ýëåìåíòîì îïåðàòèâíîé ïàìÿòè ÿâëÿåòñÿ áàéò (8-ìè áèòíîå ñëîâî), äàííûå áîëüøåãî ðàçìåðà îáðàçóþòñÿ êàê îáúåäèíåíèå ïîäðÿä èäóùèõ áàéò. Âûáîð íóìåðàöèè áàéò â 32 áèòíîì (4 áàéòà) ñëîâå ìîæåò áûòü ïðîèçâîëüíûì, ÷òî äàåò 24 = 4! ñïîñîáà. Íà ïðàêòèêå èñïîëüçóþòñÿ òîëüêî äâà: ABCD (íàçûâàåìûé big-endian) è DCBA (íàçûâàåìûé little-endian).  big-endian ìîäåëè áàéòû â ñëîâå íóìåðóþòñÿ îò íàèáîëåå çíà÷èìîãî ê íàèìåíåå çíà÷èìîìó.  little-endian ìîäåëè áàéòû â ñëîâå íóìåðóþòñÿ îò íàèìåíåå çíà÷èìîãî ê íàèáîëåå çíà÷èìîìó. Ïðèìåðû big-endian ïðîöåññîðîâ: Motorola 68xxx, PowerPC (ïî óìîë÷àíèþ), SPARC, ïðèìåð little-endian ïðîöåññîðà: Intel 80x86. Ïðîöåññîðû PowerPC, Intel 80960x, ARM, SPARC (64-áèòíûå ìîäåëè) ìîãóò ðàáîòàòü êàê â big-endian ðåæèìå, òàê è â littleendian. Åñëè ïðîöåññîðû, îñóùåñòâëÿþùèå îáìåí ÷åðåç ðàçäåëÿåìóþ ïàìÿòü, èñïîëüçóþò ðàçíûé ðåæèì íóìåðàöèè áàéòîâ, òî ïîòðåáóåòñÿ ïðåîáðàçîâûâàòü âñå ïîëó÷åííûå èëè ïåðåäàííûå äàííûå. Ïðàêòè÷åñêè âñå ñîâðåìåííûå ïðîöåññîðû èìåþò äëÿ ýòîé öåëè ñïåöèàëüíóþ èíñòðóêöèþ. 11.2.2. Îðãàíèçàöèÿ äàííûõ ñ ïëàâàþùåé òî÷êîé DR Âñå ñîâðåìåííûå ïðîöåññîðû ïîääåðæèâàþò ñòàíäàðò ANSI/IEEE 754-1985 â îðãàíèçàöèè äàííûõ ñ ïëàâàþùåé òî÷êîé. Íåîáõîäèìî òîëüêî ó÷èòûâàòü, ÷òî äàííûå ñ ïëàâàþùåé òî÷êîé ñîäåðæàò íåñêîëüêî áàéò, ïîýòîìó íà íèõ òàêæå îêàçûâàåò âëèÿíèå ñïîñîá íóìåðàöèè áàéòîâ â ñëîâå. floating-point single: ðàçìåð 4 áàéòà, çíàê s áèò 31 (1 áèò) ïîêàçàòåëü p áèòû 23. . . 30 (8 áèò) ìàíòèññà x áèòû 0. . . 22 (23 áèò) 0 255 ) ( 1)s 2p 127 1 Íîðìàëèçîâàííîå çíà÷åíèå (ò.å. ïðè < p < :x floating-point double: ðàçìåð 8 áàéò, çíàê s áèò 63 (1 áèò) ïîêàçàòåëü p áèòû 52. . . 62 (11 áèò) ìàíòèññà x áèòû 0. . . 51 (52 áèò) 0 ( 1)s 2p Íîðìàëèçîâàííîå çíà÷åíèå (ò.å. ïðè 66 < p < 2047 ) 1 1023 :x 11.3. Ïðîöåññîðû Motorola 68xxx ðàçìåð 16 áàéò, çíàê s áèò 127 (1 áèò) ïîêàçàòåëü ìàíòèññà x p T floating-point quad: (ïîääåðæèâàåòñÿ íå âñåìè ïðîöåññîðàìè) áèòû 112. . . 126 (15 áèò) áèòû 0. . . 111 (112 áèò) 0 ( 1)s 2p 32767 ) 16382 1 < p < :x AF Íîðìàëèçîâàííîå çíà÷åíèå (ò.å. ïðè 11.2.3. Ïóòè ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè îïåðàòèâíîé ïàìÿòè Äëÿ ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè îïåðàòèâíîé ïàìÿòè ïàìÿòè ïðèìåíÿþò íåñêîëüêî ïðèåìîâ. Ââåäåíèå íåáîëüøîé ñòàòè÷åñêîé ïàìÿòè SRAM äëÿ áóôåðèçàöèè DRAM ìîäóëåé: áóôåðèçîâàííûå DIMM ìîäóëè. Ââåäåíèå êîíâåéåðà â ìîäóëè DRAM. Èñïîëüçóåòñÿ òà æå èäåÿ, ÷òî è ïðè ââåäåíèè êîíâåéåðà â ïðîöåññîðû. Âíóòðè ìîäóëÿ ïàìÿòè íàõîäèòñÿ íåñêîëüêî îáðàáàòûâàåìûõ îáðàùåíèé ê ïàìÿòè â ðàçíîé ñòåïåíè ãîòîâíîñòè (ôîðìèðîâàíèå àäðåñà, âûáîð áàíêà, âûáîðêà äàííûõ, çàïèñü èõ íà âíåøíþþ øèíó è ò.ä.). Ýòî ïîçâîëÿåò ìîäóëþ ïàìÿòè ïðèíèìàòü/âûäàâàòü äàííûå êàæäûé öèêë øèíû (ïðè óñëîâèè îïòèìàëüíîãî ôóíêöèîíèðîâàíèÿ êîíâåéåðà).  ñèëó ýòîãî òàêàÿ ïàìÿòü ïîëó÷èëà íàçâàíèå synchronous DRAM (SDRAM). Äëÿ òàêîé ïàìÿòè â êà÷åñòâå âðåìåíè äîñòóïà ïðîèçâîäèòåëè â ðåêëàìíûõ öåëÿõ ïèøóò ìèíèìàëüíûé öèêë øèíû, ÷òî äàåò ôàíòàñòè÷åñêèå âðåìåíà äîñòóïà ìåíåå 10ns (ò.å. ÷àñòîòà øèíû áîëåå 100MHz). Íà ñàìîì æå äåëå â ìîäóëÿõ SDRAM èñïîëüçîâàíû îáû÷íûå ìèêðîñõåìû ïàìÿòè, âðåìÿ äîñòóïà ê êîòîðûì îêîëî 60ns. DR Óâåëè÷åíèå øèðèíû øèíû äàííûõ: ïåðåõîä îò SIMM (32 áèò øèíà) ê DIMM (64 èëè 128 áèò øèíà) ìîäóëÿì ïðè ïîñòðîåíèè ïîäñèñòåìû ïàìÿòè. Ðàññëîåíèå îïåðàòèâíîé ïàìÿòè. Ïîñêîëüêó ïðîöåññîð îáìåíèâàåòñÿ ñ ïàìÿòüþ òîëüêî áëîêàìè ðàçìåðîì ñî ñòðîêó êýøà, òî ìîæíî ðàçäåëèòü ýòîò áëîê íà N ÷àñòåé (N îáû÷íî 2, 4, 8) è ïåðåäàòü êàæäóþ èç ÷àñòåé ñâîåé ïîäñèñòåìå ïàìÿòè.  ðåçóëüòàòå ïîëó÷àþòñÿ N ïîäñèñòåì ïàìÿòè, ðàáîòàþùèõ ïàðàëëåëüíî. Åñëè ïðîãðàììà òðåáóåò ïîñëåäîâàòåëüíûå àäðåñà ïàìÿòè (ò.å. ñòðàòåãèÿ ïðåäâûáîðêè ñòðîêè êýøà ñåáÿ îïðàâäûâàåò), òî ýòîò ïîäõîä ìîæåò â N ðàç óâåëè÷èòü ïðîèçâîäèòåëüíîñòü ïîäñèñòåìû ïàìÿòè. 11.3. Ïðîöåññîðû Motorola 68xxx Ïðîöåññîðû Motorola 68xxx äëèòåëüíîå âðåìÿ äîìèíèðîâàëè íà ðûíêå ïðîìûøëåííûõ êîìïüþòåðíûõ ñèñòåì. Ñåé÷àñ îíè îòòåñíåíû íà âòîðîå ìåñòî ïðîöåññîðàìè PowerPC. 11.3.1. Îáùèé îáçîð Ñåìåéñòâî ïðîöåññîðîâ Motorola 68xxx (ñîêðàùåííî M68k) õàðàêòåðèçóåòñÿ ïðîñòîòîé ðåàëèçàöèè êàê àïïàðàòíûõ, òàê è ïðîãðàììíûõ ðåøåíèé íà åãî áàçå. Ïåðâûì ïðîöåññîðîì ñåìåéñòâà ÿâëÿëñÿ õîðîøî èçâåñòíûé M68000. Õîòÿ îí ïîÿâèëñÿ â 1979 ãîäó, îí ÿâëÿåòñÿ ïðîöåññîðîì ñ ïîëíîé 32-áèòíîé âíóòðåííåé àðõèòåêòóðîé. Ïîäîáíî âñåì ïîñëåäóþùèì ïðîöåññîðàì, åãî ëèíåéíàÿ îðãàíèçàöèÿ ïàìÿòè è åäèíîå ñ ïàìÿòüþ ïðîñòðàíñòâî ââîäà/âûâîäà îáëåã÷àåò àïïàðàòíûå è ïðîãðàììíûå ðàçðàáîòêè. Íàêîíåö, ñïåöèàëüíûå âûâîäû ïðîöåññîðà 67 11. Àðõèòåêòóðû ïðîöåññîðîâ AF T óñòàíàâëèâàþòñÿ íà êàæäîì öèêëå øèíû äëÿ òîãî, ÷òîáû ðàçëè÷èòü ñóïåðâèçîðñêîå è ïîëüçîâàòåëüñêîå àäðåñíûå ïðîñòðàíñòâà. Åñëè ýòè âûâîäû äåêîäèðîâàòü ïðè âû÷èñëåíèè àäðåñà, òî ñèñòåìíûå ðåñóðñû áóäóò èçîëèðîâàíû îò íåñàíêöèîíèðîâàííîãî äîñòóïà ïîëüçîâàòåëüñêèõ ïðîãðàìì. Ñëåäóþùèå ïîêîëåíèÿ ïðîöåññîðîâ M68k, âêëþ÷àÿ M68060, ñ ïðîãðàììíîé òî÷êè çðåíèÿ âíîñèëè òîëüêî íîâûå ðåæèìû àäðåñàöèè ïàìÿòè è íåêîòîðûå äîïîëíèòåëüíûå èíñòðóêöèè, è ïîýòîìó ïðîãðàììèðóþòñÿ òàê æå ëåãêî, êàê M68000. Ýâîëþöèÿ çàòðîíóëà àïïàðàòíóþ àðõèòåêòóðó ïðîöåññîðîâ: â èõ ñîñòàâå ïîÿâèëèñü è ðàçâèâàëèñü êîíâåéåðû, êýøè, MMU, FPU è ò.ä. Îñíîâûâàÿñü íà àðõèòåêòóðå M68k Motorola ðàçðàáîòàëà ñåìåéñòâî êîíòðîëëåðîâ MC683xx, êîòîðûå ðàçäåëÿþò íà 3 ãðóïïû: ãðóïïó 68000, CPU32 è CPU32+.  ýòèõ êîíòðîëëåðàõ âû÷èñëèòåëüíàÿ ìîùíîñòü M68k ñî÷åòàåòñÿ ñ èíòåãðèðîâàííûìè ïåðèôåðèéíûìè ïðîöåññîðàìè, îáðàçóÿ âûñîêîïðîèçâîäèòåëüíûå êîíòðîëëåðû. Íàèáîëåå ñïåöèàëèçèðîâàííûå, îðèåíòèðîâàííûå íà ââîä/âûâîä êîíòðîëëåðû (68302 è 68360) âêëþ÷àþò íåïðîãðàììèðóåìûé RISC ïðîöåññîð, óïðàâëÿþùèé ïîñëåäîâàòåëüíûì êîììóíèêàöèîííûì êàíàëîì. Ýòî äàåò âîçìîæíîñòü îäíîìó óñòðîéñòâó óïðàâëÿòü òàêèì ñëîæíûì ïîñëåäîâàòåëüíûì êàíàëîì, êàê Ethernet èëè ISDN. Âñå ÷ëåíû ñåìåéñòâà MC683xx èìåþò ìåæìîäóëüíóþ øèíó (intermodule bus, IMB). IMB îáåñïå÷èâàåò îáùèé èíòåðôåéñ äëÿ âñåõ ìîäóëåé ñåìåéñòâà MC683xx, ÷òî ïîçâîëÿåò ôèðìå Motorola áûñòðî ðàçðàáàòûâàòü íîâûå óñòðîéñòâà, èñïîëüçóÿ áèáëèîòåêè ñóùåñòâóþùèõ ìîäóëåé. 11.3.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà Êàæäûé ïðîöåññîð â ïðèâåäåííûõ íèæå òåõíè÷åñêèõ äàííûõ îáëàäàåò âñåìè âîçìîæíîñòÿìè ïðåäûäóùèõ ïðîöåññîðîâ äëÿ îáåñïå÷åíèÿ ñîâìåñòèìîñòè. M68000 (1979, 68000 òðàíçèñòîðîâ, ìàêñ. ÷àñòîòà: 16.67MHz, 1 MIPS): àñèíõðîííûå ïåðåäà÷è äàííûõ (êðîìå îáëàñòè èíòåðôåéñà 6800) 16-áèòíàÿ øèíà äàííûõ, îòñóòñòâóåò äèíàìè÷åñêîå èçìåíåíèå øèðèíû øèíû 24-áèòíàÿ øèíà àäðåñà 14 ðåæèìîâ àäðåñàöèè ïàìÿòè (âêëþ÷àÿ êîñâåííûå ðåãèñòðîâûå) DR 16 32-áèòíûõ ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ äâà óðîâíÿ ïðèâèëåãèé: ïîëüçîâàòåëüñêèé è ñóïåðâèçîðñêèé äâà óêàçàòåëÿ ñòåêà äëÿ ðàçäåëåíèÿ ïîëüçîâàòåëüñêîãî è ñóïåðâèçîðñêîãî ñòåêîâ ôèêñèðîâàííàÿ â ïàìÿòè òàáëèöà ïðåðûâàíèé (íà÷èíàÿ ñ àäðåñà 0) îäíà íåäåëèìàÿ èíñòðóêöèÿ TAS (Test And Set) äëÿ óñòàíîâêè ñåìàôîðîâ M68010 (1983, 68000 òðàíçèñòîðîâ, ìàêñ. ÷àñòîòà: 16.67MHz, 1 MIPS): ïåðåìåùàåìàÿ òàáëèöà ïðåðûâàíèé ïîääåðæêà ìåõàíèçìà âèðòóàëüíîé ïàìÿòè M68020 (1984, 195000 òðàíçèñòîðîâ, ìàêñ. ÷àñòîòà: 25MHz, 5 MIPS): àñèíõðîííûå ïåðåäà÷è äàííûõ 68 øèíà äàííûõ, äèíàìè÷åñêîå èçìåíåíèå øèðèíû øèíû (àäàïòèðóåòñÿ ê 8-ìè, 16-òè è 32-õ áèòíûì îáìåíàì ñ âíåøíèìè óñòðîéñòâàìè) 32-áèòíàÿ 32-áèòíàÿ øèíà àäðåñà 18 ðåæèìîâ àäðåñàöèè ïàìÿòè (âêëþ÷àÿ êîñâåííûå ÷åðåç ïàìÿòü) 256-áàéò êýø èíñòðóêöèé 11.3. Ïðîöåññîðû Motorola 68xxx êîíâåéåð, ÷òî ïîçâîëÿåò îäíîâðåìåííî îáðàáàòûâàòü äî òðåõ ñëîâ îäíîé îïåðàöèè èëè òðè ïîñëåäîâàòåëüíûå èíñòðóêöèè 3-õ ñòàäèéíûé T èíòåðôåéñ ñîïðîöåññîðà, ÷òî ïîçâîëÿåò ïîäêëþ÷èòü âíåøíåå FPU (MC68881 èëè MC68882) è MMU (MC68851) äîïîëíèòåëüíûé óêàçàòåëü ñòåêà äëÿ ðàçäåëåíèÿ àïïàðàòíûõ è ïðîãðàììíûõ ïðåðûâàíèé äâå äîïîëíèòåëüíûõ íåäåëèìûõ èíñòðóêöèè: CAS è CAS2 (Compare And Swap 32 èëè 64 áèòà) äëÿ óñòàíîâêè ñåìàôîðîâ íîâûå èíñòðóêöèè äëÿ ðàáîòû ñ áèòîâûìè ïîëÿìè AF M68030 (1986, 300000 òðàíçèñòîðîâ, ìàêñ. ÷àñòîòà: 50MHz, 8 MIPS): Ãàðâàðäñêàÿ àðõèòåêòóðà äâà ðàçëè÷íûõ êýøà: 256-áàéò êýø èíñòðóêöèé + 256-áàéò êýø äàííûõ àñèíõðîííûå ïåðåäà÷è äàííûõ ñèíõðîííûé èíòåðôåéñ, ÷òî ïîçâîëÿåò îñóùåñòâëÿòü áëî÷íûå (burst) ïåðåäà÷è â/èç êýøà MMU, ïîçâîëÿþùåå ðàáîòàòü ñî ñòðàíèöàìè ðàçìåðîì îò 256 áàéò äî 256 êèëîáàéò M68040 (1989, 1200000 òðàíçèñòîðîâ, ìàêñ. ÷àñòîòà øèíû: 40MHz, 8 MIPS, 3.5Mflops): ñèíõðîííûå ïåðåäà÷è äàííûõ îòñóòñòâóåò äèíàìè÷åñêîå èçìåíåíèå øèðèíû øèíû ÷àñòîòà ïðîöåññîðà ðàâíà óäâîåííîé ÷àñòîòå øèíû (ìàêñèìàëüíî 80MHz) 6-òè ñòàäèéíûé FPU 4-êèëîáàéò êîíâåéåð êýø èíñòðóêöèé + 4-êèëîáàéò êýø äàííûõ ìåõàíèçì ñèíõðîíèçàöèè øèíû (bus snooping) (àðáèòðàæ øèíû äîëæåí áûòü âíåøíèì, ïðîöåññîð èìååò âûâîä çàïðîñà øèíû), ýòî îáåñïå÷èâàåò ñîãëàñîâàíèå êýøåé â ìíîãîïðîöåññîðíûõ ñèñòåìàõ DR M68060 (1994, 2500000 òðàíçèñòîðîâ, ìàêñ. ÷àñòîòà øèíû: 66MHz, 100 MIPS): ñóïåðêîíâåéåðíûé, ñóïåðñêàëÿðíûé 32 áèòíûé ãèáðèäíûé CISC-RISC ïðîöåññîð íàáîð èíñòðóêöèé M68040 ðåàëèçîâàí àïïàðàòíîé ëîãèêîé, à íå ìèêðîêîäîì îñíîâíûå óñòðîéñòâà: áóôåð èíñòðóêöèé, 4-õ ñòàäèéíîå êîíâåéåðíîå óñòðîéñòâî ïðåäâûáîðêè, äâà 4-õ ñòàäèéíûõ êîíâåéåðíûõ öåëî÷èñëåííûõ óñòðîéñòâà, óñòðîéñòâî ïåðåõîäîâ, FPU ïîâûøåííîé òî÷íîñòè êýø ïåðåõîäîâ (BTC) ïîòîê èíñòðóêöèé ðàçäåëÿåòñÿ íà äâà êîíâåéåðà íà FIFO ñòàäèè óñòðîéñòâî ïðåäâûáîðêè ïðåîáðàçóåò âõîäíîé ïîòîê M680x0 èíñòðóêöèé, èìåþùèõ ïåðåìåííóþ äëèíó, â ïîòîê RISC èíñòðóêöèé ôèêñèðîâàííîé äëèíû M68060 ìîæåò ìîæåò èñïîëíÿòü çà îäèí öèêë 4 èíñòðóêöèè M680x0: äâå öåëî÷èñëåííûõ èíñòðóêöèè, îäíó èíñòðóêöèþ ïåðåõîäà è îäíó èíñòðóêöèþ ñ ïëàâàþùåé òî÷êîé; ýòîò ïàðàëëåëèçì îáåñïå÷èâàåò âûñîêóþ ñêîðîñòü èñïîëíåíèÿ äàæå äëÿ êîäà, íå ïåðåêîìïèëèðîâàííîãî ñïåöèàëüíî äëÿ M68060 4-êèëîáàéò êýø èíñòðóêöèé + 4-êèëîáàéò êýø äàííûõ àâòîìàòè÷åñêîå óìåíüøåíèå ïîòðåáëÿåìîé ìîùíîñòè: âíóòðåííèå ôóíêöèîíàëüíûå áëîêè àâòîìàòè÷åñêè âûêëþ÷àþòñÿ, åñëè îíè íå èñïîëüçóþòñÿ â òå÷åíèè ðÿäà öèêëîâ 69 11. Àðõèòåêòóðû ïðîöåññîðîâ T M68302 (ìèêðîêîíòðîëëåð ãðóïïû 68000): IMP (Integrated Multiprotocol Processor) M68302 ñîñòîèò èç ïðîöåññîðà M68000, System Integration Block (SIB) è Communication Processor (CP) SIB ñîäåðæèò êîíòðîëëåð DMA, äâà 16-áèòíûõ òàéìåðà îáùåãî íàçíà÷åíèÿ, êîíòðîëëåð ïàìÿòè è êîíòðîëëåð ïðåðûâàíèé CP ÿâëÿåòñÿ âûäåëåííûì RISC ïðîöåññîðîì, îáñëóæèâàþùèì 6 ïîñëåäîâàòåëüíûõ ïîðòîâ, è îòâå÷àåò çà ðàáîòó ñ ïîñëåäîâàòåëüíûìè êàíàëàìè ïî âûáðàííîìó ïîëüçîâàòåëåì ïðîòîêîëó (ISDN, UART, HDLC, BSC è äðóãèå) AF M68360 (èëè QUICC) (ìèêðîêîíòðîëëåð ãðóïïû CPU32+): M68360 ñîñòîèò èç ïðîöåññîðà CPU32+, SIM60 (System Integration Module) è CPM (Communication Processor Module) ïðîöåññîð CPU32+ ÿâëÿåòñÿ ïðîöåññîðîì M68020 áåç êýøà è ñîïðîöåññîðíîãî èíòåðôåéñà; ñèñòåìà êîìàíä ïðîöåññîðà M68020 ðàñøèðåíà CPU32+ ñïåöèôè÷åñêèìè èíñòðóêöèÿìè òàáëè÷íîé èíòåðïîëÿöèè SIM60 èíòåãðèðóåò îñíîâíûå óñòðîéñòâà îáùåãî íàçíà÷åíèÿ, êîòîðûå ìîãóò áûòü ïîëåçíû â ëþáûõ 32-áèòíûõ ïðîöåññîðíûõ ñèñòåìàõ: ñèíòåçàòîð ÷àñòîòû, òàéìåðû-áóäèëüíèêè, òàéìåð ïåðèîäè÷åñêîãî ïðåðûâàíèÿ, êîíòðîëëåð ïàìÿòè, ñïîñîáíûé áåç äîïîëíèòåëüíîé ëîãèêè óïðàâëÿòü 32-áèòíûìè DRAM CPM ñîäåðæèò 2 DMA êîíòðîëëåðà, 4 òàéìåðà îáùåãî íàçíà÷åíèÿ, êîíòðîëëåð ïðåðûâàíèé, 7 êîììóíèêàöèîííûõ êîíòðîëëåðîâ, óïðàâëÿþùèõ 7-þ ïîñëåäîâàòåëüíûìè ôèçè÷åñêèìè êàíàëàìè ïîääåðæèâàþòñÿ ïðîòîêîëû UART, ISDN, HDLC, BSC, AppleTalk ïðîòîêîë Ethernet ïîääåðæèâàåòñÿ â âåðñèè MC68EN360 11.3.3. Ïðîãðàììíàÿ ìîäåëü Ïðèêëàäíîé ïðîãðàììå äîñòóïíû 16 ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ è íåñêîëüêî ñëóæåáíûõ ðåãèñòðîâ. DR Ðåãèñòðû d0 d7 (ðåãèñòðû äàííûõ): Ìîãóò ñîäåðæàòü öåëî÷èñëåííûå äàííûå ñëåäóþùèõ òèïîâ 1. Áèò (M68020 è âûøå, òîëüêî èíñòðóêöèè, ðàáîòàþùèå ñ áèòîâûìè ïîëÿìè) 2. Äâîè÷íî-çàêîäèðîâàííûå äåñÿòè÷íûå ÷èñëà (BCD); áàéò ñîäåðæèò îäíó öèôðó, ñóùåñòâóþò èíñòðóêöèè, ðàáîòàþùèå ñ äâóìÿ öèôðàìè â îäíîì áàéòå 3. Áàéò (8 áèò); ïðè çàïèñè â ðåãèñòð ñòàðøàÿ ÷àñòü íå èñïîëüçóåòñÿ è íå èçìåíÿåòñÿ 4. Ñëîâî (16 áèò); ïðè çàïèñè â ðåãèñòð ñòàðøàÿ ÷àñòü íå èñïîëüçóåòñÿ è íå èçìåíÿåòñÿ 5. Äëèííîå ñëîâî (32 áèò) 6. Ñ÷åòâåðåííîå ñëîâî (64 áèò); èñïîëüçóþòñÿ ëþáûå äâà ðåãèñòðà, íàä òàêèìè îïåðàíäàìè îïðåäåëåíà òîëüêî èíñòðóêöèÿ ïåðåñûëêè (MOVEM). Ðåãèñòðû a0 a7 (ðåãèñòðû äàííûõ): Ìîãóò ñîäåðæàòü öåëî÷èñëåííûå äàííûå ñëåäóþùèõ òèïîâ 1. Ñëîâî (16 áèò); ïðè çàïèñè â ðåãèñòð ñòàðøàÿ ÷àñòü çàïîëíÿåòñÿ çíàêîâûì áèòîì èñòî÷íèêà 2. Äëèííîå ñëîâî (32 áèò) 70 11.4. Ïðîöåññîðû Intel 80x86 T Ðåãèñòð pc (program counter): ñîäåðæèò àäðåñ ñëåäóþùåé èíñòðóêöèè. Ïðè çàïèñè â ýòîò ðåãèñòð ïðîèñõîäèò ïåðåõîä ïî àäðåñó, êîòîðûé áûë çàïèñàí. Ðåãèñòð êîäà óñëîâèÿ ccr (condition code register): ÿâëÿåòñÿ ÷àñòüþ ðåãèñòðà ñòàòóñà (status register, SR), êîòîðûé íå äîñòóïåí ïîëüçîâàòåëüñêîé ïðîãðàììå êàê ðåãèñòð. Êîäû óñëîâèÿ óñòàíàâëèâàþòñÿ ïî ðåçóëüòàòó àðèôìåòè÷åñêèõ îïåðàöèé èëè ñïåöèàëüíûìè èíñòðóêöèÿìè, è èñïîëüçóþòñÿ â êîìàíäàõ óñëîâíîãî ïåðåõîäà. Ïîääåðæèâàþòñÿ ñëåäóþùèå ðåæèìû àäðåñàöèè ïàìÿòè (â òåðìèíàõ ÿçûêà C). ãäå (An + +) ( An ) (Bn + d + Xn ) ((Bn + d) + Xn + o) ((Bn + d + Xn ) + o) AF An àäðåñíûé ðåãèñòð a0 a7 Bn àäðåñíûé ðåãèñòð a0 a7 èëè pc Xn îòñóòñòâóåò èëè ðåãèñòð a0 a7 èëè d0 d7; ó M68020 è âûøå ìîæåò áûòü Xn s, s = 1; 2; 4; 8 d êîíñòàíòà ñî çíàêîì (8, 16, 32 áèò), âêëþ÷àÿ 0 o êîíñòàíòà ñî çíàêîì (16, 32 áèò), âêëþ÷àÿ 0 DR Èíñòðóêöèè ïðîöåññîðîâ Motorola 68xxx èìåþò îò íóëÿ äî òðåõ îïåðàíäîâ. Áîëüøèíñòâî èíñòðóêöèé (ïåðåñûëêè, àðèôìåòè÷åñêèå, ëîãè÷åñêèå) èìåþò äâà îïåðàíäà, îäèí èç êîòîðûõ íå èçìåíÿåòñÿ â îïåðàöèè (èñòî÷íèê), à äðóãîé ÿâëÿåòñÿ ðåçóëüòàòîì îïåðàöèè (ïðèåìíèê). Îáû÷íî èñïîëüçóåòñÿ ñèíòàêñèñ, â êîòîðîì èñòî÷íèê ÿâëÿåòñÿ ëåâûì îïåðàíäîì, à ïðèåìíèê - ïðàâûì. Ñóùåñòâóåò íåñêîëüêî èíñòðóêöèé, íåÿâíî èñïîëüçóþùèõ óêàçàòåëü ñòåêà a7. Ýòî ñòåêîâûå îïåðàöèè è âûçîâû ôóíêöèé. 11.4. Ïðîöåññîðû Intel 80x86 Ïðîöåññîðû Intel 80x86 äîìèíèðóþò íà ðûíêå ïåðñîíàëüíûõ êîìïüþòåðîâ. Íà ðûíêå ïðîìûøëåííûõ ñèñòåì èõ ðîëü íåçíà÷èòåëüíà. 11.4.1. Îáùèé îáçîð Ïåðâûé ïðåäñòàâèòåëü ñåìåéñòâà - i8086, ïîÿâèëñÿ â 1979ã. Ýòî áûë 16-òè áèòíûé ïðîöåññîð, îáåñïå÷èâàþùèé ñîâìåñòèìîñòü ñ ïðåäûäóùèìè 8-ìè áèòíûìè ïðîöåññîðàìè i8080 è i8085. Ýòî íàëîæèëî îïðåäåëåííûé îòïå÷àòîê íà ïðîãðàììíóþ àðõèòåêòóðó i8086: óñòàðåâøèé íàáîð èíñòðóêöèé, ìíîæåñòâî íåëîãè÷íûõ îãðàíè÷åíèé íà îïåðàíäû. Îñíîâíûå îáùèå ÷åðòû ñåìåéñòâà i80x86 ïðîñòðàíñòâî ââîäà/âûâîäà îòäåëåíî îò ïðîñòðàíñòâà ïàìÿòè, 71 11. Àðõèòåêòóðû ïðîöåññîðîâ ñåãìåíòíàÿ îðãàíèçàöèÿ ïàìÿòè, ìàëîå ÷èñëî ðåãèñòðîâ, T íåâçàèìîçàìåíÿåìîñòü ðåãèñòðîâ (ìíîãî èíñòðóêöèé, íåÿâíî èñïîëüçóþùèõ æåñòêî çàêðåïëåííûå ðåãèñòðû). Ïðîöåññîð i80386 áûë ïåðâûì 32-õ áèòíûì ïðîöåññîðîì â ñåìåéñòâå è óæå ìîã ðàáîòàòü ñ ïëîñêîé ìîäåëüþ ïàìÿòè. Îäíàêî, ýòîò ïðîöåññîð ñîõðàíèë ïðîãðàììíóþ ñîâìåñòèìîñòü ñ ïðåäûäóùèìè ÷ëåíàìè ñåìåéñòâà. Ýòî åùå áîëüøå óâåëè÷èëî åãî ñëîæíîñòü è çàêîíñåðâèðîâàëî óñòàðåâøóþ ïðîãðàììíóþ àðõèòåêòóðó i8086. AF 11.4.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà Êàæäûé ïðîöåññîð â ïðèâåäåííûõ íèæå òåõíè÷åñêèõ äàííûõ îáëàäàåò âñåìè âîçìîæíîñòÿìè ïðåäûäóùèõ ïðîöåññîðîâ äëÿ îáåñïå÷åíèÿ ñîâìåñòèìîñòè. i80386 (1987, 275000 òðàíçèñòîðîâ, 33MHz, 8 MIPS): 32-áèò øèíà äàííûõ è 32-áèò øèíà àäðåñà 8 32-áèòíûõ ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ äèíàìè÷åñêîå èçìåíåíèå øèðèíû øèíû (16 èëè 32 áèò) ïðîñòðàíñòâî ïàìÿòè îòäåëåíî îò 64Êá ïðîñòðàíñòâà ââîäà/âûâîäà áóôåð ïðåäâûáîðêè 16 áàéò MMU (ñòðàíè÷íîå èëè(è) ñåãìåíòíîå) ñ êýøåì ðåçóëüòàòîâ òðàíñëÿöèè; ìîæåò ðàáîòàòü â 3-õ ðåæèìàõ: real mode : 24 áèò ñåãìåíòíûé àäðåñ, íåò òðàíñëÿöèè protected mode : 32 áèò àäðåñ, ñòðàíè÷íîå èëè(è) ñåãìåíòíîå ïðåîáðàçîâàíèå : 24 áèò ñåãìåíòíûé àäðåñ, ñòðàíè÷íàÿ òðàíñëÿöèÿ âíåøíåå FPU i80387 âíåøíèé êîíòðîëëåð (âíåøíåé) êýø ïàìÿòè i82385 ïîääåðæêà ìíîãîçàäà÷íîñòè ïîñðåäñòâîì ðåãèñòðà çàäà÷è è äåñêðèïòîðîâ çàäà÷ DR virtual 8086 mode i80486 (1989, 1200000 òðàíçèñòîðîâ, ÷àñòîòà øèíû 33MHz, 20 MIPS): âíóòðåííÿÿ ÷àñòîòà ïðîöåññîðà ðàâíà ëèáî ÷àñòîòå øèíû (DX 33MHz), ëèáî óäâîåííîé ÷àñòîòå øèíû (DX2 66MHz), ëèáî óòðîåííîé ÷àñòîòå øèíû (DX4 100MHz) åäèíûé 8Êá (16Êá) êýø èíñòðóêöèé è äàííûõ (ñ ïîääåðæêîé áëîêîâûõ ïåðåäà÷ (burst access)) êýø ñêâîçíîé çàïèñè (write through)/ îáðàòíîé çàïèñè (write back) ìåõàíèçì ñèíõðîíèçàöèè êýøåé â ìíîãîïðîöåññîðíûõ ñèñòåìàõ (bus snooping) 32 áàéò áóôåð ïðåäâûáîðêè âñòðîåííîå FPU (áåç êîíâåéåðà) 5-òè ñòàäèéíûé êîíâåéåð, èñïîëüçóþùèé òàáëèöó ðåãèñòðîâ (register scoreboard) Pentium (1993, 3100000 òðàíçèñòîðîâ, ÷àñòîòà øèíû 50/60/66MHz, 100 specint92, 80 specfp92): âíóòðåííÿÿ ÷àñòîòà ïðîöåññîðà ðàâíà ëèáî ÷àñòîòå øèíû (60/66MHz), ëèáî 1.5 ÷àñòîòû øèíû (75/90/100MHz), óäâîåííîé ÷àñòîòå øèíû (120/133MHz), 2.5 ÷àñòîòû øèíû (150/166MHz), ëèáî óòðîåííîé ÷àñòîòå øèíû (180/200MHz) 72 64-áèò âíåøíÿÿ øèíà äàííûõ, íî 32-áèòíàÿ âíóòðåííÿÿ àðõèòåêòóðà ñóïåðñêàëÿðíàÿ àðõèòåêòóðà: 2 IU 11.4. Ïðîöåññîðû Intel 80x86 àïïàðàòíîå äåêîäèðîâàíèå óñòðîéñòâî ïðåäñêàçàíèÿ ïåðåõîäîâ (BU) T 5-òè ñòàäèéíûé êîíâåéåð â IU, 8-ìè ñòàäèéíûé êîíâåéåð â FPU Ãàðâàðäñêàÿ àðõèòåêòóðà: 8Êá êýø èíñòðóêöèé è 8Êá êýø äàííûõ ìåõàíèçì ñèíõðîíèçàöèè êýøåé MESI (Modified, Exclusive, Shared, Invalid), èñïîëüçóåìûé â PowerPC ãèáðèäíàÿ CISC/RISC àðõèòåêòóðà Pentium Pro (1996, 5500000 òðàíçèñòîðîâ, 150+MHz, 366 specint92, 283 specfp92): ñóïåðñêàëÿðíûé ïðîöåññîð: äî 5 èíñòðóêöèé çà öèêë 14-òè ñòàäèéíûå êîíâåéåðû (2 äëÿ IU è 1 äëÿ FPU) AF Ãàðâàðäñêàÿ àðõèòåêòóðà: 16Êá êýø èíñòðóêöèé è 8Êá êýø äàííûõ àðõèòåêòóðà DIB (Dual Independent Bus): îäíà øèíà ñâÿçûâàåò ïðîöåññîð ñ êýø ïàìÿòüþ âòîðîãî óðîâíÿ, à âòîðàÿ - ñ ÎÇÓ 256(512)Êá âñòðîåííûé êýø âòîðîãî óðîâíÿ; ðàñïîëîæåí íà îòäåëüíîì êðèñòàëëå, íî â òîì æå êîðïóñå, ñâÿçàí ñ ïðîöåññîðîì 64-áèòíîé øèíîé, ðàáîòàþùåé íà ÷àñòîòå ïðîöåññîðà èñïîëíåíèå èíñòðóêöèé íå ïî ïîðÿäêó ñïåêóëÿòèâíîå èñïîëíåíèå: âûïîëíåíèå èíñòðóêöèé çà òî÷êîé âåòâëåíèÿ ïåðåèìåíîâàíèå ðåãèñòðîâ (register renaming) Pentium-II (1997, 7500000 òðàíçèñòîðîâ, 233+MHz): Pentium Pro ÿäðî ñ àðõèòåêòóðîé DIB ñóïåðñêàëÿðíûé ïðîöåññîð: 2IU è 2FPU Ãàðâàðäñêàÿ àðõèòåêòóðà: 16Êá êýø èíñòðóêöèé è 16Êá êýø äàííûõ 512Êá âñòðîåííûé êýø âòîðîãî óðîâíÿ; ðàñïîëîæåí íà îòäåëüíîì êðèñòàëëå, ñâÿçàí ñ ïðîöåññîðîì 64-áèòíîé øèíîé, ðàáîòàþùåé íà ïîëîâèíå ÷àñòîòû ïðîöåññîðà (äëÿ ìîäèôèêàöèè Pentium-III Xeon íà ÷àñòîòå ïðîöåññîðà) DR Pentium-III (1999, 450+MHz): Pentium II ñ äîïîëíèòåëüíûìè ìóëüòèìåäèéíûìè èíñòðóêöèÿìè 512Êá âñòðîåííûé êýø âòîðîãî óðîâíÿ; ðàñïîëîæåí íà îòäåëüíîì êðèñòàëëå, ñâÿçàí ñ ïðîöåññîðîì 64-áèòíîé øèíîé, ðàáîòàþùåé íà ïîëîâèíå ÷àñòîòû ïðîöåññîðà (äëÿ ìîäèôèêàöèè Pentium-III Xeon íà ÷àñòîòå ïðîöåññîðà) P7 (Intel è HP, 2000): 64-áèò àðõèòåêòóðà RISC ïðîöåññîð ñ íàáîðîì êîìàíä PA-RISC, ñïîñîáåí âûïîëíÿòü èíñòðóêöèè i8086 11.4.3. Ïðîãðàììíàÿ ìîäåëü Ïðèêëàäíîé ïðîãðàììå äîñòóïíû 8 ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ è íåñêîëüêî ñëóæåáíûõ ðåãèñòðîâ. Ðåãèñòðû eax, ebx, ecx, edx: Ìîãóò ñîäåðæàòü öåëî÷èñëåííûå äàííûå ñëåäóþùèõ òèïîâ 1. Áèò (òîëüêî èíñòðóêöèè, ðàáîòàþùèå ñ áèòîâûìè ïîëÿìè) 2. Äâîè÷íî-çàêîäèðîâàííûå äåñÿòè÷íûå ÷èñëà (BCD); áàéò ñîäåðæèò îäíó öèôðó, ñóùåñòâóþò èíñòðóêöèè, ðàáîòàþùèå ñ äâóìÿ öèôðàìè â îäíîì áàéòå 73 11. Àðõèòåêòóðû ïðîöåññîðîâ T 3. Áàéò (8 áèò); ïðè çàïèñè â ðåãèñòð ñòàðøàÿ ÷àñòü íå èñïîëüçóåòñÿ è íå èçìåíÿåòñÿ; âîçìîæåí äîñòóï ê áèòàì 0. . . 7 è áèòàì 8. . . 15 ñîîòâåòñòâåííî ïî èìåíàì al, bl, cl, dl è ah, bh, ch, dh 4. Ñëîâî (16 áèò); ïðè çàïèñè â ðåãèñòð ñòàðøàÿ ÷àñòü íå èñïîëüçóåòñÿ è íå èçìåíÿåòñÿ; îáðàùåíèå îñóùåñòâëÿåòñÿ ïî èìåíè ax, bx, cx, dx ñîîòâåòñòâåííî 5. Äëèííîå ñëîâî (32 áèò) Ðåãèñòðû esi, edi, ebp, esp: Ìîãóò ñîäåðæàòü öåëî÷èñëåííûå äàííûå ñëåäóþùèõ òèïîâ 1. Áèò (òîëüêî èíñòðóêöèè, ðàáîòàþùèå ñ áèòîâûìè ïîëÿìè) AF 2. Äâîè÷íî-çàêîäèðîâàííûå äåñÿòè÷íûå ÷èñëà (BCD); áàéò ñîäåðæèò îäíó öèôðó, ñóùåñòâóþò èíñòðóêöèè, ðàáîòàþùèå ñ äâóìÿ öèôðàìè â îäíîì áàéòå 3. Ñëîâî (16 áèò); ïðè çàïèñè â ðåãèñòð ñòàðøàÿ ÷àñòü íå èñïîëüçóåòñÿ è íå èçìåíÿåòñÿ; îáðàùåíèå îñóùåñòâëÿåòñÿ ïî èìåíè si, di, bp, sp ñîîòâåòñòâåííî 4. Äëèííîå ñëîâî (32 áèò) Ðåãèñòð êîäà óñëîâèÿ ccr (condition code register): ÿâëÿåòñÿ ÷àñòüþ ðåãèñòðà ôëàãîâ (EFLAGS), êîòîðûé íå äîñòóïåí ïîëüçîâàòåëüñêîé ïðîãðàììå êàê ðåãèñòð. Êîäû óñëîâèÿ óñòàíàâëèâàþòñÿ ïî ðåçóëüòàòó àðèôìåòè÷åñêèõ îïåðàöèé èëè ñïåöèàëüíûìè èíñòðóêöèÿìè è èñïîëüçóþòñÿ â êîìàíäàõ óñëîâíîãî ïåðåõîäà. Ñëåäóþùèå ðåãèñòðû äîñòóïíû ïîëüçîâàòåëüñêîé ïðîãðàììå, íî íå èñïîëüçóþòñÿ â ïðèêëàäíûõ ïðîãðàììàõ äëÿ UNIX ñèñòåì (ïîñêîëüêó îíè ðàáîòàþò â ïëîñêîé ìîäåëè ïàìÿòè): Ñåãìåíòíûå ðåãèñòðû gs, fs, es, ds, cs, ss: ñîäåðæàò 16-áèò ñåëåêòîðû ñåãìåíòîâ, íåÿâíî ó÷àñòâóþò ïðè ôîðìèðîâàíèè àäðåñà Âñå ðåæèìû àäðåñàöèè ïàìÿòè ïðîöåññîðîâ Intel 80x86 ìîæíî çàïèñàòü îäíîé ôîðìóëîé: àäðåñ ÿ÷åéêè ïàìÿòè åñòü DR base + index scale + displacement ãäå base áàçîâûé ðåãèñòð: eax, ebx, ecx, edx, esi, edi, ebp, esp index èíäåêñíûé ðåãèñòð: eax, ebx, ecx, edx, esi, edi, ebp scale öåëàÿ êîíñòàíòà 1, 2, 4, 8 displacement ñìåùåíèå 8 èëè 32 áèò Ëþáîé èç ýëåìåíòîâ àäðåñà ìîæåò îòñóòñòâîâàòü (ñ îäíèì èñêëþ÷åíèåì: åñëè îòñóòñòâóåò index, òî äîëæåí îòñóòñòâîâàòü è scale). Èíñòðóêöèè ïðîöåññîðîâ Intel 80x86 èìåþò îò íóëÿ äî òðåõ îïåðàíäîâ (ÿâíûõ èëè íåÿâíûõ). Áîëüøèíñòâî èíñòðóêöèé (ïåðåñûëêè, àðèôìåòè÷åñêèå, ëîãè÷åñêèå) èìåþò äâà îïåðàíäà, îäèí èç êîòîðûõ íå èçìåíÿåòñÿ â îïåðàöèè (èñòî÷íèê), à äðóãîé ÿâëÿåòñÿ ðåçóëüòàòîì îïåðàöèè (ïðèåìíèê). Ôèðìà Intel èñïîëüçóåò ñèíòàêñèñ, â êîòîðîì ïðèåìíèê ÿâëÿåòñÿ ëåâûì îïåðàíäîì, à èñòî÷íèê - ïðàâûì. Íî áîëüøèíñòâî àññåìáëåðîâ â UNIX ñèñòåìàõ èñïîëüçóåò ñèíòàêñèñ a la Motorola 68xxx: ëåâûé îïåðàíä - èñòî÷íèê, ïðàâûé - ïðèåìíèê. Ó áîëüøèíñòâà äâóõîïåðàíäíûõ èíñòðóêöèé îäèí èç îïåðàíäîâ (èñòî÷íèê èëè ïðèåìíèê) ìîæåò áûòü ðåãèñòðîì èëè ÿ÷åéêîé ïàìÿòè, äðóãîé òîãäà ìîæåò áûòü ðåãèñòðîì èëè íåïîñðåäñòâåííûì çíà÷åíèåì. Ýòî ïîçâîëÿåò ðàçäåëèòü äâóõîïåðàíäíûå èíñòðóêöèè íà ñëåäóþùèå ãðóïïû: 74 11.5. Ïðîöåññîðû PowerPC ðåãèñòð - ðåãèñòð ðåãèñòð - ïàìÿòü ïàìÿòü - ðåãèñòð íåïîñðåäñòâåííîå çíà÷åíèå - ðåãèñòð íåïîñðåäñòâåííîå çíà÷åíèå - ïàìÿòü T Ñóùåñòâóþò èíñòðóêöèè, (íåÿâíî) îñóùåñòâëÿþùèå îïåðàöèè òèïà "ïàìÿòü - ïàìÿòü". Ýòî ñòðîêîâûå èíñòðóêöèè è îïåðàöèè ñî ñòåêîì. Èíñòðóêöèè, íåÿâíî èñïîëüçóþùèå æåñòêî çàêðåïëåííûå ðåãèñòðû: óìíîæåíèå è äåëåíèå ñ äâîéíîé òî÷íîñòüþ ââîä/âûâîä AF ðàáîòà ñî ñòðîêàìè öèêëû ñäâèãè îïåðàöèè ñî ñòåêîì (âêëþ÷àÿ âûçîâû ôóíêöèé) èíñòðóêöèÿ òðàíñëÿöèè  32-áèòíîì ðåæèìå ðàáîòû ïðîöåññîðà áîëüøèíñòâî èíñòðóêöèé èìåþò îïåðàíäû ðàçìåðîì 8 èëè 32 áèò; èñïîëüçîâàòü îïåðàíäû ðàçìåðîì 16 áèò ìîæíî ïðè èñïîëüçîâàíèè ñïåöèàëüíîãî ïðåôèêñà èíñòðóêöèè. Îäíàêî, èçìåíèòü ðàçìåð ñìåùåíèÿ â àäðåñå (8 èëè 32 áèò) òàêèì ñïîñîáîì íåâîçìîæíî. 11.5. Ïðîöåññîðû PowerPC DR Àðõèòåêòóðà PowerPC (Performance Optimized With Enhanced Risc Personal Computer) áûëà ðàçðàáîòàíà ñîâìåñòíî IBM, Motorola è Apple.  íàñòîÿùåå âðåìÿ îíà äîìèíèðóåò íà ðûíêå ïðîìûøëåííûõ ñèñòåì. 11.5.1. Îáùèé îáçîð Àðõèòåêòóðà PowerPC îïðåäåëÿåò òðè àðõèòåêòóðíûõ óðîâíÿ: UISA (User Instruction Set Architecture) îïðåäåëÿåò óðîâåíü àðõèòåêòóðû, êîòîðîìó äîëæíî óäîâëåòâîðÿòü ïîëüçîâàòåëüñêîå ïðîãðàììíîå îáåñïå÷åíèå. UISA çàäàåò ïðîãðàììíóþ ìîäåëü è ìîäåëü ïàìÿòè äëÿ ïîëüçîâàòåëüñêèõ ïðîãðàìì. Èìåííî, UISA îïðåäåëÿåò äîñòóïíûé ïðèêëàäíîé ïðîãðàììå íàáîð èíñòðóêöèé, íàáîð ðåãèñòðîâ, òèïû äàííûõ, ñîãëàøåíèÿ î õðàíåíèè ÷èñåë ñ ïëàâàþùåé òî÷êîé â ïàìÿòè, ìîäåëü èñêëþ÷åíèé, âèäèìóþ ïðèêëàäíîé ïðîãðàììîé. VEA OEA (Virtual Environment Architecture) îïðåäåëÿåò äîïîëíèòåëüíûé óðîâåíü àðõèòåêòóðû, êîòîðîìó äîëæíî óäîâëåòâîðÿòü ïîëüçîâàòåëüñêîå ïðîãðàììíîå îáåñïå÷åíèå, âûõîäÿùåå çà ðàìêè îáû÷íûõ òðåáîâàíèé ïðèêëàäíûõ ïðîãðàìì. VEA çàäàåò ìîäåëü ïàìÿòè äëÿ îêðóæåíèé, â êîòîðûõ ìíîæåñòâî óñòðîéñòâ ìîãóò ïîëó÷àòü äîñòóï ê ïàìÿòè, îïðåäåëÿåò ìîäåëü êýøà è èíñòðóêöèè óïðàâëåíèÿ êýøåì. (Operating Environment Architecture) îïðåäåëÿåò óðîâåíü àðõèòåêòóðû, êîòîðîìó äîëæíî óäîâëåòâîðÿòü ñóïåðâèçîðñêîå ïðîãðàììíîå îáåñïå÷åíèå (îïåðàöèîííûå ñèñòåìû). OEA îïðåäåëÿåò ìîäåëü óïðàâëåíèÿ ïàìÿòüþ, ðåãèñòðû óðîâíÿ ñóïåðïîëüçîâàòåëÿ, òðåáîâàíèÿ ê ñèíõðîíèçàöèè ïðîöåññîâ, ìîäåëü èñêëþ÷åíèé. 75 11. Àðõèòåêòóðû ïðîöåññîðîâ AF T Ýòè ñïåöèôèêàöèè ïîçâîëÿþò ðàçðàáàòûâàòü íîâûå ïðîöåññîðû ñåìåéñòâà, ñîõðàíÿÿ ïðîãðàììíóþ ñîâìåñòèìîñòü ñ ñóùåñòâóþùèìè è áóäóùèìè ïðîöåññîðàìè PowerPC. Âïåðâûå â èñòîðèè ðàçðàáîòêè ïðîöåññîðîâ âàæíåéøèå óñèëèÿ ïî ñïåöèôèêàöèè áûëè ïðåäïðèíÿòû äî ïîÿâëåíèÿ ïåðâîãî ïðîöåññîðà.  äîïîëíåíèå ê ýòèì àðõèòåêòóðíûì îïðåäåëåíèÿì òðè ïðîèçâîäèòåëÿ (IBM, Motorola, Apple) ðàçðàáîòàëè ýòàëîííóþ ïëàòôîðìó äëÿ ðàçðàáîòêè ïëàò íà îñíîâå PowerPC. CHRP (Common Hardware Reference Platform) ÿâëÿåòñÿ îòêðûòîé ñïåöèôèêàöèåé äëÿ ðàçðàáîòêè êîìïüþòåðíûõ ñèñòåì íà îñíîâå PowerPC. Îòìåòèì äâà âàæíåéøèõ àñïåêòà ýòîé ñïåöèôèêàöèè. Âî-ïåðâûõ, ñïåöèôèêàöèÿ îïèñûâàåò óñòðîéñòâà, èíòåðôåéñû è ôîðìàòû äàííûõ, òðåáóåìûå äëÿ ðàçðàáîòêè è ïîñòðîåíèÿ çàêîí÷åííîé êîìïüþòåðíîé ñèñòåìû. Îíà îïèñûâàåò ìåòîäû àáñòðàãèðîâàíèÿ àïïàðàòíûõ äåòàëåé îò îïåðàöèîííîé ñèñòåìû. Áîëåå òîãî, CHRP ïðåäïèñûâàåò èñïîëüçîâàòü âòîðóþ PCI øèíó, òàê, ÷òî øèíà PowerPC ðàçäåëÿåòñÿ òîëüêî L2 êýøåì, êîíòðîëëåðîì ïàìÿòè è ìîñòîì PCI. Ýòî ïîçâîëÿåò ðàçðàáîò÷èêàì èñïîëüçîâàòü íîâûå ïðîöåññîðû PowerPC áåç èçìåíåíèé â îñòàëüíîé ÷àñòè ïëàòû. Âî-âòîðûõ, ñïåöèôèêàöèÿ îïèñûâàåò ýòàëîííóþ ðåàëèçàöèþ îïåðàöèîííîé ñèñòåìû, ñîãëàñîâàííóþ ñ èçâåñòíûìè îïåðàöèîííûìè ñèñòåìàìè äëÿ PowerPC: AIX (IBM), Solaris (Sun), Windows NT (Microsoft). 11.5.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà Âñå ïåðå÷èñëåííûå íèæå ïðîöåññîðû óäîâëåòâîðÿþò ñòàíäàðòó íà PowerPC è îòëè÷àþòñÿ íàáîðîì àïïàðàòíûõ óñòðîéñòâ. PowerPC 603 (1993, 1600000 òðàíçèñòîðîâ): 8Êá êýø èíñòðóêöèé + 8Êá êýø äàííûõ (32-áèò Ãàðâàðäñêàÿ àðõèòåêòóðà) FPU êîíâåéåðèçèðîâàíî, òàê, ÷òî èíñòðóêöèè ñëîæåíèÿ è óìíîæåíèÿ îäèíàðíîé òî÷íîñòè ìîãóò îáðàáàòûâàòüñÿ êàæäûé öèêë 4-õ ñòàäèéíûé êîíâåéåð MMU, âûïîëíÿþùåå ñåãìåíòíóþ è ñòðàíè÷íóþ òðàíñëÿöèþ àäðåñà èç 52áèòíîãî ëîãè÷åñêîãî àäðåñà â 32-áèòíûé ôèçè÷åñêèé àäðåñ äâà 64-âõîäîâûõ TLB DR 5 íåçàâèñèìûõ èñïîëíÿþùèõ óñòðîéñòâ: 1 IU + 1 FPU + 1 BU + 1 load/store unit + 1 system register unit ïîòðåáëåíèå 3Âò íà ÷àñòîòå 80MHz, ÷åòûðå ïðîãðàììíî êîíòðîëèðóåìûõ ðåæèìà ýêîíîìèè ýíåðãèè PowerPC 603e (1993, 1600000 òðàíçèñòîðîâ): Âàðèàíò PowerPC 603 äëÿ íàñòîëüíûõ ñèñòåì, ÷àñòîòà äî 240MHz PowerPC 604 (1994, 3600000 òðàíçèñòîðîâ): ñóïåðñêàëÿðíûé ïðîöåññîð (4 èíñòðóêöèè çà öèêë) 76 16Êá êýø èíñòðóêöèé + 16Êá êýø äàííûõ (32-áèò Ãàðâàðäñêàÿ àðõèòåêòóðà) 6 íåçàâèñèìûõ èñïîëíÿþùèõ óñòðîéñòâ: 3 IU + 1 FPU + 1 BU + 1 load/store unit 6-òè ñòàäèéíûé êîíâåéåð äâà 128-âõîäîâûõ TLB âîçìîæíîñòü ïîñëåäîâàòåëüíîãî âûïîëíåíèÿ èíñòðóêöèé ïåðåèìåíîâàíèå ðåãèñòðîâ äèíàìè÷åñêîå (register renaming) ïðåäñêàçàíèå ïåðåõîäîâ ïîääåðæêà ìíîãîïðîöåññîðíîñòè íèçàöèè êýøåé ïîñðåäñòâîì ñïåöèàëüíîãî ïðîòîêîëà ñèíõðî- 11.5. Ïðîöåññîðû PowerPC ïîòðåáëåíèå 10Âò íà ÷àñòîòå 100MHz, îäèí ïðîãðàììíî êîíòðîëèðóåìûé ðåæèì ýêîíîìèè ýíåðãèè T PowerPC 604e (1994, 3600000 òðàíçèñòîðîâ): Âàðèàíò PowerPC 604 äëÿ íàñòîëüíûõ ñèñòåì, ÷àñòîòà äî 300MHz PowerPC 620 (1995, 7000000 òðàíçèñòîðîâ, íà ÷àñòîòå 133MHz 225 specint 92, 300 specfp 92): 128-áèò øèíà äàííûõ, 40-áèò øèíà àäðåñà, 64-áèò ðåãèñòðû ñóïåðñêàëÿðíûé ïðîöåññîð (6 èíñòðóêöèé çà öèêë) 32Êá êýø èíñòðóêöèé + 32Êá êýø äàííûõ (64-áèò Ãàðâàðäñêàÿ àðõèòåêòóðà) 6 íåçàâèñèìûõ èñïîëíÿþùèõ óñòðîéñòâ: 2 IU + 1 FPU + 1 BU + 1 load/store unit + 1 complex unit AF 5-òè ñòàäèéíûé êîíâåéåð 2-õ óðîâíåâîå MMU, ïåðâè÷íîå MMU èìååò 64-âõîäîâûé TLB, âòîðè÷íîå MMU èìååò 128-âõîäîâûé TLB äëÿ óñêîðåíèÿ ïåðåõîäîâ count register (ctr) èìååò òåíåâîé ðåãèñòð, â êîòîðûé îí ïåðåèìåíîâûâàåòñÿ âî âðåìÿ ïåðåõîäà èíòåãðèðîâàííûé êîíòðîëëåð L2 êýøà ïîòðåáëåíèå 30Âò íà ÷àñòîòå 100MHz, îäèí ïðîãðàììíî êîíòðîëèðóåìûé ðåæèì ýêîíîìèè ýíåðãèè PowerPC G3 (1997, íå áîëåå 30000000 òðàíçèñòîðîâ, ÷àñòîòà 300MHz): ðàçâèòèå PowerPC 620, èíòåãðèðîâàííûé L2 êýø PowerPC G4 (1998, íå áîëåå 50000000 òðàíçèñòîðîâ, ÷àñòîòà 400MHz): ðàçâèòèå PowerPC G3 IBM PowerPC 403 (1994): PowerPC ìèêðîêîíòðîëëåð 2Êá êýø èíñòðóêöèé + 1Êá êýø äàííûõ (32-áèò Ãàðâàðäñêàÿ àðõèòåêòóðà) ïåðèôåðèéíûå èíòåðôåéñíûå óñòðîéñòâà: èíòåðôåéñ øèíû, DMA êîíòðîëëåð, êîíòðîëëåð ïðåðûâàíèé (íà 6 çàïðîñîâ), ïîñëåäîâàòåëüíûé ïîðò DR äî âîñüìè èíòåðôåéñîâ áàíêîâ ïàìÿòè è óñòðîéñòâ ââîäà/âûâîäà 4 òàéìåðà íèçêîå ïîòðåáëåíèå ýíåðãèè Motorola MPC500 (1994, 40 MIPS, 25MHz): PowerPC ìèêðîêîíòðîëëåð 4Êá êýø èíñòðóêöèé 4Êá SRAM 4 íåçàâèñèìûõ èñïîëíÿþùèõ óñòðîéñòâ: 1 IU + 1 FPU + 1 BU + 1 load/store unit êîíòðîëëåð ïðåðûâàíèé íà 32 çàïðîñà (âðåìÿ çàäåðæêè 1mks íà ÷àñòîòå 25MHz) êîíòðîëëåð ïàìÿòè, ñïîñîáíûé óïðàâëÿòü 12 ìèêðîñõåìàìè ïàìÿòè âñòðîåííûé àâòîòåñò î÷åíü íèçêîå ïîòðåáëåíèå ýíåðãèè (530mW) Motorola PowerQUICC (1996, 52 MIPS, 40MHz): óëó÷øåííàÿ âåðñèÿ QUICC (M68360) 77 11. Àðõèòåêòóðû ïðîöåññîðîâ ÿäðî CPU32+ çàìåíåíî íà ÿäðî MPC500 4 âûñîêîñêîðîñòíûõ ïîñëåäîâàòåëüíûõ êîììóíèêàöèîííûõ êàíàëà êîíòðîëèðóþòñÿ âûäåëåííûì RISC êîììóíèêàöèîííûì ïðîöåññîðîì, ðàáîòàþùèì íåçàâèñèìî îò îñíîâíîãî ïðîöåññîðà PowerQUICC ïî ñðàâíåíèþ ñ QUICC èìååò êîíòðîëëåð PCMCIA 2.01 è àíàëîã ïðîöåññîðà DSP 11.5.3. Ïðîãðàììíàÿ ìîäåëü T Ïðèêëàäíîé ïðîãðàììå äîñòóïíû ñëåäóþùèå ðåãèñòðû. AF 32 öåëî÷èñëåííûõ ðåãèñòðà îáùåãî íàçíà÷åíèÿ (ÐÎÍ) r0 r31: ñîäåðæàò ñëîâî (32/64 áèò) 32 ðåãèñòðà ñ ïëàâàþùåé òî÷êîé f0 f31: ñîäåðæàò çíà÷åíèå ñ ïëàâàþùåé òî÷êîé (64 áèò) cr (condition register): ýòî 32-áèòíûé ðåãèñòð, ðàçäåëåííûé íà âîñåìü 4-õ áèòíûõ ïîëåé cr0cr7. Ïîëÿ ðåãèñòðà cr ìîãóò áûòü óñòàíîâëåíû îäíèì èç ñëåäóþùèõ ñïîñîáîâ. DR Óêàçàííîå ïîëå ðåãèñòðà cr ìîæåò áûòü óñòàíîâëåíî ñ ïîìîùüþ èíñòðóêöèè ïåðåñûëêè mtcrf â cr èç ÐÎÍ. Óêàçàííîå ïîëå ðåãèñòðà cr ìîæåò áûòü óñòàíîâëåíî ñ ïîìîùüþ èíñòðóêöèè ïåðåñûëêè mcrf â cr èç äðóãîãî ïîëÿ cr. Óêàçàííîå ïîëå ðåãèñòðà xer ìîæåò áûòü ñêîïèðîâàíî â ðåãèñòð cr ñ ïîìîùüþ èíñòðóêöèè mcrxr. Óêàçàííîå ïîëå ðåãèñòðà fpscr ìîæåò áûòü ñêîïèðîâàíî â ðåãèñòð cr ñ ïîìîùüþ èíñòðóêöèè mcrfs. Ïîëÿ ðåãèñòðà cr ìîãóò áûòü èçìåíåíû ñ ïîìîùüþ ëîãè÷åñêèõ îïåðàöèé, îïðåäåëåííûõ íàä ïîëÿìè cr. cr0 ìîæåò áûòü íåÿâíûì ðåçóëüòàòîì öåëî÷èñëåííîé èíñòðóêöèè. Âñå öåëî÷èñëåííûå èíñòðóêöèè èìåþò áèò Rc; åñëè åãî óñòàíîâèòü, òî áèòû â cr0 áóäóò óñòàíîâëåíû ñðàâíåíèåì ðåçóëüòàòà èíñòðóêöèè ñ íóëåì. cr1 ìîæåò áûòü íåÿâíûì ðåçóëüòàòîì èíñòðóêöèè ñ ïëàâàþùåé òî÷êîé è óêàçûâàòü íà ñòàòóñ èñêëþ÷åíèÿ ñ ïëàâàþùåé òî÷êîé. Âñå èíñòðóêöèè ñ ïëàâàþùåé òî÷êîé èìåþò áèò Rc; åñëè åãî óñòàíîâèòü, òî áèòû â cr1 áóäóò óñòàíîâëåíû êîïèðîâàíèåì ñîîòâåòñòâóþùèõ áèòîâ èç fpscr. Óêàçàííîå ïîëå ðåãèñòðà cr ìîæåò áûòü ðåçóëüòàòîì öåëî÷èñëåííîé èëè âåùåñòâåííîé èíñòðóêöèè ñðàâíåíèÿ. fpscr (Floating Point Status and Control Register): ýòî 32-áèòíûé ðåãèñòð, ñîäåðæàùèé âñå áèòû ñèãíàëîâ èñêëþ÷åíèé äëÿ îïåðàöèé ñ ïëàâàþùåé òî÷êîé, áèòû ñóììàðíûõ èñêëþ÷åíèé, áèòû ðàçðåøåíèÿ èñêëþ÷åíèé, áèòû óïðàâëåíèÿ îêðóãëåíèåì, íåîáõîäèìûå äëÿ óäîâëåòâîðåíèÿ ñòàíäàðòó IEEE 754. xer register: ýòî 32-áèòíûé ðåãèñòð, ñîäåðæàùèé ôëàãè ïåðåïîëíåíèÿ è ïåðåíîñîâ äëÿ öåëî÷èñëåííûõ îïåðàöèé. Òàêæå ñîäåðæèò ÷èñëî áàéòîâ, êîòîðûå íóæíî ïåðåäàòü â èíñòðóêöèÿõ Load String Word Indexed (lswx) èëè Store String Word Indexed (stswx) lr (link register): ýòî 32/64-áèòíûé ðåãèñòð, ñîäåðæàùèé àäðåñ ïåðåõîäà äëÿ èíñòðóêöèé Branch Conditional to Link Register (bclr) è Branch and Link (bl). Ñîäåðæèò àäðåñ âûçâàâøåé ôóíêöèè ñðàçó ïîñëå âûçîâà. 78 11.6. Ïðîöåññîðû SPARC T ctr (count register): ýòî 32/64-áèòíûé ðåãèñòð, ñîäåðæàùèé ñ÷åò÷èê öèêëà, êîòîðûé ìîæåò áûòü äåêðåìåíòèðîâàí â òå÷åíèå âûïîëíåíèÿ íàäëåæàùèì îáðàçîì çàêîäèðîâàííûõ èíñòðóêöèé ïåðåõîäà. Ðåãèñòð ctr ìîæåò òàêæå ñîäåðæàòü àäðåñ ïåðåõîäà äëÿ èíñòðóêöèè Branch Conditional to Count Register (bcctr). Ïîääåðæèâàþòñÿ ñëåäóþùèå äâà ðåæèìà àäðåñàöèè ïàìÿòè. = (rA|0)+offset (âêëþ÷àÿ offset=0) àäðåñ = (rA|0)+rB àäðåñ ãäå îáîçíà÷åíî (rA|0) - ÐÎÍ r1. . . r31, åñëè rA íå ðàâíî r0, èíà÷å 0 AF offset - 16-áèò ñìåùåíèå (çíàêîâî ðàñøèðÿåìîå) rB - ÐÎÍ r0. . . r31 Âñå èíñòðóêöèè (çà èñêëþ÷åíèåì load/store) èìåþò îïåðàíäû â ðåãèñòðàõ è ïîòîìó ðàçìåð âñåõ îïåðàíäîâ ðàâåí ðàçìåðó ñëîâà (32/64 áèò). Ïîäàâëÿþùåå áîëüøèíñòâî èíñòðóêöèé òðåõîïåðàíäíûå, õîòÿ ñóùåñòâóåò èíñòðóêöèÿ ñ 6-þ îïåðàíäàìè.  áîëüøèíñòâå àðèôìåòè÷åñêèõ èíñòðóêöèé ìîæíî óñòàíîâèòü êîä óñëîâèÿ cr0 ïî ðåçóëüòàòó. Îòìåòèì, ÷òî íåñìîòðÿ íà ïðèíàäëåæíîñòü ê êëàññó RISC ïðîöåññîðîâ, PowerPC èìååò äàæå áîëüøå èíñòðóêöèé, ÷åì êëàññè÷åñêèé CISC ïðîöåññîð Motorola 68xxx. 11.6. Ïðîöåññîðû SPARC  1987 ãîäó Sun Microsystems àííîíñèðîâàëà SUN-4 - ïåðâóþ êîìïüþòåðíóþ ñèñòåìó, îñíîâàííóþ íà íîâîé RISC CPU àðõèòåêòóðå SPARC (Scalable Processor ARChitecture).  îòëè÷èå îò ìíîãèõ äðóãèõ ïðîöåññîðîâ, SPARC ïîçèöèîíèðîâàëñÿ êàê îòêðûòàÿ àðõèòåêòóðà, êîòîðóþ ìîãóò èñïîëüçîâàòü âñå. DR 11.6.1. Îáùèé îáçîð SPARC ïðîöåññîðû èñïîëüçóþò Áåðêëåâñêóþ àðõèòåêòóðó, îñíîâàííóþ íà ðåãèñòðîâûõ îêíàõ. Âíóòðåííèå ðåãèñòðû îáðàçóþò áëîêè ñ ÷àñòè÷íûì ïåðåêðûòèåì. Èññëåäîâàòåëè Áåðêëè ïðåäëîæèëè èñïîëüçîâàòü âíóòðåííèé ñòåê äëÿ òîãî, ÷òîáû èçáåæàòü ñîõðàíåíèÿ è âîññòàíîâëåíèÿ ðåãèñòðîâ âî âíåøíåé ïàìÿòè. Îñíîâíîé öåëüþ áûëî óñêîðåíèå âûçîâîâ ïðîöåäóð çà ñ÷åò ìèíèìèçàöèè ÷èñëà îáðàùåíèé ê ïàìÿòè, òðåáóåìûõ äëÿ ïåðåäà÷è ïàðàìåòðîâ è ïîëó÷åíèÿ ðåçóëüòàòà.  êàæäûé ìîìåíò âðåìåíè ôóíêöèÿ ìîæåò èìåòü äîñòóï ê 32 ðåãèñòðàì: 8 global registers (r0 - r7, îáùèå äëÿ âñåõ ôóíêöèé) è îêíó èç 24 ðåãèñòðîâ (r8 - r31). Ðåãèñòðîâûå îêíà ïåðåêðûâàþòñÿ ïî 8-ìè ðåãèñòðàì.  êàæäîé ôóíêöèè âûäåëÿþò 8 in registers (r24 - r31 èëè i0 - i7) (ñîâïàäàþò ñ out registers â ïðîöåäóðå, âûçâàâøåé äàííóþ), 8 local registers (r16 - r23 èëè l0 - l7) (äîñòóïíû òîëüêî äàííîé ïðîöåäóðå) è 8 out registers (r8 - r15 èëè o0 - o7) (ñîâïàäàþò ñ in registers â ëþáîé ïðîöåäóðå, âûçâàííîé äàííîé). Ïðè âûçîâå ôóíêöèè ïðîèñõîäèò ïåðåêëþ÷åíèå îêîí, òàê, ÷òî âûçâàííàÿ ôóíêöèÿ ïîëó÷àåò íîâûé íàáîð ðåãèñòðîâ l0 - l7, o0 - o7 è ðàçäåëÿåò ðåãèñòðû i0 - i7 ñ âûçâàâøåé ôóíêöèåé (ãäå îíè àäðåñîâàëèñü êàê o0 o7). Ïîýòîìó â ðåãèñòðàõ o0 - o7 óäîáíî ðàçìåùàòü ïàðàìåòðû äëÿ âûçâàííîé ïðîöåäóðû, â ðåãèñòðàõ l0 - l7 - ëîêàëüíûå ïåðåìåííûå. Ðàçìåð êàæäîãî îêíà - 16 ðåãèñòðîâ (8 out + 8 local ðåãèñòðîâ). Ôèðìà SUN ñïåöèôèöèðîâàëà, ÷òî ÷èñëî îêîí ìîæåò áûòü îò 2 äî 32 (â çàâèñèìîñòè îò ðåàëèçàöèè). Òåì ñàìûì îáùåå ÷èñëî ðåãèñòðîâ â îêíàõ - îò 40 (2x16+8) äî 520 (32x16+8). Åñëè ãëóáèíà âëîæåííîñòè ôóíêöèé ïðåâûøàåò ÷èñëî îêîí, òî ïðîöåññîð ãåíåðèðóåò ïðåðûâàíèå è îïåðàöèîííàÿ ñèñòåìà äîëæíà ñîõðàíèòü ÷àñòü îêîí â ïàìÿòè. 79 11. Àðõèòåêòóðû ïðîöåññîðîâ 11.6.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà T Ñóùåñòâóåò âîçìîæíîñòü âûçâàòü ôóíêöèþ áåç ïåðåêëþ÷åíèÿ îêîí. Äðóãîé âàæíîé îñîáåííîñòüþ SPARC àðõèòåêòóðû ÿâëÿþòñÿ delay slots (ñì. ñ. 60). Ðåàëèçàöèÿ âñåõ SPARC ïðîöåññîðîâ óäîâëåòâîðÿåò âåðñèè àðõèòåêòóðû SPARC ñ òåì èëè èíûì íîìåðîì. Âàæíåéøåé ôóíêöèåé SPARC International Compatibility and Compliance Committee ÿâëÿåòñÿ âûðàáîòêà è ïóáëèêàöèÿ SPARC Compliance Definitions, à òàêæå èíñòðóêöèé ïî ïåðåõîäó îò îäíîãî îïðåäåëåíèÿ ê äðóãîìó. Êàæäûé ïðîöåññîð â ïðèâåäåííûõ íèæå òåõíè÷åñêèõ äàííûõ îáëàäàåò âñåìè âîçìîæíîñòÿìè ïðåäûäóùèõ ïðîöåññîðîâ äëÿ îáåñïå÷åíèÿ ñîâìåñòèìîñòè. AF SPARC (1987, 55000 òðàíçèñòîðîâ, 33 MHz, 20 MIPS): 136 32-áèò ðåãèñòðîâ 32-áèò øèíà àäðåñà è äàííûõ 4-õ ñòàäèéíûé êîíâåéåð 2 èñïîëíÿþùèõ óñòðîéñòâà: 1 IU (data + address) + 1 shift unit âíåøíèé CMU (Cache controller and MMU) è FPC (Floating Point Controller) âñåãî 50 èíñòðóêöèé, êàæäàÿ èñïîëíÿåòñÿ çà 1 öèêë MICROSPARC-II (1994, 85 MHz, 85 MIPS, 64 Specint 92, 55 Specfp 92): 32-áèò SPARC V8 àðõèòåêòóðà 16Êá êýø èíñòðóêöèé + 8Êá êýø äàííûõ (32-áèò Ãàðâàðäñêàÿ àðõèòåêòóðà) 3 èñïîëíÿþùèõ óñòðîéñòâà: 1 IU + 1 FPU + 1 MMU èíòåðôåéñ ñîïðîöåññîðà âñòðîåííàÿ ëîãèêà äëÿ ïîääåðæêè DRAM è ââîäà/âûâîäà SuperSPARC-II (1995, 3100000 òðàíçèñòîðîâ, 90 MHz, 148 Specint 92, 143 Specfp 92): 32-áèò SPARC V8 àðõèòåêòóðà 64-âõîäîâûé TLB (äëÿ îáîèõ êýøåé) áèòû ïðåäñêàçàíèÿ ïåðåõîäîâ 3 èíñòðóêöèè çà öèêë DR 8-ìè ïîðòîâûé 32x32 ôàéë ðåãèñòðîâ 20Êá êýø èíñòðóêöèé + 16Êá êýø äàííûõ (32-áèò Ãàðâàðäñêàÿ àðõèòåêòóðà) 64-áèò øèíà äàííûõ 4-õ ñòàäèéíûé êîíâåéåð èñïîëíÿþùèõ óñòðîéñòâ: 3 IU + 1 FPU multiply + 1 FPU divide + 1 BU + 1 load/store unit 7 UltraSPARC-II (1996, 250 MHz, 400 Specint 92, 450 Specfp 92): 64-áèò SPARC V9 àðõèòåêòóðà 80 4 ðåàëüíî èñïîëíÿåìûõ èíñòðóêöèè çà öèêë ñóïåðñêàëÿðíûé ïðîöåññîð: 6 èñïîëíÿþùèõ óñòðîéñòâ: 2 IU + 2 FPU + 1 BU + 1 load/store unit 9-òè ñòàäèéíûé êîíâåéåð ïðåäñêàçàíèå ïåðåõîäîâ register scoreboarding bi-endian (big- è little-endian ïîðÿäîê áàéòîâ) 11.6. Ïðîöåññîðû SPARC 64-áèò âèðòóàëüíûé àäðåñ è öåëî÷èñëåííûå äàííûå ñïåêóëÿòèâíîå èñïîëíåíèå T ìíîãîóðîâíåâàÿ îáðàáîòêà ïðåðûâàíèé, îðãàíèçîâàííûõ â ñòåê âñòðîåííàÿ ìóëüòèìåäèéíàÿ ïîääåðæêà äëÿ 2-õ è 3-õ ìåðíîé ãðàôèêè è íîâûé îïòèìèçèðîâàííûé íàáîð ìóëüòèìåäèà èíñòðóêöèé ïîääåðæêà ñèëüíî ñâÿçàííûõ ïðîöåññîðîâ (äî 4-õ ïðîöåññîðîâ ìîãóò ðàçäåëÿòü îäíó øèíó àäðåñà) 11.6.3. Ïðîãðàììíàÿ ìîäåëü AF Ïðèêëàäíîé ïðîãðàììå äîñòóïíû ñëåäóþùèå ðåãèñòðû. 32 öåëî÷èñëåííûõ ðåãèñòðà îáùåãî íàçíà÷åíèÿ (ÐÎÍ) r0 r31: ñîäåðæàò ñëîâî (32 áèò). Ëþáàÿ ïàðà rN, r(N+1) ïðè ÷åòíîì N ìîæåò ñîäåðæàòü äàííûå äëèíîé 64 áèò. Ðåãèñòðû îðãàíèçîâàíû â âèäå îêîí ïî 24 ðåãèñòðà ñ ïåðåêðûòèåì ïî 8-ìè ðåãèñòðàì. Âûäåëÿþò g0 - g7: ýòî ðåãèñòðû r0 - r7, ÿâëÿþòñÿ îáùèìè äëÿ âñåõ ôóíêöèé (ò.å. íå ó÷àñòâóþò â ïåðåêëþ÷åíèè ðåãèñòðîâûõ îêîí). Ðåãèñòð g0 - ñïåöèàëüíûé: ïðè ÷òåíèè èç íåãî âñåãäà ÷èòàåòñÿ 0, ïðè çàïèñè â íåãî íè÷åãî íå ïðîèñõîäèò (çàïèñü íå ïðîèçâîäèòñÿ, èç ðåãèñòðà âñåãäà ÷èòàåòñÿ 0) o0 - o7: ýòî ðåãèñòðû r8 - r15 (out registers); ÿâëÿþòñÿ in registers äëÿ ëþáîé ôóíêöèè, âûçâàííîé äàííîé (ò.å. äîñòóïíû âûçâàííîé ôóíêöèè); ðåãèñòð o7 ñïåöèàëüíûé, èíñòðóêöèÿ CALL çàïèñûâàåò â íåãî ñâîé ñîáñòâåííûé àäðåñ (ò.å. àäðåñ âîçâðàòà - 8) l0 - l7: ýòî ðåãèñòðû r16 - r23 (local registers); íå äîñòóïíû íè ôóíêöèè, âûçâàâøåé äàííóþ, íè ôóíêöèÿì, âûçâàííûì äàííîé i0 - i7: ýòî ðåãèñòðû r24 - r31 (in registers); ÿâëÿþòñÿ out registers äëÿ ôóíêöèè, âûçâàâøåé äàííóþ (ò.å. äîñòóïíû âûçâàâøåé ôóíêöèè è íå äîñòóïíû ëþáîé ôóíêöèè, âûçâàííîé äàííîé) DR 32 ðåãèñòðà ñ ïëàâàþùåé òî÷êîé f0 - f31: ñîäåðæàò çíà÷åíèå ñ ïëàâàþùåé òî÷êîé (32 áèò). Ëþáàÿ ïàðà fN, f(N+1) ïðè ÷åòíîì N ìîæåò ñîäåðæàòü äàííûå äëèíîé 64 áèò (floating point double), ëþáàÿ ÷åòâåðêà fN, f(N+1), f(N+2), f(N+3) ïðè êðàòíîì 4-ì N ìîæåò ñîäåðæàòü äàííûå äëèíîé 128 áèò (floating point quadre). y (multiply/divide register): ñîäåðæèò ñòàðøóþ ÷àñòü ïðîèçâåäåíèÿ (â èíñòðóêöèÿõ óìíîæåíèÿ) èëè ñòàðøóþ ÷àñòü äåëèìîãî (â èíñòðóêöèÿõ äåëåíèÿ); ÷èòàåòñÿ è çàïèñûâàåòñÿ èíñòðóêöèÿìè RDY è WRY Öåëî÷èñëåííûå êîäû óñëîâèÿ icc (integer condition code): ÿâëÿþòñÿ ÷àñòüþ PSR (Processor State Register), êîòîðûé íå äîñòóïåí ïîëüçîâàòåëüñêîé ïðîãðàììå êàê ðåãèñòð. Êîäû óñëîâèÿ óñòàíàâëèâàþòñÿ ïî ðåçóëüòàòó àðèôìåòè÷åñêèõ îïåðàöèé (åñëè ýòî óêàçàíî â èíñòðóêöèè) èëè ñïåöèàëüíûìè èíñòðóêöèÿìè è èñïîëüçóþòñÿ â êîìàíäàõ óñëîâíîãî ïåðåõîäà. Ïîääåðæèâàþòñÿ ñëåäóþùèå äâà ðåæèìà àäðåñàöèè ïàìÿòè. = rA+offset (âêëþ÷àÿ offset=0) àäðåñ = rA+rB àäðåñ ãäå îáîçíà÷åíî 81 11. Àðõèòåêòóðû ïðîöåññîðîâ rA, rA - ÐÎÍ r0. . . r31 offset - 13-áèò ñìåùåíèå (çíàêîâî ðàñøèðÿåìîå) T Âñå èíñòðóêöèè (çà èñêëþ÷åíèåì load/store) èìåþò îïåðàíäû â ðåãèñòðàõ è ïîòîìó ðàçìåð âñåõ îïåðàíäîâ ðàâåí ðàçìåðó ñëîâà (32 áèò). Ïîäàâëÿþùåå áîëüøèíñòâî èíñòðóêöèé òðåõîïåðàíäíûå.  áîëüøèíñòâå àðèôìåòè÷åñêèõ èíñòðóêöèé ìîæíî óñòàíîâèòü êîäû óñëîâèÿ icc ïî ðåçóëüòàòó. 11.7. Ïðîöåññîðû Intel 80960x AF Ïðîöåññîðû Intel 80960x çàíèìàþò çíà÷èòåëüíîå ìåñòî íà ðûíêå âñòðàèâàåìûõ êîìïüþòåðîâ. Íà èõ áàçå ïîñòðîåíî çíà÷èòåëüíîå êîëè÷åñòâî óïðàâëÿþùèõ ñèñòåì äëÿ ïðèíòåðîâ, SCSI êîíòðîëëåðîâ, ñåòåâûõ êîììóòàòîðîâ. 11.7.1. Îáùèé îáçîð Ïðîöåññîðû Intel 80960x áûëè ñïåöèàëüíî ðàçðàáîòàíû äëÿ âñòðàèâàåìûõ ñèñòåì. ßâëÿþòñÿ 32-áèòíûìè RISC ïðîöåññîðàìè ñ ÷åðòàìè, ïðèñóùèìè CISC ïðîöåññîðàì. Êàê RISC ïðîöåññîðû èìåþò: çíà÷èòåëüíîå ÷èñëî ðåãèñòðîâ (32) àðõèòåêòóðó load/store ôèêñèðîâàííûé ôîðìàò èíñòðóêöèé (âñå èíñòðóêöèè, êðîìå load/store, èìåþò ðàçìåð 4 áàéòà) Êàê CISC ïðîöåññîðû èìåþò: çíà÷èòåëüíîå ÷èñëî ðåæèìîâ àäðåñàöèè ïàìÿòè (11) DR ïåðåìåííóþ äëèíó èíñòðóêöèé (èíñòðóêöèè load/store ìîãóò èìåòü äëèíó 8 áàéò, âñå îñòàëüíûå èìåþò äëèíó 4 áàéòà) Ñïåöèàëüíî äëÿ ñèñòåì ðåàëüíîãî âðåìåíè èìåþò: âñòðîåííûé ïðîãðàììèðóåìûé êîíòðîëëåð ïðåðûâàíèé, ïîäêëþ÷åííûé ê 8-ìè âíåøíèì ëèíèÿì ïðåðûâàíèÿ âñòðîåííûå ïîäïðîãðàììû (ìèêðîêîä) äëÿ àâòîìàòè÷åñêîãî ïåðåêëþ÷åíèÿ êîíòåêñòà ïðè ïðåðûâàíèè âñòðîåííîå ÎÇÓ (îáû÷íî 1Êá) äëÿ õðàíåíèÿ òàáëèöû ïðåðûâàíèé âñòðîåííûé êýø ðåãèñòðîâ, óñêîðÿþùèé ïåðåêëþ÷åíèå êîíòåêñòà âñòðîåííûå ïðîãðàììèðóåìûå òàéìåðû (ðÿä ìîäåëåé) Ïðîöåññîðû Intel 80960x îñîáåííî ýôôåêòèâíû â ïðèëîæåíèÿõ, òðåáóþùèõ îáñëóæèâàíèÿ áîëüøîãî êîëè÷åñòâà ïðåðûâàíèé è ïåðåñûëêè áîëüøèõ îáúåìîâ äàííûõ, òàêèõ, êàê îáðàáîòêà ãðàôè÷åñêîé èíôîðìàöèè è êîììóíèêàöèîííûå çàäà÷è. Îñíîâíîé îñîáåííîñòüþ ïðîöåññîðîâ Intel 80960x ÿâëÿåòñÿ èñïîëüçîâàíèå àâòîìàòè÷åñêè ñîõðàíÿåìûõ ïðè âûçîâå ïðîöåäóð è ïåðåêëþ÷åíèÿõ êîíòåêñòà íàáîðîâ ðåãèñòðîâ, ÷òî ïðèâîäèò ê ìèíèìèçàöèè ÷èñëà îáðàùåíèé ê ïàìÿòè.  êàæäûé ìîìåíò âðåìåíè ôóíêöèÿ ìîæåò èìåòü äîñòóï ê 32 ðåãèñòðàì: 16-òè global registers (g0 - g15), îáùèõ äëÿ âñåõ ôóíêöèé, è íàáîðó èç 16-òè local registers (l0 - l15), äîñòóïíûõ òîëüêî ýòîé ôóíêöèè. Ïðè âûçîâå ïðîöåäóðû ïðîèñõîäèò ïåðåêëþ÷åíèå íàáîðîâ ëîêàëüíûõ ðåãèñòðîâ, òàê, ÷òî âûçâàííàÿ ôóíêöèÿ 82 11.7. Ïðîöåññîðû Intel 80960x 11.7.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà T ïîëó÷àåò íîâûé íàáîð ðåãèñòðîâ l0 - l15 è ðàçäåëÿåò ðåãèñòðû g0 - g15 ñ âûçâàâøåé ôóíêöèåé. Ïîýòîìó â ðåãèñòðàõ g0 - g15 óäîáíî ðàçìåùàòü ïàðàìåòðû äëÿ âûçâàííîé ïðîöåäóðû, â ðåãèñòðàõ l0 - l15 - ëîêàëüíûå ïåðåìåííûå. Âíóòðè ïðîöåññîðà åñòü êýø äëÿ íàáîðîâ ëîêàëüíûõ ðåãèñòðîâ (îáû÷íî íà 4 íàáîðà). Åñëè ãëóáèíà âëîæåííîñòè ôóíêöèé ïðåâûøàåò ðàçìåð êýøà, òî ïðîöåññîð ãåíåðèðóåò ïðåðûâàíèå è îïåðàöèîííàÿ ñèñòåìà äîëæíà ñîõðàíèòü ÷àñòü íàáîðîâ ðåãèñòðîâ â ïàìÿòè. Îòìåòèì, ÷òî ñóùåñòâóåò âîçìîæíîñòü âûçâàòü ôóíêöèþ áåç ïåðåêëþ÷åíèÿ íàáîðîâ ëîêàëüíûõ ðåãèñòðîâ. AF Êàæäûé ïðîöåññîð â ïðèâåäåííûõ íèæå òåõíè÷åñêèõ äàííûõ îáëàäàåò âñåìè âîçìîæíîñòÿìè ïðåäûäóùèõ ïðîöåññîðîâ äëÿ îáåñïå÷åíèÿ ñîâìåñòèìîñòè. i80960Kx (1988, 20 MHz, 7.5 MIPS): 32-áèò àðõèòåêòóðà ñ 4Gb àäðåñíûì ïðîñòðàíñòâîì 32-áèò ìóëüòèïëåêñèðîâàííàÿ øèíà àäðåñà è äàííûõ, äèíàìè÷åñêîå èçìåíåíèå øèðèíû øèíû (àäàïòèðóåòñÿ ê 8-ìè, 16-òè è 32-õ áèòíûì îáìåíàì ñ âíåøíèìè óñòðîéñòâàìè) 512 áàéò êýø èíñòðóêöèé, çàãðóæàåìûé áëî÷íûìè ïåðåñûëêàìè (burst access) êýø êîíòðîëëåð (ó i80960KB) 16 ãëîáàëüíûõ è 16 ëîêàëüíûõ ðåãèñòðîâ, êýø íà 4 íàáîðà ëîêàëüíûõ ðåãèñòðîâ register scoreboarding (ñì. ñ. 58) i80960Sx (1988, 16 MIPS): 16-áèò âíåøíÿÿ øèíà äàííûõ Ãàðâàðäñêàÿ àðõèòåêòóðà: 512-áàéò êýø èíñòðóêöèé + âñòðîåííîå FPU ïðîèçâîäèòåëüíîñòüþ 256-áàéò 0 5 MFlops (ó i80960SB) êýø äàííûõ : i80960Cx (600000 òðàíçèñòîðîâ, 33 MHz, 66 MIPS): 32-áèò øèíû àäðåñà è äàííûõ 128 áèòíûå âíóòðåííèå øèíû äàííûõ èíñòðóêöèè çà öèêë DR 2 1Êá êýø èíñòðóêöèé âñòðîåííîå 1Êá ÎÇÓ óñòðîéñòâî ïðåäñêàçàíèÿ ïåðåõîäîâ âñòðîåííàÿ ïîääåðæêà 4-õ êàíàëîâ DMA (Direct Memory Access) i80960Jx (1994, 50 MHz, 45 MIPS): 1 èíñòðóêöèÿ çà öèêë 8 íàáîðîâ ëîêàëüíûõ ðåãèñòðîâ âñòðîåííûé êîíòðîëëåð ïðåðûâàíèé, âîçìîæíîñòü óïðàâëÿòü êýøèðîâàíèåì äëÿ ðàçìåùåíèÿ òàáëèöû ïðåðûâàíèé, îáðàáîò÷èêîâ ïðåðûâàíèé è èõ ñòåêîâ â êýøèðóåìîé îáëàñòè 4Êá êýø èíñòðóêöèé + 2Êá êýø äàííûõ (ó i80960JF) âñòðîåííîå 1Êá ÎÇÓ 2 âñòðîåííûõ òàéìåðà i80960Hx (1995, 75 MHz, 150 MIPS): ýëåêòðè÷åñêè è ëîãè÷åñêè (ò.å. ïî íîæêàì ìèêðîñõåìû è ïî èñïîëíÿåìîìó êîäó) ñîâìåñòèì ñ i80960Cx 83 11. Àðõèòåêòóðû ïðîöåññîðîâ 16Êá êýø èíñòðóêöèé + 8Êá êýø äàííûõ 32-áèò øèíû àäðåñà è äàííûõ ñ ïîääåðæêîé êîíâåéåðíûõ è áëî÷íûõ ïåðåñûëîê îáåñïå÷èâàþò ïðîïóñêíóþ ñïîñîáíîñòü 160Ìá/ñ âñòðîåííîå 2Êá ÎÇÓ âñòðîåííûå 32-áèò òàéìåðû T i80960RP (1996, 33 MHz): 32-áèò ïðîöåññîð, ñîäåðæàùèé ÿäðî i80960JF ïîääåðæêà èíòåðôåéñîâ ñ äâóìÿ øèíàìè PCI ïðÿìîé äîñòóï ìåæäó øèíàìè PCI è ëîêàëüíîé øèíîé ïðîöåññîðà âñòðîåííûé êîíòðîëëåð ïàìÿòè AF IC ïîääåðæêà èíòåðôåéñà øèíû 2 ýíåðãîïîòðåáëåíèå ìåíüøå 3 Âò 11.7.3. Ïðîãðàììíàÿ ìîäåëü Ïðèêëàäíîé ïðîãðàììå äîñòóïíû ñëåäóþùèå ðåãèñòðû. 32 öåëî÷èñëåííûõ ðåãèñòðà îáùåãî íàçíà÷åíèÿ (ÐÎÍ) r0 - r31: ñîäåðæàò ñëîâî (32 áèò). Ïðè ýòîì ïàðà rN, r(N+1) ïðè ÷åòíîì N ìîæåò ñîäåðæàòü äàííûå äëèíîé 64 áèò òðîéêà rN, r(N+1), r(N+2) ïðè N, êðàòíîì 4, ìîæåò ñîäåðæàòü äàííûå äëèíîé 96 áèò ÷åòâåðêà rN, r(N+1), r(N+2), r(N+3) ïðè N, êðàòíîì 4, ìîæåò ñîäåðæàòü äàííûå äëèíîé 128 áèò Íàä òàêèìè îïåðàíäàìè (äëèíîé áîëåå 32 áèò) îïðåäåëåíû òîëüêî èíñòðóêöèè ïåðåñûëêè (load/store). Âûäåëÿþò ýòî ðåãèñòðû r0 r15 (global registers); ÿâëÿþòñÿ îáùèìè äëÿ âñåõ ôóíêöèé (ò.å. íå èçìåíÿþòñÿ ïðè âûçîâå ôóíêöèé). Ðåãèñòð g15 çàðåçåðâèðîâàí â êà÷åñòâå óêàçàòåëÿ òåêóùåãî ñòåêîâîãî êàäðà (îí èñïîëüçóåòñÿ ïðîöåññîðîì, êîãäà íàäî ñîõðàíèòü èëè âîññòàíîâèòü íàáîð ëîêàëüíûõ ðåãèñòðîâ). DR g0 - g15: l0 - l15: ýòî ðåãèñòðû r16 r31 (local registers); íå äîñòóïíû íè ôóíêöèè, âûçâàâøåé äàííóþ, íè ôóíêöèÿì, âûçâàííûì äàííîé. Ïðè âûçîâå ôóíêöèè ñòàðûé íàáîð ëîêàëüíûõ ðåãèñòðîâ ñîõðàíÿåòñÿ âî âíóòðåííåì êýøå, è âûçâàííàÿ ôóíêöèÿ ïîëó÷àåò íîâûé íàáîð, â êîòîðîì: l0: ñîäåðæèò ïðåäûäóùåå çíà÷åíèå óêàçàòåëÿ òåêóùåãî ñòåêîâîãî êàäðà l1: ñîäåðæèò óêàçàòåëü ñòåêà l2: ñîäåðæèò àäðåñ âîçâðàòà l3 - l15: çíà÷åíèÿ íå îïðåäåëåíû ip (instruction pointer register): ñîäåðæèò àäðåñ òåêóùåé èíñòðóêöèè. Äîñòóïåí òîëüêî ïî ÷òåíèþ è ìîæåò áûòü èñïîëüçîâàí ïðè ôîðìèðîâàíèè àäðåñà. Öåëî÷èñëåííûå êîäû óñëîâèÿ icc (integer condition code): ÿâëÿþòñÿ ÷àñòüþ AC (Arithmetic Control Register), êîòîðûé íå äîñòóïåí ïîëüçîâàòåëüñêîé ïðîãðàììå êàê ðåãèñòð. Êîäû óñëîâèÿ óñòàíàâëèâàþòñÿ ñïåöèàëüíûìè èíñòðóêöèÿìè è èñïîëüçóþòñÿ â êîìàíäàõ óñëîâíîãî ïåðåõîäà. 84 11.8. Ïðîöåññîðû ARM T Âñå ðåæèìû àäðåñàöèè ïàìÿòè ïðîöåññîðîâ Intel 80960x ìîæíî çàïèñàòü îäíîé ôîðìóëîé: àäðåñ ÿ÷åéêè ïàìÿòè åñòü base + index scale + displacement ãäå base áàçîâûé ðåãèñòð: r0 r31, ip index èíäåêñíûé ðåãèñòð: r0 r31 (îòñóòñòâóåò, åñëè scale öåëàÿ êîíñòàíòà 1, 2, 4, 8, 16 base åñòü ip) displacement íåîòðèöàòåëüíîå ñìåùåíèå 12 èëè 32 áèò (12 áèò ñìåùåíèå ìîæíî èñïîëüçîâàòü òîëüêî â ðåæèìå base + displacement). AF Ëþáîé èç ýëåìåíòîâ àäðåñà ìîæåò îòñóòñòâîâàòü (ñ îäíèì èñêëþ÷åíèåì: åñëè îòñóòñòâóåò index, òî äîëæåí îòñóòñòâîâàòü è scale). Âñå èíñòðóêöèè (çà èñêëþ÷åíèåì load/store) èìåþò îïåðàíäû â ðåãèñòðàõ è ïîòîìó ðàçìåð âñåõ îïåðàíäîâ ðàâåí ðàçìåðó ñëîâà (32 áèò). Ïîäàâëÿþùåå áîëüøèíñòâî èíñòðóêöèé òðåõîïåðàíäíûå. Îòìåòèì, ÷òî ýòî åäèíñòâåííûé èç ðàññìàòðèâàåìûõ íàìè ïðîöåññîðîâ, â êîòîðîì æåñòêî (àïïàðàòíî) çàêðåïëåíî, ÷òî ñòåê ðàñòåò ââåðõ (îò ñòàðøèõ àäðåñîâ ê ìëàäøèì). 11.8. Ïðîöåññîðû ARM Ïðîöåññîðû ARM, ðàçðàáàòûâàåìûå ôèðìîé ARM (Advansed RISC Machines), èãðàþò çíà÷èòåëüíóþ ðîëü íà ðûíêå âñòðàèâàåìûõ ñèñòåì, îñîáåííî íà ðûíêå ìèíèàòþðíûõ ñèñòåì, ñî÷åòàþùèõ âûñîêèå ïèêîâûå íàãðóçêè ñ äëèòåëüíûìè ïåðèîäàìè îæèäàíèÿ (íàïðèìåð, ìîáèëüíûå òåëåôîíû). 11.8.1. Îáùèé îáçîð Êîìïàíèÿ ARM (Advansed RISC Machines) áûëà îñíîâàíà â íîÿáðå 1990 ãîäà ôèðìàìè Acorn Computers (èíôîðìàöèîííûå òåõíîëîãèè äëÿ îáðàçîâàíèÿ, Âåëèêîáðèòàíèÿ) DR Apple Computers VLSI Technology Îñíîâíîé öåëüþ êîìïàíèè ÿâëÿåòñÿ ðàçðàáîòêà ìèêðîïðîöåññîðíûõ ÿäåð è èõ ëèöåíçèðîâàíèå øèðîêîìó êðóãó ïðîèçâîäèòåëåé.  ñèëó ìàëîñòè ïðîöåññîðíîãî ÿäðà ARM (âñåãî 35000 òðàíçèñòîðîâ â áàçîâîì ÿäðå ARM7) îíî èäåàëüíî ïîäõîäèò äëÿ èíòåãðàöèè â ñïåöèàëèçèðîâàííûå ìèêðîñõåìû ïîòðåáèòåëåé. ARM Design Service Group ïîñòîÿííî ðàáîòàåò ñ ïàðòíåðàìè, îáåñïå÷èâàÿ ARM ýêñïåðòèçó OEM ïîòðåáèòåëÿì, æåëàþùèì èìåòü âñòðîåííûå â ìèêðîñõåìû ðåøåíèÿ íà îñíîâå ÿäåð ARM.  íàñòîÿùåå âðåìÿ ñëåäóþùèå êîìïàíèè ëèöåíçèðîâàëè ARM è ïðîèçâîäÿò ìèêðîñõåìû íà åãî îñíîâå: 1. VLSI Technology 2. Texas Instruments (TI) 3. Samsung Corporation 4. NEC Corporation 5. GEC Plessey Semiconductors (GPS) 85 11. Àðõèòåêòóðû ïðîöåññîðîâ 7. Digital Equipment Corporation 8. Symbios Logic 9. Sharp Corporation 10. Asahi Kasai Microsystems (AKM) 11. European Silicon Structures (ES2) AF 12. Lucky Goldstar Corporation T 6. Cirrus Logic 13. Intel Corporation 14. IBM Corporation Íà îñíîâå ARM ÿäðà ðàçðàáîòàíî áîëåå 30 ìèêðîïðîöåññîðîâ è ñïåöèàëèçèðîâàííûõ ìèêðîñõåì. Îíè íàõîäÿò ïðèìåíåíèå â ñîòîâûõ òåëåôîíàõ, îðãàíàéçåðàõ, ìîäåìàõ, ãðàôè÷åñêèõ óñêîðèòåëÿõ, âèäåîôîíàõ, êàìåðàõ, òåëåôîííûõ êîììóòàòîðàõ, èãðîâûõ ïðèñòàâêàõ, äèñêîâûõ íàêîïèòåëÿõ, âûñîêîïðîèçâîäèòåëüíûõ ðàáî÷èõ ñòàíöèÿõ, àâòîìîáèëüíûõ íàâèãàöèîííûõ ñèñòåìàõ, öèôðîâûõ äåêîäåðàõ, smart êàðòàõ, ëàçåðíûõ ïðèíòåðàõ. Îñíîâíûå îòëè÷èòåëüíûå ÷åðòû àðõèòåêòóðû ARM: 1. Âñå èíñòðóêöèè ÿâëÿþòñÿ óñëîâíûìè (ò.å. âûïîëíÿþòñÿ, òîëüêî åñëè êîä óñëîâèÿ ñîâïàäàåò ñ êîäîì, óêàçàííûì â èíñòðóêöèè). Ýòî ïîçâîëÿåò óâåëè÷èòü ïëîòíîñòü êîäà è óìåíüøèòü ïîòðåáíîñòü â èíñòðóêöèÿõ áëèçêîãî ïåðåõîäà. Êàê ñëåäñòâèå, íåò îòäåëüíûõ êîìàíä óñëîâíîãî ïåðåõîäà. 2. Âñå öåëî÷èñëåííûå àðèôìåòè÷åñêèå èíñòðóêöèè ìîãóò âûïîëíÿòü îïåðàöèþ ñäâèãà íàä îïåðàíäàìè çà òîò æå öèêë, ÷òî âûïîëíÿåòñÿ è ñàìà èíñòðóêöèÿ. Êàê ñëåäñòâèå, íåò îòäåëüíûõ êîìàíä ñäâèãà. DR 3. Íåò öåëî÷èñëåííîé èíñòðóêöèè äåëåíèÿ. 4. Âîçìîæíîñòü âûïîëíÿòü DSP-ïîäîáíûå ôóíêöèè: à) ïðèñóòñòâóþò èíñòðóêöèè óìíîæåíèÿ è óìíîæåíèÿ ñî ñëîæåíèåì (multiplyaccumulate (MLA)) á) ïðèñóòñòâóþò èíñòðóêöèè áëî÷íîãî ÷òåíèÿ èç ïàìÿòè è áëî÷íîé çàïèñè â ïàìÿòü, ïîçâîëÿþùèå ïåðåñëàòü ëþáîå ïîäìíîæåñòâî èç 16-òè ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ. 5. Íåêîòîðûå ìîäåëè ìîãóò ðàáîòàòü â òàê íàçûâàåìîì THUMB ðåæèìå: èíñòðóêöèè êîäèðóþòñÿ 16-þ áèòàìè âìåñòî 32-õ. Ýòî çíà÷èòåëüíî óâåëè÷èâàåò ïëîòíîñòü êîäà, íî íàêëàäûâàåò ðÿä îãðàíè÷åíèé íà ñèñòåìó êîìàíä: à) ïîëíîöåííî äîñòóïíû òîëüêî 8 ðåãèñòðîâ èç 16-òè, îñòàëüíûå ìîãóò îãðàíè÷åííî èñïîëüçîâàòüñÿ òîëüêî â íåêîòîðûõ èíñòðóêöèÿõ (íàïðèìåð, MOV, ADD è CMP); á) íå ïîääåðæèâàåòñÿ óñëîâíîå èñïîëíåíèå èíñòðóêöèé, êàê ñëåäñòâèå, ïîÿâèëàñü íîâàÿ èíñòðóêöèÿ óñëîâíîãî ïåðåõîäà; â) íå ïîääåðæèâàåòñÿ îïåðàöèÿ ñäâèãà íàä îïåðàíäàìè â öåëî÷èñëåííûõ àðèôìåòè÷åñêèõ èíñòðóêöèÿõ, êàê ñëåäñòâèå, ïîÿâèëèñü íîâûå èíñòðóêöèè ñäâèãà; ã) âñå èíñòðóêöèè äâóõîïåðàíäíûå (à íå òðåõîïåðàíäíûå êàê â îáû÷íîì ðåæèìå). 86 11.8. Ïðîöåññîðû ARM 11.8.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà ARM1: T Êàæäûé ïðîöåññîð â ïðèâåäåííûõ íèæå òåõíè÷åñêèõ äàííûõ â-îñíîâíîì îáëàäàåò âñåìè âîçìîæíîñòÿìè ïðåäûäóùèõ ïðîöåññîðîâ äëÿ îáåñïå÷åíèÿ ñîâìåñòèìîñòè. Ïðîòîòèï, èñïîëüçîâàëñÿ òîëüêî â òåñòîâûõ ñèñòåìàõ ARM2 (8 MHz, 4.7 MIPS): 64Êá àäðåñíîå ïðîñòðàíñòâî ARM3 (33 MHz, 18 MIPS): ARM2 ÿäðî 4Êá åäèíûé êýø AF èíòåðôåéñ ñîïðîöåññîðà äîáàâëåíà íîâàÿ èíñòðóêöèÿ SWP äëÿ ðàáîòû ñ ñåìàôîðàìè ARM6 (36000 òðàíçèñòîðîâ, 33 MHz, 28 MIPS): 4Ãá àäðåñíîå ïðîñòðàíñòâî ARM600: bi-endian (big- è little-endian ïîðÿäîê áàéòîâ) èíòåðôåéñ ñîïðîöåññîðà ARM6 ñî âñòðîåííûì MMU ARM7 (35000 òðàíçèñòîðîâ): ARM6 ÿäðî, ñïîñîáíîå ðàáîòàòü íà ïîâûøåííîé ÷àñòîòå ARM7D: 3-õ ñòàäèéíûé êîíâåéåð óëó÷øåííàÿ èíñòðóêöèÿ àïïàðàòíîãî óìíîæåíèÿ (íóæíà äëÿ ðàáîòû DSP) ARM7 ñ ïîääåðæêîé îòëàäêè DR ARM7DM: ARM7D ñ óëó÷øåííûì óìíîæåíèåì ARM7DMI (40 MIPS): ARM7DM ñ ICEbreaker (âñòðîåííàÿ ïîääåðæêà In Circuit Emulation) ARM70DM: ARM7DMI (êàê îòäåëüíàÿ ìèêðîñõåìà) ARM700 (40 MHz, 36 MIPS): ARM7 ÿäðî ARM7500: 4Êá åäèíûé êýø writeback buffer âñòðîåííîå MMU ARM7 ÿäðî 8Êá åäèíûé êýø writeback buffer âñòðîåííîå MMU âñòðîåííûé IOMD âñòðîåííûé âèäåîïðîöåññîð 87 11. Àðõèòåêòóðû ïðîöåññîðîâ ARM8 (80 MHz, 80 MIPS): ñîâìåñòèì ñ ARM6 è ARM7 5-òè ñòàäèéíûé êîíâåéåð ñïåêóëÿòèâíîå èñïîëíåíèå T ARM7Txx: ARM7xx (xx - îäíî èç ïðèâåäåííûõ âûøå ñî÷åòàíèé) ñ ïîääåðæêîé THUMB ðåæèìà StrongARM (SA110: 100 MHz, 115 MIPS; 200 MHz, 230 MIPS): âûñîêîñêîðîñòíîé âàðèàíò ARM ÿäðà, ðàçðàáîòàí ñîâìåñòíî ARM ltd è Digital 16Êá êýø èíñòðóêöèé + 16Êá êýø äàííûõ (Ãàðâàðäñêàÿ àðõèòåêòóðà) ãëóáîêèé êîíâåéåð AF ïîëíàÿ ñîâìåñòèìîñòü êîäà íå ãàðàíòèðóåòñÿ â ñèëó ïîÿâëåíèÿ ãëóáîêîãî êîíâåéåðà è ðàçäåëüíîãî êýøà AMULET2e (40 MIPS): ýòî àñèíõðîííàÿ âåðñèÿ ARM6, áîëåå áûñòðàÿ, ÷åì ARM7, íî áîëåå ìåäëåííàÿ, ÷åì ARM8 150 mW â àêòèâíîì ñîñòîÿíèè, 0.1 mW â ñîñòîÿíèè îæèäàíèÿ ìàëîå ïîòðåáëåíèå ìîùíîñòè è ìåõàíèçì èñïîëüçîâàíèÿ ýíåðãèè äåëàþò AMULET2e èäåàëüíûì ïðîöåññîðîì äëÿ ïðèëîæåíèé, ãäå ïåðèîäû âûñîêîé âû÷èñëèòåëüíîé íàãðóçêè ñî÷åòàþòñÿ ñ äëèòåëüíûìè ïåðèîäàìè îæèäàíèÿ ââîäà 11.8.3. Ïðîãðàììíàÿ ìîäåëü Ïðèêëàäíîé ïðîãðàììå äîñòóïíû 16 öåëî÷èñëåííûõ ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ (ÐÎÍ) r0 - r15: ñîäåðæàò ñëîâî (32 áèò). Íåêîòîðûå èç ýòèõ ðåãèñòðîâ èìåþò ñïåöèàëüíîå íàçíà÷åíèå: DR r15 - program counter (pc): ñîäåðæèò àäðåñ èíñòðóêöèè, íàõîäÿùåéñÿ ÷åðåç äâå èíñòðóêöèè îò èñïîëíÿåìîé â äàííûé ìîìåíò (ò.å. àäðåñ òåêóùåé èíñòðóêöèè + 8; ïðè çàïèñè â ýòîò ðåãèñòð ïðîèñõîäèò ïåðåõîä ïî çàïèñàííîìó àäðåñó r14 - link register (lr): ïîñëå èíñòðóêöèè Branch and Link (BL) (âûçîâ ôóíêöèè) ñîäåðæèò àäðåñ ñëåäóþùåé èíñòðóêöèè (àäðåñ âîçâðàòà); âî âñåõ îñòàëüíûõ èíñòðóêöèÿõ ýòî îáû÷íûé ÐÎÍ Êîäû óñëîâèÿ cc (condition code): ÿâëÿþòñÿ ÷àñòüþ CPSR (Current Program Status Register), êîòîðûé íå äîñòóïåí ïîëüçîâàòåëüñêîé ïðîãðàììå êàê ðåãèñòð. Êîäû óñëîâèÿ óñòàíàâëèâàþòñÿ ïî ðåçóëüòàòó àðèôìåòè÷åñêèõ îïåðàöèé (åñëè ýòî óêàçàíî â èíñòðóêöèè) èëè ñïåöèàëüíûìè èíñòðóêöèÿìè è èñïîëüçóþòñÿ äëÿ îïðåäåëåíèÿ òîãî, íóæíî ëè èñïîëíÿòü òåêóùóþ èíñòðóêöèþ (íàïîìíèì, âñå èíñòðóêöèè ÿâëÿþòñÿ óñëîâíûìè). Ïîääåðæèâàþòñÿ ñëåäóþùèå ðåæèìû àäðåñàöèè ïàìÿòè. Äëÿ ÷òåíèÿ/çàïèñè ñëîâà (32 áèò) èëè áåççíàêîâîãî áàéòà: èìååòñÿ îäèí ðåæèì àäðåñàöèè áàçîâûé ðåãèñòð ñìåùåíèå ãäå áàçîâûé ðåãèñòð îäèí èç ÐÎÍ r0 r15, à ñìåùåíèå ìîæåò èìåòü òðè âèäà: 88 êîíñòàíòà 12-áèòíàÿ êîíñòàíòà 11.8. Ïðîöåññîðû ARM ðåãèñòð îäèí èç ÐÎÍ r0 r15 (ðåãèñòð <îïåðàöèÿ> êîíñòàíòà) ãäå T ðåãèñòð îäèí èç ÐÎÍ r0 r15, <îïåðàöèÿ> îäíà èç ñëåäóþùèõ îïåðàöèé ñäâèãà LSL: Logical Shift Left, ñäâèã âëåâî, âäâèãàþòñÿ íóëè LSR: Logical Shift Right, ñäâèã âïðàâî, âäâèãàþòñÿ íóëè ASR: Arithmetic Shift Right, ñäâèã âïðàâî, âäâèãàåòñÿ çíàêîâûé ðàçðÿä îïåðàíäà ðåãèñòð ROR: ROtate Right, öèêëè÷åñêèé ñäâèã âïðàâî RRX: ROtate Right with eXtend öèêëè÷åñêèé ñäâèã âïðàâî 33-õ áèòíîé âåëè÷èíû (<áèò ïåðåíîñà>, ðåãèñòð) íà 1, ïðàâûé îïåðàíä (ò.å. êîíñòàíòà) äîëæåí îòñóòñòâîâàòü êîíñòàíòà 5-áèò êîíñòàíòà, çàäàþùàÿ ÷èñëî ñäâèãîâ AF Êàæäûé èç òðåõ âèäîâ ðåæèìà àäðåñàöèè èìååò òðè âàðèàíòà (÷òî äàåò äåâÿòü ðåæèìîâ àäðåñàöèè): îáû÷íûé, àäðåñ åñòü ñóììà áàçîâîãî ðåãèñòðà è ñìåùåíèÿ ñ ïðåèíäåêèðîâàíèåì, àäðåñ åñòü ñóììà áàçîâîãî ðåãèñòðà è ñìåùåíèÿ, åñëè èíñòðóêöèÿ ÷òåíèÿ/çàïèñè âûïîëíåíà (óäîâëåòâîðåí åå êîä óñëîâèÿ), òî àäðåñ çàïèñûâàåòñÿ â áàçîâûé ðåãèñòð ñ ïîñòèíäåêñèðîâàíèåì, àäðåñ åñòü áàçîâûé ðåãèñòð, åñëè èíñòðóêöèÿ ÷òåíèÿ/çàïèñè âûïîëíåíà, òî ñóììà áàçîâîãî ðåãèñòðà è ñìåùåíèÿ çàïèñûâàåòñÿ â áàçîâûé ðåãèñòð Äëÿ ÷òåíèÿ/çàïèñè ïîëóñëîâà (16 áèò) èëè ÷òåíèÿ çíàêîâîãî áàéòà: (åñòü òîëüêî â àðõèòåêòóðå ARM4 è âûøå) èìååòñÿ îäèí ðåæèì àäðåñàöèè áàçîâûé ðåãèñòð êîíñòàíòà DR ãäå áàçîâûé ðåãèñòð îäèí èç ÐÎÍ r0 r15, à êîíñòàíòà 8-áèòíàÿ êîíñòàíòà. Ýòîò ðåæèìà àäðåñàöèè èìååò òðè âàðèàíòà: îáû÷íûé, ñ ïðåèíäåêèðîâàíèåì è ñ ïîñòèíäåêñèðîâàíèåì. Âñå èíñòðóêöèè èìåþò ïîëå êîäà óñëîâèÿ (4 áèòà). Åñëè òåêóùåå ñîñòîÿíèå ôëàãîâ â ðåãèñòðå CPSR ñîâïàäàåò ñ óêàçàííûì â ïîëå êîäà òåêóùåé èíñòðóêöèè, òî îíà áóäåò âûïîëíåíà, èíà÷å - ïðîïóùåíà. Âñå èíñòðóêöèè (çà èñêëþ÷åíèåì load/store) èìåþò îïåðàíäû â ðåãèñòðàõ è ïîòîìó ðàçìåð âñåõ îïåðàíäîâ ðàâåí ðàçìåðó ñëîâà (32 áèò). Âñå àðèôìåòè÷åñêèå èíñòðóêöèè (âêëþ÷àÿ ëîãè÷åñêèå) èìåþò áèò, ïðè óñòàíîâêå êîòîðîãî ïî ðåçóëüòàòó îïåðàöèè áóäóò âûñòàâëåíû êîäû óñëîâèÿ. Îòëè÷èòåëüíîé îñîáåííîñòüþ ïðîöåññîðîâ ARM ÿâëÿåòñÿ òî, ÷òî âñå àðèôìåòè÷åñêèå èíñòðóêöèè (âêëþ÷àÿ ëîãè÷åñêèå) ìîãóò èñïîëüçîâàòü â êà÷åñòâå îäíîãî èç îïåðàíäîâ òàê íàçûâàåìûé <shifter_operand>, êîòîðûé ìîæåò èìåòü îäíó èç ñëåäóþùèõ ôîðì. <immediate>: <shifter_operand> = <immediate>, ãäå <immediate> 32 áèò êîíñòàíòà, â êîòîðîé òîëüêî â êàêèõ-òî 8-ìè ïîäðÿä èäóùèõ ïîçèöèÿõ ìîãóò áûòü íå íóëè, íîìåð ïåðâîé ïîçèöèè äîëæåí áûòü ÷åòíûì; êîäèðóåòñÿ â èíñòðóêöèè êàê 8-ìè áèòíàÿ êîíñòàíòà <8_bit_immediate> è 4-õ áèòíûé ñäâèã <rotate_imm>, ïðè ýòîì <shifter_operand> = <8_bit_immediate> Rotate_Right (<rotate_imm> * 2) rA: <shifter_operand> = rA, ãäå rA îäèí èç ÐÎÍ r0 r15 89 12. Àðõèòåêòóðà ñèñòåìíîé øèíû T rA <shift> <shift_imm>: <shifter_operand> = rA <shift> <shift_imm>, ãäå <shift> åñòü îäíà èç îïåðàöèé LSL: Logical Shift Left, ñäâèã âëåâî, âäâèãàþòñÿ íóëè LSR: Logical Shift Right, ñäâèã âïðàâî, âäâèãàþòñÿ íóëè ASR: Arithmetic Shift Right, ñäâèã âïðàâî, âäâèãàåòñÿ çíàêîâûé ðàçðÿä rA ROR: ROtate Right, öèêëè÷åñêèé ñäâèã âïðàâî RRX: ROtate Right with eXtend öèêëè÷åñêèé ñäâèã âïðàâî 33-õ áèòíîé âåëè÷èíû (<áèò ïåðåíîñà>, rA) íà 1, ïðàâûé îïåðàíä (ò.å. <shift_imm>) äîëæåí îòñóòñòâîâàòü AF <shift_imm> - 5-òè áèòíàÿ êîíñòàíòà rA <shift> rB: <shifter_operand> = rA <shift> rB, ãäå <shift> åñòü îäíà èç îïèñàííûõ âûøå îïåðàöèé, <shift_imm> - 5-òè áèòíàÿ êîíñòàíòà Îòìåòèì, ÷òî ïðè èñïîëüçîâàíèè ïîñëåäíåé ôîðìû <shifter_operand> òðåõîïåðàíäíàÿ àðèôìåòè÷åñêàÿ èíñòðóêöèÿ ðåàëüíî èñïîëüçóåò 4 ðåãèñòðà. 12. Àðõèòåêòóðà ñèñòåìíîé øèíû Ñèñòåìíàÿ øèíà îáåñïå÷èâàåò âçàèìîäåéñòâèå ïðîöåññîðà è ïåðèôåðèéíûõ óñòðîéñòâ. Ïîñêîëüêó ÷àñòî îñíîâíîé çàäà÷åé ñèñòåìû ðåàëüíîãî âðåìåíè ÿâëÿåòñÿ óïðàâëåíèå òåì èëè èíûì îáîðóäîâàíèåì, òî êà÷åñòâó ñèñòåìíîé øèíû äëÿ ïðîìûøëåííûõ êîìïüþòåðîâ óäåëÿåòñÿ ïîâûøåííîå âíèìàíèå.  íàñòîëüíûõ êîìïüþòåðàõ è ïðîìûøëåííûõ ñèñòåìàõ ðàñïðîñòðàíåíû ñëåäóþùèå ñèñòåìíûå øèíû. Ñðàâíåíèå ñèñòåìíûõ øèí Íàçâàíèå øèíû DR PC/XT (8 áèò) PC/AT (16 áèò) MULTIBUS 1 EISA VME32 MCA32 MULTIBUS 2 VME64 NUBUS PCI32 VLB32 MCA64 AUTOBAHN 1 PCI64 AUTOBAHN 2 PCI64-66 FUTUREBUS+ Ïðîèçâîäèòåëüíîñòü Ìá/ñ 4.7 16.66 24 33 40 33 70 80 80 132 135 160 200 264 400 528 1000 Îòìåòèì, ÷òî ïðè âûáîðå øèíû ÷àñòî ïðèõîäèòñÿ ðóêîâîäñòâîâàòüñÿ íå òîëüêî åå ïðîèçâîäèòåëüíîñòüþ, à è òàêèìè ôàêòîðàìè, êàê íàëè÷èå ïåðèôåðèéíîãî îáîðóäîâàíèÿ äëÿ íåå, âîçìîæíîñòü ãîðÿ÷åé (ò.å. áåç âûêëþ÷åíèÿ êîìïüþòåðà) çàìåíû îáîðóäîâàíèÿ íà øèíå è ò.ä. Ìû ðàññìîòðèì ãîñïîäñòâóþùóþ â íàñòîÿùåå âðåìÿ ñðåäè ïðîìûøëåííûõ ñèñòåì øèíó VME, à òàêæå ïðèîáðåòàþùóþ âñå áîëüøóþ ïîïóëÿðíîñòü øèíó PCI. 90 12.1. Àðõèòåêòóðà øèíû VME 12.1. Àðõèòåêòóðà øèíû VME VME ÿâëÿåòñÿ àñèíõðîííîé øèíîé. VME èñïîëüçóåò èäåþ ïîëíîãî îòîáðàæåíèÿ íà ïàìÿòü. Êàæäîå óñòðîéñòâî ïðåäñòàâëÿåòñÿ êàê àäðåñ ïàìÿòè èëè ãðóïïà àäðåñîâ. VME èìååò ðàçäåëüíûå øèíû àäðåñà è äàííûõ. Ïëàòà îäèíàðíîé âûñîòû èìååò 24áèòíóþ øèíó àäðåñà è 16-òè áèòíóþ øèíó äàííûõ, ïëàòà äâîéíîé âûñîòû 32-áèòíûå øèíû àäðåñà è äàííûõ. Âîçìîæíîñòü áëî÷íûõ ïåðåñûëîê, êîãäà àäðåñ çàäàåòñÿ òîëüêî îäèí ðàç. Ïîääåðæêà ìóëüòèïðîöåññîðíîñòè: ïðèîðèòåòíûé äîñòóï ê ðàçäåëÿåìûì ðåñóðñàì âîçìîæíîñòü ïàðàëëåëüíîãî èëè èñêëþ÷èòåëüíîãî äîñòóïà ê ðàçäåëÿåìûì ðåñóðñàì 4 óðîâíÿ äîñòóïà ñòðóêòóðà äîñòóïà master/slave çàùèòà ðàçäåëÿåìûõ ðåñóðñîâ ïîñðåäñòâîì íåäåëèìûõ öèêëîâ øèíû DR AF T Ñòàíäàðò íà øèíó VME ïîÿâèëñÿ â 1981ã., êîãäà ôèðìû Motorola, Mostek è Signetics äîãîâîðèëèñü îá åäèíîì ñòàíäàðòå íà øèíó äëÿ ïðîìûøëåííûõ ñèñòåì.  îñíîâó ýëåêòðè÷åñêîé ñïåöèôèêàöèè øèíû áûë ïîëîæåí ñòàíäàðò íà øèíó VERSAbus ôèðìû Motorola, à â îñíîâó ìåõàíè÷åñêîé ñïåöèôèêàöèè ñòàíäàðò Eurocard êîíñîðöèóìà åâðîïåéñêèõ êîìïàíèé. Íîâûé ñòàíäàðò áûë íàçâàí VERSAmodule Eurocard, ñîêðàùåííî VME. Îäíàêî, âñå êîìïàíèè, êðîìå Motorola, îòêàçàëèñü ðàñøèôðîâûâàòü VME êàê VERSAmodule Eurocard, ïîñêîëüêó VERSAmodule ÿâëÿåòñÿ çàðåãèñòðèðîâàííîé òîðãîâîé ìàðêîé Motorola. Ïîýòîìó â íàñòîÿùåå âðåìÿ ñ÷èòàåòñÿ, ÷òî òåðìèí VME ÿâëÿåòñÿ åäèíûì îáîçíà÷åíèåì, à íå àááðåâèàòóðîé. Íà øèíó VME ñóùåñòâóåò ñòàíäàðò IEEE 1014-1987. Ïëàòà øèíû VME ìîæåò áûòü îäèíàðíîé èëè äâîéíîé âûñîòû. Ïëàòà îäèíàðíîé âûñîòû (èëè 3U) èìååò ðàçìåðû 100ìì 160ìì è îäèí 96 êîíòàêòíûé ðàçüåì DIN 41612, íàçûâàåìûé P1. Ïëàòà äâîéíîé âûñîòû (èëè 6U) èìååò ðàçìåðû 233ìì 160ìì è âòîðîé 96 êîíòàêòíûé ðàçüåì DIN 41612, íàçûâàåìûé P2. Ëèöåâàÿ ñòîðîíà ïëàòû èìååò øèðèíó 20ìì. Ïëàòû ðàçíîãî ðàçìåðà ìîãóò ðàáîòàòü ñîâìåñòíî â îäíîé ñèñòåìå. Íà øèíå VME ìîæåò áûòü äî 21 ðàçúåìà. Ïèòàíèå íà ïëàòû ïîäàåòñÿ ÷åðåç ðàçúåìû øèíû. Îñíîâíûå õàðàêòåðèñòèêè øèíû. 7 óðîâíåé çàïðîñà ïðåðûâàíèé Òèïè÷íûé îáìåí ïî øèíå ñîñòîèò èç öèêëà àðòáèòðàæà (äëÿ ïîëó÷åíèÿ äîñòóïà ê øèíå), àäðåñíîãî öèêëà (äëÿ âûáîðêè óñòðîéñòâà), öèêëà ðåàëüíîãî îáìåíà äàííûìè. Øèíà VME êàê áû ñîñòîèò èç 4-õ ïîäøèí. 1. Øèíà àðáèòðàæà îòâå÷àåò çà îïðåäåëåíèå ïðèîðèòåòà çàïðîñà è ðàçäåëåíèå øèíû.  êà÷åñòâå àðáèòðà âûñòóïàåò ïëàòà, íàõîäÿùàÿñÿ â ðàçúåìå 1 øèíû VME. 2. Øèíà îáìåíà äàííûìè âêëþ÷àåò øèíó äàííûõ, ïî êîòîðîé âîçìîæíû îáìåíû ðàçìåðîì 8/16/32 áèò øèíó àäðåñà, ïî êîòîðîé âîçìîæíû îáìåíû ðàçìåðîì 16/24/32 áèò óïðàâëÿþùóþ øèíó, ïî êîòîðîé ïåðåäàþòñÿ ðàçìåðû àäðåñà è äàííûõ, òèï îáìåíà (÷òåíèå èëè çàïèñü), ïðèçíàê îêîí÷àíèÿ îáìåíà, ïðèçíàê îøèáêè è ò.ä. 91 12. Àðõèòåêòóðà ñèñòåìíîé øèíû T 3. Øèíà óïðàâëåíèÿ ïðåðûâàíèÿìè îòâå÷àåò çà ïðèîðèòåòíîå óïðàâëåíèå ïðåðûâàíèÿìè 4. Ñëóæåáíàÿ øèíà îòâå÷àåò çà ïîäà÷ó íàïðÿæåíèé ïèòàíèÿ +5Â, -12Â, +12 íà ïëàòû, èíôîðìèðîâàíèå ïîñëåäíèõ î ïðîáëåìàõ ñ ïèòàíèåì, ïîäà÷ó ïåðèîäè÷åñêîãî ñèãíàëà, èíèöèàëèçàöèþ è ñáðîñ øèíû. AF Áëî÷íûé ðåæèì ïîçâîëÿåò ïåðåäàòü äî 256 áàéòîâ ïî øèíå äàííûõ, îäíîêðàòíî çàäàâ àäðåñ íà øèíå àäðåñà. Ñëåäîâàòåëüíî, øèíà àäðåñà íåèñïîëüçóåòñÿ áîëüøóþ ÷àñòü âðåìåíè îáìåíà. Ñòàíäàðò VME64 îïðåäåëÿåò 64-áèòíûå ïåðåäà÷è çà ñ÷åò íå èñïîëüçóåìîé øèíû àäðåñà: ìëàäøàÿ ÷àñòü 64-áèòíîãî áëîêà ïåðåäàåòñÿ ïî øèíå äàííûõ, à ñòàðøàÿ ÷àñòü ïî ïðîñòàèâàþùåé øèíå àäðåñà. 12.2. Àðõèòåêòóðà øèíû PCI Øèíà PCI (Peripheral Components Interconnect) ïîÿâèëàñü êàê ñòàíäàðò ôèðìû Intel íà ñîåäèíåíèå ëîêàëüíîé øèíû ïðîöåññîðà (ñîåäèíÿþùåé åãî ñ ïàìÿòüþ) è ïåðèôåðèéíûõ óñòðîéñòâ.  1992ã. ïîÿâèëàñü âåðñèÿ 1 ñòàíäàðòà, à â 1993ã. âåðñèÿ 2.  1995ã. ïîÿâèëñÿ ñòàíäàðò íà ðàñøèðåíèå PCI-66MHz. Îñíîâíûå õàðàêòåðèñòèêè øèíû. PCI ÿâëÿåòñÿ ñèíõðîííîé øèíîé, ÷àñòîòà ñèíõðîíèçàöèè 33MHz èëè 66 MHz. PCI èñïîëüçóåò òðè àäðåñíûõ ïðîñòðàíñòâà: 1. ïðîñòðàíñòâî ïàìÿòè 2. ïðîñòðàíñòâî ââîäà/âûâîäà 3. ïðîñòðàíñòâî ðåãèñòðîâ êîíôèãóðàöèè PCI èìååò ìóëüòèïëåêñèðîâàííóþ øèíó àäðåñà è äàííûõ ðàçìåðîì 32 áèò èëè 64 áèò. Âîçìîæíîñòü ïîäêëþ÷åíèÿ äî 256 øèí PCI Ïàðàëëåëüíàÿ ðàáîòà ðàçëè÷íûõ øèí Áóôåðèçàöèÿ îáìåíîâ DR 92 Ïðîòîêîë êîíôèãóðàöèè óñòðîéñòâ Ïðåäìåòíûé óêàçàòåëü (ðóññêèé) îáúåêòíî-îðèåíòèðîâàííîñòü . . . . . . . . . . . 22 î÷åðåäü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 ïðèîðèòåòíàÿ . . . . . . . . . . . . . . . . . . . . . . .21 ñîîáùåíèé . . . . . . . . . . . . . . . . . . . . . . . . . . 20 çàäà÷ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 ïàìÿòü äèíàìè÷åñêàÿ . . . . . . . . . . . . . . . . . . . . . . . .8 ôëåø . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 îïåðàòèâíàÿ . . . . . . . . . . . . . . . . . . . . . . . . . 8 ïîñòîÿííàÿ . . . . . . . . . . . . . . . . . . . . . . . . . . 8 ñòàòè÷åñêàÿ . . . . . . . . . . . . . . . . . . . . . . . . . . 8 âèðòóàëüíàÿ . . . . . . . . . . . . . . . . . . . . . . . . 11 ïëàíèðîâùèê çàäà÷ . . . . . . . . . . . . . . . . . . . . . 38 ïî÷òîâûå ÿùèêè . . . . . . . . . . . . . . . . . . . . . . . . 31 ïîëèíã . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 ïîòîê. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 ïðåðûâàíèå . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 îòëîæåííîå . . . . . . . . . . . . . . . . . . . . . . . . . 15 óðîâåíü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 âðåìÿ ðåàêöèè . . . . . . . . . . . . . . . . . . . . . . . 7 ïðèîðèòåò . . . . . . . . . . . . . . . . . . . . . . . . . . . 12, 38 ôèêñèðîâàííûé . . . . . . . . . . . . . . . . . . . . 38 òóðíèðíûé . . . . . . . . . . . . . . . . . . . . . . . . . 38 round robin . . . . . . . . . . . . . . . . . . . . . . . . . 38 ïðîöåññ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 áëîêèðîâêà . . . . . . . . . . . . . . . . . . . . . . . . . 15 ãîëîäîâêà . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 êîíêóðèðóþùèé . . . . . . . . . . . . . . . . . . . . 15 ïàðàëëåëüíûé . . . . . . . . . . . . . . . . . . . . . . 12 ñîñòîÿíèå . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 ñîòðóäíè÷àþùèé . . . . . . . . . . . . . . . . . . . 15 òóïèê . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 âçàèìîäåéñòâèå . . . . . . . . . . . . . . . . . . . . . 11 ïî÷òîâûå ÿùèêè . . . . . . . . . . . . . . . . . 11 ðàçäåëÿåìàÿ ïàìÿòü . . . . . . . . . . . . . 11 ñåìàôîðû . . . . . . . . . . . . . . . . . . . . . . . . 11 ñèãíàëû . . . . . . . . . . . . . . . . . . . . . . . . . . 11 ïðîöåññîð . . . . . . . . . . . . . . . . . . . . . . . . . . . 10, 56 êîíâåéåðíûé. . . . . . . . . . . . . . . . . . . . . . . .58 ñóïåðêîíâåéåðíûé . . . . . . . . . . . . . . . . . . 59 ñóïåðñêàëÿðíûé . . . . . . . . . . . . . . . . . . . . 59 CISC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57 RISC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57 ïðîãðàììà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 ðåñóðñ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 àêòèâíûé . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 àïïàðàòíûé . . . . . . . . . . . . . . . . . . . . . . . . 13 ëîêàëüíûé . . . . . . . . . . . . . . . . . . . . . . . . . . 14 ïàññèâíûé . . . . . . . . . . . . . . . . . . . . . . . . . . 14 ïîñòîÿííûé . . . . . . . . . . . . . . . . . . . . . . . . . 14 DR AF ÀÖÏ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 ÀÑÓÏ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 ÀÑÓÒÏ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 ÖÀÏ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 ÎÑР. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 ñèëüíàÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 ñëàáàÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 host/target . . . . . . . . . . . . . . . . . . . . . . . . . . 43 self-hosted. . . . . . . . . . . . . . . . . . . . . . . . . . .42 ÎÇÓ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 ôëåø . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 ñòàòè÷åñêîå . . . . . . . . . . . . . . . . . . . . . . . . . . 8 ÏÇÓ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Ñòàíäàðò POSIX 1003.1 . . . . . . . . . . . . . . 6, 17 Âçàèìíîå èñêëþ÷åíèå . . . . . . . . . . . . . . . . . . 15 àáñòðàêòíûé òèï äàííûõ . . . . . . . . . . . . . . . 23 äèñïåò÷åð . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 èíêàïñóëÿöèÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 èíâåðñèÿ ïðèîðèòåòîâ . . . . . . . . . . . . . . . . . . 39 èñêëþ÷åíèÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 àñèíõðîííûå. . . . . . . . . . . . . . . . . . . . . . . .20 ñèíõðîííûå . . . . . . . . . . . . . . . . . . . . . . . . . 20 êýø . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Ãàðâàðäñêèé . . . . . . . . . . . . . . . . . . . . . . . . 61 åäèíûé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 ïåðâîãî óðîâíÿ . . . . . . . . . . . . . . . . . . . . . 62 ñ îáðàòíîé çàïèñüþ . . . . . . . . . . . . . . . . 62 ñ ïðÿìîé çàïèñüþ . . . . . . . . . . . . . . . . . . 62 òðåòüåãî óðîâíÿ . . . . . . . . . . . . . . . . . . . . 62 âòîðîãî óðîâíÿ . . . . . . . . . . . . . . . . . . . . . 62 êëàññ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 äî÷åðíèé . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 íàñëåäîâàíèå . . . . . . . . . . . . . . . . . . . . . . . 24 ïîäêëàññ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 ïîòîìîê . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 ïðåäîê . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 ïðåäñòàâèòåëü . . . . . . . . . . . . . . . . . . . . . . 23 ðîäèòåëüñêèé . . . . . . . . . . . . . . . . . . . . . . . 24 ñîâìåñòèìûé . . . . . . . . . . . . . . . . . . . . . . . 24 êëèåíòñåðâåð . . . . . . . . . . . . . . . . . . . . . . 30, 31 êîíòåêñò . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 êðèòè÷åñêàÿ ñåêöèÿ . . . . . . . . . . . . . . . . . . . . . 15 ìåæïðîöåññíîå âçàèìîäåéñòâèå . . . . . . . . . 11 ìîäåëü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 íèòü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 îáúåêò . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 àãðåãàòíûé . . . . . . . . . . . . . . . . . . . . . . . . . 22 àòðèáóòû . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 ÷àñòè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 ïîâåäåíèå . . . . . . . . . . . . . . . . . . . . . . . . . . .22 T Ïðåäìåòíûé óêàçàòåëü (ðóññêèé) 93 DR AF ïðîãðàììíûé . . . . . . . . . . . . . . . . . . . . . . . 13 ðàçäåëÿåìûé . . . . . . . . . . . . . . . . . . . . . . . 14 êðèòè÷íûé . . . . . . . . . . . . . . . . . . . . . . . 14 íå êðèòè÷íûé . . . . . . . . . . . . . . . . . . . . 14 âðåìåííûé . . . . . . . . . . . . . . . . . . . . . . . . . .14 ñåìàôîðû . . . . . . . . . . . . . . . . . . . . . . . . . . . 20, 28 äâîè÷íûå . . . . . . . . . . . . . . . . . . . . . . . 21, 28 ëè÷íûå . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 ñ÷åòíûå . . . . . . . . . . . . . . . . . . . . . . . . . 21, 28 ñîáûòèå. . . . . . . . . . . . . . . . . . . . . . . . . .11, 20, 30 ñòåê . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 ñâÿçûâàíèå . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 äèíàìè÷åñêîå . . . . . . . . . . . . . . . . . . . . . . . 12 ñòàòè÷åñêîå . . . . . . . . . . . . . . . . . . . . . . . . . 12 òàéìåð . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 òèï . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 âèðòóàëüíàÿ ïàìÿòü . . . . . . . . . . . . . . . . . . . . 11 çàäà÷à . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 T Ïðåäìåòíûé óêàçàòåëü (ðóññêèé) 94 Ïðåäìåòíûé óêàçàòåëü (àíãëèéñêèé) DRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 DSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 ESSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 FPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Hyperkernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 AF ADC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 ARM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9, 85 AMULET2e . . . . . . . . . . . . . . . . . . . . . . . . . 88 ARM1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 ARM2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 ARM3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 ARM6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 ARM600 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 ARM7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 ARM700 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 ARM70DM . . . . . . . . . . . . . . . . . . . . . . . . . 87 ARM7500 . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 ARM7D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 ARM7DM. . . . . . . . . . . . . . . . . . . . . . . . . . .87 ARM7DMI . . . . . . . . . . . . . . . . . . . . . . . . . . 87 ARM7Txx . . . . . . . . . . . . . . . . . . . . . . . . . . 88 ARM8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 StrongARM . . . . . . . . . . . . . . . . . . . . . . . . . 88 THUMB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 T Ïðåäìåòíûé óêàçàòåëü (àíãëèéñêèé) big-endian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 BTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63 BU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 burst access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61 DR cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 BTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Harvard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 L1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 L2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 L3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 TLB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 unified . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 write-back. . . . . . . . . . . . . . . . . . . . . . . . . . .62 write-through . . . . . . . . . . . . . . . . . . . . . . . 62 CAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 CHORUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18, 43 CHRP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 CISC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Compact PCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Component Integrator . . . . . . . . . . . . . . . . . . . 54 DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 deadlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 delay slots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 DIMM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 dispatcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83, 84 DPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51 IEEE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Intel 80960x . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 82 i80960Cx . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 i80960Hx . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 i80960Jx . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 i80960Kx . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 i80960RP . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 i80960Sx . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Intel 80x86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 71 i80386 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 i80387 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 i80486 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 i82385 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 P7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Pentium . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Pentium Pro . . . . . . . . . . . . . . . . . . . . . . . . 73 Pentium-II . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Pentium-II Xeon . . . . . . . . . . . . . . . . . . . . 73 Pentium-III . . . . . . . . . . . . . . . . . . . . . . . . . 73 Pentium-III Xeon . . . . . . . . . . . . . . . . . . . 73 IRQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 ISR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 IU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 linkage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 linker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 little-endian. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66 lockout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 LP RT-Technology . . . . . . . . . . . . . . . . . . . . . . 53 LRU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Lynx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 LynxOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 MMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Motorola 68xxx . . . . . . . . . . . . . . . . . . . . . . . 9, 67 M68000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 M68010 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 M68020 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 M68030 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 M68040 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 95 Ïðåäìåòíûé óêàçàòåëü (àíãëèéñêèé) SCEPTRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 scheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 SCSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 SDRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 SIMM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 SMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38, 64 snooping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 SoftKernel . . . . . . . . . . . . . . . . . . . . . . . 25, 26, 49 SPARC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 79 MICROSPARC-II . . . . . . . . . . . . . . . . . . . 80 SPARC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 SuperSPARC-II . . . . . . . . . . . . . . . . . . . . . 80 UltraSPARC-II . . . . . . . . . . . . . . . . . . . . . 80 speculative execution . . . . . . . . . . . . . . . . . . . . 60 SRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 starvation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 AF OEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 OS-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39, 45 host/target . . . . . . . . . . . . . . . . . . . . . . . . . . 43 self-hosted. . . . . . . . . . . . . . . . . . . . . . . . . . .42 soft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 T M68060 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 M68302 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 M68360 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 MC68851. . . . . . . . . . . . . . . . . . . . . . . . . . . .69 MC68881. . . . . . . . . . . . . . . . . . . . . . . . . . . .69 MC68882. . . . . . . . . . . . . . . . . . . . . . . . . . . .69 QUICC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 mutex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 mutual exclusion . . . . . . . . . . . . . . . . . . . . . . . . . 15 DR PCI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92 polling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 POSIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6, 17 1003.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6, 17 1003.1ñ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1003.1b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1003.1d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1003.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1003.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 PowerPC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9, 75 PowerPC 403 . . . . . . . . . . . . . . . . . . . . . . . 77 PowerPC 500 . . . . . . . . . . . . . . . . . . . . . . . 77 PowerPC 603 . . . . . . . . . . . . . . . . . . . . . . . 76 PowerPC 603e . . . . . . . . . . . . . . . . . . . . . . 76 PowerPC 604 . . . . . . . . . . . . . . . . . . . . . . . 76 PowerPC 604e . . . . . . . . . . . . . . . . . . . . . . 77 PowerPC 620 . . . . . . . . . . . . . . . . . . . . . . . 77 PowerPC G3 . . . . . . . . . . . . . . . . . . . . . . . . 77 PowerPC G4 . . . . . . . . . . . . . . . . . . . . . . . . 77 PowerQUICC . . . . . . . . . . . . . . . . . . . . . . . 77 QUICC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 preemption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 pSOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 46 QNX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 18, 45 RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 dynamic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 static . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Realtime ETS Kernel . . . . . . . . . . . . . . . . . . . . 53 RISC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 RMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 RMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 round robin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 RRS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 RT-Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 RTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 hard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 96 thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 TLB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62, 63 UISA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 VEA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75 VITA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 VME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8, 91 VRTX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 VRTX32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 VxWorks . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 18, 48 Willows RT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54