Главная » Просмотр файлов » А.В. Столяров - Программирование на языке ассемблера NASM для ОС Unix

А.В. Столяров - Программирование на языке ассемблера NASM для ОС Unix (1110582), страница 31

Файл №1110582 А.В. Столяров - Программирование на языке ассемблера NASM для ОС Unix (А.В. Столяров - Программирование на языке ассемблера NASM для ОС Unix) 31 страницаА.В. Столяров - Программирование на языке ассемблера NASM для ОС Unix (1110582) страница 312019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 31)

Ïûòàòüñÿ îïîâåñòèòü ïðîãðàììó î ïðîèñøåäøåì ïóòåì âûñòàâëåíèÿ êàêîãîíèáóäü ôëàãà, î÷åâèäíî, òàêæå áåññìûñëåííî. Åñëè ïðîãðàììèñò íå ïðîèçâåë ïåðåä âûïîëíåíèåì äåëåíèÿ ïðîâåðêó äåëèòåëÿ íà ðàâåíñòâî íóëþ, ïðåäñòàâëÿåòñÿ è âîâñå íè÷òîæíîé âåðîÿòíîñòü òîãî, ÷òî îí ñòàíåòïðîâåðÿòü ïîñëå äåëåíèÿ çíà÷åíèå êàêîãî-òî ôëàãà.Çàâåðøèòü òåêóùóþ çàäà÷ó ïðîöåññîð ñàìîñòîÿòåëüíî íå ìîæåò. Ýòîñëèøêîì ñëîæíîå äåéñòâèå, çàâèñÿùåå îò ðåàëèçàöèè îïåðàöèîííîé ñèñòåìû. Îñòàåòñÿ òîëüêî îäèí âàðèàíò: ïåðåäàòü óïðàâëåíèå îïåðàöèîííîé ñèñòåìå, èçâåñòèâ å¼ î ïðîèñøåäøåì. ×òî äåëàòü ñ àâàðèéíîé çàäà÷åé, îïåðàöèîííàÿ ñèñòåìà ðåøèò ñàìîñòîÿòåëüíî.

Äëÿ ýòîãî òðåáóåòñÿ,î÷åâèäíî, ïåðåêëþ÷èòüñÿ â ïðèâèëåãèðîâàííûé ðåæèì è ïåðåäàòü óïðàâëåíèå êîäó îïåðàöèîííîé ñèñòåìû; ïåðåä ýòèì æåëàòåëüíî ñîõðàíèòü ðåãèñòðû (õîòÿ áû ñ÷¼ò÷èê êîìàíä è ðåãèñòð ôëàãîâ); äàæå åñëè çàäà÷àíè ïðè êàêèõ óñëîâèÿõ íå áóäåò ïðîäîëæåíà ñ òîãî æå ìåñòà (à ïðåäïîëàãàòü ýòî ïðîöåññîð, âîîáùå ãîâîðÿ, íå âïðàâå), çíà÷åíèÿ ðåãèñòðîâ âëþáîì ñëó÷àå ìîãóò ïðèãîäèòüñÿ îïåðàöèîííîé ñèñòåìå äëÿ àíàëèçà ïðîèñøåñòâèÿ. Áîëåå òîãî, êàêèì-òî îáðàçîì ñëåäóåò ñîîáùèòü îïåðàöèîííîé ñèñòåìå î ïðè÷èíå òîãî, ÷òî óïðàâëåíèå ïåðåäàíî åé; êðîìå äåëåíèÿ133íà íîëü, òàêèìè ïðè÷èíàìè ìîãóò áûòü íàðóøåíèå çàùèòû ïàìÿòè, ïîïûòêà âûïîëíèòü çàïðåù¼ííóþ èëè íåñóùåñòâóþùóþ èíñòðóêöèþ è ò. ï.Ëåãêî çàìåòèòü, ÷òî äåéñòâèÿ, êîòîðûå äîëæåí âûïîëíèòü ïðîöåññîð, îêàçûâàþòñÿ î÷åíü ïîõîæè íà ðàññìîòðåííûé ðàíåå ñëó÷àé àïïàðàòíîãî ïðåðûâàíèÿ. Îñíîâíîå îòëè÷èå ñîñòîèò â îòñóòñòâèè îáìåíà ïîøèíå (çàïðîñà è ïîäòâåðæäåíèÿ ïðåðûâàíèÿ): äåéñòâèòåëüíî, èíôîðìàöèÿ î ïåðå÷èñëåííûõ ñîáûòèÿõ âîçíèêàåò âíóòðè ïðîöåññîðà, à íå âíååãî4 .

