Материал: ЛР 4 АРХИТЕКТУРА ПАМЯТИ WINDOWS

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

 

памяти;

 

 

PAGE_READWRITE назначаетдос« енуп

ие-запись»выделеннойвиртуальнойпамяти;

PAGE_WRITECOPY устанавливаетдоступзапись«копированием»сору(

-оnwrite)

 

выделеннойвиртуальнойпамяти.

 

 

PAGE_EXECUTE разрешаетдоступвыполнение« »

выделеннойвиртуальнойпамяти.Тем

 

менее,любаяпопыткачтения

- записиэтойпамятипривекнарушениюдоступает;

PAGE_EXECUTE_READ назначаетдоступвыполнение« »чтение« »;

PAGE_EXECUTE_READWRITE разрешаетдоступвыполнен« »,чтение«»зап« »;исье

PAGE_EXECUTE_WRITECOPY присваиваетдоступвыполнение« »,чтение»«з«

апись

 

копированием»;

 

 

PAGE_NOACCESS запрещаетвсевидыдоступаквыделеннойвиртуальнойпамяти.

 

Любыеизэтихзначений,заисключением

PAGE_NOACCESS,могуткомбинироватьсяпри

помощилогичоператораского

OR соследующивумяфлага: ми

 

PAGE_GUARD определяетпомечезащищенныестракакицы(

guard page)При.

 

любпопыткебращенияйзащищеннойстраницесистемавозбуждаетисключительную

 

 

ситуацию STATUS_GUARD_PAGE иснимаетданнойстраницыстатусзащищенной.

 

Такимобр,защищезомстраницыпредупрежданые

 

юттолькопервомобращениик

 

ним;

 

 

PAGE_NOCACHES запрещаеткэшированиевыделеннойпамяти.

Следуетобъяснизапись,ч акоедоступ« копир»Допу. ,некотораяваниемстраница

 

 

физическойпамятисовместноиспользуетдвумяпроцессами.Еслионапомеченая

 

кактолько«

длячтения»,тодвапроцесбезпроблеммогусовапользесэтострнойв.Однаконицейться

 

 

возможныситуации,когдакаждпртребуетсяоцмуразрешитьссузаписьв

 

этупамять,нобез

воздействияна

другпр.Поцессуй тлезащитыновкизапись«

 

копи» рпоиваниемпытке

записивсовместноиспользуемкопиюстраницси оздасттемаееуспециальнодляпроцесса,

 

 

которомунужноосуществитьзапись.Такимобр,д страницаннзомпересябытьсовместноает

 

 

используемой,апредставлениеееданныхдругих

процессахстаетсянеизменным.

Необходотме,чтоатрибутыитьзащитымостранмогутбытьизмененыцыспомощью

 

 

API-функции Virtual Protect.

 

 

 

Гранулярностьп асипамятиределении

 

Еслипараметр

IpAddress неявляекра64Кбт,тосистеманымя округляетук з

анныйадресв

меньшуюсторонудоближайшегочисла,кратного64Кб.

Windows всегдавырначальныйвнивает

адресвиртуальпамятинаграниой

 

цугрануляраспределенияности

,котораяявляетсячислом

кратным64Кбпри(использованиипроцессоров

Intel)Другими. сл

овами,начаадреслюбогоьный

блоказарезервирпамятипредсточисловбойкратноеннойвляет64Кб.

 

 

6

Крто, гомебъемвыделяемойпамяти

всегдакратенобъемусистемной

страницы,тоесть4

Кб.Поэтомуфункция

VirtualAlloc будетокруглятьлюбоезапрашиваемое

количествобайтов

большуюсторонудоближайшегочисла,кратногообъемустраницы.

 

 

Дескрипторвиртуальныхадресов

Системаотслеживает,какиз ртуальныхстраницявляютсязарезервированными,при

помощиструктуры,называемойдескрипторомвиртуальныхадре сов( Virtual Address Descriptor - VAD). Другогосп пределсобанесущ. ествуетния

