Процеси та потоки (лекція № 4)

1.

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ ЕКОНОМІЧНИЙ УНІВЕРСИТЕТ
імені Семена Кузнеця

2.

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ ЕКОНОМІЧНИЙ УНІВЕРСИТЕТ
імені Семена Кузнеця
Лекція№4
по курсу "Системне програмування "
03.10.2022
Змістовний модуль № 1: Системне
програмування в Wındows
Лектор:
Доцент кафедри Інформаційних систем
кандидат технічних наук, доцент
Голубничий Дмитро Юрійович

3.

1.
Процеси.
2.
Потоки.
3.
Планування процесів і потоків.
4.
Система пріоритетів.

4.

5.

Керуючі таблиці ОС
ресурси системи
образ
процесу
таблиці пам'яті
пам'ять
пристрої
файли
процеси
процес 1
Таблиця введеннявиведення
таблиці файлів
Первинні таблиці
процесів
процесор
процес 1
процес 2
процес N
процес 3
процес N
Концепція процесів і потоків
5

6.

Поля таблиці процесів
1. ПРОЦЕСИ.
управління процесом управління пам'яттю
управління файлами
регістри
Покажчик на
текстовий сегмент
Кореневий каталог
Лічильник команд
Покажчик на сегмент
даних
Робочий каталог
покажчик стека
Покажчик на сегмент
стека
Дескриптори файлу
стан процесу
ідентифікатор користувача
пріоритет
ідентифікатор групи
параметри планування
ідентифікатор процесу
Батьківський процес
Група процесу
Час початку процесу
Використане процесорний
час
6

7.

завдання
процеси
потоки
Стек в режимі
користувача
Стеки потоків в
режимі ядра
Таблиця
процесу
P
T
T
T
Таблиця
процесу
T
P
маркери доступу
Взаємозв'язок між завданнями, процесами і потоками
7

8.

маркер
доступу
Дескриптори віртуального
адресного простору
1. ПРОЦЕСИ.
процес
...
Таблиця
об'єктів
дескриптор 1
потік x
дескриптор 2
файл y
дескриптор 3
секція z
Процес і його ресурси (приклад)
8

9.

завдання (JOB)
процес 1
процес 2
процес N
потік 1
потік 2
потік k
Thread 1
Thread 2
Thread k
волокна (Fibers)
об'єкти
Назва
опис
завдання
Набір процесів із
загальними квотами і
лімітами
процес
Контейнер для ресурсів і
потоків
потік
Виконання коду в процесі
волокно
Полегшений потік, повністю
керований в просторі
користувача
Завдання, процеси, потоки (нитки), волокна
9

10.

1. ПРОЦЕСИ.
процес (process) - абстракція, що описує поточну програму
процес (process) - це програма та системні ресурси, необхідні
для її роботи.
процес - програма, яка перебуває в режимі виконання
процес в Win32, Win64 - це об'єкт, який не виконується, а просто
"володіє" виділеним йому адресним простором, іншими словами
процес є структурою в пам'яті.
У виконавчій системі процеси - це об'єкти,
створюються і знищуються диспетчером об'єктів
виконується програма
(exe-модуль)
що
закрите адресний
простір
складові процесу
системні ресурси
потік управління
10

11.

Тип об'єкта
1. ПРОЦЕСИ.
Атрибути
тіла об'єкта
сервіси
процес
ідентифікатор процесу
маркер доступу
базовий пріоритет
Процесорний спорідненість за замовчуванням
розміри квот
Час виконання
Лічильник введення / виведення
Лічильник операцій віртуальної пам'яті
Порти винятків-налагодження
коди завершення
створити процес
відкрити процес
Запросити інформацію процесу
Встановити інформацію процесу
Поточний процес
завершити процес
Виділити-звільнити віртуальну пам'ять
Читання / запис в віртуальну пам'ять
Захистити віртуальну пам'ять
Блокувати / розблокувати віртуальну пам'ять
Опитати віртуальну пам'ять
Скинути віртуальну пам'ять на диск
Об'єкт - процес
11

12.

