33
MTAT.08.006 OPERATSIOONISÜSTEEMID 1. slaid KERSTI TAURUS Mäluhaldus

MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

1. slaidKERSTI TAURUS

Mäluhaldus

Page 2: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

2. slaidKERSTI TAURUS

Ülevaade

● Mõisted;● Pidevate mälualade hõivamine;● Lehekülgede saalimine.

Page 3: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

3. slaidKERSTI TAURUS

Mälu

● Mälu – adresseeritud baidimassiiv.● Protsessor saab mälust käske ja andmeid

– loe käsk;– loe esimene argument;– loe teine argument;– täida käsk;– salvesta tulemus mällu.

Page 4: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

4. slaidKERSTI TAURUS

Aadresside sidumine

● Enamuse elust veedab programm kõvakettal.● Tema täitmiseks tuleb programm tuua mällu.● Programmi täitmiseks tuleb koodis sisalduvad

sümbolaadressid seostada tegelike mäluaadressidega; see võib toimuda:

1) Kompileerimise ajal;

2) Laadimise ajal;

3) Täitmise ajal.

Page 5: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

5. slaidKERSTI TAURUS

Aadresside sidumine

1) Kompileerimise ajal:– mälupaigutus on ette teada;

– genereeritakse kood absoluutaadressidega;

– paigutuse muutumisel on vaja ringi kompileerida;

– seda skeemi kasutasid MS DOSi .com programmid.

Page 6: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

6. slaidKERSTI TAURUS

Aadresside sidumine

2) Laadimise ajal:– genereeritakse mälus ümberpaigutatav kood;

– reaalsed mäluaadressid asendatakse programmi laadimisel.

Page 7: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

7. slaidKERSTI TAURUS

Aadresside sidumine

3) Täitmise ajal:– aadresside sidumine lükatakse edasi konkreetse

aadressi poole pöördumiseni;

– programmi saab täitmise ajal mälus ringi liigutada;

– vajalik riistvaraline tugi.

Page 8: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

8. slaidKERSTI TAURUS

Loogilised ja füüsilised aadressid

● Loogiline aadress - programmide poolt kasutatav aadressiruum, nimetatakse ka virtuaalseks aadressiruumiks

● Füüsiline aadress – loogilisele aadressile vastav mälupesa aadress, mida mäluseade tegelikult näeb ja kasutab

● Kompileerimise ja laadimise ajal seotavate aadresside puhul on loogiline ja füüsiline aadress samad, täitmise ajal seotavatel erinevad

Page 9: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

9. slaidKERSTI TAURUS

Mäluhaldusplokk

● MMU (Memory-Management Unit) ehk mäluhaldusplokk - riistvaraline seade loogiliste aadresside füüsiliseks teisendamiseks.

● Kasutajaprogramm tegeleb oma loogiliste aadressidega (0..max) ega näe otseselt füüsilisi aadresse.

Page 10: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

10. slaidKERSTI TAURUS

Mälukasutus

● Dünaamiline laadimine – protseduuri ei laeta mällu enne kui teda tegelikult vaja läheb.

● Staatiline linkimine – kasutatavad protseduurid kaasatakse käivitatavasse faili.

● Dünaamiline linkimine – käivitatavas failis hoitakse vaid infot protseduuri asukoha kohta.

● Ülekatmine

Page 11: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

11. slaidKERSTI TAURUS

Dünaamiline laadimine

● Alamprogramme ei laadita enne, kui neid kord vaja läheb;

● Efektiivsem mälukasutus;● Kasulik näiteks siis, kui harva esinevate

erijuhtude töötlemiseks on kokku palju koodi;● Ei vaja operatsioonisüsteemi tuge, realiseeritav

täiesti programmi enda tasemel;

Page 12: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

12. slaidKERSTI TAURUS

Staatiline linkimine

● Teatud operatsioonisüsteemid lubavad vaid seda.● Süsteemsed teegid loetakse samaväärseks muude

objektimoodulitega ja seotakse programmi binaarkoodi.

Page 13: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

13. slaidKERSTI TAURUS

Dünaamiline linkimine

● Linkimine lükatakse edasi täitmisajaks● Tegeliku alamprogrammi asemel on viit (stub),

mis esimesel tema poole pöördumisel laadib päris alamprogrammi ja asendab ennast selle alamprogrammiga (enamasti viida vahetusega)

● Operatsioonisüsteemi tuge on vaja juhul, kui tahame neid alamprogramme jagada mitme protsessi vahel ja kasutame seejuures mälukaitset

