Käyttöjärjestelmä

Laitteiston hallinta

Tietokoneen komponenttien ja oheislaitteiden puolesta muille ohjelmistoille tarjotaan yhteneväinen rajapinta, esimerkiksi kiintolevyä käytetään yleensä tiedostojärjestelmän kautta ja verkkokorttia välittämättä tietoliikenneprotokollien yksityiskohdista. Tärkeimmät tehtävät laitteiston osalta suorittavat käyttöjärjestelmän laiteajurit, jotka toimivat ytimen ja laitteen välissä "tulkkeina".

Prosessienhallinta

Ohjelman käynnistyessä käyttöjärjestelmä luo sille tarvittavan prosessin, muistiavaruuden ja tarvittavat tietorakenteet. Vastaavasti se vapauttaa nuo resurssit ohjelman lopetuksen yhteydessä. Käyttöjärjestelmä myös tarjoaa työkalut prosessien tarkkailuun, prosessien lopettamiseen ja prosessien väliseen kommunikointiin.
Moniajon ansiosta tietokoneessa voi samanaikaisesti olla ajossa useampia ohjelmia. Suoritin annetaan vuorotellen vähäksi aikaa eri prosessien (tai niiden säikeiden) käyttöön. Aika pidetään niin lyhyenä, että interaktiiviset ohjelmat näyttävät olevan ajossa koko ajan. Käyttöjärjestelmän vuorottaja pyrkii jakamaan suoritinaikaa tarkoituksenmukaisesti, huomioiden eri prosessien prioriteetin ja luonteen.

Verkkoprotokollat

Käyttöjärjestelmä toteuttaa OSI-mallin 3. tason (verkkokerros) sekä 4. tason (kuljetuskerroksen) toteutukset toimiessaan muiden tietokoneiden/laitteiden kanssa verkossa ja tarjoaa nämä tasot sovellusohjelmien käyttöön. Ylemmät tasot toteutetaan muilla ohjelmistoilla kuten HTTP- tai FTP-palvelinohjelmistolla, P2P- tai Windows Live Messengerin asiakasohjelmilla. Käyttöjärjestelmän tehtävä on ainoastaan tarjota verkko- ja kuljetuskerros muille ohjelmille.

Käyttäjät

Monen käyttäjän käyttöjärjestelmissä käyttäjien oikeuksien rajoittaminen kuuluu käyttöjärjestelmän tehtäviin. Käyttäjän käynnistämien prosessien oikeudet riippuvat käyttäjän oikeuksista ja mahdollisesti muista seikoista. Jotkin käyttöjärjestelmät kuten MS-DOS oli suunniteltu yhdelle käyttäjälle, jolloin järjestelmään ei voinut olla kerralla kirjautuneina useampia käyttäjiä. Kyseinen käyttöjärjestelmä ei myöskään erotellut käyttäjäoikeuksia, vaan kaikki ohjelmat suoritettiin samoilla oikeuksilla.

Luokittelu moniajon mukaan

Nykyisin useimmat käyttöjärjestelmät mahdollistavat jonkinasteisen moniajon: käyttäjällä voi olla samanaikaisesti useampia kuin yksi prosessi (ohjelma) suoritettavana – vaikkapa tekstinkäsittelyohjelma ja mp3-tiedostosta musiikkia soittava ohjelma. 
Moniajoa tukevat käyttöjärjestelmät voivat siis suorittaa useita prosesseja samanaikaisesti. Nykyiset käyttöjärjestelmät tukevat moniajoa lähes poikkeuksetta.

Luokittelu moniprosessoinnin mukaan

Jos käytettävissä on useita suorittimia tai yhdessä suorittimessa useita ytimiä, voidaan saavuttaa myös todellinen moniajo, jos käyttöjärjestelmä osaa hyödyntää niitä. Yhdellä suorittimella (suorittimella missä on yksi ydin) on mahdollista saavuttaa näennäinen moniajo suorittamalla prosesseja vuorotellen lyhyissä pätkissä. Moniajo on välttämätön ominaisuus monen käyttäjän interaktiivisissa järjestelmissä. 
Käyttöjärjestelmän kyky moniajoon mahdollistaa ohjelman skaalautumisen useaksi prosessiksi, jotka käyttöjärjestelmä suorittaa mahdollisesti suorittimilla tai suorittimen ytimillä, joilla on prosessointiaikaa tarjolla. Käyttöjärjestelmän täytyy osata kunnollinen moniprosessointi, jos sitä halutaan käyttää supertietokoneissa.

