Professional Documents
Culture Documents
4 Keruvannya Procesamy Ta Potokamy
4 Keruvannya Procesamy Ta Potokamy
Керування процесами та
потоками.
Лекція 4. Керування процесами та
потоками.
План лекції.
1. Архітектура процесора.
2. Поняття процесу. Контекст процесу.
3. Стани процесу. Переходи між станами.
4. Створення та завершення процесів.
5. Поняття потоку.
6. Алгоритми планування процесів.
7. Планування процесів у UNIX.
8. Планування процесів у Windows.
1. Архітектура процесора
(загальна схема)
шина даних
шина адреси
Архітектура процесора (складові)
Найпростіший процесор складається з наступних елементів:
арифметико-логічний пристрій (ALU):
здійснює виконання команд;
блок управління:
визначає тип операції та кількість операндів;
декодує адреси для ALU;
шина адреси
на цій шині встановлюється розрахована блоком управління адреса даних, котрі мають бути зчитані з
зовнішньої пам’яті.
шина даних
контролер пам’яті зчитує адресу з шини адреси та розміщує одержані за цією адресою на шині даних
шина управління
після розміщення даних на шині даних контролер встановлює сигнал готовності на шині управління.
Процесор перевіряє наявність цього сигналу і, якщо сигнал встановлено, зчитує дані для опрацювання.
регістри – ділянки високошвидкісної пам’яті для зберігання даних в процесорі:
регістри загального призначення
регістри стану та управління
індексні регістри
сегментні регістри
Важливі регістри:
лічильник команд (instruction pointer) – містить адресу комірки пам’яті з наступною командою, котра
має виконуватись.
вказівник стеку (stack pointer) – вказує на вершину поточного стеку в пам’яті. Стек містить вхідні
параметри для процедур, а також інші локальні змінні, які не містяться у регістрах.
слово стану програми (Program Status Word, PSW) – в цьому регістрі містяться біти управління
пріоритетом процесора, режимом (користувацький чи ядра) та інші службові біти. Зазвичай,
програми режиму користувача можуть зчитувати весь регістр PSW, але записувати можуть тільки в
деякі з його полів.
таймер:
виробляє тактові імпульси для роботи процесора та синхронізації цієї роботи з роботою інших пристроїв
– від таймера залежить тактова частота процесора (ГГц).
Цикл виконання команди процесором.
Є три основні операції, котрі виконує процесор:
1. Вибірка команди – блок управління вибирає команди, копіює їх з пам’яті в
чергу команд та збільшує на одиницю програмний лічильник.
Кількість стадій конвеєра - число елементарних задач на які розбивається виконання команди.
Позначення у таблиці стадій конвеєра:
IF (Instruction
(Instruction Fetch) -
Fetch) - одержання команди,
ID (Instruction Decode) - декодування команди,
EX (Execute) - виконання,
MEM (Memory
(Memory access) -
access) - доступ до пам’
пам’яті,
яті,
WB (Register write back) - запис в регістр.
В кожен момент часу одна команда знаходиться на стадії виконання, тоді як інша – тільки одержання.
Складністю у використанні конвеєрної моделі є виконання програм з розгалуженнями: як тільки зустрінеться
команда розгалуження весь конвеєр має зупинитися поки ця команда не виконається і не буде відома наступна команда.
Для таких випадків з метою підвищення ефективності роботи процесора використовують алгоритми
динамічного виконання команд: 1) прогнозування розгалужень (branch
(branch prediction)
prediction); 2) аналіз потоку команд (out-of-
order execution); 3) попереднє виконання (data forwarding).
Суперскалярна модель роботи процесора.
Суперскалярний процесор має декілька виконавчих блоків:
1) для цілочисельної арифметики
2) для арифметики з плаваючою крапкою
3) для логічних операцій.
Виконавчий
блок
Блок Блок
вибірки декодування
Буфер
Виконавчий
команд
блок
Блок Блок
вибірки декодування Виконавчий
блок
2. Поняття процесу.
Контекст процесу.
Процес – програма в режимі виконання.
З кожним процесом пов’язаний адресний простір, котрий містить
• код програми
• дані до програми
• стек програми
Процес
Процес Процес Процес Процес Процесор
4 3 2 1
5
черга
+ 1) легкість реалізації;
+ 1) легкість реалізації;
2) справедливість (всі потоки рівні).
- 1) потрібно ретельно підбирати довжину кванту, оскільки для короткого кванту буде багато
часу витрачатись на перемикання, для довгого – окремий користувач, який останнім
запустив процес, може досить довго чекати своєї черги.
Планування з пріоритетами
Суть: кожному потоку ставиться у відповідність пріоритет. На виконання
ставиться потік із найвищим пріоритетом із черги готових потоків.
Пріоритети можуть надаватись статично або динамічно.
Процесор
найвищий Процес Процес Процес Процес Процес
пріоритет 5 3 8 2 1
пріоритет 1 Процес
15
Процес
12
Процес
10
Процес
7
пріоритет 2 Процес
17
Процес
16
Процес
14
Процес
11
Довжина кванта
пріоритет
ПОТІК 1 ПОТІК i
PID нащадка
Статична частина контексту процесу:
fork() • ідентифікатор процесу (PID)
0
• ідентифікатор батьківського процесу (PPID)
виконувана програма, ПРОЦЕС дані з областей
відкриті файли і т.д. PID 28 пам”яті процесу
• стан процесу
• ідентифікатори користувача (для
визначення меж доступу процесу)
дії...
дії... • пріоритет процесу (змінюється динамічно
за допомогою системного виклику nice)
Планування процесів здійснюється на основі схеми • таблиця дескрипторів відкритих файлів
з кільцевою чергою та пріоритетами. На основі
значення пріоритету визначаються можливість
процесу перебувати в оперативній пам’яті і Динамічна частина контексту процесу – стеки,
конкурувати за процесор, квант часу для що використовуються процесом при
роботи з процесором, місце в загальній черзі. виконанні в режимі ядра і в режимі
користувача
Планування процесів у Linux.
Процеси в системі:
реального часу із плануванням за принципом FIFO
реального часу із круговим плануванням
звичайні
Присвоєння пріоритету
реального часу (real-time, 24)
присвоєння класу
високий (high, 13)
ПРОЦЕС
нормальний (normal,
(normal, 8)
невикористовуваний (idle, 4)
найвищий (+2)
вище за нормальний (+1)
потік 1 потік n
… нормальний (+0)
відносні пріоритети нижче за нормальний (-1)
найнижчий (-2)
Планування процесів у Windows.
Новий потік для виконання вибирається коли:
минув квант часу для потоку
потік перейшов у стан очікування події
потік перейшов у стан готовності до виконання