Понятие виртуальной памяти

Глава 5. Память

Дисковая кэш-память

Концепция кэш-памяти применима и к дисковым ЗУ. Принцип кэширования дис-

ков во многом схож с принципом кэширования основной памяти, хотя способы

доступа к диску и ОП существенно разнятся. Если время обращения к любой ячей-

ке ОП одинаково, то для диска оно зависит от целого ряда факторов. Во-первых,

нужно затратить некоторое время для установки головки считывания/записи на

нужную дорожку. Во-вторых, поскольку при движении головка вибрирует, необ-

ходимо подождать, чтобы она успокоилась. В-третьих, искомый сектор может ока-

заться под головкой также лишь спустя некоторое время.

Дисковая кэш-память представляет собой память с произвольным доступом,

≪размещенную≫ между дисками и ОП. Емкость такой памяти обычно достаточно

велика — от 8 Мбайт и более. Пересылка информации между дисками и основной

памятью организуется контроллером дисковой кэш-памяти. Изготавливается дис-

ковая кэш-память на базе таких же полупроводниковых запоминающих устройств,

что и основная память, поэтому в ряде случаев с ней обращаются как с дополни-

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

как UNIX, в качестве дискового кэша используется область основной памяти.

В дисковой кэш-памяти хранятся блоки информации, которые с большой веро-

ятностью будут востребованы в ближайшем будущем. Принцип локальности, обес-

печивающий эффективность обычной кэш-памяти, справедлив и для дисковой,

приводя к сокращению времени ввода/вывода данных от величин 20-30 мс до зна-

чений порядка 2-5 мс, в зависимости объема передаваемой информации.

Среднее время доступа к одноуровневой кэш-памяти можно оценить как:

где время обращения при попадании; KUm — коэффициент промахов;

потери на промах. Для двухуровневой кэш-памяти имеем:

Понятие виртуальной памяти 263

В качестве единицы пересылки может выступать сектор, несколько секторов,

а также одна или несколько дорожек диска. Кроме того, иногда применяется пере-

сылка информации, начиная с выбранного сектора на дорожке до ее конца. В слу-

чае пересылки секторов кэш-память заполняется не только требуемым сектором,

но секторами, непосредственно следующими за ним, так как известно, что в боль-

шинстве случаев взаимосвязанные данные хранятся в соседних секторах. Этот

метод известен также как опережающее чтение (read ahead).

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

ка состоит в том, что далеко не всю информацию, перемещаемую между дисками

и основной памятью, выгодно помещать в дисковый кэш. В ряде случаев определен-

ные данные и команды целесообразно пересылать напрямую между ОП и диском

По этой причине в системах с дисковым кэшем предусматривают специальный

динамический механизм, позволяющий переключать тракт пересылки информа-

ции: через кэш или минуя его.

Одна из привлекательных сторон дискового кэша в том, что связанные с ним

преимущества могут быть получены без изменений в имеющемся аппаратном и про-

граммном обеспечении. Многие серийно выпускаемые дисковые кэши интегриро-

ваны в состав дисковых ЗУ. В качестве примера можно привести модель 23 систе-

мы IBM 3880, в состав которой входят дисковые ЗУ со встроенным контроллером

кэш-памяти и кэш-памятью емкостью от 8 до 64 Мбайт. Дисковая кэш-память при-

меняется и в персональных ВМ.

Дисковая кэш-память обычно включает в себя средства для обнаружения и ис-

правления ошибок. Так, в уже упоминавшейся модели 23 системы IBM 3880 име-

ются средства для обнаружения тройных ошибок (одновременного появления

ошибок в трех разрядах) и исправления одиночных, двойных и большинства трой-

ных ошибок. Более ранняя модель 13 той же системы имела кэш-память емкостью

4-8 Мбайт и умела обнаруживать двойные и исправлять одиночные ошибки.

В обеих моделях замещение информации в кэше производится в соответствии

с алгоритмом минимального предыдущего использования (LRU).

Примечательно, что архитектура кэш-памяти современных магнитных дисков

типа ≪винчестер≫ реализует полностью ассоциативное отображение.

Для большинства типичных применений ВМ характерна ситуация, когда разме-

щение всей программы в ОП невозможно из-за ее большого размера. В этом, одна-

ко, и нет принципиальной необходимости, поскольку в каждый момент времени

≪внимание≫ машины концентрируется на определенных сравнительно небольших

участках программы. Таким образом, в ОП достаточно хранить только используе-

мые в данный период части программ, а остальные части могут располагаться на

внешних ЗУ(ВЗУ). Сложность подобного подхода в том, что процессы обраще-

ния к ОП и ВЗУ существенно различаются, и это усложняет задачу программиста.

Выходом из такой ситуации было появление в 1959 году идеи виртуализации па-

мяти [88], под которой понимается метод автоматического управления иерархи-

ческой памятью, при котором программисту кажется, что он имеет дело с единой

264 Глава 5. Память

памятью большой емкости и высокого быстродействия. Эту память называют вир-

туальной (кажущейся) памятью. По своей сути виртуализация памяти представ-

ляет собой способ аппаратной и программной реализации концепции иерархичес-

кой памяти.

В рамках идеи виртуализации памяти ОП рассматривается как линейное про-

странство N адресов, называемое физическим пространством памяти. Для задач,

где требуется более чем N ячеек, предоставляется значительно большее простран-

ство адресов (обычно равное общей емкости всех видов памяти), называемое

виртуальным пространством, в общем случае не обязательно линейное. Адреса

виртуального пространства называют виртуальными, а адреса физического про-

странства — физическими. Программа пишется в виртуальных адресах, но поскольку

для её выполнения нужно, чтобы обрабатываемые команды и данные находились

в ОП, требуется, чтобы каждому виртуальному адресу соответствовал физичес-

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

сать из ВЗУ в ОП ту часть информации, на которую указывает виртуальный адрес

(отобразить виртуальное пространство на физическое), после чего преобразовать

виртуальный адрес в физический (рис. 5.30).

Среди систем виртуальной памяти можно выделить два класса: системы с фик-

сированным размером блоков (страничная организация) и системы с переменным

размером блоков (сегментная организация). Оба варианта обычно совмещают (сег-

ментно-страничная организация).