
- •"Програмне забезпечення автоматизованих систем"
- •1. Оперативна пам'ять
- •2. Регістри
- •3. Прапори
- •1. Переходи
- •2. Безумовні переходи
- •3. Умовні переходи
- •4. Команди керування циклом
- •1. Подання даних арифметичні операції
- •2. Цілі числа без знака
- •3. Цілі числа зі знаком
- •4. Особливості виконання арифметичних операцій
- •5. Подання символів і рядків
- •6. Подання адрес
- •7. Директиви визначення даних
- •1. Структура команд. Виконавчі адреси
- •2. Формати команд
- •3. Запис команд в masm
- •1. Сегменти пам’яті, сегментні регістри
- •2. Сегментні регістри по домовленості
- •3. Сегментування, базування й індексування адрес
- •4. Програмні сегменти. Директива assume
- •5. Початкове завантаження сегментних регістрів
- •6. Посилання вперед
- •1. Строкові операції
- •1. Стек
- •2. Основні стекові команди
- •1. Організація процедур та переривань
- •2. Передача параметрів процедурам через регістри, через стек, через таблиці, через глобальні області
- •3. Передача параметрів по ссылке
- •4. Передача параметрів по повернутому значенню
- •5. Передача параметрів в стеку
- •6. Локальні змінні
- •1. Процеси і потоки
- •1.1 Розподіл часу між потоками
- •1.2 Динамічна зміна рівня пріоритету потоку
- •2. Робота із процесами й потоками в Win32 api
- •1. Адресний простір процесу
- •2. Керування віртуальною пам'яттю. Vmm
- •3. Файли даних, що проектуються на згадку
- •4. Взаємодія процесів через загальну область даних. Когерентність
- •5. Купи
- •1. Визначення вікна. Компоненти й параметри вікон
- •2. Клас вікна
- •3. Ієрархія вікон
- •1. Обмін даними між процесами
- •2. Вилучений виклик процедур (rpc - Remote Procedure Call)
- •3. Синхронізація потоків
- •1. Загальний порядок обробки виключень
- •2. Фільтри й оброблювачі виключень
- •1. Загальна структура системного реєстру
- •2. Робота додатків із системним реєстром
- •1. Файлові структури
- •2. Робота з томами й каталогами
- •3. Синхронна робота з файлами
- •4. Асинхронна робота з файлами
- •1. Системні файли ntfs
- •2. Master File Table (mft)
- •3. Цілісність даних і здатність до самовідновлення.
- •4. Організація й керування дисками
1.2 Динамічна зміна рівня пріоритету потоку
Клас пріоритету процесу й рівень пріоритету потоку усередині класу визначають базовий рівень пріоритету потоку. Цей рівень може динамічно змінюватися системою, а саме, підвищуватися на 2 одиниці у відповідь на надходження повідомлень у чергу потоку з наступним зниженням до базового рівня після закінчення певного проміжку часу. Це правило діє тільки для потоків до 15 рівня.
2. Робота із процесами й потоками в Win32 api
Таблиця 1.2 Рівень пріоритету потоку усередині класу пріоритетів
Ідентифікатор |
Рівень пріоритету потоку |
THREAD_PRfORlTYJJDWEST |
На 2 нижче рівні класу |
THREAD PRIORITY BELOW NORM Ha 1 нижче рівня класу |
|
AL |
|
THREAD_PRIORITY_NORMAL |
|
THREAD PRIORITY ABOVE NORMA Ha 1 вище рівня класу L |
|
THREAD_PRIORITY_HIGHEST |
На 2 вище рівні класу |
THREAD_PRIORITY_IDLE |
Дорівнює 1 для процесів класу |
|
IDLE PRIORITY CLASS, |
|
NORMAL PRIORITY CLASS, і |
|
HIGH PRIORITY CLASS і дорівнює 16 |
|
для REALTIME PRIORITY CLASS |
THREAD_PRI0R1TY_TIME_CRITICAL Дорівнює 15 для процесів класу |
|
|
IDLE PRIORITY CLASS, |
|
NORMAL PRIORITY CLASS, і |
|
HIGH_PRIORITY_CLASS, і дорівнює |
|
31 для |
|
REALTIME PRIORITY CLASS |
Динамічна зміна рівня пріоритету потоку. Клас пріоритету процесу й рівень пріоритету потоку усередині класу визначають базовий рівень пріоритету потоку. Цей рівень може динамічно змінюватися системою, а саме, підвищуватися на 2 одиниці у відповідь на надходження повідомлень у чергу потоку з наступним зниженням до базового рівня після закінчення певного проміжку часу. Це правило діє тільки для потоків до 15 рівня.
Функція CreateProcess()
Формат функції:
CreateProcess(
LPCTSTR IpApplicationName,// ім'я файлу, що виконує
LPTSTR IpCommandLine, II командний рядок
LPSECURITY_ATTRIBUTES IpProcessAttributes, //атрибути захисту процесса
LPSECURITY_ATTRIBUTES IpThreadAttributes, II атрибути захисту потоку
BOOL blnheritHandles, II прапор спадкування описателей
DWORD dwCreationFlags, II прапори створення
LPVOID IpEnvironment, II покажчик блоку змінні середовища
LPCTSTR IpCurrentDirectory, II поточний каталог
LPSTARTUPINFO IpStartuplnfoJJ блок початкових параметрів LPPROCESSJNFORMATION IpProcessInformation II покажчик структури, що описує породжений процес
);
Параметри:
IpApplicationName - покажчик на рядок, що містить ім'я виконує программы, що. Ім'я може бути повне. Якщо воно не повне, то пошук файлу виробляється в поточному каталозі. Параметру може бути привласнене значення NULL. У цьому випадку як ім'я файлу виступає перша відокремлена пробілами лексема з рядка IpCommandLine;
IpCommandLine - покажчик командного рядка. Якщо параметр IpApplicationName має значення NULL, то ім'я файлу, що виконує, виділяється з IpCommandLine, а пошук файлу, що виконує, виробляється відповідно до правил, що діють у системі;
IpProcessAttributes - покажчик на структуру, що описує параметри захисту процесу. Якщо параметру привласнене значення NULL, то встановлюються атрибути «за замовчуванням»;
lp ThreadAttributes- покажчик на структуру, що описує параметри захисту первинного потоку. Якщо параметру привласнене значення NULL, то встановлюються атрибути «за замовчуванням»;
blnheritHandles - визначає, чи буде породжений процес успадковувати описатели (handles) об'єктів батьківського процесу. Наприклад, якщо батьківський процес А вже до цього породжував процес В, те він одержав описатель процесу В и може ним маніпулювати. Якщо тепер він породжує процес С с параметром blnheritHandles рівним TRUE, то й процес Зі зможе працювати з описателем процесу В;
dwCreationFlags - визначає деякі додаткові умови створення процесу і його клас пріоритету;
IpEnvironment- покажчик на блок змінні середовища породженого процесу. Якщо цей параметр дорівнює NULL, то породжений процес успадковує середовище батька. Інакше він повинен указувати на блок рядків, що завершується нулем, кожна з яких завершується нулем (аналогічно DOS);
IpCurrentDirectory - покажчик на рядок, що містить повне ім'я поточного каталогу породженого процесу. Якщо цей параметр дорівнює NULL, то породжений процес успадковує каталог батька;
IpStartuplnfo - покажчик на структуру STARTUPINFO, що визначає параметри головного вікна породженого процесу;
IpProcesslnformation - покажчик на структуру, що буде заповнена інформацією про породжений процес після повернення з функції.
Приклад: програма, що запускає Microsoft Word
#include <windows.h> #)nclude <conio.h> «include <stdio.h> main()
{ PROCESSJNFORMATION pi; STARTUPINFO si ;
ZeroMemory( &si, sizeof(si)); si.cb = slzeof (si);
printf( "Press any key to start WinWord - "); getch();
CreateProcess( MULL, "WinWord", NULL, NULL, FALSE, 0,
NULL, NULL, &si, &pi); return 0;
}
Лекція 11
Тема: Архітектура пам'яті в Win32 API