PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

Обувь northland northland-festland.ru.

Память. Верхний уровень

Принципы организации виртуальной памяти

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

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

Рассмотрим организацию таблицы страниц и механизма замещения. Блоки памяти в рассматриваемом примере имеют одинаковую длину, но это не обязательно. Простейший вариант : размеры блоков (страниц) одинаковы, равны "2к"(2 в степени к) и выровнены по "2-к"(2 в степени к) границам адресов (см. рисунок ниже). Пусть физическая память имеет ограниченный размер "2к+3"(2 в степени к+3) и разбита на 8 страниц, а выполняемая программа содержит N страниц размером "=<2к"(меньше, либо равно 2 в степени к). Для установления соответствия операционная система формирует в системной области памяти таблицу страниц, которая содержит информацию о всех блоках выполняемой программы.

Схема виртуальной памяти на основе страниц

Запись для каждого блока содержит обычно следующие поля:

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

2) записать номер страницы физической памяти, куда записана страница, а также установить

3) "бит присутствия" БП, который говорит о том, что данная страница находится в ОЗУ , в соответствующей строке таблицы автоматически устанавливается

4) "бит изменения" БИ устанавливается, если при работе программы в данную страницу происходит запись, т.е. страница подвергается модификации. Этот бит будет использован, если данная страница удаляется из ОЗУ, поскольку на его место требуется поместить в память новую страницу. Старую страницу требуется сохранять на диске только в том случае, если бит изменения был установлен, (т.е. страница была изменена).

Обычно для записи информации о местоположении страницы на диске (номер блока/сектора) используется специальная таблица — карта диска. Рассмотрим более подробно, как работает виртуальная память. Линейный (виртуальный ) адрес состоит из двух частей: номера страницы и адреса внутри страницы. По номеру страницы выбирается строка таблицы страниц. Если бит присутствия установлен в "1", то страница в ОЗУ есть. Виртуальный номер страницы замещается реальным номером страницы в ОЗУ, взятым из строки таблицы. Происходит обращение к странице ОЗУ с учетом смещения. Если бит присутствия установлен в "0", то это значит данной страницы в ОЗУ нет. Происходит прерывание и загрузка нужной страницы с установкой бита присутствия в "1". Затем формируется реальный адрес и считывается/ записывается операнд. Загрузку страниц определяют три группы правил.