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

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

 

 

Лабораторная работа№

5

 

 

 

АрхитекпамятиWindowsура

 

 

 

Цельработы:

 

получепрактическихнавыкиепоиспользованию

 

Win32 API для

исследованияпамятиWindows

 

 

 

 

 

 

 

Типыпамяти

 

 

 

В Windows реалсивиртуальностемазована

й

памяти,основаннаямоделипло

ского

(лин ейадресного) пространства,кот дляздкаждогояпроцессаетиллюзиюогромного

 

 

 

 

закрытогоадреснпространства.Виртуальнаягопамятьформилогическоеп уетедставление

 

 

 

 

памяти,котонесржетоответствоватьфизическо

й структуре.Вовремявыполне

ниядиспетчер

памяти —приподдержкеоборудования

—транслиотоб( )виртуальныеуетажаадресат

 

физические,гдефактическихранятсяданные.Управляязащито

 

 

й иотображениемадресов,ОС

 

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

 

 

ныхОС.

 

Таккаквбольшинствесистемобъемфизическо

 

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

го

объемавиртуально

 

й памяти,используемо

й работающипроцессами,диспетчерпа яти

 

переновыгружает( )частьитодержпамятина.Выгрузкаскмогодан

 

 

ныхнадиско

свобождает

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

 

 

 

й ОС.Когда

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

 

 

 

й памяти

подгружаетинформациюобрав сдискамятьно.

 

 

 

 

 

 

Нарис. 1

.1

продемонстрированоиспользованиевир

 

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

частипамятиотображвфизическпаОЗУмятьются(),адрчастиувыгружаютсягиенадиск.

 

 

 

 

Обративниманиенато,чтопрерывныеблокивиртуально

 

 

й памоягуттображатьсяив

несмежныеблокифизическо

й памяти.Этиблокиназывстр,аихютсяразмерницамипо

 

 

 

умолчаниюсоставляетКба4

 

йт.

 

 

 

 

 

 

Рис. 1 .1

 

 

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

 

 

ратной

платформы.В 32

-разрядныхплатформах86общее

 

виртуальноеадрес

ноепространство

ограниченотеоретическиммаксимумомГба4

 

йт.Поумолча

нию Windows выделяетнижнюю

половинуадресногопрост(отанстваеса0

 

x80000000 до OxFFFFFFFF) процессамдляих

собственной закрытой памяти,верхнююполовину

(адресаот0

x80000000 до OxFFFFFFFF) —для

собственногозащиспользованиященногопамяОС.От нижнбражения

 

 

й половины

1

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

 

 

 

отображенияверхне

й половиныбольшинстве(

 

случаев) всегдасостоятизвиртуально

й памяти

ОС.

Windows

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

 

 

 

выпослняющимобпоразомымпрограммыеченные,возможностьиспользоватьдоГба3

 

 

йт

закрытогоадреснпростр, гоанства

ляяГба1

йтдляОС.Нарис. 1.

2 изображеныдве

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

 

 

-разрядными

версиямиWindows.

 

 

 

 

Рис. 1Типичная.2структура. виртуальадреспространстваного32

-разрядныхверсия

 

Windows

Рис. 1Типичная.2структура. виртуальадреспространстваного64

-разрядныхверсия

 

Windows

Физическаяпамять

2

Физическаяпамять

- этореальныемикросхемы

RAM,устанвкомпьютеревленн.Каждый

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

 

 

представляетсобчислоотнуляй

числанаединицуменьшего,чемколичествобайтовфизическойпамяти.Например,ПК

 

 

 

установленнымиМб64

RAM,имеетфизичадрН00000000ес&киеа

 

 

-&Н04000000в

шестнадцаси числентем, вдесятичнойричнойстеме

 

будет0

-67 108 863.

Физическпамятьвотличие( фподкачкияйлавиртуальнойпамяти)является

 

 

 

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

 

 

 

можетпосредствомсистемыкомандзаписыватьданные.

 

 

 

 

 

 

 

Виртуальнаяпамя

 

ть

 

Виртуальнаяпамять(

virtual memory) - этопростонабчисел,котргокакврыхорят

 

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

 

 

Windows не

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

 

 

есне

являетадреальногофизическогояомзап устрмин,каквослучаеющегойствафизических

 

 

 

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

 

 

 

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

 

 

оторым

действительномогутхранитьсякодыданные.Этуоперациювыполняетдиспетчервиртуальной

 

 

 

памяти(

Virtual Memory Manager - VMM)Операционная. система

