- •Тема 2.1 Базові поняття процесів і потоків
- •2.1.1 Процеси і потоки в сучасних ос
- •Моделі процесів і потоків
- •2.1.3 Складові елементи процесів і потоків
- •Тема 2.2 Багатопотоковість та її реалізація
- •2.2.1 Поняття паралелізму
- •Види паралелізму
- •Переваги і недоліки багато потоковості
- •2.2.4 Способи реалізації моделі потоків
- •2.3 Тема Стани процесів
- •2.3.1 Стан процесу
- •2.3.2 Двох -станова модель процесу
- •2.3.3 Пяти-станова модель процесу
- •2.3.4 Процес та його життєвий цикл
- •2.4.1 Керуючі блоки процесів і потоків
- •2.4.2 Образи процесу і потоку.
- •2.5 Тема Перемикання контексту й обробка переривань
- •2.5.1Організація перемикання контексту
- •2.5.2 Обробка переривань
- •2.6 Тема Створення і завершення процесів і потоків
- •2.6.1 Створення процесів
- •2.6.2 Ієрархія процесів
- •2.6.3 Керування адресним простором під час створення процесів
- •2.6.4 Особливості завершення процесів
- •2.6.5 Створення і завершення потоків
- •2.7 Тема Мультипроцесування
- •2.7.1 Підходи реалізації мультипроцесування.
- •7.2.2 Види комп’ютерних систем з використанням декількох центральних процесорів
- •2.8 Тема Види міжпроцесової взаємодії
- •2.8.1.Проблеми міжпроцесової взаємодії
- •2.8.2 Види міжпроцесової взаємодії.
- •2.8.3 Особливості міжпроцесової взаємодії.
- •2.9 Тема Базові механізми міжпроцесової взаємодії
- •2.9.1 Міжпроцесова взаємодія на базі спільної пам'яті.
- •2.9.2 Основи передавання повідомлень.
- •2.10 Тема Керування процесами у Windows xp
- •2.10.1 Складові елементи процесу
- •2.10.2 Структури даних процесу
- •2.10.3 Створення процесів
- •2.10.4.Завершення процесів
- •2.10.5 Програмний інтерфейс керування процесами Win32 арі
- •2.11 Тема Керування потоками у Windows xp
- •2.11.1 Складові елементи потоку
- •2.11.2 Структури даних потоку
- •2.11.3 Створення потоків
- •2.11.4 Особливості програмного інтерфейсу потоків
- •2.11.5 Завершення потоків у Win32 api
- •2.12 Тема Керування процесами та потоками в unix і Linux
- •2.12.1 Керування процесами в unix і Linux
- •Керування потоками в Linux
2.11 Тема Керування потоками у Windows xp
Самостійна робота №12
План
1. Складові елементи потоку.
2. Структури даних потоку.
3. Створення потоків.
4. Особливості програмного інтерфейсу потоків.
5. Завершення потоків у Win32 API
Мета : Навчитися визначати складові елементи потоку, структури даних потоку. Знати процес створення потоків, завершення потоків. Вивчити програмний інтерфейс керування потоками Win32 АРІ.
Для того щоб виконувати код, у рамках процесу обов'язково необхідно створити потік. У системі Windows XP реалізована модель потоків «у чистому вигляді». Процеси і потоки є різними сутностями в системі, що перебувають у чітко визначеному взаємозв'язку один з одним; для роботи з ними використовують різні системні виклики. У Windows XP ніколи не використовували модель процесів, подібну до традиційної моделі UNIX.
Багатопотоковість Windows XP базується на схемі 1:1. Кожному потоку користувача відповідає сутність у ядрі, при цьому ядро відповідає за планування потоків. Процеси не плануються.
2.11.1 Складові елементи потоку
Потік у Windows XP складається з таких елементів:
♦ вмісту набору регістрів, який визначає стан процесора;
♦ двох стеків — один використовують для роботи в режимі користувача, інший — у режимі ядра; ці стеки розміщені в адресному просторі процесу, що створив цей потік;
♦ локальної пам'яті потоку (TLS);
♦ унікального ідентифікатора потоку (thread id, tid), який вибирають із того самого простору імен, що й ідентифікатори процесів.
Сукупність стану процесора, стеків і локальної пам'яті потоку становить контекст потоку. Кожний потік має власний контекст. Усі інші ресурси процесу (його адресний простір, відкриті файли тощо) спільно використовуються потоками.
Розрізняють два види потоків: потоки користувача і потоки ядра, які у Windows XP називають системними робочими потоками — system worker threads. Перші з них створюють у режимі користувача й тільки за необхідності перемикають у режим ядра. Інші створюють в ядрі під час його ініціалізації і виконують режимі ядра протягом усього часу їхнього існування.
2.11.2 Структури даних потоку
Відображення потоків у системі, як і відображення процесів, засноване на об'єктній моделі Windows XP. Для виконавчої системи Windows XP кожен потік відображається об'єктом-потоком виконавчої системи (executive thread object), який та-кож називають керуючим блоком потоку (executive thread block, ETHREAD). Для ядра системи потік відображається об'єктом-потоком ядра (kernel thread object), який також називають блоком потоку ядра (thread kernel block, KTHREAD).
У режимі користувача доступним є блок оточення потоку (thread environment block, TEB), який перебуває в адресному просторі процесу, що створив потік.
Неважко помітити, що кожній структурі даних потоку відповідає структура zaroix процесу (блоки EPROCESS, KPROCESS і РЕВ).
Керуючий блок потоку містить базову інформацію про потік, зокрема:
♦ блок потоку ядра;
♦ ідентифікатор процесу, до якого належить потік, і покажчик на керуючий блок цього процесу (EPROCESS);
♦ стартову адресу потоку, з якої почнеться виконання його коду;
♦ інформацію для підсистеми безпеки.
Блок потоку ядра, у свою чергу, містить інформацію, необхідну ядру для організації планування і синхронізації потоків, зокрема:
♦ покажчик на стек ядра;
♦ інформацію для планувальника;
♦ інформацію, необхідну для синхронізації цього потоку;
♦ покажчик на блок оточення потоку.
Блок оточення потоку містить інформацію про потік, доступну для застосу-зань режиму користувача. До неї належать:
♦ ідентифікатор потоку;
♦ покажчик на стек режиму користувача;
♦ покажчик на блок оточення процесу, до якого належить потік;
♦ покажчик на локальну пам'ять потоку.
