Õppetund
Teooria — Lehekülgede asendamine: FIFO, LRU ja optimaalne asenduspoliitika
Mälu jagatakse võrdse suurusega kaadriteks ja programmi andmed sama suurteks lehekülgedeks, nii et iga lehekülg mahub igasse kaadrisse. Pöördumisjada näitab, millises järjekorras programm lehekülgi kasutab. Pöördumine lehekülje poole, mida mälus pole, põhjustab leheküljevea: lehekülg laaditakse mällu. Kui ühtegi vaba kaadrit pole, määrab asenduspoliitika, milline lehekülg eemaldada. Asenduspoliitikal esineb antud jada korral Bélády anomaalia, kui F + 1 kaadriga tekib rohkem leheküljevigu kui F kaadriga.
Mida iga sümbol tähendab
F- kaadrite arv
n- lehekülgede arv tsüklis (lahendusega ülesandes)
r- tsükli korduste arv
- Eeldab
- Lehekülgi laaditakse nõudmisel: lehekülg laaditakse alles siis, kui seda küsitakse. Alguses on mälu tühi, seega põhjustab esimene pöördumine iga lehekülje poole leheküljevea iga asenduspoliitika korral. Kui mitut lehekülge enam vaja ei lähe, eemaldab OPT siinses mudelis neist väikseima numbriga lehekülje. Iga pöördumine puudutab üht lehekülge; lugemist ja kirjutamist ei eristata ning lehekülje eemaldamisega ei kaasne lisakulu. LRU täpne rakendamine nõuab iga mälupöördumise aja teadmist. Selle salvestamine on liiga kulukas, mistõttu operatsioonisüsteemide tuumad kasutavad LRU ligikaudseid variante, kus iga lehekülje juures hoitakse kasutusbitti. Neist tuntuim on kellalgoritm.
Ülesanne täielikult lahendatud
-
Millal põhjustab LRU iga pöördumisega leheküljevea? 5 sammu
Vajuta Tsükkel, OPT ja leia, millistel sammudel tekivad selle 7 leheküljeviga. Vaatle seejärel programmi, mis liidab 100 lehekülge täitva massiivi elemendid kokku 1 000 korda, kasutades 99 kaadrit. Mitu leheküljeviga tekib LRU-ga, mitu OPT-ga ja mitu siis, kui lisada 100. kaader?
-
Siinses näites põhjustavad esimesed viis pöördumist leheküljevea: neli esimest täidavad tühjad kaadrid ja viies sunnib lehekülje eemaldama. Seejärel tekivad vead sammudel 9 ja 13, nelja pöördumise järel: 5 + 2 = 7.
-
Kui n leheküljega tsükli jaoks on n − 1 kaadrit, on täpselt üks tsükli lehekülg mälust väljas. Leheküljevea hetkel läheb kõige kaugemas tulevikus vaja vahetult enne loetud lehekülge, milleni jõutakse uuesti n − 1 pöördumise pärast. Viimasel läbimisel ei lähe mõnda lehekülge enam vaja ja OPT võib eemaldada hoopis ühe neist. Vahetult enne loetud lehekülje eemaldamisel jäävad järgmise n − 2 pöördumise leheküljed mällu, nii et järgmine viga tekib n − 1 pöördumise pärast.
-
LRU 99 kaadriga: kui lehekülg p põhjustab vea, on kõik ülejäänud leheküljed kaadrites olemas. Kõige ammu kasutati lehekülge p + 1, mida tsükkel küsib järgmisena. Kõik 100 × 1 000 = 100 000 pöördumist põhjustavad leheküljevea, nagu siinses näites kõik 15 pöördumist. FIFO eemaldab samad leheküljed.
-
OPT puhul täidavad esimesed 99 pöördumist kaadrid. Alates 100. pöördumisest tekib viga iga 99 pöördumise järel, pöördumistel 100, 199, 298, … . Neid vigu on 1 + ⌊(100 000 − 100) / 99⌋ = 1 + 1 009 = 1 010. Kokku tekib 99 + 1 010 = 1 109 viga. Üldvalem on n + ⌊n(r − 1)/(n − 1)⌋, siin n = 100 ja r = 1 000.
-
100. kaadri lisamisel mahub kogu massiiv mällu: kõigi kolme asenduspoliitika korral tekib 100 leheküljeviga, iga lehekülje kohta üks. Pärast esimest läbimist vigu enam ei teki.
Vastus
LRU-ga 100 000, OPT-ga 1 109 ja ühe lisakaadriga 100 leheküljeviga. LRU jaoks on halvim tsükkel, mis ületab mälu mahtu ühe lehekülje võrra. Puuduva kaadri lisamine vähendab siin vigade arvu tuhat korda.
-
Õpitee
Mida andmestruktuur võimaldab odavalt teha
Allikad (1)
- The first insight's date and attribution: the anomaly, and its formal treatment for FIFO: L. A. Belady, R. A. Nelson and G. S. Shedler, "An anomaly in space-time characteristics of certain programs running in a paging machine," Communications of the ACM 12(6), 349–353, June 1969.