pühapäev, 8. veebruar 2015

Mäluhaldus


Vaata kindlasti:
* www.youtube.com/watch?v=qdkxXygc3rE
* https://www.youtube.com/playlist?list=PLmbPuZ0NsyGS8ef6zaHd2qYylzsHxL63x


VIIS PÕHIMÕTET :

1. Protsessori isoleerimine - protsessid peavad üksteisest olema eraldatud.
2. Automaatne mälu hõivamine ja mälu haldus - näiteks klikid hiirega mingi rakenduse peal, rakendus läheb ise tööle ja sa ei pea mõtlema, kuhu mällu see rakendus läheb ning mida ta täpselt teeb.
3. Toetus mudelaarsele programmi ülesehitusele - kõikidel tänapäeva rakendustel on olemas modulaarne toetus.
4. Mälu kaitsmine ja juurdepääs - mälule juurdepääs peaks olema ainult neile, kellel peaks olema õigus sinna ligipääseda, teisi sinna sisse ei lasta.
5. Pikaajaline hoidmine ehk talletamine - näiteks vahepeal arvuti välja lülitamine või päev otsa tööl hoidmine.

   # Protsessid peaksid olema toodud mällu ja peaksid olema seotud selle mäluga, kus nad on.
   #  Protsessor saab kasutada ainult peamälu ehk RAM-i ja protsessori enda registrit ehk cache(vahemälu).
        ¤ Vahemälu paikneb peamälu ja protsessrit vahel. (on nn vahendaja rollis)
  #  Registrite poole pöördumiseks läheb aega 1 protsessori takt. RAM-i poole pöördumine on aeglane.
  # Mälu kaitsemehhanimsme on vaja rakendada, et tagada tehete õigsust ja tehingute korrektsust.


Mäluhalduse mõisted :

   ¤  Mälu kaader - on kindala pikkusega RAM-i blokk ehk peamälu blokk.
   ¤  Lehekülg - on kindla pikkusega andme blokk, mis paikneb sekuntaarmälus ehk kettal.
              * Seda lehte saab/võib ajutiselt kopeerida kaadrisse.
   ¤  Segment -  on muutuva pikkusega andmeblokk, mis paikneb sekuntaarmälus.

Virtuaal mälu - on kettal paiknev puhvermälu.
                * Windowsil on ta nimega "page file"
                * Linuxil on ta nimega "swap" (ehk saaleala)
**Tavaliselt on 1,5x RAMI-i suurusest.

# Mäluhaldus on tehtud nii, et mälu saaks rahuldada järgnevaid mehhanisme :
       *Relocation - mälu ümberpaigutamine > swapi liigutamine ehk saalmine
       *Protection - mälu kaitsmine
       *Sharing - mälu jagamine 
                   ¤ Ühes mälupiirkonnas pole võimalik mitmel asjal korraga ringi liikuda.
       *Loogiline mälu organiseerimine
      * Füüsiline mälu organiseerimine
 # Kui mälu pole PCB-s, siis ta pole otseselt täitmisel ja selle võib saalida.

# Loogiline mälu organiseerimine.
     * Mälu on organiseeritud lineaarselt.
     * Nendega on seotud laopitide süsteem.
     * Programmid on kirjutatud moodulitele.
     * Andmete jagamine moodulite tasemele vastab tavainimeste probleemide käsitlemisele.

# Füüsiline mälu organiseerimine 
  * Programmeerijale ei anta kohustust mälu hallata, tegelikult ei anta talle selleks võimalust.
  * Vajalik mälu, mis on programmi ja tema andmete laadimiseks vajalik, ei pruugi olla alati olemas.
  * Programmeerija ei tea, kui palju mälu vaja läheb.
  * Mälu ülekattumine - ei ole piisavalt ruumi olukorrad, lubatakse mälu ülekattumist, üks moodul kirjutatakse teise peale, raiskab palju aega.

# Mälu jaotamine 
       * Mälujaotiste tekitamine on seotud protsessi peamälu täitmiseks.
                       ¤ Sisaldab virtuaalmälu
                       ¤ Põhineb segmentidel ja mälu lehekülgedel
       * Kettajaotised
                     ¤ Kasutatakse mõningate varemates operatsioonisüsteemideks.
                     ¤ ei sisalda virtuaalmälu kaasamist.