● Eriti kasulik (süsteemsete) teekide kasutamisel - kettaruumi ja mälu kokkuhoid, mugav teekide uuendamine

Page 14: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

14. slaidKERSTI TAURUS

Ülekatmine (overlay)● Rakendusprogramm hoiab mälus ainult seda osa

programmist ja andmetest, mida hetkel vaja on.● Kasutatakse, kui kogu programm kokku on

suurem kui talle antud mälu.● Operatsioonisüsteemilt ei vajata tuge,

realiseeritav kasutaja tasemel.● Näide: DOS ja suured programmid.

Page 15: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

15. slaidKERSTI TAURUS

Saalimine (swapping)

● Protsessi võib ajutiselt mälust välja salvestusruumi kirjutada ning hiljem tagasi mällu laadida

● Salvestusruum - kiire ketas, mis mahutab kõigi kasutajaprogrammide mälukujutised, peab olema otsejuurdepääsuga suvalise mälukujutise juurde

● Roll out, roll in - saalimise variant prioriteedil põhinevate planeerimisalgoritmide juurde: madalama prioriteediga protsess saalitakse välja kõrgema prioriteediga protsessi töö ajaks

Page 16: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

16. slaidKERSTI TAURUS

Saalimine (swapping)

● Enamuse saalimise ajast võtab andmete kopeerimine välisseadmele, aeg on lineaarselt sõltuv mäluhulgast.

● Erineval kujul on saalimine kasutusel paljudes süsteemides, näiteks UNIX, Linux, Windows.

Page 17: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

17. slaidKERSTI TAURUS

Pidevate mälualade hõivamine

● Põhimälu on üldjuhul jagatud kahte ossa:– operatsioonisüsteem (sageli mälualade eesosas

katkestusvektorite asukoha tõttu);

– kasutajaprotsessid.

● Kasutajaprotsessidele mõeldud mälu on omakorda jaotatud väiksemateks tükkideks

● Igale täidetavale protsessile eraldatakse üks sobiva suurusega terviklik mälutükk

● Auk - vaba mäluosa

Page 18: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

18. slaidKERSTI TAURUS

Pidevate mälualade hõivamine

● Iga protsessiga on seotud nihke- ja piirregister– Kasutatakse loogiliste aadresside teisendamisel

– Kaitseb teisi protsesse ja opsüsteemi vigaste mälupöörduste eest

MÄLU

nihkeregisterpiiriregister

protsessor < +jah

ei

füüsilineaadress

katkestus; adresseerimise viga

Page 19: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

19. slaidKERSTI TAURUS

Fragmenteerumine

● Sisemine – Kui ruumi hõivamisel kasutatakse suuremaid blokke,

siis ka väiksema ruumi vajadusel hõivatakse kogu blokk.

– Vaba ruumi on, kuid ei saa kasutada.

● Välimine – Ruumi hõivamisel antakse sobival hulgal ruumi.

Ruum ei pruugi asetseda järjestikku.

– Vaba ruumi on, kuid see ei asu järjestikku ja kasutada ei saa

Page 20: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

20. slaidKERSTI TAURUS

Lehekülgede saalimine (paging)

● Eeldus – protsessi hõivatud mälualad ei pea asetsema füüsiliselt järjestikku.

● Kaader (frame) – pidev blokk füüsilist mälu suurus kahe aste (512, 4096, 8192)

● Lehekülg (page) – pidev blokk loogilist mälu● Protsessi käivitamisel loetakse tema leheküljed

vabadesse kaadritesse● Iga aadress on protsessoris jagatud kaheks:

– Lehekülje number (p) – indeks lehekülje tabelis

– Nihe lehekülje sees (page offset) (d)

Page 21: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

21. slaidKERSTI TAURUS

Lehekülgede tabel

p

MÄLU

protsessor

füüsilineaadress

loogiline aadress

d

f

füüsiline aadress

d

lehekülgede tabel

