1 / 87

Operatsioonisüsteemid

3. Operatsioonisüsteemid. Sisukord. Tagasivaade Mälu Swapping Mäluleheküljed Lehekülgede nõudelaadimine Lehekülgede asendamine Freimide jaotus. Tagasivaade. OS on põhimõtteliselt “sündmustest” juhitud süsteemid Programm – passiivne : kood, tähemärgid

ledell
Download Presentation

Operatsioonisüsteemid

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3 Operatsioonisüsteemid

  2. Sisukord • Tagasivaade • Mälu • Swapping • Mäluleheküljed • Lehekülgede nõudelaadimine • Lehekülgede asendamine • Freimide jaotus

  3. Tagasivaade • OS on põhimõtteliselt “sündmustest” juhitud süsteemid • Programm –passiivne: kood, tähemärgid • Protsess – aktiivne: käivitamisega seotud info – muutub, iseloomustab. Vajab ressursse • Programmist protsessini: • Programmi tekst • Kompileerimine • Linkimine • Interpreteerimine • Kompilaator vs interpretaator

  4. Protsessi elutsükkel Uus (new) Töötav – kasutab CPU-d (running) Lõpetanud (terminated) Valmis (ready) Blokeeritud (blocked) Ootab CPU järel Ootab mingi teisi protsessi järel

  5. Kompilaator vs interpretaator? • Interpretaator: • Algtekst masintekstiks käivitamisel • Platvormist sõltumatu • Töötab aeglasemalt • Kompilaator: • Masinkoodiks kogu programm, salvestab faili • Sõltub OS-ist

  6. Lõimed vs protsessid • Sarnasused • Jagavad CPU-d ja ainult üks lõim jookseb korraga • Lõimi nagu protsesse täidetakse järjest • Lõimed saavad samuti luua “alalõimu” • Kui üks lõim on blokeerinud, saab teine joosta. • Erinevused • Lõimed ei ole üksteisest sõltumatud • Kõik lõimed saavad ligi kogu aadress ruumile, mis protsessil on • Lõimed on määratud üksteist aitama, toetama. Protsessid ei pruugi üksteist toetada (nt: loodud eri kasutaja poolt)

  7. Protsessoriaja planeerimine • Kriteeriumid • Protsessori kasutus – milline osa tööajast CPU hõivatud • Läbilaskevõime – mitu protsessi ajaühikus töödeldakse • Käibeaeg – aeg protsessi käivitamisest lõpetamiseni • Ooteaeg – aeg, mille jooksul protsess ootab CPU-d • Reaktsiooniaeg – aeg, mille jooksul protsess saab esimest korda CPU

  8. Planeerimisalgoritmid • Fist-Come, First-Served (FCFS) • Shortest Job First (SJF) • Shortest Remaining Time First (SRTF) • Round Robin

  9. Väike enesekontroll

  10. Küsimus nr 1 • OS-i komponendid on: • Side • Põhimälu haldamine • Protsesside haldamine • Faili operatsioonid • Failide haldamine

  11. Küsimus nr 2 • Käsuintepraator: • Tõlgib ja edastab juhtkäske • On sama mis CPU • Vahendaja kasutaja ja OS-i vahel • Tegeleb protsesside lõpetamisega • On üks OS-i teenustest

  12. Küsimus nr 3 • Protsess: • Vajab mälu • On passiivne • On kood, tähemärgid • Sellega seotud info muutub • On programmi kood

  13. Küsimus nr 4 • Protsessi juhtimisse kuulub: • Sünkroniseerimine • Programmide omavahelise suhtluse organiseerimine • Protsesside loomine ja kustutamine • Protsesside peatamine ja taastamine

  14. Küsimus nr 5 • Interpraator • Sõltub platvormist • Töötab aeglaselt • Töötab kiiresti • Algtekst masintekstiks käivitamisel

  15. Küsimus nr 6 • Lõimed: • On teistest lõimedest sõltumatud • Ei toeta/aita teisi lõimi • Sarnanevad CPU kasutuselt protsessidega • Loovad lõimi • Lõimi, erinevalt protsessidest, ei täideta järjest

  16. Küsimus 7 • Shortest Job First • On mäluhaldamis algortim • On ennetav algoritm • Kui CPU juhtimine saadud, ei katkestata protsessi enne kui CPU-tsükkel täidetud • Suurendab ooteaega

  17. Vastused • 1: B, C, E • 2: A, C, D • 3: A, D • 4: A, C, D • 5: B, D • 6: C, D • 7: C

  18. Mäluaadressid • - sõnade või baitide massiiv, kus igal ühikul oma aadress • CPU loeb mälust käske programmi käsuloenduri poolt näidatud asukohale • Programm (kettal) laetakse põhimällu enne käivitamist, luuakse uus protsess. • Pärast töö lõpetamist vabastatakse mälu • Protsesse ei paigutata samasse mälupiirkonda reeglina

  19. Mäluaadressid • Aadresse esitatakse programmi elutsükli jooksul erinevalt: • Lähtetekstis sõna kujul (muutuja nimi) • Kompileerides suhteline (nt: x baiti programmi algusest) • Suhtelist aadressi peab saama teisendada absoluutaadressiks hiljemalt ajaks, kui käsku täidetakse. Seda nim aadressi sidumiseks (address binding)

  20. Aadressi sidumine • Teostatakse erinevatel programmi eluetappidel • Kompileerimise ajal (kui teada, millises mälupiirkonnas programm hakkab asuma, genereerib kompilaator absoluutaadressidega koodi) • Laadimise ajal (suhteline ehk nihutatav kood kompileerimisel. Absoluutaadresside moodustamine laadimise ajal) • Täitmise ajal (protsess võib nihkuda mälus ka täitmise ajal. Vajab riistavara toestust)

  21. Mitmeetapiline programmi töötlus Programmi tekst kompilaator Kompileerimise etapp objektmoodul Teised objektmoodulid linkur Süsteemsed teegid laademoodul Laadimise etapp laadur Dünaamiliselt laetavad süsteemsed teegid Protsessi mälupiirkond Täitmise etapp

  22. Loogiline vs füüsiline aadress • Loogiline (virtuaalne) aadress – CPU poolt genereeritud • Füüsiline aadress – mälukontrolleri poolt nähtav aadressiregistrisse laetud aadress • Kompileerimise ja laadimise ajal seotud aadresside puhul sama • Sidumise täitmisel võib olla erinev • Aadresside teisendamise korraldab mäluhaldur

  23. Dünaamiline laadimine • - meetod, kus alamprogramm laetakse mällu alles siis, kui tema poole pöördutakse • Mälu kokkuhoid • Alamprogrammid kettal laademoodulitena • Kas põhimälus? Ei – laeme ketalt • Efektiivne, kui alamprogrammide hulgas on neid, mille poole pöördutakse harva

  24. Dünaamiline linkimine • Mälu kokkuhoiu meetod • Linkimises lisatakse alamprogrammi asemel viit, mis näitab kus see asub • Alamprogrammid koondatakse teekidesse • Kui alamprogrammi vaja -> teek laetakse mällu • Nt. standartfunktsioonide linkimine süsteemsetest teekidest • Shared libaries • Vajab OS-i toetust (erinevalt dün. laadimisest)

  25. "There are 10 types of people in the world: those who understand binary, and those who don't."

  26. Ülekatetega struktuurid (Overlay) • Mälu kokkuhoiu meetod • Programm jagatakse loomisel osadeks ning kirjeldatakse millised neist võivad hõivata sama mälupiirkonda. • Efektiivne siis kui hoolega läbimõeldud • Ei vaja OS-ilt eri toetust • Uue osa laadimine vajab lisaaega • Ühise mälupiirkonna suurus on arvestatud kõige suurema kattuva osa järgi • Kõige parem, kui programm pöördub enamvähem ühesuuruste moodulite poole

  27. Ülekattega struktuur Sümboli tabel Rutiinid … PEA Overlay driver Alamprogramm 2 Alamprogramm 1 Alamprogramm 3

  28. Swapping • - protsesside ajutine mälust välja laadimine, vabastades piirkonna teise protsessi tööks • Nt. round robin • Välja/sisse laadimine prioriteetidega algoritmidel: madalam välja, et kõrgema saaks sisse laadida ja käivitada • Kui aadress seotud kompileerimise või laadimise ajal, tuleb programm laadida tagasi samasse mälupiirkonda

  29. Swampping OS Kasutaja ruum 1. Swamp out Protsess 1 2. Swamp in Protsess 2 “hoidla” Põhimälu

  30. Mälujaotus: üks kasutajapiirkond • Mälus vaid üks kasutajaprotsess • OS väiksemate mäluaadresside piirkonnas • Nihkeregister (relocation register) sisaldab väiksemat kasutajaprotsessile lubatud füüsilist aadressi • Piirregisterisse (limit register) laetakse maksimaalne loogiline aadress

  31. Aadressi moodustamine piirregister nihkeregister MÄLU Loogiline aadress Füüsiline aadress CPU < jah + ei Adresseerimise viga

  32. Mälujaotus: mitu kasutajapiirkonda • Kuidas mälu mitme protsessi jaoks jagada? • Lihtsaim meetod: mälu jagamine võrdseteks osadeks, igale protsessile üks • Protsesside hulk piiratud mälu osadega

  33. "The only problem with troubleshooting is that sometimes trouble shoots back."

  34. Dünaamiline mälujaotus • Protsessile antav mälu võib olla erineva pikkusega • Tabel, kus märgitud, millised mäluplokid on hõivatud ja millised vabad • Protsess paigutatakse vabasse plokki, plokk märgitakse hõivatuks • Pärast lõpetamist märgitakse plokk vabaks • “Garbige collector” – prahi koristus

  35. Dünaamiline mälujaotus • OS-il mälujaotuseks kaks põhifunktsiooni: • Mälu eraldamine(allocate) • Mälu vabastamine (free) • Mäluplokkide kohta on tabelis järgmine info • Aadress ja maht • Iseloom (kinni, vaba, [vabastatud – kui prahikoristusega]) • Tunnused (nt. mingisse klassi kuulumine)

  36. Dünaamiline mälujaotus • Kuidas leida tellimusele suurusega n vaba plokk nimekirjast • Kolm meetodit • First-fit (esimene plokk, mis on piisavalt suur) • Best-fit (kõige väiksem plokk, mis on piisavalt suur • Worst-fit – eraldada võimalikult suur plokk • FF ja BF paremad kui WF. FF- võib põhjustada välimise fragmenteerumise

  37. Mälu fragmenteerimine • On piisavalt mälu aga seda ei ole võimalik kasutada • Liigid • Välimine (mälu on, kuid see ei ole pidev) • Sisemine (kinnistatud mälu on suurem kui tellitud. Vahe ei ole vajalik aga seda ei saa kasutada) • Mälu pakkimine – võimalik vaid siis kui aadresside sidumine toimub täitmise ajal • Dünaamilise mälujaotusele omane väline fragmenteerumine

  38. Mäluhaldamise ülesanne

  39. Mäluhaldamise ülesanne

  40. Näide • Alguses: -- -- -- -- -- • 1 samm: a, n=2 • Nüüd: aa -- -- -- -- • 2 samm: b, n=3 • Nüüd: aa bb b- -- -- • 3 samm: -, b (b vabaks) • Nüüd: aa -- -- -- -- • …. • Lõpuks: aa jj kk -- --

  41. "Crap... Someone knocked over my recycle bin... There's icons all over my desktop..."

  42. Mäluleheküljed • Fragmenteerumise vastu • Füüsiline mälu jaotatakse freimideks (2 aste st 512baidi – 16 MB vahel) • Loogiline mälu lehekülgedeks (sama pikkus mis freimil) • N leheküljest käivitatava programmi jaoks vaja leida N vaba freimi. Ei pea asuma järjest • Vabastab välimisest fragmenteerumise, tekitab sisemist

  43. Riistvara töö aadressi sidumisel lehekülgmälus MÄLU Loogiline aadress Füüsiline aadress CPU p d f d p Loogilise aadressi suurus: 2m Lk suurus: 2n Lk nr | nihe p d m-n n Lehekülgede tabel

  44. Lehekülgmälu mudel 0 1 2 3 4 5 6 7 Lk 0 Lk 0 Lk 1 1 0 1 2 3 Lk 2 4 Lk 2 Lk 3 3 Lk 1 7 Lehekülgede tabel Lk 3

  45. Näide I J K L M N O P A B C D E F G H 0 4 8 12 16 20 24 28 Loogiline mälu 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A B C D E F G H I J K L M N O p Füüsiline mälu 0 5 1 6 2 1 3 2 Lk tabel Nt : Loogiline aadress 0:20=((5*4)+0) Loogiline aadress 3: 23=((5*4)+3)

  46. Lehekülgede tabel • Enamik süsteeme peavad lehekülgede tabelit iga protsessi kohta • Lihtsaim viis realiseerimiseks: hoida väärtusi spetsiaalsetes registrites. • Tabeli registrite laadimise käsud: kiired • Suuremates süsteemides: registris viit tabelile mälus (aeglasem) • Lahendus: TLB

  47. Translation look-aside buffer (TLB) • TLB-s vaid mõned lehekülgede tabeli väärtused • CPU genereerib uue aadressi - > lk nr TBL-st • Kui nr leitakse, freim olemas. • Kui ei, pöördutakse mälus olevasse lehekülgede tabelisse • Kui TLB täis, tuleb valida väärtus, mis asendatakse

  48. Lehekülgmälu TLB-ga Loogiline aadress CPU MÄLU p d Lk nr Freimi nr Füüsiline aadress f d TLB-s leitud TLB-s ei leitud p Lehekülgede tabel

  49. Lehekülgede tabeli struktuur • Tabel väga suur • Ei ole mõtet tervenisti mälus hoida. • Tükeldamine • Mitmetasemeline tabel (segmenteerimine) • Inverteeritud tabel

More Related