ВУЗ:
Составители:
// доступного пользователю.
DWORD dwAvailvirtual; // Количество свободных байтов
// памяти, доступных пользователю.
}
Преобразование виртуальных адресов в физические: попадание
Процесс преобразования при отображении виртуальных адресов в физические, называемый попаданием в физическую
страницу, показан на рис. 4.
Рис. 4. Связь виртуальной памяти с физической
Все виртуальные адреса делятся на три части. Самая левая часть (биты 22-31) содержит индекс каталога страниц про-
цесса. Windows поддерживает отдельный каталог страниц для каждого процесса. Его адрес хранится в одном из регистров
центрального процессора, который называется CR3. (В операцию переключения задач входит переведение CR3 в состояние,
когда он указывает на каталог страниц процесса, на который осуществляя переключение.) Каталог страниц одержит 1024
четырехбайтовых элемента.
Windows поддерживает для каждого процесса совокупность таблиц страниц. Каждый элемент каталога страниц содер-
жит уникальный номер. Поэтому Windows поддерживает до 1024 таблиц страниц. ( В действительности таблицы страниц
создаются только при попытке обращения к данным или коду конкретному виртуальному адресу, а не когда выделяется вир-
туальная память).
Следующая часть виртуального адреса (биты 12-21) используется в качестве индекса в таблице страниц, соответствую-
щей выбранному элементу каталога страниц. Каждый элемент таблицы, соответствующий указанному индексу, содержит в
20 старших разрядах номер страничного блока, который задает конкретный страничный блок физической памяти.
Третья, и последняя, часть виртуального адреса (биты 0-11) представляет собой смещение в данном страничном блоке.
Сочетание номера страничного блока и смещения дают в совокупности адрес физической памяти.
Так как каждая таблица страниц состоит из 1024 элементов и количество таблиц равно 1024, общее количество стра-
ничных блоков, которое можно определить таким образом, будет 1024 × 1024 = 2
10
× 2
10
= 2
20
. Так как каждый страничный
блок имеет объем 4 Кб = 4 × 2
10
байт, то теоретический предел физического адресного пространства будет 4 × 2
30
= 4 Гб.
У этой довольно сложной схемы преобразования есть несколько важных преимуществ. Одно из них – очень небольшой
объем страничных блоков, которые легко могут быть размещены в памяти. Гораздо легче найти непрерывный блок памяти
размером 4 Кб, чем, скажем, 64 Кб.
Но основное преимущество заключается в том, что адреса виртуальной памяти двух процессов могут быть сознательно
преобразованы в разные или в одни и те же физические адреса.
Предположим, что Process1 и Process2 обращаются в программе к одному и тому же виртуальному адресу. При преоб-
разовании виртуальных адресов в физические для каждого из процессов используются их собственные каталоги страниц.
Поэтому, хотя индексы в каталогах страниц одинаковы и в том, и в другом случаях, они все же представляют собой индексы
из разных каталогов. Таким способом VMM может гарантировать, что виртуальные адреса каждого процесса будут преобра-
зованы в разные физические адреса.
С другой стороны, VMM может также дать гарантию, что виртуальные адреса двух процессов, независимо от того яв-
ляются ли они одинаковыми или нет, будут преобразованы в один и тот же физический адрес. Один из способов добиться
Виртуальный адрес (32 разряда)
Индекс
в каталоге
страниц
Индекс
в таблице
страниц
Смещение
в блоке
страницы
31 22 21 12 11
Регистр
CR3
процессора
Номер
табли-
цы
стр
а
0
1023
Каталог страниц Таблицы страниц
Номер
блока
страницы
0
1023
Блоки страницы
Физи-
ческий
адрес
4096
байт
Страницы
- « первая
- ‹ предыдущая
- …
- 16
- 17
- 18
- 19
- 20
- …
- следующая ›
- последняя »