Тығырықтар.
Жоғарыда келтірілген мысал, синхронизицияның тағы бір проблемасын көрсетеді – қайтарымды блокировкалар, оларды дедлок, клинчик, тупик деп те атайды. Көрсетейік, егер жазушы-ағым операциялардың орнын ауыстырсақ Р(е) және Р(в), онда кейбір жағдайға байланысты блокқа түсіруі мүмкін.
Жазушы-ағым жұмысын критикалық секция Р(в) операциясынан бастайды. Р(е) операциясын орындап жатқан кезде, ол бос буферлердің жоқтығын біліп, тосу жағдайына көшеді. Бұл жағдайдан оны тек ағым-оқушы шығара алады, және ол қатардағы келесі жазуды буферден алады. Бірақ ағым-оқушы бұны істей алмайды, өйткені ол үшін оларға критикалық сенсанцияға кіру керек, бірақ оған кіруді ағым-жазушы блок салып қояды. Сондықтан, бірде-бір ағым басталған жұмысын аяқтай алмайды және содан тықырлы ситуация туады.
Тықырға тағы бір мысал келтірейік, әртүрлі үрдіске жататын екі ағым болсын және олар мульпрограммалық режимда орындалсын, ал олардың орындалуы үшін екі ресурс керек: принтер және қатардағы келесі порт. Бұл ситуация қосымша программамен жұмыс істегенде ғана туады, ал олардың жұмысы болып мәліметтерді шығару. 4.22а суретінде сол программалардың фрагменті көрсетілген А ұғымы бірінші принтерді, сосын портты сұрайды, ал В ағымы, керісінше, сұраныс береді.
Мысалға, ОЖ ағымға принтер бергеннен кейін және осы ресурс арқылы өзгермелі блок қойғаннан кейін ағым тоқтатылады. Басқару В ағымына берілді, ол бірінші Сом-порттарды алу сұранысын орындайды, сосын келесі команданың орындалуымен блокқа түседі, өйткені А ағымынан бос емес екен. Басқаруды қайтадан А ағымы алады, ал ол портты алу мақсатында мүмкіншілік жасайды және содан блокқа түседі, өйткені порт В ағымына белгіленеді. Бұл жағдайда А және В ағымдары көп уақыт бола беруі мүмкін.
Олар ағымдардың жылдамдығына қарай бір-бірін блокқа түсіруі мүмкін , немесе бөлінген ресурстар қатарына қосылады, немесе бөлінген ресурстарды тәуелсіз қолдануы мүмкін .
Тығырық жағдайдың жәй реттеуден айырмашылығы және т.б. пайда болғандағы қолданылған ресурстармен ішкі пішіні ұқсас: ағым тоқтатылып ресурстың босағанын тосады. Бірақ реттеу қалыпты болып табылады.
Реттеу ресурс тыс жерде болғанда пайда болады, бірақ біраз уақыттан кейін босатылып, ағым өзінің жұмысын жалғастырады. Топасыздың аты айтып тұрғандай кейбір жағдайларда шешілмейтін мәселе болып табылады. Керекті жағдайларға пайда болған топасыздық қажетті ағым және көптеген ресурстарда болады. Қарастырылған мысалда топасыз екі ағыммен жасалған, бірақ ол бір-бірімен және көптеген ағым сонымен құралған. 2.23-суретте бөлу ресурстары Pi, көптеген ағым арасын Tj, пайда болуына әкеп соқты. Осындағы бағыттар ағым ресурстарының қажеттілігін көрсетеді. Толық бағыттауыштар ресурстардың ағымға бөлінгенін білдіреді, ал үздік сызылған бағыттар ағымды қажетті ресурстармен жалғастырады, бірақ та бұл ресурстар басқа ағымдарға бағытталғандықтан, ол бөлінбейді. Мысалы, Т1 ағымының жұмысына R1 және R2 ресурстары қажет, солардың ішінде R1 бөлініп, R2 ресурсы Т2 ағымымен байланысты. Суретте көрсетілген 4 ағымның біреуі де қажетті ресурстары болмағандықтан жұмыс істей алмайды.
Ағымның өз бастаған жұмыстарының аяқталмауы есептеу жүйенің өндіргіштігін төмендетеді. Сондықтан тығырыққа тірелу проблемасын шешуге көп көңіл бөлінеді. Өзара байланысты блокировкалар қызылдаған жағдайда, жүйе администратор-операторға тығырықты қарапайым блокировкадан ажырататын мүмкіншілік тудыру қажет. Сонымен, егер тығырық анықталса, онда өзара туындаған блокировкаларды шешетін және есептеу процестерін қалпына келтіретін құралдар қажет.
Тығырықты алдын-ала шешуге болады, ол үшін программа ағымның өзара байланысты жылдамдығында тығырықтар туындамау қажет. Көрсетілген А және В ағымдары бірдей тізбектегі ресурстарды қажет етсе, онда тығырық мүмкін емес.
Тығырықты тоқтату үшін қолданылатын ең оңай жол болып, операциялық жүйе әр қосқан сайын ресурстардағы қажеттіліктерді анықтап, мультипрограммалық сместе тығырық пайда болмайтыны анықталыды. Егер тығырық пайда болса, онда жаңа тапсырманы іске қосу кейінге қалдырылады. Операциялық жүйеде ағымдағы ресурстарда тағайындағанда белгілі бір ережелер қолданылады. Мысалы, операциялық жүйеде ресурстар барлық ағымдарға жалпы болып табылады.
Тығырықты жағдайды тотатпағанда, оны тез және анық танып білу қажет, өйткені блокеровкалық ағымдар ешқандай қажетті жұмысты атқармайды. Егер де тығырықты жағдай көптеген ағымдар арасында пайда болса, онда тығырықты танып білу нетривиальды тапсырма болып саналады. Тығырықты танып білу әдісі формальды, программалық жүзеге асыру болып бөлінеді, ресурстар таблицасы және сұраныс таблицасы арқылы орналастырылады. Осы таблтцалардың анализі блокировканы анықтауға мүмкіндік береді.
Егер тығырық жағдай пайда бола қалса, онда блокталған ағымдардың орындалуын шешу аса маңызды. Тек қана қалған ағымдарға қажетті ресурстарды босату үшін, кейбір ағымдарды алып тастап, оларды бақылау нүктелеріне жіберуге болады, мұндай бақылау нүктелері берілген орнына программаны қалпына клтіруге қажетті ақпараттарды сақтайды. Бақылау нүктелерінде тығырықтар туып қалатын жерлерде орналасады.
Достарыңызбен бөлісу: |