Определение термина «процесс». Впервые термин «процесс» появился в начале 60-х г.г. 20 века в системе MULTICS. За это время термин «процесс», как и эквивалентный ему термин «задача», получил много различных определений. Некоторые из них: - программа в стадии выполнения; - асинхронная работа; - «живая душа» процедуры; - «концентрация средств управления» для выполняемой процедуры; - нечто, представленное в виде «блока управления процессом» в ОС; - «диспетчируемый» модуль. Чаще всего под процессом понимается программа, загруженная в ОП, которой выделены ресурсы ОС, необходимые для выполнения, и которая ожидает начала выполнения, или программа во время выполнения. Состояния процесса. Процессы могут находиться в одном из нескольких дискретных состояний. Смену состояний процесса могут вызывать различные события. Процесс выполняется (находится в состоянии выполнения), если ему выделен центральный процессор (ЦП). Процесс готов (находится в состоянии готовности), если он мог бы сразу использовать ЦП предоставленный в его распоряжение. Процесс заблокирован (находится в состоянии блокировки), если он ожидает появления некоторого события (например, завершения операции ввода-вывода), чтобы продолжать выполнение. Выполняется; Готов; Блокирован; Истечение кванта; Запуск; Пробуждение; Блокирование; В однопроцессорной ОС в каждый конкретный момент времени может выполняться только один процесс. Но несколько процессов могут находиться в состоянии готовности, а несколько - в состоянии ожидания. Поэтому, можно создать список готовых к выполнению процессов и список заблокированных процессов. Список готовых процессов обычно упорядочен по убыванию приоритета, так что следующим процессом, получающим в свое распоряжение ЦП, будет первый процесс из этого списка – процесс наивысшим приоритетом. Список заблокированных процессов не упорядочен – не предусматривается никакого приоритетного порядка разблокировки процессов (т.е. их перевода в состояние готовности). Разблокировка процессов осуществляется в том порядке, в котором происходят ожидаемые ими события. Переход процесса из состояния в состояние. Задание, поступающее на выполнение в ОС, создает соответствующий процесс, который затем устанавливается в конец списка готовых процессов. В качестве задания может выступать, как отдельная программа, так и пакетный bat-файл. Этот процесс постепенно продвигается к головной части списка – по мере завершения выполнения предыдущих процессов. Когда этот процесс оказывается первым в списке готовых, и когда освобождается ЦП, этому процессу выделяется процессор, то происходит смена состояния процесса – он переходит из состояния готовности в состояние выполнения (Рис.1). Предоставление ЦП первому процессу списка готовых процессов – запуск или выбор процесса для выполнения. Это делается при помощи компоненты ОС – диспетчера. Это можно изобразить так: Запуск (имя_процесса):готов → выполняется Процесс, имеющий в своем распоряжении ЦП – выполняющийся процесс. Чтобы предотвратить монопольный захват (узурпацию) процессом процессора, ОС устанавливает в аппаратной компоненте ЦП – аппаратном таймере прерываний некоторое значение, определяющее количество (квант) времени, в течение которого процессу разрешается занимать процессор. Если процесс добровольно не освободит ЦП сам до истечения указанного кванта, таймер подаст сигнал прерывания, по которому управление перейдет к ОС . ОС переведет этот процесс в состояние готовности и поместит его в список готовых процессов в соответствии с его приоритетом, а 1-ый процесс из этого списка – в состояние выполнения. Это можно изобразить так: Истечение кванта(имя процесса):выполняется → готов и запуск(имя процесса):готов → выполняется Если выполняющийся процесс до истечения отпущенного ему кванта времени инициирует операцию ввода-вывода, то этот процесс добровольно освобождает ЦП (т.е. сам себя блокирует в ожидании завершения указанной операции ввода-вывода). Это изображается так: Блокирование (имя процесса):выполняется → блокирован В нашей модели может иметь место еще одна допустимая смена состояния – когда завершается операция ввода-вывода (или происходит какое-либо другое событие ожидаемое процессом). При этом процесс переходит из состояния блокировки в состояние готовности. Это можно изобразить так: пробуждение (имя процесса):блокирован → готов Т.о. имеется 4 возможные смены состояния процесса: Запуск (имя процесса):готов → выполняется Истечение кванта(имя процесса): выполняется → готов Блокирование (имя процесса): выполняется → блокирован Пробуждение (имя процесса): блокирован → готов Единственная смена состояния, инициируемая самим процессом пользователя – это блокирование, остальные смены состояния инициируются объектами, внешними по отношению к данному процессу. Блок управления процессом. Каждый процесс порождает в ОС особую структуру данных блок управления процес- сом (PCB). В нем содержится важная информация о процессе в том числе: - текущее состояние процесса; - уникальный идентификатор процесса; - приоритет процесса; - указатели памяти процесса; - указатели выделенных процессу ресурсов; - область сохранения регистров. В некоторых компьютерах предусматривается специальный аппаратный регистр, который всегда указывает на РСВ текущего выполняемого процесса. Зачастую имеются аппаратные команды, обеспечивающие быструю загрузку информации состояния в РСВ и последующее восстановление этой информации. Операции над процессами. ОС должна уметь выполнять определенные операции над процессами в том числе: - создание (образование) процесса; - уничтожение процесса; - возобновление процесса; - изменение приоритета процесса; - блокирование процесса; - пробуждение процесса; - запуск (выбор) процесса. В свою очередь создание процесса состоит из более мелких операций, включая: - присвоение имени процессу; - включение этого имени в список имен, известных ОС; - определение начального приоритета процесса; - формирование РСВ; - выделение процессу начальных ресурсов. Процесс может породить новый процесс. В этом случае порождающий процесс называется родительским процессом, а второй созданный процесс – дочерним процессом. Для создания дочернего процесса необходим только один родительский процесс. При таком подходе создается иерархическая структура процессов, в которой у дочернего процесса есть только один родительский процесс, но у каждого родительского процесса может быть много дочерних процессов. Уничтожение процесса означает его удаление из ОС. Все сведения об этом процессе также уничтожаются. Ресурсы, выделенные этому процессу, возвращаются системе. Уничтожение процесса усложняется, если это родительский процесс. В некоторых ОС уничтожение родительского процесса автоматически влечет уничтожение всех его дочерних процессов. В других ОС порожденные процессы могут существовать независимо от родительских процессов. Изменение приоритета означает обычно изменение соответствующего значения РСВ. При пиковой нагрузке ОС может временно приостановить выполнение какого-либо процесса (процессов) для разгрузки процессора и освобождения занимаемой им ОП. Обычно приостановленный процесс помещается в файл выгрузки до снижения пиковой нагрузки. В однопроцессорном компьютере выполняющийся процесс может приостановить только сам себя. Приостановленный процесс может продолжить свое выполнение только при активизации его каким-либо другим процессом. Ядро ОС. Все операции связанные с процессами выполняются под управлением ядра ОС. Ядро резидентная часть ОС и поэтому постоянно размещается в ОП. Другие части ОС загружаются в ОП из внешней памяти по мере необходимости. Кроме того, ядро, также, выполняет обработку прерываний. Здесь важна быстрая реакция ОС на каждое прерывание с т. з. использования ресурсов системы и обеспечения приемлемых значений времени ответа на запросы пользователей. При обработке текущего прерывания запрещаются другие прерывания. Они разрешаются только после обработки текущего прерывания. Ядро разрабатывается таким образом, чтобы оно выполняло лишь минимально возможную предварительную обработку каждого прерывания, а затем передавало это прерывание на обработку соответствующему системному процессу. После начала работы этого процесса ядро может разрешить обработку следующего прерывания. Т.о. средняя скорость реакции системы возрастает. Основные функции ядра ОС. В ядре ОС обычно программно реализованы следующие функции: - обработка прерываний; - создание и уничтожение процессов; - переключение процессов из состояния в состояние; - диспетчирование; - приостановка и активизация процессов; - синхронизация процессов; - организация взаимодействия между процессами; - манипулирование блоками PCB; - поддержка операций ввода-вывода; - поддержка распределения и перераспределения памяти; - поддержка работы файловой системы; - поддержка определенных функций по ведению учета работы компьютера. Иерархическая структура ОС. Очень удачным оказывается иерархический подход к проектированию ОС. В основе иерархии находится сама аппаратура компьютера – «чистая машина», «голое железо». На следующем уровне иерархии находятся некоторые функции ядра ОС. В совокупности с этими функциями ядра компьютер становится расширенной машиной, которая предоставляет пользователю не только команды процессора, но и некоторые дополнительные возможности. Эти возможности называются примитивы. Над ядром в иерархии находятся различные процессы ОС, которые обеспечивают поддержку процессов пользователя, например: процессы управления внешними устройствами, оперативной памятью и т. п. На вершине иерархии располагаются сами процессы пользователей. Такие системы легче отлаживать, модифицировать и тестировать. С другой стороны, здесь требуется тщательно продумывать, какие функции ядра на каком уровне размещать. Примером такой удачной ОС является THE. Это – мультипрограммная ОС, созданная в Голландии в конце 50 г.г. 20 века для ЭВМ «Electrologica-84», ставшая уже классикой проектирования и создания ОС.