|
|
Лабораторная работа№ |
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