Memória hierarchia Tárolókezelő egység Virtuális tárkezelés (logikai-fizikai címek) Szegmentálás Lapozás
Memória Feladata : adatok (több / kevesebb) tárolása (hosszabb / rövidebb ideig)
CPU - Memória címsín Processzor Memória adatsín
MMU - Memory Management Unit Tárolókezelő egység MMU - Memory Management Unit
Tárolókezelés feladatai a CPU által megcímzett címen lévő érték elérése tárhierarchia hatékony működtetése : virtuális-logikai címek kezelése, lapozás, szegmentálás memória „szétosztása” (több program, több felhasználó között...) „védelem” rendszer programok a felhasználótól felhasználók adatai felhasználók programjai (de közös eljárások)
IBM 650 (1950-ben a legjobb tudományos számítógép) 2000 szavas memória ALGOL fordítóprogram 1024 szavas gépre PDP-1 időosztásos rendszer (!) 4096 db 18 bites szó 1961 virtuális memória…
Overlay technika (átlapolásos technika) Probléma : nagy program, kis memória Program feldarabolása, csak a szükséges darab(ok) a memóriában program data memória p p1 data data data p p p p2 p1 p2 p3 idő p3
Virtuális tárkezelés
Cím, címtartomány, címszélesség memória értékek memória címek 000000 000001 000010 000011 ... ... Címszélesség cím érték 011010 10010110 ... ... Címtartomány 111111
Logikai - fizikai címek Logikai cím(tartomány) Fizikai cím(tartomány) a CPU által címezhető, programban használható központi memória mérete... logikai - fizikai címek megfeleltetése ?!
MMU i j program központi memória logikai cím fizikai MMU cím fizikai címtartomány logikai címtartomány
Szegmentálás (segmentation)
Szegmensek képzése program szegmens = nem rögzített méretű adatblokk data1 data2 szegmensek cím meghatározása = szegmens meghatározása + szegmensen belüli „eltolás” meghatározása p0 p1 stack
Szegmentált memória kezelés logikai cím: szegmensszám eltolás s d szegmenstábla összehasonlító engedélyező a szegmenshez kapcsolódó különféle „bitek” báziscím hossz fizikai cím: + báziscím eltolás
Szegmentált memória kezelés (példa 1.) Logikai: S1/183 -> 1183 Logikai: S2/276 -> 3276 1000 szegmens szám S1 200 báziscím hossz S1 1000 200 S2 3000 500 S1 1000 200 3000 S2 500 szegmenstábla
Szegmentált memória kezelés (példa 2.) 0000000000 0000010000 011 Logikai: 000 00111 -> 1000000111 11111 Logikai: 011 11010 -> 0000101010 szegmens szám báziscím hossz 1000000000 000 01000 000 1000000000 01000 … 0000010000 11111 1000001000 011 111 1111111111 szegmenstábla
Szegmens elhelyezési stratégiák p2 Szegmens betöltési (elhelyezési) módszerek (stratégiák) : első szabad hely (first fit) következő szabad hely (next fit) legjobb hely (best fit) legrosszabb hely (worst fit) ? p0 fix méretű (de különböző) szegmensek... felezéses/duplázásos szegmensek... p1
„Szemétgyűjtés” (garbage collection, „memória kompaktálás”) ? p0 p0 p2 szegmensek p1 p2 szemétgyűjtés p1 nagyon időigényes !
Lapozás (paging)
logikai címtartomány és a Lapok képzése lapok = azonos, rögzített méretű adatblokkok logikai címtartomány és a fizikai címtartomány felosztása lapokra fizikai címtartomány logikai címtartomány
? Lapok megfeleltetése „logikai lapok” „fizikai lapok” MMU Lapkeret (page frame) ?
Címkiszámítás (lapszám, eltolás) lapszám (k) eltolás (d) lapszám 0. i bit j bit 1. n = 2i m = 2j 0. k. d. lapon belüli „eltolás” m. n.
Logikai-fizikai címképzés logikai cím q d „lap leképző eljárás” „MMU” fizikai cím p d
Logikai-fizikai címképzés logikai cím q d „laptábla” p fizikai cím p d
Logikai-fizikai címképzés „jelenléti bit” : lap a memóriában van vagy háttértárolón q d logikai cím 1 „laptábla” p 1 fizikai cím p d
Lapcímzés (példa) logikai cím (15 biten) fizikai cím (13 biten) 0000 1 01 0001 1 11 0010 0 00 0011 0 00 … 1111 1 00 lapszám (4 biten) eltolás (11 biten) lapszám (2 biten) eltolás (11 biten) 0000 00000000000 … 0000 11111111111 0001 00000000000 0001 11111111111 1011 … 1111 00000000000 1111 11111111111 00 00000000000 … 00 11111111111 01 00000000000 01 11111111111 10… 10 … 11 00000000000 11 11111111111 jelenléti bit logikai lapszám fizikai lapszám
Lapcímzés (példa1) Adatok : logikai címtartomány címszélessége: 15 bit központi memória : 8 Kbyte lapméret : 211 byte Kérdés : mekkora a laptábla mérete ? byte szervezés...(fontos !)
Lapcímzés (példa1 megoldás) lapméret : 211 byte = 2 Kbyte logikai címtartomány : 15 bit = 32 Kbyte = 16 lap központi memória : 8 Kbyte = 4 lap laptábla : 16 sor (a logikai lapokhoz) soronként 3 bit 1 jelenléti bit, 2 bit (a fizikai lapszám) laptábla mérete : 16x3bit = 48bit = 6byte byte szervezés...(fontos !)
Lapozási mechanizmus Ha a lap nincs a memóriában : laphiba (page fault) -> megszakítás -> háttértárolóból a lap betöltése Ha nincs hely a memóriában : helyettesítési eljárás... („egy lap” eltávolítása a memóriából...) ?
Helyettesítési eljárások Melyik lapot kell cserélni (eltávolítani) ? optimal : „amire legkevésbé lesz szükség”... legrégebben bentlévő (FIFO) legrégebben használt (LRU - Least Recently Used) legritkábban használt ... Megvalósítás bonyolultsága, tárigénye ? random prioritásos second chance LRU stack-el megvalósítva...
Optimális laphelyettesítés (példa) Lapkérelmek : 2,3,2,4,6,2,5,6,1,4,6 Optimális helyettesítés 2 3 2 4 6 2 5 6 1 4 6 - 2 2 2 2 2 2 5 5 1 1 1 - - 3 3 3 6 6 6 6 6 6 6 - - - - 4 4 4 4 4 4 4 4 ok ok ok ok ok „találati arány” (hit ratio) = 5/11
FIFO laphelyettesítés (példa) Lapkérelmek : 2,3,2,4,6,2,5,6,1,4,6 FIFO helyettesítés 2 3 2 4 6 2 5 6 1 4 6 - 2 2 2 2 6 6 6 6 1 1 1 - - 3 3 3 3 2 2 2 2 4 4 - - - - 4 4 4 5 5 5 5 6 ok ok „találati arány” (hit ratio) = 2/11
LRU laphelyettesítés (példa) Lapkérelmek : 2,3,2,4,6,2,5,6,1,4,6 LRU helyettesítés 2 3 2 4 6 2 5 6 1 4 6 - 2 2 2 2 2 2 2 2 1 1 1 - - 3 3 3 6 6 6 6 6 6 6 - - - - 4 4 4 5 5 5 4 4 ok ok ok ok „találati arány” (hit ratio) = 4/11
Lapcímzés (példa2) Adatok : logikai címtartomány címszélssége : 32 bit központi memória : 8 Mbyte lapméret : 4 Kbyte Kérdés : mekkora a laptábla mérete ? byte szervezés...(fontos !)
Lapcímzés (példa2 megoldás) lapméret : 4 Kbyte = 12 bit logikai címtartomány : 32 bit = 4 Gbyte központi memória : 8 Mbyte = 23 bit laptábla : 32-12=20 azaz 220 sor (a logikai lapokhoz) soronként 12 bit (1,5 byte) 1 jelenléti bit, 11 (a fizikai lapszám) laptábla mérete 220 x 1,5 byte = 1,5 Mbyte !!! byte szervezés...(fontos !) ?
Egyéb lehetőségek... Szegmentált lapcímzés kezelés... (szegmentálás + lapozás) Translation Lookaside Buffer... (a legutóbbi logikai-fizikai (lap)címmegfelelés tárolása cache-ban) [Modern comp. pp.252, 253]
Egyéb tulajdonságok... „overhead” „working set” „demand paging”... „trashing” - multiprogramozás Belady anomália Belady 123451251234565 FIFO 4 lappal 4/15 5 lappal 3/15
Lapozásos és szegmentált memória összehasonlítása Szempontok Lapozás Szegmentálás Virtuális címtartomány nagyobb Igen Igen lehet mint a fizikai memória? Programozónak tudnia kell róla? Nem Igen Hány lineáris címtartomány? 1 Sok Könnyen kezelhetők változó Nem Igen méretű táblák?