Операционные системы/Мультипрограммный режим
Материал из eSyr's wiki.
Мультипрограммный режим – режим, в котором возможна организация переключения выполнения с одной программы на другую.
[править] Пример мультипрограммного режима
На рисунке изображена мультипрограммная система, обрабатывающая одновременно 3 программы (процесса). t1 – момент времени в который программа 1 будет остановлена для ожидания завершения обмена (до момента времени t3). В момент времени t1 система запускает выполнение программы 2, которая выполняется до момента времени t2. С t2 программа 2 также начинает ждать завершения своего обмена и т.д.
[править] Аппаратная поддержка мультипрограммного режима
Для корректной организации мультипрограммной обработки необходима аппаратная поддержка ЭВМ. Как минимум аппаратура ЭВМ должна поддерживать следующие функции.
- Аппарат защиты памяти. Аппаратная возможность ассоциирования некоторых областей ОЗУ с одним из выполняющихся процессов/программ. Настройка аппарата защиты памяти происходит аппаратно, то есть назначение программе/процессу области памяти происходит программно (т.е., в общем случае операционная система устанавливает соответствующую информацию в специальных регистрах), а контроль за доступом – автоматически. При этом при попытке другим процессом/программой обратиться к этим областям ОЗУ происходит прерывание “Защита памяти”
- Наличие специального режима работы ЦП (т.н. привилегированный режим, режим супервизора или режим ОС). Суть заключается в следующем: все множество машинных команд разбивается на 2 группы. Первая группа – команды, которые могут исполняться всегда (пользовательские команды). Вторая группа – команды, которые могут исполняться только в том случае, если ЦП работает в режиме ОС. Если ЦП работает в обычном режиме (режиме пользователя), то попытка выполнения специализированной команды вызовет прерывание – "Запрещенная команда”. Какова необходимость наличия такого режима выполнения команд? Простой пример – управление аппаратом защиты памяти. Для корректного функционирования этого аппарата необходимо обеспечить централизованный доступ к командам настройки аппарата защиты памяти. То есть эта возможность должна быть доступна не всем программам.
- Необходимо наличие аппарата прерываний. Как минимум в машине должно быть прерывание по таймеру, что позволит избежать “зависания“ всей системы при зацикливании одной из программ.
[править] Некоторые проблемы
- Вложенные обращения к подпрограммам. В вызываемую подпрограмму нужно передать параметры. Возникает проблема сохранения регистров. Требуются лишние затраты времени.
- Накладные расходы при смене обрабатываемой программы:
- необходимость включения режима блокировки прерываний;
- программное сохранение / восстановление содержимого регистров при обработке прерываний;
- Перемещаемость программы по ОЗУ. Сложно перемещать программу по оперативной памяти так, чтоб не было привязки программы к определенному диапазону адресов. Программу с внутренней адресацией надо положить на физическую память.
- Фрагментация памяти. Суть этой проблемы следующая. При размещении новых программ/процессов в ОЗУ ЭВМ (для их мультипрограммной обработки) образуются свободные фрагменты ОЗУ между программами/процессами. Суммарный объем свободных фрагментов может быть достаточно большим, но, в то же время, размер самого большого свободного фрагмента недостаточно для размещения в нем новой программы/процесса. В этой ситуации возможна деградация системы – в системе имеются незанятые ресурсы ОЗУ, но они не могут быть использованы. Путь решения этой проблемы – использование более развитых механизмов организации ОЗУ и виртуальной памяти, позволяющие отображать виртуальное адресное пространство программы/процесса не в одну непрерывную область физической памяти, а в некоторую совокупность областей.