
Процесс (process) - это объект, который создается операционной системой, когда пользователь запускает приложение. Процессу выделяется отдельное адресное пространство, это пространство физически недоступно для других процессов. Процесс может работать с файлами или с каналами связи локальной или глобальной сети. Когда вы запускаете текстовый процессор или программу калькулятора, вы создаете новый процес
Состояния процесса Процесс выполняется (т. е. находится в состоянии выполнения), если в данный момент ему выделен центральный процессор (ЦП). Процесс готов (т. е. находится в состоянии готовности), если он мог бы сразу использовать ЦП, предоставленный в его распоряжение. Процесс заблокирован (т. е. находится в состоянии блокировки), если он ожидает появления некоторого события (например, завершения операции ввода-вывода), чтобы получить возможность продолжать выполнение. Существуют и другие состояния процесса, однако для первоначального обсуждения можно ограничиться этими тремя.
В однопроцессорной машине в каждый конкретный момент времени может выполняться только один процесс, однако несколько процессов могут находиться в состоянии готовности, а несколько — в состоянии блокировки. Поэтому мы можем создать список готовых к выполнению процессов и список заблокированных процессов. Список готовых процессов упорядочен по приоритету, так что следующим процессом, получающим в свое распоряжение ЦП, будет первый процесс этого списка. Список заблокированных процессов не упорядочен — не предусматривается никакого приоритетного порядка разблокировки процессов (т. е. их перевода в состояние готовности), разблокировка процессов осуществляется в том порядке, в котором происходят ожидаемые ими события.
Переход процесса из состояния в состояние Когда в систему поступает некоторое задание, она создает соответствующий процесс, который затем устанавливается в конец списка готовых процессов. Этот процесс продвигается к головной части списка — по мере завершения выполнения предыдущих процессов. Когда процесс оказывается первым в списке готовых и когда освобождается центральный процессор, этому процессу выделяется ЦП и говорят, что происходит смена состояния процесса — он переходит из состояния готовности в состояние выполнения (рис. 3.1). Предоставление центрального процессора первому процессу списка готовых процессов называется выбором процесса для выполнения, и это делается при помощи системной программы, называемой диспетчером. Смена состояния: запуск (имя процесса): готов > выполняется
3.1 Диаграмма переходов процесса из состояния в состояние.
Процесс, имеющий в своем распоряжении ЦП - выполняется. Чтобы предотвратить монопольный захват ресурсов машины каким-то одним процессом, операционная система устанавливает в специальном аппаратном таймере прерываний некоторый временной интервал, в течение которого данному процессу пользователя разрешается занимать ЦП. Если процесс добровольно не освободит ЦП до истечения указанного временного интервала, таймер выработает сигнал прерывания, по которому управление будет передано операционной системе. После этого операционная система переведет ранее выполнявшийся процесс в состояние готовности, а первый процесс списка готовых — в состояние выполнения. Эти смены состояний обозначаются следующим образом: истечение кванта (имя процесса): выполняется > готов И запуск (имя процесса): готов > выполняется Если выполняющийся процесс до истечения отпущенного ему кванта времени инициирует операцию ввода-вывода, этот процесс тем самым добровольно освобождает ЦП (т. е. сам себя блокирует в ожидании завершения указанной операции ввода-вывода). Эта смена состояния изображается так: блокирование (имя процесса): выполняется > блокирован
В модели с тремя состояниями может иметь место еще лишь одна допустимая смена состояния — когда завершается операция ввода-вывода (или происходит какое-либо другое событие, ожидаемое процессом). При этом процесс переходит из состояния блокировки в состояние готовности. Эта смена состояния обозначается так: пробуждение (имя процесса); блокирован > готов
Единственная смена состояния, инициируемая самим процессом пользователя,— это блокирование, остальные три смены состояния инициируются объектами, внешними по отношению к данному процессу.
Блок управления процессом
Представителем процесса в операционной системе является блок управления процессом (РСВ). Это структура данных, содержащая информацию о процессе:
1-текущее состояние процесса; 2-уникальный идентификатор процесса; 3-приоритет процесса; 4-указатели памяти процесса; 5-указатели выделенных процессу ресурсов; 6-область сохранения регистров.
Блок управления процессом является центральным пунктом, в котором операционная система может сосредоточить всю ключевую информацию о процессе. Когда операционная система переключает ЦП с процесса на процесс, она использует области сохранения регистров, предусмотренные в РСВ, чтобы запомнить информацию, необходимую для рестарта (повторного запуска) каждого процесса, когда этот процесс в следующий раз получит в свое распоряжение ЦП.
Операции над процессами
1-создание процесса; 2-уничтожение процесса; 3-возобновление процесса; 4-изменение приоритета процесса;
5-блокирование процесса; 6-пробуждение процесса; 7-запуск процесса.
Создание процесса состоит из многих операций, включая:
1 - присвоение имени процессу; 2 - включение имени в список имен процессов, известных системе; 3 - определение начального приоритета процесса;4 - формирование блока управления процессом РСВ; 5 - выделение процессу начальных ресурсов.
Процесс может породить новый процесс. В этом случае первый, порождающий процесс называется родительским процессом, а второй, созданный процесс - дочерним процессом. Для создания дочернего процесса необходим. Только один родительский процесс. При таком подходе создается иерархическая структура процессов, подобная показанной на рис. 3.2, в которой у дочернего процесса есть только один родительский процесс, но у каждого родительского процесса может быть много дочерних процессов.
Иерархия
создания процессов.
Уничтожение процесса означает его удаление из системы. Ресурсы, выделенные этому процессу, возвращаются системе, имя процесса в любых системных списках или таблицах стирается, и блок управления процессом освобождается.
Приостановленный процесс не может продолжить свое выполнение до тех пор, пока его не активизирует какой-либо другой процесс. Приостановка — важная операция, которая реализуется во многих различных системах по-разному. Зачастую система прибегает к приостановкам для кратковременного исключения определенных процессов в периоды пиковой нагрузки. В случае длительной приостановки процесса его ресурсы должны быть освобождены. Основная память, например, при приостановке процесса должна освобождаться немедленно. Активация процесса — операция подготовки процесса к повторному запуску с той точки, в которой он был приостановлен.
Уничтожение процесса усложняется, если это родительский процесс. В некоторых системах дочерний процесс уничтожается автоматически, когда уничтожается его родительский процесс, в других системах порожденные процессы начинают существовать независимо от своих родительских процессов, так что уничтожение родительского процесса не оказывает влияния на его потомков.
Поток
Для каждого процесса операционная система создает один главный поток (нить), который является потоком выполняющихся по очереди команд центрального процессора. При необходимости главный поток может создавать другие потоки, пользуясь для этого программным интерфейсом операционной системы.
Все потоки, созданные процессом, выполняются в адресном пространстве этого процесса и имеют доступ к ресурсам процесса. Однако поток одного процесса не имеет никакого доступа к ресурсам потока другого процесса, так как они работают в разных адресных пространствах. При необходимости организации взаимодействия между процессами или потоками, принадлежащими разным процессам, следует пользоваться системными средствами, специально предназначенными для этого.
На
рисунке 3.9,а показана машина с тремя
процессами. Каждый процесс имеет
собственный программный счетчик,
собственный стек, собственный набор
регистров и собственное адресное
пространство. На рисунке 3.9,б показана
другая машина с одним процессом. Этот
процесс состоит из нескольких нитей
управления, обычно называемых потоками.
Во многих отношениях нити подобны
мини-процессам. Каждая нить выполняется
строго последовательно и имеет свой
собственный программный счетчик и стек.
Нити разделяют процессор так, как это
делают процессы (разделение времени).
Только на многопроцессорной системе
они действительно выполняются параллельно.
Нити могут, например, порождать
нити-потомки, могут переходить в состояние
ожидания до завершения системного
вызова, как обычные процессы, пока одна
нить заблокирована, другая нить того
же процесса может выполняться.
Рис. 3.9. а) Три процесса с одной нитью каждый б) Один процесс с тремя нитями