Cpld

  • 26 окт. 2012 г.
  • 1815 Слова
Лабораторная работа №2
«Исследование виртуальной памяти Windows»

Карта памяти Windows NT
























Регионы в адресном пространстве
Адресное пространство, выделяемое процессу при создании, свободно (не зарезервировано). Чтобы воспользоваться его частью, нужно выделить в нем определенные регионы, вызвав функцию VirtualAlloc. Операция выделения регионаназывается резервированием (reserving).
При резервировании система выравнивает начало региона по четному адресу и учитывает гранулярность выделения ресурсов (allocation granularity) - зависит от типа процессора, у (х86, MIPS, Alpha и PowerPC) она одинакова и составляет 64 Кб.
Резервируя регион в адресном пространстве, ОС обеспечивает кратность размера региона размеру страницы, размер страницы зависитот процессора. Для Win32 для процессоров х86 он равен 4 Кб, а для DEC Alpha — 8 Кб.
Если зарезервировать регион в 10 Кб, система автоматически oкруглит заданное значение до большей четной кратной величины - на процессорах х86 будет выделен регион размером 12 Кб, а на процессорах Alpha — 16 Кб.
Когда зарезервированный регион адресного пространства не нужен, его следует вернуть в общие ресурсысистемы. Эта операция - освобождение (releasing) региона осуществляется вызовом функции VtrtualFree.
Иногда система сама резервирует некоторые регионы адресного пространства «в интересах» процесса, например, для хранения блока переменных окружения процесса (process environment block, РЕВ). Это блок — структура данных, создаваемая, управляемая и разрушаемая исключительно ОС. Выделение региона подРЕВ-блок осуществляется при создании процесса.
Для управления потоками, существующими на данный момент в процессе, система создает блоки переменных окружения потоков (thread environment blocks TEBs). Регионы под эти блоки резервируются и освобождаются по мере создания и разрушения потоков в процессе.
Отметим: требуя от Вас резервировать регионы с учетом гранулярности выделения ресурсов, сама система этихправил не придерживается. Поэтому вероятно, что границы региона, зарезервированного под РЕВ- и ТЕВ-блоки, не будут кратки 64 Кб. Размер такого региона обязательно кратен размеру страниц, характерному для данного типа процессора.
Передача региону физической памяти и возврат
Чтобы использовать зарезервированный регион адресного пространства, нужно выделить физическую память и отобразить ее на этотрегион - операция передачи физической памяти (committing physical storage), функция VirtuallAlloc.
Передавая физическую нет нужно отводить ее целому региону. Можно зарезервировать регион размером 64 Кб и передать физическую память только ее 2-й и 4-й страницам.
Когда физическая память, переданная региону, больше не нужна, ее освобождают - операция возврат физической памяти (decommitting physicalstoragе) функция VirtualFree.
Физическая память
В Windows NT вся ОП обслуживается исключительно системой, и ни одно приложение не может напрямую контролировать эту память.
В Win32 системах физическую память следует рассматривать как данные, хранимые в дисковых файлах со страничной структурой — страничных файлах. Когда приложение передает физическую память, региону адресного пространства (вызываяVirtualAlloc), она на самом деле выделяется из файла, размещенного на жестком диске Размер страничного файла в системе – главный фактор определяющий количество физической памяти, доступное приложениям. Реальный объем ОП имеет меньшее значение. Когда поток пытается получить доступ к данным в адресном пространстве своего процесса, произойти может 1 из 2-х:
1) Данные, к которым обращается поток,находятся в ОП. В этом случае процессор отображает виртуальный адрес данных на физический поток и получает доступ к нужным ему данным.
2) Данные, к которым обращается поток, отсутствуют в ОП, но размещены в страничном файле Попытка доступа к данным генерирует ошибку страницы (page fault), и процессор уведомляет ОС об этой попытке. Тогда ОС ищет свободную страницу в ОП, если ее...
tracking img