Îñòàëüíûå øàãè ïî îáðàáîòêå äåëåíèÿ íà íîëü è äðóãèõ ïîäîáíûõñèòóàöèé ïîâòîðÿþò øàãè ïî îáðaáîòêå àïïàðàòíîãî ïðåðûâàíèÿ ïðàêòè÷åñêè äîñëîâíî. Ïîýòîìó îáðàáîòêó ñèòóàöèé, â êîòîðûõ äàëüíåéøååâûïîëíåíèå àêòèâíîé çàäà÷è îêàçûâàåòñÿ íåâîçìîæíîé ïî ïðè÷èíå âûïîëíåííûõ åþ íåêîððåêòíûõ äåéñòâèé, íàçûâàþò òàê æå, êàê è äåéñòâèÿïî çàïðîñó âíåøíèõ óñòðîéñòâ ïðåðûâàíèÿìè. ×òîáû íå ïóòàòü ðàçíûå ïî ñâîåé ïðèðîäå ïðåðûâàíèÿ, èõ äåëÿò íà âíåøíèå (àïïàðàòíûå) èâíóòðåííèå; òàêàÿ òåðìèíîëîãèÿ îïðàâäàíà òåì, ÷òî ïðè÷èíà âíåøíåãîïðåðûâàíèÿ íàõîäèòñÿ âíå öåíòðàëüíîãî ïðîöåññîðà, òîãäà êàê ïðè÷èíà âíóòðåííåãî ó ÖÏ âíóòðè. Èíîãäà âíóòðåííèå ïðåðûâàíèÿ íàçûâàþò èíà÷å, íàïðèìåð ëîâóøêàìè (traps), èñêëþ÷åíèÿìè (exceptions)èëè êàê-òî åù¼.Ÿ 4.2.3.

Ïðîãðàììíûå ïðåðûâàíèÿÊàê óæå ãîâîðèëîñü, ïîëüçîâàòåëüñêîé çàäà÷å íå ïîçâîëÿåòñÿ äåëàòüíè÷åãî, êðîìå ïðåîáðàçîâàíèÿ äàííûõ â îòâåä¼ííîé åé ïàìÿòè. Âñå äåéñòâèÿ, çàòðàãèâàþùèå âíåøíèé ïî îòíîøåíèþ ê çàäà÷å ìèð, âûïîëíÿþòñÿ ÷åðåç îïåðàöèîííóþ ñèñòåìó. Ñîîòâåòñòâåííî, íåîáõîäèì ìåõàíèçì,ïîçâîëÿþùèé ïîëüçîâàòåëüñêîé çàäà÷å îáðàòèòüñÿ ê ÿäðó îïåðàöèîííîéñèñòåìû çà òåìè èëè èíûìè óñëóãàìè.

