Операционные системы/Мультипрограммный режим

Материал из eSyr's wiki.

Версия от 20:18, 22 января 2010; Nexor (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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

[править] Пример мультипрограммного режима

На рисунке изображена мультипрограммная система, обрабатывающая одновременно 3 программы (процесса). t1 – момент времени в который программа 1 будет остановлена для ожидания завершения обмена (до момента времени t3). В момент времени t1 система запускает выполнение программы 2, которая выполняется до момента времени t2. С t2 программа 2 также начинает ждать завершения своего обмена и т.д.

[править] Аппаратная поддержка мультипрограммного режима

Для корректной организации мультипрограммной обработки необходима аппаратная поддержка ЭВМ. Как минимум аппаратура ЭВМ должна поддерживать следующие функции.

  1. Аппарат защиты памяти. Аппаратная возможность ассоциирования некоторых областей ОЗУ с одним из выполняющихся процессов/программ. Настройка аппарата защиты памяти происходит аппаратно, то есть назначение программе/процессу области памяти происходит программно (т.е., в общем случае операционная система устанавливает соответствующую информацию в специальных регистрах), а контроль за доступом – автоматически. При этом при попытке другим процессом/программой обратиться к этим областям ОЗУ происходит прерывание “Защита памяти”
  2. Наличие специального режима работы ЦП (т.н. привилегированный режим, режим супервизора или режим ОС). Суть заключается в следующем: все множество машинных команд разбивается на 2 группы. Первая группа – команды, которые могут исполняться всегда (пользовательские команды). Вторая группа – команды, которые могут исполняться только в том случае, если ЦП работает в режиме ОС. Если ЦП работает в обычном режиме (режиме пользователя), то попытка выполнения специализированной команды вызовет прерывание – "Запрещенная команда”. Какова необходимость наличия такого режима выполнения команд? Простой пример – управление аппаратом защиты памяти. Для корректного функционирования этого аппарата необходимо обеспечить централизованный доступ к командам настройки аппарата защиты памяти. То есть эта возможность должна быть доступна не всем программам.
  3. Необходимо наличие аппарата прерываний. Как минимум в машине должно быть прерывание по таймеру, что позволит избежать “зависания“ всей системы при зацикливании одной из программ.

[править] Некоторые проблемы

  1. Вложенные обращения к подпрограммам. В вызываемую подпрограмму нужно передать параметры. Возникает проблема сохранения регистров. Требуются лишние затраты времени.
  2. Накладные расходы при смене обрабатываемой программы:
    • необходимость включения режима блокировки прерываний;
    • программное сохранение / восстановление содержимого регистров при обработке прерываний;
  3. Перемещаемость программы по ОЗУ. Сложно перемещать программу по оперативной памяти так, чтоб не было привязки программы к определенному диапазону адресов. Программу с внутренней адресацией надо положить на физическую память.
  4. Фрагментация памяти. Суть этой проблемы следующая. При размещении новых программ/процессов в ОЗУ ЭВМ (для их мультипрограммной обработки) образуются свободные фрагменты ОЗУ между программами/процессами. Суммарный объем свободных фрагментов может быть достаточно большим, но, в то же время, размер самого большого свободного фрагмента недостаточно для размещения в нем новой программы/процесса. В этой ситуации возможна деградация системы – в системе имеются незанятые ресурсы ОЗУ, но они не могут быть использованы. Путь решения этой проблемы – использование более развитых механизмов организации ОЗУ и виртуальной памяти, позволяющие отображать виртуальное адресное пространство программы/процесса не в одну непрерывную область физической памяти, а в некоторую совокупность областей.
Личные инструменты
Разделы