Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекцій із Системного програмування та...docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
786.31 Кб
Скачать

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