Управление процессором и состояния процесса
Основными объектами в многозадачной среде являются процессы или задачи, описываемые своим контекстом. На одном процессоре в любой момент времени может исполняться только одна задача. Контекст исполняемой задачи всегда можно "заморозить", сохранив содержимое регистров процессора. При остановке текущей задачи процессор продолжает исполнение других задач. Таким образом, процессор есть ограниченный ресурс, который распределяется между всеми задачами.
На одном процессоре для организации многозадачного режима выполнение каждой задачи разбивается на несколько коротких интервалов (рис. 4.). Процессор выполняет часть первой задачи, затем второй, третьей и т. д. Временной интервал, выделенный для каждой задачи, составляет, например, 10 миллисекунд.
Внешний эффект разделения процессорного времени между задачами состоит в параллельном выполнении п задач. Когда п задач выполняются в системе параллельно каждая из них в среднем монопольно "располагает" процессором с производительностью 1/n, т. е. работает (развивается) на виртуальном процессоре, производительность которого в п раз меньше, чем у реального физического процессора. Если вместе 1 используется несколько процессоров, то это просто другая реализация, того же логического принципа. В первом случае процессы разделены во времени, во втором в пространстве. Если исключить накладные расходы на планирование и межзадачное взаимодействие, то при выполнении п процессов на k одинаковых процессорах каждому процессу в среднем выделяется виртуальный процессор с производительностью равной k/n части от производительности одного физического процессора.
Простейшая многозадачная однопроцессорная система состоит из процедуры сохраняющей контекст текущего процесса в стеке или в определенной области памяти и восстанавливающей контекст другого процесса, исполнение которого, возобновляется с того места, где он был прерван. Системная программа, выбирающая один из готовых для исполнения процессов, называется планировщиком Стратегии выбора достаточно разнообразны и меняются от одной операционной системы к другой, однако чаще всего используется какой-либо механизм на основе приоритетов. Планировщик работает как один из процессов, который автоматически получает управление после каждого прерывания текущего процесса.
Операции по переключению процессов критичны по времени и должны осуществляться с максимальной эффективностью. На, процессорах, первоначально не разработанных для многозадачного режима, процедура сохранения и восстановления контекста — переключение процессов — реализуется, длинной последовательностью стандартных инструкций процессора. В набор команд процессора, спроектированного для работы в многозадачном режиме, входят специальные инструкции для сохранения и восстановления контекста. Заметим; что переменные процесса не входят в состав контекста и сохранять их специально нет необходимости, поскольку они хранятся в памяти, выделенной процессу и защищенной операционной системой от доступа других процессов.
Планировщик вызывается обычно после обработки каждого прерывания. Если используется стратегия переключения процессов на основе квантования времени (рис. 4), необходимо иметь внешний по отношению к процессору интервальный таймер, вырабатывающий прерывания по истечении кванта времени вы
деленного процессу. При возникновении прерывания исполнение текущего процесса приостанавливается и проверяется, должен ли быть прерван текущий процесс и загружен новый. Принудительная приостановка текущего процесса для передачи управления другому процессу называется вытеснением.
Продолжительность кванта времени влияет на производительность, системы. При коротком кванте улучшается общее время обслуживания коротких процессов. Если величина кванта сопоставима со временем, необходимым для переключения процессов, то большая часть ресурсов процессора будет уходить на планирование и переключение. Если величина кванта слишком большая, увеличивается время ожидания процессов и, соответственно, время реакции.
Процесс исполняется до тех пор, пока не произойдет одно из следующих событий:
- истек выделенный ему квант времени;
- процесс заблокирован, например ждет завершения операции ввода/вывода;
- процесс завершился;
- вытеснен другим процессом, имеющим более высокий приоритет, например обработчиком прерываний.
В многозадачной среде процесс может находиться в одном из трех состояний (рис.5.).
• Готов. Процесс может начать исполнение, как только освободится процессор.
• Исполнение. Процесс исполняется в данный, момент, т; е. процессор исполняет его код.
• Ожидание, заблокирован. Для продолжения работы процессу не хватает какого-либо ресурса, за исключением ЦП, либо он ждет наступления
внешнего события.
На (рис. 5)также показаны возможные переходы из одного состояния в другое:
1. От "Загрузочный модуль на диске" к "Готов". Программа загружается
в оперативную память, настраиваются относительные адреса, выделяются рабочие области для данных, кучи и стека с соответствующими указателями и создается контекст процесса.
2. От "Готов" к "Исполнение". Планировщик выбирает первый в очереди готовых процессов и передает ему управление.
3. От "Исполнение" к "Готов". Процесс либо исчерпал свой квант времени, либо появился готовый для исполнения процесс с более высоким приоритетом
4. От "Исполнение" к "Ожидание". Для дальнейшего развития процесс должен ждать наступления какого-либо внешнего события (завершения операции ввода/вывода или освобождения ресурса, например доступа к памяти, заблокированной другим процессом, или сигнала от другого процесса и т. п.). Иногда процесс переводится в состояние ожидания до истечения некоторого интервала времени с помощью явной инструкции в его программе.
5. От "Ожидание" к "Готов". Когда ожидаемое событие произошло или истекло заданное время, процесс переводится в состояние "Готов" и помещается в очередь готовых процессов, откуда затем выбирается планировщиком.
6. После выполнения последней инструкции программы операционная система удаляет процесс из памяти и освобождает все выделенные ему ресурсы, включая память.
Дата добавления: 2016-02-09; просмотров: 1239;