160 likes | 321 Views
Mälu vabastamine LRU ja FIFO-ga. Mart Kaldoja 001163 LDW. Mälu vabastamine. Kõiki asju ei saa mälus hoida, sellepärast kasutame virtuaalmälu, mis on odavam ja suurem Mälus vaja hoida ainult hetkel täidetavat programmi ja hetkel vaja minevat infot. Mälu vabastamine.
E N D
Mälu vabastamine LRU ja FIFO-ga Mart Kaldoja 001163LDW
Mälu vabastamine • Kõiki asju ei saa mälus hoida, sellepärast kasutame virtuaalmälu, mis on odavam ja suurem • Mälus vaja hoida ainult hetkel täidetavat programmi ja hetkel vaja minevat infot
Mälu vabastamine • Vaja on parimat algoritmi mälu vabastamiseks • Parim algortim võtaks vähe aega (kõik vajalik oleks kogu aeg mälus)
Mälu vabastamise algoritmid • Random - vabastamine toimub täiesti juhuslikult • FIFO - First In First Out - eemaldatakse esimesena sisse pandu • LIFO - Last In First Out - nagu FIFO, ainult eemaldatakse hoopis viimasena sisse pandu
Mälu vabastamise algoritmid • LRU - Least Recently Used - eemaldatakse viimati vähem kasutatu • Veel mitmeid erinevaid, näiteks loendamisel põhinev LFU (Least Frequently Used), kus eemaldatakse vähim kasutatu
Algoritmid täpsemalt • Vaatleme kahe algoritmi tööd lähemalt • FIFO • LRU • Miks need? • kõige tuntumad, kasutatakse nii cache'imise juures kui ka virtuaal mälus • lihtsalt arusaadavad ja ka reaalselt rakendatavad
Näited • Sisendina kasutame: 71200135610340 • Raami (frame) suurusena kasutame 4-a • Raami suurus määrab ära, mitu lehekülge saab hoida korraga mälus
FIFO Sisend: 7 1 2 0 0 1 3 5 6 1 0 3 4 0
FIFO kirjeldus • Loeme üle lehe vead (page fault), ehk mitu korda juhtus, et mälus polnud vajalikku asja. Vigade arvust tuleneb ka palju läheb meil aega. • Esimesed 4 numbrit paneme sisse (7120) • 0 on juba olemas • 1 on juba olemas
FIFO kirjeldus • eemaldame 7 ja lisame 3 (+1 viga) • eemaldame 1 ja lisame 5 (+1 viga) • eemaldame 2 ja lisame 6 (+1 viga) • eemaldame 0 ja lisame 1 (+1 viga)
FIFO kirjeldus • eemaldame 3 ja lisame 0 (+1 viga) • eemaldame 5 ja lisame 3 (+1 viga) • eemaldame 6 ja lisame 4 (+1 viga) • 0 on juba olemas • Kokku: 7 viga
LRU Sisend: 7 1 2 0 0 1 3 5 6 1 0 3 4 0
LRU kirjeldus • Loeme üle lehe vead (page fault), ehk mitu korda juhtus, et mälus polnud vajalikku asja. Vigade arvust tuleneb ka palju läheb meil aega. • Esimesed 4 numbrit paneme sisse (7120) • 0 on juba olemas • 1 on juba olemas
LRU kirjeldus • eemaldame 7 ja lisame 3 (+1 viga) • eemaldame 2 ja lisame 5 (+1 viga) • eemaldame 0 ja lisame 6 (+1 viga) • 1 on juba olemas
LRU kirjeldus • eemaldame 3 ja lisame 0 (+1 viga) • eemaldame 5 ja lisame 3 (+1 viga) • eemaldame 6 ja lisame 4 (+1 viga) • 0 on juba olemas • Kokku: 6 viga
Analüüs • FIFO on lihtsam • Nagu näha on LRU effektiivsem üldiselt • LRU erinevalt FIFO-st ei kannata Belady anomaalia all (Belady's Anomaly) • Belady Anomaalia - mida rohkem on raame (frame), seda rohkem on lehe vigu (page faults)