Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы / Задания / ЛР 4 АРХИТЕКТУРА ПАМЯТИ WINDOWS

.pdf
Скачиваний:
12
Добавлен:
15.02.2021
Размер:
2.68 Mб
Скачать

BOOL SetProcessWorkingSetSize(

 

 

HANDLE hProcess,

//Открытыйдескриинтересующегорп . цесса

 

DWORD dwMinimumWorkingSetSize,

 

 

 

// Задаетмин.

размеррабочегонав айтахора.

 

DWORD dwMaximumWorkingSetSize

 

 

 

//Задмаксимальныйет

размеррабочегонав айтахора.

 

);

 

 

 

 

 

Присвоениекаждому

издвухпараметровзначениямера

 

-1приведетктому,чтоф нкция

сожметразмеррабочегонаборадои0темсамымвреудалитданныйеннопрфизическойцесс

 

 

памяти.

 

 

 

 

 

Действительныйразмеррабочегонаборапроцессамизменятьсяжетвовремени,таккак

 

 

Windows увеличиврабочийнабор,еслиз мечает,чтоупроцессабольшоеколичество

 

 

страничныхпромахов.

 

 

 

 

Пределыразмерасистемногорабочегонабораприведеныследующейтаблице.

 

 

Модель

Объем

 

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

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

памяти

памяти

 

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

 

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

Small

<=19Мб

 

388страниц(1,5Мб)

 

500страниц(2,0Мб)

Medium

20-32Мб

 

688страниц(2,7Мб)

 

1150страниц(4,5Мб)

Large

>=Мб32

 

1188страниц(4,6Мб)

 

2050страниц(8Мб)

 

 

 

Базаданныхстраничныхблоков

 

Windows фиксирует coстоянкаждойфизическойстраницыпамятивструктуреданных,

 

назывбазойданныхстраничныхемойблоков(

 

 

Page Frame Database)Каждая. физическаястраница

можетнахводизвнитьсяоразлсьмистоя: чныхий

 

 

 

 

активная,илидействительная(

active, valid)Страница. втекущиймомеотображаетсян

виртуальнуюпамять,входя,такимоб,разомнаборбочийстраниц;

переходная( transition)Страница. впроцессепереходакактивнсост; омуянию

резервная(

standby)Страница. толькочтовышлаизсостоя

нияактивн« »,ноосталасья

неизменной;

 

измененная( modified)Страница. вышлаизсостоянияактивная« »Ее.содержание,пока онаходиласьвуказанномсостоя,былоиз, ещзаписаноиионеенадиск;

измененнаянезаписанная(

modified no write). Страницанаходитсявсостоянии

«измененная»,ноособопомеченакакстраница,содержимоекоторойнесброшенона

 

11

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

Windows;

свободная( free)Стра. своб,ницаоодпроизвольныеержитназаписи,следовательно,

неможет использоватьсяпроцессом;

обнуленная (zeroed). Страницасвободнаиницианупотокомлямизнулевойирована страницы.Можетбытьвыделенапроцессу;

плохая(

bad)В.страницебылиотмеошибчетностиилныкакие

 

-тодругие

аппаратошибки,поэтомуныеа

 

должнаиспользоваться.

 

Кучипамятив32

-разрядной Windows

Присозданиипроцесса

 

Windows назнаемукупоумолчаниюаету(

default heap),тоесть

изначальнорезеробласв рпамятиуетуальнойобъемомМб.1Темменее,при

 

 

 

необходисистебудетремаости

 

гулироватьразмеркучи,котораяспользуетсясамой

Windows

дляразличныхцелей.

 

 

 

 

API-функция GetProcessHeap исподполяьздесученетсякучи.Припомощипторая

 

функции HeapCreatе,возвращающейдескучи,программистриптсоздаватьжет

 

 

дополнительные кучи.

 

 

 

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

 

 

кучупоумолчан.Напр,текучи,котомерюпредляыеназначеконкретзадач,частоных

 

 

 

