Понятие виртуальной памяти
Глава 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).
Среди систем виртуальной памяти можно выделить два класса: системы с фик-
сированным размером блоков (страничная организация) и системы с переменным
размером блоков (сегментная организация). Оба варианта обычно совмещают (сег-
ментно-страничная организация).