Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Alkalmazások és operációs rendszerek optimizálása „Babeş-Bolyai” Tudományegyetem, Matematika-Informatika Kar x86-os védett üzemmód Windows alatt előadás.

Hasonló előadás


Az előadások a következő témára: "Alkalmazások és operációs rendszerek optimizálása „Babeş-Bolyai” Tudományegyetem, Matematika-Informatika Kar x86-os védett üzemmód Windows alatt előadás."— Előadás másolata:

1 Alkalmazások és operációs rendszerek optimizálása „Babeş-Bolyai” Tudományegyetem, Matematika-Informatika Kar x86-os védett üzemmód Windows alatt előadás dr. Robu Judit szeminárium drd. Lukács Sándor

2 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 2 Copyright / Felhasznált anyag a prezentáció részben felhasználja a Windows Operating System Internals Curriculum Resource Kit-ben található prezentációkat az eredeti anyagot David A. Solomon, Mark E. Russinovich és Andreas Polze készítették a Microsoft licenszelte az anyagot és szabadon felhasználhatóvá tette akadémiai környezetben a MSDNAA / CRK keretében a teljes licensz megtalálható a következő címen: ebben a prezentációban külön meg vannak jelölve azok a slide-ok, amelyek a CRK felhasználásával készültek az egyetem (BBTE) keretében a CRK és WRK szabadon elérhető és letölthető a diákok számára [ide utólag, amikor felkerül a CRK a hálózatra link kerül]

3 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 3 Processzor üzemmódok Valós üzemmód (Real mode) 20 bites címzés (1 MB) nincs védelem  egy processz DOS alatt volt használatos Védett üzemmód (Protected mode) 32 bites címzés (4 GB) lapozás, szegmentálás – a legfontosabb része a védett üzemmódnak a memória kezelése védelem, privilégium szintek  több processz Windows, Linux stb. ezt használja több kibővítése van, pl. PAE – 36 bites fizikai címzés (64 GB) System Management Mode (SMM) speciális uzemmód, az SO számára is transzparens (OEM / BIOS használhatja) Virtual-8086-os üzemmód védett üzemmód alatt futó speciális védett taszk – pl. 16 bites alkalmazások NT alatt Unreal 4GB Flat Mode hivatalosan nem dokumentált, a valós üzemmód egy speciális esete / funkcionalitása valós üzemmódból a teljes 4GB-os fizikai memória elérését teszi lehetővé új további „üzemmódok”, az Intel Vanderpool (VT) és AMD Pacifica esetén hypervisor-ok használják

4 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 4 Üzemmódok közötti váltások

5 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 5 32 bites védett üzemmódbeli végrehajtási környezet CR0 – a védett üzemmód legfőbb kontroll regisztere CR3 (PDBR) – lapkönyvtár címe IDTR – megszakítás táblázat címe GDTR, LDTR – globális és lokális deszkriptortáblák címei TR – aktuális taszk szelektor MMX/FPU, SSE stb. regiszterek MSR regiszterek

6 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 6 EFLAGS IOPL – I/O privilégium szint IF – 1 a hardver megszakítások engedélyezve vannak 0 a hardver megszakítások tiltva vannak

7 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 7 CR0, CR3 vezérlőregiszterek PE – védett üzemmód aktiválása, ha 1 WP – felhasználói lapok írásvédése supervisorral szemben, ha 1 (UNIX copy-on-write szemantika implementálásához szükséges) PG – lapozás aktíválása, ha 1 CD – cache tiltása (teljes mértékben, L1, L2) PCD – lapszintű cache tiltása (teljes mértékben, L1, L2) PWT – 1 – write-through cache, 0 – write-back cache Page-Directory Base – a lapkönyvtár bázíscíme (fizikai cím, 4K határon)

8 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 8 Memória, alapfogalmak a memória a második legfontosabb eleme egy modern számítógépnek (a processzor után) a memória (a legtöbb esetben) egy hatalmas szó/bájt tömbnek tekinthető a processzor a memóriából utasításokat tölt be a program számláló regiszternek (EIP) megfelelően az utasítások a végrehajtás során további memória betöltését vagy memóriába történő tárolást eredményezhetnek

