![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
При страничной организации виртуальное адресное пространство каждого процесса делится на части одинакового, фиксированного для данной системы размера, называемые виртуальными страницами (Virtual pages). В общем случае размер виртуального адресного пространства не кратен размеру страницы, поэтому последняя страница дополняется фиксированной областью.
Вся оперативная память машины также делится на части такого же размера, называемые физическими страницами (или блоками, или кадрами). Размер страницы выбирается равным степени двойки: 1024, 2408,4096 байт и т. д. Это позволяет упростить механизм преобразования адресов.
При создании процесса ОС загружает в операционную память несколько его виртуальных страниц (начальные страницы кодового сегмента и сегмента данных). Копия всего виртуального адресного пространства процесса находится на диске. Смежные виртуальные страницы не обязательно находятся в смежных физических страницах. Для каждого процесса ОС создает таблицу страниц - информационную структуру, содержащую записи обо всех виртуальных страницах процесса (рис. 3.12).
Запись таблицы (дескриптор страницы) включает следующую информацию:
· номер физической страницы (N ф.с), в которую загружена данная виртуальная страница;
· признак присутствия Р, устанавливаемый в единицу, если данная страница находится в оперативной памяти;
· признак модификации страницы D, который устанавливается в единицу всякий раз, когда производится запись по адресу, относящемуся к данной страницы;
· признак обращения А к странице, называемый также битом доступа, который устанавливается в единицу при каждом обращении по адресу, относящемуся к данной странице;
· другие управляющие биты, служащие, например для целей защиты или совместного использования памяти на уровне страниц.
Перечисленные признаки в большинстве моделей процессов устанавливаются аппаратно схемами процессора при выполнении операций с памятью. Информация из таблицы страниц используется для решения вопроса о необходимости перемещения той или иной страницы между памятью и диском, а также для преобразования виртуального адреса в физический. Сами таблицы страниц, так же как и описываемые ими страницы размещаются в оперативной памяти.
Поскольку процесс может использовать большой объем виртуальной памяти (например, в Windows 2000 он равен 23 2= 4 Гбайт), при использовании страницы объемом 4 Кбайт (212) потребуется 220записей в таблице страниц для каждого процесса. Понятно, что выделять такое количество оперативной памяти под таблицы страниц нецелесообразно. Для преодоления этой проблемы большинство схем виртуальной памяти хранит таблицы страниц не в реальной, а в виртуальной памяти. Это означает, что сами таблицы страниц становятся объектами страничной организации. При работе процесса как минимум часть его таблицы страниц должна располагаться в основной памяти, в том числе запись о странице, выполняющейся в настоящий момент. Адрес таблицы страниц включается в контекст процесса. При активизации очередного процесса ОС загружает адрес его таблицы страниц в специальный регистр.
При каждом обращении к памяти выполняется поиск номера виртуальной страницы, содержащей требуемый адрес, затем по этому номеру определяется нужный элемент таблицы страниц, и из него извлекается описывающая страницу информация. Далее анализируется признак присутствия, и если данная виртуальная страница находится в оперативной памяти, то выполняется преобразование виртуального адреса в физический. Если же нужная виртуальная страница в данный момент выгружена на диск, то происходит страничное прерывание.
Выполняющийся процесс переводится в состояние ожидания, и активизируется процесс из очереди процессов, находящихся в состояние готовности. Параллельно программа обработки страничного прерывания находит на диске требуемую виртуальную страницу и пытается ее загрузить в оперативную память. Если в памяти имеется свободная физическая страница, то загрузка выполняется немедленно. Если же свободных страниц нет, то на основании принятой в данной системе стратегии замещения страниц решается вопрос о том, какую страницу следует выгрузить из оперативной памяти.
После того как выбрана страница, которая должна покинуть оперативную память, обнуляется ее бит присутствия и анализируется ее признак модификации. Если удаляемая страница за время последнего требования в оперативной памяти была модифицирована, то ее новая версия должна быть переписана на диск. Если нет, то принимается во внимание, что на диске уже имеется предыдущая копия этой виртуальной страницы, и никакой записи на диск не производится. Физическая страница объявляется свободной. Из соображений безопасности в некоторых системах освобождаемая страница обнуляется, чтобы невозможно было использовать содержимое выгруженной страницы. Для хранения информации о положении вытесненной страницы в страничном файле ОС может использовать специальные поля таблицы страниц.
Виртуальный адрес при страничном распределении может быть представлен в виде пары (Р, Sv), где Р - номер виртуальной страницы процесса (нумерация страниц начинается с 0), a Sv- смещение в пределах виртуальной страницы. Физический адрес также может быть представлен в виде пары (N, Sf), где N - номер физической страницы, a Sf - смещение в пределах физической страницы. Задача подсистемы виртуальной памяти состоит в отображении пары значений (Р, Sv) в пару (N, Sf).
Практика использования виртуальной памяти показала, что для нее справедлив закон локализации большинства обращений в небольшое количество недавно использованных страниц.
Дата публикования: 2014-11-04; Прочитано: 665 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!