Content extract
Debreceni Egyetem Matematikai és Informatikai Intézet 8. Memória management • Háttér • Logikai és fizikai címtér • Swapping • Folytonos allokálás • Lapozás • Szegmentáció • Szegmentáció lapozással Operációs rendszerek (I 1204) 101 Dr. Fazekas Gábor Debreceni Egyetem Matematikai és Informatikai Intézet • Háttér • Az számítógép (processzor) kapacitásának jobb kihasználása megköveteli, hogy egyszerre több processzus osztozzon a memórián (shared memory). • Egy program alapvetôen valamilyen (bináris végrehajtható) fájl formában helyezkedik el a háttértárban. Végrehajtáshoz be kell tölteni a memóriába • Végrehajtás közben – a memória kezelési stratégiától függôen – többször mozoghat a memória és háttértár között. • Input queue – a végrehajtásra kijelölt és evégett sorban álló programok együttese. • A programkódhoz és a program változókhoz valamikor memória címeket
kell rendelni (address binding). (Ez történhet a betöltés elôtt, közben, vagy akár utána is.) • Fordítási idôben történô tárfoglalás (címkapcsolás). • Betöltési (szerkesztési) idôben történô tárfoglalás (címkapcsolás). • Futási idôben történô tárfoglalás (címkapcsolás). Operációs rendszerek (I 1204) 102 Dr. Fazekas Gábor Debreceni Egyetem Matematikai és Informatikai Intézet • Egy felhasználói program feldolgozásának lépései Forrás program Compiler/ Assembler Más tárgymodulok fordítási ido Tárgymodul Kapcsolatszerkeszto Rendszerkönyvtár Betölthetomodul Dinamikus rendszerkönyvtár Betölto Végrehajtható program a memóriában Operációs rendszerek (I 1204) betöltési ido 103 futási ido Dr. Fazekas Gábor Debreceni Egyetem Matematikai és Informatikai Intézet • Dinamikus betöltés • Egy szubrutin nem töltôdik be, amíg meg nem hívódik. Minden szubrutin a lemezen található
áthelyezhetô bináris formában. • A hívó rutin elôször tisztázza, hogy a hívott benn van-e a memóriában. Ha nincs, akkor aktivizálódik az áthelyezô betöltô, és a betöltés után a program címhivatkozásai (címtáblázat, címkonstansok) módosulnak. • A nem szükséges rutinok soha nem töltôdnek be! • Nincs szükség speciális operációs rendszer támogatásra (a futtató rendszer - run time system saját hatáskörén belül megoldja). • Dinamikus szerkesztés • Statikus szerkesztés: a nyelvi könyvtárak úgy kezelôdnek, mint bármely más (felhasználói) object modul. Probléma: a gyakran használt rutinok sok-sok végrehajtható program kódjával együtt letárolódnak. (lemez-pazarlás!) • Dinamikus szerkesztésnél nemcsak az (áthelyezô) betöltés, hanem a (szimbolikus) kapcsolat szerkesztés is kitolódik a futási idôre. Egy kisméretû kód (stub=csonk) helyettesíti a szükséges rutint a végrehajtható program kódjában, amely
segítségével a szükséges rutin a memóriában (ha az memória rezidens), vagy a lemezes könyvtárban lokalizálható. A lokalizálás után (következô alkalommal) a rutin már direkt módon hajtódik végre (nincs újra töltés!). • További elônyök: könyvtár módosítások, verziók, bug fixes, patches, service pack, shared library. • Operációs rendszer támogatás: védett területre betöltött rutinok elérése. Operációs rendszerek (I 1204) 104 Dr. Fazekas Gábor Debreceni Egyetem Matematikai és Informatikai Intézet • Overlay • A felhasználói program logikájába (szubrutin struktúrájába) beépített dinamika. • Alapötlet: a teljes programnak (kód és adat) csak az a része legyen benn az operatív memóriában, amelyre ténylegesen szükség van. • Példa: többmenetes fordítók, assemblerek. Szimbólum tábla 20 K Közös rutinok 30 K Overlay driver 10 K Elso menet (70 K) Operációs rendszerek (I 1204) Második menet (90 K)
105 Dr. Fazekas Gábor Debreceni Egyetem Matematikai és Informatikai Intézet • Logikai és fizikai címtér • Logikai cím = a CPU által generált cím (virtuális cím). • Fizikai cím = a Memory Management Unit (MMU) által generált cím (reális cím). • A fordítási és betöltési idôben csak a logikai címtér (címhozzárendelés) elérhetô! • A logikai címet a MMU képezi le fizikai címmé. • Egy egyszerû címleképezési séma: relokáló regiszter 14000 CPU Logikai cím Fizikai cím + 346 Operációs rendszerek (I 1204) 14346 106 memória Dr. Fazekas Gábor Debreceni Egyetem Matematikai és Informatikai Intézet • Swapping • swap = csere (egy futó processzus kódjának és adatainak "lecserélése" egy háttértárban tároltra). • Háttértár: nagy, összefüggô, gyorsan elérhetô lemezterület, amely elég nagy ahhoz, hogy minden futó program memóriabeli képét (core image) tárolja. • Roll out, roll in:
swapping stratégia változat: az alacsonyabb prioritású folyamatok kicserélôdnek a magasabb prioritásúakra. • A swap idô nagyrészt adatátviteli idô(!), arányos a processzus által lefoglalt operatív memória méretével. • A swapping egyes verziói megtalálhatók a UNIX-ban (automatikus) és az MS Windows-ban is (kézi vezérelt?). • Round Robin példa: idôosztás és átviteli idô. • Más problémák: függô I/O. Operációs rendszerek (I 1204) 107 Dr. Fazekas Gábor Debreceni Egyetem Matematikai és Informatikai Intézet • Folytonos tár-allokálás • Az operatív memóriát egyetlen folytonos tömbnek tekinthetjük. • A memória "rendszer"- és "felhasználói program" részekre bomlik. • A rendszer résznek tartalmaznia kell a memóriába beágyazott megszakítási vektort, az I/O kapukat (portok). • Egyszerû partíciós allokálás 0 Limit regiszter Logikai cím CPU Relokációs regiszter Fizikai cím igen +
< Operációs rendszer Felhasználói program nem Megszakítás: címzési hiba! Operációs rendszerek (I 1204) 640K-1 108 Dr. Fazekas Gábor Debreceni Egyetem Matematikai és Informatikai Intézet • Multipartíciós allokálás • A felhasználói programok számára elérhetô terület részekre (partíciókra) bomlik. Egy partíció egy felhasználói program (processzus) befogadására alkalmas. • Fix, változó számú és hosszúságú partíciók, prioritás. • Lyuk (hole): két foglalt partíció közötti szabad memória terület (blokk). A lyukak mérete változó lehet. • Ha egy processzust létre kell hozni, akkor ehhez az operációs rendszernek egy megfelelôen nagy méretû lyukat kell kiválasztania. • Példa: Op. rendszer Op. rendszer Op. rendszer Op. rendszer 5. processzus 5. processzus 5. processzus 5. processzus 9. processzus 9. processzus 10. processzus 8. processzus lyuk lyuk lyuk 2. processzus Operációs rendszerek (I 1204)
2. processzus 2. processzus 109 2. processzus Dr. Fazekas Gábor Debreceni Egyetem Matematikai és Informatikai Intézet • Az operációs rendszer nyomon követi az allokált és szabad partíciókat (hely és méret alapján). • Dinamikus tár-hozzárendelési probléma: hogyan lehet kielégíteni egy adott méretû allokációs (tárfoglalási) igényt? • First -fit: foglaljuk le az elsô lyukat, amely elég hosszú! • Best-fit: foglaljuk le az elég hosszú lyukak közül azt, amelynek hossza legközelebb esik a szükséges hosszhoz! • Worst-fit: foglaljuk le a leghosszabb lyukat (ha az elég hosszú)! • Értékelési szempontok / értékelés: • Sebesség, tárkihasználás: a "first" és "best" jobb, mint a "worst". • A lyukak adminisztrálása is idôt és memóriát igényel, deadlockhoz is vezethet! (többe kerülhet mint a szabad hely!) • 50% szabály: (D. Knuth) a first fit stratégia statisztikai vizsgálata azt
eredményezte, hogy n blokk elhelyezése során n/2 blokk (helye) elvész(!) (ez a kezdeti szabad terület egy harmada!). • Külsô és belsô fragmentáció. • A külsô fragmentáció csökkentése tömörítéssel. • cél: a lyukak egyesítése egy szabad területté. • dinamikus relokáció szükséges • függôben levô I/O problémája. Operációs rendszerek (I 1204) 110 Dr. Fazekas Gábor Debreceni Egyetem Informatikai kar „Buddy” rendszer • Problémák a fix és a dinamikus partíciókkal: – fix: erősen korlátozza az aktív processzusok számát, a rendelkezésre álló teret nem használja ki hatékonyan – dinamikus: komplikált fenntartani, nagy a tömörítés költsége (processzoridő) • Megoldás: „buddy” rendszer, mint kompromisszum – az összes elérhető memória egy 2U méretű egyszerű blokk – ha a processzus által kért méret 2U-1 < s ≤2U, akkor az egész blokk lefoglalásra kerül, máskülönben • ezt a
blokkot két egyenlő részre osztjuk (2db 2U-1 méretű blokk) • az eljárást addig folytatjuk, amíg a legkisebb olyan blokkot kapjuk, ami nagyobb vagy egyenlő s-sel Operációs rendszerek Dr. Fazekas Gábor Debreceni Egyetem Informatikai kar „Buddy” rendszer 3. ábra Példa „Buddy” rendszerre Operációs rendszerek Dr. Fazekas Gábor Debreceni Egyetem Matematikai és Informatikai Intézet • Lapozás (paging) – nem folytonos tár-allokálás • A külsô fragmentáció problémájának egy lehetséges megoldását kapjuk, ha megengedjük, hogy a fizikai címtér ne legyen folytonos, megengedve egy processzushoz fizikailag össze nem függô memória blokkok allokálását. • A logikai- és fizikai címtér független blokkokra (lapokra, keretekre) bomlik. • A logikai blokk (lap/page) és a fizikai blokk (keret/frame) mérete megegyezik. • A méret 2 hatvány, jellemzôen 512-8192. • Bármelyik lap elfoglalhatja bármelyik keretet. •
Nyilván kell tartani a szabad és foglalt kereteket. • Egy n lapból álló program futtatásához elôbb n szabad keretet kell találni! • Belsô fragmentáció. • (Külsô fragmentáció nincs, mert egy keret mindig teljesen lefoglalódik) • A címképzés mechanizmusa: • logikai cím: (lap sorszáma, lapon belüli relatív cím) • fizikai cím: (keret memóriabeli kezdôcíme, kereten belüli relatív cím) • laptábla: minden logikai laphoz tartalmaz egy bejegyzést, amely a logikai lapot tartalmazó keret fizikai címe + más információk. Operációs rendszerek (I 1204) 111 Dr. Fazekas Gábor Debreceni Egyetem Matematikai és Informatikai Intézet Frame sorszám Logikai cím CPU page offset Fizikai cím frame page 0 offset page 1 page 2 Fizikai memória page 3 frame Logikai memória 0 1 1 4 2 3 3 7 Laptábla 0 1 page 0 2 3 page 2 4 page 1 5 6 7 page 3 Fizikai memória Operációs rendszerek (I 1204) 112 Dr. Fazekas
Gábor Debreceni Egyetem Matematikai és Informatikai Intézet • Invertált laptábla • Minden egyes fizikai laphoz (frame-hez) tartalmaz egy bejegyzést (entry). Egy bejegyzés az adott frame-ben tárolt logikai lap virtuális címét és annak a processzusnak az azonosítóját tartalmazza, amelyikhez a frame tartozik. • Csökken a laptáblák tárolásához szükséges memória mérete, de nô a tábla átnézéséhez keresési idô a lapreferencia felmerülése esetén. • Hash - megoldásokkal a keresési idô csökkenthetô. Logikai cím CPU pid p Fizikai cím d i d Fizikai memória keresés pid p Lap tábla Operációs rendszerek (I 1204) 113 Dr. Fazekas Gábor Debreceni Egyetem Matematikai és Informatikai Intézet • Megosztott lapok • A közös (reentrant) csak olvasható kód (lap) megosztva használható több processzus által (pl. szövegszerkesztôk, kompájlerek, ablak rendszerek) 0 ed 1 3 ed 2 4 ed 3 6 data 1 P1 proc. 1 P1
laptáblája ed 1 3 ed 2 4 ed 3 6 data 2 7 1 data 1 2 data 3 3 ed 1 4 ed 2 5 6 ed 3 7 data 2 ed 1 3 ed 2 4 ed 3 6 9 data 3 2 10 P3 proc. Operációs rendszerek (I 1204) P2 proc. P2 laptáblája 8 P3 laptáblája 114 Dr. Fazekas Gábor Debreceni Egyetem • Matematikai és Informatikai Intézet Szegmentáció – szemantikus memória felosztás • A szegmentáció egy felhasználói szemléletet tükrözô memória kezelési sémát jelent. • A program szegmensek együttese. A szegmens logikai egység, mint pl • fôprogram • eljárás 1 • függvény 4 • lokális változók • globális változók • közös változók (common block) • verem 2 • szimbólum táblázatok, tömbök • Pl. 3 1 2 3 4 fizikai memória Felhasználói szemlélet Operációs rendszerek (I 1204) 115 Dr. Fazekas Gábor Debreceni Egyetem Matematikai és Informatikai Intézet • A logikai cím két részbôl áll: < szegmens szám,
offset > • Szegmens tábla – két dimenziós felhasználó által definiált címeket egy dimenziós fizikai címekké alakít; a táblában minden bejegyzés tartalmaz egy • bázist – amely a szegmens fizikai kezdôcímét adja meg, • mérethatárt (limit), amely a szegmens hosszát mondja meg. • Szegmens táblázat bázis regiszter (STBR): a szegmens tábla memóriabeli helyére (kezdôcím) mutat (pointer). • Szegmens táblázat hossz regiszter (STLR): a szegmens tábla maximális bejegyzéseinek számát adja meg. • az s szegmens szám akkor legális, ha s < [STLR]. • Relokáció: – dinamikus – szegmens táblázat segítségével • Megosztás: – megosztott szegmensek – azonos szegmens (sor)szám • (Tár)védelem: minden egyes bejegyzéshez a szegmens táblában kapcsolódik egy: – érvényesítô (validation) bit (=0 ⇒ illegális szegmens) – read/write/execute privilégiumok • Allokáció: – a hosszútávu ütemezônek el kell
helyeznie a memóriában egy processzus összes szegmensét (hasonló megoldások és problémák lépnek fel, mint a változó hosszúságú multiparticiós rendszereknél) – first fit /best fit – külsô fragmentáció Operációs rendszerek (I 1204) 116 Dr. Fazekas Gábor Debreceni Egyetem Matematikai és Informatikai Intézet • Szegmentáció lapozással • ötlet: a lapozás a külsô fragmentációt, a szegmentálás a belsô fragmentációt csökkentheti! • Pl. INTEL (>3)86 (Az OS/2 operációs rendszer már ki is használta) • • • • • Egy processzus által használható szegmensek maximális száma: 16K (!) Egy szegmens mérete: 4 GB. Lapméret: 4K=4096 bájt. A szegmensek egyik fele privát, ezek címét (adatait) az LDT (Local Descriptor Table) tartalmazza A többi (az összes processzusok által) közösen használt szegmens, ezek címét a GDT (Global Descriptor Table) tartalmazza. • Mindkét táblában egy-egy bejegyzés 8 byte, az adott
szegmens leírója (kezdôcím és hossz). • Logikai cím: <szelektor, offset>, ahol az offset egy 32 bites érték, a szelektor s g p 13 1 2 alakú, ahol s: szegmens szám, g: GDT, vagy LDT, p: protection (védelem) jelzése. • A processzor 6 szegmens regisztere egy-egy szegmens egyidejû gyors megcímzését teszi lehetôvé. • 8 db 8-bájtos mikroprogram regiszter (cache) a megfelelô LDT/GDT bejegyzések tárolására. • lineáris cím: (ellenôrzések - limit - után) 32 bit, amit fizikai címmé lehet konvertálni. • lapméret=4K ⇒ 1M elemû laptábla (4MB !) ⇒ jobb megoldás a 2 szintû laptábla! P1 10 Operációs rendszerek (I 1204) p2 10 117 d 12 Dr. Fazekas Gábor Debreceni Egyetem Matematikai és Informatikai Intézet • INTEL (>3)86 címképzési séma 16 3 2 logikai cím 0 szelektor offset leíró tábla szegmens leíró lineáris cím + directory page offset lap frame lap szótár fizikai cím lap szótár bejegyzés
lap tábla laptábla bejegyzés szegmens regiszter Operációs rendszerek (I 1204) 118 Dr. Fazekas Gábor Debreceni Egyetem • Matematikai és Informatikai Intézet Szempontok a memória management stratégiák összehasonlításához • A legerôsebben meghatározó tényezô a hardver támogatás. (A CPU által generált minden egyes logikai címet ellenôrizni kell (legalitás) és le kell képezni valamilyen fizikai címmé. Az ellenôrzés nem implementálható (efficiens) módon a szoftverben. • A tárgyalt memória management algoritmusok (folytonos allokálás, lapozás, szegmentáció, szegmentáció és lapozás) sok vonatkozásban különbözô értékeket mutat. Néhány ilyen vonatkozás: • Hardver támogatás: Az egyszerû és multipartíciós sémákhoz elég egy bázis regiszter, vagy egy bázis/limit regiszter pár. A lapozás és szegmentáció leképezô táblázatokat is igényel • Teljesítmény: Az algoritmus bonyolódásával a végrehajtási
idô is megnô. • Fragmentáció: A multiprogramozás szintjének emelésével processzor kihasználtság nôhet, de közben memóriát veszítünk el. (fix partíciók: belsô-, változó partíciók: külsô fragmentáció) • Relokáció: a program (logikai címtartományának) eltolása. áthelyezés. Tömörítés és dinamikus • Csere (Swapping): kiegészítô intézkedés arra az esetre, ha a processzus által elfoglalt fizikai memóriát fel kell adni. • Megosztás (Sharing): a hatékonyságot növelhetik a több processzus által közösen használt kód és adatok. • Védelem (Protection): a processzusok alaphelyzetben csak a hozzájuk rendelt címtartományt használhatják. (A megosztás természetes velejárója) Operációs rendszerek (I 1204) 119 Dr. Fazekas Gábor