Главная » Просмотр файлов » А.В. Столяров - Введение в операционные системы

А.В. Столяров - Введение в операционные системы (1114673), страница 34

Файл №1114673 А.В. Столяров - Введение в операционные системы (А.В. Столяров - Введение в операционные системы) 34 страницаА.В. Столяров - Введение в операционные системы (1114673) страница 342019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Îïåðàöèÿ ìîæåò áûòü ðåàëèçîâàíà êàê áóëåâñêàÿ ôóíêöèÿ. Ïðè ïðèìåíåíèè åå ê îòêðûòîìó ìüþòåêñó îíà çàêðûâàåò åãî è âîçâðàùàåò çíà÷åíèå èñòèíà (óñïåõ). Ïðè ïðèìåíåíèè ê çàêðûòîìó ìüþòåêñó ôóíêöèÿâîçâðàùàåò çíà÷åíèå ëîæü (íåóäà÷à). Òàêîé âàðèàíò ðåàëèçàöèè íàçûâàåòñÿ íåáëîêèðóþùèì.2.

Îïåðàöèþ ìîæíî ðåàëèçîâàòü è êàê ïðîöåäóðó, íå âîçâðàùàþùóþ íèêàêîãî çíà÷åíèÿ.  ýòîì ñëó÷àå ïðè ïðèìåíåíèè åå ê îòêðûòîìó ìüþòåêñó îíà çàêðûâàåò åãî è âîçâðàùàåò óïðàâëåíèå; ïðè ïðèìåíåíèè åå êçàêðûòîìó ìüþòåêñó îíà áëîêèðóåò âûçâàâøèé ïðîöåññ äî òåõ ïîð, ïîêà ìüþòåêñ íå îêàæåòñÿ îòêðûò, ïîñëå ÷åãî çàêðûâàåò åãî è âîçâðàùàåòóïðàâëåíèå.Âàæíåéøèì ñâîéñòâîì îïåðàöèé lock() è unlock() ÿâëÿåòñÿ èõàòîìàðíîñòü .Ýòî îçíà÷àåò, ÷òî îáå îïåðàöèè âûïîëíÿþòñÿ êàê åäèíîå5 Êîíå÷íî,ñëîæíîñòü àòîìàðíûõ îïåðàöèé äîëæíà îñòàâàòüñÿ â ðàçóìíûõ ïðåäåëàõ, ò.ê. äëèòåëüíûéçàïðåò ïðåðûâàíèé ìîæåò îòðèöàòåëüíî ñêàçàòüñÿ íà ôóíêöèîíèðîâàíèè âñåé âû÷èñëèòåëüíîé ñèñòåìû:íàïðèìåð, ìîãóò ñáèòüñÿ îïåðàöèè ÷òåíèÿ/çàïèñè äèñêîâ, è ò.ï.6 Àíãë.

mutex − ñîêðàùåíèå îò ñëîâ mutual exception156öåëîå è íå ìîãóò áûòü ïðåðâàíû7 .  ÷àñòíîñòè, îïåðàöèÿ lock() íå ìîæåòáûòü ïðåðâàíà ìåæäó ïðîâåðêîé òåêóùåãî çíà÷åíèÿ ìüþòåêñà è èçìåíåíèåìýòîãî çíà÷åíèÿ íà çàêðûòî.Âñïîìíèì òåïåðü íàøó ïîïûòêó âûïîëíèòü âçàèìîèñêëþ÷åíèå ñ ïîìîùüþ áëîêèðîâî÷íîé ïåðåìåííîé (Ÿ27.3.1). Èñïîëüçóåì âìåñòî îáû÷íîé ïåðåìåííîé ìüþòåêñ (îáîçíà÷èì åãî, êàê è áëîêèðîâî÷íóþ ïåðåìåííóþ, áóêâîés), à âìåñòî ïðèñâàèâàíèé s = 0 è s = 1 − ñîîòâåòñòâåííî îïåðàöèè lock()è unlock().

