Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaBorbála Gáspárné Megváltozta több, mint 10 éve
1
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék dr. Micskei Zoltán http://mit.bme.hu/~micskeiz Operációs rendszerek (vimia219) Memóriakezelés a Windowsban
2
Copyright Notice These materials are part of the Windows Operating System Internals Curriculum Development Kit, developed by David A. Solomon and Mark E. Russinovich with Andreas Polze Microsoft has licensed these materials from David Solomon Expert Seminars, Inc. for distribution to academic organizations solely for use in academic environments (and not for commercial use) http://www.academicresourcecenter.net/curriculum/pfv.aspx?ID=6191 http://www.academicresourcecenter.net/curriculum/pfv.aspx?ID=6191 © 2000-2005 David A. Solomon and Mark Russinovich 2
3
Rejtvény Mennyi szabad memória van most a gépemen? 3
4
A Windows memóriakezelésének alapelvei Virtuális tárkezelés o Lapszervezés (4KB / 2MB méretű lapok, 2/3/4 szintű) o Lapozófájl használata Hatékonyság o Igény szerinti lapozás + clustering + prefetch o Memória megosztás, copy-on-write o Fájl cachelés memóriában (memory mapped file) Biztonság o Minden folyamatnak külön címtartomány o Elérés leírókon keresztül (hozzáférési token) 4
5
Maximális fizikai memória (GB) x86 x64 (64-bit) Windows 8 4128 Windows 8 Pro 4512 Server 2008 Enterprise 64642048 Server 2012 Enterprise --4096 Physical Address Extension (PAE) 36 címbit: CPU + OS támogatás Physical Address Extension (PAE) 36 címbit: CPU + OS támogatás 64 bit: lényegesen nagyobb memória 64 bit: lényegesen nagyobb memória 5 32 biten max 4 GB címezhető meg (gyakorlati határ kevesebb!) 32 biten max 4 GB címezhető meg (gyakorlati határ kevesebb!)
6
32-bites x86 címtartomány 2 GB felhasználói folyamatnak 2 GB Rendszer tartomány 2 GB Rendszer tartomány Alapesetben 6
7
64-bites címtartomány 64-bit => 16 777 216 TB (jelenleg 48 bites címek => 256 TB) 8192 GB (8 TB) Felhasználói folyamat tartománya 8 TB Rendszer tartomány 8 TB Rendszer tartomány 7
8
8 Felhasználó címtartomány : o A futó alkalmazás (.EXE és.DLL-ek) o Felhasználói módú verem minden szálnak o Alkalmazás adatstruktúrái Felhasználói módból is elérhető Csak védett módból érhető el } } Egyedi minden folyamatra Rendszerszinten közös Virtual Address Space (V.A.S.) 8
9
9 Felhasználói módból is elérhető Csak védett módból érhető el } Egyedi minden folyamatra Rendszerszinten közös Virtual Address Space (V.A.S.) Rendszer tartomány: o Executive, kernel és a HAL o Rendszerszintű adatstruktúrák o Laptáblák (virtuális → fizikai leképezés, folyamatonként különböző) o Védett módú eszköz meghajtók o Védett módú verem minden folyamat minden szálának } 9
10
Folyamatok memóriafoglalása Két lépésben: Reserve: virtuális címtartomány lefoglalása Commit: virtuális memória lefoglalása Előny: Csak annyit foglal, amennyi ténylegesen kell 10
11
Logikai és fizikai címek közötti leképzés (ism.) Folyamat 1 Folyamat 2 Laptáblák Fizikai memória Lapozófájl 11
12
x86 címfordítás (PAE nélkül) 12
13
x86 PAE címfordítás 13 Forrás: Intel 64 and IA-32 Architectures Software Developers Manual, Vol. 3A
14
x86 PAE esetén a PTE 64 bites, 24 bit a lap címének Flagek: o P – present, A – access, D – dirty, U/S – user/system, R/W – read/write… 14
15
x64 címfordítás 15
16
x64: PTE szerkezete 64 bites, 40 bit a lap címének Flagek: P – present, R/W – read/write, U/S – user/supervisor, A – accessed, D – dirty, XD – execute-disable… 16
17
DEMO WinDbg, kernel debugging o folyamat kikeresése o BaseDir címének kikeresése o !vtop: címfordítás o !pte: laptábla elemeinek megnézése Címfordítás megfigyelése 17
18
Munkakészlet (Working Set) Working Set: o Egy folyamathoz tartozó fizikai memóriában lévő lapok o Ezeket éri el laphiba nélkül Working set limit: o Ennyi fizikai memóriát birtokolhat egyszerre o Ha eléri, lapcsere kell NT 4.0: módosított FIFO algoritmus Windows 2000: Least Recently Used (UP rendszereknél) o Ha a szabad memória lecsökken: trimming 18
19
Fizikai memórialapok életciklusa Standby Page List Zero Page List Free Page List Process Working Sets (Active) page read from disk or kernel allocations demand zero page faults working set replacement Modified Page List modified page writer zero page thread “soft” page faults Bad Page List Private pages at process exit 19
20
Lapozófájl (page file) Mi kerül bele? o Csak a módosított adat, kód nem Mikor kerül bele? o Ha van szabad memória, akkor is lehet o Folyamatok nem foglalhatnak bármennyi memóriát o Tartalék az új/többi folyamatnak Meghajtónként egy darab o Ajánlott nem a rendszerlemezre rakni o De maradjon egy kicsi ott is a memory dumpnak Ajánlott méret o 1 vagy 1,5-szer a fizikai memória (?), Fix méret (?) 20
21
DEMO Process Explorer / System information o Paging Lists o Page Fault Delta Lapozófájl méretének állítása o GUI o regedit Perfmon: Lapozófájl kihasználtság (%) Fizikai memória, lapozófájl 21
22
Memóriahasználat megfigyelése Egyszerűnek tűnő kérdés: Mi mennyi memóriát foglal a gépen? 22
23
Folyamat memóriahasználata - 0 Feladatkezelő oszlopai Frissítés gyakorisága 23
24
Folyamat memóriahasználata - 1 1 2 1 Fizikai memória használat = munkakészlet (working set) megosztott lapok is megosztott lapok nélkül 2 Privát, lefoglalt virtuális memória (committed) megosztott lapok nélkül ez kerül bele a lapozófájlba 3 3 24
25
Folyamat memóriahasználata - 2 Process Explorer: o Folyamat részletes adatai Private Bytes Working Set o Ebből mennyi a megosztott 25
26
DEMO Sysinternals VMMap Folyamat memóriaterülete 26
27
A teljes rendszer memóriahasználata 1 Összes lefoglalt virtuális memória Ennyit kéne kiírni a lapozófájlba, de nem biztos, hogy ennyi van kiírva 2 Előjegyzési küszöb: összes fizikai memória + lapozófájlok aktuális mérete 1 2 3 3 ~ Aktív memórialapok száma 27
28
DEMO Memórialapok állapotának gyors áttekintése: Sysinternals RamMap: részletek Resource Monitor 28
29
További optimalizációk 29
30
Windows 8: memóriahasználat csökkentése Memory combining o azonos tartalom keresése a háttérben Szolgáltatások csökkentése o + „Start on demand” indítási mód „Hot” és „cold” adatstruktúrák szétválasztása 30 Lásd: Reducing runtime memory in Windows 8, http://blogs.msdn.com/b/b8/archive/2011/10/07/reducing-runtime- memory-in-windows-8.aspx
31
Egy optimalizáció: Prefetch (Windows XP) Egy program indulásakor sok laphiba van Mindig ugyanazokat kell betölteni Prefetch: első tíz másodperc hozzáféréseit megjegyzi Prefetch “trace file”: \Windows\Prefetch o Elnevezés:.EXE-.pf Alkalmazás következő indulásakor o Hivatkozott lapok betöltése aszinkron módon Bootolás figyelése is 31
32
Egy újabb: Superfetch (Vista) 8 Prioritás a memórialapokhoz o Standby listából 8 darab ennek megfelelően Lapok használatának követése Memória felhasználása esetén lassan visszahoz lapokat a standby listára, amik kellhetnek még 32
33
DEMO Process Monitor: betöltéskor használt fájlok Prefetch file-ok o C:\Windows\Prefetch Layout.ini Prefetch fájl tartalma: o strings.exe Prefetch 33
34
Olvasnivaló Soczó Zsolt, Windows memóriakezelés, MS Technet HUN, 4 részes cikksorozatWindows memóriakezelés Inside the Windows Vista Kernel: Inside the Windows Vista Kernel o 1. rész: Multimedia Class Scheduler o 2. rész: Superfetch, Ready* 34
35
Összefoglalás Virtuális tárkezelés, lapszervezés Többszintű optimalizáció Memóriahasználat vizsgálata o Feladatkezelő: gyors áttekintés o Process Explorer, Perfmon, VMMap stb.: részletek 35
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.