СТРАНИЧНОЕ РАСПРЕДЕЛЕНИЕ ПАМЯТИ

Виртуальное адресное пространство каждого процесса делится на части одинакового фиксированного системы размера, называемые виртуальными страницами. В общем случае размер виртуального адресного пространства процесса не кратен размеру страницы, поэтому последняя страница каждого процесса самодополняется фиктивной областью. Вся оперативная память компьютера также делится на части такого же размера, называемые физическими страницами (блоками). Размер страницы выбирается равным степени двойки. 4096, 512, 1024 – наиболее часто используемые страницы. Это позволяет упростить механизм преобразования адресов. При создании процесса ОС загружает о оперативную память несколько его виртуальных страниц (начальные страницы каждого сегмента и сегмента данных). Копия всего вирт. адресного пространства процесса находится на диске. Смежные виртуальные страницы не обязательно располагаются в смежных физических страницах. Для каждого процесса ОС создает таблицу страниц – информационную структуру, содержащую записи обо всех вирт. страницах процесса. Запись из таблицы называется дескриптеромстраницы и включает следующую информацию:

1) Номер физич. страницы, в которую загружена данная виртуальная страница.

2) Признак присутствия (флаг), устанавливаемый в единицу, если вирт. страница находится в ОЗУ.

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

4) Признак обращения к странице (флаг), называемый битом доступа. Устанавливается в единицу при каждом обращении по адресу, относящемуся к данной странице.

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

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

21 <ПРЕОБРАЗОВАНИЕ ВИРТУАЛЬНОЙ СТРАНИЦЫ В ФИЗИЧЕКУЮ>

Задача подсистем виртуальной памяти состоит в отображении виртуальных страниц на физические. Объем страницы выбирается кратным степени двойки, из этого следует, что смещение S может быть получено отделением К младших разрядов в двоичной записи адреса, а оставшиеся старшие разряды адреса представляют собой двоичную запись номера страницы (при этом не важно, является страница виртуальной или физической). Например, если размер страницы равен 1,5кб, т.е. 102, то в таком адресе номер страницы будет равен числу 2.

10. 1000111001(2)

10 - № страницы, 1000111001 – смещение

Номер страницы и ее начальный адрес могут быть получены один из другого путем отбрасывания К-нулей, соответствующих смещению. Часто говорят, что таблица страниц содержит начальный физический адрес страниц памяти, хотя на самом деле в таблице указаны только старшие разряды адреса. Начальный адрес страницы также называется базовым. В пределах страницы непрерывная последовательность виртуальных адресов отражается в непрерывную последовательность физических адресов, это значит, что смещения виртуального и физического адреса равны между собой. Из этого следует простая схема преобразования виртуального адреса в физический.

Пусть произошло обращение к памяти по некоторому виртуальному адресу. Аппаратными средствами ЦП выполняются следующие действия:

1) Из специального регистра ЦП извлекается адрес Т таблицы страниц (для каждого процесса этот адрес свой) активного процесса на основании начального адреса Т и № виртуальной страницы Р (старшие разряды виртуального адреса) и длины отдельной записи в таблице страниц (системная константа L). Оределяется адрес нужного дескриптера таблицы страниц, т.е. число (Т + РL)

2) Из этого декриптера извлекается номер соответствующей физической страницы n.

3) К номеру физической страницы присоединяется смещение S (младшие разряды виртуального адреса).

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