Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответник на госы.docx
Скачиваний:
120
Добавлен:
08.02.2015
Размер:
1.89 Mб
Скачать

4.2. Управление заданиями и процессами. Понятие процесса, состояния процесса. Обработка прерываний.

Управление задачами в операционных системах

Основные функции ОС по управлению задачами включают в себя:

1) создание и удаление задач;

2) планирование процессов и диспетчеризация задач;

3) синхронизация задач.

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

Основой любого метода управления процессами является организация очередей процессов и ресурсов. Задача подбора множества процессов, для которого количество конфликтов из-за ресурсов при их выполнении будет минимальным, называется задачей планирования вычислительных процессов. Она может быть решена оптимально только на некотором множестве начальных состояний процессов. С изменением состояний процессов принятое решение по планированию не будет оптимальным и требует корректировки. Такая корректировка может быть осуществлена на основе динамического (краткосрочного) планирования или диспетчеризации. Основное различие между краткосрочным и долгосрочным планировщиками состоит в частоте их запуска: первый запускается 1 раз в 30-100 мс, второй − 1 раз в несколько минут.

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

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

• сопоставленной ему программой/подпрограммой, то есть упорядоченной последовательностью операций, реализующих действия, которые должны осуществляться процессом;

• содержимым соответствующей ему памяти, а также тем множеством данных, которыми этот процесс может манипулировать;

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

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

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

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

Процессы в ОС могут быть запущены в различных случаях:

• диспетчер вызывает некоторый глобальный процесс по истечении некоторого промежутка времени или при обнаружении некоторого события;

• для получения оценки состояния ОС;

• при запуске программы переформирования очереди диспетчера, с целью повышения производительности системы;

• при вызове из программы пользователя другого клиентского приложе ния. В этом случае может потребоваться еще и синхронизация процес-сов;

• запуск программы пользователя;

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

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

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

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

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

Дополнив диаграмму двумя состояниями - смерти и рождения, переход из одного состояния в другое можно трактовать, например, как следующее множество (неполное) операций:

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

Создание процесса - это переход из состояния рождения в состояние готовности;

Уничтожение процесса - это переход из состояния выполнения в состояние смерти;

Восстановление процесса - переход из состояния готовности в состояние выполнения;

Изменение приоритета процесса - переход из выполнения в готовность;

Блокирование процесса - переход в состояние ожидания из состояния выполнения;

Пробуждение процесса ~ переход из состояния ожидания в состояние готовности;

Запуск процесса (или его выбор) - переход из состояния готовности в со стояние выполнения;

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

Понятие прерываний в ОС

Прерывания и особые ситуации

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

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

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

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

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

Для обработки прерываний и особых ситуаций в системе Unix используется один и тот же механизм.

Уровни прерывания процессора

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

Обычно имеется ряд привилегированных команд, устанавливающих уровень прерывания процессора в слове состояния процессора. Установка уровня прерывания на определенное значение отсекает прерывания этого и более низких уровней, разрешая обработку только прерываний с более высоким приоритетом. На рис. 1.6 показана последовательность уровней прерывания. Если ядро игнорирует прерывания от диска, в этом случае игнорируются и все остальные прерывания, кроме прерываний от таймера и машинных сбоев.