А.В. Столяров - Программирование на языке ассемблера NASM для ОС Unix (1110582), страница 28
Текст из файла (страница 28)
ï. Äëÿ ðàáîòû ïðîãðàììû âñÿýòà èíôîðìàöèÿ ñîâåðøåííî áåñïîëåçíà, òåì áîëåå ÷òî ïî îáú¼ìó îíàìîæåò â íåñêîëüêî ðàç ïðåâûøàòü ¾ïîëåçíûé¿ îáúåêòíûé êîä. Îäíàêîâ ñëó÷àå, åñëè âàøà ïðîãðàììà ðàáîòàåò íå òàê, êàê âû îò íå¼ îæèäàåòå,êîìïèëÿöèÿ ñ ôëàæêîì -g ïîçâîëèò âàì âîñïîëüçîâàòüñÿ îòëàä÷èêîì(íàïðèìåð, gdb) äëÿ ïîøàãîâîãî âûïîëíåíèÿ ïðîãðàììû, ÷òî, â ñâîþî÷åðåäü, äàñò âîçìîæíîñòü ðàçîáðàòüñÿ â ïðîèñõîäÿùåì.Åù¼ îäèí ïîëåçíûé êëþ÷ -e; îí ïðåäïèñûâàåò NASM'ó ïðîãíàòüíàø èñõîäíûé êîä ÷åðåç ìàêðîïðîöåññîð, âûäàòü ðåçóëüòàò â ïîòîê ñòàíäàðòíîãî âûâîäà (ïîïðîñòó ãîâîðÿ, íà ýêðàí) è íà ýòîì óñïîêîèòüñÿ.Òàêîé ðåæèì ðàáîòû ìîæåò îêàçàòüñÿ ïîëåçåí, åñëè ìû îøèáëèñü ïðèíàïèñàíèè ìàêðîñà è íèêàê íå ìîæåì ïîíÿòü, â ÷¼ì íàøà îøèáêà çàêëþ÷àåòñÿ; óâèäåâ ðåçóëüòàò ìàêðîïðîöåññèðîâàíèÿ íàøåé ïðîãðàììû, ìû,ñêîðåå âñåãî, ñìîæåì ïîíÿòü, ÷òî è ïî÷åìó ïîøëî íå òàê.NASM ïîääåðæèâàåò è äðóãèå êëþ÷è êîìàíäíîé ñòðîêè; æåëàþùèåìîãóò èçó÷èòü èõ ñàìîñòîÿòåëüíî, îáðàòèâøèñü ê äîêóìåíòàöèè.122Ãëàâà 4.
Âçàèìîäåéñòâèå ñîïåðàöèîííîé ñèñòåìîé ýòîé ãëàâå ìû ðàññìîòðèì ñðåäñòâà âçàèìîäåéñòâèÿ ïîëüçîâàòåëüñêîé ïðîãðàììû ñ îïåðàöèîííîé ñèñòåìîé, ÷òî ïîçâîëèò â äàëüíåéøåìîòêàçàòüñÿ îò èñïîëüçîâàíèÿ ìàêðîñîâ èç ôàéëà stud_io.inc, à ïðè æåëàíèè è ñàìîñòîÿòåëüíî ñîçäàâàòü èõ àíàëîãè.Ïîëüçîâàòåëüñêèå çàäà÷è îáðàùàþòñÿ ê ÿäðó îïåðàöèîííîé ñèñòåìû,èñïîëüçóÿ òàê íàçûâàåìûå ñèñòåìíûå âûçîâû , êîòîðûå, â ñâîþ î÷åðåäü, ðåàëèçîâàíû ÷åðåç ìåõàíèçì ïðîãðàììíûõ ïðåðûâàíèé . ×òîáû ïîíÿòü, ÷òî ýòî òàêîå, íàì ïðèä¼òñÿ ïîäðîáíî îáñóäèòü, ÷òî òàêîåïðåðûâàíèÿ, êàêèå îíè áûâàþò è äëÿ ÷åãî ñëóæàò, ïîýòîìó ïåðâûå äâàïàðàãðàôà ýòîé ãëàâû ìû ïîñâÿòèì èçëîæåíèþ íåîáõîäèìûõ òåîðåòè÷åñêèõ ñâåäåíèé, è ëèøü çàòåì, èìåÿ ãîòîâóþ áàçó, ðàññìîòðèì ìåõàíèçìñèñòåìíûõ âûçîâîâ îïåðàöèîííûõ ñèñòåì Linux è FreeBSD íà óðîâíå ìàøèííûõ êîìàíä. 4.1.
Ìóëüòèçàäà÷íîñòü è å¼ îñíîâíûå âèäû 4.1.1. Ïîíÿòèå îäíîâðåìåííîñòè âûïîëíåíèÿÊàê óæå ãîâîðèëîñü âî ââåäåíèè, ìóëüòèçàäà÷íîñòü èëè ðåæèììóëüòèïðîãðàììèðîâàíèÿ ýòî òàêîé ðåæèì ðàáîòû âû÷èñëèòåëüíîéñèñòåìû, ïðè êîòîðîì íåñêîëüêî ïðîãðàìì ìîãóò âûïîëíÿòüñÿ â ñèñòåìåîäíîâðåìåííî. Äëÿ ýòîãî, âîîáùå ãîâîðÿ, íå íóæíî íåñêîëüêî ôèçè÷åñêèõ ïðîöåññîðîâ. Âû÷èñëèòåëüíàÿ ñèñòåìà ìîæåò èìåòü âñåãî îäèí ïðîöåññîð, ÷òî íå ìåøàåò ñàìî ïî ñåáå ðåàëèçàöèè ðåæèìà ìóëüòèïðîãðàììèðîâàíèÿ. Òàê èëè èíà÷å, êîëè÷åñòâî ïðîöåññîðîâ â ñèñòåìå â îáùåìñëó÷àå ìåíüøå êîëè÷åñòâà îäíîâðåìåííî âûïîëíÿåìûõ ïðîãðàìì. ßñíî,÷òî ïðîöåññîð â êàæäûé ìîìåíò âðåìåíè ìîæåò âûïîëíÿòü òîëüêî îäíó ïðîãðàììó. ×òî æå, â òàêîì ñëó÷àå, ïîíèìàåòñÿ ïîä ìóëüòèïðîãðàììèðîâàíèåì? Êàæóùèéñÿ ïàðàäîêñ ðàçðåøàåòñÿ ââåäåíèåì ñëåäóþùåãî123Задача 1Задача 2Задача 3Ðèñ.
4.1. Îäíîâðåìåííîå âûïîëíåíèå çàäà÷ íà îäíîì ïðîöåññîðåîïðåäåëåíèÿ îäíîâðåìåííîñòè äëÿ ñëó÷àÿ âûïîëíÿþùèõñÿ ïðîãðàìì(ïðîöåññîâ , èëè çàäà÷ ):Äâå çàäà÷è, çàïóùåííûå íà îäíîé âû÷èñëèòåëüíîé ñèñòåìå,íàçûâàþòñÿ âûïîëíÿåìûìè îäíîâðåìåííî, åñëè ïåðèîäû èõ âûïîëíåíèÿ (âðåìåííîé îòðåçîê ñ ìîìåíòà çàïóñêà äî ìîìåíòàçàâåðøåíèÿ êàæäîé èç çàäà÷) ïîëíîñòüþ èëè ÷àñòè÷íî ïåðåêðûâàþòñÿ. Èíûìè ñëîâàìè, åñëè ïðîöåññîð, ðàáîòàÿ â êàæäûé ìîìåíòâðåìåíè ñ îäíîé çàäà÷åé, ïðè ýòîì ïåðåêëþ÷àåòñÿ ìåæäó íåñêîëüêèìèçàäà÷àìè, óäåëÿÿ âíèìàíèå òî îäíîé èç íèõ, òî äðóãîé, ýòè çàäà÷è âñîîòâåòñòâèè ñ íàøèì îïðåäåëåíèåì áóäóò ñ÷èòàòüñÿ âûïîëíÿåìûìè îäíîâðåìåííî (ñì. ðèñ. 4.1). 4.1.2. Ïàêåòíûé ðåæèì ïðîñòåéøåì ñëó÷àå ìóëüòèçàäà÷íîñòü ïîçâîëÿåò ðåøèòü ïðîáëåìó ïðîñòîÿ öåíòðàëüíîãî ïðîöåññîðà âî âðåìÿ îïåðàöèé ââîäà-âûâîäà.Ïðåäñòàâèì ñåáå âû÷èñëèòåëüíóþ ñèñòåìó, â êîòîðîé âûïîëíÿåòñÿ îäíàçàäà÷à (íàïðèìåð, îáñ÷åò ñëîæíîé ìàòåìàòè÷åñêîé ìîäåëè).
 íåêîòîðûé ìîìåíò âðåìåíè çàäà÷å ìîæåò ïîòðåáîâàòüñÿ îïåðàöèÿ îáìåíà äàííûìè ñ êàêèì-ëèáî âíåøíèì óñòðîéñòâîì (íàïðèìåð, ÷òåíèå î÷åðåäíîãîáëîêà âõîäíûõ äàííûõ ëèáî, íàîáîðîò, çàïèñü êîíå÷íûõ èëè ïðîìåæóòî÷íûõ ðåçóëüòàòîâ).Ñêîðîñòü ðàáîòû âíåøíèõ óñòðîéñòâ (äèñêîâ è ò. ï.) îáû÷íî íà ïîðÿäêè íèæå, ÷åì ñêîðîñòü ðàáîòû öåíòðàëüíîãî ïðîöåññîðà, è â ëþáîìñëó÷àå íèêîèì îáðàçîì íå áåñêîíå÷íà. Òàê, äëÿ ÷òåíèÿ çàäàííîãî áëîêàäàííûõ ñ äèñêà íåîáõîäèìî âêëþ÷èòü ïðèâîä ãîëîâêè, ÷òîáû ïåðåìåñòèòü å¼ â íóæíîå ïîëîæåíèå (íà íóæíóþ äîðîæêó) è äîæäàòüñÿ, ïîêàñàì äèñê ïîâåðí¼òñÿ íà íóæíûé óãîë (äëÿ ðàáîòû ñ çàäàííûì ñåêòîðîì); çàòåì, ïîêà ñåêòîð ïðîõîäèò ïîä ãîëîâêîé, ïðî÷èòàòü çàïèñàííûåâ ýòîì ñåêòîðå äàííûå âî âíóòðåííèé áóôåð êîíòðîëëåðà äèñêà1 ; íàêîíåö, ñëåäóåò ðàçìåñòèòü ïðî÷èòàííûå äàííûå â òîé îáëàñòè ïàìÿòè, ãäå1 ×òåíèå íåïîñðåäñòâåííî â îïåðàòèâíóþ ïàìÿòü òåîðåòè÷åñêè âîçìîæíî, íî òåõíè÷åñêè ñîïðÿæåíî ñ îïðåäåëåííûìè òðóäíîñòÿìè è ïðèìåíÿåòñÿ ðåäêî.124работаожидание (простой)работаÐèñ.