Ðàññìîòðèì äëÿ íà÷àëà íåáëîêèðóþùóþ ðåàëèçàöèþ lock():while(!lock(s)) {} /* æäåì, ïîêà íå óäàñòñÿ çàêðûòü ìüþòåêñ */section();/* ... ðàáîòà ñ ðàçäåëÿåìûìè äàííûìè ... */unlock(s);/* ðàçðåøàåì äðóãèì ïðîöåññàì äîñòóï */ îòëè÷èå îò âàðèàíòà ñ èñïîëüçîâàíèåì áëîêèðóþùåé ïåðåìåííîé, äàííûéâàðèàíò ÿâëÿåòñÿ êîððåêòíûì. Ïîñêîëüêó îïåðàöèÿ lock() àòîìàðíà, âûõîäèç öèêëà (ïî èñòèííîìó çíà÷åíèþ ôóíêöèè lock()) îçíà÷àåò, ÷òî â íåêèéìîìåíò ìüþòåêñ îêàçàëñÿ îòêðûò (òî åñòü íèêòî â ýòî âðåìÿ íå ðàáîòàë ñðàçäåëÿåìûìè äàííûìè), è íàøåìó ïðîöåññó óäàëîñü åãî çàêðûòü, ïðè÷åìíèêòî äðóãîé âêëèíèòüñÿ ìåæäó ïðîâåðêîé è çàêðûòèåì íå ìîã.Åñëè ïðèìåíèòü âòîðîé òèï ðåàëèçàöèè îïåðàöèè lock() (ïðè êîòîðîìîíà áëîêèðóåòñÿ äî òåõ ïîð, ïîêà íå óäàñòñÿ çàêðûòü îòêðûòûé ìüþòåêñ),íàø êîä ñòàíåò åùå ïðîùå, è èç íåãî èñ÷åçíåò öèêë àêòèâíîãî îæèäàíèÿ:lock(s);section();unlock(s);/* æäåì, ïîêà íå óäàñòñÿ çàêðûòü ìüþòåêñ *//* ...

ðàáîòà ñ ðàçäåëÿåìûìè äàííûìè ... *//* ðàçðåøàåì äðóãèì ïðîöåññàì äîñòóï */ßñíî, ÷òî òàêîé ìüþòåêñ ìîæåò áûòü ðåàëèçîâàí òîëüêî ïðè ñîäåéñòâèè ÿäðà îïåðàöèîííîé ñèñòåìû: ëèáî öåëèêîì êàê îáúåêò ÿäðà, ëèáî êàê íàáîðîïåðàöèé, îñóùåñòâëÿåìûõ ÿäðîì íàä ïåðåìåííîé, ðàñïîëîæåííîé â ïîëüçîâàòåëüñêîì ïðîöåññå8 . Îòìåòèì ñ äðóãîé ñòîðîíû, ÷òî ââåäåíèå òàêîãî ñðàâíèòåëüíî ïðîñòîãî ñåðâèñà â ÿäðå ÎÑ ïîçâîëÿåò èçáàâèòüñÿ ðàçîì îò âñåõíåäîñòàòêîâ ðàññìîòðåííûõ âûøå ïîäõîäîâ ê âçàèìíîìó èñêëþ÷åíèþ.27.4.3Ñåìàôîðû ÄåéêñòðûÏðåäëîæåííûå Ýäñãåðîì Äåéêñòðîé ñåìàôîðû ïðåäñòàâëÿþò ñîáîé îáîáùåíèå ïîíÿòèÿ ìüþòåêñà.7 Êðîìåñëó÷àÿ, êîãäà îïåðàöèÿ lock() áëîêèðóåò âûçâàâøèé ïðîöåññ − òîãäà íà âðåìÿ áëîêèðîâêèïðåðûâàíèÿ ðàçðåøàþòñÿ8 Êàê ìû óâèäèì èç äàëüíåéøåãî, ìüþòåêñ, â êîòîðîì lock() ñäåëàí íåáëîêèðóþùèì, ìîæíî ðåàëèçîâàòü íà íåêîòîðûõ àðõèòåêòóðàõ è áåç ó÷àñòèÿ ÿäðà157â êëàññè÷åñêîì âàðèàíòå ïðåäñòàâëÿåò ñîáîé öåëî÷èñëåííóþ ïåðåìåííóþ, ïðî êîòîðóþ èçâåñòíî, ÷òî îíà ïðèíèìàåò òîëüêîíåîòðèöàòåëüíûå çíà÷åíèÿ, è íàä êîòîðîé îïðåäåëåíû äâå îïåðàöèè: up() èdown().

