Әдістемелік нұСҚаулар бағдарламалау модулі B06301 Ақпараттық қауіпсіздік жүйелері білім беру бағдарламасы ДӘріс конспектілері тақырып Операциялық жүйелер және олардың интерфейстері. Ағындар



бет2/5
Дата08.12.2023
өлшемі123,5 Kb.
#134929
түріНұсқаулар
1   2   3   4   5
Байланысты:
Конспект лекций материал Системное программрование

СӨЖ үшін бақылау тапсырмалары
1. Операциялық жүйелердің мақсаты, түрлері және интерфейстері
2. Win32 API санаттары
3. Windows-тағы нысандар
4. Ағындарды диспетчерлеу және жоспарлау
5. Ағындардың басымдықтары
Тақырып 2
Ағындар мен процестерді синхрондау (2 сағат)

Дәріс жоспары


1. Күту функциялары
2. Синхрондау нысандары
3. Тығырықта тұруы (яғни тоқтап қалу процесі -тупик)

Windows операциялық жүйелерінде бір процестің контекстінде орындалатын параллель ағындар үшін өзара Алып тастау мәселесі critical_section сияқты нысанды қолдану арқылы шешіледі. Бұл нысандар амалдық жүйенің ядросының объектілері емес болғандықтан, олармен жұмыс Операциялық жүйенің ядро объектілері болып табылатын синхрондау объектілеріне қарағанда тезірек жүреді. Бұл операциялық жүйенің ядро объектілеріне жүгіну ағынды контекстерді пайдаланушы режимінен операциялық жүйенің қорғалған ядро режиміне ауыстыру үшін қосымша жұмысты қажет етеді.


