Виртуальная память

advertisement
1
Виртуальная память.
В современных ЭВМ реализовано динамическое распределение памяти между несколькими
задачами, существующими в ЭВМ в процессе решения. Наличие динамического распределения
памяти предполагает, что программа компилируется в т.н. «логических» адресах, а в процессе
работы происходит автоматическое преобразование логических адресов в физические.
Наибольшее распространение в ЭВМ получил метод динамического распределения памяти,
называемый страничной организацией виртуальной памяти.
При использовании этого метода вся память ЭВМ (ОЗУ и ВЗУ) рассматривается как единая
виртуальная память. Адрес в этой памяти называется виртуальным или логическим. Вся
виртуальная память делится на фрагменты одинакового размера, называемые виртуальными
страницами. Размер страницы обычно составляет 0,5 – 4 Кбайт. Виртуальный адрес
представляется состоящим из двух частей – номера страницы и номера слова на странице
(смещения).
Физическая память ЭВМ (ОЗУ и ВЗУ) так же делится на страницы, причем размер физической
страницы выбирается равным размеру виртуальной. Таким образом, одна физическая страница
может хранить одну виртуальную, причем порядок следования виртуальных страниц в программе
совсем необязательно сохранять на физических страницах. Достаточно лишь установить
однозначное соответствие между номерами виртуальных и физических страниц.
Соответствие между номерами виртуальных и физических страниц устанавливается с помощью
специальной страничной таблицы, которую поддерживает операционная система. Размер
физической страницы равен размеру виртуальной, поэтому преобразования смещений на странице
не производится.
Поскольку размер страничной таблицы достаточно велик, она хранится целиком в ОЗУ и
модифицируется операционной системой всякий раз, когда в распределении памяти происходят
изменения.
Для увеличения скорости обращения к памяти активная часть страничной таблицы обычно
хранится в быстродействующей памяти, организованной, как правило, по ассоциативному
принципу.
Если в результате преобразования виртуального адреса в физический оказывается, что требуемая
физическая страница располагается в ВЗУ, то выполнение программы становится невозможным,
пока не произойдет «подкачка» требуемой страницы в ОЗУ. Такая ситуация называется
страничным сбоем и должна формировать внутреннее прерывание, по которому запускается
подпрограмма чтения страницы из ВЗУ в ОЗУ.
При этом возникает серьезная проблема поиска той страницы, которую можно удалить из ОЗУ,
чтобы на освободившееся место записать требуемую страницу. Серьезность проблемы
обусловлена тем, что неудачный выбор удаляемой страницы (в ближайшее время она вновь
понадобится) связан со значительной потерей времени на передачу страниц между ОЗУ и ВЗУ.
Правило, по которому выбирается страница для удаления из ОЗУ, называется алгоритмом
замещения.
Например эвристические алгоритмы замещения используют информацию о потоке обращений к
страницам в прошлом (историю процесса) для экстраполяций характеристик потока обращений в
будущем. Как правило, используют три типа информации о прошлом: время пребывания страницы
в ОЗУ, число обращений к страницам за определенный промежуток времени или отрезки времени
с момента последнего обращения к страницам.
Download