
- •Глава 3
- •Раздел 3 Управление процессами и потоками
- •3.1. Базовые понятия процессов и потоков
- •3.1.2. Модели процессов и потоков
- •3.1.3. Составные элементы процессов и потоков
- •3.2. Многопотоковость и ее реализация
- •3.2.1. Понятие параллелизма
- •3.2.2. Виды параллелизма
- •3.2.3. Преимущества и недостатки многопотоковости
- •3.2.4. Способы реализации модели потоков
- •3.2.5 Состояния процессов и потоков
- •3.3 Описание процессов и потоков
- •3.3.1. Управляющие блоки процессов и потоков
- •3.3.2. Образы процесса и потока
- •3.4. Переключение контекста и обработка прерываний
- •3.4.1. Организация переключения контекста
- •3.4.2. Обработка прерываний
- •3.5 Создание и завершение процессов и потоков
- •3.5.1 Создание процессов
- •3.5.2. Иерархия процессов
- •3.5.3. Управление адресным пространством во время создания процессов
- •3.5.4. Особенности завершения процессов
- •3.5.5. Синхронное и асинхронное выполнение процессов
- •3.5.6. Создание и завершение потоков
- •3.6 Управление потоками в Linux
- •3.6.1. Базовая поддержка многотопотоковости
- •3.6.2. Особенности новой реализации много поточности в ядре Linux
- •3.6.3. Потоки ядра Linux
- •3.7 Управление процессами в Windows хр
- •3.7.1. Составные элементы процесса
- •3.7.2. Структуры данных процесса
- •3.7.3. Создание процессов
- •3.7.4. Завершение процессов
- •3.7.5. Процессы и ресурсы. Таблица объектов процесса
- •3.8 Управление потоками в Windows хр
- •3.8.1. Составные элементы потока
- •3.8.2. Структуры данных потока
- •3.8.3. Создание потоков
3.2.5 Состояния процессов и потоков
Для потока разрешенные такие состояния:
♦ создание (new) — поток находится в процессе создания;
♦ выполнение (running) — инструкции потока выполняет процессор (в конкретный момент времени на одном процессоре только один поток);
♦ ожидание (waiting) — поток ожидает некоторого события (например, завершение операции ввода-вывода); такое состояние называют заблокированным, а поток - прекращенным;
♦ готовность (ready) — поток ожидает, что планировщик переключит процессор на него, при этом он имеет все необходимые ему ресурсы, кроме процессорного времени;
♦ завершение (terminated) — поток завершил выполнение (если при этом его ресурсы не были изъяты с системы, он переходит в дополнительное состояние - зомби).
Возможные переходы между состояниями потока изображены на рис. 3.2
Переход потоков между состояниями ожидания и готовности реализовано на основе планирования задач, или планирование потоков. Во время планирования потоков определяют, который из потоков надо восстановить после завершения операции ввода-вывода, как организовать ожидание событий в системе.
Для осуществления перехода потоков между состояниями готовности и выполнение необходимое планирование процессорного времени. На основе алгоритмов такого планирования определяют, который из готовых потоков нужно выполнять в конкретный момент, когда нужно прервать выполнение потока, чтобы переключиться на другой готовый поток и т.п..
Относительно систем, которые реализуют модель процессов, принято говорить о состоянии процессов, а не потоков, и о планировании процессов; фактически состояние процесса в этом случае однозначно отвечают состоянию его единого потока.
В многотопотоковых системах также можно выделять состояния процессов.
Например, в многотопотоковости, реализованной по схеме М:1, потоки изменяют свои состояния в режиме пользователя, а процессы - в режиме ядра.
3.3 Описание процессов и потоков
Как мы уже знаем, одним из основных задач операционной системы есть распределение ресурсов между процессами и потоками. Такими ресурсами есть прежде всего процессорное время (его распределяют между потоками во время планирования), средства ввода-вывода и оперативная память (их распределяют между процессами).
Для управления распределением ресурсов ОС должна поддерживать структуры данных, которые содержат информацию, которая описывает процессы, потоки и ресурсы. К таким структурам данных принадлежат:
-
таблицы распределения ресурсов: таблицы памяти, таблицы ввода-вывода, таблицы файлов и т.п.;
-
таблицы процессов и таблицы потоков, где содержится информация о процессах и потоках, присутствуют в системе в конкретный момент.
3.3.1. Управляющие блоки процессов и потоков
Информацию о процессах и потоках в системе сохраняют в специальных структурах данных, которые называют управляющими блоками процессов и управляющими блоками потоков. Эти структуры очень важные для работы ОС, поскольку на основании их информации система осуществляет управление процессами и потоками.
Управляющий блок потока (Thread Control Block, ТСВ) отвечает активному потоку, который находится в состоянии готовности, ожидание или выполнение. Этот блок может содержать такую информацию:
-
идентификационные данные потока (обычно его уникальный идентификатор);
-
состояние процессора потока: управляющие регистры процессора, счетчик инструкций, указатель стека;
-
информацию для планирования потоков.
Таблица потоков - это список или массив управляющих блоков потока. Она расположена в защищенной области памяти ОС.
Управляющий блок процесса (Ргосеss Соntrol Вlоск, РСВ) отвечает процессу, который присутствует в системе. Такой блок может содержать:
-
идентификационные данные процесса (уникальный идентификатор, информацию о других процессах, связанных с данным);
-
информацию о потоках, которые выполняются в адресном пространстве процесса (например, указатели на их управляющие блоки);
-
информацию, на основе которой можно определить права процесса на использование разных ресурсов (например, идентификатор пользователя, который создал процесс);
-
информацию из распределения адресного пространства процесса;
-
информацию о ресурсах ввода-вывода и файлы, которые использует процесс. Укажем, что для систем, в которых реализованная модель процессов, в управляющем блоке процесса сохраняют не ссылку на управляющие блоки его потоков, а информацию, необходимую непосредственно для его выполнения (счетчик инструкций, данные для планирования и т.п.).
Таблицу процессов организовывают аналогично таблице потоков. Как элементы в ней будут сохраняться управляющие блоки процессов.