
- •Мустафина б.М., Сейдахметова г.Е., Әлібиева ж.М.
- •Пәндік оқу - әдістемелік кешені
- •Алматы 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.2. Ағындарды диспетчерлеу және жоспарлау
Мультипрограммалық операциялық жүйелерде ағындарға қызмет көрсету келесідей болады. Процессор жұмысының уақыты кванттарға (интервалдарға) бөлінеді, олар өз алдына ағындардың жұмыстары үшін үлестіріледі. Уақыт кванты біткен соң, ағынның жұмысы үзіліп, процессор басқа ғымға тағайындалады. Уақыт кванттарын ағындар арасында үлестіру жұмысымен ағындар менеджері деп аталатын арнайы программа айналысады.
Ағындар менеджері процессорды басқа ағынға ауыстырғанда келеси әрекеттерді істеуі керек:
- іске қосылатын ағынның оның үзілу кезіндегі контекстіне қайта қалпына;
- басқаруды іске қосылатын ағынға беру.
Бірдей приоритетті ағындарды басқару алгоритмін қарастырайық. Бұл ағындар процессорға кезекке тұрады. Процессор ағындарға FIFO (first in — first out), яғни бірінші келген – бірінші шығады тәртібімен қызмет көрсетеді. Қызмет көрсетудің мұндай тәртібі циклдық қызмет көрсету деп аталады. Өйткені аяқталмаған ағамдар келесі қызмет көрсетілгенше тосқауылданады, яғни қызмет көрсетілмей шығырылып тасталмайды. Сондай ақ, мұндай циклдық қызмет көрсету FCFS (first come — first served), яғни бірінші келді – бірінші қызмет көрсетілді деп те аталады.
Егер ағындардың приоритеттері әр түрлі болса, оларды басқаруға бірнеше кезектері бар айтарлықтай күрделі алгоритм керек болады. Бұл жағдайда әрбір кезекте бірдей приоритетті ағындар жиналады.
Бірнеше кезектерге қызмет көрсететін қарапайым алгоритм келесідей болады: бірінші болып приоритеттері жоғары ағындарға қызмет көрсетіледі.
Жалпы жағдайда ағындарды басқару екіге бөлінеді: жоспарлау және диспетчерлеу. Ағынды жоспарлау деп үзілген ағындарды кезекке қою үшін қолданылатын алгоритмді айтамыз. Ағындардың менеджер (диспетчер) үзілген ағынның приоритетін өзгерте алады, бұл өз алдына осы ағын тұратын кезекті өзгертуі мүмкін. Жоспарлау алгоритмі кестелер теориясы (теория расписаний) деп аталатын математикалық пәнмен зертелінеді. Ағындарды диспетчерлеу дегеніміз процессорға ағындарға қызмет көрсетуі үшін тәртіп орнатуды. Диспетчерлеу алгоритмдері жаппай қызмет көрсету теориясы (теория массового обслуживания) деп аталатын математикалық пәнмен зерттеледі.
Ағындарды басқару алгоритмі жүйенің келесі параметрлерін оптимизациялау үшін әзірлендеі:
- микропроцессордың жұмыс істеу уақыты максималды болуы керек;
- жүйенің өткізу қабілеті максималды болуы керек;
- ағынның жүйеде болу уақыты минималды болуы керек;
- ағынның кезекте күтіп тұру уақыты минималды болуы керек;
- жүйенің тапсырыстарға жауап беру уақыты минималды болуы керек.
Және бұл жағдайда әр жүйе үшін ағындардың контекстеріне ауысу шығындарын азайтатын оптималды қызмет көрсету интервалдары таңдалуы керек. Жалпы жағдайда процессордың жұмыс істеу уақытын ағындар арасында бөлу орындалуына көп уақыт қажетсінбейтін ағындарды тез орындауға мүмкіндік береді, бірақ еңбекауқымдылығы жоғары ағындардың орындаулын баяулатады.
2.3 Ағынды анықтау
Windows-та ағын деп қосымшаларды орындау үшін процессорлық уақыттар берілетін ядроның объектісі. Әрбір ағынға келесі ресурстар жатады:
- атқарылатын функцияның кодасы;
- процессор регистрлерінің жиынтығы;
- қосымша жұмысына арналған стек;
- операциялық жүйенің жұмысына арналған стек;
- құрамында қауіпсіздік жүйесіне арналған ақпарат бар қатынас құру маркері.
Аталған ресурстар біріге отырып Windows-ғы ағын контекстін құрайды. Windows-тағы әрбір ағынның құрамында дескриптормен қоса идентификатор болады. Ол жүйеде орындалып жатқан ағындар үшін ерекше болып табылады. Ағындардың идентификаторын пайдаланушыларға ағындардың жұмысын бақылауға мүмкіндік беретін қызметтік программалар қолданады.
Windows операциялық жүйесінде ағындардың екі типі болады:
- жүйелік ағындар;
- пайдаланушылық ағындар.
Жүйелік ағындар операциялық жүйенің түрлі қызметтерін атқарады және олар операциялық жүйенің ядросымен іске қосылады.
Пайдаланушылық ағындар пайдаланушылар мәселелерін шеші үшін қызмет атқарады және қосымшалар арқылы іске қосылады.
Жұмыс істеуші ағындарды екі типті ағындар бар:
- жұмысшы ағындар (working threads);
- пайдаланушы интерфейсінің ағындары (user interface threads).
Жұмысшы ағындар қосымшаның түрлі фондық мәселелерін атқарады.
Пайдаланушы интерфейсінің ағындары терезелермен байланысты және терезелерге келіп түсетін хабарларды өңдеумен байланысты жұмыстарды атқарады. Әрбір қосымшада кем дегенде бірінші (primary) немесе негізгі (main) деп аталатын бір ағын болады. Консольдық қосымшаларда бұл ағын main функциясын атқарады. Графикалық интерфейсі бар қосымшаларда бұл ағын WinMain функциясын атқарады.