Johdanto käyttöjärjestelmään penttivahtera

Samankaltaiset tiedostot
Linux. 00 Keskeiset piirteet. Unix ja Linux Helsingin ammattikorkeakoulu Stadia Vesa Ollikainen (muokannut M.Mäki-Uuro) Kysymyksiä

Historiaa. Unix kirjoitettiin kokonaan uudestaan C-kielellä Unix jakautui myöhemmin System V ja BSDnimisiin. Kuutti, Rantala: Linux

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat

Raspberry Pi. Yhden piirilevyn tietokone. Tässä dokumentissa kerrotaan yleistä tietoa Rasberry Pi- tietokoneesta ja. sen toiminnoista.

Linuxissa uusi elämä 1

LINUX LINUX. Viisi hyvää syytä käyttää Linuxia MUISTA! GNU Free Documentation License

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

Älykännykät ovat pieneen tilaan paketoituja, mutta suuret ominaisuudet omaavia tietokoneita.

Käyttöjärjestelmät: prosessit

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.

Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?

CUDA. Moniydinohjelmointi Mikko Honkonen

Unix-perusteet. Unix/Linux-käyttöjärjestelmä ja sen ominaisuudet

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle,

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Jouko Nielsen. Ubuntu Linux

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Pikaintro käyttöjärjestelmiin

Luento 1 Tietokonejärjestelmän rakenne

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä.

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Linux ylläpitäjän opas. Tärkeimmät komennot, logit ja muuta hömppä *^_^* by Hannu Laitinen ETA14KT

Kuva 1: Varo pyöräilijää!

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka. Joni Korjala APACHE WWW-PALVELIN Seminaarityö 2012

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Demo 13. Aihe: Linux. Opettaja: Antti Ekonoja. Tekijä: Heini Puuska

OHJELMISTOKEHITYS -suuntautumisvaihtoehto

Raspin Geany-IDE:n etäkäyttö

GNU/Linux kotikäytössä

VALO-ohjelmat ja LTSP kouluissa. Elias Aarnio Innopark, AVO-hanke

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

Suomen avoimien tietojärjestelmien keskus COSS ry

2 Konekieli, aliohjelmat, keskeytykset

Linux omaan kannettavaan. Ilkka Kiistala

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

4. Luento: Prosessit ja säikeets. Tommi Mikkonen,

PC-LAITTEEN TESTAAMINEN

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

ICT-info opiskelijoille

Metropolia Ammattikorkeakoulu

Helppokäyttöisyyttä Windows Vista käyttöjärjestelmän asetuksilla

ZENworks Application Virtualization 11

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT

Digikamera. Perustietoa digikamerasta ja kuvien siirtämisestä tietokoneelle

Ongelma(t): Jotta tietokonetta voitaisiin käyttää monipuolisesti ja mahdollisimman yksinkertaisesti kaikkiin sille soveltuviin käyttötarkoituksiin,

Tietokone. Tietokone ja ylläpito. Tietokone. Tietokone. Tietokone. Tietokone

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

Interfacing Product Data Management System

Tikon Web-sovellukset

Johdanto laiteläheiseen C-ohjelmointiin

OHJ-4301 Sulautettu Ohjelmointi

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

KIITOS RICA OPTIMOINTIOHJELMAN VALITSEMISESTA

Valppaan asennus- ja käyttöohje