Íàïîìíèì, ÷òî îáðàùåíèå ïîëü-çîâàòåëüñêîé çàäà÷è ê ÿäðó îïåðàöèîííîé ñèñòåìû çà óñëóãàìèíàçûâàåòñÿ ñèñòåìíûì âûçîâîì . ßñíî, ÷òî ïî ñâîåé ñóòè ñèñòåì-íûé âûçîâ ýòî ïåðåäà÷à óïðàâëåíèÿ îò ïîëüçîâàòåëüñêîé çàäà÷è ÿäðóîïåðàöèîííîé ñèñòåìû. Îäíàêî çäåñü åñòü äâå ïðîáëåìû. Âî-ïåðâûõ, ÿäðî ðàáîòàåò â ïðèâèëåãèðîâàííîì ðåæèìå, à ïîëüçîâàòåëüñêàÿ çàäà÷à â îãðàíè÷åííîì. Âî-âòîðûõ, ïðîñòðàíñòâî àäðåñîâ ÿäðà äëÿ ïîëüçîâàòåëüñêîé çàäà÷è îáû÷íî íåäîñòóïíî (áîëåå òîãî, â àäðåñíîì ïðîñòðàíñòâå çàäà÷è ýòèõ àäðåñîâ ìîæåò âîîáùå íå áûòü). Âïðî÷åì, äàæå åñëèáû îíî áûëî äîñòóïíî, ïîçâîëèòü ïîëüçîâàòåëüñêîé çàäà÷å ïåðåäàâàòüóïðàâëåíèå â ïðîèçâîëüíóþ òî÷êó ÿäðà áûëî áû íåñêîëüêî ñòðàííî.Èòàê, äëÿ îñóùåñòâëåíèÿ ñèñòåìíîãî âûçîâà íåîáõîäèìî ñìåíèòü ðåæèì âûïîëíåíèÿ ñ ïîëüçîâàòåëüñêîãî íà ïðèâèëåãèðîâàííûé è ïåðåäàòü4 Ñ òî÷êè çðåíèÿ ðåàëèçàöèè âíóòðåííèå ïðåðûâàíèÿ ìîãóò îêàçàòüñÿ ìíîãîêðàòíîïðîùå, ÷åì àïïàðàòíûå, çà ñ÷åò òîãî, ÷òî îíè âñåãäà ïðîèñõîäÿò íà îïðåäåëåííîé ôàçåâûïîëíåíèÿ èíñòðóêöèè; ïîäðîáíîñòè ÷èòàòåëü íàéäåò â êíèãå [1].134óïðàâëåíèå â íåêîòîðóþ òî÷êó âõîäà â îïåðàöèîííîé ñèñòåìå.

Íàì óæåèçâåñòíû äâà ñëó÷àÿ, â êîòîðûõ ïðîèñõîäèò ÷òî-òî ïîäîáíîå ýòî àïïàðàòíûå è âíóòðåííèå ïðåðûâàíèÿ. Èçîáðåòàòü äîïîëíèòåëüíûé ìåõàíèçì äëÿ ñèñòåìíîãî âûçîâà íå îáÿçàòåëüíî: äëÿ åãî ðåàëèçàöèè ìîæíîèñïîëüçîâàòü ÷àñòíûé ñëó÷àé âíóòðåííåãî ïðåðûâàíèÿ, èíèöèèðóåìûéñïåöèàëüíî ïðåäíàçíà÷åííîé äëÿ ýòîãî ìàøèííîé èíñòðóêöèåé. Íà ðàçíûõ àðõèòåêòóðàõ ñîîòâåòñòâóþùàÿ èíñòðóêöèÿ ìîæåò íàçûâàåòñÿ trap(ëîâóøêà), svc (supervisor call, òî åñòü ¾îáðàùåíèå ê ñóïåðâèçîðó¿) è ò. ä.Ðàññìàòðèâàåìûå íàìè ïðîöåññîðû ñåìåéñòâà i386 èñïîëüçóþò êîìàíäó int (îò ñëîâà interrupt ïðåðûâàíèå).

Òàêîå ïðåðûâàíèå íàçûâàåòñÿ ïðîãðàììíûì ïðåðûâàíèåì . Îòëè÷èå ýòîãî âèäà ïðåðûâàíèÿ îòîñòàëüíûõ ñîñòîèò â òîì, ÷òî îíî ïðîèñõîäèò ïî èíèöèàòèâå ïîëüçîâàòåëüñêîé çàäà÷è, òîãäà êàê äðóãèå ïðåðûâàíèÿ ñëó÷àþòñÿ áåç å¼ âåäîìà:âíåøíèå ïî òðåáîâàíèþ âíåøíèõ óñòðîéñòâ, âíóòðåííèå â ñëó÷àåíåïðåäâèäåííûõ îáñòîÿòåëüñòâ, êîòîðûå âðÿä ëè áûëè âûïîëíÿåìîé ïðîãðàììîé ïðåäóñìîòðåíû. Íåêîòîðûå àâòîðû íå äåëàþò ðàçëè÷èÿ ìåæäóòåðìèíàìè ¾ïðîãðàììíîå ïðåðûâàíèå¿ è ¾ñèñòåìíûé âûçîâ¿, íàçûâàÿñèñòåìíûì âûçîâîì êàê ñàìî îáðàùåíèå ê ÎÑ, òàê è ïðîãðàììíîå ïðåðûâàíèå, èñïîëüçóåìîå äëÿ åãî îñóùåñòâëåíèÿ.Íåêîòîðûå ïðîöåññîðû ìîãóò ïðåäóñìàòðèâàòü è èíûå ìåõàíèçìû ïåðåäà÷è óïðàâëåíèÿ îïåðàöèîííîé ñèñòåìå.