Îïåðàöèÿ up() âñåãäà ïðîõîäèò óñïåøíî, óâåëè÷èâàÿ çíà÷åíèå ïåðåìåííîé íà 1, è íåìåäëåííî âîçâðàùàåò óïðàâëåíèå. Îïåðàöèÿ down() äîëæíà,íàîáîðîò, óìåíüøàòü çíà÷åíèå íà 1, íî ñäåëàòü ýòî îíà ìîæåò òîëüêî â ñëó÷àå,åñëè òåêóùåå çíà÷åíèå ñòðîãî áîëüøå íóëÿ, âåäü çíà÷åíèå ñåìàôîðà íå ìîæåòáûòü îòðèöàòåëüíûì. Ñîîòâåòñòâåííî, ïðè ïîëîæèòåëüíîì çíà÷åíèè ñåìàôîðà îïåðàöèÿ down() óìåíüøàåò åãî çíà÷åíèå íà 1 è íåìåäëåííî âîçâðàùàåòóïðàâëåíèå.  ñëó÷àå æå íóëåâîãî çíà÷åíèÿ ñåìàôîðà îïåðàöèÿ áëîêèðóåòâûçâàâøèé ïðîöåññ äî òåõ ïîð, ïîêà çíà÷åíèå íå ñòàíåò ïîëîæèòåëüíûì, ïîñëå ÷åãî óìåíüøàåò çíà÷åíèå è âîçâðàùàåò óïðàâëåíèå.Ñåìàôîð ÄåéêñòðûÊàê è â ñëó÷àå ñ ìüþòåêñîì, îïåðàöèè íàä ñåìàôîðîì îáÿçàòåëüíî äîëæíû áûòü ðåàëèçîâàíû àòîìàðíî: íåîáõîäèìî ïîëíîñòüþ èñêëþ÷èòü ñèòóàöèè, êîãäà ðåçóëüòàò íåñêîëüêèõ íåçàâèñèìûõ îïåðàöèé íàä ñåìàôîðîì ìîæåò çàâèñåòü îò âðåìåíè âûçîâà îïåðàöèé ïðîöåññàìè (êàê ýòî ïðîèñõîäèëîâ ïðèìåðå, ïðèâåäåííîì â íà÷àëå ëåêöèè).

Ñåìàôîð, êàê è ìüþòåêñ, ìîæåòáûòü ðåàëèçîâàí öåëèêîì êàê îáúåêò ÿäðà, ëèáî êàê íàáîð îïåðàöèé ÿäðàíàä ïåðåìåííîé èç ïàìÿòè ïîëüçîâàòåëüñêîãî ïðîöåññà.ßñíî, ÷òî ñ ïîìîùüþ ñåìàôîðà ìîæíî èìèòèðîâàòü ôóíêöèîíèðîâàíèåìüþòåêñà, åñëè ñ÷èòàòü çíà÷åíèå 0 ñîñòîÿíèåì çàêðûò, çíà÷åíèå 1 − ñîñòîÿíèåì îòêðûò, à îïåðàöèè lock() è unlock() çàìåíèòü íà down() è up().Íåîáõîäèìî òîëüêî ñëåäèòü, ÷òîáû îïåðàöèÿ up() íèêîãäà íå ïðèìåíÿëàñü êïîëîæèòåëüíîìó ñåìàôîðó, à ýòîãî ìîæíî äîñòè÷ü, åñëè ïðèìåíÿòü îïåðàöèþup() òîëüêî â íà÷àëå ïðîãðàììû (îäèí ðàç), à òàêæå ïîñëå òîãî, êàê ïðîøëàîïåðàöèÿ down(), è íèêîãäà èíà÷å. Îäíàêî ñåìàôîð ìîæíî èñïîëüçîâàòü âáîëåå ñëîæíîé ðîëè, à èìåííî, êàê ñ÷åò÷èê äîñòóïíûõ ðåñóðñîâ.Íåêîòîðûå ðåàëèçàöèè îáîáùàþò îïåðàöèè íàä ñåìàôîðàìè, ââîäÿ äîïîëíèòåëüíûé öå-ëî÷èñëåííûé ïàðàìåòð.

