Понятие мультипрограммирования
Требования, которые предъявляются различными заданиями к ресурсам, необычайно разнообразны. Оптимально использовать их даже при тщательном планировании заданий невозможно. Скажем, если речь идет об оперативной памяти, то любая ее часть, не занятая какими-то системными блоками или текущим заданием, это уже потерянные ресурсы. В случае же раздельных процессоров – центрального и ввода-вывода для заданий с ограниченным вводом-выводом или небольшими вычислениями, процессоры могут простаивать. Выход из создавшегося положения позволяет найти одновременное присутствие в компьютере в активном состоянии нескольких заданий и распределение имеющихся ресурсов между этими заданиями. Тогда, если какое-то задание требует процессора ввода-вывода, то центральный процессор может быть переключен на обработку другого задания. При такой организации несколько заданий по частям выполняется одновременно в системе, а центральный процессор какие-то кванты времени тратит на выполнение каждого из них. Такая схема работы называется мультипрограммированием. Главная цель такой схемы – компенсировать различие в скоростях работы между центральным процессором и процессором ввода-вывода.
Пример. Пусть в системе с мультипрограммированием присутствуют три задания 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.1. Простое взаимодействие процессов
Рис. 12.2. Сложное взаимодействие заданий
На рис.12.2 представлена ситуация сложного взаимодействия заданий. Как только процесс P1 захочет выполнить ввод-вывод I/О14, то окажется, что процесс P2 ждет ввод-вывод I/О23. Таким образом, удалось совместить I/О12 с C21, C13 с I/О22, но ЦП будет простаивать, пока не завершится I/О14
или I/О23. Естественно, обобщенная модель ВС должна простаивать только в том случае, если все находящиеся в активном состоянии процессы одновременно запросили ввод-вывод. Ясно, что чем больше процессов одновременно находится в активном состоянии, тем меньше вероятность потери производительности ВС из-за ожидания ввода-вывода. Однако, чтобы процессы находились в активном состоянии, они должны быть в оперативной памяти, объем которой ограничен. Это следует учитывать при выборе стратегий распределения памяти.
Пусть Ma – множество процессов, находящихся в активном состоянии. При наполнении Ma
необходимо стремиться к тому, чтобы среди них были процессы с большой "вычислительной" частью, занимающие мало памяти (или легко поддающиеся сегментации), использующие НМД и НМЛ, что позволит оптимальнее обеспечить занятость всех компонент системы. Однако оптимальное решение этой задачи известно только для некоторых простых случаев.