Windows обозначаетнекоторые

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

 

 

программ

пользовательскогорежима.Всеостобластильныеуказываютсякакзарезерв.Какированные

 

 

 

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

 

 

 

(Windows 9x или Windows NT).

 

 

 

 

 

 

Страничныеблокипамяти

 

 

 

Какизвестно,на

именьшийадресуемыйблокпамяти

 

- байт.Однакосамаленькимымблоком

памяти,которымоперирует

Windows VMM,являетсястрапамяназываемая, ицатакжеи

 

страничнымблокомпамяти.Накомпроцессорамиьютрах

 

Intel

объемстраничногоблока

равенКб4.

 

 

 

 

 

 

 

 

 

Памятьфайлаподкачки

 

 

 

Страничнфайл,которназтакжеыфйвйподкачкийломется

 

,

в Windows находится

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

 

 

 

память,ноегообъемобычнопревышаетобъемфизическойпамяти

 

. Windows используетфайл

подкачкиилифайлы( ,ихможбытьнесколько)дляхраиненияформации,котораяне

 

 

 

помещаетсяв

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

 

 

RAM.

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

 

 

адресамивфайле

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

 

 

говорят,что

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

 

 

 

подкачки.

 

 

 

 

 

Наборвиртуальныхадресовможе

тпроецироваться

нафизическуюп

амять,файлподкачки

3

илюбойифайл.

 

 

 

 

Адресноепространпроцессатво

 

КаждыйпроцессWin32получаетвиртуальноеадресноепрос

транство,

объемкоторогоравен

4Гб.Такимобразможет,кодпр цессассылатьсян

адресаН&00000000по&HFFFF

FFFF

(илиспо02

32 - 1 = 4 294 967вдесятичн295си числентеме)Конечно. ,йтаккаквияртуальные

 

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

 

 

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

выглядитдовольнобессмысленным

. Темменее,это

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

 

 

А,ипроцессВиспользуютодинтотжевиртуальныйадрес,например&Н40000000Вчастности, .

 

 

Windowsможетсопос

тавитьили(несопост)виртуалдресамвитькаждогопроцессанымразные

 

физичадр. ескиеа

 

 

 

 

Структураадресныхпространств86

 

Рис. 2. Структура виртуальныхадреспространствплатформе86

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

Каждстрвиртуаницаяльно

адресногопространстваможетнаходизтрехномиться

состояний:

 

4

Reserved (зарезервирована) - стрзаницарезервированадляиспользов; ния

Committed (передана) - дляданнойвиртуальнойстраницывыделенафизическаяпамять

файлеподкачкииливфайле,

тображаемомвпамять;

Free (свободна) - даннстраницанезарезервировянепередан,поэтомуаныйа

момнеадоступнантдляпроцесса.

Виртуальнаяпаможетбытьятьзарезервировилипереданспомощьювызована API-

функции VirtualAlloc:

LPVOID VirtualAlloc(

 

 

LPVOID IpAddress,

//Адресрезервилвыделяемойируемойобласти.

DWORD dwSise,

 

//Объемобласти.

DWORD flAllocationType,

//Типраспределения.

DWORD flProtect

//Типзащитыотдоступа.

);

Параметр flAllocationType можетпризначиматьслеконстантниядующдругихпом( );имо

MEM_RESERVE - па,раметрезервирующийобласадрестуального

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

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

йжефункции;

МЕМСОММ IТ - парам,выделяющийфизическуютрпамятьопераилимятитивной

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

однойоперацией.

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

Например,резервированиепамятиявляочполезнпроцедуройтсяньст зрениячки практичности.Еслитребуетсяложениюбольшойобъемпа, ожнозарезервиряти оватьсю памя,выдетолькотучастьить,котораянужвдамоментаный,раздв,такимобр,г зомя временныерамкиболеетрудоемкойоперацвыделенияф зическойпам. ти

Windows тожеиспользуетэтотподход,когдавыпамелподстякаждогоетьвновь создаваемогопотока.СистемарезервирМб1виртпамятиуподетальнстеккаждпот,нойгока выдпервляетодвеначальнолькостраницы(8Кб).

Защитапамяти

Параметр flProtect функции virtualAlloc исподзаданияльзуетсятипазащитыотдоступа,

соответствующеговновьвыделенной( committed)виртуальпамяэтоне( тноик йсится резервируемойпамяти)Существуют. следуюметодызащиты: ие

PAGE_READONLY присваивадоступтолько«длячт»выделеннойниятвиртуальной

5

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