# MÄLUHALDUS TEHNIKAD.
      *Kindla suurustega jaotiste tegemine - peamälu jaotatakse kindla suurusega tükkideks.
             ¤ Seda on hästi kerge rakendada.
     * Dünaamiline jaotiste loomine -  peamälu jaotatakse dünaamiliselt tükkideks ehk vastavalt vajadusele tükkideks või blokkideks.
            ¤ Eesmärk on see, et iga protsess laadidakse sellisesse mälu tükki nagu protsess ise on ehk, siis tekitada vastavalt protsessi suurusele mälu tükk.
            ¤ Sisemist killustatust ei esine.
    * Lihtsate lehekülgede moodustamine - peamälu jagatakse võrdse suurusega kaadriteks.
            ¤ Tükeldatakse mõistliku suurusega tükkideks ehk nii nagu vaja.
            ¤ Ei ole välist killustatust.
    * Lihtsate segmentide tegemine - iga protsess jaotatakse teatud arvuks segmentideks.
            ¤ Tükeldada iga protsess mõislikeks suurusteks.
    * Virtuaalmälu lehekülgede loomine - kõiki tükke pole vaja laadida
            ¤ Sarnane lihtsa lehekülje loomisega
    * Virtuaal segmentide loomine - saab välja jätta need segmendid, mida kohe tarvis pole laadida.
            ¤ Sarnaneb lihtsa segmentide tegemisele
** Pakkimine - seda kasutatakse välisekillustuse vähendamiseks.
** Kõikide protsesside korral pole vaja kõike asju laadida ehk saame need hiljem kutsuda kui neid vaja on . 

PUUDUSED :
     * Mällu laaditav programm võib olla liiga suur seega tekib probleeme, et ta ära mahuks ja selle tulemusena tuleb programm üle programeerida.
     * Peamälu võib olla ebaefektiivne, kui iga programm, sõltumata suurusest, võtab ära terve jaotise.
                ¤ Nt programm on 11 M ja jaotis on 8 M ehk võtan teise bloki appi ja seega jääb teisest blokist 5 M kasutamata = mälu võetakse rohkem, et olla kindel, et kõik ära mahub.

# Dünaamiline jaotamine.
    * Jaotus erineva pikkusega, erinev arv
    * Protsessidele antakse nii palju mälu, kui palju nad vajavad.
    * Kasutatakse IMB suurarvutite operatsioonisüsteeme.
    * Vaba ruumi otseselt nende vahel ei jää.
          ¤ Sisemist killustatust ei teki.
    * Mälu kasutatakse vähemalt algul efektiivselt ära, hiljem tuleb otsida sobiva suurusega tükki või tõsta ringi, kui ruumi ei jätku.
    * Välimine killustamine.
    * Aja möödudes tekib neid auke sinna juurde, mälukasutus hakkab vähenema.
    * Toimub pakkimine, kasutatakse välimise killustamise vähendamiseks.
    * Operatsioonisüsteem nihutab neid protsesse, et need oleks üksteise järgi, kogu vaba ruum on nagu üks blokk.
    * Selline tegevus nõuab palju aega.

# Mälupaigutse algoritmid - ehk mäluruumi hõivamise algoritmid.
    * Parim paigutus - valitakse üks blokk, mis on kõige lähedasem soovitud suurusele.
    * Esimene sobitus - krahmatakse esimese sobiva suurusega tükk.
    * Järgmine paigutus - alustab skännimist viimase paigutuse asukohast ja valib suuruse poolest järgmine bloki.

# Kaaslaste mehhanism -  kasutatakse nii fikseeritud kui ka dünaamilist põhimõtet.
      ¤ Vaba ruumi käsitletakse kui ühte blokki.


*** Best fit - parim paigutus, valitakse kõige lähedasema suurusega plokk.
*** First fit - esimene vaba ruum, kuhu vajalik protsess ära mahub.
*** Next fit - Alustab skannimist viimase paigutse asukogast ja valib järgmise piisavalt suure ploki.
*** Buddy system - kasutatakse kahte hõivamismeetodit korraga.
          ¤ Fixed
          ¤ Dynamic skeemid

     
          

Kommentaare ei ole:

Postita kommentaar