Понятия процесса и потока. Состояние процессов. Управление процессами.
Процесс (задача) представляет собой базовое понятие большинства современных ОС и часто определяется как выполняемая программная единица. Программа – это статический объект, представляющий собой файл с кодами и данными. Процесс – это динамический объект, который возникает в операционной системе после запуска задачи на выполнение, то есть является единицей вычислительной работы.
Во многих современных ОС для обозначения минимальной единицы работы используют термин поток, при этом суть термина процесс изменяется. При этом процесс рассматривается как единица работы, которая потребляет все ресурсы, кроме времени процессора. Время процессора распределяется между другими единицами – потоками, которые и получили свое название как последовательность (поток) выполнения команд.
В современных ОС существует два понятия для определения единицы работы (задачи). Когда говорят о процессах, то тем самым хотят отметить, что у каждой задачи есть свое виртуальное адресное пространство, каждой задаче назначаются свои ресурсы. Такая обособленность нужна для того, чтобы защитить один процесс от другого. ОС считает процессы совершенно несвязанными и независимыми.
Однако, часто требуется организовать внутренний параллелизм в самих процессах. Такой внутренний параллелизм встречается достаточно часто и его использование позволяет ускорить решение задачи. Потоки – это легковесные задачи потому, что ОС не должна для них организовывать полноценную виртуальную машину, так как они используют то же виртуальное пространство и другими ресурсами, что и данный процесс. В однопроцессорной системе потоки разделяют между собой процессорное время так же, как и процессы, а в мультипроцессорной системе могут выполняться одновременно.
Итак, сущность «поток» была введена для того, чтобы при помощи этих единиц распределять процессорное время между возможными работами. Сущность «процесс» предполагает, что при диспетчеризации нужно учитывать все ресурсы, закрепленные за ним, а при диспетчеризации потоков можно менять только контекст задачи в рамках одного процесса. Каждый процесс всегда состоит, по крайней мере, из одного потока, и только если есть внутренний параллелизм, программист может «расщепить» поток на несколько параллельных потоков.
Процесс в системах разделения времени может находится в одном из следующих состояний:
- Выполнения – активное состояние, все затребованные процессом ресурсы выделены. В однопроцессорной вычислительной системе в каждый момент времени может находиться только один процесс;
- Готовности к выполнению – пассивное состояние, ресурсы могут быть предоставлены, тогда процесс перейдет в состояние выполнения;
- Блокирования или ожидания – пассивное состояние. Процесс заблокирован по своим внутренним причинам (ожидает некоторого события, завершение ввода/вывода, получение сообщения от другого потока или освобождение ресурса).
Несколько потоков в состоянии готовности или ожидания образуют очередь. Очередь организуется с помощью объединения в список описателей отдельных потоков. Каждый описатель потока содержит как минимум 1 указатель на другой описатель, соседствующий с ним в очереди.
Управление процессами включает в себя решение следующих задач:
- определение момента времени для смены выполняемого процесса;
- выбор процесса на выполнение из очереди готовых процессов;
- переключение контекстов "старого" и "нового" процессов.
Первые две задачи решаются программными средствами, а последняя в значительной степени аппаратно.
Планирование:
- Не вытесняющее – алгоритм основан на том, что активному потоку позволяется выполняться пока он по собственной инициативе не отдаст управление ОС.
1. не вытесняющий может быть более эффективным, т.к. переключение потоков будет осуществляться по окончанию выполнения ими каких-либо задач (операция форматирования дискеты – передача управления осуществляется после форматирования каждой дорожки).
2. У не вытесняющих более высокие требования к разработчикам приложений
- Вытесняющее – решение о переключении процессора с одного потока на другой принимает ОС.
1. Простота разработки приложений,
В большинстве современных ОС используется вытесняющее планирование.
18. Дескрипторы и контексты процессов.
Для того, чтобы ОС могла управлять процессами, она должна располагать всей необходимой для этого информацией. Поэтому, для каждого процесса заводится специальная информационная структура, называемая дескриптором (описателем) процесса. В общем случае дескриптор процесса содержит следующую информацию:
- Идентификатор процесса;
- Тип (или класс) процесса, который определяет для супервизора некоторые правила предоставления ресурсов;
- Приоритет процесса, в соответствии с которым супервизор предоставляет ресурсы. В рамках одного класса процессов в первую очередь обслуживаются более приоритетные процессы;
- Переменную состояния, которая определяет, в каком состоянии находится процесс;
- Адрес защищенной области памяти, в которой хранятся текущие значения регистров процессора, если процесс прерывается, не закончив работы (эта информация называется контекстом задачи);
- Информацию о ресурсах, которыми процесс владеет и/или имеет право пользоваться;
- Место или адрес для организации обмена информацией с другими процессами;
- Параметры времени запуска (момент времени, когда процесс должен активизироваться и периодичность этой процедуры);
- В случае отсутствия системы управления файлами – адрес задачи на диске в ее исходном состоянии и адрес на диске, куда она выгружается из оперативной памяти, если ее вытеснит другая задача.
Дескрипторы задач, как правило, постоянно располагаются в оперативной памяти для ускорения работы супервизора, который организует их в списки (очереди) и отображает изменение состояния процесса перемещением соответствующего описателя из одного списка в другой.
На протяжении периода существования процесса его выполнение может быть многократно прервано и продолжено. Для того, чтобы возобновить выполнение процесса, необходимо восстановить состояние его операционной среды. Состояние операционной среды идентифицируется состоянием регистров, режимом работы процессора, указателями на открытые файлы, информацией о незавершенных операциях ввода-вывода и т.д. Эта информация называется контекстом процесса.
Дескриптор процесса по сравнению с контекстом содержит более оперативную информацию, которая должна быть легко доступна подсистеме планирования процессов. Контекст процесса содержит менее актуальную информацию и используется операционной системой только после того, как принято решение о возобновлении прерванного процесса.
Программный код только тогда начнет выполняться, когда для него операционной системой будет создан процесс. Создать процесс - это значит:
- создать информационные структуры, описывающие данный процесс, то есть его дескриптор и контекст;
- включить дескриптор нового процесса в очередь готовых процессов;
- загрузить кодовый сегмент процесса в оперативную память или в область свопинга.