Поблочное отображение

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

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

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

Преобразование виртуального адреса в поблочном отображении

Адреса в системе поблочного отображения являются двухкомпонентными (двумерными). Чтобы обратиться к конкретному элементу данных, программа указывает блок, в котором этот элемент находится и смещение этого элемента относительного начала блока. Виртуальный адрес v указывается при помощи упорядоченной пары (b,d), где b – номер блока, в котором размещается соответствующий элемент, а d – смещение относительно начального адреса этого блока.

Номер блока b Смещение d Виртуальный адрес v = (b, d)

Таблица отображения страниц

Преобразование адреса виртуальной памяти v = (b,d) в адрес реальной памяти r осуществляется следующим образом. Каждый процесс имеет собственную таблицу отображения блоков, которую система ведет в реальной памяти. Реальный адрес a этой таблицы загружается в специальный регистр ЦП, называемый регистром начального адреса таблицы блоков. Таблица отображения блоков содержит по одной строке для каждого блока процесса, причем эти строки идут в последовательном порядке, сначала блок 0, затем 1, и т.д. Номер блока b суммируется с базовым адресом a таблицы, образуя реальный адрес строки таблицы для блока b. Эта строка содержит реальный адрес b’ блока b в реальной памяти. К этому начальному адресу b’ прибавляется смещение d, так что образуется нужный адрес r = b’+d.



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


9565717276797700.html
9565743203085936.html
    PR.RU™