А.В. Столяров - Программирование на языке ассемблера NASM для ОС Unix (1110582), страница 29
Текст из файла (страница 29)
Ïðèîñòàíîâëåííàÿ çàäà÷à ïîìåùàåòñÿ â î÷åðåäü çàäà÷, ãîòîâûõ ê âûïîëíåíèþ è íàõîäèòñÿ òàì, ïîêà îñòàëüíûå çàäà÷è îòðàáîòàþò ñâîèêâàíòû; çàòåì îíà ñíîâà ïîëó÷àåò î÷åðåäíîé êâàíò âðåìåíè äëÿ ðàáîòû,è ò. ä. Åñòåñòâåííî, åñëè àêòèâíàÿ çàäà÷à çàòðåáîâàëà îïåðàöèþ ââîäàâûâîäà, îíà ïåðåâîäèòñÿ â ñîñòîÿíèå áëîêèðîâêè (òî÷íî òàê æå, êàê èâ ïàêåòíîì ðåæèìå).
Çàäà÷è, íàõîäÿùèåñÿ â ñîñòîÿíèè áëîêèðîâêè, íåñòàâÿòñÿ â î÷åðåäü íà âûïîëíåíèå è íå ïîëó÷àþò êâàíòîâ âðåìåíè äîòåõ ïîð, ïîêà îïåðàöèÿ ââîäà-âûâîäà íå áóäåò çàâåðøåíà (ëèáî íå èñ÷åçíåò äðóãàÿ ïðè÷èíà áëîêèðîâêè), è çàäà÷à íå ïåðåéäåò â ñîñòîÿíèåãîòîâíîñòè ê âûïîëíåíèþ.Ñóùåñòâóþò ðàçëè÷ûå àëãîðèòìû ïîääåðæêè î÷åðåäè íà âûïîëíåíèå,â òîì ÷èñëå è òàêèå, â êîòîðûõ çàäà÷àì ïðèïèñûâàåòñÿ íåêîòîðûé ïðèîðèòåò, âûðàæåííûé ÷èñëîì. Íàïðèìåð, â ÎÑ Unix îáû÷íî çàäà÷à èìååòäâå ñîñòàâëÿþùèå ïðèîðèòåòà ñòàòè÷åñêóþ è äèíàìè÷åñêóþ; ñòàòè÷åñêàÿ ñîñòàâëÿþùàÿ ïðåäñòàâëÿåò ñîáîé çàäàííûé àäìèíèñòðàòîðîì óðîâåíü ¾âàæíîñòè¿ âûïîëíåíèÿ äàííîé êîíêðåòíîé çàäà÷è, äèíàìè÷åñêàÿæå èçìåíÿåòñÿ ïëàíèðîâùèêîì: ïîêà çàäà÷à íàõîäèòñÿ â ñòàäèè âûïîëíåíèÿ, å¼ äèíàìè÷åñêèé ïðèîðèòåò ïàäàåò, êîãäà æå çàäà÷à íàõîäèòñÿâ î÷åðåäè íà èñïîëíåíèå, äèíàìè÷åñêàÿ ñîñòàâëÿþùàÿ ïðèîðèòåòà, íàïðîòèâ, ðàñò¼ò.
Èç íåñêîëüêèõ ãîòîâûõ ê èñïîëíåíèþ çàäà÷ âûáèðàåòñÿèìåþùàÿ íàèáîëüøóþ ñóììó ïðèîðèòåòîâ, òàê ÷òî ðàíî èëè ïîçäíî çàäà÷à äàæå ñ ñàìûì íèçêèì ñòàòè÷åñêèì ïðèîðèòåòîì ïîëó÷èò óïðàâëåíèåçà ñ÷åò âîçðîñøåãî äèíàìè÷åñêîãî ïðèîðèòåòà.Íåêîòîðûå îïåðàöèîííûå ñèñòåìû, âêëþ÷àÿ ðàííèå âåðñèè Windows, ïðèìåíÿëè ñòðàòåãèþ, çàíèìàþùóþ ïðîìåæóòî÷íîå ïîëîæåíèå ìåæäó ïàêåòíûì ðåæèìîìè ðåæèìîì ðàçäåëåíèÿ âðåìåíè.  ýòèõ ñèñòåìàõ çàäà÷àì âûäåëÿëñÿ êâàíò âðåìåíè, êàê è â ñèñòåìàõ ðàçäåëåíèÿ âðåìåíè, íî ïðèíóäèòåëüíîé ñìåíû òåêóùåéçàäà÷è ïî èñòå÷åíèè êâàíòà âðåìåíè íå ïðîèçâîäèëîñü; ñèñòåìà ïðîâåðÿëà, íåèñòåê ëè êâàíò âðåìåíè ó òåêóùåé çàäà÷è, òîëüêî êîãäà çàäà÷à îáðàùàëàñü ê îïåðàöèîííîé ñèñòåìå çà êàêèìè-ëèáî óñëóãàìè (íå îáÿçàòåëüíî çà ââîäîì-âûâîäîì).Òàêèì îáðàçîì, çàäà÷à, íå íóæäàþùàÿñÿ â óñëóãàõ îïåðàöèîííîé ñèñòåìû, ìîãëà îñòàâàòüñÿ íà ïðîöåññîðå ñêîëü óãîäíî äîëãî, êàê è â ïàêåòíûõ îïåðàöèîííûõñèñòåìàõ.
Òàêîé ðåæèì ðàáîòû íàçûâàåòñÿ íåâûòåñíÿþùèì .  ñîâðåìåííûõ ñèñòåìàõ îí íå ïðèìåíÿåòñÿ, ïîñêîëüêó íàëàãàåò ñëèøêîì æåñòêèå òðåáîâàíèÿ íàèñïîëíÿåìûå â ñèñòåìå ïðîãðàììû; òàê, â ðàííèõ âåðñèÿõ Windows ëþáàÿ ïðîãðàììà, çàíÿòàÿ äëèòåëüíûìè âû÷èñëåíèÿìè, áëîêèðîâàëà ðàáîòó âñåé ñèñòåìû. 4.1.4. Ðåæèì ðåàëüíîãî âðåìåíèÈíîãäà ðåæèì ðàçäåëåíèÿ âðåìåíè òàêæå îêàçûâàåòñÿ íåïðèãîäåí.  íåêîòîðûõ ñèòóàöèÿõ, òàêèõ êàê óïðàâëåíèå ïîëåòîì ñàìîëåòà, ÿäåðíûì ðåàêòîðîì, àâ-127òîìàòè÷åñêîé ëèíèåé ïðîèçâîäñòâà è ò.
ï., íåêîòîðûå çàäà÷è äîëæíû áûòü çàâåðøåíû ñòðîãî äî îïðåäåëåííîãî ìîìåíòà âðåìåíè; òàê, åñëè àâòîïèëîò ñàìîëåòà,ïîëó÷èâ ñèãíàë îò äàò÷èêîâ òàíãàæà è êðåíà, ïîòðàòèò íà âû÷èñëåíèå íåîáõîäèìîãî êîððåêòèðóþùåãî âîçäåéñòâèÿ áîëüøå âðåìåíè, ÷åì äîïóñòèìî, ñàìîëåòìîæåò âîâñå ïîòåðÿòü óïðàâëåíèå. ñëó÷àå, êîãäà âûïîëíÿåìûå çàäà÷è (êàê ìèíèìóì íåêîòîðûå èç íèõ) èìåþòæåñòêèå ðàìêè ïî íåîáõîäèìîìó âðåìåíè çàâåðøåíèÿ, ïðèìåíÿþòñÿ îïåðàöèîííûå ñèñòåìû ðåàëüíîãî âðåìåíè .  îòëè÷èå îò ñèñòåì ðàçäåëåíèÿ âðåìåíè, çàäà÷à ïëàíèðîâùèêà ðåàëüíîãî âðåìåíè íå â òîì, ÷òîáû äàòü âñåì ïðîãðàììàìîòðàáîòàòü íåêîòîðîå âðåìÿ, à â òîì, ÷òîáû îáåñïå÷èòü çàâåðøåíèå êàæäîé çàäà÷è çà îòâåä¼ííîå åé âðåìÿ, åñëè æå ýòî íåâîçìîæíî ñíÿòü çàäà÷ó, îñâîáîäèâïðîöåññîð äëÿ òåõ çàäà÷, êîòîðûå åù¼ ìîæíî óñïåòü çàâåðøèòü ê ñðîêó. 4.1.5. Àïïàðàòíàÿ ïîääåðæêà ìóëüòèçàäà÷íîñòèßñíî, ÷òî äëÿ ïîñòðîåíèÿ ìóëüòèçàäà÷íîãî ðåæèìà ðàáîòû âû÷èñëèòåëüíîé ñèñòåìû àïïàðàòóðà (ïðåæäå âñåãî ñàì öåíòðàëüíûé ïðîöåññîð)äîëæíà îáëàäàòü îïðåäåëåííûìè ñâîéñòâàìè.
Î íåêîòîðûõ èç íèõ ìûóæå ãîâîðèëè â 1.2 ýòî, âî-ïåðâûõ, çàùèòà ïàìÿòè, à âî-âòîðûõ, ðàçäåëåíèå ìàøèííûõ êîìàíä íà îáû÷íûå è ïðèâèëåãèðîâàííûå, ñ îòêëþ÷åíèåì âîçìîæíîñòè âûïîëíåíèÿ ïðèâèëåãèðîâàííûõ êîìàíä â îãðàíè÷åííîì ðåæèìå ðàáîòû öåíòðàëüíîãî ïðîöåññîðà.Äåéñòâèòåëüíî, ïðè îäíîâðåìåííîì íàõîæäåíèè â ïàìÿòè ìàøèíûíåñêîëüêèõ ïðîãðàìì, åñëè íå ïðåäïðèíÿòü ñïåöèàëüíûõ ìåð, îäíà èçïðîãðàìì ìîæåò ìîäèôèöèðîâàòü äàííûå èëè êîä äðóãèõ ïðîãðàìì èëèñàìîé îïåðàöèîííîé ñèñòåìû. Äàæå åñëè äîïóñòèòü îòñóòñòâèå çëîãîóìûñëà ó ðàçðàáîò÷èêîâ âñåõ çàïóñêàåìûõ ïðîãðàìì, îò ñëó÷àéíûõ îøèáîê â ïðîãðàììàõ íàñ ýòî äîïóùåíèå íå ñïàñåò, ïðè÷¼ì òàêàÿ îøèáêàìîæåò, ñ îäíîé ñòîðîíû, ïðèâåñòè ê òÿæåëûì àâàðèÿì âñåé ñèñòåìû, à ñäðóãîé ñòîðîíû îêàçàòüñÿ ñîâåðøåííî íåóëîâèìîé, âïëîòü äî àáñîëþòíîé íåâîçìîæíîñòè óñòàíîâèòü, êàêàÿ èç çàäà÷ ¾âèíîâàòà¿ â ïðîèñõîäÿùåì. Äåëî â òîì, ÷òî äëÿ îáíàðóæåíèÿ è óñòðàíåíèÿ îøèáêè íåîáõîäèìàâîçìîæíîñòü âîññîçäàíèÿ îáñòîÿòåëüñòâ, ïðè êîòîðûõ ýòà îøèáêà ïðîÿâëÿåòñÿ, à òî÷íî âîññîçäàòü ñîñòîÿíèå âñåé ñèñòåìû ñî âñåìè çàïóùåííûìè â íåé çàäà÷àìè ïðàêòè÷åñêè íåâîçìîæíî.
Î÷åâèäíî, íåîáõîäèìûñðåäñòâà îãðàíè÷åíèÿ âîçìîæíîñòåé ðàáîòàþùåé ïðîãðàììû ïî äîñòóïóê îáëàñòÿì ïàìÿòè, çàíÿòûì äðóãèìè ïðîãðàììàìè. Ïðîãðàììíî òàêóþçàùèòó ìîæíî ðåàëèçîâàòü ðàçâå ÷òî ïóòåì èíòåðïðåòàöèè âñåãî ìàøèííîãî êîäà èñïîëíÿþùåéñÿ ïðîãðàììû, ÷òî, êàê ïðàâèëî, íåäîïóñòèìî èçñîîáðàæåíèé ýôôåêòèâíîñòè. Òàêèì îáðàçîì, íåîáõîäèìà àïïàðàòíàÿïîääåðæêà çàùèòû ïàìÿòè, ïîçâîëÿþùàÿ îãðàíè÷èòü âîçìîæíîñòè òåêóùåé çàäà÷è ïî äîñòóïó ê îïåðàòèâíîé ïàìÿòè.Êîëü ñêîðî ñóùåñòâóåò çàùèòà ïàìÿòè, ïðîöåññîð äîëæåí èìåòü íàáîð êîìàíä äëÿ óïðàâëåíèÿ ýòîé çàùèòîé.
Åñëè, îïÿòü-òàêè, íå ïðåä128ïðèíÿòü ñïåöèàëüíûõ ìåð, òî òàêèå êîìàíäû ñìîæåò èñïîëíèòü ëþáàÿèç âûïîëíÿþùèõñÿ ïðîãðàìì, ñíÿâ çàùèòó ïàìÿòè èëè ìîäèôèöèðîâàâåå êîíôèãóðàöèþ, ÷òî ñäåëàëî áû ñàìó çàùèòó ïàìÿòè ïðàêòè÷åñêè áåññìûñëåííîé. Ðàññìàòðèâàåìàÿ ïðîáëåìà êàñàåòñÿ íå òîëüêî çàùèòû ïàìÿòè, íî è ðàáîòû ñ âíåøíèìè óñòðîéñòâàìè. Êàê óæå ãîâîðèëîñü, ÷òîáû îáåñïå÷èòü íîðìàëüíîå âçàèìîäåéñòâèå âñåõ ïðîãðàìì ñ óñòðîéñòâàìè ââîäà-âûâîäà, îïåðàöèîííàÿ ñèñòåìà äîëæíà âçÿòü íåïîñðåäñòâåííóþðàáîòó ñ óñòðîéñòâàìè íà ñåáÿ, à ïîëüçîâàòåëüñêèì ïðîãðàììàì ïðåäîñòàâëÿòü èíòåðôåéñ äëÿ îáðàùåíèÿ ê îïåðàöèîííîé ñèñòåìå çà óñëóãàìèïî ðàáîòå ñ óñòðîéñòâàìè, ïðè÷¼ì ïîëüçîâàòåëüñêèå ïðîãðàììû äîëæíû èìåòü âîçìîæíîñòü ðàáîòû ñ âíåøíèìè óñòðîéñòâàìè òîëüêî ÷åðåçîïåðàöèîííóþ ñèñòåìó.
Ñîîòâåòñòâåííî, íåîáõîäèìî çàïðåòèòü ïîëüçîâàòåëüñêèì ïðîãðàììàì âûïîëíåíèå êîìàíä ïðîöåññîðà, îñóùåñòâëÿþùèõ ÷òåíèå/çàïèñü ïîðòîâ ââîäà-âûâîäà. Âîîáùå, ïåðåäàâàÿ óïðàâëåíèåïîëüçîâàòåëüñêîé ïðîãðàììå, îïåðàöèîííàÿ ñèñòåìà äîëæíà áûòü óâåðåíà, ÷òî çàäà÷à íå ñìîæåò (èíà÷å êàê ïóòåì îáðàùåíèÿ ê ñàìîé îïåðàöèîííîé ñèñòåìå) âûïîëíèòü íèêàêèå äåéñòâèÿ, âëèÿþùèå íà ñèñòåìó âöåëîì.Ïðîáëåìà ðåøàåòñÿ ââåäåíèåì äâóõ ðåæèìîâ ðàáîòû öåíòðàëüíîãî ïðîöåññîðà: ïðèâèëåãèðîâàííîãî è îãðàíè÷åííîãî .  ëèòåðàòóðåïðèâèëåãèðîâàííûé ðåæèì ÷àñòî íàçûâàþò ¾ðåæèìîì ÿäðà¿ èëè ¾ðåæèìîì ñóïåðâèçîðà¿ (àíãë. kernel mode , supervisor mode ).
Îãðàíè÷åííûé ðåæèì íàçûâàþò òàêæå ¾ïîëüçîâàòåëüñêèì ðåæèìîì¿ (àíãë. usermode ) èëè ïðîñòî íåïðèâèëåãèðîâàííûì (àíãë. nonprivileged ). Òåðìèí îãðàíè÷åííûé ðåæèì èçáðàí â íàìè êàê íàèáîëåå òî÷íî îïèñûâàþùèé ñóùíîñòü ýòîãî ðåæèìà ðàáîòû öåíòðàëüíîãî ïðîöåññîðà áåçïðèâÿçêè ê åãî èñïîëüçîâàíèþ îïåðàöèîííûìè ñèñòåìàìè.  ïðèâèëåãèðîâàííîì ðåæèìå ïðîöåññîð ìîæåò âûïîëíÿòü ëþáûå ñóùåñòâóþùèåêîìàíäû.  îãðàíè÷åííîì ðåæèìå âûïîëíåíèå êîìàíä, âëèÿþùèõ íà ñèñòåìó â öåëîì, çàïðåùåíî; ðàçðåøàþòñÿ òîëüêî êîìàíäû, ýôôåêò êîòîðûõ îãðàíè÷åí ìîäèôèêàöèåé äàííûõ â îáëàñòÿõ ïàìÿòè, íå çàêðûòûõçàùèòîé ïàìÿòè. Ñàìà îïåðàöèîííàÿ ñèñòåìà âûïîëíÿåòñÿ â ïðèâèëåãèðîâàííîì ðåæèìå, ïîëüçîâàòåëüñêèå ïðîãðàììû â îãðàíè÷åííîì.Êàê ìû óæå îòìå÷àëè â 1.2, ïîëüçîâàòåëüñêàÿ ïðîãðàììà ìîæåòòîëüêî ìîäèôèöèðîâàòü äàííûå â îòâåä¼ííîé åé ïàìÿòè; ëþáûå äðóãèåäåéñòâèÿ òðåáóþò îáðàùåíèÿ ê îïåðàöèîííîé ñèñòåìå.
Ýòî îáåñïå÷èâàåòñÿ ïîääåðæêîé â öåíòðàëüíîì ïðîöåññîðå ìåõàíèçìà çàùèòû ïàìÿòèè íàëè÷èåì îãðàíè÷åííîãî ðåæèìà ðàáîòû. Ñîáëþäåíèÿ ýòèõ äâóõ àïïàðàòíûõ òðåáîâàíèé, îäíàêî, åù¼ íå äîñòàòî÷íî äëÿ ðåàëèçàöèè ìóëüòèçàäà÷íîãî ðåæèìà ðàáîòû ñèñòåìû.Âåðíåìñÿ ê ñèòóàöèè ñ îïåðàöèåé ââîäà-âûâîäà.  îäíîçàäà÷íîé ñèñòåìå (ðèñ. 4.2 íà ñòð.