selitetty.com

Tietokone ja käyttöjärjestelmä

Mitä käyttöjärjestelmä tekee sovellusten ja laitteiston välissä

Käyttöjärjestelmä ei ole pelkkä työpöytä ja valikot. Se omistaa laitteiston ja lainaa sitä sovelluksille pala kerrallaan, ja juuri siitä seuraa se, mikä koneessa toimii ja mikä hajoaa.

Lyhyt vastaus

Käyttöjärjestelmä on välittäjä, joka omistaa prosessorin, keskusmuistin ja tallennustilan ja jakaa ne sovellusten kesken. Sovellus ei kirjoita levylle eikä varaa muistia itse, vaan pyytää sitä järjestelmältä, joka tarkistaa oikeudet ja tekee työn laiteajurin kautta. Jako tehdään niin, että jokainen sovellus näkee vain oman muistialueensa, eikä pääse toisten alueelle. Siksi yhden sovelluksen kaatuminen sulkee vain sen ikkunan, kun taas järjestelmän ytimen tasolla tapahtuva virhe pysäyttää koko koneen.

Sisällys
  1. Laitteisto ei ole sovelluksen omaisuutta vaan lainassa
  2. Vuorottelu: yksi ydin, monta ohjelmaa
  3. Muistin eristys on syy siihen, ettei yksi kaatuminen kaada kaikkea
  4. Tiedostojärjestelmä on kirjanpito, ei kaappi
  5. Ajurit ovat järjestelmän käsi laitteistoon
  6. Käyttäjätili on raja, jota myös sinä koettelet
  7. Näin tulkitset oireet oikein
  8. Usein kysytyt kysymykset
  9. Lähteet ja lisälukemista

Tavallinen käsitys on, että sovellukset pyörivät tietokoneessa ja käyttöjärjestelmä on se työpöytä, jonka kautta ne avataan. Työpöytä on kuitenkin vain näkyvä osa, ja se on koko asian pienin osa. Sovellus ei kirjoita tiedostoa levylle, ei varaa muistia eikä lähetä mitään verkkoon omin voimin. Se esittää pyynnön, ja käyttöjärjestelmä päättää, mitä pyynnölle tapahtuu.

Tämä yksi asetelma selittää yllättävän monta arjen ilmiötä: miksi jäätynyt ohjelma voidaan sulkea ilman että kone käynnistetään uudelleen, miksi asennus kysyy erikseen luvan, miksi sama tiedosto avautuu toisella koneella eri ohjelmalla ja miksi joskus kaatuu sittenkin kaikki kerralla. Käyttöjärjestelmien väliset erot ovat käyttäjälle näkyviä, mutta tämä perusrakenne on kaikissa sama, olipa kyse Windowsista, macOS:stä tai Linuxista. Järjestelmien käytännön eroja käsitellään erikseen artikkelissa Windowsin, macOS:n ja Linuxin eroista.

Laitteisto ei ole sovelluksen omaisuutta vaan lainassa

Kun kone käynnistyy, ensimmäisenä latautuu käyttöjärjestelmän ydin. Ydin ottaa haltuunsa prosessorin, keskusmuistin, väylät ja tallennuslaitteet, ja sen jälkeen kaikki muu ohjelmisto käynnistetään sen alaisuudessa. Tämä järjestys ei ole tapa vaan pakko: se, joka ehtii ensin, päättää säännöt.

Prosessorissa on kaksi eri suoritustilaa, ja ero niiden välillä on koko rakenteen perusta. Ytimen koodi ajetaan etuoikeutetussa tilassa, jossa se voi lukea mitä tahansa muistiosoitetta ja komentaa laitteita suoraan. Tavalliset sovellukset ajetaan rajoitetussa käyttäjätilassa, jossa nämä käskyt eivät ole sallittuja. Kun sovellus tarvitsee jotain, jota se ei saa tehdä itse, se tekee järjestelmäkutsun: pysäyttää itsensä ja pyytää ydintä tekemään työn puolestaan.

