Адресные пространства оперативной памяти. Часть 2.

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

Адресные пространства при распределении памяти

Несмотря на множество совпадающих черт, использование динамической переадресации окон принципиально отличается от классического распределения памяти сегментами по запросу. Эти отличия связаны в первую очередь с различными основными задачами этих способов расширения памяти. Основная цель динамической переадресации окон — увеличение виртуального адресного пространства при значительно меньшем по сравнению с оверлейной структурой числе обменов с внешней памятью; распределение сегментами по запросу — исключение явных (т. е. запланированных в программе) обменов с внешней памятью и улучшение использования физического адресного пространства. В последнем случае адресное поле имеет большую длину (24...36 бит), обеспечивая весьма значительное виртуальное адресное пространство, которое совпадает с сегментированным логическим адресным пространством буфера, описываемым таблицей сегментов. Дальнейшие отображения адресных пространств: аппаратное преобразование адреса через таблицу сегментов в физический адрес; подкачка сегмента или его части из пространства внешней памяти в оперативную при обращении к отсутствующему в оперативной памяти сегменту, реализуемая средствами операционной системы (ОС); первоначальное открытие файла и при необходимости смена таблицы сегментов, т. е. наложение нового логического буферного пространства из общего логического пространства программы (если оно все-таки превышает размер виртуального адресного пространства и соответственно логического буферного пространства)— показаны на рис. 1.6,6. Операции с внешней памятью реализуются операционной системой, подкачка — по прерыванию, наложение — по запросу программы.

Адресные пространства при динамической переадресации окон

Главное отличие динамической переадресации окон (рис. 1.6,е) — отделение виртуального адресного пространства (имеющего в рассматриваемом случае размер 64 Кбайт) от сегментированного логического буферного пространства, которое в несколько раз больше виртуального. Отображение одного пространства в другое происходит с помощью динамического преобразования адресов аппаратно. Для большей гибкости виртуальное адресное пространство разделено на окна, которые обладают известной независимостью друг от друга и от сегментов логического пространства. С помощью таблицы переадресации они «привязываются» к определенным сегментам или их частям; через них программа может «видеть» в каждый момент времени именно эти части, т. е. адресоваться к ним. Отсюда и название элементов виртуального пространства — окна; они могут иметь произвольные размеры в пределах виртуального пространства, но не превышать размера сегмента, на который через него «смотрит» программа. Преобразование окна — сегменты логического буфера описывается таблицей наложений. Модификация таблицы, т. е. «перепрописка» окон, осуществляется по требованиям программы и планируется заранее. Физическое адресное пространство может быть меньше логического буферного пространства как из-за меньшей емкости памяти системы, так и из-за емкости и ограничения оперативной памяти, выделенной заданию при мультипрограммном режиме работы. Преобразование логического буферного пространства в физическое описывается таблицей сегментов, причем некоторые сегменты могут отсутствовать в физической памяти. При обращении к отсутствующему сегменту возникает прерывание, операционная система осуществляет подкачку сегмента из пространства внешней памяти. Подкачка и дальнейшие преобразования аналогичны действиям в классическом распределении сегментами по запросу.