Введение в архитектуру компьютеров

Понятие мультипрограммирования


Требования, которые предъявляются различными заданиями к ресурсам, необычайно разнообразны. Оптимально использовать их даже при тщательном планировании заданий невозможно. Скажем, если речь идет об оперативной памяти, то любая ее часть, не занятая какими-то системными блоками или текущим заданием, это уже потерянные ресурсы. В случае же раздельных процессоров – центрального и ввода-вывода для заданий с ограниченным вводом-выводом или небольшими вычислениями, процессоры могут простаивать. Выход из создавшегося положения позволяет найти одновременное присутствие в компьютере в активном состоянии нескольких заданий и распределение имеющихся ресурсов между этими заданиями. Тогда, если какое-то задание требует процессора ввода-вывода, то центральный процессор может быть переключен на обработку другого задания. При такой организации несколько заданий по частям выполняется одновременно в системе, а центральный процессор какие-то кванты времени тратит на выполнение каждого из них. Такая схема работы называется мультипрограммированием. Главная цель такой схемы – компенсировать различие в скоростях работы между центральным процессором и процессором ввода-вывода.

Пример. Пусть в системе с мультипрограммированием присутствуют три задания P1, P2, P3 c параметрами

P1 (C1,I/O1, M1), P2 (C2, I/O2, M2), P3(C3, I/O3, M3),

где Сi – процессорное время; I/Oi – время ввода-вывода; Mi – требуемая ОП.

Пусть общий объем ОП для выполнения трех заданий равен 100 К.

Если бы при заданных ресурсах выполнялось только задание P1, то мы не использовали бы 80 К памяти, кроме того, центральный процессор (ЦП) простаивал бы в течение времени I/O1. В случае же обработки трех процессов память используется полностью, а при выполнении I/O1 мы ЦП передали бы второму процессу, затем третьему, и, следовательно, максимальный простой ЦП достигал бы лишь t = I/O1-(C2 + C3) вместо I/О1. Таким образом, за время, необходимое для выполнения одного процесса в однопрограммном режиме, мы можем выполнить два и более заданий в режиме мультипрограммирования.


Однако такая ситуация возникает лишь для простой модели, описанной на рис. 12.1. В общем случае при обработке процессов время работы ЦП и I/О регулярно перемежается, что создает более трудные взаимодействия

между процессами (рис. 12.2).

Рис. 12.1. Простое взаимодействие процессов

Рис. 12.2. Сложное взаимодействие заданий

На рис.12.2 представлена ситуация сложного взаимодействия заданий. Как только процесс P1 захочет выполнить ввод-вывод I/О14, то окажется, что процесс P2 ждет ввод-вывод I/О23. Таким образом, удалось совместить I/О12 с C21, C13 с I/О22, но ЦП будет простаивать, пока не завершится I/О14

или I/О23. Естественно, обобщенная модель ВС должна простаивать только в том случае, если все находящиеся в активном состоянии процессы одновременно запросили ввод-вывод. Ясно, что чем больше процессов одновременно находится в активном состоянии, тем меньше вероятность потери производительности ВС из-за ожидания ввода-вывода. Однако, чтобы процессы находились в активном состоянии, они должны быть в оперативной памяти, объем которой ограничен. Это следует учитывать при выборе стратегий распределения памяти.

Пусть Ma – множество процессов, находящихся в активном состоянии. При наполнении Ma

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


Содержание раздела