
- •Мустафина б.М., Сейдахметова г.Е., Әлібиева ж.М.
- •Пәндік оқу - әдістемелік кешені
- •Алматы 2012
- •1. Пәннің оқу бағдарламасы – syllabus
- •Оқытушылар туралы мәліметтер:
- •1.2 Пән туралы мәліметтер:
- •Оқу жоспарының көшірмесі
- •1.3 Пререквизиттер
- •1.6 Тапсырмалардың тізімі мен түрлері және оларды орындау кестесі
- •1.7 Әдебиеттер тізімі
- •1.8 Білімді бақылау және бағалау.
- •1 Модуль бойынша бақылау жүргізуге арналған сұрақтар (1-7 бөлімдер)
- •2 Модуль бойынша бақылау жүргізуге арналған сұрақтар:
- •1.9 Қойылатын талаптар
- •2 Негізгі таратылатын материалдар мазмұны
- •2.1 Курстың тематикалық жоспары
- •2.2 Лекциялық сабақ конспектілері
- •1.1 Windows ож құрылымы Жүйе құрылымының жалпы бейнелеуі
- •2.2. Ағындарды диспетчерлеу және жоспарлау
- •2.3 Ағынды анықтау
- •2.4 Ағындармен жұмыс істеуге арналған api функциясы
- •2.5 Ағындардың приоритеті
- •3.1 Процесстерді басқару
- •3.2 Windows операциялық жүйесіндегі процесстер мен ағындар
- •3.3 Процесстермен жұмыс істеуге арнлаған api функциялар
- •4.2 Ағындарды синхрондау объектілері
- •Мьютекстер
- •5.1 Оқиғалар
- •5.2 Бұғатталған қосымша функциялар
- •7.1. Үймелер
- •7.2 Үйме жадысын басқару
- •8.1 Файлдар мен каталогтарды басқару Файлдарды құру және ашу
- •8.2 Каталогтарды басқару
- •8.3 Файлдар мен каталогтар атрибуттарын алудың басқа әдістері
- •9.1 Файлдарды бұғаттау
- •9.2 Реестр
- •Экспорттелетін идентификаторды анық қосу
- •12.1 Стандартты құрылғылар және консольді енгізу- шығару
- •12.2 Асинхронды енгізу- шығару және аяқталу порттары
- •2.3 Лабораториялық сабақтардың жоспары
- •2.4 Оқытушының басқаруымен студенттің өзіндік жұмысы бойынша оқу жоспары (соөж) (45 сағат)
- •2.5 Студенттің өзіндік жұмысының сабақ жоспары (сөж) (45 сағат)
- •2.6 Өзін өзі тексеру үшін кілтпен көрсетілген тестік жаттығулар
- •2.7 Курс бойынша емтихан сұрақтары
- •Глоссарий
- •Жүйелік программалау
5.1 Оқиғалар
Ядроның соңғы объектісі синхрондауға қалған – ол оқиға. Бұл объектіні басқа ағындарды ақпараттандыру үшін қолданады. Яғни, бір оқиға болған жайлары туралы хабарлау.
Оқиғаның ең қосымша мүмкіншілігі, ол сигналдық күйге бір дескриптор келген кезде, бірге күтуден бірнеше ағындарды босату мүмкіндігі еді. Оқиға автоматты түрде босатылатын және қолмен босатылатын болып екіге бөлінеді. Бұл оқиғаның мүмкіншілігі CreateEvent функциясын шақырғанда орнатылады.
- Қолмен босатылатын оқиға, бұл оқиғаны күтіп тұрған ағындардың біреуінеде белгі бермейді.
- Автоматты түрде босатылатын оқиға, бұл оқиғаны күтіп тұрған бір ғана ағынға белгі береді және автоматты түрде босатылады.
CreateEvent, OpenEvent, SetEvent, ResetEvent және PulseEvent функциялары оқиғалармен қолданады.
HANDLE CreateEvent ( LPSECURITY_ATTRIBUTES lpsa, BOOL fManualReset, BOOL fInitialState, LPCTSTR lpszEventName)
OpenEvent функциясын басқа үрдістерден бар оқиғаларды ашу үшін қолданады.
Оқиғаларды басқаруда үш функция қолданады:
BOOL SetEvent (HANDLE hEvent)
BOOL ResetEvent (HANDLE hEvent;
BOOL PulseEvent (HANDLE hEvent)
Ағын SetEvent функциясы арқылы оқиғаны сигналдық күйге ауыстыра алады. Егер оқиға автоматты түрде босатылса, онда жалғыз күтуші ағын босатылады. Ал оқиға болса автоматты түрде сигналсыз күйге ауысады.
Егерде оқиға қолмен босатылса, онда ағын берілген оқиғаға қатысты ResetEvent функциясын шақырмайынша, оқиға сигналдық күйде қалады.
PulseEvent функциясы барлық оқиғаларды босатады. WaitForMultipleObjects функциясын барлық оқиғаларды күтуде қолданғанда абай болыңыз.
Оқиғаларды қолдануда төрт моделі
SetEvent және PulseEvent функцияларымен бірге орнатылатын қолмен және автоматты оқиғаларды орнатуда төрт жолы бар.
ЕСКЕРТПЕ: Оқиғаны дұрыс пайдаланбау жарысу күйін тудыруы мүмкін, бұл өз кезегінде қателерді тудырады. Автоматты түрде босатылатын оқиғаны, мысалға келтіретін болсақ. Пуржинасы бар есіктің механизмі сияқты қарастырсақ, яғни есік ашылғаннан кейін жабылып қалады. Ал қолмен босатылатын оқиғада пуржинасы жоқ есік сияқты, ашық күйде қалады. PulseEvent функциясын қарастыратын болсақ, онда есік ашылады және тез қайтадан бір күтіп тұрған ағын өткеннен кейін жабылады. Ал SetEvent функциясында есік ашылады және ашық күйде қалады.
|
Автобосатылатын оқиға |
Қолмен босатылатын оқиға |
SetEvent функциясы |
Бір ағын босатылады. Егерде берілген оқиғаға байланысты бірде-бір ағын күту орындалмаса, одан кейінгі күтуде болатын ағын, тез арада босатылады. Оқиға автоматты түрде босатылады. |
Сол мезеттегі күтіп тұрған барлық ағындар босатылады. Бір ағынмен босатылмағанша, оқиға сигналдық күйде қалады. |
PulseEvent функциясы |
Бір ғана ағын босатылады, егерде ағын берілген оқиғаға байланысты күту орындалып жатса. |
Сол мезеттегі күтіп тұрған барлық ағындар босатылады, ал одан кейін оқиға босатылады. Егерде бірде бір күтіп тұрған ағын болмаса, онда оқиғаға бір ағынның күтуі басталмайынша, оқиға сигнал күйінде қалады. |