Примериспользованияфункции

GlobalMemoryStatus

API-функция GlobalMemoryStatus,записывающаясятакимобразом:

в Delphi:

procedure GlobalMemoryStatus(var lpBuffer: TMemoryStatus); stdcall; procedure GlobalMemoryStatus; external kernel32 name 'GlobalMemoryStatus';

вывомножестводанныхит,имеющихотношенкпамяти,всослтавеструктурыдующей:

 

struct_MEMORYSTATUS {

 

DWORD dwLength;

// Размер структуры MEMORYSTATUS.

DWORD dwMernoryLoad;

//Процентиспользуемойпамяти.

 

DWORD dwTotalPhys;

 

//Количествобайтовфизическойпамяти.

 

DWORD dwАvailPhys;

 

//Количествосвободныхбайтовфизическойпамяти.

 

DWORD dwTotalPageFile;

// Размервбайтахфа

йлаподкачки.

DWORD dwAvailPageFile;

//Количествосвободныхбайтфайлап .дкачки

 

DWORD dwTotalVirtual;

 

//Количествобайтовадресногопространства,

 

//доступнпользователю. го

 

DWORD dwAvailvirtual;

 

//Количест свободныхбайтовпамяти,

//доступныхпользователю.

 

End Type

В Delphi: _MEMORYSTATUS = record

dwLength: DWORD; dwMemoryLoad: DWORD; dwTotalPhys: DWORD; dwAvailPhys: DWORD; dwTotalPageFile: DWORD; dwAvailPageFile: DWORD;

7

dwTotalVirtual: DWORD;

 

 

dwAvailVirtual: DWORD;

 

 

end;

 

 

 

 

 

Управлениевиртуальнойпамятью

 

Рассмотрим,какдиспетчервиртуальнойпамяти

Windows преобразуетадресавиртуальной

памятифиз.

ческие

 

 

 

Преобвиртуальныхзованиедресовфизические:поп

 

адание

Нарисункепоказанпроцпреобразовссприотображениивиртуальныхадресовния

 

 

физические.Онназываетсяпопаданифизич( )страницуе(мскую

 

page hit).

Всевиртуаадресаделятнатриьныечасти.Самлеваябитыясть( 22

 

-31)содержит

индекската

логастраницпроцесса.

Windows поддерживаетотдельныйкаталогстраницдля

каждопроцесса.Еадгохранводномирегистровзтсяцентп альногооцессора,который

 

 

называется CR3В.операцию( переключениязадачвходитпереведение

 

CR3всост,когдаяние

указываетнакаталогстрапроцесса,нкоторыйицосуществляяпереключение.Каталог) страниц

 

 

одержит1024четырехбайэлемен. таовых

 

 

Windows поддкаляерпроцессаждогоиваетсовокупностьтаблицстраниц(

 

page table).

Каждыйэлементкаталстраницодержига

 

туникальныйномер.Поэтому

Windows поддерживает

до1024таблицстраниц.Вдейс( таблицывистраницсоздаюельностолькоприпопыткеися

 

 

обращениякданнымиликодуконкревирадртуальному, когдаесувыделяется

 

 

виртуальнаяпамять).

 

 

 

Следующаячас

тьвиртуальногоадресабиты( 12

-21)используетсявкачествеиндекса

таблицестраниц,соответствующейыбранномуэлементкаталогастраниц.Каждыйэлемент

 

 

таблицы,соответствующийуказанномуиндек,содержит20таршихразрядахномер

 

 

страничногоблока,

которыйзадаетконкретныйстранблокфичныйзическойпамяти.

 

Третья,ипоследняя,частьвиртуаль

ногоадресабиты( 0

-11)предсобойтамещениевляет

данномстраничномблоке.Сочетаниеномерастраничногоблокасмещениядаютвсовокупности

 

 

адресфизическойпамяти.

 

 

 

8

 

 

 

 

 

 

 

)

 

 

 

 

 

 

 

22 21

12 11

0

 

 

 

 

 

 

 

 

 

 

Регистр

 

 

 

Индекс

 

 

 

Смещение

 

 

 

 

 

CR3

 

 

 

вкаталоге

 

в

 

вблоке

 

процессора

 

 

 

страниц

 

 

 

страницы

 

 

 

 

 

 

 

 

 

 

 

Каталогстраниц

Таблицыстраниц

Блоки страницы

Номер

страницы

Физический

 

адрес

4096

байт

иколичествотаблицравно1024,

10 байт,то

 

4х2 30 =Гб.4

 

.

из

 

.

мятиКб4, ,скажем

 

еса

 

впрограмомуже е

жепредставляютиндексы

каталогов

адреса

адресадвух

,одинаковыми

и

- соответствующий

элементвобоихкаталстрноаднуницгахтужетаблицустр

 

 

аниц,след,наовательнодин

тотжестраничныйблок.Такимобразом,процессымогутсовместноиспользоватьфизическую

 

 

 

память.

 

 

 

 

 

 

 

Каитаблицысистемлогстраницых

 

 

Нужнотакжеуп,чтомянуть

Windows поддерживаеткаталогсистемстра( ныхиц

system

page directory)дляработысвиртуальнойпамятью,зарезервированной

 

 

Windows,также, иак

соответствующуюсовокупностьтаблицсистемстра. ыхиц

 

 

 

 

 

 

Совмеиспользуемстраницыное

 

 

Ситуацияссовместноиспользуемойфизическойпамятьюявляетсязначитболеельно

 

 

 

сложной,небудемуглублявдетали,отметимолькоься,что

 

 

 

VMM испконцепциюльзует,

называемуюпрототипировэлементовтаблицыстраниц.Идеяз ниемключаетсявтом,что

 

 

 

 

обычныеэлементытаблкаждогоисовместнозцыиспользпамятьпроцессовующихказываютне

 

 

 

на физическуюпамять,наобщийпрототипэлементаблицыстраниц.Атот,всвоюочередь,

 

 

 

можетссылатьсянасовместноиспользуемуюфизическуюпамять.

 

 

 

 

 

 

Рабочиенаборы

 

 

КаждстрвиртуаницаяадреспространльногобъемомцеГб4существуеттваса

 

 

 

одномизтрехсостояний

- свободном(

free),зарезервированном(

reserved)илипереданном

(committed)Теперь. можнотакжесказ,чтоапередаждаятьстраница( ная

 

 

committed page)

являилидейтс,илянедействительнойтельндействительныхи .Сов купностьстра

 

 

ниц,то

естьпроецнафизическуюровпамять,н зыврабочимнныхборамют(

 

 

 

working set)процесса.

Рабочийнаборпостоянноменямеретого,кактсястраницыподкачиваютсяпамятьили

 

 

 

выполняеобратноедействие. ся

 

 

 

 

 

Системныйрабочийнабор(

system

working

set)характеризуетвиртуальныестраницы

систепамяти,котвданныййорыемомеотображеныфизическуюпамять.

 

 

 

 

Размеррабочегонаборапр граниченцессатемиустан,котопвкамирыееделяет

 

 

Windows

взависимостиотобъемафизическойп .Этимятизначе

 

 

нияприведены

следующейтаблице.

Модель

Объем

Минимальныйразмеррабочего

 

Максиразмеральный

памяти

памяти

наборапроцесса

рабочегонаборапроцесса

Small

<=19Мб

20страниц(80Кб)

 

45страниц(180Кб)

Medium

20-32Мб

30страниц(120Кб)

 

145страниц(580Кб)

Large

>=Мб33

50страниц

(200Кб)

345страниц(1380Кб)

Этипределымогутбытьизмененыспомощью

 

 

API-функции

 

SetProcessWorkingSetSize:

 

 

 

10

Источник: https://studfile.net/preview/16440312/