9 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 9 Logikai és fizikai címzés, címterületek a processzor (klasszikus értelemben, mint utasítást végrehajtó egység, a programok szemszögéből nézve) logikai (másnéven virtuális) címekkel cimezi a memóriát a különböző hardvereszközök fizikai címekkel címezik a memóriát (beleértve végső soron a processzort is, mit fizikai egység) a programok végrehajtása közben a virtuális címeket a memória menedzselő egység (MMU) alakítja fizikai címekké a MMU fizikailag a processzor része a MMU programozása privilegizált, csak rendszerszoftver végezheti a logikai címterület → fizikai címterület tükrözés (transzláció) egy nagyon fontos fogalom a memória mendzselés keretében a felhasználói alkalmazások mindig virtuális címekkel dolgoznak; számukra a fizikai címek nem láthatók

10 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 10 Memória allokálási módszerek 1 a memóriában az operációs rendszer (kernel) és a felhasználói folyamatok / alkalmazások számára kell helyet biztosítani az SO-t védeni kell a felhasználói alkalmazások módosításai ellen a felhasználói alkalmazásokat védeni kell egymással szemben egy partíciós allokálás az összes processz egyetlen memória partícióban foglal helyet a védelmet egy korlát (limit) és egy relokációs regiszter nyújthatja CPU < korlát regiszter relokációs regiszter + memória kivétel, címzési hiba logikai cím nem igen fizikai cím SO

11 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 11 Memória allokálási módszerek 2 több partíciós allokálás több folyamat párhuzamosan helyezkedik el a memóriában a memóriát több partícióra oszthatjuk (fix / változó hosszúságuak) mekkora az optimális partíció mérete? dinamikus memória allokálás több pratíció, szabad részekkel a partíciók között az allokációkat egy „szabad részek halmazából” végezzük el melyik szabad részt választjuk ki? First-fit: a legelső szabad részt foglaljuk le, amelyik elég nagy Best-fit: a legkisebb szabad részt foglaljuk le, amelyik elég nagy ezek nem csak heap esetén érvényesek, hanem fizikai memória, virtuális címterület stb. szintjén is

12 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 12 Overlay-ek a program mérete nagyobb lehet a rendelkezésre álló memóriánál Overlay megoldás: osszuk fel a programot időben egymástól független modulokra töltsük be ezeket a modulokat alternatíven az overlay driver (overlay kezelő) betölti a modulokat a modulok leginkább bináris memória képként vannak tárolva a fordítóprogram támogatása szükséges Szimbólum tábla Közös függvények Overlay driver Példa: többlépéses kompiler Első lépés Második lépés

13 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 13 Swapping több processzes (multi-processzing) környezetekben intenzíven használt a swapping egy processz ideiglenesen kimásolódhat (swapp out) a háttértárolóra klasszikusan a fizikai címterület szintén történik egy processz mindig ugyanabba a memória zónába töltődik vissza ma a legtöbb SO (Windows, Linux) a logikai címterületek szintjén végzi ma leginkább swapping alatt lapozást (paging) értünk egy processz tetszőleges fizikai címekre töltődhet vissza Operációs rendszer Felhasználói alkalmazások Processz P 1 Processz P 2 Swap out Swap in Központi memória Háttértároló

14 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 14 Szegmentálás hogyan látja a programozó a memóriát? változó hosszúságú szegmensek / zónák (kód, adat, verem,...) nem szükséges a szegmensek explicit rendezése logikai címek: a logikai címeket hardware alakítja fizikai cimekké a szegmens tábla tárolja a szegmesek kezdőcímét és korlátját (méretét) CPU szegofsz korlátbázis szeg < kivétel, hiba kezelése + Fizikai memória szegmens tábla igen nem

15 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 15 Címterületek tükrözése Windows alatt Intel x86-os hardver támogatás az Intel x86 két szintű címterület tranzlációt biztosíts szegmentálás (kötelező az Intel 8086-os óta) lapozás (opcionális, jelen van az Intel os óta) szegmentálás: a tranzláció első lépése Intel x86: logikai/virtuális címek (szelektor:offszet) → lineáris címek Windows: a virtuális címek megfelelnek a lineáris címeknek lapozás: a tranzláció második lépése Intel x86: lineáris címek → fizikai címek Windows: virtuális címek → fizikai címek fizikai címek: 32 bit (4GB), vagy 36 bit (64GB) PAE esetén (P Pro) fizikai lapok mérete 4 KB, Intel x86 (összes Windows verzió) 4 MB, Pentium Pro (NT4/2K/XP/2003/Vista)

16 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 16 Privilégium szintek szegmentálás esetén 4 szint (0-3) lapozás esetén 2 szint (0-1) a gyakorlatban két szint használt 0 – kernel 1 – alkalmazások

17 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 17 Alkalmazott memória modellek multi-szegmens modell, egy közös virtuális címterület L4 microkernel FLAT – egy szegmens, programonként egy-egy virtuális címterület Windows, Linux egy szegmens, egy virtuális címterület Singularity FLAT modell Multi-szegmens modell

18 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 18 Intel x86-os szegmentálás IndexTI=0RPL logikai cím szegmens szelektor 310 offszet : globális deszkriptor tábla Korlát=0xfffffJogok Bázis cím = 0 Korlát=0xfffffJogok Bázis cím = 0 + Intel lineáris címterület Windows virtuális cím 0 0xffffffff szegmens deszkriptorok

19 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 19 Szegmens deszkriptorok 32 bites báziscím (BASE) 20 bites korlát (LIMIT) ha G = 0 akkor 1 bájtonként ha G = 1 akkor 4 KB-ként DPL – hozzáférési jogok D/B – operandusok mérete 16 vagy 32 bit 0x66-os prefixel módosítható végrehajtás során a kódban P – jelen van vagy nem szegmens alapú swapping esetén használatos két típusú deszkriptor van S = 0, rendszer deszkriptor S = 1, adat vagy kód deszkriptor

20 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 20 Kód és adat deszkriptor típusok

21 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 21 Rendszerdeszkriptor típusok

22 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 22 Memória menedzselő regiszterek a GDTR és IDTR lineáris címeket tartalmaz a TR és LDTR két résszel rendelkezik látható rész – szegmens szelektort tartalmaz láthatatlan rész – lineáris báziscímet és korlátot tartalmaz

23 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 23 Deszkriptor táblák és szelektorok két deszkriptor tábla globális – minden taszk látja lokális – taszkonként egy-egy a deszkriptor tábla bemenetei közül egy 16 bites szelektorral választhatunk ki egyet a szelektorokat a szegmens regiszterekbe helyezzük el

24 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 24 Szegmens regiszterek valós üzemmódban egy szegmens báziscímét tartalmazzák védett üzemmódban két résszel rendelkeznek látható rész – szegmens szelektort tartalmaz láthatatlan rész – „descriptor cache”, a szelektor által kiválasztott deszkriptort tárolja (báziscím, korlát stb.) → mindig újra kell tölteni a szegmens regisztereket a deszkriptor táblák módosítása után

25 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 25 Unreal Flat 4GB mód 1 a szegmens regiszterek cache-jén alapszik mindig érvényesek, üzemmódtól függetlenül egyszerű trükk: 1. belépünk 32 bites védett üzemmódba 2. elkészítünk egy, a teljes 4GB-ot lefedő szegmens deszkriptort (írható-olvasható 3-as privilégium szinten) 3. feltöltünk egy szegmes regisztert (pl. GS) egy, a deszkriptorra mutató szelektorral 4. vissza váltunk 16 bites valós üzemmódba 5. speciális utasításokkal (szegmens váltó prefix) és 32 bites regisztereket felhasználva cimezni tudjuk a teljes 4GB-os fizikai memóriát

26 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 26 Unreal Flat 4GB mód 2 function InitFlat4GB: boolean; assembler; asm... db 66h; mov bx, ds { init GDTR space } db 66h; shl bx, 4 { shl ebx, 4 } db 66h; mov si, OFFSET dNull { esi } dw 0000h db 66h; add bx, si { add ebx, esi } mov di, OFFSET dGDT db 66h; mov [ds:di+2], bx lgdt [OFFSET dGDT] { load GDTR } cli { set up ES, FS } db 0fh,20h,0c0h { mov eax, cr0 } or al, 01h db 0fh,22h,0c0h { mov cr0, eax } mov ax, 0008h { setup ES } mov es, ax db 8eh, 0e0h { mov fs, ax } db 0fh,20h,0c0h and al, 0feh db 0fh,22h,0c0h { clear CR0.PE } sti... const dNull: array[0..7]of byte = ($00, $00, $00, $00, $00, $00, $00, $00); dFlat: array[0..7]of byte = ($ff, $ff, $00, $00, $00, $92, $8f, $00); dGDT : array[0..5]of byte = ($10, $00, $00, $00, $00, $00); function mInB(addr: longint): byte; assembler; asm db 66h; mov si, WORD PTR addr { mov esi,addr } db 64h,67h,8ah,06h { mov al, fs:[esi] } end;... if InitFlat4GB then begin assign(f, 'bios.bin'); rewrite(f); for l := $000f0000 to $000fffff do begin temp := mInB(l); write(f, temp); end; close(f); end;...

27 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 27 Call kapuk, védett eljáráshívások 1 az SO függvényeket, API hívásokat kínál fel a felhasználói programok számára ezeknek pontos (fix) belépési pontjuk van a hardver védelmet nyújt (CALL kapu), hogy ne lehessen tetszőle- ges offszetre eljárás hívást végezni egy kódszegmensen belül a GDT-ben és az LDT-ben helyezhetünk el CALL kapukat

28 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 28 Call kapuk, védett eljáráshívások 2

29 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 29 Memória fragmentáció a dinamikus memória allokálás töredezettséghez (fragmentáció) vezet külső (external) fragmentáció – létezik elégséges szabad memória rész, de nem folyotonos belső (internal) fragmentáció – egy lefoglalt blokk nagyobb lehet (és rendszerint nagyobb) mint a kért memória → a külömbség nem felhasználható, „elvész” több módszert lehet alkalmazni a fragmentáció megszüntetésére illetve elkerülésére → például kompaktálás a lefoglalt memória blokkok átrendezése dinamikusan, közvetlenül egymás után csak akkor lehetséges, ha a kód és adat relokációja dinamikus és a végrehajtás során történik (execution time dynamic relocation) I/O probléma egy program memória buffereit elmozdíthatjuk, amíg azok külső I/O-ban vesznek részt lehetséges megoldás (de költséges!) – minden I/O-t csak az SO buffereiben végezzünk a kompaktálást jól lehet használni olyan nyelvek esetén, ahol nincsenek mutatók Java, C#, Visual Basic

30 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 30 Lapozás (Paging) más megoldás – lapozás: a memória nem-folytonos allokálása, egyenlő méretű lapok formályában (ez teljesen megoldja a külső, és részben a belső töredezettség problémáját is) a lapozás a fizikai memóriát egyenlő méretű blokkokra osztja fel (keretek, frames) a logikai (Intel lineáris) címterületet a keretekkel egyenlő méretű lapokra osztja fel (pages)

31 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 31 Alapvető lapozási mechanizmus amikor egy alkalmazást elindítunk, az alkalmazás lapjai betöltődnek a fizikai memória kereteibe a hardver laptáblákkal támogatja a lapozási mechanizmus megoldását (a tranzlációt) egy logikai cím egy lap számából és lapon belüli offszettből áll CPU fdpd Fizikai memória logikai cím fizikai cím p laptábla lap szám offszet tipikusan egy lap 2-4 KB

32 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 32 Egyszerű lapozási példa Page 0 Page 1 Page 2 Page 3 logikai címterület Page 0 Page 2 fizikai memória Page 1 Page 3 lap/keret szám laptábla

33 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 33 Allokálás előtt Allokálás után Page 2 Page 0 Page Page szabad keretek 7, 8, 10, 11,13, 16 szabad keretek 7, az új processz laptáblája processz létrehozása Új processz indítása

34 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 34 A lapozás hardver szintű támogatása minden hozzáférés a memóriához igényli a laptábla felhasználást ezért a laptáblákat hardveresen kell megoldani a laptáblák külön vannak létrehozva minden processz számára kisméretű laptáblákat könnyen lehet regiszterekkel implementálni problémák: a fizikai memória mérete, processzek száma a laptáblákat méretűk miatt a memóriában tárolják csak a báziscímük van speciális regiszterekben tárolva probléma: a memória elérése nagyon lassú TLB bufferek (translation look-aside buffers) asszociatív regiszter szettek / memóriák a legutóbb használt laptábla bemeneteket tartalmazza a TLB gyors, költséges és kisméretű ( bemenet) a TLB tartalmát minden processz kontextus váltáskor frissíteni kell

35 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 35 Asszociatív memória – TLB asszociatív (megfeleltető) memória olyan, mintha egy tömböt „egy lépésben megindexelnénk” párhuzamos keresés egy asszociatív regiszter szettben címek tranzlációja (A´ → A´´) ha A´ megtalálható az asszociatív regiszter szettben, akkor A´´ a neki megfelelő értéket veszi fel (keret szám) különben az A´´ értékét a memóriában lévő laptábla segítségével határozzuk meg lap #keret #

36 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 36 Lapozási hardver TLB-vel CPU fdpd Fizikai memória logikai cím fizikai cím p laptábla lap szám offszet lap #keret # TLB TLB tévesztés TLB találat

37 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 37 Lapozási rendszerek különböző módszerek és struktúrák használatosak a lapozás megoldására három alapvető lapozási stílus van hierarchikus lapozás hash-alapú lapozás fordított laptáblás lapozás az x86-os architektúra két szintű hierarchikus lapozást alkalmaz

38 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 38 … … … … lapkönyvtár laptáblák fizikai memória Kétszintű hierarchikus lapozás

39 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 39 Kétszintű hierarchikus lapozás Intel 32-bites x86-os architektúrán egy logikai címet két alapvető részre osztunk fel (standard 4KB- os lapok esetén) lapszám-ra – 20 bit offszet-re a kiválasztott lapon belül – 12 bit mivel kétszintű hierarchikus lapozás → a laptáblák is lapozva vannak → a lapszámot további két részre osztjuk 10 bites efektíve lapszámra 10 bites offszetre egy logikai cím a következő képpen néz ki: ahol p1 egy index a külső laptáblákban (lapkönyvtár) és p2 egy index a belső laptáblában (effektíve laptábla) lap számoffszet p1p1 p2p2 d 10 12

40 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 40 Kétszintű lapozás, vázlat lapszám offszet p1p1 p2p2 d lapkönyvtár lap fizikai memória p1p1 p2p2

41 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 41 Lapkönyvtár és laptábla bemenetek PS – ha 1 akkor 4MB-os lap A – elért, felhasznált lap (a lapozási algoritmusok használják fel) U/S – privilégium szint R/W – írásvédettség P – ha 1 akkor jelenvan (különben a háttértárolón) D – ha 1 akkor piszkos lap (módosítva volt a legutóbbi betöltés után)

42 lineáris cím 12 4MB PDE 4KB PDE lapkönyvtár 1024 x 4 byte bemenet (egy lapkönyvtár / processz) CR3 (PDBR) fizikai cím PTE laptáblák 1024 bement fizikai cím operandus 4 KB lap operandus 4 MB lap 22 bit offszet 4KB keretcím 4MB keretcím fizikai memória korlátbázis s + deszkriptor tábla szelektoroffszet logikai cím Intel x86-os címtranzláció mechanizmus

