СП лекция-04ua

Содержание

Слайд 2

Тема лекції: Процеси та потоки

Л е к ц і я № 4 по курсу

Тема лекції: Процеси та потоки Л е к ц і я №
"Системне програмування "

Змістовний модуль № 1: Системне програмування в Wındows

05.09.2021

Лектор:
Доцент кафедри Інформаційних систем
кандидат технічних наук, доцент
Голубничий Дмитро Юрійович

Слайд 3

НАВЧАЛЬНІ ПИТАННЯ:

НАВЧАЛЬНІ ПИТАННЯ:

Слайд 4

1. Процеси

1. Процеси

Слайд 5

ресурси системи

Керуючі таблиці ОС

образ процесу

процес 1

процес N

пам'ять

пристрої

файли

процеси

процес 1

процес 3

процес 2

процес N

процесор

Первинні таблиці

ресурси системи Керуючі таблиці ОС образ процесу процес 1 процес N пам'ять
процесів

таблиці пам'яті

Таблиця введення-виведення

таблиці файлів

Концепція процесів і потоків

Слайд 6

1. ПРОЦЕСИ.

Поля таблиці процесів

1. ПРОЦЕСИ. Поля таблиці процесів

Слайд 7

Взаємозв'язок між завданнями, процесами і потоками

процеси

T

T

P

T

завдання

Стек в режимі користувача

потоки

Таблиця процесу

Таблиця процесу

маркери доступу

Стеки

Взаємозв'язок між завданнями, процесами і потоками процеси T T P T завдання
потоків в режимі ядра

T

P

Слайд 8

1. ПРОЦЕСИ.

1. ПРОЦЕСИ.

Слайд 9

Завдання, процеси, потоки (нитки), волокна

завдання (JOB)

об'єкти

процес 2

процес N

процес 1
потік 2
Thread 2

потік k
Thread

Завдання, процеси, потоки (нитки), волокна завдання (JOB) об'єкти процес 2 процес N
k

потік 1
Thread 1

волокна (Fibers)

Слайд 10

1. ПРОЦЕСИ.

процес (process) - абстракція, що описує поточну програму

процес (process) -

1. ПРОЦЕСИ. процес (process) - абстракція, що описує поточну програму процес (process)
це програма та системні ресурси, необхідні для її роботи.

процес - програма, яка перебуває в режимі виконання

процес в Win32, Win64 - це об'єкт, який не виконується, а просто "володіє" виділеним йому адресним простором, іншими словами процес є структурою в пам'яті.

У виконавчій системі процеси - це об'єкти, що створюються і знищуються диспетчером об'єктів

Слайд 11

1. ПРОЦЕСИ.

Об'єкт - процес

1. ПРОЦЕСИ. Об'єкт - процес

Слайд 12

1. ПРОЦЕСИ.

Атрибути об'єкта - процесу

1. ПРОЦЕСИ. Атрибути об'єкта - процесу

Слайд 13

1. ПРОЦЕСИ.

сервіси процесів

1. ПРОЦЕСИ. сервіси процесів

Слайд 14

1. ПРОЦЕСИ.

створення процесів

Створити процес - це перш за все означає створити

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);

Слайд 15

1. ПРОЦЕСИ.

Порядок пошуку файлу виконуваної програми

1. В каталозі, в який завантажено

1. ПРОЦЕСИ. Порядок пошуку файлу виконуваної програми 1. В каталозі, в який
додаток

2. У поточному каталозі

3. У системному каталозі Windows (% SystemRoot% \)

4. У каталозі Windows, Який повертає функція GetWindowDirectory()

5. У каталогах, перерахованих у змінній середовища PATH, Яка визначає порядок пошуку в них

немає

немає

немає

немає

Слайд 16

1. ПРОЦЕСИ.

завершення процесу

події,
призводять до завершення процесів

Планове завершення (закінчення виконання)