оказываютсяболееэффективными.Кр, гомешибкизаписиданныхкучу,памя

 

 

тьдлякоторой

выделенаспециализированнкучи,незатроданныхдркуч.Наконгихт,выдйелениец

 

 

 

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

 

 

 

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

 

 

ьвзагрустраницизке

файлa подкач.Следуеттаупомянкжеи,чтод ккступпорядоченть(

 

serialized),тоесть

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

 

 

 

очереди,покадругиепотопроизводимыенезакончат

 

 

операции.След,т одинльковательно

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

 

 

неприятныхконфликтов.

 

 

 

 

16-разрядная Windows поддерживглобальную,локкучи.Соответственнольнуюв

 

даннойсистемереализованы

 

функции GlobalAlloc и LocalAlloc. Онивыполняются,нонечень

эффект,поэтомуследуивнызбихприменегатьвWin32Одихвсенакоия.

 

 

-такиприходится

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

 

 

 

 

 

Фунработыкучсции

ей

Дляработыскучамиисполедьзфу:нкцютсящиеи

 

 

 

GetProcessHeap возвращаетдескучипроцессарипоумолчаниютор;

GetProcessHeaps возвращаетсписокдескрвсехкуч,иптсповданныйровльзуемых моментпроцессом;

12

HeapAlloc выделяетблокпамятииззадан

нойкучи;

HeapCompact дефрагменткучу,объедсвободныеблоки.няяМожетруеттакже освобождатьнеиспользуемыестраницыпамятикучи;

HeapCreate создаетновуюкучуадресномпространпроце; ствеса

HeapDestroy удаляетзаданнуюкучу;

HeapFree освобождаетпред

варительновыделенныеблопамятикучи;

HeapLock блоккучу,прииспользованруетданнойфункцтолькоодпотокииинмеети

 

нейдостпотоки.Дру,запрашивающиегиедоступ,переводятсясостояниеожидания

 

дотехпор,покапоток,владеющийучей,неразбл

окируетее.Этооднаизформ

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

HeapReAlloc перераспределяетблопамятикучи.Используетсядляизмененияразмера блока;

Heapsize возвращаетразмервыделенногоблока

памятикучи;

HeapUnlock разблокикучу,котодэтогобыларуетзаблокированааяфункцией

HeapLock;

HeapValidate проверяетпригодностькучиили(отделееб),еслиимеютсяоканоголи какие-либоповреждения;

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

ржимоекучи.Обычно

используетсяприотладке.

 

 

 

 

 

Отображениявиртуальнойпамяти

 

ФункцияWin32

API

VirtualQuery можетисподляполучениьзоваться

информации

состоянииадресоввиртуальнойпамяти.Синтаксисеетаков:

 

 

 

DWORD VirtualQuery(

 

 

LPCVOID IpAddress,

//Адресобласти.

 

PMEMORY_BASICONFORMATION IpBuffer, //Адресинформационногобуфера

 

DWORD dwLength

 

//Размербуфера

 

);

 

 

 

Используетсятакжефункци

 

VirtualQueryEx, расширеннаяверсия

VirtualQuery, которая

позволяетполучатьинформацвнешнвиртуальадресюпространствахны:

 

DWORD VirtualQueryEx(

 

HANDLE hProcess

//Дескрипторпроцесса

 

13

LPCVOID IpAddress,

//Адресобласти

 

 

 

MEMORY_BASIC_INFORMATION IpBuffer,

//Адресинформационного

буфера

DWORD dwLength

// Размер буфера

 

 

);

 

 

 

 

Параметр hProcess - этодескпр.оцессаПараметриптор

IpAddress - этоначальныйадресдля

записирезультирданных,которыйбудетющих

 

округлятьсявменьшуюсторонудоближайшего

 

кратногоразмерустраницыКб(4)Обефункции. возвращаютинформациюследующую

 

 

 

 

структуру.

 

 

 

 