Ota esimerkiksi tallentaminen. Tekstinkäsittelyohjelma ei tiedä, missä kohtaa levyä tiedosto on tai millä jännitteellä muistipiiriä ohjataan. Se sanoo järjestelmälle: kirjoita tämä sisältö tähän nimeen. Ydin tarkistaa, onko käyttäjällä oikeus kirjoittaa siihen kansioon, muuntaa tiedostonimen levyn lohkoiksi, laittaa työn jonoon ja antaa lopulta käskyn oikealle ajurille. Sovellus saa takaisin vain tiedon siitä, onnistuiko kirjoitus.

Välikäsi on hidas mutta korvaamaton. Ilman sitä jokainen ohjelma pitäisi kirjoittaa erikseen jokaiselle levymallille, jokainen ohjelma voisi lukea toisten tiedot ja jokainen ohjelmointivirhe sammuttaisi koneen.

Vuorottelu: yksi ydin, monta ohjelmaa

Yksi prosessoriydin tekee yhtä asiaa kerrallaan. Silti koneessa on auki selain, viestisovellus, musiikki ja päivityspalvelu. Ratkaisu on vuorottelu. Järjestelmä antaa yhdelle ohjelmalle pienen aikaviipaleen, keskeyttää sen ajastimen avulla, tallentaa sen tilan talteen ja antaa vuoron seuraavalle. Vaihto tapahtuu niin tiheästi, ettei ihminen erota sitä yhtäaikaisuudesta.

Vuoron jakaa vuorottaja, jonka toiminta on tavallinen algoritmi: se painottaa ohjelmia, jotka odottavat käyttäjän syötettä, ja laskee prioriteettia niiltä, jotka jauhavat taustalla pitkää laskentaa. Siksi hiiri liikkuu sulavasti silloinkin, kun taustalla pakataan isoa tiedostoa. Useampi ydin ei muuta periaatetta, se vain lisää samanaikaisia vuoroja. Ytimien ja säikeiden merkitystä käsitellään tarkemmin artikkelissa prosessorista ja muistista.

Suuri osa ohjelmien ajasta ei kulu laskemiseen vaan odottamiseen: levy hakee tietoa, verkko vastaa, käyttäjä miettii. Odottava ohjelma ei vie prosessoriaikaa lainkaan, koska järjestelmä ottaa siltä vuoron pois ja herättää sen vasta kun odotettu asia on valmis. Tästä syystä koneen prosessorikuorma on tavallisessa käytössä yllättävän matala, vaikka ohjelmia on auki kymmenen.

Ilmoitus "ohjelma ei vastaa" kertoo juuri tästä. Ohjelma on yhä olemassa ja saa vuoroja, mutta se ei ehdi käsitellä käyttöliittymän tapahtumia, koska se jumittaa jossain omassa työssään. Käyttöjärjestelmä huomaa, ettei ikkuna vastaa kyselyihin, ja piirtää sen puolesta harmaan ikkunan ja kysyy, haluatko sulkea ohjelman. Kone itse voi olla täysin kunnossa.

Muistin eristys on syy siihen, ettei yksi kaatuminen kaada kaikkea

Jokainen käynnissä oleva ohjelma on prosessi, ja jokainen prosessi saa oman osoiteavaruutensa. Ohjelma näkee sen yhtenäisenä muistialueena, joka alkaa nollasta, vaikka todellisuudessa sen sivut ovat hajallaan eri puolilla muistipiiriä. Muunnoksen tekee laitteistossa oleva muistinhallintayksikkö, ja kartan siihen antaa käyttöjärjestelmä.