1. ПРОЦЕСИ. завершення процесу події, призводять до завершення процесів Планове завершення (закінчення

Плановий вихід з відомої помилку (наприклад, відсутність файлу)

Вихід з непоправною помилку (помилка в програмі)

Знищення іншим процесом

функція ExitProcess() завершує процес і все його потоки і повертає звичайний код завершення.

функція TerminateProcess()є аварійним засобом завершення процесу. викликається ззовні (!).

BOOL TerminateProcess (HANDLE hProcess, UINT uExitCode);

VOID ExitProcess (UINT uExitCode);

Слайд 17

1. ПРОЦЕСИ.

Найпростіша модель процесу

диспетчеризація

пауза

Не виконується

виконується

Вхід

вихід

CPU

Вхід

вихід

черга

пауза

диспетчеризація

CPU

Граф станів і переходів

tкв

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

Слайд 18

1. ПРОЦЕСИ.

новий

Готовий до виконання

Виконую-щійся

Вхід

в систему

очікування

Завершую-щійся

Освобо-дження

події

Блокірова-ний

CPU

надходження процесу

Черга готових процесів

Тайм - аут ( tКВ

1. ПРОЦЕСИ. новий Готовий до виконання Виконую-щійся Вхід в систему очікування Завершую-щійся
)

очікування події

Слайд 19

2. Потоки

2. Потоки

Слайд 20

2. ПОТОКИ.

потік (Thread) - це незалежний шлях виконання всередині процесу, що

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

Порівняння багатопотокової системи з однопоточному

Переваги використання потоків:

1. Спрощення програми

2. Швидкість створення потоку

3. Підвищення продуктивності

Слайд 21

2. ПОТОКИ.

2. ПОТОКИ.

Слайд 22

2. ПОТОКИ.

ПОТІК НА РІВНІ КОРИСТУВАЧА

ПЕРЕВАГИ:

можна реалізувати в ОС, що не

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

НЕДОЛІКИ:

системний виклик блокує не тільки працює потік, але і всі потоки того процесу, до якого він відноситься;
додаток не може працювати в многопроцессорном режимі, так як ядро ​​закріплює за кожним процесом тільки один процесор;
при запуску одного потоку жоден інший потік а рамках одного процесу не буде запущений поки перший добровільно не віддасть процесор;
всередині одного потоку немає переривань за таймером, в результаті чого неможливо створити планувальник за таймером для почергового виконання потоків.

Слайд 23

2. ПОТОКИ.

ПОТІК НА РІВНІ ЯДРА
ПЕРЕВАГИ:
можливо планування роботи декількох потоків одного і

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

Слайд 24

2. ПОТОКИ.

2. ПОТОКИ.

Слайд 25

Операційні системи

Резервний (3)

Що виконується (2)

Готовий (1)

Очікування (5)

Транзит (6)

Завершений (4)

перемикання

витіснення

Блокування / призупинення

розблокування /

Операційні системи Резервний (3) Що виконується (2) Готовий (1) Очікування (5) Транзит
відновлення. ресурсів достатньо

Розблокування. ресурсів недостатньо

ресурсів достатньо

Вибір для виконання

завершення

Працездатні процеси (потоки)

Непрацездатні процеси (потоки)

Ініціалізація (0)

2. ПОТОКИ.

Слайд 26

2. ПОТОКИ.

2. ПОТОКИ.

Слайд 27

2. ПОТОКИ.

Атрибути об'єкта-потоку

2. ПОТОКИ. Атрибути об'єкта-потоку

Слайд 28

2. ПОТОКИ.

2. ПОТОКИ.

Слайд 29

2. ПОТОКИ.

створення потоку

Потрібно інформація:

1. Розмір стека потоку

2. Атрибути захисту

2. ПОТОКИ. створення потоку Потрібно інформація: 1. Розмір стека потоку 2. Атрибути
потоку

3. Адреса процедури, з якої починається виконання

4. Додаткове 32-розрядне значення

5. Прапори

6. Адреса для зберігання ідентифікатора потоку

HANDLE CreateThread (LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadld);

Слайд 30

2. ПОТОКИ.

завершення потоку

функція ExitThread() використовується для нормального завершення потоку.

VOID

2. ПОТОКИ. завершення потоку функція ExitThread() використовується для нормального завершення потоку. VOID
ExitThread (DWORD dwExitCode);

функцію TerminateThread() слід викликати тільки в крайніх випадках, коли потік завис, і ні на які дії користувача не реагує

BOOL TerminateThread (HANDLE hThread, DWORD dwExitCode);

Слайд 31

2. ПОТОКИ.

ВОЛОКНО

- спрощений потік, виконання якого планується в додатку вручну

2. ПОТОКИ. ВОЛОКНО - спрощений потік, виконання якого планується в додатку вручну

Для створення волокон в додатку застосовується функція

LPVOID CreateFiber (DWORD dwStackSize, LPFIBER_START_ROUTINE lpStartAdress, LPVOID lpParameter)

VOID WINAPI FiberFunc (PVOID lpParameter)

функція волокна

перемикання між волокнами здійснюється:

VOID SwitchToFiber (LPVOID lpFiber)

Для очищення даних волокна і його видаленні використовують:

VOID DeleteFiber (LPVOID lpFiber)

Слайд 32

3. Планування процесів і потоків

3. Планування процесів і потоків

Слайд 33

3. ПЛАНУВАННЯ ПРОЦЕСІВ І ПОТОКІВ

Процес не може сам перейти з одного

3. ПЛАНУВАННЯ ПРОЦЕСІВ І ПОТОКІВ Процес не може сам перейти з одного
стану в інший

пари операцій з потоками:

створення процесу

завершення процесу

призупинення процесу

запуск процесу

блокування процесу

розблокування процесу

Мультипрограмування, або багатозадачність (multitasking) - це спосіб організації обчислювального процесу, при якому на одному процесорі поперемінно виконуються відразу кілька програм.

планування - забезпечення почергового доступу процесів до одного процесора

планувальник (scheduler) - відповідає за планування частина операційної системи

Слайд 34

3. ПЛАНУВАННЯ ПРОЦЕСІВ І ПОТОКІВ

3. ПЛАНУВАННЯ ПРОЦЕСІВ І ПОТОКІВ

Слайд 35

СХЕМА ПЛАНУВАННЯ З УРАХУВАННЯМ ЧЕРГ ЗАВДАНЬ (ПОТОКОВ)

новий

готовий / призупинено-ний

Готовий в ОП

Що виконується

СХЕМА ПЛАНУВАННЯ З УРАХУВАННЯМ ЧЕРГ ЗАВДАНЬ (ПОТОКОВ) новий готовий / призупинено-ний Готовий
в ОП

Завершую-щійся

довгострокове планування

виклик ОС

Активація

призупинення

призупинення

Активація

середньострокове планування

звільнення

Очікування події (переривання введення-виведення, повідомлення)

диспетчеризація (Короткострокове планування)

Тайм-аут (таймер)

блокований / призупинений

Диск

Диск

блокований в ОП

наступ події

З в про п і н г

наступ події

Слайд 37

4. Система пріоритетів

4. Система пріоритетів

Слайд 38

система пріоритетів

4. СИСТЕМА ПРІОРИТЕТІВ

система пріоритетів 4. СИСТЕМА ПРІОРИТЕТІВ

Слайд 39

4. СИСТЕМА ПРІОРИТЕТІВ

4. СИСТЕМА ПРІОРИТЕТІВ

Слайд 40

4. СИСТЕМА ПРІОРИТЕТІВ

ЗМІНА БАЗОВОГО ПРІОРИТЕТУ ПОТОКУ
збільшення пріоритету
+ 1 - завершення

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

Слайд 41

Нерівномірний розподіл ресурсів потокам

4. СИСТЕМА ПРІОРИТЕТІВ

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

Слайд 42

4. СИСТЕМА ПРІОРИТЕТІВ

Планування розподілу ресурсів на основі циклів в ОС Windows

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

Слайд 43

4. СИСТЕМА ПРІОРИТЕТІВ

Визначення аудіозадачі за розкладом класів мультимедіа

HKEY_LOCAL_MACHINE \ Software

4. СИСТЕМА ПРІОРИТЕТІВ Визначення аудіозадачі за розкладом класів мультимедіа HKEY_LOCAL_MACHINE \ Software
\ Microsoft \ WindowsNT \ Currentversion \ Multimedia \ SystemProfile \ Tasks

служба Multimedia Class Scheduler Service (MMCSS) реалізована в файлі % SystemRoot% \ System32 \ Mmcss.dll

Имя файла: СП-лекция-04ua.pptx
Количество просмотров: 44
Количество скачиваний: 0