Luokittelu käyttöliittymän mukaan

Käyttöjärjestelmiä voidaan jaotella myös niille saatavilla olevien käyttöliittymien perusteella. Komentopohjaisissa käyttöliittymissä käskyt kirjoitetaan näppäimistöllä komentotulkin tulkittaviksi, kun taas graafisissa käyttöliittymissä käytetään usein hiirellä ja näppäimistöllä ikkunoita, valikkoja, kuvakkeita ja muita graafisia elementtejä, jolloin käyttöliittymän toteuttavat ohjelmat välittävät tähän perustuvia käskyjä käyttöjärjestelmälle, joka välittää ne edelleen suoritettavilla ohjelmille.
Luokittelua monimutkaistaa se, että yhdelle käyttöjärjestelmälle voi olla tarjolla useampia – sekä merkkipohjaisia että graafisia – käyttöliittymiä, jotka voivat myös olla käytössä yhtä aikaa. Esimerkiksi vanhalle merkkipohjaiselle MS-DOS-käyttöjärjestelmälle tehtiin aikoinaan graafinen ikkunointiympäristö nimeltä Windows, johon myöhemmin Windows 95 -version myötä siirrettiin osa käyttöjärjestelmän toiminnoista. Vastaavasti alkujaan komentorivillä käytetty UNIX-käyttöjärjestelmä sai ikkunointijärjestelmä X Window Systemin, jonka avulla suoritetaan erilaisia graafisia käyttöliittymiä, kuten ikkunamanagereja sekä työpöytäympäristöjä, esimerkiksi Common Desktop Environment, KDE, GNOME, XFCE ja LXDE. Useimpia nykyisiä järjestelmiä voi ohjata myös pelkästään komentoriviltä, esimerkiksi Microsoftin Windowsia ja Applen OS X:ää. Unixeissa (mukaan luettuna Linux) komentorivin käyttö on yleistä tietynlaisissa tehtävissä, vaikka työpöytäsovellukset ovatkin graafisia.
Jonkinlainen käyttöliittymä on kuitenkin tarpeen käyttäjälle. Tämä on useimmiten komentotulkki tai graafinen käyttöliittymä, joita ei pidetä käyttöjärjestelmän osina, ellei niitä ole varta vasten ohjelmoitu käyttöjärjestelmään, vaan ne ovat useimmiten toimivia ohjelmistoja ja vaativat käyttöjärjestelmän toimiakseen. Käyttöliittymä voi myös koostua sovellusohjelmasta muun muassa sulautetuissa järjestelmissä tai järjestelmissä, joissa suoritetaan vain yhtä sovellusohjelmaa eikä tällöin ole tarvetta ohjelmistoille, jotka tarjoaisivat monimutkaisempia käyttöliittymiä.

Luokittelu käyttötarkoituksen mukaan

Käyttöjärjestelmiä voidaan luokitella niiden käyttötarkoituksen mukaan. 
Keskustietokone- ja palvelinkäyttöjärjestelmiä käytetään koneissa, joilla on monia samanaikaisia käyttäjiä tai joita käytetään palvelinten alustana. Usein nämä käyttöjärjestelmät voivat käyttää valtavaa määrää muistia, massamuistivälineitä, prosessoreita ja muita resursseja. Tavoitteena tällaisissa järjestelmissä on yleensä luotettavuuden ohella hyödyntää resursseja mahdollisimman täydellisesti ja suorittaa mahdollisimman suuri määrä tehtäviä aikayksikköä kohden.
Työpöytäkäyttöjärjestelmiä käytetään yksittäisissä henkilökohtaisissa tietokoneissa, joita käyttää yleensä kerralla yksi käyttäjä. Tärkeimpiä ominaisuuksia ovat käyttöliittymän helppokäyttöisyys ja hyvä vaste, yhteensopivuus heterogeenisen laitteiston kanssa sekä laajennettavuus.
Reaaliaikaiset käyttöjärjestelmät tähtäävät mahdollisimman pieniin ja ennakoitaviin viiveisiin käyttöjärjestelmän toiminnassa sekä äärimmäiseen toimintavarmuuteen. Useat sulautetut järjestelmät kuuluvat yleensä samaan kategoriaan. Sulautettuja ja reaaliaikaisia käyttöjärjestelmiä käytetään yleensä laitteissa, jotka on suunniteltu suorittamaan jokin tietty tehtävä mahdollisimman tehokkaasti. Tästä syystä myös energian ja laitteistoresurssien mahdollisimman säästeliäs ja tehokas käyttö ovat tärkeitä ominaisuuksia. Sulautettuja järjestelmiä hyödynnetään aina teollisuusroboteissa, DVD-soittimissa, mikroaaltouuneissa ja monissa muissa pienissä laitteissa. Kaikki sulautetut järjestelmät eivät kuitenkaan sisällä käyttöjärjestelmää, vaan ohjauksesta voi huolehtia pelkkä yksinkertainen firmware. Reaaliaikaisia käyttöjärjestelmiä ovat muun muassa: ChronOS, VxWorks, QNX, pSOS ja OS-9.

