- •9.3. Створення процесів
- •Базові поняття процесів і потоків
- •1.1. Процеси і потоки в сучасних ос
- •1.2. Моделі процесів і потоків
- •1.3. Складові елементи процесів і потоків
- •2. Багатопотоковість та її реалізація
- •2.1. Поняття паралелізму
- •2.2. Види паралелізму
- •2.4. Способи реалізації моделі потоків
- •2.3. Переваги і недоліки багато потоковості
- •3. Стани процесів і потоків
- •4. Опис процесів і потоків
- •4.1. Керуючі блоки процесів і потоків
- •4.2. Образи процесу і потоку
- •5. Перемикання контексту й обробка переривань
- •5.1. Організація перемикання контексту
- •5.2. Обробка переривань
- •6. Створення і завершення процесів і потоків
- •6.1. Створення процесів
- •6.2. Ієрархія процесів
- •6.3. Керування адресним простором під час створення процесів
- •6.4. Особливості завершення процесів
- •6.5. Синхронне й асинхронне виконання процесів
- •6.6. Створення і завершення потоків
- •7. Керування процесами в unix і Linux
- •7.1. Образ процесу
- •7.2. Ідентифікаційна інформація та атрибути безпеки процесу
- •7.3. Керуючий блок процесу
- •7.5. Завершення процесу
- •7.7. Запуск програми
- •7.8. Очікування завершення процесу
- •7.9. Сигнали
- •8. Керування потоками в Linux
- •8.1. Базова підтримка багато потоковості
- •8.2. Особливості нової реалізації багато потоковості в ядрі Linux
- •8.3. Потоки ядра Linux
- •8.4. Програмний інтерфейс керування потоками posix
- •9. Керування процесами у Windows хр
- •9.1. Складові елементи процесу
- •9.2. Структури даних процесу
- •9.3. Створення процесів
- •9.4. Завершення процесів
- •9.5. Процеси і ресурси. Таблиця об’єктів процесу
- •9.6. Програмний інтерфейс керування процесами Win32 арі
- •10. Керування потоками у Windows хр
- •10.1. Складові елементи потоку
- •10.2. Структури даних потоку
- •10.3. Створення потоків
- •10.4. Особливості програмного інтерфейсу потоків
- •Висновки
- •Контрольні запитання та завдання
9. Керування процесами у Windows хр
Поняття процесу й потоку у Windows ХР чітко розмежовані. Процеси в даній системі визначають «поле діяльності» для потоків, які виконуються в їхньому адресному просторі. Серед ресурсів, з якими процес може працювати прямо, відсутній процесор — він доступний тільки потокам цього процесу. Процес, проте, може задати початкові характеристики для своїх потоків і тим самим вплинути на їхнє виконання.
9.1. Складові елементи процесу
Розглянемо базові складові елементи процесу.
♦ Адресний простір процесу складається з набору адрес віртуальної пам’яті, які він може використати. Ці адреси можуть бути пов’язані з оперативною пам'яттю, а можуть — з відображеними у пам’ять ресурсами. Адресний простір процесу недоступний іншим процесам.
♦ Процес володіє системними ресурсами, такими як файли, мережні з’єднання, пристрої введення-виведення, об’єкти синхронізації тощо.
♦ Процес містить деяку стартову інформацію для потоків, які в ньому створюватимуться. Наприклад, це інформація про базовий пріоритет і прив’язання до процесора.
♦ Процес має містити хоча б один потік, який система скеровує на виконання. Без потоків у Windows ХР наявність процесів неможлива
9.2. Структури даних процесу
Розглянемо структури даних, пов’язані із процесом у Windows ХР. Зазначимо, що у роботі з цими структурами система використовує об’єктну модель. Для виконавчої системи Windows ХР кожний процес зображається об’єктом-процесом виконавчої системи (executive process object); його також називають керуючим блоком процесу (executive process block, EPROCESS). Для ядра системи процес зображається об’єктом-процесом ядра (kernel process object), його також називають блоком процесу ядра (process kernel block, KPROCESS).
У режимі користувача доступним є блок оточення процесу (process environment block, РЕВ), що перебуває в адресному просторі цього процесу.
Розглянемо структури даних процесу докладніше. Зазначимо, що EPROCESS і KPROCESS, на відміну від РЕВ, доступні тільки із привілейованого режиму.
Керуючий блок процесу містить такі основні елементи:
♦ блок процесу ядра (KPROCESS);
♦ ідентифікаційну інформацію;
♦ інформацію про адресний простір процесу (її структуру розглянемо пізніш);
♦ інформацію про ресурси, доступні процесу, та обмеження на використання цих ресурсів;
♦ блок оточення процесу (РЕВ);
♦ інформацію для підсистеми безпеки.
До ідентифікаційної інформації належать:
♦ ідентифікатор процесу (pid);
♦ ідентифікатор процесу, що створив цей процес (незважаючи на те, що Windows ХР не підтримує відносини «предок -нащадок» автоматично, вони можуть бути задані програмним шляхом, тобто нащадок може сам призначити собі предка, задавши цей ідентифікатор);
♦ ім’я завантаженого програмного файлу.
Блок процесу ядра містить усю інформацію, що належить до потоків цього процесу:
♦ покажчик на ланцюжок блоків потоків ядра, де кожний блок відповідає потоку;
♦ базову інформацію, необхідну ядру системи для планування потоків (ця інформація буде успадкована потоками, пов’язаними із цим процесом; її буде розглянуто пізніше).
Блок оточення процесу містить інформацію про процес, яка призначена для доступу з режиму користувача:
♦ початкову адресу ділянки пам’яті, куди завантажився програмний файл;
♦ покажчик на динамічну ділянку нам’яті, доступну процесу.
Цю інформацію може використати завантажувач програм або процес підсистеми Win32.