1. ПРОЦЕСИ.
Атрибути об'єкта - процесу
Атрибут
призначення
ідентифікатор процесу Унікальне значення, яке ідентифікує процес в ОС
маркер доступу
Об'єкт виконавчої системи, що містить інформацію про
права зареєстрованого в системі користувача, якого
представляє цей процес
базовий пріоритет
Базовий пріоритет потоків процесу
Процесорний
Набір процесорів, на яких потоки процесу можуть
спорідненість за
виконуватися за замовчуванням
замовчуванням
розміри квот
Максимальний обсяг резидентної і нерезидентної системної
пам'яті, простору в файлі підкачки і процесорного часу, що
виділяється для користувача процесу
Час виконання
Загальний час виконання всіх потоків процесу
Лічильники введення- Змінні, в яких записується число і тип операцій введеннявиведення
виведення, виконаних потоками процесу
Лічильники операцій
Змінні, в яких записується число і тип операцій віртуальної
віртуальної пам'яті
пам'яті, виконаних потоками процесу
Порти винятківКанали комунікацій між процесами, за якими диспетчер
налагодження
процесів посилає повідомлення, якщо один з потоків процесу
викликає виняток
код завершення
Причина завершення процесу
12

13.

сервіси процесів
1. ПРОЦЕСИ.
сервіс
функція
створити процес
CreateProcess ()
відкрити процес
OpenProcess ()
запросити
GetPriorityClass (), GetProcessTimes (),
інформацію процесу GetProcessWorkingSetSize (), GetExitProcessCode () і
т.д.
встановити
SetPriorityClass (), SetProcessWorkingSetSize ()
інформацію процесу
Поточний процес
GetCurrentProcess (), GetCurrentProcessId ()
завершити процес
ExitProcess () або TerminateProcess ().
13

14.

1. ПРОЦЕСИ.
створення процесів
Створити процес - це перш за все означає створити
описувач процесу, в якості якого виступає одна чи кілька
інформаційних структур, що містять всі відомості про
процес, необхідні ОС для управління ним
події,
призводять до створення процесів
Завантаження системи
запит користувача
Системний виклик працюючого процесу
BOOL CreateProcess (LPCSTR lpApplicationName, LPSTR
lpCommandLine, LPSECURITY_ATTRIBUTES
lpProcessAttributes, LPSECURITY_ATTRIBUTES
lpThreadAttributes, BOOL bInheritHandles, DWORD
dwCreationFlags, LPVOID lpEnvironment, LPCSTR
lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation); 14

15.

Порядок пошуку файлу виконуваної програми
1. В каталозі, в який завантажено додаток
немає
1. ПРОЦЕСИ.
2. У поточному каталозі
немає
3. У системному каталозі Windows (% SystemRoot% \)
немає
4. У каталозі Windows, Який повертає функція
GetWindowDirectory()
немає
5. У каталогах, перерахованих у змінній середовища
PATH, Яка визначає порядок пошуку в них
15

16.

завершення процесу
події,
призводять до завершення процесів
1. ПРОЦЕСИ.
Планове завершення
(закінчення виконання)
Знищення іншим
процесом
Плановий вихід з відомої помилку
(наприклад, відсутність файлу)
Вихід з непоправною помилку
(помилка в програмі)
функція ExitProcess() завершує процес і все його потоки і
повертає звичайний код завершення.
VOID ExitProcess (UINT uExitCode);
функція TerminateProcess()є аварійним засобом завершення
процесу. викликається ззовні (!).
BOOL TerminateProcess (HANDLE hProcess, UINT uExitCode);
16

17.

Найпростіша модель процесу
диспетчеризація
Вхід
вихід
1. ПРОЦЕСИ.
Не виконується
виконується
пауза
Граф станів і переходів
диспетчеризація
Вхід
черга
пауза
CPU
CPU
вихід
tкв
17

18.

новий
Вхід
Готовий до
виконання
Виконую-щійся
Освободження
в систему
1. ПРОЦЕСИ.
Завершующійся
Блокірова-ний
очікування
події
надходження
процесу
Черга готових процесів
CPU
Тайм - аут ( tКВ )
очікування події
18

19.

20.

