2. Дайте объяснение понятиям процесса и задачи. Опишите переходы процесса из одного состояния в другие

Предмет: Операционные системы.
Вопрос: №2

***

Понятие «вычислительный процесс» или просто «процесс» является основным при рассмотрении ОС. По принципу выполнения различают последовательные процессы и параллельные. Последовательный процесс, называемый «задачей» – это выполнение отдельной программы с её данными на последовательном процессоре. В концепции, которая получила наибольшее распространение в 70-е годы, под задачей понимается совокупность связанных между собой и образующих единое целое программных модулей и данных, требующая ресурсов вычислительной системы для своей реализации.

Термин задача можно употреблять только по отношению к процессам пользователей и к системным обрабатывающим процессам. Однако это справедливо не для всех ОС.

Процесс (или по-другому задача) – это абстракция описывающая выполняющую программу. Для ОС процесс представляет собой единицу работы, заявку на потребление системных ресурсов. Подсистема управления процессами планирует выполнение процессов, то есть распределяет процессорное время между несколькими одновременно существующими в системе процессами, а также занимается созданием и уничтожением процессов, обеспечивает их необходимыми систем-ными ресурсами, поддерживает взаимо-действие между процессами.

—————————————————————

Программный код только тогда начнет выполняться, когда для него ОС будет создан процесс. Создать процесс – это значит:

1.) создать информационные структуры, описывающие данный процесс, то есть его дескриптор и контекст;

2.) включить дескриптор нового процесса в очередь готовых процессов;

3.) загрузить кодовый сегмент процесса а оперативную память или в область свопинга.

—————————————————————

Для того, чтобы ОС могла управлять процессами, она должна располагать всей необходимой для этого информацией. С этой целью на каждый процесс заводится отдельная информационная структура, называемая дескриптором процесса. Который, в общем случае, содержит следующую информацию:

1.) идентификатор процесса, PID;

2.) тип процесса, который определяет для супервизора некоторые правила предоставления ресурсов;

3.) приоритет процесса. В рамках одного типа процессов в первую очередь обслуживаются более приоритетные;

4.) переменную состояния, которая определяет, в каком состоянии сейчас находится процесс;

5.) адрес защищенной области памяти, в которой хранятся текущие значения регистров процессора, если процесс прерывается, не закончив работы. Эта информация называется контекстом задачи.

6.) сведения о ресурсах, которыми процесс владеет;

7.) адрес процесса для организации общения с другими процессами;

8.) параметры времени запуска (момент времени, когда процесс должен активизироваться, и периодичность этой процедуры);

9.) если отсутствует система управления файлами – адрес задачи на диске в её исходном состоянии и адрес на диске, куда она выгружается из оперативной памяти, если её вытесняет другая.

—————————————————————

Процесс может находиться в одном из двух состояний: активном и пассивном. В активном состоянии процесс может участвовать в конкуренции за использование ресурсов вычислительной системы, а в пассивном состоянии не участвует, хотя в системе и имеется информация  о его существовании, что сопряжено с предоставлением ему оперативной и/или внешней памяти. Активный процесс может находится в одном из следующих состояний:

Выполнение: затребованные процессом ресурсы выделены. В этом состоянии в каждый момент времени может находится только один процесс, если речь идет об однопроцессорной вычислительной системе.

Готовность к выполнению: ресурсы могут быть предоставлены, тогда процесс перейдет в состояние выполнения.

Блокирование или ожидание: затребованные ресурсы не могут быть предоставлены, или не завершена операция ввода/вывода.

В обычных ОС процесс инициируется при запуске како

й-либо программы. ОС выделяет для данного процесса соответствующий дескриптор процесса, и процесс (задача) начинает выполняться. Поэтому пассивного состояния не существует. В ОС реального времени обычно при проектировании уже заранее известен состав программ (задач), которые будут выполняться. Известны многие их параметры, которые необходимо учитывать при распределении ресурсов (объем памяти, приоритет, средняя длительность выполнения, открываемые файлы, используемые устройства и т.д.). Поэтому для них заранее заводят дескрипторы задач. Таким образом, в ОС реального времени многие процессы(задачи) могут находиться в пассивном состоянии.

Процесс из состояния бездействия в состояние готовности может перейти в следующих случаях: по команде пользователя, при выборе из очереди планировщиком (характерно для ОС, работающих в пакетном режиме), по вызовуиз другой задачи, при наступлении запланированного времени запуска программы.

graf-sostoyaniya1

Из состояния выполнения процесс может выйти по следующим причинам:

Супервизор ОС – это центральный управляющий модуль, который может состоять из нескольких модулей, например супервизора ввода/вывода, супервизора прерываний, супервизора прерываний, диспетчера задач и т.д.

1.)процесс завершается, при этом он посредством обращения к супервизору передает управление ОС и сообщает о своем завершении. Супервизор либо пере-водит его в список бездействующих процессов (пассивное состояние), либо уничтожает;

2.) процесс переводится супервизором ОС в состояние готовности к исполнению в связи с проявлением более приоритетной задачи или в связи с окончанием выделенного ему кванта времени;

3.) процесс блокируется (переводится в состояние ожидания) либо вследствие запроса операции ввода/вывода, либо в силу невозможности предоставить ему ресурс, запрошенный в настоящий момент, а также по команде оператора на приостановку задачи или по требованию через супервизор от другой задачи. По наступлению соответствующего события процесс деблокируется и переводится в состояние готовности к исполнению;

Таким образом, движущей силой, меняющей состояния процессов, являются события. Одним из основных видов процессов являются прерывания.

Прерывание – это принудительная передача управления от выполняемой программы к системе, а через нее – к соответствующей программе обработки прерываний.

—————————————————————

При рассмотрении процессов имеется ввиду, что ОС поддерживает их обособленность: у каждого процесса имеется свое виртуальное пространство; каждому процессу назначаются свои ресурсы и т.д. Это необходимо, что бы процессы были защищены друг от друга, т.к. они совместно используя все ресурсы вычислительной системы конкурируют друг с другом. В общем случае процессы никак не связаны между собой.

Но желательно иметь возможность задействовать внутренний параллелизм, который может быть в самих процессах. Если же программные модули, исполняющие длительные операции (обработка графического изображения), оформлять вводе самостоятельных «подпроцессов» – облегченных процессов (потоков или задач), которые будут выполняться параллельно с другими подпроцессами(потоками, задачами), то у пользователя появляется возможность выполнять параллельно несколько операций в рамках одного процесса (приложения). Эти задачи не имеют собственных ресурсов, они развиваются в том же виртуальном адресном пространстве, могут пользоваться теми же файлами, виртуальными устройствами и иными ресурсами, что и исполняемый процесс. Единственное, что им необходимо иметь – это процессорный ресурс. В однопроцессорной системе треды (задачи) разделяют между собой процессорное время также, как это делают обычные процессы, а в мультипроцессорной системе могут выполняться одновременно. Программа, оформленная в виде нескольких тредов (задач) в рамках одного процесса, может быть выполнена быстрее за счет параллельного выполнения её отдельных частей.

Поскольку треды выполняться в одном и том же виртуальном адресном пространстве, между ними легко организовать тесное взаимодействие в отличие от процессов, для который нужны специальные механизмы обмена сообщениями и данными.

Для того чтобы можно было эффективно организовать параллельное выполнение процессов и тредов, в архетиктуру современных процессоров включена возможность работы со специальной информационной структурой, описывающей тот или иной процесс (тред). Для этого уже на уровне архитектуры микропроцессора используется понятие «задача» (task). Оно как бы объединяет в себе понятие обычный и легковесный процессы. Это понятие и поддерживаемая для него на уровне аппаратуры информационная структура позволяют в дальнейшем при разработке ОС построить соответствующие дескрипторы как для процесса, так и для треда. Отличаться эти дескрипторы будут, прежде всего, тем, что дескриптор треда может хранить только контекст приостановленного вычислительного процесса, который включает в себя содержимое адресного пространства задачи, выделенного процессу, а также содержимое относящихся к процессу аппаратных регистров и структур данных ядра.