Struct MEMORY_BASlC_INFORMATION {

 

 

 

PVOID BaseAdciress;

// Базадресовыйбласти

 

 

PVOID AllocationBase;

// Базовый адрес выделенной области

 

DWORD AllocationProtect; // Первоначальная защита отдоступа

 

DWORD RegionSize;

// Размер области в байтах

 

 

DWORD State;

// Передана зарезервирована,

свободна

 

DWORD Protect;

// Текузащитаотдоступаая

 

 

DWORD Type;

// Тип страниц

 

 

 

}

 

 

 

 

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

принадлежитадрес IpAddress,заданной (specified)Следующийрисунпомразобратьсякжетв новойтерминологии.

14

Область

размещения

Заданнаяобласть (логическиупорядоченные страницы)

IpAddress

Заданнаястраница

Функция

 

MEMORY_BASIC_

 

BaseAddress,

адресзаданнойстраницы;

RegionSize,

 

 

вершизадаобластин. ыной

 

Естраницали,содержащаяадрес

,свободнане(зарезервировнепередан), ана

 

членструктуры

Stаte

MEM_FREE.Остальныечленыкром(

BaseAddress и

 

 

 

Естраницали,содержащаяадрес

,несвоб,функцияоднапределявыделеннуют

 

область(

allocation

 

ючаетзаданную

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

VirtualAlloc.

Начинаясбазовогоадресазаданной,

 

 

страницывыделеннойобла,проверяя,стиовпадаютлиихтипы

 

(allocation type

защиты(

protection

 

 

совпадающихупорядоченныхстраницпредставлясобой.Кноет

 

 

значенияструктуры

 

. Cтрансчисовпадтаетсяца

ающейс

заданнстраницей,еслионаудовлетворяетдвум :

 

 

страницаиметотжетип,чтои

 

 

 

следующимифлага:

MEM_COMMIT, MEM_RESERVE, MEM_FREE,

 

MEM_

 

MEM_IMAGE;

 

 

 

 

15

 

страницаиметотжетипзашиты,чтопервонстр,всоответствииачальнаяница

следующимизначениямифлага:

PAGE_READONLY,

PAGE_READWRITE,

PAGE_NOACCESS, PAGE_WRITECOPY, PAGE_EXECUTE, PAGE_EXECUTE_READ,

PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY, PAGE_GUARD или

PAGE_NOCACHE.

 

 

Рассмотримостальнчленыструктурые

MEMORY_BASIC_INFORMATION:

AllocationBase - базовыйадресвыделеннойобласти;

AllocationProtect - первоначальныйтипзащитывыделеннойобласти;

State - одноизтрехзначений:

MEM_FREE, MEM_RESERVE или МЕМСОММ IТ.

Относитсякзаданнойобласти;

 

Protect - текущийтипзащитызаданнойобласти;

Туре - одноизтрехзначений:

 

MEM_IMAGE, MEM_MAPPED или MEM_PRIVATE.

Относитсякзаданнобласти.Этик нстансмыслйимеюследующийт:

MEM_IMAGE

указывает,чтообластьотображенафайлобраззадачи(

 

image file),тоестьна

загрузочный; MEM_MAPPED указыв,чтооблотображенаетснезагрузочныйь

отображвпамятьфайлнапример( емый,файлданных);

 

MEM__PRIVATE указывает,что

областьиспользуется

однимпроц,анесовместноссом.

16

 

 

 

СОДЕРЖАНИЕОТЧЕТА

 

1.

Наименованиелабораторнойработы,еецель.

 

 

 

2.

Разработанное программноеобеспечениедля

приложения,

которое:

 

§ выдает информацию,

получаемуюприиспользовании

API GlobalMemoryStatus. При

 

выводеинформации

использоватьдиаграммы.

 

§Составляеткартувиртуальнпамд юбяпрти.огоцессай

3. Примерыразработанныхприложенийрезультаты(

итекстыпрограмм).

17