потік (Thread) - це незалежний шлях виконання
всередині процесу, що розділяє разом з процесом
загальний адресний простір, код і глобальні дані.
2. ПОТОКИ.
клієнти
1
2
клієнти
3
1
2
3
Переваги використання
потоків:
1. Спрощення програми
2. Швидкість
створення потоку
1
2
процеси
3
3. Підвищення
продуктивності
Процес з
трьома
потоками
Порівняння багатопотокової
системи з однопоточному
20

21.

Потоки в просторі користувача
2. ПОТОКИ.
процес
Система
підтримки
виконання
програм
потік
Потоки в просторі ядра
процес
ядро
Таблиця Таблиця
потоків процесів
потік
ядро
Таблиця
потоків
Таблиця
процесів
Реалізація потоків у просторі користувача, ядра
21

22.

ПОТІК НА РІВНІ КОРИСТУВАЧА
ПЕРЕВАГИ:
НЕДОЛІКИ:
системний виклик блокує не тільки
можна реалізувати в ОС, що
працює потік, але і всі потоки того
не підтримує потоки без будьпроцесу, до якого він відноситься;
яких змін в ОС;
висока продуктивність, оскільки додаток не може працювати в
многопроцессорном режимі, так як
процесу не потрібно
ядро ​закріплює за кожним процесом
перемикатися в режим ядра і
тільки один процесор;
назад;
ядро про потоках нічого не знає при запуску одного потоку жоден
і управляє однопоточні
інший потік а рамках одного процесу
не буде запущений поки перший
процесами;
добровільно не віддасть процесор;
є можливість використання
будь-яких алгоритмів
всередині одного потоку немає
планування потоків з
переривань за таймером, в
результаті чого неможливо створити
урахуванням їх специфіки;
планувальник за таймером для
управління потоками
почергового виконання потоків.
покладається на програму
користувача.
2. ПОТОКИ.
22

23.

ПОТІК НА РІВНІ ЯДРА
ПЕРЕВАГИ:
можливо планування роботи декількох потоків одного і того ж
процесу на декількох процесорах;
2. ПОТОКИ.
реалізується мультипрограмування в рамках всіх процесів (у тому
числі одного);
при блокуванні одного з потоків процесу ядро ​може вибрати інший
потік цього ж (або іншого процесу);
процедури ядра можуть бути багато-.
НЕДОЛІКИ:
Необхідність дворазового перемикання режиму користувач ядро, ядро ​- користувач для передачі управління від одного потоку до
іншого в рамках одного і того ж процесу.
23

24.

стан потоків
1. Потік блокується,
чекаючи вхідних даних
2. ПОТОКИ.
2. Планувальник вибирає
інший потік
завершення
потоку
3. Планувальник вибирає
цей потік
4. Надійшли
вхідні дані
виконання
1
3
2
готовність
4
очікування
створення
потоку
стан потоку
24

25.

Працездатні процеси (потоки)
Вибір для
виконання
Резервний (3)
перемикання
Ініціалізація (0)
витіснення
2. ПОТОКИ.
Готовий (1)
ресурсів
достатньо
розблокування /
відновлення. ресурсів
достатньо
Що виконується (2)
Блокування /
призупинення
завершення
Очікування (5)
Транзит (6)
Завершений (4)
Розблокування. ресурсів
недостатньо
Операційні системи
Непрацездатні процеси (потоки)
25

26.

потік
Тип об'єкта
клієнтський ідентифікатор
контекст потоку
2. ПОТОКИ.
Атрибути тіла
об'єкта
сервіси
базовий пріоритет
динамічний пріоритет
Процесорний спорідненість потоку
Час виконання потоку
стан тривоги
Лічильник припинень
маркер імперсонації
порти завершення
код завершення
створити потік
відкрити потік
Запросити інформацію потоку
Встановити інформацію потоку
Поточний потік
завершити потік
запросити контекст
встановити контекст
призупинити
відновити виконання
тривога потоку
Перевірити стан тривоги потоку
Зареєструвати порт завершення
Об'єкт - потік
26

27.