Linux { tekninen yhteenveto. Lars Wirzenius ja Ari Lemmke Taman kirjoituksen tarkoituksena on kertoa mika on Linux, mita hyotya siita on,

Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi

Perustietoa käyttöjärjestelmistä. o Tietokoneen toimintaperiaate o Käyttöjärjestelmistä o Esimerkkejä käyttöjärjestelmistä o Peruskäyttöharjoitus

Lumon tuotekirjaston asennusohje. Asennus- ja rekisteröintiohje

Office ohjelmiston asennusohje

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA

Päivitys käyttäen USB-tikkua

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Tieto- ja viestintätekniikan opetuskäytön sisällöt, taidot ja osaaminen

1. NetBeans-ohjelman asennus ja käyttöönotto pva

RasPin käyttöönotto pitkä versio

Johdatus ohjelmointiin

NetBeans asennus ja etäkäyttö C-kielen opiskeluun, Windows

Javan asennus ja ohjeita ongelmatilanteisiin

Linux. Alkutarkistukset

Käyttöjärjestelmät. Teemu Saarelainen Tietotekniikka

Ensimmäisessä vaiheessa ladataan KGU tietokanta Hallitse tietokantoja toiminnon avulla.

Tikon Web-sovellukset

Virtualisointi Kankaanpään kaupungissa. Tietohallintopäällikkö Jukka Ehto

Tekninen suunnitelma - StatbeatMOBILE

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Käyttöjärjestelmien historia. Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen

Selaimen asetukset. Toukokuu (7) Selaimen asetukset Tikon Oy. All rights reserved.

SAP. Lasse Metso

NetBeans asennus ja etäkäyttö C-kielen opiskeluun, Linux

Windows Server 2012 asentaminen ja käyttöönotto, Serverin pyörittämisen takia tarvitaan

UCOT-Sovellusprojekti. Asennusohje

TeleWell TW-LTE/4G/3G USB -modeemi Cat 4 150/50 Mbps

Selvitysraportti. MySQL serverin asennus Windows ympäristöön

Backup Exec 3600 Appliance

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen

ICT-info opiskelijoille. Syksy 2017

SISÄLLYS 1 YLEISTÄ VERSIOT Tukiaika Variaatiot OHJELMISTO Paketinhallinta Komentorivisyntaksi

Hallintatyökaluja Fujitsu-työasemille

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Käyttöjärjestelmän rakenne

KYLÄSAAREN KOULUN TIETOSTRATEGIA

Transkriptio:

Johdanto käyttöjärjestelmään 30.8.2016 penttivahtera PUNOMO NETWORKS OY Tietokone ilman käyttöjärjestelmää Tietokoneen tehtävänä on tiedon käsittely eli tiedon työstäminen. Tietotyö tehdään ohjelman ja ohjelman käyttäjän avulla ja ohjailemana. Ohjelma koostuu peräkkäisistä konekielisistä käskyistä (ja datasta) ja noiden käskyjen mukaan prosessori, CPU Central Prosessing Unit, manipuloi dataa. Sitä varten ohjelmakoodin on oltava tietokoneen keskusmuistissa (RAM). Tämä siksi, että CPU:lla on suora yhteys keskusmuistiin data- ja osoiteväylien kautta. Tietokone ilman käyttöjärjestelmää toimii kuvan osoittamalla tavalla ns ikuisessa silmukassa. Piirros. J Mansikkaviita Yksittäinen tietokoneohjelma, kuvan prosessorin pääohjelma, ajetaan tietokoneen raudassa (CPU + muisti) kiertokysely-pollaus menetelmällä ja toimintaa häiritsee vaan ulkoisten laitteiden (näyttö, näppäimistö, hiiri, anturit...) keskeytyspyynnöt. Keskeytyksen tullessa kone keskeyttää pääohjelman suorittamisen, hyppää keskeytysaliohjelmaan palvellakseen huomiota pyytäneen laitteen toiveet. Kun keskeytysohjelma on suoritettu, palataan pääohjelmaan ja jatketaan sitä siitä mihin jäätiin. Keskeytyksen aiheuttajia voi olla useita erilaisia, jolloin jokaisella on oltava oma palveluohjelma. Tämä on edullinen ja yksinkertainen järjestely, kun CPU ajaa vain yhtä sovellusta. Käyttöliittymä versus käyttöjärjestelmä Kun käynnistät tietokoneen näyttöruutuun avautuu graaffinen käyttöliittymä GUI, Graphic User Interface. Sen ulkoasu riippuu siitä onko kone imac, Windows tai jokin Linuxeista. Käyttöliittymästä käynnistetään sovelluksia, kuten www-selain Firefox, koodi-ide NetBeans, teksturi Geany, piirros-ohjelma Inkscape, kuvankäsittely GIMP, peliohjelma Pasianssi, jne. Tämä ei meitä kiinnosta. Käyttöjärjestelmä on jotain muuta. Meitä kiinnostaa miksi sitä tarvitaan, mistä palasista se on rakennettu, mitä mikin niistä tekee ja miten ne ovat riippuvaisia toisistaan. Tätä tietoa tarvitaan kun ryhdymme koodaamaan ohjelmia Laitteiden Internettiin. 1

Monta ohjelmaa Useasti tulee tilanne, että on ajettava monta eri ohjelmaa samanaikaisesti; kirjoitetaan teksturilla muistiinpanoja, etsitään netistä asiaan liittyvää lisätietoa, tulostetaan paperille tähänastinen työ, kuunnellaan nettiradiota, jne. Jos vielä halutaan lisätä/vaihtaa/poistaa sovelluksia, käyttää erilaisia oheislaitteita ja jos tuo kaikki on tarkoitus tehdä vielä usean samanaikaisen käyttäjän kanssa, se on ilman erikoisjärjestelyjä mahdotonta. Tavallisesti (sulautetussa) tietokoneessa on vain yksi mikroprosessori ja tuo CPU voi ajaa vain yhtä ohjelmaa kerrallaan. Siispä tarvitaan järjestely nimeltä moniajo, multitasking. Ohjelmia ajetaan mukamas rinnakkain, mutta kaikki tapahtuukin vuorotteluperiaatteella. Kun ohjelmien vaihto tehdään hyvin nopeasti, näyttää käyttäjästä ikäänkuin kaikki ohjelmat etenisivät rinnakkain. Jokaisesta ajossa olevasta ohjelmasta ajetaan esim. 10 ms pätkä, sitten saman verran seuraavasta, jne. Täydellisempään moniajoon päästään, kun järjestelmässä on useampia prosessoreja, oikeastaan tarvittaisiin jokaiselle ohjelmalle oma CPU. Tuon ohjelmien vuorottelun hoitaa käyttöjärjestelmä. Moniajo eli se, että tietokoneessa ajetaan useita ohjelmia näennäisesti samanaikaisesti, vaatii käyttöjärjestelmältä paljon ja tekee siitä hyvin monimutkaisen. Mutta. Moniajolla saavutetaan suuri CPU:n käyttöasteen nosto, ts. koneen nopeus kasvaa. Ohjelmien (prosessien) näennäisen rinnakkaisajon aiheuttama toiminnan monimutkaisuus ja ylimääräinen CPU-kuorma kannattaa ottaa, koska systeemin tehokkuus kasvaa ja paljon. Moniajossa prosesseja on ajettava samanaikaisesti kymmenittäin. Käyttöjärjestelmän ydin, kernel, hoitelee tietyn ohjeistuksen (algoritmi) mukaan prosessien pääsyn vuorotellen CPU:ta käyttämään (GNU/Linuxin kernel versiosta 2.6.21 lähtien vuoronvaihto ei toimi kellon ohjaamana, vaan prosessi valitaan tarpeen mukaan, siitä tarkemmin omassa dokumentissa). Isoissa tietokonesysteemeissä voi olla aktiivisena tuhansia prosesseja ja yhden käyttäjän työasemassakin tusinoittain. Prosessin valinnan ja käynnistyksen ajoituksen tekee vuoronantaja, scheduler. Näistäkin tarkemmin niiden omissa dokumenteissa. Nykyisissä prosessoripaketeissa on useita CPU-ytimiä jotka toimivat yht'aikaisesti. Uusimman Raspin, RaspberryPi-3, ARM-ohjaimessa on 4 ydintä (siis itsenäisesti toimivaa CPU:ta), joten se on noin 4 kertaa tehokkaampi kuin yhden ytimen CPU. Oikeastaan enemmänkin. Käyttöjärjestelmä Käyttöjärjestelmä on ohjelma jota tavallinen tietokoneen käyttäjä ei koskaan näe, eikä hänen tarvitse siitä olla kiinnostunut. Mutta se on oleellisin osa koko järjestelmää. Ilman sitä ei tulla toimeen. Se on ikäänkuin alusta joka palvelee käyttäjän sovelluksia kuten web-selain tai kuvan/äänen käsittelyohjelmat. Toisaalta käyttöjärjestelmä on ilmeisesti monimutkaisin ohjelmakokonaisuus mitä tavallinen ihminen on koskaan käyttänyt tai tulee käyttämään, tietämättään. Onneksi normaalikäyttäjän ei tarvitse tietää siitä kovinkaan paljoa. Pienikin ymmärrys auttaisi kummasti ongelmien tullessa. Mutta tehokäyttäjän ja ohjelmoijan on tiedettävä käyttöjärjestelmästä ainakin perusteet. 2

Tietokoneen ohjelmisto jakaantuu kahteen erityyppiseen kokonaisuuteen: - käyttäjän sovellusohjelmiin (www-selain, kuvankäsittely, laskin, pelit...) - käyttöjärjestelmään (Unix, GNU/Linux, Apple OSX, Windows ) Käyttäjä Sovellusohjelmat www-selain, sähköposti, tekstinkäsittely, ohjelmointiohjelmat... Käyttöjärjestelmä Unix, GNU/Linux, Apple OSX, Android, Windows... "Rauta" Mikroprosessori, muistit, näyttö, hiiri, näppäimistö, nettiliitäntä... Tietokoneen voidaan ajatella koostuvan kolmesta päällekkäisestä kerroksesta: - alimpana on tietokoneen rauta (prosessori - CPU, muistit, oheislaitteet), - sen päällä laitteiden ja sovellusohjelmien toimintaa ohjaa ja valvoo käyttöjärjestelmä, - joka puolestaan luo alustan käyttäjän käyttämille sovellusohjelmille. Käyttöjärjestelmä toimii lähellä "rautaa", Käyttäjän ohjelmat eli sovellukset lähellä käyttäjää. Mitä käyttöjärjestelmä tekee? Jotta ohjelmat saavat laiteresursseja käyttöönsä oikeudenmukaisesti ja kokonaisuuden kannalta tehokkaasti ja ennenkaikkea turvallisesti, tarvitaan toiminnalle valvoja. Tämä valvoja on käyttöjärjestelmä joka huolehtii kaikesta: - se ohjaa ja valvoo laitteistoa ja sen käyttöä. Yksittäisen ohjelman ei tarvitse osata käyttää/tulkita näppäimistöä, näyttöä, tulostinta, nettiä, vaan käyttöjärjestelmä huolehtii laiteresurssien (CPU, muistit, I/O-laitteet) jakamisesta ja ohjauksesta oikeudenmukaisesti ja turvallisesti. Sovellusohjelma ei saa suoraan käyttää laitteen rautaa, vaan se on tehtävä käyttöjärjestelmän kernelin kautta. - se hallitsee ja ohjaa käyttäjän sovelluksia ja niiden ajoa, se antaa jokaiselle ajettavalle ohjelmalle keskusmuistista (RAM) oman muistialueen johon muut ohjelmat eivät pääse käsiksi. Näin se huolehtii siitä etteivät sovellukset häiritse toisiaan (esim. kirjoita toistensa päälle). - se huolehtii järjestelmän turvallisuudesta ja käyttöoikeuksista - se tarjoaa koodareille yhtenäisen ohjelmointirajapinnan (Application Programming Interface, API) tietokoneen laitteistoon. Ohjelmointirajapintojen ansiosta jokaisen ohjelmoijan ei tarvitse huolehtia jokaisesta perusasiasta itse. Käyttöjärjestelmä on tietokoneen aivot ja hermojärjestelmä. Se hoksaa näppäimen painalluksen ja hiiren liikkeen, heittää työn tulokset näytölle, valvoo kiintolevyllä olevia hakemistoja ja tiedostoja, ohjaa tulostinta ja nettiliitäntää. Käyttöjärjestelmä estää kutsumattomien vieraiden pääsyn tiedostoihin ja se sallii vain luvallisen ohjelma- ja laiteresurssien käytön. 3

Kukaan tietokoneen käyttäjä ei aja pelkästään käyttöjärjestelmää, vaan jokainen käyttää jotain sovellusta, sovellusohjelmaa. Käyttöjärjestelmä on vain apuohjelmisto sovelluksille, eräänlainen ajoalusta. Käyttöjärjestelmää tavallinen käyttäjä tuskin tunnistaa, sillä se on ohjelma joka liittää käyttäjän, käyttäjän ohjelmat ja tietokonelaitteiston toisiinsa. Linux-käyttöjärjestelmän lohkorakenne Kuva kertoo, että käyttöjärjestelmän ytimen, kernelin, ulkopuolisia osia ovat muun muassa komentotulkki, shell, sen yksinkertaiset tiedosto- ja levynkäsittelykomennot, sekä erilaiset kirjastot, joiden kautta sovellusohjelmat käyttävät käyttöjärjestelmän palveluita. Graafinen näyttösysteemi, GUI, X Windows, ei myöskään kuulu ytimeen. GUI, graafinen työpöytäohjelmisto, siis se minkä tavallinen käyttäjä näkee ruudullaan, CLI, komentotulkkijärjestelmä, shell, jota käyttävät koodin tekijät ja laitehallinnasta vastaavat C-ohjelmakirjastot ovat ohjelmien yhteiskäytössä ja joita tarvitaan ohjelmien kehitystyössä User mode ja kernel mode Jos tietokoneessa ajetaan useaa ohjelmaa samanaikaisesti vailla valvontaa, on varmaa, että ne häiritsevät toinen toisiaan. Siitä seuraa katastrofi. Tämän estämiseksi prosessoreihin on kehitetty ominaisuuksia joilla estetään haitalliset vaikutukset. Useimmilla prosessoreilla on vähintään kaksi suojaustasoa (real mode ja protected mode), Intelillä jopa useampia. Se kumpaa suojaustasoa CPU ajaa, määritetään käyttöjärjestelmään kuuluvan muistinhallintayksikön (MMU, Memory Management Unit) toimesta. Prosessorin ohjausrekisterillä määritetään kaksi muistialuetta, user space ja kernel space. Käyttäjän sovellukset ajetaan user space-muistialueessa ja käyttöjärjestelmän ytimelle, kernelille, on varattu ihan oma muistialue johon muut ohjelmat eivät pääse. Käyttäjän sovellukset eivät voi kirjoittaa kernel-alueelle, joten se ei voi korruptoitua, vikaantua. Tämä luo stabiilisuutta ja tietoturvaa. 4

Käyttöjärjestelmän ydin on kernel Käyttäjän sovellusohjelmat eivät voi suoraan käyttää mitään laiteresurssia. Kaikki tapahtuu kernelin ohjauksessa ja valvonnassa. Aina kun kone käynnistetään, kernel ladataan kiintolevyltä tai SSD- tai SD-muistista RAM-keskusmuistiin. Siellä se on koko toiminnan ajan. Kernel on tiivis koodipaketti joka tietää kaiken mitä tietokoneessa tapahtuu; se hallitsee koko systeemin, sekä ohjelmat että raudan. Kernel on lähimpänä laitteistoa, eli se hoitaa laitteiston ohjauksen ja valvonnan. Se on myös lähimpänä sovellusohjelmia, eli se tarjoaa toimivan ja valvotun rajapinnan sovellusohjelmille. Järjestelmäkutsut-yksikkö käsittelee ensin kaikki ylhäältä tulevien sovellusohjelmien laite- ym. resurssitoiveet, välittää ne kernelille, joka puolestaan tietää mitä, miten ja milloin toiveet toteutetaan. Järjestelmäkutsu on tarkoin määritelty liitäntä kerneliin. Niitä on kaikkiaan n. 400 kpl. Aina kun kone käynnistetään, kernel ladataan kiintolevyltä tai SD-flash-muistista RAMkeskusmuistiin, jossa sen on oltava koko tietokoneen toiminnan ajan. Tästä seuraa: joko kernelin tulee olla pieni - tai keskusmuistin iso, muuten kone toimii hitaasti. GNU/Linuxin kernel on monoliittinen, yhtenäinen, ts. kaikki käyttöjärjestelmän osat kuuluvat samaan binääritiedostoon (joka on ajokelpoinen ohjelma). Kernel toimii siis yhdessä prosessissa ja siten yhdessä muistialueessa kernel-modessa. Siksi GNU/Linux-kernel on nopea ja yhtenäisenä se helpottaa sovellusohjelmien kehittäjän työtä. GNU/Linux-kernel on nykyään pakattuna kiintolevyllä, joten järjestelmän käynnistymisen yhteydessä se on purettava keskusmuistiin (RAM). GNU/Linux on myös modulaarinen. Osa kernelistä, useimmiten laiteajurit, voidaan kääntää omiksi moduuleikseen. Ne otetaan käyttöön tarvittaessa dynaamisesti ajon aikana ja vapautetaan kun käyttöä ei enää ole. Täten kernelin koko voidaan minimoida omissa systeemeissä, otetaan mukaan vain aivan välttämätön. Modulaarisuuden avulla kernelistä tulee kohtuullisen pieni ja sen voi koodata yleiseksi, jolloin sen siirtäminen toisiin prosessoriarkkitehtuureihin käy vähällä vaivalla. Kernelin pieni koko, vain olennainen on siinä mukana, ja modulaarisuus, mahdollistaa sen, että järjestelmän kokoonpano on täysin muunneltavissa omiin tarpeisiin. Se on osaajan kannalta hieno asia. Kernel koostuu pääosin tuhansista laiteajureista, lukuisista verkkoprotokollista, useasta eri laitearkkitehtuurista (CPU) ja tiedostojärjestelmästä. Varsinainen ydin, core, on aika pieni, vain muutaman prosentin verran koko distrosta. Näin GNU/Linux soveltuu esimerkiksi sulautettuihin järjestelmiin vallan mainiosti. 5

Kernelin toiminta lyhyesti Prosessien hallinta - prosessi on ajossa oleva ohjelma Muistinhallinta - käyttömuisti RAM Tiedostojärjestelmä Laitehallinta Keskeytysten käsittelijä Verkon hallinta - osa laitehallintaa Käyttäjien hallinta Kernel hoitaa prosessien luomisen, niiden ajovuorojen valinnan (schedulerin ohjaamana), ajon, lopettamisen ja tuhoamisen, sekä mm. prosessien välisen kommunikoinnin. Kernel hallinnoi keskusmuistin käyttöä. Se jakaa jokaiselle prosessille oman muistialueen ja huolehtii siitä etteivät ne häiritse toisiaan. Jos muisti ei riitä, osa datasta voidaan siirtää kiintolevylle ja tarvittaessa palauttaa takaisin työmuistiin. Swap. Kernel tietää minne se tiedoston tallettaa (missä on tilaa) ja mistä haettava tieto ja ohjelmat löytyvät. Se pitää kirjaa kiintolevyllä (tai SDmuisti) olevista tiedostoista ja hakemistoista, ts. se hallinnoi tiedostojärjestelmää. Tiedosto on vain kernelin luoma illuusio, data on oikeesti säilöttynä pieninä palasina kiintolevyllä tai SD-muistissa. Kernel hoitelee järjestelmän raudan laiteajurien avulla. Laiteajurit ymmärtävät miten rauta toimii. Kernel hallinnoi oheislaitteita estäen ohjelmia pääsemästä käsiksi suoraan laitteistoon ja vain yksi ohjelma kerrallaan saa laitteen haltuunsa. Laiteajurit ovat joko käännettynä kerneliin tai ne otetaan käyttöön dynaamisina moduuleina. Kernel hoitelee ohjelmalliset ja laitekeskeytykset. Se palvelee järjestelmäkutsuja, keskeytyksiä ja muita kriittisiä prosesseja. Kernel hoitelee yhteydet tietoverkon kautta palvelin-koneisiin. Se ottaa vastaan ja lähettää datapaketteja verkkoon = nettiin. Se on hyvin monimutkainen toimi, protokollat huolehtivat siitä että kaikki on ok. Määrittää käyttäjien oikeudet, siis mitä kukin käyttäjä saa koneella tehdä, mitä ohjelmia ajaa, mitä tiedostoja lukea, mihin kirjoittaa, jne. Kernel ei itse päätä mitään, se vain toteuttaa käyttäjän/laitteiston palvelupyyntöjä: - se ottaa vastaan käyttäjän käskyt, kuten "käynnistä FireFox" - se ottaa vastaan laitteiston toiveet, kuten USB-liitäntä kaipaa huomioita" - kernel on ohjelmistoliitäntä tietokoneen rautaan (CPU+muistit+I/O) Tietokone käynnistyy aina kernel modeen ja kernel space-muistialueeseen joka on varattuna vain ja ainoastaan kernelille. Sinne ei muilla ohjelmilla ole asiaa. Rajoja valvoo muistinhallintayksikkö. Kernelin palveluksiin käyttäjän ohjelmat (sovellukset) pääsevät vain järjestelmäkutsu-rajapinnan (SCI, System Call Interface) kautta. Kun toimitaan user modessa, CPU pääsee ainoastaan user spaceksi määritettyyn muistialueeseen. Kun toimitaan kernel modessa, CPU pääsee kumpaankin muistialueeseen. Tuo jako kahteen eri modeen voidaan ajatella myös niin, että kernelin kehitystyö tapahtuu tarkan valvonnan alla (Linux Foundation), silloin koodille voidaan sallia kaikki toimet. Käyttäjän sovelluksia tekevät ketkä tahansa, silloin ei voida sallia ohjelman tekevän kaikkea mitä se haluaa. Koneen on toimittava. 6

Ohjelmien tekijät, koodarit, kirjoittavat sovellusohjelmia jotka toimivat user modessa, muistialueessa "joka on kaikkien käytettävissä". Kernel ajetaan kernel modessa, joka on muistialue johon vain kernel pääsee. GNU/Linux käyttöjärjestelmä on avoin ympäristö, joten sen ja kernelin lähdekoodi on kaikkien vapaasti saatavissa ja muokattavissa. Kukin voit muuttaa siitä mitä tahansa tarpeen mukaan, kaikki on osaamisesta kiinni. Siksi kannattaa hankkia koodaustaito. Kernelin kehitys tapahtuu nykyään Linux Foundationin toimesta. Työtä johtaa suomalainen Linuxprojetkin alkuunpanija Linus Torvalds. Koodia kirjoittavat eri yrityksistä palkkaa saavat ammattilaiset ja alan parhaat harrastaja-gurut. Milloin laite toimii kernel modessa? laitteiston käynnistyksen jälkeen (booting, bootstrap) keskeytyksen tullessa (interrupt) järjestelmäkutsun tullessa (system call) poikkeustilanne, virhetilanne (exeption) Häiriö on user-modessa ajettava käyttäjän sovellus (esim selain), kun se tarvitsee laiteresurssia (esim tallettaa dataa kiintolevylle) se kutsuu järjestelmäkutsun avulla kernelin apuun. Kernel tekee pyydetyn työn. Paluu user modeen tapahtuu, kun kernel on käsitellyt häiriön. Prosessi Ajossa olevasta ohjelmasta (sen on oltava koneen keskusmuistissa, RAM) käytetään nimitystä prosessi. Kukin prosessi saa vain pienen siivun CPU-aikaa kerrallaan. Tähän toimintoon tarvitaan käyttöjärjestelmää. Käyttöjärjestelmä muodostaa ikään kuin alustan jonka päällä, avustuksella ja valvonnassa käyttäjän sovellusohjelmat ajetaan. Prosessi on ympäristö jossa yksittäinen ohjelma ajetaan ja käyttöjärjestelmä on vain yksi prosessi muiden joukossa. Prosessien vuoronvaihto, niiden välinen kommunikointi, laitteistoresurssien turvallinen ja järkevä käyttö sekä ohjelmien käynnistys/lopetus ovat hyvin monimutkaisia toimenpiteitä. Siksi niistä kerrotaan tässä vain yleisesti ja syvällisempi tarkastelu tehdään niiden omissa dokumenteissa. (jotka ovat tulossa Punomon sivuille kuin Angelniemen posti). 7

Tärkeimmät pc-käyttöjärjestelmät: Tärkeimmät mobiili-käyttöjärjestelmät: Meitä kiinnostaa Raspberryyn soveltuvat käyttöjärjestelmät, joita on saatavilla useita. Aloittelijalle ja kaikille muillekin suositellaan Linuxin Debian-pohjaista Raspbian-versiota. RaspberryPi + Debian = Raspbian Distro GNU/Linux-käyttöjärjestelmä koostuu kernelistä, koodikirjastoista, erilaisista apu- ja työkaluohjelmista. Itse käyttöjärjestelmän päälle asennetaan erilaiset sovellusohjelmat tekstin- ja kuvankäsittelyyn, web-selailuun, videoiden ja musiikin toistoon, pelaamiseen ja vaikka mihin tarkoitukseen. Nykyään tuo kaikki kootaan yhteen asennuspakettiin joista käytetään nimiä: jakelu, levitysversio, levityspaketti, distro, engl. Distribution. Distro-paketit (Ubuntu, Debian, SUSE, Fedora, Mint...) ovat imuroitavissa netistä ja ne poltetaan CD tai DVD-levylle. Kukin toimija laittaa pakettiinsa mitä ohjelmia haluaa. Vain kernel on yhteinen ja se on hyvin tarkoin säännelty. Distro = kernel + työkaluohjelmia + sovellusohjelmia - työkaluohjelmilla hallitaan systeemiä 8

Miksi GNU/Linux? Eräs hyvä syy: GNU/Linuxin ytimestä, kernelistä ja kaikista sovellusohjelmista, laiteohjaimista ja sen sellaisista, on vapaasti saatavissa lähdekoodit. Osaava saa muokata niitä mieleisekseen. Varsinkin, kun kaikkeen löytyy kunnon dokumentit. Akuuttiin ongelmaan löytyy heti apu netistä. Kaikki tuo auttaa sulautettujen järjestelmien rakentelussa, opiskelussa ja harrastuksessa. Julkaistut koodit ovat maailmanlaajuisesti koodauksen ammattilaisten ja muiden gurujen valvovien silmien alla, joten ne ovat laajasti toimiviksi testattuja. Tämä auttaa myös ammattilaisia ja nopeuttaa ohjelmien tekemistä. Vapaasti saatavilla olevien avoimen lähdekoodin työkalujen avulla on mahdollista rakentaa omiin tarpeisiin sovitettu sulautettu GNU/Linux-järjestelmä. Nopeasti ja ilmaiseksi. Mutta, ennen kuin tämä onnistuu, tarvitaan hyvä ja vankka tietämys sulautetun GNU/Linux-järjestelmän ohjelmakomponenteista ja niiden toiminnasta. Ja on osattava hieman koodin muokkausta. GNU/Linux is an ideal operating system for power-users and programmers, because it has been and is being developed by such people. Everything a good programmer can wish for is available: compilers, libraries, development and debugging tools. These packages come with every standard GNU/Linux distribution. - netistä lainattua Mitä GNU/Linux tarjoaa opiskelijalle, harrastajalle ja ammattilaiselle? * Valmista koodia netti täynnä, se odottaa sovittamista omiin juttuihin * Vapauden vääntää ja kääntää koodia omiin tarpeisiinsa, eikä tarvitse pelätä lisenssipoliisia * Valmiita Linuxin kanssa laajasti testattuja ohjelmakomponentteja (ajureita, jne.) * Vapaita sovelluksia, applikaatioita, Linuxin päälle (pelejä, toimisto, kotikäyttö,...) * Uudet teknologiat tulevat nopeasti Linuxiin (tai itse asiassa ne kehitetään Linuxilla) * Alati kasvavan määrän innokkaita kehittäjiä kavereiksi ja auttajiksi * Hienon imagon, on hienoa osata jotain "mitä Pat Boone ei osaa" * Käyttöjärjestelmän joka pyörii melkein jokaisella rautakonfiguraatiolla * Sulautettujen järjestelmien voittajapari on ARM ja Embedded Linux = Raspberry Pi 9