Организация виртуальной памяти. Часть 2.

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

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

Динамическое преобразование 24-разрядного адреса

Логический адрес основной памяти состоит из трех частей: старшие разряды определяют индекс сегмента, следующие — индекс страницы, младшие — индекс байта. Размеры индексов зависят от размера страницы, сегмента и общего размера пространства виртуальной памяти. Так, при размере страницы в 2 Кбайт индекс байта, являющийся адресом байта внутри страницы, требует 11 разрядов; при размере сегмента в 64 Кбайт индекс страницы, являющийся номером страницы в сегменте, требует 5 разрядов; при общем размере адресного пространства в 16 Мбайт (т. е. при 24-разрядном адресе) индекс сегмента, являющийся номером сегмента в виртуальном пространстве, требует 8 разрядов.

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

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