Îïåðàöèÿ up(sem, n) óâåëè÷èâàåò çíà÷åíèå ñåìàôîðà íà n, îïåðàöèÿdown(sem, n) æäåò, ïîêà çíà÷åíèå íå îêàæåòñÿ áîëüøèì ëèáî ðàâíûì n, è ïîñëå ýòîãî óìåíüøàåò çíà÷åíèå íà n. Êðîìå òîãî, ðåàëèçàöèè îáû÷íî èìåþò íåáëîêèðóþùèé âàðèàíò îïåðàöèèdown(), àíàëîãè÷íûé íàøåé îïåðàöèè lock() äëÿ ìüþòåêñîâ, ðåàëèçîâàííîé â âèäå ëîãè÷åñêîé ôóíêöèè.  îòëè÷èå îò êëàññè÷åñêîãî âàðèàíòà, ýòîò âàðèàíò âìåñòî îæèäàíèÿ ñðàçóâîçâðàùàåò óïðàâëåíèå, óêàçûâàÿ, ÷òî îïåðàöèÿ ïðîøëà íåóäà÷íî. Áîëüøèíñòâî ñóùåñòâóþùèõ ðåàëèçàöèé ïîçâîëÿåò óçíàòü òåêóùåå çíà÷åíèå ñåìàôîðà èëè äàæå óñòàíîâèòü åãî áåçâñÿêèõ áëîêèðîâîê è ïðîâåðîê, ÷òî áûâàåò óäîáíî ïðè èíèöèàëèçàöèè ïðîãðàììû.Èçâåñòíàÿ ðåàëèçàöèÿ ñåìàôîðîâ èç System V IPC (ñì. [5]) ïðåäîñòàâëÿåò ìàññèâû ñåìàôîðîâ, íàä êîòîðûìè ìîæíî ïðîèçâîäèòü ñëîæíûå àòîìàðíûå îïåðàöèè, íàïðèìåð, óâåëè÷èòüòðåòèé ñåìàôîð íà äâà, à ÷åòâåðòûé óìåíüøèòü íà òðè çà îäíî (àòîìàðíîå!) äåéñòâèå.