Eristys on tässä koko pointti. Ohjelma ei voi lukea toisen ohjelman muistia, koska osoitetta ei yksinkertaisesti ole sen kartalla. Jos ohjelma yrittää käyttää osoitetta, jota se ei omista, laitteisto keskeyttää suorituksen ja antaa asian ytimen ratkaistavaksi. Ydin tekee ainoan järkevän asian: lopettaa sen yhden prosessin ja vapauttaa sen muistin. Muu kone jatkaa toimintaansa, koska mikään muu ei koskaan riippunut siitä osoitteesta.

Sama ajatus näkyy nykyaikaisissa selaimissa, jotka ajavat välilehtiä ja laajennuksia erillisissä prosesseissa. Kaatunut sivu vie mukanaan yhden välilehden eikä koko selainta. Muistin määrä mitataan tavuina ja gigatavuina, mutta käyttäjän kannalta olennaisempaa on tämä raja: kenen alueesta on kyse.

Poikkeus sääntöön on tärkeä. Ytimen tasolla ajettavaa koodia ei ole eristetty, koska sen pitää päästä käsiksi kaikkeen. Jos siellä tapahtuu virhe, järjestelmä ei voi luottaa mihinkään ja pysähtyy hallitusti. Windowsin sininen virheruutu ja äkillinen uudelleenkäynnistys ovat tämän näkyvä muoto, ja aiheuttaja on usein laiteajuri.

Tiedostojärjestelmä on kirjanpito, ei kaappi

Levy ei tunne tiedostoja. Se tuntee numeroituja lohkoja, joihin voi kirjoittaa ja joista voi lukea. Tiedostojärjestelmä on käyttöjärjestelmän ylläpitämä kirjanpito, joka kertoo, mitkä lohkot kuuluvat mihinkin nimeen, missä järjestyksessä ne luetaan ja mitkä lohkot ovat vapaita.

Kansiorakenne on osa samaa kirjanpitoa. Se on nimikartta, ei kuvaus siitä, missä tiedosto fyysisesti sijaitsee. Saman tiedoston palat voivat olla eri puolilla levyä, ja siirtäminen kansiosta toiseen samalla levyllä muuttaa yleensä vain merkintää, ei itse dataa. Siksi valtavan tiedoston siirto kansiosta toiseen on hetkessä ohi, mutta siirto toiselle levylle kestää.

Kirjanpito sisältää tiedostojen sisällön lisäksi joukon tietoja tiedostoista: omistajan, käyttöoikeudet, aikaleimat ja koon. Käyttöoikeudet ovat nimenomaan tiedostojärjestelmän ominaisuus, eivät tiedoston ominaisuus. Tästä seuraa käytännön yllätys: kun kopioit tiedoston USB-muistille, jonka tiedostojärjestelmä ei tunne oikeuksia, oikeudet katoavat matkalla. Tiedoston pääte taas ei ole järjestelmälle mikään sääntö vaan vihje siitä, mikä ohjelma sen avaa, kuten artikkeli tiedostomuodoista selittää.

Koska kirjanpidon rikkoutuminen olisi pahempi asia kuin yhden tiedoston menetys, nykyiset tiedostojärjestelmät kirjaavat muutoksen ensin erilliseen lokiin tai kirjoittavat uuden version vanhan rinnalle ja vaihtavat viittauksen vasta lopuksi. Siksi sähkökatko kesken tallennuksen johtaa yleensä keskeneräisen tiedoston menetykseen eikä koko levyn sekoamiseen.

Ajurit ovat järjestelmän käsi laitteistoon

Käyttöjärjestelmä osaa yleisen käskyn: kirjoita tämä lohko, näytä tämä kuva, tulosta tämä sivu. Yksittäinen laitemalli ymmärtää oman kielensä. Ajuri on kerros, joka kääntää yleisen käskyn laitteen kielelle, ja se on ainoa kohta, jossa ohjelmisto lopulta koskettaa rautaa.

Tämä on syy siihen, että sama ohjelma toimii tuhannella eri kokoonpanolla. Ohjelma puhuu järjestelmälle, järjestelmä puhuu ajurille ja ajuri puhuu laitteelle. Ajurien päivittäminen, allekirjoittaminen ja niiden erityinen asema on oma kokonaisuutensa, jota käsitellään artikkelissa ajureista.

