Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_Р2.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
1.63 Mб
Скачать

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

♦ стартову адресу потоку, з якої почнеться виконання його коду;

♦ інформацію для підсистеми безпеки.

Блок потоку ядра, у свою чергу, містить інформацію, необхідну ядру для організації планування і синхронізації потоків, зокрема:

♦ покажчик на стек ядра;

♦ інформацію для планувальника;

♦ інформацію, необхідну для синхронізації цього потоку;

♦ покажчик на блок оточення потоку.

Блок оточення потоку містить інформацію про потік, доступну для застосу-зань режиму користувача. До неї належать:

♦ ідентифікатор потоку;

♦ покажчик на стек режиму користувача;

♦ покажчик на блок оточення процесу, до якого належить потік;

♦ покажчик на локальну пам'ять потоку.