Ydin on käyttöjärjestelmän keskeinen osa. Se hallinnoi tietokoneen ja laitteiston toimintoja, erityisesti muistia ja prosessoriaikaa. Ydin toimii suojatussa tilassa (kernel-tilassa), jossa sillä on pääsy laitteistoresursseihin ja se voi suorittaa kriittisiä operaatioita, joita käyttäjäohjelmat eivät voi suoraan tehdä.
Ytimiä on viittä eri tyyppiä:
- Mikroydin, joka sisältää vain perustoiminnot;
- Monoliittinen ydin, joka sisältää monia laiteajureita.
- Hybridiydin
- Exo Kernel
- Nano Kernel
Ytimen päätehtävät
Ytimen tärkeimmät tehtävät voidaan tiivistää seuraavasti:
- Prosessien ja säikeiden hallinta: ajoitus (scheduling), prosessien luonti ja tuhoaminen, prosessien välinen viestintä (IPC) sekä kontekstinvaihto (context switch).
- Muistinhallinta: fyysisen ja virtuaalimuistin hallinta, sivutus (paging), muistinkäytön eristys ja jakaminen prosessien välillä.
- Laitehallinta: laiteajurit tarjoavat rajapinnan laitteistolle; ydin välittää I/O-pyyntöjä laitteille ja käsittelee keskeytyksiä (interrupts).
- Tiedostojärjestelmä: tiedostojen ja hakemistojen hallinta, välimuisti (caching) ja tallennuslaitteiden koordinointi.
- Turvallisuus ja suojaukset: käyttöoikeuksien valvonta, tilojen (user vs. kernel) erottelu, prosessien suojelu ja resurssien rajoitukset.
- Järjestelmäkutsut: ohjelmien ja kirjastojen käyttämä rajapinta käyttäjätilasta ytimen tarjoamiin palveluihin (esim. luo prosessi, avaa tiedosto).
Ydinmallit: erot ja käytännön vaikutukset
Seuraavassa selitetään listassa mainitut ytimen tyypit ja niiden käytännön eroja:
- Monoliittinen ydin: koko ytimen toiminnallisuus (ajurit, tiedostojärjestelmät, verkko) kuuluu yhteen suureen koodikokonaisuuteen. Etuna on suorituskyky ja suora pääsy resursseihin; haittana suurempi järjestelmän monimutkaisuus ja mahdollisesti heikompi vakaus, jos joku osa epäonnistuu. Esimerkkejä: Linux ja monet BSD-järjestelmät (vaikka Linux tukee ladattavia moduuleja).
- Mikroydin: pitää ytimen pienenä — vain olennaisin (esim. IPC, perusajastus) on ytimen tasolla, kun taas ajurit ja palvelut ajetaan käyttäjätilassa. Etuna modulaarisuus, vakaus ja turvallisuus; haittana mahdollinen suorituskyvyn lasku viestinnän määrän kasvaessa. Esimerkkejä: MINIX, QNX.
- Hybridiydin: pyrkii yhdistämään monoliittisen ja mikroytimen hyvät puolet. Käytännössä kyse on usein monoliittisesta arkkitehtuurista, jossa osa palveluista eristetään tai ajetaan erillisinä moduuleina. Esimerkkejä: Windows NT -perhe (usein kutsutaan hybridiksi), macOS:n XNU sisältää Mach-mikroytimen elementtejä yhdistettynä BSD-komponentteihin.
- Exo Kernel: tutkimuslähtöinen arkkitehtuuri, jossa ytimen tehtävänä on tarjota vain mahdollisimman matala abstraktiokerros resurssien hallinnalle ja jättää korkeamman tason resurssien hallinta sovellus- tai kirjastokerroksille. Tavoitteena maksimoida joustavuus ja suorituskyky tietyissä käyttötilanteissa.
- Nanokernel: erittäin pieni ydin, jota käytetään usein sulautetuissa järjestelmissä tai reaaliaikakäytössä, jossa tarvitaan minimaalista viivettä ja pientä muistijalanjälkeä. Nanokernel voi tarjota vain perusajastuksen ja keskeytyskäsittelyn.
Kuinka ydin toimii käytännössä
Käyttöjärjestelmän ja käyttäjän välinen vuorovaikutus tapahtuu yleensä järjestelmäkutsujen avulla. Kun käyttäjäohjelma tarvitsee resurssia (esim. kirjoittaa tiedostoon), se tekee järjestelmäkutsun, joka vaihtaa suoritustilan käyttäjätilasta ytimen tilaan. Ydin suorittaa pyydetyn operaation ja palaa käyttäjätilaan tuloksen kanssa.
Ydin käsittelee myös keskeytyksiä, jotka ovat laitteiden lähettämiä signaaleja (esim. näppäimistöstä tai verkosta). Keskeytyskäsittelijä suorittaa nopeasti tarvittavan operaation ja palauttaa suorituksen. Näin järjestelmä reagoi reaaliaikaisesti ulkoisiin tapahtumiin.
Modulaarisuus, päivitettävyys ja ajurit
Monissa nykyaikaisissa ytimissä on tuki ladottaville moduuleille (kernel modules), mikä tarkoittaa, että laiteajureita voidaan ladata ja purkaa ajon aikana ilman ydinbinaarin uudelleenkoontia. Tämä parantaa ylläpidettävyyttä ja laajennettavuutta. Toisaalta ajurien virheet voivat silti vaikuttaa koko järjestelmään, jos ne ajetaan ytimen tilassa.
Esimerkkejä ja sovelluksia
- Linux: käytännössä monoliittinen mutta modulaarinen ydin; laajalti palvelimissa, pöytäkoneissa ja sulautetuissa laitteissa.
- Windows NT -perhe: hybridiydin, suunniteltu suorituskykyä ja yhteensopivuutta silmällä pitäen.
- QNX, MINIX: esimerkkejä mikroytimistä, joita käytetään reaaliaikaisissa ja luotettavuutta vaativissa ympäristöissä.
- Exokernel-projektit: ensisijaisesti tutkimuksessa ja kokeiluissa, tarjoavat näkemyksiä resurssien expose-tyyppisestä hallinnasta sovelluksille.
Käyttäjän suhde ytimeen
Tietokoneen käyttäjä ei yleensä ole suoraan vuorovaikutuksessa ytimen kanssa. Se toimii kulissien takana, ja käyttäjän kannalta näkyvin rajapinta ovat sovellukset ja komentotulkki. Ainoat suorat kontaktit ytimen kanssa ovat järjestelmäkutsut, virheilmoitukset ja mahdolliset järjestelmälokit, joita ydin tai muut komponentit tuottavat.
Ymmärtämällä ytimen roolin ja eri arkkitehtuurien erot on helpompi valita sopiva käyttöjärjestelmä käyttötarkoituksen (palvelin, työasema, reaaliaika- tai sulautettu sovellus) mukaan sekä ymmärtää suorituskyky-, vakaus- ja turvallisuusvalintoihin liittyvät kompromissit.