Resurssi Mitä sovellus pyytää Miten järjestelmä jakaa Mitä käyttäjä näkee, kun jako kiristyy
Prosessoriaika Suoritusvuoroa Aikaviipaleina prioriteetin mukaan Nykiminen, viive napin painalluksen jälkeen
Keskusmuisti Tilaa datalle Omana osoiteavaruutena, sivu kerrallaan Levyn jatkuva ääni, ohjelmien sulkeutuminen
Tallennustila Tiedoston lukua ja kirjoitusta Jonottamalla pyynnöt tiedostojärjestelmän kautta Tallennus kestää, avaaminen takkuaa
Laitteet ja verkko Yhteyttä ja tiedonsiirtoa Ajurin ja käyttöoikeuksien kautta Laite ei löydy tai ei vastaa

Käyttäjätili on raja, jota myös sinä koettelet

Käyttäjätili ei ole vain kirjautumisruutu. Se on tunniste, joka liitetään jokaiseen käynnistämääsi prosessiin, ja jokainen tiedostopyyntö arvioidaan sitä vasten. Tavallinen tili saa käsitellä omia tiedostojaan ja asetuksiaan, mutta ei muuttaa järjestelmän jaettuja osia.

Järjestelmänvalvojan oikeudet avaavat juuri sen jälkimmäisen. Siksi ohjelman asennus, ajurin lisääminen tai järjestelmäasetuksen muuttaminen nostaa esiin vahvistuskyselyn tai salasanapyynnön. Kysely ei ole muodollisuus vaan ainoa kohta, jossa ihminen päättää, saako ohjelma pysyvän jalansijan järjestelmässä. Samaan tarkoitukseen liittyy koodin allekirjoitus: järjestelmä tarkistaa varmenteen avulla, kuka ohjelman on julkaissut ja onko tiedostoa muutettu julkaisun jälkeen.

Tässä kohtaa on syytä olla rehellinen siitä, mitä oikeudet eivät tee. Ne eivät suojaa omia tiedostojasi ohjelmalta, jonka olet itse käynnistänyt. Tavallinen käyttäjätili riittää mainiosti kiristyshaittaohjelmalle, koska juuri sillä tilillä on oikeus lukea ja kirjoittaa omat kuvasi ja asiakirjasi. Samasta syystä huijari ei tarvitse murtautumista vaan suostumuksesi: tukihenkilöhuijauksessa uhri asentaa itse etähallintaohjelman ja hyväksyy itse vahvistuskyselyn.

Käyttöoikeus rajaa sitä, mitä ohjelma saa tehdä sinun nimissäsi, ei sitä, mitä sinä olet valmis hyväksymään.

Käytännön johtopäätös on yksinkertainen. Arkikäytössä kannattaa käyttää tavallista tiliä ja nostaa oikeuksia vain silloin kun teet ylläpitotyötä. Perheen yhteisessä koneessa jokaiselle oma tili ei ole kohteliaisuus vaan tapa pitää tiedostot ja selaimen istunnot erillään.

Näin tulkitset oireet oikein