Luokittelu sukupolven mukaan

Käyttöjärjestelmät voidaan myös luokitella eri sukupolvien (0-4) mukaan, MS-DOSin kaltaisen "nollannen sukupolven" käyttöjärjestelmästä aina nykyaikaisiin neljännen sukupolven käyttöjärjestelmiin sekä tuleviin viidennen sukupolven käyttöjärjestelmiin, jotka toimivat osittain tai kokonaan verkossa.

Luokittelu orientoitumisen mukaan

"Käyttöjärjestelmät voidaan luokitella proseduuriorientoituneisiin tai prosessiorientoituneisiin. Prosessiorientoituneella käyttöjärjestelmällä on monia etuja proseduuriorientoituneihin käyttöjärjestelmiin verrattuna. Prosessirakenne antaa käyttöjärjestelmälle selkeän modulaarisen rakenteen, jossa yksittäinen palvelun toteutusta voidaan suhteellisen helposti muuttaa. Palveluprosessin oikeudet voidaan rajoittaa siten, että siinä olevan virheen vaikutukset minimoituvat. Myös käyttöjärjestelmäpalveluiden priorisointi yksinkertaistuu – proseduuriorientoituneessa käyttöjärjestelmässä prosessin prioriteettia joudutaan usein muuttamaan käyttöjärjestelmäpalvelun ajaksi. Myös laiteajureiden toteutus yksinkertaistuu. Pisimmälle vietyjä prosessiorientoituneita käyttöjärjestelmiä sanotaan rakenteensa takia myös mikroytimisiksi."

Yleisiä käyttöjärjestelmiä

Yleisimmät käyttöjärjestelmät kuuluvat joko Windows-perheeseen tai johonkin lukuisista Unixin jälkeläisistä. Unix-perheessä on nähtävissä kaksi päähaaraa, joista toinen perustuu lähinnä BSD-unixiin (Berkeley Software Distribution), ja toinen Linux-ytimen pohjalta tehtyihin käyttöjärjestelmiin.
Työpöytäkoneissa yleisimpiä ovat Windows-perheen käyttöjärjestelmät, näistä tärkein on nykyisin Windows 10, joka perustuu Windows NT -käyttöjärjestelmään. Unix-pohjaisista Applen macOS on suosituin työpöytäkäytössä. Kyseinen käyttöjärjestelmä perustuu Darwiniin, joka taas on kehitetty BSD:n pohjalta. 
Palvelinkoneissa noin kaksi kolmasosaa koneista käyttää jotain Unix-tyyppistä käyttöjärjestelmää ja näistä noin puolet Linuxia. Noin kolmasosa käyttää Windows-perheen käyttöjärjestelmää (2017).
Mobiililaitteissa Linux-pohjainen Android on kiistatta 
suosituin yli 70 prosentin osuudella (2017). Käytännössä sen lisäksi on käytössä vain Applen iOS.
Tablettilaitteissa suosituin on iOS noin kahden kolmasosan osuudella, Androidilla on noin kolmasosan osuus.
POSIX ei ole varsinainen käyttöjärjestelmä, vaan standardi, jonka kuvaa käyttöjärjestelmältä vaaditut ominaisuudet sovellusten siirrettävyyden takaamiseksi. Kaikki edellä mainitut käyttöjärjestelmät toteuttavat ko. standardin, mutta siirrettävyys toteutuu ainoastaan silloin, kun ohjelmiston tekijä on pitäytynyt vain POSIX-rajapinnan käytössä.