В мультипрограммных системах размещение всех выполняемых прогамм в полностью ОП невыполнимо: программы часто имеют большую длину, а емкости существующей ОП ограничены, но поскольку в любой момент времени выполняется лишь небольшая часть программы (участок), то в ОП необязательно хранить всю программу целиком. Неиспользованную в данный момент часть программы можно хранить в ВЗУ.
При подготовке программы используются условные адреса. После выделения памяти прграмме (или е активной части) условные адреса переводятся в исполнительные. Эта процедура назыввается динамическим распределением памяти.
Организация динамического распределения памяти программнвм путем было бы неэффективным, поэтому обычно ипользуют аппаратные методы.
1 способ: использование базовых регистров.
ОС ставит в соответствие каждой пользовательской программе свой базовый адрес. При обработке прграммы реальный или физический адрес образуется суммированием базового и относительного адреса. При этом программа доолжна располагаться в последовательных ячейках и вводиться в ОП целиком.
|
|
При этом свободная память может оказаться фрагментированной, и для ввода новой программы может потребоваться сдвиг содержимого памяти.
Виртуальная память
“+” — гибкое динамическое распределение памяти
— устранение фрагментации
— простота программирования прикладных программ
Пользователь имеет дело не с физической памятью, а с виртуальной, емкость которой, в отличие от реальной, ограничена размерами доступного адресного пространства.
Пользовательской программе доступо все адресное пространство, вне зависимости от наличия в ОП других программ.
Программа представляется и загружается в виртуальных адресах, и лишь при исполнении команды пользователя — преобразование виртуальных адресов в физические.
Преобразование виртуальных адресов в физические упрощается, и устраняется фрагментация, если физическую и виртуальную память разбить на блоки, называемые в этом случае страницами, и содержащими одно и то же число байт. Страницам присваиваются номера. Каждая физическая страница способна хранить одну из виртуальных страниц.
“+” — новая программа, загружаемая в ОП, может быть направлена в любые свободные физические страницы, независимо от того, расположены ли они подряд или нет;
— не требуется перемещение остальной части памяти;
— сокращение объема передачи информации между ВЗУ и ОП (блок загружается только при фактическом к немк обращении).
|
|
Для установления соответствия между страницами ВЗУ и ОП используется специальная страничная таблица.
Страничная таблица для команд программы формируется ОС в прцессе распределения памяти и изменяется ею каждый раз, когда производятся имзменения в ОП.
Процедура обращения к ОП заключается в том, что номер виртуальной страницы извлекается из адреса и используется для входа в страничную таблицу, которая указывает номер соответствующей физической страницы. Этот номер вместе с номером байта определяет физический адрес, по которому происходит обращение к ОП.
Если адресуемая страница отсутствует в ОП, ее необходимо загрузить.
Страничные таблицы для каждой программы храняться в ОП. Для ускорения преобразования адресов используется сверхоперативная или КЭШ-память.
Организация поддержки виртуальной памяти в МП i386+