Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Совместно используемая физическая память
О физической памяти говорят, что она совместно используется (shared), если она отображается на виртуальное адресное пространство нескольких процессов, хотя виртуальные адреса в каждом процессе могут отличаться. Следующий рисунок иллюстрирует это утверждение. Если файл, такой как DLL, находится в совместно используемой физической памяти, то о нем можно говорить как о совместно используемом. Одно из преимуществ файлов, отображаемых в память, заключается в том, что их легко использовать совместно. Присвоение имени объекту «отображение файла» делает возможным совместное использование файла несколькими процессами. В этом случае его содержимое отображено на совместно используемую физическую память (см. рис. 3). Возможно также совместное пользование содержимого файла подкачки с помощью механизма отображения файла. Рис. 3 В частности, можно создать такой объект, проецируемый на файл подкачки, просто установив параметр hFile функции CreateFileMapping в -1. Рис. 4 Адресное пространство процесса Каждый процесс Win32 получает виртуальное адресное пространство, объем которого равен 4 Гб. Таким образом, код процесса может ссылаться на адреса с &Н00000000 по &HFFFFFFFF (или с 0 по 232 - 1 = 4 294 967 295 в десятичной системе счисления). Конечно, так как виртуальные адреса - это просто числа, заявление о том, что каждый процесс получает свое собственное виртуальное адресное пространство, выглядит довольно бессмысленным. Тем не менее, это утверждение должно означать, что Windows не видит ни какой взаимосвязи в том, что и процесс А, и процесс В используют один и тот же виртуальный адрес, например &Н40000000. В частности, Windows может сопоставить (или не сопоставить) виртуальным адресам каждого процесса разные физические адреса. Использование адресного пространства в Windows 9 x На рис. 5 показана общая схема использования адресного пространства процесса в Windows 9x. Область А Как следует из рис. 5, Windows 9х резервирует область А, объем которой всего лишь 4 Кб, для того же, что и Windows NT первые 64 Кб памяти, - с целью предупреждения о нулевых указателях. Эта область защищена, и попытка обращения к ней из программы пользовательского режима приводит к ошибке нарушения доступа. Область В Данная область памяти используется для поддержания совместимости с приложениями DOS и 16-разрядными приложениями Windows. Несмотря на потенциальную доступность, она не должна использоваться для программирования. Область С Область С - это адресное пространство, используемое прикладными программами и их DLL. Здесь размещаются также и модули Windows. Например, если приложению требуется управляющий элемент OCX, его модуль будет находиться в этой области. Область D Windows 9х отображает системные DLL Win32 (KERNEL32.DLL, USER32.DLL и т.д.) в это адресное пространство. Данные файлы используются совместно, то есть несколько процессов могут обращаться к единственной копии такого файла в физической памяти. Область D доступна для программ пользовательского режима (однако размещать их здесь не рекомендуется). Область Е Данная область также содержит совместно используемые файлы Windows, такие как исполнительная система Windows и ядро, драйверы виртуальных устройств, файловая система, программы управления памятью. Она также доступна для программ пользовательского режима.
Рис. 5 |
Последнее изменение этой страницы: 2019-03-20; Просмотров: 84; Нарушение авторского права страницы