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