5 Windows операциялық жүйелерінде синхрондау объектілері екі күйдің бірінде болуы мүмкін ядро объектілері деп аталады: сигнал (signaled) және сигналсыз (nonsignaled).
7 Windows-та параллель ағындарды синхрондау мәселелерін шешу үшін ғана қызмет ететін нысандар:
* мьютекс (mutex);
* оқиға (event);
* семафор (semaphore).
3 Windows-та күту функциялары - параметрлері синхрондау нысандары болып табылатын функциялар. Бұл мүмкіндіктер әдетте ағындарды бұғаттау үшін қолданылады. Егер синхрондау объектісінің дескрипторы күту функциясының параметрі болса және синхрондау объектісінің өзі сигналсыз күйде болса, онда осы күту функциясын тудырған ағын осы синхрондау объектісі сигнал күйіне ауысқанға дейін бұғатталады. 6 Негізгі күту функциялары: WaitForSingleObject және Waitformultipleobjects.
4 Мутекс, егер ол кез-келген ағынға жатпаса, сигнал күйінде болады. Әйтпесе, мутекс сигналсыз күйде болады. Сонымен қатар, мутекс тек бір ағынға ғана тиесілі болуы мүмкін. Mutex createmutex функциясын шақыру арқылы жасалады. Мутекс кез-келген күту функциясы арқылы ағынмен түсіріледі және ReleaseMutex функциясы арқылы босатылады. Бұрын жасалған мутекске қол жеткізу үшін ағын OpenMutex функциясын да қолдана алады.
Оқиға белгілі бір орындалған әрекет туралы ескерту деп аталады. Бағдарламалау кезінде оқиғалар бір ағынды басқа ағынның кейбір әрекеттерді орындағандығы туралы ескерту үшін қолданылады. Windows операциялық жүйелерінде оқиғалар ядро нысандарымен сипатталады. Бұл жағдайда оқиғалардың екі түрге бөледі:
* қолмен қалпына келтіру оқиғалары;
* автоматты қалпына келтіру оқиғалары.
Оқиғалардың осы түрлерінің арасындағы айырмашылық мынада: қолмен қалпына келтіру оқиғасын тек ResetEvent функциясын шақыру арқылы ғана сигналсыз күйге аударуға болады, ал автоматты түрде қалпына келтіру оқиғасы ResetEvent функциясы арқылы да, күту функциясы арқылы да сигналсыз күйге өтеді. Егер WaitForSingleObject функциясын қолдана отырып, автоматты қалпына келтіру оқиғалары бірнеше ағындарды күтсе, онда осы ағындардың тек біреуі күту күйінен босатылады. Оқиғалар CreateEvent функциясын шақыру арқылы жасалады.
8 ResetEvent функциясы кез-келген оқиғаны сигналсыз күйге аудару үшін қолданылады.
9 Қолмен қалпына келтіру оқиғасының сигнал күйін күтетін ағындарды босату үшін PulseEvent функциясы қолданылады. Бұл функцияны шақырған кезде, hEvent дескрипторымен болатын оқиғаларды күтетін барлық ағындар күту күйінен шығарылады және оқиғаның өзі бірден сигналсыз күйге өтеді. Бұл жағдайда олар қолмен қалпына келтіру оқиғасының сигнал күйін күткен барлық ағындар кедергіге жолығады да, барлығы қолмен қалпына келтіру оқиғасы арқылы сигнал күйіне өтуі мүмкін.
Егер PulseEvent функциясы автоматты қалпына келтіру оқиғасы үшін шақырылса, күту күйінен күтілетін ағындардың біреуі ғана шығады. Егер hEvent дескрипторымен оқиғаның сигналдық күйін күтетін ағындар болмаса, онда бұл оқиғаның күйі сигналсыз болып қалады.
Windows операциялық жүйелеріндегі семафорлар Semaphores ядросының нысандарымен сипатталады. Семафор, егер оның мәні нөлден үлкен болса, сигнал күйінде болады. Әйтпесе, семафор сигналсыз күйде. Семафордың сигнал күйін күтетін ағындар FIFO тәртібімен қызмет көрсетіледі, яғни ағындар семафорға "бірінші келді, бірінші шықты" қызмет көрсету тәртібімен кезекке тұрады. Алайда, егер ағын асинхронды оқиғаның басталуын күтсе, онда ядро функциялары осы оқиғаның басталуына қызмет ету үшін ағынды кезектен семафорға дейін алып тастай алады. Осыдан кейін ағын Семафор кезегінің соңына айналады. Семафорлар CreateSemaphore функциясын шақыру арқылы жасалады.
12 Күту функциясын қолданылған кезде семафордың мәні 1-ге азаяды. ReleaseSemaphore функциясын шақыру арқылы семафордың мәнін арттыруға болады.
Санауыш семафорлар бір немесе бірнеше ағындар шығаратын, ал басқалары бір немесе бірнеше ағындар тұтынатын бірдей ресурстарға қол жеткізуді синхрондау үшін қолданылады. Бұл жағдайда санау семафорының мәні өндірілген ресурстар санына тең, ал оның максималды мәні осындай ресурстардың мүмкін болатын максималды санына тең болады. Ресурс бірлігін өндіруде семафордың мәні бірлікке артады, ал ресурс бірлігін тұтынған кезде семафордың мәні бірлікке азаяды.
Егер ол ешқашан болмайтын оқиғаны күтсе, ағын тоқтап қалады (deadlock). Оқиға ешқашан келесі екі себепке байланысты болмауы мүмкін:
* күтілетін оқиғаның басталғаны туралы ескертетін ағын жоқ;
* күтілетін оқиғаның басталуы туралы хабардар ететін ағын бар, бірақ ол өзі тоқтап тұр.
Тығырықты анықтағаннан кейін процесті қалпына келтіру керек, ол осы процестің ағындарының құлпын ашудан тұрады. Бұғатталған процесті қалпына келтірудің үш тәсілі бар:
* бұғатталған ағындарды тоқтату (termination);
* ресурстарды қайта бөлу (preemption); 11
* басқару нүктесіне оралу (rollback). 10




Достарыңызбен бөлісу:
1   2   3   4   5




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет