6. Tárkezelés Oerációs rendszerek 6. Tárkezelés Simon Gyul Bevezetés A rogrm címeinek kötése Társzervezési elvek Egy- és többrtíciós rendszerek Szegmens- és lszervezés Felhsznált irodlom: Kóczy-Kondorosi (szerk.): Oerációs rendszerek mérnöki megközelítésben Tnenbum: Modern Oerting Systems 2nd. Ed. Silberschtz, Glvin, Ggne: Oerting System Concets 2 Bevezetés A közonti tár (min storge, memory) Szervezése és kezelése z OS tervezését, imlementálását és teljesítményét befolyásoló egyik legfontosbb tényező. A multirogrmozás igénye és rogrmméretek növekedése vlós tár kezelésén túl megkövetelte virtuális tár kezelésének hrdver és szoftver technikáit. 6.. A rogrm címeinek kötése Logiki címtrtomány: Folytonos címtrtomány -tól kezdődik Lineárisn nő mximális értékig. Fiziki címtrtomány: gykorltbn nem fiziki címtől kezdve történik rogrmok végrehjtás, sokszor nem folytonos memóriterület áll rendelkezésre A két trtomány között megfeleltetés lekézés (ming). A címlekézés A címek kötésének lehetőségei Logiki (virtuális) címtrtomány Mx logiki cím lekézés Fiziki címtér Mx fiziki cím 5 sttikus dinmikus Fordítás közben (comile time) A fordítórogrm rogrm és z dtterület elemeihez bszolút címet rendel. Merev technik, elsősorbn ROM-bn lévő rogrmok esetében lklmzzák. Szerkesztés közben (link time) A függetlenül lefordított modulok sját logiki címtrtományt hsználnk. A linker feldt, hogy z összes modult - egymás mögé - elhelyezze fiziki tárb, vlmint feloldj modulok kereszthivtkozásit. Betöltés közben (lod time) A fordító áthelyezhető kódot generál, ennek címhivtkozásit betöltő rogrm z ktuális címkiosztás szerint módosítj. Futás közben (run time) A rogrm csk logiki címeket trtlmz, seciális hrdver elemek htározzák meg címet z utsítás végrehjtáskor. 6
A címek kötésének lehetőségei A logiki és fiziki címek kcsolt forráskód fordító tárgykód.obj kcsoltszerkesztő (linker) betölthető kód betöltő (loder) memóriké egyéb tárgykód rendszerkönyvtárk dinmikusn betölthető könyvtárk (.dll) 7 Logiki (virtuális) cím: z memóricím, mit CPU generál Fiziki cím: memóri vlós címe A logiki és fiziki címek megegyeznek: sttikus címkötés esetén különböznek: dinmikus címkötés esetén 8 A memóri-menedzsment egység (MMU) 6.2 A dinmikus logiki-fiziki címlekézés lvető módszerei Memory-Mngement Unit, MMU: z hrdver egység, mely virtuális címeket fiziki címmé lkítj Bázis-reltív címzés Utsításszámláló-reltív címzés Megjegyzés: felhsználói rogrmok cskis ekkel oerálnk, soh nem látják vlós fiziki címeket! 9 Bázis-reltív címzés Bázis-reltív címzés éld A rogrm tetszőleges helyre betölthető A bázisregisztert betöltési kezdőcímre állítv rogrm végrehjthtó. A rogrm tetszőleges helyre betölthető A bázisregisztert betöltési kezdőcímre állítv rogrm végrehjthtó. bázisregiszter Progrm bázisregiszter 6 logiki cím b + r=+b fiziki cím CPU logiki cím 27 + MMU fiziki cím 627 memóri 2 2
Utsításszámláló reltív címzés Pozíció-független kód: csk ozíció-független eket trtlmz Utsításszámláló (PC) b Progrm + r=pc+b fiziki cím 6.. Progrmok végrehjtás kisebb tárterületen Az eddigi módszereknél fiziki memóri mérete behtárolt futtthtó kód méretét (hiszen z egész rogrmnk és kcsolódó dtoknk egyszerre memóriábn kellett lennie) Ötlet: nem kell z egész rogrmnk memóriábn lennie! Késleltetett betöltés Futás közben nincs z egész rogrm tárbn. Szükség esetén töltődnek be egyes rogrmrészek. dinmikus betöltés dynmic loding dinmikus kcsoltszerkesztés dynmic linking átfedő rogrmrészek overly Dinmikus betöltés (dynmic loding) A rogrmhoz trtozó egyes eljárások háttértáron vnnk, h vlmelyikre szükség vn, zt egy seciális rogrmrészlet ezt betölti. Progrmozó szervezi meg, z OS nem nyújt támogtást. Pl. ritkán hsznált részek, hibkezelés, stb. Léései:. Hívás 2. Ellenőrzés: memóriábn vn?. Seciális rogrmrész betölti memóriáb, vezérlést átdj 5 6 Dinmikus betöltés (dynmic loding) rogrm háttértár eljárás eljáráshívás 7 Dinmikusn betöltött könyvtárk (dynmic linking) A dinmikus betöltés változt, z OS támogtásávl. A rogrmbn hsznált rendszerkönyvtárk eljárási helyett csk egy csonk (stub) kerül rogrmb A csonk trtlmz egy hivtkozást könyvtárr és z zon belüli eljárásr. Az csonk első meghíváskor z OS z eljárást betölti tárb. A következő hívások már z eljárást hívják meg időveszteség nélkül. 8
Dinmikusn betöltött könyvtárk (dynmic linking) Dinmikusn betöltött könyvtárk tuljdonsági rogrm eljáráshívás csonk könyvtár eljárás Előny: csökken tárfelhsználás hibás eljárás jvításkor nem kell z összes rogrmot újrfordítni Hátrány: Verzió-kontrol nehéz: dll okol Pl.: Windows dll Unix shred librry 9 2 Átfedő rogrmrészek (overly) A rogrm részekre bontás: közös dt- és rogrmrészek (nem változik) olyn átfedő részek, melyek közül egy időben csk egyre vn szükség. Az átfedő részeket egyesével töltjük be memóriáb. Nincs szükség OS támogtásr. Az átfedés számár fenntrtott tárterület legngyobb átfedő rogrmrész hosszávl egyenlő. 2 Átfedő rogrmrészek (overly) közösen hsznált terület (kód, dt) overly terület háttértár 22 6.. Memórillokációs elvek 6... Egyrtíciós rendszerek 6... Egyrtíciós rendszer 6..2. Többrtíciós rendszer 6... Tárcsere (sw) 6.5. Korszerű módszerek 6.5.. Szegmens szervezés 6.5.2. L szervezés 2 Memóriszervezés: Védett területek: OS seciális tárterületek megszkítás vektorok eriféri címtrtományok Felhsználói terület: A nem védett területen felüli cím-trtományt csk egy folymt hsználj. A rogrm z első szbd címre töltődik H z OS-nek szüksége vn memóriár, kkor vgy áthelyezi rogrmot, vgy nem hsznált területről llokál. 2
Egyrtíciós rendszer htárregiszter felhsználói memóriterület OS Sw out Sw in háttértár Védelem: felhsználói és rendszer mód Az OS területének védelmére elég egy regiszter, mely rogrm legkisebb címét trtlmzz Felhsználói mód: Futás közben egy hrdver figyeli, hogy minden hivtkozás tárolt cím felett legyen. Rendszer mód: Rendszerhíváskor védelem kikcsol, z OS z egész címtrtományt eléri. P P2 25 6..2. Többrtíciós rendszerek A multirogrmozás elve megköveteli, hogy több folymt legyen egy időben tárbn. Lehetséges megoldások: Fix rtíciós rendszerek: z OS feletti tárterületet rtíciókr bontják htárok nem változnk. Változórtícióméretű rtíció rogrm igényeinek megfelelő rtícióméret 26 Belső tördelődés Külső tördelődés Belső tördelődés (internl frgmenttion): A folymtok nem hsználják ki rendelkezésére bocsátott rtíciót. Külső tördelődés (externl frgmenttion): A szbd memóri kis, egymássl nem szomszédos részekre oszlik Szbd tárterület rtíciók Szbd tárterület rtíciók Felhsznált tárterület Felhsznált tárterület 27 28 Fix rtíciós rendszerek Változó rtíciós rendszerek Az OS feletti tárterületet fix rtíciókr bontják. A htárok nem változnk. Rossz htékonyság: belső tördelődés Védelem: htár-regiszterek Htár regiszter Htár regiszter. rtíció 2. rtíció. rtíció OS A rtíció rogrm igényeinek megfelelő méretű Problémák: Szbd terület tördelődése Egy folymt lefutáskor hsznált memóri felszbdul. Az OS nyilvántrtj ezeket területeket, z egymás melletti szbd területeket utomtikusn összevonj. Sokszor ezen területek nem szomszédosk, így szbd memóri kis részekre oszlik (külső tördelődés). Belső tördelődés nincs, hiszen csk szükséges memóriát kják meg folymtok. 29 5
Szbd területek tömörítése comction, grbge collection A külső tördelődés bizonyos fok után lehetetlenné teszi újbb folymt elindítását (elég szbd terület, de leghosszbb összefüggő szbd terület nem elég folymtnk). Megoldás: szbd helyek tömörítése. Tömörítő lgoritmusok: időigényes (nem biztos hogy megéri futttni, esetleg jobbn járunk, h megvárjuk, míg néhány folymt befejeződik). HW támogtást igényel. vártlnul lehet szükség rá (ezért l. egy interktív rendszer válszideje hirtelen megnőhet) tárterületek mozgtását körültekintően kell végrehjtni (z áthelyezési információk megőrzése, stb.) Memóriterületek lefogllás Strtégiák külső tördelődés csökkentésére. Az OS szbd területek közül következőkéen válsztht: legjobbn megfelelő (best fit) legkisebb még elegendő méretű első megfelelő (first fit) kereséssel tár elejétől indulunk, z első megfelelő méretűt lefoglljuk. következő megfelelő (next fit) kereséssel z utoljár lefogllt trtomány végéről indulunk, z első megfelelő méretűt lefoglljuk. Igen gyors lgoritmus, memóri %- mrd kihsználtln (5%-os szbály, mivel folymtok áltl fogllt memóri fele nincs kihsználv). legrosszbbn illeszkedő (worst fit) legngyobb szbd területből foglljuk le, bbn bízv, hogy ngy drbból fennmrdó terület más folymt számár még elegendő lesz. Htékonyság szemontjából legrosszbbn illeszkedő leggyengébb, többi ngyjából zonos. 2 Védelem Multirogrmozott rendszerekben nemcsk z OS, hnem más folymtok területeit is védeni kell. 2 regiszter kell, melyek címtrtomány htárit trtlmzzák hrdver támogtás. rtíció Htár regiszter Htár regiszter 2. rtíció. rtíció OS 6... Tárcsere (sw) A tárcsere során z OS egy folymt [teljes] tárterületét háttértárr másolj, így szbdítv fel területet más folymtok számár. A erifériás átvitel mitt időigényes (sokkl több idő, mint egy környezetváltás, CPU ütemezéskor ezt figyelembe kell venni). Problémák: Melyik folymtot tegyük ki háttértárr? Figyelembe kell venni folymt állotát, rioritását, futási, várkozási idejét, vgy lefogllt rtíció ngyságát. Melyik folymtot mikor hozzunk be háttértárról? Az előző szemontok itt is érvényesek. Ügyelni kell kiéheztetés veszélyére. Kerülendő folymtok felesleges kolgtás. 6.5. A tárcsere korszerű módszerei Hrdver támogtás Mesterséges folytonosság (rtificil continuity) Virtuális címtrtománybn folytonos rogrm vlóságbn nem z. A futó folymtoknk nem z egész címtrtomány vn közonti tárbn. A nem érvényes hivtkozás (nincs közonti tárbn) esetén utomtikus rogrmrészlet betöltés (OS hrdver együttműködés). Közös vonás futás közbeni címlekézés. Csk hrdver támogtássl viselkedik megfelelő sebességgel. 5 Futás közbeni címlekézés blokktábl kezdőcíme b + b d b + r=b +d b blokk fiziki kezdőcíme Virtuális cím: <b, d> b: blokkcím, d: eltolás, dislcement A trnszformáció blokktábl segítségével megy végbe. Minden folymtnk sját blokktábláj vn. A folymtok virtuális címtrtomány fedi egymást, de fiziki címtrtomány természetesen nem. 6 6
6.5.. Szegmens szervezés Péld: szegmensek Linux ltt A logiki címtrtománybn rogrm memóriáj nem egybefüggő terület, hnem önmgukbn folytonos blokkok (szegmensek) hlmz. A szegmens logiki egység. Pl.: főrogrm, eljárások, függvények, módszerek, objektumok, lokális változók, globális változók, stck, szimbólumtábl, stb. A címtrnszformáció z előző áltlános modellnek megfelelő (lásd előző ábr!). Blokktábl szegmenstábl Kevés szegmens, hogy hordozhtóbb legyen. 6 szegmens: Kernel kód Kernel dt User kód (z összes user folymt osztozik rjt) User dt (ugyncsk osztott hsznált) Tsk-stte (folymtok hrdver kontextusi) LDT (ritkán hsznált) 7 8 Cím: <szegmenscím, eltolás> Szegmens szervezés védelme Péld A folymt nem címezhet ki sját szegmenséből szegmensen belüli cím szegmens mérete, különben megszkítás (segment overflow fult). A szegmenstábl tárolj szegmens méretét (limit). Hozzáférés ellenőrzés olvsási jog (szegmens területét olvshtj) írási jog (szegmens területére írht, z ott lévő értékeket módosíthtj) végrehjtási jog ( szegmensben géi utsítások vnnk, zokt folymt végrehjthtj) Jogosultság megsértése, megszkítást generál (segment rotection fult). 9 Osztott szegmenshsznált Közös utsítások hsznált: több folymt zonos rogrmot futtt kevesebb memórihsznált lehet teljes rogrm is, de rendszerkönyvtár is. Közös dtterület Folymtok közötti kommunikáció. Megvlósítás: A folymtok szegmenstáblájábn vlmelyik szegmensnél zonos fiziki cím vn. A jogosultságok természetesen különbözőek, biztosítni kell kölcsönös kizárást. Péld Szövegszerkesztő kódszegmens dtszegmens Két éldány: kódszegmens osztott hsznált 2 7
Címtrnszformáció háttértáron lévő szegmens esetén Szegmenstábl trtlmz még: benntrtózkodási bitet (residency bit). Jelentése: szegmens memóriábn vn-e. Információt, hogy hol vn háttértáron H benntrtózkodási bit hmis: hiányzó szegmens hib (missing segment fult) lé fel, mit z OS kezel le. Szegmenshsznált hátrány: ngy külső tördelődés, mivel nem zonos méretűek blokkok. Szegmenstábl feléítése Blokktábl/szegmenstábl szegmensek szegmens cím szegmens hossz RB helye háttértáron R W X Residency bit Hozzáférési jogosultságok (Red/Write/Execute) 6.5.2. Lszervezés Azonos méretű blokkok (l, ge) hsznált Megszünteti külső tördelődést. A belső tördelődés elkerülése mitt kis lokt érdemes válsztni. A lok mérete mindig 2 htvány. Címtrnszformáció A 2 htvány mitt z lsó biteken lehet tárolni z eltolást: <b, d>, hol b most 2 htvány: Pl.:, z utolsó nullák helyére beírhtó d Címtrnszformáció módszerei: Közvetlen lekézés Asszocitív lekézés Kombinált technikák 5 6 Közvetlen lekézés ltábl kezdőcíme + d. lkeret sorszám lszám Egyszintű ltábl: A folymthoz trtozó minden l fiziki címe egy táblábn (ltérké) vn. lon belüli cím d fiziki cím 7 Péld. l. l 2. l. l Logiki címtér Megjegyzés: ltáblánk ilyen kilkítás esetén természetesen nem kell tárolni értékeit, hiszen mg táblán belüli cím. : l-keretek (nem kezdőcímek!) 2 7 ltábl 2 5 6 7. l 2. l. l. l fiziki memóri 8 8
Péld b 2 c d e 5 f 6 g 7 h 8 i 9 j k l 2 m n o 5 Logiki címtér Lok fiziki kezdőcímei (*N) lméret N = 2 7 ltábl 8 2 6 2 2 28. l: bcd 2. l: ijkl. l: efgh. l: mno fiziki memóri 9 Egyszintű ltábl roblémái Ltábl mérete ngy lehet, mivel lok szám sok. Nehéz gyors elérésű tárbn trtni. Pl.: 2 bites címtér (2 2 ) Kbites lok (2 2 ) 2 2 ( 6 ) db bejegyzés Megoldás: ltábl tördelése többszintű ltábl. Felfoghtó ltábl lozásánk is. 5 Többszintű ltábl külső ltábl kezdőcíme ltábl szám lon belüli eltolás + s d Többszintű ltábl éld s lszám s. ltábl... s. ltábl s + d külső ltábl... fiziki cím Külső ltábl Tiikus éld (2 bites rchitektúrán): bites ltábl-szám (s) s d bites lszám () 2 bites eltolás (d) lcím eltolás 5 A ltábl lji ltábl 52 Asszocitív lekéezés Az sszocitív tár működése Seciális gyors elérésű tár (sszocitív tár) segíti címzést trnsltion look-side buffer (TLB) A ltábl gyorsító tárbn várhtón gykrn hsznált lok címét tároljuk. A tár mérete itt sem elég ngy. A gykorltbn kombinált technikák (ltábl + gyorsítótár) hsználhtók. 5 Logiki cím Logiki cím Fiziki cím = Logiki cím 2 Fiziki cím 2... = Logiki cím k = tlált tlált tlált Fiziki cím k Fiziki cím Keresés: árhuzmosn z összes tárolt logiki cím lján. Tlált esetén tláltnk megfelelő fiziki cím kerül kimenetre. Drág kis kcitású 5 9
Kombinált technik ltábl kezdőcíme + d lszám lon belüli cím sszocitív tár. lkeret sorszám d fiziki cím 55 Kombinált technikák A fiziki lcím keresése egyszerre kezdődik mind z sszocitív tárbn, mind direkt ltáblábn. H z sszocitív tárbn vn tlált, kkor direkt keresés leáll. Az sszocitív tárbn lévő lokt frissíteni kell, környezetváltás esetén z sszocitív ltáblát is cserélni kell. Egy dott időszk ltt csk teljes címtrtomány kis része vn kihsználv, így tlálti rány elég mgs lehet (8-99%). 56 Túlcímzés elleni védelem Péld Lon belüli túlcímzés ellen nem kell védeni, hiszen minden lon belül kidhtó cím megfelelő kivétel: utolsó l... A lok érvényességét egy bit jelzi (lásd következő éldát). Címtrnszformáció háttértáron lévő l esetén: Itt is bit jellemzi, hogy memóriábn vn-e l, vgy háttértáron. Utóbbi esetben tábl háttértáron vló elhelyezkedés információját tárolj. b 2 c d e 5 f 6 g 7 h 8 i 9 j 2 5 vlid/invlid bit v 2 v v i ltábl 8 2 6 2 2 28. l: bcd 2. l: ij... l: efgh fiziki memóri 57 Logiki címtér 58 Osztott lhsznált Péld Editor Hsonló z osztott szegmenshsználthoz, több folymt ltérké tábláj zonos fiziki címekre hivtkozht. Pl.: közösen hsznált kód. Ilyenkor z OS gondoskodik védelemről: Szövegszerkesztő l kód l dt H 2 éldány fut, kkor memóriigény x2=8 l (nem osztott lhsznált) x2+=2 l (osztott lhsznált) 59 Editor: l kód, l dt, éldány Editor Editor 2 Editor Dt 2 7. folymt Editor Editor 2 Editor Editor 2 Editor 2 Dt 2 Editor 2. folymt Dt 2 6 2. folymt ltábl 2 5 6 7 Dt Editor Editor 2 Dt 2 Dt fiziki memóri 6
6.5.. Kombinált szegmens- és lszervezés Péld: MULTIX oerációs rendszer címtrnszformációj Egyesíti két technik előnyeit. L szervezés: nincs külső tördelődés, nem kell teljes szegmensnek tárbn lennie. Szegmens szervezés: tükrözi folymt logiki társzerkezetét, hozzáférési jogosultság megoldhtó. Címtrnszformáció: lényegében egy kétszintű táblkezelés. Első szint: ltábl címeket trtlmzó szegmenstábl Második szint: szegmensenként egy-egy fiziki lcímeket trtlmzó ltábl. A cím három részre tgozódik (szegmenscím, lcím, lon belüli eltolás). Hozzáférési jogok ellenőrzése szegmens szervezésének megfelelően történik. Osztott tárhsznált szegmens szervezésének megfelelően történik. 6 62 Péld: Intel 86 címtrnszformációj Péld: Átlgos hozzáférési idő Kombinált (ltáblát és sszociációs memóriát is trtlmzó) rendszerben memóri-hozzáférés ideje ns. Az sszociációs memóri 2ns ltt érhető el. A tlálti rány 9%. Mekkor z átlgos elérési idő? ltábl kezdőcíme + d lszám lon belüli cím sszocitív tár d. lkeret sorszám 6 Válsz: Fiziki cím elérése sszoc. memóriávl: 2ns+ns = 2ns Fiziki cím elérése sszoc. memóri nélkül: ns+ns = 2ns Átlgos elérési idő:.9 * 2ns +. * 2ns = 28ns 6 Péld: Otimális lméret ltábl kezdőcíme Egy rendszerben z átlgos folymt mérete s = MB. Egy ltábl bejegyzés mérete 8 byte. Mekkor lok ideális méret ()? d + lszám lon belüli cím d. lkeret sorszám Válsz: Az elzrolt memóri mérete (K): Ltábl bejegyzések: s/*e Az utolsó l átlg fele üres: /2 K= s/*e +/2 Otimum: dk/d = = -se/^2 +/2 = sqrt(2se) = kb 65