4.2. Ïðîñòîé ïðîöåññîðà â îäíîçàäà÷íîé ñèñòåìåзадача 1блокировкаготовностьзадача 1задача 2Ðèñ. 4.3. Ïàêåòíàÿ ÎÑèõ ïîÿâëåíèÿ îæèäàåò ïîëüçîâàòåëüñêàÿ ïðîãðàììà, è ëèøü ïîñëå ýòîãîâåðíóòü åé óïðàâëåíèå. Âñ¼ ýòî âðåìÿ (êàê ìèíèìóì, âðåìÿ, çàòðà÷èâàåìîå íà ïåðåìåùåíèå ãîëîâêè è îæèäàíèå íóæíîé ôàçû ïîâîðîòà äèñêà)öåíòðàëüíûé ïðîöåññîð áóäåò ïðîñòàèâàòü (ðèñ. 4.2). Åñëè çàäà÷à ó íàñâñåãî îäíà è áîëüøå äåëàòü íå÷åãî, òàêîé ïðîñòîé íå ñîçäà¼ò ïðîáëåì,íî åñëè êðîìå òîé çàäà÷è, êîòîðàÿ óæå ðàáîòàåò, ó íàñ åñòü è äðóãèåçàäà÷è, äîæèäàþùèåñÿ ñâîåãî ÷àñà, òî ëó÷øå áû áûëî óïîòðåáèòü âðåìÿöåíòðàëüíîãî ïðîöåññîðà, âïóñòóþ ïðîïàäàþùåå â îæèäàíèè îêîí÷àíèÿîïåðàöèé ââîäà-âûâîäà, íà ðåøåíèå äðóãèõ çàäà÷.
Èìåííî òàê ïîñòóïàþò ìóëüòèçàäà÷íûå îïåðàöèîííûå ñèñòåìû.  òàêîé ñèñòåìå èç çàäà÷,êîòîðûå íóæíî ðåøàòü, ôîðìèðóåòñÿ î÷åðåäü çàäàíèé. Êàê òîëüêî àêòèâíàÿ çàäà÷à çàòðåáóåò ïðîâåäåíèå îïåðàöèè ââîäà-âûâîäà, îïåðàöèîííàÿ ñèñòåìà âûïîëíÿåò íåîáõîäèìûå äåéñòâèÿ ïî çàïóñêó êîíòðîëëåðîâóñòðîéñòâ íà èñïîëíåíèå çàïðîøåííîé îïåðàöèè ëèáî ñòàâèò çàïðîøåííóþ îïåðàöèþ â î÷åðåäü, åñëè íà÷àòü å¼ íåìåäëåííî ïî êàêèì-òî ïðè÷èíàì íåëüçÿ, ïîñëå ÷åãî àêòèâíàÿ çàäà÷à çàìåíÿåòñÿ íà äðóãóþ íîâóþ(âçÿòóþ èç î÷åðåäè) èëè óæå âûïîëíÿâøóþñÿ ðàíüøå, íî íå óñïåâøóþçàâåðøèòüñÿ.
Çàìåíåííàÿ çàäà÷à â ýòîì ñëó÷àå ñ÷èòàåòñÿ ïåðåøåäøåé âñîñòîÿíèå îæèäàíèÿ ðåçóëüòàòà ââîäà-âûâîäà, èëè ñîñòîÿíèå áëîêèðîâêè .125 ïðîñòåéøåì ñëó÷àå íîâàÿ àêòèâíàÿ çàäà÷à îñòàåòñÿ â ðåæèìå âûïîëíåíèÿ äî òåõ ïîð, ïîêà îíà íå çàâåðøèòñÿ ëèáî íå çàòðåáóåò, â ñâîþî÷åðåäü, ïðîâåäåíèå îïåðàöèè ââîäà-âûâîäà. Ïðè ýòîì áëîêèðîâàííàÿçàäà÷à ïî îêîí÷àíèè îïåðàöèè ââîäà-âûâîäà ïåðåõîäèò èç ñîñòîÿíèÿ áëîêèðîâêè â ñîñòîÿíèå ãîòîâíîñòè ê âûïîëíåíèþ , íî ïåðåêëþ÷åíèÿíà íåå íå ïðîèñõîäèò (ñì. ðèñ. 4.3); ýòî îáóñëîâëåíî òåì, ÷òî îïåðàöèÿñìåíû àêòèâíîé çàäà÷è, âîîáùå ãîâîðÿ, îòíèìàåò ìíîãî ïðîöåññîðíîãîâðåìåíè. Òàêîé ñïîñîá ïîñòðîåíèÿ ìóëüòèçàäà÷íîñòè, ïðè êîòîðîì ñìåíààêòèâíîé çàäà÷è ïðîèñõîäèò òîëüêî â ñëó÷àå åå îêîí÷àíèÿ èëè çàïðîñàíà îïåðàöèþ ââîäà-âûâîäà, íàçûâàåòñÿ ïàêåòíûì ðåæèìîì 2 , à îïåðàöèîííûå ñèñòåìû, ðåàëèçóþùèå ýòîò ðåæèì, ïàêåòíûìè îïåðàöèîííûìè ñèñòåìàìè . Ðåæèì ïàêåòíîé ìóëüòèçàäà÷íîñòè ÿâëÿåòñÿ ñàìûì ýôôåêòèâíûì ñ òî÷êè çðåíèÿ èñïîëüçîâàíèÿ âû÷èñëèòåëüíîéìîùíîñòè öåíòðàëüíîãî ïðîöåññîðà, ïîýòîìó èìåííî ïàêåòíûé ðåæèìèñïîëüçóåòñÿ äëÿ óïðàâëåíèÿ ñóïåðêîìïüþòåðàìè è äðóãèìè ìàøèíàìè,îñíîâíîå íàçíà÷åíèå êîòîðûõ áîëüøèå îáúåìû ÷èñëåííûõ ðàñ÷åòîâ. 4.1.3.
Ðåæèì ðàçäåëåíèÿ âðåìåíèÑ ïîÿâëåíèåì ïåðâûõ òåðìèíàëîâ è äèàëîãîâîãî (èíà÷å ãîâîðÿ, èíòåðàêòèâíîãî) ðåæèìà ðàáîòû ñ êîìïüþòåðàìè âîçíèêëà ïîòðåáíîñòü âäðóãèõ ñòðàòåãèÿõ ñìåíû àêòèâíûõ çàäà÷, èëè, êàê ïðèíÿòî ãîâîðèòü,ïëàíèðîâàíèÿ âðåìåíè öåíòðàëüíîãî ïðîöåññîðà .
Äåéñòâèòåëüíî, ïîëüçîâàòåëþ, âåäóùåìó äèàëîã ñ òîé èëè èíîé ïðîãðàììîé, âðÿä ëèçàõî÷åòñÿ æäàòü, ïîêà íåêàÿ àêòèâíàÿ çàäà÷à, âû÷èñëÿþùàÿ, ñêàæåì,îáðàòíóþ ìàòðèöó ïîðÿäêà 1000x1000, çàâåðøèò ñâîþ ðàáîòó. Ïðè ýòîììíîãî ïðîöåññîðíîãî âðåìåíè íà îáñëóæèâàíèå äèàëîãà ñ ïîëüçîâàòåëåìíå òðåáóåòñÿ: â îòâåò íà êàæäîå äåéñòâèå ïîëüçîâàòåëÿ (íàïðèìåð, íàæàòèå íà êëàâèøó) îáû÷íî íåîáõîäèìî âûïîëíèòü íàáîð äåéñòâèé, óêëàäûâàþùèéñÿ â íåñêîëüêî ìèëëèñåêóíä, òîãäà êàê ñàìèõ òàêèõ ñîáûòèéïîëüçîâàòåëü äàæå â ðåæèìå àêòèâíîãî íàáîðà òåêñòà ìîæåò ñîçäàòü íèêàê íå áîëüøå òðåõ-÷åòûðåõ â ñåêóíäó (ñêîðîñòü êîìïüþòåðíîãî íàáîðà200 ñèìâîëîâ â ìèíóòó ñ÷èòàåòñÿ î÷åíü âûñîêîé). Ñîîòâåòñòâåííî, áûëî áû íåëîãè÷íî æäàòü, ïîêà ïîëüçîâàòåëü ïîëíîñòüþ çàâåðøèò ñâîéäèàëîãîâûé ñåàíñ: áîëüøóþ ÷àñòü âðåìåíè ïðîöåññîð ìîã áû ïðîèçâîäèòü àðèôìåòè÷åñêèå äåéñòâèÿ, íåîáõîäèìûå äëÿ çàäà÷è, âû÷èñëÿþùåéìàòðèöó.
Ðåøèòü ïðîáëåìó ïîçâîëÿåò ðåæèì ðàçäåëåíèÿ âðåìåíè . ýòîì ðåæèìå êàæäîé çàäà÷å îòâîäèòñÿ îïðåäåëåííîå âðåìÿ ðàáîòû,2 Ðóññêîÿçû÷íûé òåðìèí ¾ïàêåòíûé ðåæèì¿ ÿâëÿåòñÿ óñòîÿâøèìñÿ, õîòÿ è íåñëèøêîì óäà÷íûì ïåðåâîäîì àíãëèéñêîãî òåðìèíà ¾batch mode¿; ñëîâî batch ìîæíî òàêæå ïåðåâåñòè êàê ¾êîëîäà¿ (ñîáñòâåííî, èçíà÷àëüíî èìåëèñü â âèäó êîëîäûïåðôîêàðò, îëèöåòâîðÿâøèå çàäàíèÿ). Íå ñëåäóåò ïóòàòü ýòîò òåðìèí ñî ñëîâàìè,ïðîèñõîäÿùèìè îò àíãëèéñêîãî ñëîâà packet, êîòîðîå òîæå îáû÷íî ïåðåâîäèòñÿ íàðóññêèé êàê ¾ïàêåò¿.126íàçûâàåìîå êâàíòîì âðåìåíè . Ïî îêîí÷àíèè ýòîãî êâàíòà, åñëè â ñèñòåìå èìåþòñÿ äðóãèå ãîòîâûå ê èñïîëíåíèþ çàäà÷è, àêòèâíàÿ çàäà÷àïðèíóäèòåëüíî ïðèîñòàíàâëèâàåòñÿ è çàìåíÿåòñÿ äðóãîé çàäà÷åé.