Òàê, ïðîöåññîðû ñåìåéñòâài386 ðåàëèçóþò òàê íàçûâàåìûå øëþçû (àíãë. gates) äëÿ ïåðåäà÷è óïðàâëåíèÿ ïðèâèëåãèðîâàííûì ïðîãðàììàì ñ îäíîâðåìåííûì ïîâûøåíèåìóðîâíÿ ïðèâèëåãèðîâàííîñòè ðåæèìà ðàáîòû ïðîöåññîðà, à ñàìèõ ýòèõóðîâíåé, íàçûâàåìûõ êîëüöàìè çàùèòû, ïðîöåññîðû ñåìåéñòâà i386 ïîääåðæèâàþò íå äâà, à ÷åòûðå; âïðî÷åì, îïåðàöèîííûå ñèñòåìû ýòèì îáû÷íî íå ïîëüçóþòñÿ.Òàê èëè èíà÷å, ïîâûøåíèå óðîâíÿ ïðèâèëåãèé (ïåðåõîä èç îãðàíè÷åííîãî ðåæèìà â ïðèâèëåãèðîâàííûé) âîçìîæíî òîëüêî ïðè óñëîâèè îäíîâðåìåííîé ïåðåäà÷è óïðàâëåíèÿ íà çàðàíåå çàäàííóþ òî÷êó âõîäà, ïðè÷åì àäðåñà âîçìîæíûõ òî÷åê âõîäà ìîãóò íàñòðàèâàòüñÿ òîëüêî â ïðèâèëåãèðîâàííîì ðåæèìå. Òàêèì îáðàçîì, îïåðàöèîííàÿ ñèñòåìà èìååòâîçìîæíîñòü ãàðàíòèðîâàòü, ÷òî ïðè ñìåíå ðåæèìà ðàáîòû íà ïðèâèëåãèðîâàííûé óïðàâëåíèå ïîëó÷èò òîëüêî êîä ñàìîé îïåðàöèîííîé ñèñòåìû, ïðè÷åì òîëüêî òàêîé å¼ êîä, êîòîðûé äëÿ ýòîãî ñïåöèàëüíî ïðåäíàçíà÷åí.

