
- •Мустафина б.М., Сейдахметова г.Е., Әлібиева ж.М.
- •Пәндік оқу - әдістемелік кешені
- •Алматы 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.2 Бұғатталған қосымша функциялар
Ары қарай бірнеше функциялар көрсетілген. Олар жай операцияны салыстырумен және айнымалылардың жұбын алмастыруын рұқсат етеді.
Бұғатталған айырбас бір айнымалыны екіншісіне жазады:
LONG InterlockedExchange(LPLONG Target, LONG Value)
Функция Target айнымалысына ағындағы мағынасын қайтарып, оған Value мағынасын қосады. Target айнымалысы сөздермен тегістелуі керек.
InterlockedExchangeAdd қызметі бірінші мағынаға екіншісін қосады.
LONG InterlockedExchangeAdd (PLONG addend, LONG Increment)
Increment айнымалысы Addend айнымалысына қосылып, Addend-тің негізгі мағынасын қайтарады. Бұл функция айнымалыны екі есе (немесе одан да үлкен) өсірудің атомарлық операциясын орындауға рұқсат береді. Ал InterlockedIncrement-пен мұндай операциялар жасауға болмайды.
Соңғы InterlockedCompareExchange функциясы InterlockedExchange функциясына ұқсас. Айырмашылығы: Теңдік орындалған жағдайда ғана айырбас жасалына алады.
PVOID InterlockedCompareExchange (PVOID *Destination,
PVOID Exchange, PVOID Comparand)
Бұл функция атомарлық операцияларда келесі әрекеттерді орындайды:
Temp = *Destination
If (*Destination= = Coparand) *Destination = Exchange;
Return Temp;
Осы функцияның бір айнымалысы ол критикалық кода секциясының бұғатталуын қолданады. *Destination айнымалысы “бұғаттау айнымалысы” болып табылады. Ол 1 тең болса “бұғатталған”, ал 0 тең болса ”бұғаттан алынған” деп есептеледі. Exchange айнымылысы 0 мәнді болуы тиіс, ал Comparand болса 1 мәнін. Егер де функция 1 мағынасын қайтарса, онда шақырылған ағын кызметі өзінің “билігіне” критикалық секциясын алады. Басқалай ол “ұйқтап қалу ” немесе ”циклденіп” бірнеше уақыт керек емес циклді орындап, содан соң қайта көру керек. Бұл циклдену – цикл санағыштың 0 емес мәні бар CRITICAL_SECTION объекті үшін EnterCriticalSection функциясы күту кезінде тура осыны орындайды.
Негізгі әдебиеттер: 2 [ 246- 258]
Бақылау сұрақтары:
Оқиғалардың түрлері.
Оқиғаларды қолданудың төрт үлгісі.
Бұғатталған функциялардың тағайындауы.
Дәріс 6. Жадыны басқару. Виртуалды жадыны қолдану
Жадыны басқару сәулеті.
Win32-нің әр процесі өзінің 4Гбайттық виртуалды адрестік кеңістігі бар. Win32 процесске ең кем дегенде жартысын қолайлы етеді (2Гбайт). Қалған виртуалды адрестік кеңістік біріге пайдаланатын кода және мәліметтерге, жүйелік кодасына, драйверлерге және т.б. арналған.
Жадыны басқаруға шолу.
ОЖ сұраныс бойынша беттерді айырбастаун, беттерді жүктеу механизмін, виртуалды жадыны физикалық жадыға бейнелеудің барлық элементтерін және т.с.с. басқарады. Міне қысқаша резюме:
- Жүйенің физикалық жадысы аз мөлшерде болады.
- Әрбір процесс (ал қолданушы және жүйелік процесстер бірнеше болуы мүмкін) өзінің виртуалды адрестік кеңістігі болады, ол қол жетерлік физикалық жадыдан едәуір асу мүмкін.
- ОЖ виртуалдық адрестерді физикалықта көрсетеді.
- Виртуалдық беттердің көбісі физикалық жадыда болмайды, сол үшін ОЖ беттік қателерді бақылап ақпараттарды дисктен: жүйелік беттік файлдан (файл подкачки) немесе қарапайым файлдан жүктейді. Беттік қателер жұмыс өнімділігіне әсер етеді, сондықтан программалар қателер саны минимумге мәлімделетіндей жобалануы тиіс.
6.1 суретте (Virtual Memory Manager) виртуалды жады диспечеріне негізделген Win32-нің API-де жадыны басқару механизмі көрсетілген. Win32 виртуалды жадының API интерфейсі (VirtualAlloc, VirtualFree, VirtualLock, VirtualUnlock және т.б.) бүтін беттермен жұмыс істей алады. Win32 “үйменің” API интерфейсі пайдаланушымен анықталатын жады бірліктерімен жұмыс істей алады.
VirtualAlloc функциясы виртуалды адрестік кеңістікте беттер қатарын бөліп береді. Ал VirtualAllocEx функциясы көрсетілген процестің виртуалды адрестік кеңістігінде беттер қатарын бөліп береді.
LPVOID VirtualAlloc (LPVOID lpvAddress, DWORD dwSize,
DWORD dwAllocationType, DWORD dwProtect).
LPVOID VirtualAllocEx (HANDLE hProcess, LPVOID lpvAddress,
DWORD dwSize, DWORD dwAllocationType, DWORD dwProtect ).
Win 32-
ның
программасы
С
кітапханасы: C:
malloc, free
Үйменің
API
:
HeapCreate,
HeapDestroy,
HeapAlloc,
HeapFree
MMFAPI:
CreateFileMapping,
CreateViewOfFile
Виртуалды
жадының API-і
Виртуалды
жадының диспечерімен Win32-нің
ядросы
Физикалық жады
Диск және
файлдық жүйе
Сурет 6.1. Win32- нің жадыны басқару сәулеті
VirtualFree функциясы виртуалды адрестік кеңістікте беттер қатарын босатады. Ал VirtualFreeEx функциясы көрсетілген процестің виртуалды адрестік кеңістікте беттер қатарын босатады.
BOOL VirtualFree (LPVOID lpvAddress, DWORD dwSize,
DWORD dwFreeType)
BOOL VirtualFreeEx (HANDLE h Process, LPVOID lpvAddress,
DWORD dwSize, DWORD dwFreeType)
VirtualLock функциясы виртуалды адрестік кеңістік аймағын жадыда бұғаттайды, ал VirtualUnLock функциясы процестің виртуалды адрестік кеңістігінде беттердің көрсетілген қатарына жол ашуға мүмкіндік береді. Қажеттілік өлшемімен беттік файлына беттерді түсіреді.
BOOL VirtualLock (LPVOID lpvAddress, DWORD dwSize),
BOOL VirtualUnLock (LPVOID lpvAddress, DWORD dwSize)
VirtualProtect функциясы виртуалды адрестік кеңістігінде бөлінген беттердің аймағына қатынас құруға қорғау орнықтыруларын өзгертеді.
BOOL VirtualProtect (LPVOID lpvAddress, DWORD dwSize,
(DWORD dwNewProtect, DWORD pdwOldProtect,),
BOOL VirtualProtectEx (HANDLE hProcess, LPVOID lpvAddress,
DWORD dwSize, DWORD dwNewProtect, DWORD pdwOldProtect,),
Негізгі әдебиеттер: 1 [ 359 - 392], 2 [132 –134] , 10 [ 340 –372]
Бақылау сұрақтары:
API Win32-де жадыны басқару механизмі.
Виртуалды жадысымен жұмыс жасаудағы негізгі API функциялары.
Беттік қателер дегенде нені түсінесіз.
Дәріс 7. Динамиқалық таратылатын жады