Для того, чтобы обеспечить интенсивное использование дорогостоящих ресурсов ими нужно эффективно управлять. Стратегии управления памятью направлены на то, чтобы обеспечить наилучшее возможное использование ресурсов основной памяти. Стратегии управления памятью делятся на следующие категории:
1) Стратегия выборки
а) стратегия выборки по запросу (по требованию)
б) стратегии упреждающей выборки
2) стратегии размещения
3) стратегии замещения
Стратегии выборки ставят своей целью определять, когда следует “втолкнуть” очередной блок программы или данных в основную память. Предполагалось, что наиболее целесообразно осуществлять выборку по запросу: согласно этому принципу, очередной блок загружается в основную память, когда его запрашивает работающая программа. Считалось, что, поскольку в общем случае мы не можем предсказывать, куда будет передаваться управление по программе, то дополнительные затраты, связанные с прогнозированием дальнейшего хода программы и упреждающей выборкой, будут значительно превышать ожидаемые выгоды. Сейчас же многие специалисты считают, что упреждающая выборка вполне может обеспечить повышение быстродействия системы.
Стратегии размещения ставят своей целью определить, в какое место основной памяти следует помещать поступающую программу. Основные принципы: занятие “первого подходящего”, “наиболее подходящего”, “наименее подходящего”.
Стратегии замещения ставят своей целью определить, какой блок программы или данных следует “вытолкнуть” из основной памяти, чтобы освободить место для записи поступающих программ или данных.
Самые первые вычислительные машины требовали связного распределения памяти – каждая программа должна была занимать один сплошной блок ячеек памяти. После появления мультипрограммирования с разделами переменного размера стало ясно, что гораздо более эффективным может быть несвязное распределение памяти. При несвязном распределении памяти программа разбивается на ряд блоков, которые могут размещаться в основной памяти в участках, не обязательно соседствующих друг с другом. Операционной системе гораздо сложнее обеспечить несвязное распределение памяти, однако подобный подход обладает важным преимуществом: если основная память имеет ряд небольших свободных участков вместо одного большого, то, как правило, операционная система всё же может загрузить и выполнить программу, которой в противном случае пришлось бы ждать.
Организацию памяти в типичном случае связного распределения для одного пользователя можно представить так:
Операционная система
Программа пользователя
Свободно
Размер программ в обычном случае ограничивается ёмкостью имеющейся основной памяти, однако, существует возможность выполнения программ, превышающих по размеру основную память, благодаря использованию так называемых оверлейных сегментов. Если какой-то конкретный модуль программы не работает в течении периода выполнения программы, то из внешней памяти можно выбрать другой модуль и записать его в основную память на место уже не нужного модуля. Оверлейный режим предоставляет программисту возможность как бы расширить ограниченные рамки основной памяти.
Если программа пользователя начинает работать неправильно, то это может привести к порче ОС. Защиту ОС однопрограммной вычислительной машины можно реализовать с помощью одного граничного регистра, встроенного в УП. Граничный регистр содержит самый старший адрес команды относящейся к ОС. Если пользователь попытается войти в ОС, то его команда будет перехвачена. Для обращения за определёнными услугами к ОС в распоряжение пользователя предоставляются специальные команды.