OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012 Luento 12: Käyttöjärjestelmät, alkua Tekijät: Antti Virtanen, Timo Lehtonen, Matti Kujala, Kirsti Ala-Mutka, Petri M. Gerdt et al.
Mikä on käyttöjärjestelmä (1/2) Käyttöjärjestelmä on ohjelma, joka hallitsee ja jakaa tietokoneen resursseja Esimerkiksi Windows XP, Mac OS X ja Linux ovat käyttöjärjestelmiä Käyttöjärjestelmiä on satoja, ellei tuhansia erilaisia Suurin osa käyttöjärjestelmistä ei ole laajassa käytössä Esimerkiksi teollisuuden oma käyttö, sulautetut järjestelmät Perinteisten tietokoneiden lisäksi käyttöjärjestelmiä löytyy myös muista laitteista, kuten puhelimista ja tablettilaitteista Tutuimpia varmaankin IOS, Android, Windows Phone, Symbian (RIP), Meego...
Mikä on käyttöjärjestelmä (2/2) Käyttöjärjestelmä tarjoaa sovellusohjelmille infrastruktuurin, jossa on ohjelmien tyypillisesti tarvitsemia perustoimintoja Käyttöjärjestelmä huolehtii esimerkiksi Internetyhteyden muodostamisesta ohjelmien puolesta Käyttöjärjestelmä antaa ohjelmille resursseja käyttöön vuoron perään tarpeen mukaan Käyttöjärjestelmä huolehtii ettei ohjelmat voi käyttää niille kuulumattomia resursseja Ohjelmien ei tarvitse tietää miten fyysistä tietokonelaitteistoa, rautaa (hardware), käytetään
Mitkä ovat käyttöjärjestelmän tehtävät? Prosessien hallinta Muistinhallinta Tiedostojärjestelmän hallitseminen Laitehallinta Turvallisuusnäkökulmien hallinta Käyttöliittymän tarjoaminen
Prosessien hallinta (1/2) Jokainen tietokoneessa käynnissä oleva (ajettava) ohjelma on prosessi Prosessi on ohjelman suorittamista Suoritin voi käsitellä vain yhtä prosessia kerrallaan Useita prosesseja voidaan suorittaa limittäin vaihtamalla prosessista toiseen nopeasti Prosessien limittämistä nimitetään moniajoksi Moniajoesimerkki arjesta: auton kuljettaja katselee vuoron perään eteenpäin, taustapeiliin ja mittaristoon Käyttöjärjestelmä pitää kirjaa kaikista prosesseista ja huolehtii niiden limittäisestä suorittamisesta Käyttöjärjestelmä voi myös keskeyttää prosessin Yleisesti puhutaan prosessin tappamisesta
Prosessien hallinta (2/2) Prosessi saa suoritinaikaa, kun suoritin ajaa prosessin (eli ohjelman) käskyjä Englanniksi CPU time Joillekin tärkeämmille prosesseille annetaan enemmän suoritinaikaa, kuin toisille Prosessien keskinäinen nokkimisjärjestys ilmoitetaan prosessin prioriteettinä Myös käyttäjä voi (joskus) vaikuttaa prosessin prioriteettiin, eli siihen miten paljon suoritinaikaa sille annetaan suhteessa muihin prosesseihin Taustaprosessi on matalaprioriteettinen prosessi joka ajoittain aktivoituu hoitamaan jonkin tietyn tehtävän Esimerkiksi virustorjuntaohjelmat, Windows update
Lisää moniajosta Ohjelmien vuorottelu mahdollistaa moniajon, mikä on erityisen välttämätöntä monen käyttäjän koneella Tarpeellista myös yhden käyttäjän koneella Moniprosessorikoneissa sekä tietoverkon avulla hajautetuissa järjestelmissä halutaan jakaa suoritettavia ohjelmia usealle suorittavalle yksikölle. PC-koneissa alkaa olla vakiona 2 prosessoriydintä ja neljään ollaan menossa Suorittimen lisäksi myös oheislaitteiden (muisti, kiintolevy jne) käyttöä on jaettava usean ohjelman kesken Varsinkin monen käyttäjän järjestelmissä on tarpeen huolehtia, etteivät ohjelmat suorita kiellettyjä asioita ja mahdollisesti sotke koneen tai muiden ohjelmien toimintaa
Moniajon toteutus Käyttöjärjestelmässä tapahtuvaa ohjelman suoritusta kutsutaan prosessiksi Yksittäisen prosessin sisällä voi olla useita eri säikeitä, jotka suorittavat asioita samanaikaisesti Prosessin tila sisältää suoritukseen liittyviä arvoja muistissa ja rekistereissä, esimerkiksi ohjelmalaskurin arvo Vuorontaja huolehtii prosessien hallinnasta ja suoritusvuorojen jaosta Irrottavassa moniajossa vuorontaja vaihtaa suoritusvuoroa väkisin kysymättä prosessilta Vuoron vaihto menetelmässä prosessi päättää itse milloin se antaa vuoron muille. Entä jos prosessi ei anna koskaan muille vuoroa esimerkiksi ohjelmointivirheen vuoksi?
Prosessin tilat Odottaa suoritusvuoroa suoritukseen vuoro loppui Suorittimella syöttö/tulostus valmis Odottaa syöttö/tulostusoperaation aloitus
Suoritusvuorojen vaihto Kun vuoroa vaihdetaan usein, syntyy illuusio yhtäaikaisesta suorituksesta Prosessin vaihtaminen ei ole ilmaista, joten sitä ei voi tehdä liian usein Tyypillinen aikajakson pituus on 5-10ms Myös käyttöjärjestelmä tarvitsee suoritusaikaa omien asioiden tekemiseen, mikä ei saa häiritä illuusiota
Suoritusvuorojen vaihto kaaviokuvana
Moniajon turvallisuus Prosessit eivät saa nähdä turvallisuussyistä toistensa muistialueita Mikäli ohjelmat haluavat kommunikoida keskenään löytyy käyttöjärjestelmästä palvelut joilla tämä onnistuu Vuorontajan toiminta on lähtökohtaisesti näkymätöntä prosesseille Yleensä prosessit eivät tiedä toistensa olemassaolosta Turvallinen moniajo vaatiikin lähes aina tukea ja erityiskäskyjä koneen suorittimelta! Mutkia joskus oikaistaan, esimerkiksi tehokkuuden takia Laiteajurit tyypillisesti voivat tehdä kaikenlaista Ikävyys: huono laiteajuri tekee koko järjestelmästä epävakaan
Moniajon ongelmat: deadlock Esimerkkinä dining philsophers problem Lähde: http://en.wikipedia.org/wiki/image:dining_philosophers.png (11.9.2007)
Muistinhallinta Tietokoneessa on monenlaista muistia Suorittimen erittäin nopea mutta pieni välimuisti Keskusmuisti, rajallinen määrä verrattain nopeaa muistia Hitaat massamuistit, kuten kovalevy ja optiset tallennuslaitteet Käyttöjärjestelmä pitää kirjaa kaikesta tietokoneen muistista Mitä muistia on olemassa Mitä muistia on vapaana Mikä ohjelma käyttää mitäkin muistitilaa Käyttöjärjestelmä jakaa muistia ohjelmien käyttöön Myös estää ohjelmia kirjoittelemasta toistensa muistitiloihin Käyttöjärjestelmä myös siirtelee tietoa muistien välillä
Muistinhallinta: virtuaalimuisti Virtuaalimuisti tarkoittaa massamuistin (kiintolevy) käyttämistä normaalin työmuistin jatkeena Ero on näkymätön ajettaville ohjelmille Virtuaalimuisti hidastaa koneen toimintaa, mutta mahdollistaa muistin ylivarauksen, mikä on usein hyvin hyödyllistä Esimerkiksi vaihdettaessa prosessia voidaan keskeytettävä prosessi kirjoittaa levylle Nopeampaa muistia vapautuu seuraavan vuoronnettavan prosessin käyttöön Koneen harrastamat mystiset levynruksutustalkoot ovat usein merkki siitä että käyttöjärjestelmä järjestelee virtuaalimuistia
Tiedostojärjestelmä Tiedostojärjestelmä vastaa tiedostojen ja hakemistojen organisoinnista ja säilyttämisestä Tiedostojärjestelmä luo käsitteet tiedosto ja hakemisto Tiedostojärjestelmä on sopimus tiedon säilyttämisestä Esimerkiksi jokainen ohjelma voisi viitata kovalevyn tietoihin kertomalla aina niiden levysektorien numerot jotka sisältävät halutut tiedot On älyttömän hankalaa ohjelmoida suorilla muistiosoitteilla Täytyisi pitää jonkinlainen kirjanpito levyn sisällöstä Jos jokin ohjelma ei noudattaisikaan sopimusta, saattaisi se sekoittaa koko levyn sisällön Käyttöjärjestelmä ylläpitää tiedostojärjestelmää Samalla käyttis kätkee eri tiedostojärjestelmien toteutuksen, ohjelmat näkevät yhtenäisen kuvauksen muistin sisällöstä
Mitkä ovat käyttöjärjestelmän tehtävät? Prosessien hallinta Muistinhallinta Tiedostojärjestelmän hallitseminen Laitehallinta Turvallisuusnäkökulmien hallinta Käyttöliittymän tarjoaminen
Laitehallinta eli oheislaitteiden hallinta Oheislaite on tietokoneeseen kytketty fyysinen laite Äänikortit, näytönohjaimet, verkkokortit, kovalevyt,... Erimerkkiset oheislaitteet toimivat eri ohjauskomennoilla Äänikortti X ei toimi samoilla komennoilla, kuin äänikortti Y Laiteajuri on ohjelma, joka muuttaa standardimuotoiset komennot ohjattavalle laitteelle sopiviksi Laiteajurit ovat tyypillisesti käyttöjärjestelmäkohtaisia Esimerkiksi äänikortille X on ajuri Mac- ja Windows KJ:ään Käyttöjärjestelmä ylläpitää kokoelmaa laiteajureita, joiden kautta ohjelmat (ja itse käyttöjärjestelmä) voivat käyttää laitteita Kun uusi laite lisätään tietokoneeseen, niin vastaava ajuriohjelma lisätään käyttöjärjestelmän ajurikokoelmaan
Turvallisuus ja sen hallinta Suurimmassa osassa käyttöjärjestelmiä on huomioitu turvallisuusnäkökohtia Käyttöjärjestelmä hallitsee turvallisuutta kahden asian kautta Käyttöjärjestelmä hallitsee ohjelmien (prosessien) pääsyä tietokoneen resursseihin (esim. muistiin ja oheislaitteisiin) Käyttöjärjestelmä määrittelee oikeuksia, jotka oikeuttavat tiettyjen resurssien käyttöön Tietylle käyttäjälle tai ohjelmalle voidaan antaa oikeuksia käyttää eri resursseja Käyttäjällä X on oikeus käyttää tietokonetta WWW-selain saa käyttää verkkopalveluja Käyttäjä X saa tallettaa tietoa My Documents -kansioon, mutta ei toisaalta edes näe käyttäjän Y kansioita Ylläpitokäyttäjä saa asentaa ohjelmia tietokoneelle
Turvallisuus: sisäinen ja ulkoinen Käyttöjärjestelmän hoitamat turvallisuuteen liittyvät asiat voidaan jakaa sisäisiin ja ulkoisiin Sisäisellä turvallisuudella tarkoitetaan Käyttäjien toimien rajoittamista ja valvontaa Ohjelmien toiminnan hallitsemista: prosessit pääsevät käsiksi vain tiettyihin resursseihin Ulkoiseen turvallisuuteen kuuluu esimerkiksi Autentikointi: käyttäjien henkilöllisyyden tunnistaminen ja päästäminen koneeseen käsiksi Erilaisten verkkopalveluiden käytön valvonta Palomuuri