Èñïîëíåíèå â ïðèâèëåãèðîâàííîì ðåæèìå êàêîãî áû òî íè áûëîïîëüçîâàòåëüñêîãî êîäà ïîëíîñòüþ èñêëþ÷àåòñÿ.Ÿ 4.3. Ñèñòåìíûå âûçîâû â ÎÑ UnixÏåðåéä¼ì òåïåðü ê îñâîåíèþ ñèñòåìíûõ âûçîâîâ íà ïðàêòèêå. Ñëåäóåò îòìåòèòü, ÷òî ñîãëàøåíèÿ î òîì, êàê êîíêðåòíî äîëæåí ïðîèñõî135äèòü ñèñòåìíûé âûçîâ, êàê ïåðåäàòü åìó íåîáõîäèìûå ïàðàìåòðû, êàêîåèñïîëüçîâàòü ïðåðûâàíèå, êàê ïîëó÷èòü ðåçóëüòàò âûïîëíåíèÿ è ò. ï.,âàðüèðóþòñÿ îò ñèñòåìû ê ñèñòåìå. Äàæå åñëè ðå÷ü èä¼ò î äâóõ ïðåäñòàâèòåëÿõ ñåìåéñòâà Unix (ÎÑ Linux è ÎÑ FreeBSD), ðàáîòàþùèõ íàîäíîé è òîé æå àïïàðàòíîé ïëàòôîðìå i386, íèçêîóðîâíåâàÿ ðåàëèçàöèÿñèñòåìíûõ âûçîâîâ îêàçûâàåòñÿ â íèõ ñîâåðøåííî ðàçëè÷íà. Ñëåäóþùèåäâà ïàðàãðàôà áóäóò ïîñâÿùåíû îïèñàíèþ ñîãëàøåíèé îá îðãàíèçàöèèñèñòåìíûõ âûçîâîâ ýòèõ äâóõ ñèñòåì5 ; ïðè æåëàíèè âû ìîæåòå ïðî÷èòàòü òîëüêî îäèí èç ýòèõ äâóõ ïàðàãðàôîâ, îòíîñÿùèéñÿ ê òîé ñèñòåìå,êîòîðóþ âû èñïîëüçóåòå.Ñëåäóåò èìåòü â âèäó, ÷òî ñèñòåìû ñåìåéñòâà Unix ðàñ÷èòàíû â îñíîâíîì íà ïðîãðàììèðîâàíèå íà ÿçûêå Ñè.

Åñòåñòâåííî, äëÿ ýòîãî ÿçûêà âìåñòå ñ ñèñòåìîé ïîñòàâëÿþòñÿ áèáëèîòåêè, îáëåã÷àþùèå ðàáîòóñ ñèñòåìíûìè âûçîâàìè â ÷àñòíîñòè, äëÿ êàæäîãî ñèñòåìíîãî âûçîâà ïðåäîñòàâëÿåòñÿ áèáëèîòå÷íàÿ ôóíêöèÿ, ïîçâîëÿþùàÿ îáðàòèòüñÿ ê óñëóãàì ÿäðà êàê ê îáû÷íîé ïîäïðîãðàììå. Ñèñòåìíûå âûçîâûâ ÎÑ Unix èìåþò íàçâàíèÿ, ñîâïàäàþùèå ñ èìåíàìè ñîîòâåòñòâóþùèõôóíêöèé-îá¼ðòîê èç áèáëèîòåêè ÿçûêà Ñè. Ê ñîæàëåíèþ, òàêàÿ îðèåíòèðîâàííîñòü íà Ñè ïðèâîäèò ê íåêîòîðûì íåóäîáñòâàì ïðè ðàáîòå íàóðîâíå ÿçûêà àññåìáëåðà. Òàê, ñèñòåìíûå âûçîâû ïðè ïåðåõîäå îò ñèñòåìû ê ñèñòåìå ìîãóò ìåíÿòü ñâîè íîìåðà (íàïðèìåð, getppid â ÎÑ Linuxèìååò íîìåð 64, à â ÎÑ FreeBSD íîìåð 39). Ïðîãðàììèñòû, ðàáîòàþùèå íà ÿçûêå Ñè, îá ýòîì ìîãóò íå çàäóìûâàòüñÿ, ïîñêîëüêó â ëþáîéñèñòåìå ñåìåéñòâà Unix èì äîñòàòî÷íî âûçâàòü îáû÷íóþ ôóíêöèþ ñ èìåíåì getppid, à êîíêðåòíîå èñïîëíåíèå ñèñòåìíîãî âûçîâà âîçëàãàåòñÿ íàáèáëèîòåêó, êîòîðàÿ ïðèëàãàåòñÿ ê ñèñòåìå, òàê ÷òî ïðîãðàììà, íàïèñàííàÿ ïðîãðàììèñòîì íà Ñè ñ èñïîëüçîâàíèåì getppid, áóäåò óñïåøíîêîìïèëèðîâàòüñÿ íà ëþáîé ñèñòåìå è ðàáîòàòü îäèíàêîâî.

Характеристики

Тип файла
PDF-файл
Размер
1,1 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6310
Авторов
на СтудИзбе
312
Средний доход
с одного платного файла
Обучение Подробнее