870 likes | 1.09k Views
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
E N D
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 • Protsess – aktiivne: käivitamisega seotud info – muutub, iseloomustab. Vajab ressursse • Programmist protsessini: • Programmi tekst • Kompileerimine • Linkimine • Interpreteerimine • Kompilaator vs interpretaator
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
Kompilaator vs interpretaator? • Interpretaator: • Algtekst masintekstiks käivitamisel • Platvormist sõltumatu • Töötab aeglasemalt • Kompilaator: • Masinkoodiks kogu programm, salvestab faili • Sõltub OS-ist
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)
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
Planeerimisalgoritmid • Fist-Come, First-Served (FCFS) • Shortest Job First (SJF) • Shortest Remaining Time First (SRTF) • Round Robin
Küsimus nr 1 • OS-i komponendid on: • Side • Põhimälu haldamine • Protsesside haldamine • Faili operatsioonid • Failide haldamine
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
Küsimus nr 3 • Protsess: • Vajab mälu • On passiivne • On kood, tähemärgid • Sellega seotud info muutub • On programmi kood
Küsimus nr 4 • Protsessi juhtimisse kuulub: • Sünkroniseerimine • Programmide omavahelise suhtluse organiseerimine • Protsesside loomine ja kustutamine • Protsesside peatamine ja taastamine
Küsimus nr 5 • Interpraator • Sõltub platvormist • Töötab aeglaselt • Töötab kiiresti • Algtekst masintekstiks käivitamisel
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
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
Vastused • 1: B, C, E • 2: A, C, D • 3: A, D • 4: A, C, D • 5: B, D • 6: C, D • 7: C
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
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)
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)
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
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
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
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)
"There are 10 types of people in the world: those who understand binary, and those who don't."
Ü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
Ülekattega struktuur Sümboli tabel Rutiinid … PEA Overlay driver Alamprogramm 2 Alamprogramm 1 Alamprogramm 3
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
Swampping OS Kasutaja ruum 1. Swamp out Protsess 1 2. Swamp in Protsess 2 “hoidla” Põhimälu
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
Aadressi moodustamine piirregister nihkeregister MÄLU Loogiline aadress Füüsiline aadress CPU < jah + ei Adresseerimise viga
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
"The only problem with troubleshooting is that sometimes trouble shoots back."
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
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)
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
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
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 -- --
"Crap... Someone knocked over my recycle bin... There's icons all over my desktop..."
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
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
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
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)
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
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
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
Lehekülgede tabeli struktuur • Tabel väga suur • Ei ole mõtet tervenisti mälus hoida. • Tükeldamine • Mitmetasemeline tabel (segmenteerimine) • Inverteeritud tabel