- •Моделі процесів і потоків
- •Складові елементи процесів і потоків
- •2. Багатопотоковість та її реалізація
- •Поняття паралелізму
- •Види паралелізму.
- •Переваги і недоліки багато потоковості
- •Способи реалізації моделі потоків
- •2.2.1 Стани процесів і потоків
- •Опис процесів і потоків
- •Керуючі блоки процесів і потоків
- •Образи процесу і потоку
- •2.5. Перемикання контексту й обробка переривань
- •2.5.1. Організація перемикання контексту
- •2.5.2. Обробка переривань.
- •2.6. Створення і завершення процесів і потоків
- •2.6.1. Створення процесів Базові принципи створення процесів
- •Ієрархія процесів
- •2.6.3. Керування адресним простором під час створення процесів
- •Особливості завершення процесів
- •Синхронне й асинхронне виконання процесів
- •2.6.6. Створення і завершення потоків Особливості створення потоків.
- •2.9. Керування процесами у Windows хр
- •2.9.1Складові елементи процесу
- •Структури даних процесу
- •3.9.3. Створення процесів
- •3.9.4. Завершення процесів
- •Процеси і ресурси. Таблиця об'єктів процесу
- •3.9.6. Програмний інтерфейс керування процесами Win32 арі
- •Керування потоками у Windows хр
- •3.10.1. Складові елементи потоку
- •Структури даних потоку
- •Створення потоків
- •3.10.4. Особливості програмного інтерфейсу потоків
3.9.3. Створення процесів
У Win32 АРІ прийнято модель запуску застосування за допомогою одного виклику, який створює адресний простір процесу і завантажує в нього виконуваний файл. Окремо функціональність forkO і ехесО у цьому АРІ не реалізована.
Такий виклик реалізує функція CreateProcess(). Вона не є системним викликом ОС - це бібліотечна функція Win32 АРІ, реалізована в усіх Win32-сумісних системах.
Функція CreateProcessO потребує завдання 10 параметрів. Зазначимо, що системні виклики UNIX/POSIX потребують меншої кількості параметрів (як уже зазначалося, fork () не використовує жодного параметра, a exec ( ) — використовує три параметри).
Наведемо основні кроки створення нового процесу із використанням функції CreateProcess ( ).
1. Відкривають виконуваний файл, що його ім'я задане як параметр. При цьому ОС визначає, до якої підсистеми середовища він належить. Коли це виконуваний файл Win32, то його використовують прямо, для інших підсистем відшукують необхідний файл підтримки (наприклад, процес підсистеми POSIX для POSIX-застосувань).
2. Створюють об'єкт-процес у виконавчій системі Windows ХР. При цьому виконують такі дії:
а) створюють та ініціалізують структури даних процесу (блоки EPROCESS, KPROCESS, РЕВ);
б) створюють початковий адресний простір процесу (роботу з адресним простором процесу розглянемо в розділі 9);
в) блок процесу поміщають у кінець списку активних процесів, які підтримує система.
Створюють початковий потік процесу.
Після створення початкового потоку підсистемі Win32 повідомляють про новий процес і його початковий потік. Це повідомлення містить їхні дескриптори (handles) — унікальні числові значення, що ідентифікують процес і потік для засобів режиму користувача. Підсистема Win32 виконує низку дій після отримання цього повідомлення (наприклад, задає пріоритет за замовчуванням) і поміщає дескриптори у свої власні таблиці процесів і потоків.
Після надсилання повідомлення розпочинають виконання початкового потоку (якщо він не був заданий із прапорцем відкладеного виконання).
Завершують ініціалізацію адресного простору процесу (наприклад, завантажують необхідні динамічні бібліотеки), після чого починають виконання завантаженого програмного коду.
3.9.4. Завершення процесів
У разі завершення процесу відповідний об'єкт-процес стає кандидатом на вилучення із системи. При цьому диспетчер об'єктів викликає метод delete для об'єктів-процесів, який закриває всі дескриптори в таблиці об'єктів цього процесу.
Процеси і ресурси. Таблиця об'єктів процесу
Кожен процес, може користуватися ресурсами через дескриптори відповідних об'єктів. Відкриті дескриптори об'єктів є індексами в таблиці об'єктів (object table), що зберігається в керуючому блоці процесу. Ця таблиця містить покажчики на всі об'єкти, дескриптори яких відкриті процесом. Процес може отримати дескриптор об'єкта кількома способами:
створивши новий об'єкт;
відкривши дескриптор наявного об'єкта;
успадкувавши дескриптор від іншого процесу;
отримавши дублікат дескриптора з іншого процесу.
Кожен елемент таблиці об'єктів містить права доступу відповідного дескриптора і його режим спадкування, який визначає, чи отримають процеси, створені розглядуваним процесом, копію дескриптора відповідного об'єкта. Режим спадкування задають під час створення об'єкта.
Об'єкт може одночасно бути використаний декількома процесами, при цьому кожен з них отримує унікальний дескриптор, що відповідає цьому об'єкту.