
- •Мустафина б.М., Сейдахметова г.Е., Әлібиева ж.М.
- •Пәндік оқу - әдістемелік кешені
- •Алматы 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.1 Курстың тематикалық жоспары
«Жүйелік программалу» пәнін оқып үйрену үшін міндетті түрде лекциялық (2 кредит) және лабораториялық (1 кредит) сабақ өтілуі қажет, және де студенттердің өзіндік жұмыстары (СОӨЖ ауд. /офис және СӨЖ) жасалуы тиіс.
Пәннің тематикалық жоспары тақырыптарымен және академиялық сағаттарымен бірге барлық сабақ түрлеріне байланысты келесі кестеде көрсетілген.
Кесте 6
Курстың тематикалық жоспары
|
Тақырыптың атауы |
Академиялық сағаттар саны |
|||
Лекция |
Лабора-тория |
СОӨЖ |
СӨЖ |
||
1 |
2 |
3 |
4 |
5 |
6 |
1 |
Кіріспе. Операциялық жүйелер және олардың интерфейстері. |
2 |
2 |
3 |
3 |
2 |
Ағындарды басқару |
2 |
|
3 |
3 |
3 |
Процестерді басқару |
2 |
2 |
3 |
3 |
4 |
Ағындарды синхрондау |
2 |
|
3 |
3 |
5 |
Ағындарды синхрондаудың қосымша әдістері |
2 |
2 |
3 |
3 |
6 |
Жадыны басқару. Виртуалды жадыны қолдану |
2 |
|
3 |
3 |
7 |
Динамикалық таратылатын жады |
2 |
2 |
3 |
3 |
8 |
Файлдық жүйені қолдану |
2 |
|
3 |
3 |
9 |
Файлдар және каталогтармен жұмыс жасаудың қосымша әдістері және реестр |
2 |
|
3 |
3 |
10 |
Жадыға бейнеленетін файлдар |
2 |
2 |
3 |
3 |
11 |
Динамикалық байланысатын кітапханалар |
2 |
2 |
3 |
3 |
12 |
Енгізу – шығаруды қолдану |
2 |
|
3 |
3 |
13 |
Win32 обьектілерінің қауіпсіздігі |
2 |
3 |
3 |
3 |
14 |
Ерекше жағдайлардың құрылымдық өңделуі |
2 |
|
3 |
3 |
15 |
Процессаралық өзара әрекеттесу |
2 |
|
3 |
3 |
|
Барлығы (сағат) |
30 |
15 |
45 |
45 |
2.2 Лекциялық сабақ конспектілері
Дәріс 1. Кіріспе. Операциялық жүйелер және олардың интерфейстері.
Классикалық жүйелік программалау процестер және ағындардың диспетчерлеумен және синхрондаумен, процестер арасында деректердің алмасумен, компьютер құрылғыларын және файлдарды басқарумен байланысты сұрақтар аймағын қарастырады. Соңғы кезде жүйені жобалау кезінде сонымен бірге деректердің қауіпсіздігіне көп көңіл бөлінеді,бұл деректерге рұқсатсыз қатынаудың өскен қауіпінен пайда болған.
1.1 Windows ож құрылымы Жүйе құрылымының жалпы бейнелеуі
1.1.-суретте келтірілген Win32-қолданбаларының орындалуына бағдарланған сәулеттің қарапайымдалған сұлбасы
1.1-сурет. Windows ОЖ-нің сәулеттік қарапайымдалған сұлбасы
Windows ОЖ ядро режімінде жұмыс істейтін компоненттерден (құрауыштардан) және пайдаланушы режімінде жұмыс істейтін компоненттерден тұрады. 1.1-суретте келтірілген сұлбада бірнеше функционалдық деңгейлер нақты көрсетілген, олардың әр қайсысы төменгі деңгейдің сервистерін қолданады.
Жабдықтан абстракциялау деңгейінің (hardware abstraction layer, HAL) міндеті – жүйені бір платформадан басқасына потенциалды тасымалдау үшін аппараттық сәулеттердің аппараттық ерекшеліктерін жасыру болып табылады. HAL жеке-дара ерекшеліктерінен бос, жоғарыдағы деңгейлерге аппараттық құрылғыларды абстракті түрде көрсетеді. Бұл ядроны, драйверлерді және Windows ОЖ-нің орындалатын жүйені жабдықтың өзгешелігінен (мысалы, аналық тақшаның арасындағы ерекшелігінен) жекелеуге мүмкін береді.
Процессор жұмысының пұрсатты (ерекше артыкшылыгы бар, артыкшылык) режімінде немесе ядро режімінде жұмыс істейтін ОЖ-нің барлық компоненттерін ядро деп атайды. Microsoft корпорациясы операциялық жүйенің төменгі деңгейлі функциялары бар (үзулермен жеке жағдайларды диспетчерлеу және ағындарды жоспарлау және т.б.) түсiрiлiс жасамайтын (жүктелмейтін) жадыда болатын компонентті ядро (kernel) деп атайды. Ол сонымен бірге жоғарғы деңгейлер компоненттерімен пайдаланатын процедуралар жиынын және базалық объектілерді пайдалануға береді.
Ядро және HAL аппаратты-тәуелді болып табылады және Си, ассемблер тілінде жазылады.Жоғарғы деңгейлер Си тілінде жазылған және машинадан тәуелсіз болып табылады.
Орындалатын жүйе (executive) жадыны, процестерді және ағындарды басқару, қорғауды, енгізу-шығаруды және процестер арасында әрекеттесуді қамтамасыз етеді. Құрылғылардың драйверлерінде аппаратты-тәуелді код болады және нақты құрылғылар үшін ерекше, пайдаланушылар шақыруларын сұранысқа трансляциялауды қамтамасыз етеді. Графиканы және терезелерді қолдау ішкі жүйесі графикалық пайланушылар интерфейсінің (GUI) функцияларын жүзеге асырады, олардың ең атақтысы USER және GDI модулінің Win-32-функциялары.
Пайдаланушылар кеңістігінде, сервистер диспетчерімен басқарылатын және жүйелік есептерді шешетін, түрлі сервистер (Unix-тегі демондардың аналогы) жұмыс істейді. Кейбір жүйелік процестер (мысалы, жүйеге кіруді өңдеу) сервистер диспетчерімен басқарылмайды және олар жүйені қолдайтын бекітілген процестер деп аталады. Пайдаланушылар қолданбалары (user applications) бес түрлі болады: Win32, Windows 3.1, MS-DOS, POSIX и OS/2 1.2. Пайдаланушылар процестерін орындалу ортасын үш қоршау ішкі жүйесі береді: Win32, POSIX и OS/2. Сондықтан, пайдаланушылар қолданбалары Windows ОЖ-нің жүйелік шақыруларын тура шақырта алмайды, олар DLL ішкі жүйесіне қатынауға мәжбүр етеді.
Windows ОЖ негізгі компоненттері system32 каталогындағы келесі жүйелік файлдарында жүзеге асырылған:
ntoskrnl.exe – орындалатын жүйе және ядро;
ntdll.dll - орындалатын жүйенің функциялары бар жүйелік сервистер диспетчерінің интерфейстері және қолдаудың ішкі функциялары;
hal.dll - жабдықтан абстракциялау деңгейі;
win32k.sys - ядро режімінде жұмыс істейтін, Win32 ішкі жүйесінің бөлімі;
kernel32.dll, advapi32.dll, user32.dll, gdi32.dll - Win32 ішжүйесінің негізгі dll.
1.2 Win32 ішкі жүйесі
Қолданба және операциялық жүйенің арасындағы әрекеттестік жүйелік шақырулар (Microsoft терминологиясындағы жүйелік сервистер) көмегімен жүзеге асырылады. Бірақ қолданба жүйелік шақыруды тікелей шақыра алмайды (сонымен бірге, жүйелік шақырулар құжатталмаған). Мұның орнына қолданба ОЖ-нің программалық интерфейсін - Win32 API пайдаланған жөн.
Win32 API (Application Programming Interface) - Microsoft Windows операциялық жүйелер жанұясында программалаудың негізгі интерфейсі. Win32 API функциялары, мысалы, CreateProcess немесе CreateFile - Win32 ішкі жүйемен жүзеге асқан құжатталған, шақырылған ішкі программалар.
Win32 ішкі жүйесінің (1.1-суретті қара) құрамына мыналар кіреді:
csrss.exe қоршау ішкі жүйелерінің серверлік процесі,
Win32k.sys ядро режімінің драйвері,
dll - Win32-функцияларды экспорттайтын ішкі жүйелерінің модульдері (kernel32.dll, advapi32.dll, user32.dll и gdi32.dll) және
графикалық құрылғылардың драйверлері.
Эволюция процесінде ішкі жүйенің құрылымы өзгеріске ұшырады. Мысалы, терезелер және сурет салу функциялары өнімділікті жоғарлату мақсатымен пайдаланушылар режімінде жұмыс істейтін серверлік процестен Win32k.sys ядро режімінің драйверіне көшірілді.
Приложение, ориентированное на использование Win32 API, может работать практически на всех версиях, несмотря на то, что сами системные вызовы в различных системах различны Win32 API пайдалануға бағдарланған қолданбалар, жүйелік шақырулар түрлі жүйеде әртүрлі болғанына қарамастан, Windows барлық нұсқаларында жұмыс істей алады (1.2-суретті қара). Осындай жолмен Microsoft корпорациясы өздерінің операциялық жүйесінің жалғастырушылығын қамтамасыз етеді.
1.2-сурет. Windows түрлі нұсқалар үшін біріңғай программалық интерфейсті қолдау
Процесті іске қосу кезінде барлық талап етілген динамикалық кітапханалар оның виртуалді адрестік кеңістігінде бейнеленеді.
Атап кеткен, аса қажетті dll-кітапханалардан басқа, system32 жүйелік каталогта басқа dll-файлдардың көп саны болады. Қазіргі уақытта API шақырулар саны бірнеше мыңға тең.
Негізгі әдебиет: 1 [19 - 24], 4 [31-54, 551 - 559]
Бақылау сұрақтары:
1. Windows ОЖ компоненттері.
2. Жабдықтан абстракциялау деңгейінің (HAL) міндеті
3. Пайдаланушы қолданбалардің түрлері.
4. Win32 ішкі жүйесінің құрылымы
Дәріс 2. Ағындарды басқару
Ағын түсінігі процессордың программаны орындау барысындағы әрекеттерінің тізбектілігімен байланысты. Программа инструкцияларының мұндай тізбектілігі программа ішінде ағындарды басқару деп аталады.
Программа көпағынды деп аталады, егер бұл программада бір уақытта бірнеше программа орындала алатын болса. Бұл жағдайда ағындар параллельді (қатарлас) деп аталады. Егер программада бір уақытта бір ғана ағын орынадалатын болса, мұндай программа бір ағындық деп аталады.
2.1. Ағын күйі
Ағын бүкіл программаның динамикалық іс-әрекетін немесе программадағы қандай да бір функцияны баяндайды. Белгілеу ыңғайлы болу үшін программаны бір ағынды деп алайық. Онда ағынды келесі жұп ретінде қарастыруға болады:
ағын = (процессор, программа).
Программа процессорда орындала алады, егер бұл программа дайын болса ғана. Сонымен қатар, процессордың өзі де бос болуы керек және осы программаны орындауға дайын болуы керек.
Процессор мен программаның күйлерін жазу үшін келесі атауларды енгізейік: процессор үшін - "белгіленбеген", "белгіленген", ал программа үшін - "дайын емес", "дайын".
Онда ағын күйін келесі жіп күйлер арқылы анықтауға болады:
Ағын күйі = (процессор күйі, программа күйі).
Ағын күйі үшін келесі атауларды енгізейік: “тосқаулданған” ("белгіленбеген", "дайын емес"), “дайын” ("белгіленбеген", "дайын") және “орындалуда” ("белгіленген", "дайын").
Ағынның бір күйден екінші күйге ауысу диаграммасы 2.1-суретте көрсетілгендей болуы мүмкін.
Ағынның бір күйден екінші күйге ауысулары диаграммада доғалармен белгіленген және олар ағындармен жүргізілетін қандай да бір операцияларды баяндайды.
Диаграммада келесі күйлер көрсетілген:
- "жаңа" – өзінің жұмысын әлі бастамаған ағын;
- "аяқталды" – өзінің жұмысын аяқтаған ағын;
- "ұйқыда" – ағын ұйқылы күйде, яғни өзінің орыдалуын қандайда бір уақыт
интервалы аралығына тоқтатқан.
Ауысулар, яғни диаграммадағы доғалар баяндайтын операциялардың атаулары олардың жанында стрелкамен көрсетілген. Операцияларды қысқаша баяндасақ, олар:
- create операциясы - выполняется потоком, который создает новый поток и переводит поток из состояния "новый" в состояние "готов".
- Exit операциясы – ағын аяқталған жағдайда, ағынның өзімен орындалады және ағынды "орындалуда" күйінен "аяқталды" күйіне ауыстырады.
- Run операциясы – процессорлық уақытты бөліп береді және ағынды "дайын" күйден "орындалуда" күйіне ауыстырады.
- interrupt операциясы – ағынның орындалуын тоқтатады және оны " орындалуда " күйден " дайын " күйіне ауыстырады.
2.1-сурет. Ағын күйлерінің моделі
- Block операциясы – ағынды "орындалуда" күйінен "тосқауылданған" күйіне ауыстырады. Бұл операция қандайда бір оқиғаның болуын күткен жағдайда орындалады, мысалы, енгізу-шығару немесе ресурсты босату операциялары аяқталғанда.
- unblock операциясы – ағынды " тосқауылданған " күйінен "дайын" күйіне ауыстырады. Бұл операция ағын күткен оқиға орындалған жағдайда іске қосылады.
- suspend операциясы – ағынның орындалуын тоқтатады.
- Resume операциясы – ағынның орындалуын қайта бастайды.
- sleep операциясы – ағынды "ұйқыда" күйіне ауыстырады.
- wakeup операциясы – операциялық жүйеге ағынды оятуға мүмкіндік береді.