43 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 43 HASH alapú laptáblák 1 gyakran használt 64 bites architektúrák esetén pl. az Intel Itanium IA64 támogatja a virtuális lap számából egy hash függvénnyel kulcsot számol a rendszer a laptábla láncolt elemeket tartalmaz a virtuális lapok számai egyenként össze vannak hasonlítva a láncban lévő elemekkel amikor a megfelelő értékű elemet megtalálja a rendszer, a fizikai keret címét kiolvassa az elemből

44 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 44 HASH alapú laptáblák 2 CPU fdpd Fizikai memória logikai cím fizikai cím laptábla lapszám offszet p1p1f1f1p2f2 hash függvény

45 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 45 Osztott lapok osztott kód egyetlen példánya egy közös kódnak írásvédett formában van betükrözve több processz alá a megosztott lapok azonos logikai címeken kell szerepeljenek minden processz alatt saját kód és adat minden processz külön tárolja a kód és adat lapokat a lapok egymástól függetlenül, tetszőleges logikai címeken helyezkedhetnek el

46 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 46 Osztott lapok, példa Processz 1 virtuális memória Processz 2 virtuális memória cpp cc1 data1 data2 cc2 fizikai memória cpp cc1 cc2 data1 cpp cc1 cc2 data lap/keret szám Processz 1 laptáblák Processz 2 laptáblák

47 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 47 Osztott memória = Állomány amelyet több processz tükrözött be a címterületébe az osztott memória különböző címekre lehet bemappolva két különböző processz esetén FFFFFFF Felhasználói vírtuális címterület Felhasználói virtuális címterület A. folyamatB. folyamat Fizikai Memória háttértároló

48 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 48 Állományok tükrözése 1 egy módszer arra, hogy egy állomány egy részét (vagy egy teljes állományt) „közvetlenül” elérhetővé tegyünk a virtuális címterületen belül lévő zónában x86-os a virtuális címterület 2 GB, egy állomány sokkal nagyobb is lehet a Windows API “file mapping objects”-nek nevezi az ilyen virtuális zónákat az állományon belül lévő bájtok 1:1-ben megfelelnek a virtuális memóriában lévő zónán belül látható értékekkel az memóriából történő olvasás olyan mintha állományból olvasnánk a virtuális címterületben lévő zóna mindig le van foglalva a fizikai lapok csak akkor vannak betöltve a memóriába, amikor a program olvassa a megfelelő állomány a memória módosításai időnként (vagy explicit FLUSH kérés esetén azonnal) vissza vannak írva a lemezre egy Windows folyamat esetében mindig vannak tükrözött állományok a folyamat futtatható EXE állománya egy vagy több DLL egy folyamat kérésre további állományokat tükrözhet (DLL-ek, adatfájlok stb.)

49 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 49 Állományok tükrözése 2 nincs szükség explicit állomány I/O-ra (írás, olvasás) az állományban lévő összes adatstrúktúra közvetlenül le lesz mentve a háttértárolóra vigyázat a mutatókra!!! felxibilis és hatékony memóriában dolgozó algoritmusok sok esetben jóval több adatot feldolgozhatunk, mint amennyi fizikai memória áll a rendelkezésünkre gyorsabb állomány I/O műveletek nem szükséges átmeneti bufferek kezelése az OS végzi el helyettünk: gyors és megbízható több folyamat könnyen megoszthatja ugyanazt az állományt nem igényel további helyet a rendszer lapozási állományában (pagefile)

50 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 50 File-mapping Windows API HANDLE CreateFileMapping( HANDLE hFile, LPSECURITY_ATTRIBUTES lpAttributes, DWORD flProtect, PAGE_READONLY, PAGE_READWRITE, PAGE_WRITECOPY DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCTSTR lpName ); HANDLE OpenFileMapping( DWORD dwDesiredAccess, BOOL bInheritHandle, LPCTSTR lpName ); LPVOID MapViewOfFile( HANDLE hFileMappingObject, DWORD dwDesiredAccess, FILE_MAP_READ, FILE_MAP_WRITE, FILE_MAP_COPY DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, SIZE_T dwNumberOfBytesToMap ); BOOL UnmapViewOfFile( LPCVOID lpBaseAddress );

