Mäluhaldus

Peamälu

5 põhimõtet:

  • Protsessi isoleerimine – protsessid peavad üksteisest olema eraldatud
  • Automaatne mälu hõivamine ja haldus – kui sa klikid hiirega rakenduse peal, ei pea sa mõtlema, kuhu määlu ta läheb ja mida ta teeb
  • Toetus modulaarsele süsteemile – kõikidel tänapäeva rakendustel on olemas modulaarne toetus
  • Mälu kaitsmine ja juurdepääs – mälule juurdepääs peaks olema ainult neile, kellel peaks sinna ligipääs olema, teisi sisse ei lasta
  • Pikaajaline hoidmine/talletamine – kui näiteks vahepeal arvuti välja lülitada või päev otsa tööl hoida

Programmid peaksid olema toodud mällu ja peaksid olema seotud mäluga, milles nad on.

Protsessor saab kasutada ainult peamälu (RAM) ja protsessori enda registrit (vahemälu/cache).

Registrite poole pöördumiseks läheb aega 1 protsessori takt. RAMi poole pöördumine on aeglane.

Vahemälu paikneb peamälu ja protsessori vahel (vahendab).

Mälu kaitsemehhanisme on vaja rakendada, et tagada tehete õigsust ja tehingute korrektsust.

Mõisted:

  • Frame ehk kaader – kindla pikkusega RAMi plokk
  • Page ehk lehekülg – kindla pikkusega andmeplokk, mis paikneb sekundaarmälus ehk kettal; võib ajutiselt kopeerida kaadrisse
  • Segment – muutuva pikkusega andmeplokk, mis paikneb sekundaarmälus

Virtuaalmälu

Kettal paiknev puhvermälu. Windowsis “page file”, Linuxis “swap” ehk saaleala. Tavaliselt 1.5x RAMi suurusest

Mäluhaldus on tehtud nii, et mälu saaks rahuldada järgnevaid mehaanisme:

  • Relocation – mälus ümberpaigutamine – swapi liigutamine ehk saalimine
  • Protection – mälu kaitsmine
  • Sharing – mälu jagamine
  • Loogiline mälu organiseerimine
  • Füüsiline mälu organiseerimine

Kui mälu pole PCBs, siis ta pole otseselt täitmisel ja selle võib saalida.

Põhimõtted:

  • Programmeerijale ei anta võimalust mälu hallata

Peamälu jaotatakse dünaamiliselt kindla suurusega tükkideks.

Best fit – parim paigutus, valitakse kõige lähedasema suurusega plokk.
First fit – esimene vaba ruum, kuhu vajalik protsess mahub
Next fit – alustab skannimist viimase paigutuse asukohast ja valib järgmine piisavalt suure ploki

Buddy system – kasutatakse kahte hõivamismeetodit korraga

  • Fixed,
  • Dynamic skeemid

Virtual Machine

 


Töötava protsessi juhtbloki andmestruktuuri vaatamine
Kohaliku tuuma „debugging“ käivitamiseks WinDbg-ga tuleb valida File menüüst Kernel Debug, valida Local vaheleht ja klikkida OK. Avaneva akna allosas peaks olema viip lkd> ja aknake, kuhu saab käske tippida. Käskusid saab vaadata Debugger.chm failist (abiinfo fail), lisaks saab kasutada dt (display type) käsku ca 1000 parameetriga. Kernel sümbol fail on vaja enne seadistada.
Kerneli struktuuride tüübi info saab käsuga dt nt!_*
Katkestuste objekti struktuuri saab käsuga dt nt!_*interrupt*:, selle väljundi esimene rida on „nt!_KINTERRUPT, selle sisu saab omakorda vaadata dt nt!_KINTERUPT: käsuga jne. Alamstruktuuride vaatamiseks peaks lisama võtme –r.
Aktiivsete protsesside (eprocess) struktuuride vaatamine: dt nt!_eprocess. Väljundi esimene rida on pcb, selle struktuuri saab vaadata dt _kprocess käsuga
Käsl !process ilma konkreetse mäluaadressita näitab ühetuumalise protsessori korral parasjagu täitmisel olevat protsessi CPU 0 –s, milleks on WinDbg ise
Protsessi keskkonnablokk (PEB) paikneb kasutajamoodi aadressruumis. Ta sisaldab infot, mida on vaja kujutise (image) laaduril, kuhjahalduril (heap manager) ja teistel Windows komponentidel, millised peavad ta poole pöörduma kasutajamoodis. Mingi kindla protsessi PEB vaatamiseks on vaja anda käsk !peb koos mäluaadressiga 16-süsteemis. Protsesside aadresside leidmiseks peab File menüüst valima Attach To A Process valiku. Valige Csrss ja kasutage tema aadressi !dp v käsus. W32PROCESS vaatamiseks: dt win32k!_W32PROCESS (aadress lisada)
Eksperiment lk 387-391 koopia kuni 407
Lõime struktuuride vaatamine: dt nt!_etread ja edasi dt nt!_ETREAD Tcb. Mingi protsessilõimede vaatamiseks peaks kasutama kõigepealt !process käsku, valima sealt lõime ja kasutama siis !thread käsku, lõime keskkonnablokki saab vaadata !teb käsuga

Capture

Capture

OSi protsessi ressursijaotus

http://www.tutorialspoint.com/operating_system/os_process_scheduling.htm

Saalimine:
Medium Term Scheduler

Comparison between Scheduler

S.N. Long Term Scheduler Short Term Scheduler Medium Term Scheduler
1 It is a job scheduler It is a CPU scheduler It is a process swapping scheduler.
2 Speed is lesser than short term scheduler Speed is fastest among other two Speed is in between both short and long term scheduler.
3 It controls the degree of multiprogramming It provides lesser control over degree of multiprogramming It reduces the degree of multiprogramming.
4 It is almost absent or minimal in time sharing system It is also minimal in time sharing system It is a part of Time sharing systems.
5 It selects processes from pool and loads them into memory for execution It selects those processes which are ready to execute It can re-introduce the process into memory and execution can be continued.

Context Switch

FCFS:

First Come First Serve Scheduling Algorithm

SJF:

Shortest Job First Scheduling Algorithm

PBS:

Priority Scheduling Algorithm

RRS:

Round Robin Scheduling Algorithm

MQS:

Multi Queue Scheduling Algorithm

Lõim:

Single vs Multithreaded Process

Lõime on lihtsam luua ja lihtsam hallata kui protsesse.

Mitmelõimelised rankendused ei oma eelist mitmikprotsesside korral.

One to one mudelit enam ei kasutata, see on vana.