Программное обеспечение САПР. Операционные системы. Майстренко Н.В - 15 стр.

UptoLike

Взаимосвязь виртуального адресного пространства процесса с физической и внешней памятью представлена на рис. 2.
Страничные блоки памяти. Как известно, наименьший адресуемый блок памятибайт. Однако самым маленьким
блоком памяти, которым оперирует Windows VMM, является страница памяти, называемая также страничным блоком памя-
ти. На компьютерах с процессорами Intel объем страничного блока равен 4 Кб.
Виртуальное адресное
пространство процесса
Виртуальная
страница 1
Виртуальная
страница 2
Виртуальная
страница 3
Виртуальная
страница 4
Физическая
страница А
Физическая
страница В
Файл
подкачки
EXE или DLL
(загрузочный
модуль)
Файл
данных
Физическая память
Диск
4 Кб
4 Кб
4 Кб
4 Кб
Рис. 2. Взаимосвязь виртуального адресного пространства процесса с
физической и внешней памятью
Память файла подкачки. Страничный файл, который называется также файлом подкачки, в Windows находится на
жестком диске. Он используется для хранения данных и программ точно так же, как и физическая память, но его объем
обычно превышает объем физической памяти. Windows использует файл подкачки (или файлы, их может быть несколько)
для хранения информации, которая не помещается в RAM, производя, если нужно, обмен страниц между файлом подкачки и
RAM.
Таким образом, диапазон виртуальных адресов скорее согласуется с адресами в файле подкачки, чем с адресами физиче-
ской памяти. Когда такое согласование достигается, говорят, что виртуальные адреса спроецированы на файл подкачки, или
являются проецируемыми на файл подкачки.
Набор виртуальных адресов может проецироваться на физическую память, файл подкачки или любой файл.
Файлы, отображаемые в память. В лабораторной работе 2 обсуждались файлы, отображаемые в память, там же был
приведен пример отображения файла. Любой файл применяется для проецирования виртуальной памяти так же, как для этих
целей используется файл подкачки. Фактически единственное назначение файла подкачкипроецирование виртуальной
памяти. Поэтому файлы, проецируемые в память подобным образом, называются отображаемыми в память. На рисунке 2
изображены именно такие файлы. Соответствующие виртуальные страницы являются спроецированными на файл.
Функция CreateFileMapping создает объект "отображение файла" используя дескриптор открытого файла, и возвращает
дескриптор этого объекта. Дескриптор может использоваться с функцией MapViewOfFile, отображающей файл в виртуаль-
ную память.
Начальный адрес объекта "отображение файла" в виртуальной памяти возвращает функция MapViewOfFile. Можно
также сказать, что представление проецируется на файл с дескриптором hFile.
Если параметр hFile, передаваемый функции CreateFileMapping, установлен в -1, то объект "отображение файла" (лю-
бые представления, созданные на основе этого объекта) проецируем на файл подкачки, а не на заданный файл.
Совместно используемая физическая память. О физической памяти говорят, что она совместно используется, если
она отображается на виртуальное адресное пространство нескольких процессов, хотя виртуальные адреса в каждом процессе
могут отличаться.
Если файл, такой как DLL, находится в совместно используемой физической памяти, то о нем можно говорить как о со-
вместно используемом.
Одно из преимуществ файлов, отображаемых в память, заключается в том, что их легко использовать совместно. При-
своение имени объекту "отображение файла" делает возможным совместное использование файла несколькими процессами.
В этом случае его содержимое отображено на совместно используемую физическую память. Возможно также совместное
пользование содержимого файла подкачки с помощью механизма отображения файла.
Адресное пространство процесса. Каждый процесс Win32 получает виртуальное адресное пространство (virtual
address space), называемое также адресным пространством, или пространством процесса, объем которого равен 4 Гб. Таким
образом, код процесса может ссылаться на адреса с &Н00000000 по &HFFFFFFFF (или с 0 по 2
32
– 1 = 4 294 967 295 в деся-
тичной системе счисления). Конечно, так как виртуальные адресаэто просто числа, заявление о том, что каждый процесс
получает свое собственное виртуальное адресное пространство, выглядит довольно бессмысленным.
Тем не менее, это утверждение должно означать, что Windows не видит никакой взаимосвязи в том, что и процесс А, и
процесс В используют один и тот же виртуальный адрес, например &Н40000000. В частности, Windows может сопоставить
(или не сопоставить) виртуальным адресам каждого процесса разные физические адреса.