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

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

Концепция виртуальной памяти базируется на разде- лении понятий адресного пространства и адресов памяти. Поясним суть концепции на следующем примере (рис. 7.9). Будем полагать, что:

• для адресации используется 16 бит, позволяющих обратиться к памяти объемом 216 = 65 536 ячеек.

Таким образом, виртуальное адресное пространство состоит из чисел 0, 1, 2,..., 65 535;

• объем основной памяти составляет 4096 ячеек. Основной памяти соответствует физическое адресное пространство, состоящее из чисел 0, 1,2,..., 4095.

До внедрения виртуальной памяти между адресами основной памяти и адресным пространством подразумевалось взаимно однозначное соответствие. Рассматривались две части адресного пространства: полезные адреса (от 0 до 4095) и бесполезные адреса (от 4096 до 65 535), не соответствующие физическим адресам реальной памяти. В любой момент времени можно было получить прямой доступ только к первым 4096 ячей-

Принцип отображения виртуальных адресов на физические адреса

Рис. 7.9. Принцип отображения виртуальных адресов на физические адреса

кам памяти (от 0 до 4095). При (ошибочном) обращении по бесполезным адресам процессор фиксировал ошибку (например, выводом на экран надписи "Несуществующий адрес памяти") и выполнение программы прекращалось.

Концепция виртуальной памяти состоит в отображении адресов из виртуального адресного пространства (к которым может обратиться программа) в адреса реальной памяти. При этом полагается, что:

  • • помимо основной памяти имеется внешняя (дисковая) память, в которой хранится программа;
  • • имеются средства, позволяющие выполнить требуемое отображение. Механизм действия виртуальной памяти. Выполнение хранящейся на диске программы с виртуальными адресами 0...65 535 состоит из следующей последовательности шагов:
  • • модуль 1 программы с адресами 0...4095 загружается в основную память и исполняется;
  • • если модуль 1 не претерпел изменений, загружается и исполняется модуль 2 программы с адресами 4096...8191. В противном случае следует сначала отправить на диск модуль 1.

Указанная последовательность шагов циклически повторяется до завершения программы.

Об организации виртуальной памяти. Рассмотренная выше модульная структура виртуальной памяти относится к одномерной памяти, адресное пространство которой состоит из линейно нарастающих адресов от 0 до некоторого максимального значения. Такая структура называется страничной организацией памяти, а входящие в состав памяти модули – страницами. Совокупность одномерных адресных пространств образует многомерное адресное пространство. Организацию виртуальной памяти с использованием многомерного адресного пространства принято называть сегментной организацией памяти. Структурной единицей такой организации является сегмент, представляющий собой одномерную память. Сегменты (в отличие от страниц) могут иметь различный размер адресного пространства.

Исторически сложилось так, что сегментная организация памяти предшествовала страничной. Однако для их изучения целесообразно вначале рассмотреть страничную организацию памяти.

 
< Пред   СОДЕРЖАНИЕ     След >