Атрибути об'єкта-потоку
2. ПОТОКИ.
Атрибут
призначення
ідентифікатор клієнта
Унікальне значення, яке ідентифікує потік при виклику їм
сервера
контекст потоку
Набір значень регістрів і інших
визначають стан виконання потоку
непостійних
даних,
що
базовий пріоритет
Нижня межа динамічного пріоритету потоку
динамічний пріоритет
Пріоритет потоку на даний момент
Процесорний спорідненістьНабір процесорів, на яких може виконуватися потік, (неповне)
потоку
підмножина процесорного спорідненості процесу потоку
Час виконання потоку
статус оповіщення
Лічильник припинень
маркер імперсонації
порт завершення
Загальний час виконання потоку в призначеному для
користувача режимі і режимі ядра
Прапор, який вказує на необхідність відпрацювання потоком
асинхронного виклику процедури (АРС)
Кількість припинень виконання потоку без подальшого
відновлення
Тимчасовий маркер доступу, що дозволяє потоку виконувати дії
від імені іншого процесу (використовується підсистемами)
Канал комунікації між процесами, в який диспетчер процесів
посилає
повідомлення
при
завершенні
потоку
(використовується підсистемами)
Код завершення потоку Причина завершення потоку
27

28.

2. ПОТОКИ.
15
14
13
12
11
10
пріоритет 9
8
7
6
5
4
3
2
1
0
управляється
Динамічний
пріоритет
потоку
Базовий
пріоритет
процесу
додатком
Базовий
пріоритет
потоку
додатком
Виконавчою
системою ОС
пріоритети потоків
28

29.

створення потоку
Потрібно інформація:
1. Розмір стека потоку
2. Атрибути захисту потоку
2. ПОТОКИ.
3. Адреса процедури, з якої починається виконання
4. Додаткове 32-розрядне значення
5. Прапори
6. Адреса для зберігання ідентифікатора потоку
HANDLE CreateThread (LPSECURITY_ATTRIBUTES
lpThreadAttributes, DWORD dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress, LPVOID
lpParameter, DWORD dwCreationFlags, LPDWORD
lpThreadld);
29

30.

завершення потоку
2. ПОТОКИ.
функція ExitThread() використовується для нормального
завершення потоку.
VOID ExitThread (DWORD dwExitCode);
функцію TerminateThread() слід викликати тільки в крайніх
випадках, коли потік завис, і ні на які дії користувача не
реагує
BOOL TerminateThread (HANDLE hThread, DWORD
dwExitCode);
30

31.

2. ПОТОКИ.
- спрощений потік, виконання
якого планується в додатку вручну
Для створення волокон в додатку застосовується функція
LPVOID CreateFiber (DWORD dwStackSize,
LPFIBER_START_ROUTINE lpStartAdress, LPVOID
lpParameter)
функція
волокна
VOID WINAPI FiberFunc (PVOID lpParameter)
перемикання між волокнами здійснюється:
VOID SwitchToFiber (LPVOID lpFiber)
Для очищення даних волокна і його видаленні
використовують:
VOID DeleteFiber (LPVOID lpFiber)
31

32.

33.

3. ПЛАНУВАННЯ ПРОЦЕСІВ І ПОТОКІВ
Процес не може сам перейти з одного стану в інший
пари операцій з потоками:
створення процесу
завершення процесу
призупинення процесу
запуск процесу
блокування процесу
розблокування процесу
Мультипрограмування,
або
багатозадачність
(multitasking) - це спосіб організації обчислювального
процесу, при якому на одному процесорі поперемінно
виконуються відразу кілька програм.
планування - забезпечення почергового доступу процесів
до одного процесора
планувальник (scheduler) - відповідає за планування
частина операційної системи
33

34.

3. ПЛАНУВАННЯ ПРОЦЕСІВ І ПОТОКІВ
витісняє
багатозадачність
Чи не витісняє
багатозадачність
по використовуваних
параметрах
планування
довгострокове
планування
короткострокове
планування
по області
застосування
Системи
пакетної
обробки
за змістом
Першим прийшов
- першим
обслужений
Найкоротша
задача - перша
Найменша
залишився
виконання
Алгоритми
трехуровнего
планування
Системи
поділу часу
циклічне
планування
пріоритетне
планування
Поділу процесів
на групи
Системи
реального
часу
Статичний
алгоритм
планування
Динамічний
алгоритм
планування
гарантоване
планування
алгоритми планування
за типом реалізації
багатозадачності
лотерейне
планування
справедливе
планування
Класифікація алгоритмів планування
34

35.

СХЕМА ПЛАНУВАННЯ З УРАХУВАННЯМ ЧЕРГ ЗАВДАНЬ (ПОТОКОВ)
довгострокове планування
новий
виклик ОС
диспетчеризація
(Короткострокове планування)
готовий /
призупинено-ний
Активація
Готовий
в ОП
Завершующійся
Що виконується в
ОП
звільнення
Диск
призупинення
Тайм-аут (таймер)
середньостроко
ве планування
наступ події
наступ події
Активація
блокований /
призупинений
Диск
Очікування події
(переривання введеннявиведення,
повідомлення)
блокований в ОП
призупинення
З в про п і н г
35

36.

довгострокове
планування
Тайм-аут
черга готових
завдань
ОП
Інтерактивні
користувачі
пакетні
завдання
ЦП
вихід
Черга готових призупинених
завдань
Диск
середньостроков
е планування
Черга заблокованих
припинених завдань
середньострокове
планування
Диск
черга
заблокованих завдань
подія
очікування події
ОП
36

37.

38.

Системні пріоритети
30
Черги системних
потоків і потоків
псевдореальності
часу
найвищий
16 Щонайнижчий
15
найвищий
Пользоват. пріоритети
4. СИСТЕМА ПРІОРИТЕТІВ
31
8
7
6
базовий пріоритет
найвищий
підвищений
звичайний
знижений
Щонайнижчий
П
Р
О
Ц
Е
С
С
О
Р
Щонайнижчий
0
-1
Потік обнулення сторінок
порожній потік
система пріоритетів
38

39.

High
Рівні
запитів
переривань
пристроїв
(DIRQL)
Power
IPI
Clock
підвищені
IRQL
Profile
RealtimeTime-Critical
31
4. СИСТЕМА ПРІОРИТЕТІВ
Device
...
Realtime
Device
DISPATCH_LEVEL
APC_LEVEL
програмні
переривання
Пріоритети
реального
часу
24
PASSIVE_LEVEL
Планувальник
(scheduler)
Realtime Idle
Dynamic Time - Critical
16
High
15
ABOVE
NORMAL
13
Normal
10
8
BELOW динамічні
NORMAL пріоритети
Idle
6
4
Dynamic Idle
System Idle (потік обнулення сторінок)
1
0
система пріоритетів
39

40.

ЗМІНА БАЗОВОГО ПРІОРИТЕТУ ПОТОКУ
збільшення пріоритету
4. СИСТЕМА ПРІОРИТЕТІВ
+ 1 - завершення введення-виведення по диску;
+2 - для послідовної лінії;
+ 6 - клавіатура;
+ 8 - звукова карта;
+ 2 - знімається блокування по семафора (для потоку переднього плану);
+ 1 - знімається блокування по семафора (для потоку непереднего плану); пріоритет
15 на 2 кванта процесора, якщо готовий до виконання потік простоює понад деякого
директивного часу.
зменшення пріоритету
- 1 - якщо повністю використаний квант часу процесора (багаторазово, аж до базового
пріоритету).
40

41.

4. СИСТЕМА ПРІОРИТЕТІВ
Нерівномірний розподіл ресурсів потокам
41

42.

4. СИСТЕМА ПРІОРИТЕТІВ
Планування розподілу ресурсів на основі циклів в ОС
42
Windows

43.

4. СИСТЕМА ПРІОРИТЕТІВ
служба Multimedia Class Scheduler Service (MMCSS) реалізована в
файлі % SystemRoot% \ System32 \ Mmcss.dll
HKEY_LOCAL_MACHINE \ Software \ Microsoft \
WindowsNT \ Currentversion \ Multimedia \ SystemProfile \
Tasks
Визначення аудіозадачі за розкладом класів мультимедіа
43

44.

№5
Доповідь закінчив.
Дякую за увагу.
Дякую за увагу!
English     Русский Правила