Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ОС.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
194 Кб
Скачать
☆

Внутреннее устройство потоков

Потоки называются упрощенными процессами и обеспечивает многопоточность.

На слайде 38 в левой части – элементы, присущие каждому процессу, в правой – каждому потоку.

Основные блоки описания потоков в ос Windows

На уровне исполнительной системы поток представляется блоком потока, который называется EThread. Структура блока показана на слайде 44.

Все структуры данных, на которые ссылается этот блок, существуют в системном адресном пространстве.

Временные показателя потока:

1) время создания и завершения потока;

2) идентификационные данные потока – идентификатор процесса и указатель на EProcess.

3) стартовый адрес потока – адрес в реальной ОП;

4) информация безопасности: маркер доступа и ссылка на соответствующую структуру;

5) элемент механизма LPC – идентификатор и адрес сообщения, ожидаемого потоком;

6) информация, связанная с вводом-выводом: указатель на адрес структуры, описывающей список необработанных запросов на ввод-вывод.

Существует еще блок потока ядра.

Ключевые поля блока KThread (Kernel Thread) следующие:

1) заголовок объекта диспетчера – тот заголовок, который дал потоку диспетчер;

2) время выполнения – суммарное время выполнения в режиме ядра и пользовательском режиме;

3) указатель на верхнюю и нижнюю часть стека потока ядра;

4) указатель на таблицу системных сервисов;

5) базовые текущие приоритеты потока;

6) значения кванта времени, выделяемого потоку;

7) маска привязки к выполнению на том или ином процессоре;

8) блоки ожидания – указатель на события, которые ожидаются;

9) информация об ожидании: причина ожидания и время, когда поток перешел в ожидание;

10) блок таймера – встроенный блок таймера потока.

Чтобы посмотреть блок потока, в Windows Debugger команда dt nt _ethread (kthread).

Существуют и другие блоки для описания потоков.

Взаимодействие процессов (ipc)

При взаимодействии процессов необходимо решать следующие задачи:

1) распределение ресурсов между процессами;

2) согласование действий над ресурсами;

3) передача информации от одного процесса к другому.

Передача информации для взаимодействия потоков та же, но третий пункт решается проще, т.к. потоки одного процесса находятся в общем адресном пространстве.

Взаимоисключения

Определение. Под состоянием состязания понимается ситуация, при которой конечный результат выполнения какого-либо действия над общим выделенным ресурсом зависит от того, какой процесс первым выполнит это действие.

Проблема называется синхронизация процессов по доступу к ресурсам, сложность ее в том, что эти ситуации возникают нерегулярно. Кроме того, большая зависимость от того, насколько различны скорости выполнения разных процессов, т.е. за выделенный квант времени один процесс может выполнить большую работу с ресурсами, а другой – малую, поэтому возможно изменение ресурса первым процессом, которое будет невыгодно второму процессу. Такое состояние называется гонками, а области исполнительного кода, обращающегося к одним и тем же ресурсам, называется критической секцией.