Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основной текст лекций.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1.25 Mб
Скачать
    1. Виртуальная память

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

В современных ВМ (кроме простейших) реализовано динамическое распределение между несколькими задачами, существующими в ВМ в процессе решения. Даже для однозадачных конфигураций проблема динамического распределения памяти не теряет актуальности, так как в памяти, помимо задачи пользователя, всегда присутствует операционная система или ее фрагмент. Теоретически наличие всего кода программы в ОП не является принципиально необходимым, так как в каждый момент времени в работе находятся сравнительно небольшие участки программы. Таким образом, в основной памяти достаточно хранит только используемые в данный период части программы, остальные части могут располагаться на внешних ЗУ (ВЗУ). Для преодоления различия в обращении к ОП и ВЗУ в 1959 году была предложена идея виртуализация памяти, под которой понимается метод автоматического управления иерархической памятью, при которой программисту кажется, что он имеет дело с единой памятью большой емкости и высокого быстродействия. Эту память называют виртуальной (кажущейся) памятью. По своей сути виртуализация памяти представляет собой способ аппаратной и программной реализации концепции иерархической памяти.

В рамках идеи виртуальной памяти ОП рассматривается как линейное пространство N адресов, называемое физическим пространством памяти. Для задач, где требуется более чем N ячеек, предоставляется значительно большее пространство адресов (обычно равное общей емкости всех видов памяти), называемое виртуальным пространством, в общем случае пространство не является линейным. Адреса виртуального пространства называют виртуальными, а адреса физического пространства - физическими. Программа пишется в виртуальных адресах, для ее выполнения требуется, чтобы обрабатываемые команды и данные находились в ОП, поэтому каждому виртуальному адресу должен быть поставлен в соответствие физический адрес. Таким образом, в процессе вычислений необходимо переписать из ВЗУ в ОП ту часть информации, на которую указывает виртуальный адрес (отобразить виртуальное пространство на физическое), далее преобразовать виртуальный адрес в физический. Программа компилируется в так называемые «логические» или виртуальные адреса, а в процессе работы происходит автоматическое преобразование логических адресов в физические.

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

      1. Страничная организация памяти

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

При использовании этого метода вся память ВМ (ОЗУ и ВЗУ) рассматривается как единая виртуальная память. Адрес в этой памяти называется виртуальным или логическим. Вся виртуальная память делится на фрагменты одинакового размера, называемые виртуальными страницами. Размер страницы обычно составляем 0,5 – 4 Кбайт, но так, чтобы он был кратен емкости одного сектора магнитного диска.

Физическая память ВМ (ОЗУ и ВЗУ) так же делится на страницы, причем размер физической страницы выбирается равным размеру виртуальной. Таким образом, одна физическая страница может хранить одну виртуальную. Порядок следования виртуальных страниц в программе совсем необязательно сохранять на физических страницах, требуется лишь установить однозначное соответствие между номерами физических и виртуальных страниц. Блок основной памяти, соответствующий странице, часто называют страничным кадром или фреймом. Процесс доступа к данным по их виртуальному адресу иллюстрируется на рис.4.13.

Центральный процессор по виртуальному адресу 1) обращается к ячейке. Виртуальный адрес состоит из номера виртуальной страницы и смещения относительно ее начала. Этот адрес поступает в систему преобразования адресов 2) , с целью получения из него физического адреса ячейки в основной памяти 3). Поскольку смещение в виртуальном и физическом адресе одинаковое, преобразованию подвергается лишь номер страницы. Если преобразователь обнаруживает, что нужная физическая страница отсутствует в основной памяти (произошел промах или страничный сбой), то нужная страница считывается из внешней памяти и заносится в ОП 4), 5).

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

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

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