51 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 51 adatok megosztására alkalmazottak a megosztott lapok eredetileg osztott és írásvédett módon vannak betükrözve a folyamatok alá az első írási kérés esetén egy kivétel generálódik az operációs rendszer elkészít egy másolatot a lapról, majd módosítja a lapozási struktúrákat csak azok a lapok másolódnak, amelyek effektíve módosítva is vannak tipikus példa a UNIX fork() Copy-on-write lapok

52 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 52 Fizikai memória 3. lap 1. lap A. processz virtuális címterülete eredeti adat B. processz virtuális címterülete eredeti adat 2. lap Copy-on-write lapok – Írás előtt

53 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 53 B. processz virtuális címterülete Fizikai memória A. processz virtuális címterülete eredeti adat 3. lap 1. lap 2. lap módosított 2. lap másolata Copy-on-write lapok – Írás után

54 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 54 Megszakítások Külső hardver eszköz CPU megszakítás kontroller CPU megszakítás kiszolgáló tábla n ISR Address Spin Lock Dispatch Code Interrupt Object Read from device Acknowledge- Interrupt Request DPC Driver ISR Raise IRQL Lower IRQL KiInterruptDispatch Grab Spinlock Drop Spinlock Windows specifikus

55 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 55 Megszakítások kezelése 1 max. 256 megszakítás az IDT táblázatban IDTR mutat az IDT tábla báziscímére és méretére (vektorok száma) a kivételek is ezen keresztül kezelődnek le

56 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 56 Megszakítások kezelése 2 egy megszakítás esetén mindig törlődik a TF flag tracing esetén is működnek a megszakítások interrupt gate esetén törlődik EFLAGS-ben az IF is a megszakításkezelőt nem szakíthatja meg egy újabb kezelőrutin trap gate esetén NEM törlődik az IF flag

57 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 57 Trap-ok kezelése Windows alatt Trap – egy mechanizmus, aminek a segítségével a processzor és az SO egy futó szál kontextusát blokkolni és elemezni tudja mindig átvált a végrehajtás kernel módba megszakítások – aszinkron lekezelés (non-blocking) kivételek – szinkron lekezelés (blocking) megszakítás kiosztó rendszerhívás kiosztó Interrupt service routines ISR-ek System services rendszer függvények kivétel kiosztó Exception handlers kivétel kezelők lapozó algoritmus (pager) megszakítások rendszerhívások hardver és szoftver kivételek virtuális page-fault kivételek

58 CRK 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 58 Kernel módba váltás Window alatt a kód végrehajtása három ok miatt történhet kernel módban felhasználói alkalmazások kérésére rendszerfüggvények hívása (INT 2E / SYSENTER) a kernel módbeli kód ez esetben a hívó szál és processz kontextusában fut a hardvereszközök megszakításainka kiszolgálására a meszakításkiosztó (interrupt dispatcher) meghívja a megszakításkezelő eljárást (ISR, interrupt service routine) az ISR a megszakított szál kontextusában fut („arbitrary thread context”) egy ISR gyakran kezdeményezi egy DPC (deferred procedure call) végrehajtását, amely szintén kernel módban fut a Windows meghosszabbítja a megszakított szál CPU időszeletét dedikált kernel-módbeli „dolgozó” szálak vannak olyan szálak amelyek mindig kernel módban működnek (pl. I/O completion worker threads) ezek ugyanúgy vannak ütemezve, megszakítva stb. mint bármilyen más felhasználói szál

59 2006BBTE, Alkalmazások és operációs rendszerek optimizálása 59 Köszönöm a figyelmet!


Letölteni ppt "Alkalmazások és operációs rendszerek optimizálása „Babeş-Bolyai” Tudományegyetem, Matematika-Informatika Kar x86-os védett üzemmód Windows alatt előadás."

Hasonló előadás


Google Hirdetések