Êðîìå òîãî, â ýòîé ðåàëèçàöèè åñòü äîïîëíèòåëüíàÿ îïåðàöèÿ áëîêèðîâàòüñÿ, ïîêà ñåìàôîð íåñòàíåò ðàâåí íóëþ.15827.4.4Êîìàíäà TSLÍà íåêîòîðûõ àðõèòåêòóðàõ ìîæíî ðåàëèçîâàòü ìüþòåêñ áåç îáðàùåíèÿê ÿäðó. Äëÿ ýòîãî íåîáõîäèìà ïðîöåññîðíàÿ êîìàíäà TSL (test and set lock,ïðîâåðèòü è çàêðûòü). Êîìàíäà èìååò äâà îïåðàíäà: ðåãèñòð è àäðåñ â ïàìÿòè. Ñóòü êîìàíäû â òîì, ÷òîáû çà îäíî íåäåëèìîå (àòîìàðíîå) äåéñòâèåïîìåñòèòü â ðåãèñòð ñîäåðæèìîå ÿ÷åéêè ïàìÿòè, ðàñïîëîæåííîé ïî óêàçàííîìó àäðåñó, à â ñàìó ÿ÷åéêó çàíåñòè íåêîòîðîå ôèêñèðîâàííîå çíà÷åíèå,íàïðèìåð 1. Òàêèì îáðàçîì, ìîæíî â îäíî äåéñòâèå óñòàíîâèòü ïåðåìåííîéìüþòåêñó çíà÷åíèå (êîòîðîå áóäåò ñîîòâåòñòâîâàòü ñîñòîÿíèþ çàïåðò) èñîõðàíèòü äëÿ ïðîâåðêè òî çíà÷åíèå, êîòîðîå áûëî â ïåðåìåííîé-ìüþòåêñåðàíüøå. Åñëè ðàíüøå ìüþòåêñ ñîäåðæàë çíà÷åíèå îòêðûò − çíà÷èò, íàøàîïåðàöèÿ ïðîøëà óñïåøíî.

Åñëè æå çíà÷åíèå óæå áûëî çàêðûò, íåîáõîäèìî ïîäîæäàòü.Ðåàëèçàöèÿ ôóíêöèé lock() è unlock() íà àññåìáëåðå áóäåò âûãëÿäåòüïðèìåðíî òàê:mutex: DB 0lock:TSL RX, mutexCMP RX, 0JE okJMP lockok:RETunlock: MOV mutex, 0RETÊàê ìîæíî çàìåòèòü, çäåñü ìû ñíîâà âîçâðàùàåìñÿ ê àêòèâíîìó îæèäàíèþ.ßñíî, ÷òî îñóùåñòâèòü áëîêèðîâêó áåç ó÷àñòèÿ îïåðàöèîííîé ñèñòåìû íåâîçìîæíî. Îäíàêî ïðè íåêîòîðûõ óñëîâèÿõ â ïðîãðàììàõ, èñïîëüçóþùèõ ëåãêîâåñíûå ïðîöåññû (òðåäû), òàêàÿ ðåàëèçàöèÿ ìüþòåêñà9 îêàçûâàåòñÿ áîëååýôôåêòèâíîé çà ñ÷åò ýêîíîìèè íà ïåðåêëþ÷åíèè êîíòåêñòîâ (ñ ïðîöåññà íàÿäðî è îáðàòíî).Ïðè ðàáîòå ñ ëåãêîâåñíûìè ïðîöåññàìè ìîæíî ïåðåä ïåðåõîäîì íà íà÷àëî ïðîöåäóðûlock()(ò.å.

ñðàçó ïîñëå êîìàíäû óñëîâíîãî ïåðåõîäà) âñòàâèòü îáðàùåíèå ê ïðîöåäóðå ïåðå-êëþ÷åíèÿ ëåãêîâåñíûõ ïðîöåññîâ, ÷òîáû óìåíüøèòü ïîòåðè îò àêòèâíîãî îæèäàíèÿ.9Âàíãëîÿçû÷íîé ëèòåðàòóðå åå èíîãäà íàçûâàþòspinlock.159Ëåêöèÿ 13Íà ýòîé ëåêöèè ìû ðàññìîòðèì íåñêîëüêî êëàññè÷åñêèõ ïðèìåðîâ ïðîãðàììèðîâàíèÿ ñ èñïîëüçîâàíèåì ìüþòåêñîâ è ñåìàôîðîâ.2828.1Ïðèìåðû âçàèìîèñêëþ÷åíèéÇàäà÷à ïðîèçâîäèòåëåé è ïîòðåáèòåëåéÏóñòü èìåþòñÿ íåñêîëüêî ïðîöåññîâ, ïðîèçâîäÿùèõ äàííûå, ïîäëåæàùèåäàëüíåéøåé îáðàáîòêå.

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

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

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

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

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