Скачиваний:
123
Добавлен:
04.04.2013
Размер:
774.66 Кб
Скачать

9.3 Двухуровневая память

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

Рис. 9.4 Двухуровневая память.

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

Рис. 9.5 Размещение элементов виртуальной памяти различных пользователей в реальной памяти

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

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

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

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

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

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

Рис. 9.6 Формат виртуального адреса в системе поблочного отображения.

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

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

Эта строка содержит реальный адрес b' блока b в реальной памяти. К этому начальному адресу b' прибавляется смещение d, так что образуется нужный реальный адрес r = b'+d.

Все методы поблочного отображения, применяемые в системах с сегментной, страничной и комбинированной странично-сегментной организаций, подобны схеме отображения, которая показана на рис. 9.7.

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

Соседние файлы в папке Лекции 9-12rar