Допълнение на принципите за управление на памет в чисто многозначна среда(Windows NT)
| Информационни технологии | 2009-12-04 | 117 сваляния |
28. Допълнение на принципите за управление на памет в чисто многозначна среда(Windows NT). Защита на пространството, виртуална памет, разширяване на оперативната памет към диск, валидизиране на страници, охраняеми страници, shared блокове, динамична резервация и ангажиране на блокове памет. Copy-on-write механизъм.
Адреса е 32 битов ,отказваме се от 16 битовата сегментна организация, (в 16 битовата сегмента е 2.., а тук е 2..=4GB). Имаме по големи сегменти.
Отделните процеси са в отделни сегменти. Друга новост тук е виртуалната организация на паметта. Тя се реализира чрез мощен SWAP механизъм. Трета ножост е страничната организация на адресното пространство, т.е. работи се с блокчета, а не с цели сегмнети.
4GB адресно пространство мойе ад се счита за разделено на 2 по 2GB.
- за потребителски програми
- за системни програми
Организация на адресното пространство:
| съдържание | |
| 0 64KB | служебни |
| Над 64KB | За модули на изпълнимия файл |
| Над горния | За heaps и threads stacks |
| Над тях | За DLL |
| Над тях | Системни DLL:Kernel32,User32 |
| 2GB 4GB | За нуждите на ОС |
Резервирането заделя блок с определена големина:
pMem = VirtalAlloc(<начален адрес на блока NULL>,<бр.страници на резервиране>,<права на достъп>):
За виртуалната памет се прави файл върху диска, който съдържа страници. Обмена м/у вирт. и ОП памет става по страници.Един процес може да има най много 4КВ обем страници. Една страница е валидна ако е в ОП.
Ако страницата я няма в ОП , тя се намира в swap файла и се качва в паметта. Ако не достига памет, то страницата се сваля от ОП, но всъщност тя се припокрива. Има доста механизми и особености при припокриване.
Заделянето на памет за нуждите на процес е двустъпков процес:
-
Резервиране Reserved
-
Ангажиране - Commit
Смисълът е да се отложи за колкото се може по късен момент заделянето на памет, но възможно непосредствено преди записване.
На етапа Commit паметта е заделена в Paging файла, а в паметта се заделя в ОП, едва когато се опитаме да запишем.
Една страница в паметта може да е охраняема:
Графика
Ако се опитаме да четем охраняемата граница, това става , когато е свършило останалото място и генериме EXEPTION_GUARD_PAGE, която може да се прихване и обработи, т.е. ако ни трябва още памет, то може за да заделим и ад преместим охраняемата страница назад.
Една страница (част от паметта) може е shared, т.е да се използва от повече от 1 процес:
Графика
Share блок се помества в адресното пространство на 2 или повече процеса, но фактически е задлено само едно физическо адресно пространство.
Друг механизъм е Copy_On_Write
Графика
Едно .exe стартирано става процес. Ако 2 процеса само четат паметта то тя е една. Ако единият процес запише данни в този блок: то за другият процес се появяват нови данни. В този момент Copy_On_Write заделя нова ОП и копира там блока, тогава вече и двата процеса работят с различни блокове.
Тагове от реферата: опълнение, многоз, принципит, упраение, среда











