Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.doc
Скачиваний:
39
Добавлен:
30.04.2013
Размер:
16.33 Mб
Скачать

/Предполагаемая среда выполнения процессов.

Для выполнения программ в любой ОС могут и должны существовать некоторые условия. Эти условия касаются, например, привилегий, которые имеет исполняемая программа, или возможности доступа к объектам и/или данным в вычислительной системе.

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

Основные различия между этими двумя режимами:

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

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

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

/ Состояние процессов.

Состояние выполнения- это активное состояние, во время которого процесс обладает всеми необходимыми ему для работы ресурсами и харак­теризуется моментом времени, когда процесс имеет контроль над процес­сором.

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

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

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

1)Диспетчеризация – готовый к выполнению процесс, получает управление над процессом.

2)Запрос к системным службам.

3)Прерывание – при выполнении прерывания исполнение процесса приостанавливается.

4)Прерывание и возврат из прерывания это происходит, если прерывание вызвано самим процессом.

5)Останов работы задачи.

6)Активизация задачи.

7)Завершение ожидания.

8)Запрос к системе.

9)Запросы к системным службам.

10)Контроль задачи.

/ Диаграмма переходов.

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

  1. Процесс выполняется в режиме задачи.

  2. Процесс выполняется в режиме ядра.

  3. Процесс не выполняется, но готов к запуску под управлением ядра.

  4. Процесс приостановлен и находится в оперативной памяти.

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

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

  7. Процесс возвращен из привилегированного режима в непривилегированный.

  8. Процесс вновь создан и находится в переходном состоянии; процесс существует, но не готов к выполнению, хотя и не приостановлен.

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


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

Как уже говорилось выше, в режиме разделения времени может выпол­няться одновременно несколько процессов и все они могут одновременно работать в режиме ядра. Если им разрешить одновременно выполняться в режиме ядра, то они могут испортить глобальные информационные структуры, принадлежащие ядру. Запрещая произвольное переключение контекстов возникновением событий, ядро защищает свою целостность. Ядро разрешает переключение контекста только тогда, когда процесс переходит из состояния "запуск в режиме ядра" в состояние "сна в памяти" (приостановка).

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

Для защиты своих внутренних структур система UNIX запрещает переключение контекстов на время выполнения процесса в режиме ядра. Если процесс переходит в состояние "сна", система делает допустимым переключение контекста.

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