
- •Мустафина б.М., Сейдахметова г.Е., Әлібиева ж.М.
- •Пәндік оқу - әдістемелік кешені
- •Алматы 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 Курс бойынша емтихан сұрақтары
- •Глоссарий
- •Жүйелік программалау
2.5 Ағындардың приоритеті
Әрбір ағынға 0-ден (ең төменгі) 31-ге (ең жоғарғы) дейін приоритет деңгейі меншіктеледі.
Жүйе іске қосылған кезде ерекше ағын – парақты нөлдеу ағыны (zero page thread) қалыптасады, оған нөлдік деңгейдегі приоритет меншіктеледі. Бұл ағын жүйені қажет ететін басқа ағындар болмаған кезде жедел жадыдағы бос парақтарды нөлдейді.
Windows жүйесі приоритеттің алты классын қолдайды: IDLE (тоқтап тұрушы), BELOW NORMAL (қалыптан төмен), NORMAL (қалыпты), ABOVE NORMAL (қалыптан жоғары), HIGH (жоғары) және REALTIME (нақты уақыттағы). Ең кеңінен таралған класс – NORMAL классы; оны 99% қосымшалар қолданады.
REAL_TIME – бұл процесстегі ағындар уақыт бойынша критикалық есептердің орындалуын қамтамасыз ете отырып, оқиғаларға жедел түрде жауап беруі керек. Мұндай ағындар тіпті операциялық жүйенің компоненттерінде ығыстыра алады.
HIGH - бұл процесстегі ағындар да уақыт бойынша критикалық есептердің орындалуын қамтамасыз ете отырып, оқиғаларға жедел түрде жауап беруі керек.
ABOVE_NORMAL – бұл NORMAL және HIGH класстарының арасындағы класс.
NORMAL – бұл процесстегі ағындар өздеріне процессорлық уақыттың бөлінуіне айтарлықтай талап қоймайды.
BELOW_NORMAL - бұл NORMAL және IDLE класстарының арасындағы класс.
IDLE – бұл процесстегі ағындар жүйе басқа жұмыстардан бос кезінде орындалады. Әдетте приоритеттің бұл класы статистикалық ақпаратты жинайтын экрандық наставкаларда және қосымшаларда фондық режімде жұмыс істейтін утилиталар үшін қолданылады.
Ағынның салыстырмалы приоритеті
TIME_CRITICAL - REAL_TIME класында 31-ші приортетпен, ал басқа кластарда 15-ші приоритетпен орындалады.
HIGHEST – әдетте берілген класспен салыстырғанда екі деңгейге жоғары приоритетпен орындалады.
ABOVE_NORMAL - берілген класспен салыстырғанда бір деңгейге жоғары приоритетпен орындалады.
NORMAL берілген класс приоритетімен орындалады.
BELOW_Normal - берілген класспен салыстырғанда бір деңгейге төмен приоритетпен орындалады.
LOWEST - берілген класспен салыстырғанда екі деңгейге төмен приоритетпен орындалады.
IDLE - REAL_TIME класында 16-шы приоритетпен ал басқа класстарда 1-ші приоритетпен орындалады.
Сонымен, процесске қандай да бір приоритет класын тағайындай отыра, оның салыстырмалы приоритетін процесс ауқымында өзгертуге болады.
Жалпы жағдайда жоғарғы деңгейлі приориетті ағын барынша аз уақыт белсенді болуы керек. Бұл приоритетте қандай да бір жұмыс пайда болғанда, оған бірден процессорлық уақыт бөлінеді. Минималды колемдегі командаларды орындап біткен соң, ол жедел түрде күтуші режімге ауысуы керек. Ал, төменгі деңгейлі ағын белсенді болып кала алады және процессор уақытын айтарлықтай ұзақ қолдана алады.
Жүйеде SetPriorityClass функциясын шақыру арқылы приоритет класын орындалушы процесстің өзімен ауыстыру мүмкіндігі қарастырылған.
BOOL SetPriorityClass( HANDLE hProcess, DWORD fdwPriority).
Бұл функция процестің hРгоcess баяндауышымен анықталатын приоритет класын fdwPriority параметрінің мәніне сәйкес өзгерте алады.
Бұл функцияға жұп болып табылатын GetPriorityClass функциясы кез келген процестің приоритет класын анықтауға мүмкіндік береді: DWORD GetPriorityClass(HANDLE hProcess).
Ағын приоритетінің деңгейін динамикалық түрде өзгерту.
Ағынның салыстырмалы деңгейі және процесстің приоритет класының комбинациясынан алынған приоритет деңгейі ағын проритетінің базалық деңгейі деп аталады. Кейде жүйе ағын приоритетінің деңгейін өзгертеді. Әдетте бұл енгізу-шығару процесімен байланысты оқиғаларға жауап берумен байланысты болады.
Процессор ағынды берілген уақыт аралығында орындайды, уақыт біткен соң, жүйе ағынның приоритетін 14-ші деңгейге дейін 1-ге кемітеді. Ары қарай, ағынға қайтадан уақыт кванты беріледі, ол біткенде жүйе қайтадан оның приориетін 1-ге төмендетеді. Енді ағынның приоритеті қайтадан оның базалық приориететіне сәйкес болады.
Ағынның аңымды приоритеті базалық приоритеттен төмен бола алмайды. Сонымен қатар. Ағынды «оятушы» құрылғының драйвері приориеттің өсу шамасын өзі орнатады. Жүйе базалық деңгейі 1-15 аралығында болатын ағындардың ғана приоритетін көтереді. Осы себептермен берілген диапазон «динамикалық приоритет аймағы» (dynamic priority range) деп аталады. Жүйе ағын приоритетінің нақты уақыт деңгейінен (15-тен артық) жоғары динамикалық түрде көтерілуіне жол бермейдімұндай деңгейлі ағындар жүйелік функцияларға қызмет көрсететіндіктен бұл шектеу қосымшаның операциялық жүйе жұмысына бөгет болуына мүмкіндік бермейді. Айта кету керек, нақты уақыт (16-дан 31 аралығындағы) деңгейіндегі ағындардың приоритеттерін ешқашан өзгертпейді.
Бұл механизмді өшіруге мүмкіндік беретін функциялар:
BOOL SetProcessPriorityBoost ( HANDLE hProcess,
BOOL DisablePriorityBoost);
BOOL SetThreadPriorityBoost ( HANDLE hThread,
BOOL DisablePriorityBoost);
SetProcessPriorityBoost көрсетілген процесстегі барлық ағындардың приорететтерін өзгерту мүмкіндігін қосуға және өшіруге мәжбүрлейді, aл SetThreadPriorityBoost жеке ағындарға ғана әрекет жасай алады. Бұл функциялардың аналогтары бар, олар приоритеттерді өзгертуге рұқсат бар – жоғын анықауға мүмкіндік береді:
BOOL GetProcessPriorityBoost ( HANDLE hProcess,
PBOOL pDisablePriorityBoost);
BOOL GetThreadPriorityBoost ( HANDLE hThread,
PBOOL pDisablePriorityBoost);
Екі функцияның әрқайсысы қажетті процесс немесе ағынның баяндауын және нәтиже қайтарылатын BOOL типті айнымалыны жібереді.
Негізгі әдебиет: 1 [27 - 53], 2 [199 - 220]
Бақылау сұрақтары:
1. Ядро объектілерінің пацдаланушылар санашығының міндеті.
2. CREATE_SUSPENDED белгісі не үшін қолданылады?
3. CONTEXT құрылымында қандай деректер сақталады?
4. Ағындар приоритеттерінің деңгейлері қандай диапазонды қамтиды?
Дәріс 3. Процесстерді басқару