Uporabniška programska oprema omogoča računalniku, da stori kaj koristnega za uporabnika. Sistemska programska oprema pa omogoča računalniku, da sploh živi. Glavni del sistemske programske opreme je sam operacijski sistem oz. njegovo jedro (kernel). Poleg tega pa spada v skupino sistemske programske opreme še kup drugih programov, brez katerih bi računalnik le životaril. Spoznali bomo, kako komunicirata strojna in programska oprema. Za povprečnega uporabnika računalnika morda nič ni bolj nepomembnega od tega, kdo ali kaj skrbi za to, da naprave, ki so priključene na računalnik (monitor, disk, miška, tipkovnica, tiskalnik, omrežna povezava, USB disk itd.), lahko nemoteno delujejo. Za to skrbijo programi, ki jih imenujemo gonilniki. Brez teh bi bili računalniki popolnoma neuporabne škatle. Sistemska programska oprema omogoča programerju, da izdeluje aplikacije, ne da bi poznal vse "umazane" podrobnosti konkretnega računalnika, še posebno njegovih zunanjih naprav. Že vse različne strojne opreme je toliko, da je operacijski sistem računalnika ne more poznati. Gonilnik je npr. neke vrste prevajalec, ki govori tako jezik naprave kot jezik računalnika. Spoznali bomo, kako pišemo, prevajamo in nalagamo preproste primere gonilnikov. Ukvarjali se bomo tudi s sistemskim programiranjem, predvsem v sistemu Linux (v jeziku C). Pri tem bomo obravnavali tudi datoteke, procese, semaforje, signale, razne oblike medprocesne komunikacije in vtičnice (sockets), ki nam omogočajo, da napišemo preprost TCP strežnik in odjemalca.