Tietotekniikan laitos Jyväskylän yliopisto TIES406 Tietotekniikan opintojen aktivointi, luento 17.8.2011
Outline Tietokonelaitteisto 1 Tietokonelaitteisto 2 3 4
Outline Tietokonelaitteisto 1 Tietokonelaitteisto 2 3 4
Mikä on tietokone? (Image Copyright Computer Laboratory, University of Cambridge: http://en.wikipedia.org/wiki/file:edsac_(25).jpg used under CC license.)
Tietokone on binäärinen laskukone Tietokonelaitteisto käsittelee bittejä (nollia ja ykkösiä), jotka ilmenevät sähköjännitteinä Kaikki mitä tietokone tekee on bittien siirtämistä ja kahden bitin yhdistämistä ns. logiikkaportin avulla! Komponenteista (portteja, muistisoluja) organisoidaan suuri ja monipuolinen verkosto, mutta pohjalla oleva idea ei ole kummempi.
Tietokone on uusi keksintö Ideat 1800-luvulta Laskennan teoria 1900-luvun alkupuolelta Ensimmäiset yleiskäyttöiset tietokoneet 1940-luvulta (Käytännössä n. 70 vuotta sitten; esim. auto yli 100 vuotta, paperinvalmistus yli 2000 vuotta)
Tietokone on samanlainen kuin 60 vuotta sitten Von Neumann -arkkitehtuuri : prosessori, muisti, I/O, väylä Nykyään monimutkainen (tehostavia lisäkomponentteja); tärkeät peruskomponentit löytyvät kuitenkin yhä Teoreettiset mahdollisuudet yhä samat! Ei harppauksia näköpiirissä (ellei kvantti-, DNA- tai aivosolukoneista aleta saada käyttökelpoisia).
Keskusyksikkö (CPU) suorittaa konekielistä ohjelmaa
Ohjelma assembler konekieli (katsotaan käytännön esimerkki ohjelman kääntämisestä)
Muistihierarkia Rekisterit Välimuistit (Level 1, Level 2; prosessoriteknologia hoitaa välimuistin käytön; ohjelma näkee virtuaalimuistiavaruuden) Keskusmuisti Massamuistit kuten kovalevyt Rekisterit nopeita mutta kalliita (komponenttien ja sunnitteluratkaisujen hinta). Alaspäin siirryttäessä nopeus putoaa ja hinta laskee. Muistin suunnittelu aina kompromissi kapasiteettitavoitteen ja hintarajoitteen välillä!
Nykyisen tietokoneen ominaisuuksia Nopeampia, pienempikokoisia, suurempi kapasiteetti Löytyy kaikkialta!
Tietokoneita on joka puolella! Kännyköissä, kameroissa, DVD-soittimissa, pesukoneissa, autoissa RFID:t periaatteessa tietokoneita Täydellinen käyttöjärjestelmä tarvitaan yleiskäyttöisissä tietokoneissa, mutta käyttöjärjestelmän osioita tarvitaan myös muissa laitteistoissa.
Outline Tietokonelaitteisto 1 Tietokonelaitteisto 2 3 4
n merkitys Tietokone on siis binäärinen laskin, tyhmä vekotin, kasa rautaa (so. piitä, kuparia, kultaa, muovia, kemikaaleja) Laitteiston käyttämiseksi tarvitaan järjestelmä...... nimittäin käyttö-järjestelmä
Käyttöjärjestelmien historiaa 1940-luku, 1950-luku: Ensimmäiset tietokoneet, ei käyttöjärjestelmää. Ongelmia mm. ajankäytön kannalta: Miljoonien arvoista konetta varattiin kalenterista kuin Kortepohjan pyykkikonetta, esim. tunti kerrallaan. Jos tunnin aikaikkunassa tehtiin vartin työ, jäi 45 minuuttia hukattua aikaa. Ongelmana oli siis kallis hukka-aikaa, joka johti jonkinlaisen automaattisen vuoronnuksen tarpeeseen. 1950-luku: monitoriohjelmat yksi ns. työ (job) loppuun, minkä jälkeen monitoriohjelma latasi ja käynnisti automaattisesti seuraava työn. 1960-luku: monitoriohjelmia, JCL, ohjelmointikieliä ja kääntäjäohjelmia ( compile and run ). Ei moniajoa, ei muistinsuojausta. Haasteita lisäksi tasapuolisuus ja keskeytykset. 1960-luku (edelleen): Aikajakojärjestelmät (time-sharing systems). Koneet yhä kalliita, moni pystyisi tekemään tehokasta työtä koneen avulla. Ratkaisuna tähän päätteet ja käyttäjien kesken jaetut aikaikkunat/aikaviipaleet. Useiden prosessien ja jaettujen resurssien käytöstä syntyivät luonnollisesti ongelmat synkronoinnissa, poissulussa ja lukkiutumisessa. Lisäksi muistin sekä käyttäjien ja käyttöoikeuksien hallinta tuli entistä tärkeämmäksi. 1970-luku: mm. Multics sekä kehitteillä olevat UNIX ja MS-DOS. monipuolisempi, suurempi koodimassa, hankalampi hallita. Haaste kokonaisuuden jäsentäminen. Kerroksittainen jäsennysmalli. 1980-luvulta alkaen: moniajon ja suojausten kehittämistä, moniydinprosessorit, hajautetut käyttöjärjestelmät, oliopohjaisuus. Mikrotietokoneet, oheislaitteiden kirjo. Verkkoyhteydet ja internet. 2000-luku: kännykät ym. sulautetut laitteet. Tulevaisuus:Ainakin hajautus, liikkuvat laitteet sekä moniydinprosessorit. Pilvet ja kevyet asiakaslaitteet.
Nykyisen käyttöjärjestelmän toimintoja ja tavoitteita Moniajo (monta ohjelmaa yhtäaikaa) Monta käyttäjää Verkkoyhteydet Tietoturva Virransäästö (erit. mobiililaitteissa) Multimedia Käyttäjä pitää tiettyjä toiminnallisuuksia itsestäänselvinä; ne on tarjottava. Tasapainotettavia tavoitteita ovat mm. vasteaika, tuottavuus, tehokkuus, tasapuolisuus, saatavuus, luotettavuus.
Olennaisin käsite: prosessi Prosessi on ohjelman käynnissä oleva ilmentymä n päätehtävä on mahdollistaa prosessien käynnistäminen ja suorittaminen tietokonelaitteistossa.
Resurssit ja vuoronnus Mm. prosessoria, keskusmuistia, kovalevyä ym. laitteita, tiedostoja, viestikanavia sanotaan resursseiksi. Moniajon avain on resurssien jakaminen prosessien välillä Mm. aikaviipaleet ohjelmille, tiedostojen lukitseminen Ohjelmat eivät välttämättä laske koko ajan silloin ne odottelevat jotakin tapahtumaa (ovat blokkautuneina ) Tapahtuma käsitellään välittömästi, jolloin nykyinen prosessi keskeytyy väliaikaisesti Konteksti (context) on prosessorin tila, kun se suorittaa ohjelmaa. Kun prosessi keskeytyy prosessorin keskeytyskäsittelyssä, on tärkeää että konteksti säilyy, toisin sanoen johonkin on tallennettava rekisterien sisältö.
Käyttäjätila, käyttöjärjestelmätila Normaalit ohjelmat toimivat suojatussa käyttäjätilassa. Vähintään jonkinlainen osa käyttöjärjestelmän konekielisestä ohjelmasta toimii prosessorin ollessa ns. käyttöjärjestelmätilassa. Tätä osaa sanotaan käyttöjärjestelmän ytimeksi. Ytimen vastuulla voi olla paljon (monoliittinen ydin) tai vähän ( pienoisydin / microkernel) toimintoja Ytimen ja sen läheisten komponenttien toimenpiteet voidaan suunnitella hyvin monella tavalla. Operaatiotutkimuksen menetelmiä voi käyttää vaihtoehtojen arvioinnissa Tiettyjä pakollisia toimintoja löytyy kuitenkin kaikista käyttökelpoisista käyttöjärjestelmistä...
Yhteenveto käyttöjärjestelmän tehtävistä/moduuleista Prosessinhallinta: vuoronnus (scheduler/dispatcher) synkronointi (synchronization) prosessien kommunikointi (IPC, inter-process communication) käynnistys, linkitys Muistinhallinta (memory management) Tiedostojärjestelmä (file system) Laitteiden ja muiden sijaintien nimeäminen/osoitteet Matalan tason laitehallinta (device management / drivers) Puskurointi Käyttäjämaan rajapinta (system call interface / API)
Outline Tietokonelaitteisto 1 Tietokonelaitteisto 2 3 4
(Katsotaan netistä Linuxin ytimen lähdekoodia konkreettinen esimerkki käyttöjärjestelmästä)
Outline Tietokonelaitteisto 1 Tietokonelaitteisto 2 3 4
Tehtävä Jakaudutaan kahteen ryhmään ja tehdään 15 minuutin keskustelu sekä purku: Kirjoita (subjektiivinen) kertomus ensimmäisestä kosketuksestasi tietokoneeseen. Milloin tämä oli? Mikä tietokone oli kyseessä, ja mikä oli käyttöjärjestelmä? Vertaa silloista käyttökokemusta nykyisin käyttämääsi tietokoneeseen ja käyttöjärjestelmään (todennäköisesti esim. Windows XP/Vista/7, Mac OSX, Linux). Mitä ominaisuuksia ensimmäisestäsi puuttui verrattuna nykypäivään, ja kaipaatko toisaalta jotakin ominaisuutta jota enää ei ole?