222
болып табылады. Бұл жағдайда, біріктірілу дегеніміз бір уақыт сәтінде
ресурсқа қол жеткізуді тек бір процестің алуы.
Біріктіру механизмдерінің ең көп қолданылатыны — семафорлар
көмегімен біріктірілу.
Қарапайым семафор өзімен қолжетімділік тыйымына сәйкес келетін
0 мәнді жалаушаны ұсынады, ал 1 — қолжетімділікке рұқсат.
Ресурсқа
қол жеткізуден бұрын, процесс семафордың мәнін тексеру керек және
егер қолжеткізуге рұқсат болса, ресурсқа басқа процестердің қол
жеткізуін блоктау үшін семафорға 0 мәнін орнату қажет. Ресурсты
пайдалану аяқталған соң процес, қайтадан семафорға 0 мәнін орнатады.
Мұндай семафор
«бинарлық семафор» деген атауға ие болды.
Бинарлы
семафордан басқа, семафор-есептегіштер бар. Мұндай
семафорлардың мәні теріс емес бүтін санды ұсынады. Мұндай
семафорлардан екі операция анықталған. V операциясы (голл.Verhogen,
жиі wait дегенді білдіреді) егер оның мәні аз немесе нөлге тең болса,
процесс орындалуын тоқтатады немесе
қарсы жағдайды семафордың
мәнін бірлікке азайтады. Операция P (голл. Prolagen, post дегенді
білдіреді) семафор мәнін бірлікке арттырады және мәндерді қайта
тексеруді
шақыра отырып, мәндердің артуынан процестердің
тоқталуын хабарлайды.
Семафор-есептегіштер бір типті ресурстардың шектеулі санына
бірігіп, қол жеткізу үшін қызмет етеді мысалы бір компьютерге
қосылған теруші құрылғылар үшін.
Қолжетімді құрылғылар саны,
семафор-есептегіштің бастапқы мәні ретінде жазылады.
Құрылғыларды біреуін қолданбастан бұрын, процесс семафорларға
V операциясын орындайды. Егер тек бір қолжетімді құрылғы қалған
жағдайда, есептегіштің мәні бірлікке азаяды, осылайша қолжетімді
құрылғының азайғанын бейнелейді. Егер бірде бір қолжетімді құрылғы
қалмаған болса, процесс құрылғы
босағанша өзінің орындалуын
тоқтатады және есептегіш мәні оң болмайды. Себебі құрылғылардың
босауын күтетін процестер бірнеше болуы мүмкін, онда олар кезекті
және құрылғыға қол жеткізуді ұйымдастырады,
есептегіш мәнінің
артуы кезінде, кезектегі алғашқы процесті алады.
Ресурстардың босатылуынан кейін (біздің жағдайда — теруші
құрылғы) процесс семафорға P операциясын орындайды, осылайша
есептегіш мәнін бірлікке арттырады.
223
Семафор-есептегіштің қалыпты жағдайы үшін UNIX-жүйелерінде
келесі шарттар орындалады:
■
Семафордың мәні әртүрлі процестерге
қолжетімді болуы керек,
сондықтан процестің емес ОЖ ядросы мекенжай кеңістігінде болуы
керек;
■
Тексеру операциясы және семафор мәнінің өзгеруі, басқа
процестермен үзілмейтін бір атомаралық операция түрінде іске
асуы қажет. Әйтпесе, тексеріс пен семафор мәнін азайту арасында
процестердің тоқталуы болуы мүмкін, бұл семафорды күтпеген
жағдайға итермелеуі мүмкін.
Достарыңызбен бөлісу: