Что такое дескриптор процесса
Перейти к содержимому

Что такое дескриптор процесса

  • автор:

12. Дескриптор процесса.

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

1. Идентификатор процесса (ProcessIdentificator(ID))

2. Тип или класс процесса, к-ый определяет для ОС некоторые правила предоставления ресурсов.

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

4. Переменную состояния, к-ая определяет в каком состоянии находится процесс (готовность к работе, состояние выполнения, ожидание устр-ва ввода/вывода и т. д.)

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

6. Информацию о ресурсах, к-ми процесс владеет и имеет право пользоваться (указатели на открытые файлы, информация о независимых операциях вв/выв и т. д.)

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

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

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

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

13. Потоки в операционных с-мах.

Концепцию процесса можно охарактеризовать двумя параметрами:

1. Владение ресурсами.

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

2. Планирование и выполнение.

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

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

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

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

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

Дескрипторы и идентификаторы процессов

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

Функция CreateProcess также возвращает идентификатор, который однозначно идентифицирует процесс в системе. Процесс может использовать функцию GetCurrentProcessId для получения собственного идентификатора процесса (также известного как идентификатор процесса или PID). Идентификатор действителен с момента создания процесса до его завершения. Процесс может использовать функцию Process32First для получения идентификатора процесса родительского процесса.

Если у вас есть идентификатор процесса, вы можете получить дескриптор процесса, вызвав функцию OpenProcess . OpenProcess позволяет указать права доступа дескриптора и указать, можно ли наследовать его.

Процесс может использовать функцию GetCurrentProcess для получения псевдо дескриптора в собственный объект процесса. Этот псевдо дескриптор действителен только для вызывающего процесса; Он не может быть унаследован или дублирован для использования другими процессами. Чтобы получить реальный дескриптор процесса, вызовите функцию DuplicateHandle .

Обратная связь

Были ли сведения на этой странице полезными?

Дескриптор и контекст процесса

— генерирует специальную информационную структуру — описатель потока, который содержит информацию о состоянии потока.

Примерами описателей процесса являются блок управления задачей (ТСВ — Task Control Block) в OS/360, управляющий блок процесса (РСВ — Process Control Block) в OS/2, дескриптор процесса в UNIX, объект-процесс (object-process) в Windows NT.

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

Операционная система использует два основных типа информационных структур: дескриптор процесса и контекст процесса.

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

Информацию дескриптора можно разделить на группы по функциональному признаку: идентификатор процесса, состояние процесса, информация о ресурсах, степень привилегированности, место нахождения кодового сегмента, информация о родственных связях, информация для учёта и планирования процессов и пр.

Дескрипторы отдельных процессов объединены в таблицу процессов. На основании информации, содержащейся в таблице процессов, операционная система осуществляет планирование и синхронизацию процессов.

Контекст процесса содержит информации о процессе которая используется для возобновления его выполнения с прерванного места. Т.е. данные, характеризующие во-первых, состояние вычислительной среды в момент прерывания: значение счетчика команд, содержимое РОН, режим работы процессора, флаги, маски прерываний и другие параметры. Во-вторых, параметры операционной среды, а именно ссылки на открытые файлы, коды ошибок системных вызовов и т. д.

Вместе обе структуры образуют Блок управления процессом PCB (Process Control Block) (TCB – Task Control Block в OS/360, или object-process в W NT).

Состояния процесса

ОС выполняет планирование процессов или потоков (если речь идёт о многопоточной ОС), принимая во внимание их состояние.

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

В мультипрограммной системе процесс (поток) может находиться в одном из трех основных состояний.

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

ожидание — пассивное состояние процесса, не исполняется на процессоре по причине занятости какого-либо требуемого ресурса;

готовность — пассивное состояние потока, поток заблокирован в связи с внешним по отношению к нему обстоятельством (готов выполняться, однако процессор занят выполнением другого потока). Состояние готовности характерно только для режима мультипрограммирования.

Состав допустимых состояний, а также допустимые переходы из состояния в состояние задают в форме графа существования процесса.

Рассмотрим типичный граф состояния потока (рис. 4.3).

Созданный поток находится в состоянии готовности, и стоит в очереди к процессору.

В результате планирования поток переходит в состояние выполнения и находится в нем до тех пор, пока

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

2. либо будет принудительно «вытеснен» из процессора, например вследствие исчерпания отведенного данному потоку кванта процессорного времени. В последнем случае поток возвращается в состояние готовности.

В это же состояние поток переходит из состояния ожидания, после того как ожидаемое событие произойдет.

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

Если предположить, что на рис. показана очередь готовых к исполнению потоков, то запланированный порядок выполнения выглядит так: A B E D C. Прошивку, как правило, осуществляют в соответствии с приоритетами на право использовать ресурс.

Такой же прием проводят с дескрипторами тех процессов, которые ожидают доступа к одному и тому же ресурсу. В таком случае Дескрипторы прошиваются также для отображения «родственных» связей между процессами. Несомненно, одна из главенствующих ссылок, хранящихся в дескрипторе, — это ссылка на область памяти, в которой будет использоваться программа при нахождении процесса в активном состоянии.

Кроме описанных выше состояний в отношении процесса различают состояния порождения (создания) и окончания.

При создании процесса ос:

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

Дескриптор процесса

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

Дескриптор процесса по сравнению с контекстом содержит более оперативную информацию, которая должна быть легко доступна подсистеме планирования процессов. Контекст процесса содержит менее актуальную информацию и используется операционной системой только после того, как принято решение о возобновлении прерванного процесса.

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

Создание процесса (общие сведения)

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

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

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

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

Можно отметить 3 события, приводящие к созданию процесса:

· загрузка ОС (при загрузке ОС автоматически или через системные файлы загружаются системные процессы);

· разработанный процесс создает дочерние процессы;

· пользователь создает запрос на создание процесса (системный процесс посылает системный вызов на создание нового процесса).

Окончание процесса (общие сведения)

Основные события, приводящие к завершению процесса:

· естественное завершение (завершение работы);

· планируемый выход по идентифицированной ошибке;

· уничтожение другим процессом;

· окончание по неисправимой ошибке в программе.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *