http://fi.wikipedia.org/wiki/K%C3%A4ytt%C3%B6j%C3%A4rjestelm%C3%A4n_ydinHistoriallisia syitä
Kun ensimmäiset modernit käyttöjärjestelmät kehiteltiin 1960-luvun alussa, suunnittelijat olivat huolissaan niiden suorituskyvystä, sillä ne oli kirjoitettu assembler-kielellä, vaikka korkean tason ohjelmointikieliä, kuten Fortran, Mad ja ALGOL, oli jo laajalti käytössä. Vakaus ja tietoturva eivät olleet edes suunnitelmissa. Useimmat nykyajan ongelmista voidaan jäljittää 40–50 vuoden taakse, jolloin käyttöjärjestelmän nopeutta pidettiin tietoturvaa tärkeämpänä. Tämä johti monoliittiseen rakenteeseen, jossa koko käyttöjärjestelmä toimi yhtenä suoritettavana binäärinä (makroytimenä) ydintilassa (engl. kernel space).
Kun käyttöjärjestelmän käytettävissä oleva muisti oli vain 32 tuhatta sanaa, niin kuin MIT-yliopiston ensimmäisessä järjestelmässä CTSS:ssä, monen miljoonan rivin käyttöjärjestelmät eivät olleet mahdollisia ja monimutkaisuus oli hallittavissa. Kun saatavilla oleva muistin määrä kasvoi, kasvoivat myös käyttöjärjestelmät. Lopulta jouduttiin nykyiseen tilanteeseen, jossa käyttöjärjestelmä sisältää satoja järjestelmäkutsuja niin monipuolisilla tapahtumilla, että kukaan ei oikeastaan enää ymmärrä, miten ne toimivat. Windows NT 5.1 -käyttöjärjestelmä sisältää 5 miljoonaa riviä koodia (koko järjestelmä sisältää yli 40 miljoonaa) ja Linux yli 3 miljoonaa riviä koodia. Käyttöjärjestelmien monimutkaisuus on nopeasti muodostumassa ongelmaksi. Tämän rivimäärän vuoksi käyttöjärjestelmän monoliittisella rakenteella on haittansa. Tutkimuksissa on havaittu, että tavallisessa sovellusohjelmassa on 1–20 virhettä 1000 koodiriviä kohden. Koska käyttöjärjestelmä on paljon monimutkaisempi kuin tavallinen sovellusohjelma, se sisältää vielä enemmän virheitä jokaista tuhatta koodiriviä kohden. Niinpä miljoonien rivien kokoiset monoliittiset käyttöjärjestelmät aiheuttavat vakaus- ja tietoturvaongelmia.
Näitä ongelmia ehkäisemään kehitettiin mikroytimeen perustuva käyttöjärjestelmärakenne, jossa käyttöjärjestelmän toiminnallisuus hajautetaan kahteen osoiteavaruuteen: ydintilaan ja käyttäjätilaan. Jokainen ongelmia aiheuttava koodirivi siirretään käyttäjätilaan, ja ydintilaan jätetään pelkkä mikroydin. Nykyisin käyttöjärjestelmät soveltavat eri tapoja näiden kahden mallin välillä. Useat ovat kokonaan modulaarisia ja jotkin monoliittisia modulaarisilla ominaisuuksilla. Harvat jäävät puhtaasti monoliittisiksi.