Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Процесс — одно из фундаментальных понятий в любой ОС. К сожалению, однозначного определения этого термина не существует до сих пор. В большинстве случаев достаточно считать, что процесс — это единица работы системы, которая описывается в системе в виде специальной структуры, часто называемой дескриптором процесса, и которой распределяются системные ресурсы.
Программный код только тогда начнёт выполняться, когда для него операционной системой будет создан процесс. Создать процесс — это значит:
- создать информационные структуры, описывающие данный процесс, то есть его дескриптор и контекст;
- включить дескриптор нового процесса в очередь готовых процессов;
- загрузить кодовый сегмент процесса в оперативную память или в область свопинга.
В современных ОС в рамках одного процесса может выполняться несколько потоков.
Поток — диспетчеризуемая единица работы, включающая контекст процессора (куда входит содержимое программного счётчика и указателя вершины стека), а также свою собственную область стека (для организации вызова подпрограмм и хранения локальных данных). Команды потока выполняются последовательно; поток может быть прерван при переключении процессора на обработку другого потока.
Важно понимать, что все потоки в рамках одного процесса используют общие ресурсы системы, выделенные данному процессу. Можно даже сказать, что процессы конкурируют за все ресурсы системы, кроме процессорного времени, в то время как потоки конкурируют только за процессорное время.
В многозадачной (многопроцессной) системе процесс (или поток, если процесс состоит из нескольких потоков) может находиться в одном из трёх основных состояний (рис. 12.1):
АКТИВЕН — процесс (поток) обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;
БЛОКИРОВАН — процесс не может выполняться по своим внутренним причинам, он ждёт осуществления некоторого события, например, завершения операции ввода-вывода, получения сообщения от другого процесса, освобождения какого-либо необходимого ему ресурса;
Рис. 12.1. Граф состояния процессов
ГОТОВ — процесс (поток) обладает всеми необходимыми ресурсами для продолжения работы и ожидает освобождения процессора, который занят выполнением другого процесса (потока).
В ходе жизненного цикла каждый процесс (поток) переходит из одного состояния в другое в соответствии с алгоритмом планирования, реализуемым в данной операционной системе.
В активном состоянии в однопроцессорной системе в каждый момент времени может находиться только один процесс (поток).
В состояниях блокировки и готовности в системе любого типа может находиться сразу несколько процессов (потоков). При этом в состоянии готовности ожидающие процессы (потоки) образуют очередь. В состоянии блокировки процессы (потоки) обычно не упорядочиваются, так как каждый из них ожидает наступления своего события.
В некоторых системах для временного уменьшения нагрузки предусмотрена возможность приостановки отдельных процессов.
В этом случае появляется два дополнительных состояния, в которых могут оказываться процессы:
ПРИОСТАНОВЛЕН БЛОКИРОВАН приостанавливается процесс, находившийся в состоянии блокировки;
ПРИОСТАНОВЛЕН ГОТОВ — приостанавливается процесс, находившийся в состоянии готовности.
Приостановить можно только процесс целиком со всеми его потоками, так как эта процедура обычно связана с попыткой временно изъять у процесса часть распределённых ему ресурсов системы, чтобы передать их другим работающим в системе процессам.
Планирование процессов как функция ядра операционной системы
Планирование процессов на уровне ядра ОС включает в себя решение следующих задач:
- определение момента времени для смены выполняемого процесса;
- выбор процесса на выполнение из очереди готовых процессов;
- переключение контекстов «старого» и «нового» процессов.
Существует множество различных алгоритмов планирования
процессов, по разному решающих вышеперечисленные задачи, преследующих различные цели и обеспечивающих различное качество мультипрограммирования. Обычно всё множество этих алгоритмов можно классифицировать по нескольким признакам.
1. Алгоритмы с применением прерываний процессов и без них. (Иногда применяются термины «вытесняющая многозадачность» и «невытесняющая многозадачность».)
При использовании прерываний всё время процессора делится на кванты. Каждому процессу в очереди предоставляется свой квант процессорного времени. По истечение каждого кванта времени генерируется прерывание, при обработке которого ОС переводит текущий активный процесс в очередь готовых, а на его место выбирает очередной процесс из очереди готовых к выполнению.
Процесс может и сам освободить процессор, если в течение своего кванта времени он будет заблокирован ожиданием какого-либо события, например, окончания операции ввода-вывода.
Кванты, выделяемые процессам, могут быть одинаковыми для всех процессов или различными. Кванты, выделяемые одному процессу, могут быть фиксированной величины или изменяться в разные периоды жизни процесса. Процессы, которые не полностью использовали выделенный им квант (например, из-за ухода на выполнение операций ввода-вывода), могут получить или не получить компенсацию в виде привилегий при последующем обслуживании. По разному может быть организована очередь готовых процессов: циклически, по правилу «первый пришёл — первый обслужен» (FIFO) или по какому-либо другому принципу.
Такой порядок планирования применяется в системах разделения времени, ориентированных на интерактивное взаимодействие с пользователями.
В случае непрерываемого планирования каждый процесс, получивший управление, работает на процессоре до тех пор, пока сам его не освободит. Процессор освобождается если:
- процесс завершился;
- процесс перешёл в состояние блокировки;
- процесс самостоятельно передал управление другим процессам.
Такие алгоритмы планирования наиболее эффективны в пакет
ных системах обработки.
2. Алгоритмы с использованием приоритетов и без них.
При приоритетном планировании в момент выбора на исполнение нового процесса учитываются приоритеты, присвоенные процессам в очереди. Приоритеты могут быть статические (не изменяющиеся во времени) и динамические (накапливаемые в течение времени, пока процесс ожидает в очереди, либо изменяемые системой в зависимости от поведения процесса), относительные (активный процесс не может быть прерван в течение своего кванта времени при появлении в очереди более приоритетного процесса) и абсолютными (в противном случае).
При бесприоритетном планировании очередной процесс выбирается из очереди в соответствии со стратегией, учитывающей равенство процессов. Это могут быть: случайная выборка, выборка по принципу FIFO и т. п.
Во многих ОС планировщики построены как комбинация описанных выше принципов планирования.
Дата публикования: 2015-02-03; Прочитано: 5525 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!