Kun tiedät, kuka omistaa mitäkin, oireista voi lukea vian paikan. Käy nämä läpi järjestyksessä:

  1. Yksi ikkuna jäätyy ja muu kone toimii. Kyse on yhdestä prosessista. Sulje se järjestelmän omalla työkalulla, jolloin muut ohjelmat eivät kärsi.
  2. Kaikki nykii yhtä aikaa ja levy raksuttaa. Jaettava resurssi on loppumassa, tavallisimmin keskusmuisti. Sulje raskain ohjelma ja katso, palaako tuntuma.
  3. Kone sammuu tai käynnistyy uudelleen ilman varoitusta. Vika on ytimen tasolla, eli ajurissa, laitteistossa tai virransyötössä. Käyttäjätason ohjelma ei kykene tähän.
  4. Hitaus alkaa heti kirjautumisen jälkeen ja helpottaa myöhemmin. Käynnistyksen yhteydessä avautuu liikaa taustaohjelmia, jotka kilpailevat samasta vuorosta. Käynnistysohjelmien karsintaa käsitellään artikkelissa tehtävienhallinnasta ja käynnistysohjelmista.
  5. Vahvistuskysely ilmestyy silloin kun et ole käynnistämässä mitään. Älä hyväksy. Kysely tarkoittaa, että jokin pyytää oikeutta muuttaa järjestelmää, ja se jokin ei nyt ole sinä.

Käyttöjärjestelmää ei tarvitse osata säätää, mutta sen roolin ymmärtäminen muuttaa suhtautumista vikoihin. Kone ei ole yksi möykky, joka on hyvä tai huono päivä kerrallaan. Se on välittäjä ja joukko lainanottajia, ja lähes jokainen häiriö kertoo, kenen lainasta on kyse.

Usein kysytyt kysymykset

Mitä eroa on käyttöjärjestelmällä ja ohjelmalla?

Käyttöjärjestelmä hallitsee laitteistoa ja jakaa sitä, ohjelma on sen asiakas. Ohjelma ei pääse levylle, muistiin tai verkkoon itse, vaan pyytää järjestelmää tekemään sen puolestaan. Siksi ohjelman voi sulkea ilman että kone kaatuu, mutta järjestelmän pysähtyminen pysäyttää kaiken.

Miksi ohjelma ei vastaa, vaikka kone ei muuten ole hidas?

Ohjelma on jumittunut omaan työhönsä eikä ehdi käsitellä käyttöliittymän tapahtumia, esimerkiksi napin painalluksia. Käyttöjärjestelmä huomaa vastaamattoman ikkunan ja tarjoaa sen sulkemista. Kone itse ja muut ohjelmat voivat olla täysin kunnossa.

Miksi yhden ohjelman kaatuminen ei kaada koko konetta?

Koska jokainen ohjelma ajetaan omassa muistialueessaan, jota muut eivät näe. Kun ohjelma tekee laittoman muistiviittauksen, laitteisto keskeyttää sen ja käyttöjärjestelmä lopettaa vain kyseisen prosessin. Poikkeuksena ovat ytimen tasolla ajettavat osat, kuten monet laiteajurit, joiden virhe pysäyttää koko järjestelmän.

Kannattaako tietokonetta käyttää järjestelmänvalvojan tilillä?

Arkikäytössä ei kannata. Tavallinen tili riittää selaamiseen, työhön ja ohjelmien käyttöön, ja oikeudet nostetaan erikseen vain asennusten ja ylläpidon ajaksi. Tämä ei estä kaikkea vahinkoa, koska omat tiedostosi ovat aina oman tilisi ulottuvilla, mutta se estää järjestelmätason muutokset huomaamatta.

Miksi käyttöjärjestelmä kysyy salasanaa ohjelmaa asennettaessa?

Asennus muuttaa järjestelmän jaettuja osia, joihin tavallisella tilillä ei ole oikeutta. Kysely on se kohta, jossa ihminen päättää, saako ohjelma pysyvän paikan koneessa. Jos kysely tulee yllättäen ilman että olet käynnistämässä mitään, siihen ei pidä vastata myöntävästi.

Mitä käyttöjärjestelmä tekee ennen kuin työpöytä näkyy?

Se lataa ytimen muistiin, tunnistaa laitteiston, lataa tarvittavat ajurit, liittää tiedostojärjestelmän käyttöön ja käynnistää taustapalvelut. Vasta tämän jälkeen käynnistetään kirjautuminen ja käyttöliittymä. Suuri osa käynnistyksen kestosta on tätä työtä, ei työpöydän piirtämistä.

Takaisin ylös