Динамическое распределение памяти

           В мультипрограммных системах размещение всех выполняемых прогамм в полностью ОП невыполнимо: программы часто имеют большую длину, а емкости существующей ОП ограничены, но поскольку в любой момент времени выполняется лишь небольшая часть программы (участок), то в ОП необязательно хранить всю программу целиком. Неиспользованную в данный момент часть программы можно хранить в ВЗУ.

       При подготовке программы используются условные адреса. После выделения памяти прграмме (или е активной части) условные адреса переводятся в исполнительные. Эта процедура назыввается динамическим распределением памяти.

       Организация динамического распределения памяти программнвм путем было бы неэффективным, поэтому обычно ипользуют аппаратные методы.

1 способ:         использование базовых регистров.

       ОС ставит в соответствие каждой пользовательской программе свой базовый адрес. При обработке прграммы реальный или физический адрес образуется суммированием базового и относительного адреса. При этом программа доолжна располагаться в последовательных ячейках и вводиться в ОП целиком.

       При этом свободная память может оказаться фрагментированной, и для ввода новой программы может потребоваться сдвиг содержимого памяти.

               

 

 

Виртуальная память

“+” — гибкое динамическое распределение памяти

  — устранение фрагментации

  — простота программирования прикладных программ

Пользователь имеет дело не с физической памятью, а с виртуальной, емкость которой, в отличие от реальной, ограничена размерами доступного адресного пространства.

Пользовательской программе доступо все адресное пространство, вне зависимости от наличия в ОП других программ.

Программа представляется и загружается в виртуальных адресах, и лишь при исполнении команды пользователя — преобразование виртуальных адресов в физические.

       Преобразование виртуальных адресов в физические упрощается, и устраняется фрагментация, если физическую и виртуальную память разбить на блоки, называемые в этом случае страницами, и содержащими одно и то же число байт. Страницам присваиваются номера. Каждая физическая страница способна хранить одну из виртуальных страниц.

“+” — новая программа, загружаемая в ОП, может быть направлена в любые свободные физические страницы, независимо от того, расположены ли они подряд или нет;

  — не требуется перемещение остальной части памяти;

  — сокращение объема передачи информации между ВЗУ и ОП (блок загружается только при фактическом к немк обращении).

       Для установления соответствия между страницами ВЗУ и ОП используется специальная страничная таблица.

 

                                              

 

 

               

 

 

Страничная таблица для команд программы формируется ОС в прцессе распределения памяти и изменяется ею каждый раз, когда производятся имзменения в ОП.

       Процедура обращения к ОП заключается в том, что номер виртуальной страницы извлекается из адреса и используется для входа в страничную таблицу, которая указывает номер соответствующей физической страницы. Этот номер вместе с номером байта определяет физический адрес, по которому происходит обращение к ОП.

       Если адресуемая страница отсутствует в ОП, ее необходимо загрузить.

       Страничные таблицы для каждой программы храняться в ОП. Для ускорения преобразования адресов используется сверхоперативная или КЭШ-память.

                              

 

Организация поддержки виртуальной памяти в МП i386+



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: