Lehekülgede saalimine

Allikas: Vikipeedia

Arvutite operatsioonisüsteemides jagavad lehekülgede saalimise nimelised mäluhalduse algoritmid arvuti mälu väikesteks osadeks ja eraldavad hiljem mälu lehekülgede kaupa.

Eelised[muuda | redigeeri lähteteksti]

Põhiline eelis teiste lihtsamate metoodite, nagu näiteks 'semu' eraldusviisi ja dünaamilise mälueralduse tehnikate ees on see, et programmile eraldatud mälupiirkond ei pea olema pidev ja sellepärast leiab aset väga vähe sisemist fragmenteerumist - seega läheb raisku vähe mälu.

Kuna programmid kasutavad harva kogu oma koodi ja andmeid ühel ja samal ajal korraga, siis saab virtuaalmälu realiseerida kirjutades lehekülgi kettale ja lugedes lehekülgi kettalt siis, kui neid vaja läheb. See on veel üks lehekülgede saalimise eelis teiste mäluhalduse meetodite ees.

Puudused[muuda | redigeeri lähteteksti]

Lehekülgede saalimise ainus peamine puudus on suhteliselt keeruline kood, mida selle realiseerimiseks vaja, seda eriti juhul, kui on vaja kasutada virtuaalmälu. Ülejäänud puudused on teisejärgulised - vajadus omada mäluhalduse üksust (MMU), mis tähendab seda, et lehekülgede saalimist ei saa kasutada mõnedel vanematel või väiksematel protsessoritel (näiteks on Inteli x86 perekonnas MMU ainult 80386'l ja hilisematel protsessoritel).

Kuidas see töötab[muuda | redigeeri lähteteksti]

Lehekülgedega manipuleerimist teostatakse lehekülgede saalimise korral riistvara tasemel, selleks on mäluhalduse üksus (MMU). Nagu varem mainitud jagatakse füüsiline mälu väikesteks plokkideks (tavaliselt 4 kilobaiti või vähem) ja igale plokile omistatakse number. Operatsioonisüsteem võib hoida tabelit vabadest lehekülgedest mälus või skaneerida iga päringu korral mälu (kuigi kaasaegsed opsüsteemid teevad viimast). Kui programm nõuab mälu, siis mõlemal juhul eraldab operatsioonisüsteem leheküljed programmile ja hoiab nimekirja programmile eraldatud lehekülgedest mälus. Vaatame ühte näidet.

Lehekülje number Programm Füüsiline aadress
0 Programm A.0 1000:0000
1 Programm A.1 1000:1000
2 Programm A.2 1000:2000
3 Programm B.0 1000:3000
4 Programm B.1 1000:4000
5 Programm D.0 1000:5000
6 Programm D.1 1000:6000
7 Programm B.2 1000:7000

Skeem 1 - Võimalik lehekülgede eraldamise nimekiri (4K suurused leheküljed).

Eraldamine võis toimuda sellises järjekorras:

  1. Programm A nõudis 3 lehekülge mälu
  2. Programm C nõudis 2 lehekülge mälu
  3. Programm D nõudis 2 lehekülge mälu
  4. Programm C lõpetas tegevuse, jättes maha 2 tühja lehekülge
  5. Programm B nõudis 3 lehekülge mälu ja sellele eraldatakse programmi C 2 tühja lehekülge, ning veel üks lehekülg.

Niisiis programm A lehekülgede tabelid on kaardistatud järgmiselt (programmi lehekülje nr. =>opsüsteemi lehekülje nr.): (0=>0, 1=>1, 2=>2); Programm B: (0=>3,1=>4,2=>7); ja programm D: (0=>5, 1=>6)

Siiamaani on kõik hästi. Mis juhtub aga siis, kui programm tahab oma mälu kasutada? Oletame, et programm A sisaldab instruktsiooni "LAADI mälu aadressil 20FE". Mis juhtub?

20FE on kahendkoodis 0010000011111110 ja meil on 4K suurused leheküljed. Niisiis, kui tehakse päring mälule aadressil 20FE, näeb näeb MMU sellist asja:


0010000011111110         =   20FE
|__||__________|
 |       |
 |       v
 v       Relatiivne mälu aadress leheküljel (00FE)
Lehekülje number (2)

Kuna meil on leheküljed 4096 baidi suurused (4096 - 1 = 4095 võib esitada 12 bitina kahendkoodis), siis MMU vaatleb lehekülje 4 esimest bitti ja järgmist 12 bitti võrreldakse lehekülje aadressiga. Kui meie mälu leheküljed oleks 2048 bitti suured, siis MMU vaataks ainult aadressi esimest viite bitti mälu lehekülje leidmiseks ja järgmist 11 bitti relatiivse aadressi tarvis. Järelikult lehekülje suuruse kahanemisel nende arv kasvab.

Mälupöörduse korral leiab MMU programmi lehekülgede tabeli abil opsüsteemi lehekülje numbri. Antud juhul vastab programmi A teine lehekülg opsüsteemi teisele leheküljele. Seejärel leiab ta vastavuse opsüsteemi lehekülje ja füüsilise aadressi vahel. Opsüsteemi teine lehekülg vastab füüsilisele aadressile 1000:2000, kuna programm tahab suhtelist aadressi 00FE, siis tagastab MMU füüsilisel aadressil 1000:20FE oleva mälu.

Lehekülgede saalimine ja virtuaalmälu[muuda | redigeeri lähteteksti]

Kui lehekülgede saalimist kasutatakse koos virtuaalmäluga, siis peab operatsioonisüsteem järge pidama kasutusel olevatel lehekülgedel ja neil lehekülgedel, mida enam ei kasutata või mis ei ole mõnda aega kasutuses olnud. Kui opsüsteemil läheb lehekülge vaja või kui mõni programm nõuab saalealale kirjutatud lehekülge, siis kirjutab OS mingi lehekülje saalealale ja toob teise lehekülje mällu. (Sellest, kuidas opsüsteem otsustab, milliseid lehekülgi sisse või välja saalida, räägib lehekülgede asenduspoliitika.) Sel moel saab kasutada rohkem operatiivmälu, kui arvutil tegelikult on.

Vaata ka[muuda | redigeeri lähteteksti]