p{p – lk nr

d – nihe

Page 22: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

22. slaidKERSTI TAURUS

Lehekülgede saalimine (paging)● Peame arvet vabade kaadrite üle● Suurusega n protsessi jaoks otsime lihtsalt n vaba

kaadrit● Iga protsessi kohta teeme lehekülgede tabeli

loogiliste lehekülgede ja füüsiliste kaadrite vastavusse seadmiseks

● NB! Lehekülgede kaupa hõivamisel tekib paratamatult sisemine fragmenteerumine

Page 23: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

23. slaidKERSTI TAURUS

Segmenteerimine

● Segmenteerimine on mäluhalduse skeem, kus kasutatakse paljusid segmente, ühe pideva loogilise aadressruumi asemel

● Läheb paremini kokku paljude kasutajate mõttemaailmaga

Page 24: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

24. slaidKERSTI TAURUS

Segmenteerimine

● Programm on komplekt segmente. Segment on loogiline ühik, näiteks– Põhiprogramm

– Protseduur, funktsioon, meetod

– Objekt

– Lokaalsed muutujad, globaalsed muutujad

– Magasin

– . . .

Page 25: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

25. slaidKERSTI TAURUS

Aadressi moodustamine segmenteerimisega

s

MÄLU

d

piir

+protsessor <jah

ei

baas

s{

katkestus; adresseerimise vigap – segmendi nr

d – nihe

Page 26: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

26. slaidKERSTI TAURUS

Virtuaalmälu

Page 27: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

27. slaidKERSTI TAURUS

● Virtuaalmälu — kasutaja loogilise mälu füüsilisest mälust lahti sidumine:– ainult osa protsessi poolt vajatavast mälust on korraga

füüsilises mälus;

– loogiline aadressiruum saab seega olla oluliselt suurem kui füüsiline aadressiruum;

– aadressiruume (aadressiruumide osi) saavad protsessid omavahel jagada;

– võimaldab efektiivsemalt protsesse luua .

● Virtuaalmälu saab realiseerida kahel viisil: – lehekülgede laadimine nõudmisel (demand paging);

– segmentide laadimine nõudmisel (demand segmentation).

Page 28: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

28. slaidKERSTI TAURUS

● Virtuaalmälu (VM) suurus– ~1,5 korda tegelik mälu (max 4GB)

– NB! 32bit OS ei suuda adresseerida üle 4GB mälu!

– SSD kõvaketastega arvutitel lülitada VM välja.

– Kui arvutis on 3GB või rohkem aktiivmälu, lülita VM välja (kui ei kasutata).

● Linuxitel on selleks eraldi Swap partitsioon● MS Windows

– NT/2000/XP/2003 fail pagefile.sys

– 9X Win386.swp

Virtuaalmälu praktikas

Page 29: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

29. slaidKERSTI TAURUS

Virtuaalmälu seadistamine● Suurus fikseeritud: max 1,5 korda tegelik mälu

– Algsuurus=lõppsuurus

● Asukoht:– Eraldi kiire kõvaketas

– Füüsiliselt kettal alguses oleval partitsioonil

● NTFS failisüsteem ja 4 kB klastri suurus (olenevalt süsteemist)

● RAID0 sobib– Ei sobi: RAID1 ja RAID5 – virtuaalmälu ei vaja

tõrkekindlust

Page 30: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

30. slaidKERSTI TAURUS

NX bitt

● Riistvaraliselt realiseeritud– AMD 64-bitine protsessor

– INTEL Itaniumi 64-bitine protsessor (XD eXecute Disable)

● NX – No eXecute – protsessor keelab programmil käivitada koodi väljaspool talle eraldatud mäluala.

● Tagab turvalisuse, takistab viiruste levikut (aitab puhvri ületäitumise vastu ).

Page 31: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

31. slaidKERSTI TAURUS

NX bitt

● Tarkvaraline lahendus:– Linux

● Exec Shield● Pax

– Windows● DEP (Data Execution Prevention)

Page 32: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

32. slaidKERSTI TAURUS

Süsteemi vahemälu (CPU cache)

● Vahendajaks protsessori ja aeglase mälu vahel– NB! aeglane võrreldes protsessori kiirusega

– Vanematel arvutitel 2 vahemälu nüüdisaegsetel rohkem

Page 33: MTAT.08.006 OPERATSIOONISÜSTEEMID Mäluhaldus€¦ · MTAT.08.006 OPERATSIOONISÜSTEEMID KERSTI TAURUS 20. slaid Lehekülgede saalimine (paging) Eeldus – protsessi hõivatud mälualad

MTAT.08.006 OPERATSIOONISÜSTEEMID

33. slaidKERSTI TAURUS

Kettapuhver (disk cache)

● Suurus keskmiselt 2MB kuni 8MB● Seotud kindla seadmega (kõvaketas)● Kasutusvaldkond:

– ette/tahalugemine

– Kiiruse tasakaalustamine

– Kirjutamise kiirendamine

– Käsujärjekorra hoidmine