Operační systém je "program", který má několik základních úkolů. Svým způsobem je zcela nezbytný ke spouštění ostatních programů. Operační systém totiž poskytuje ostatním programům nezbytnou funkcionalitu, bez které by se žádný program sám o sobě neobešel. Ve vztahu k programům tedy operační systém zastává i roli knihovny.
Operační systém běží na počítači vždy pouze jeden, vícero operačních systémů běžících na stejném počítači by způsobilo zmatek. Jedinou možností, jak provozovat na jednom počítači více operačních systémů naráz je virtualizace. Virtualizace je technika, kterou operační systém vytvoří zcela nový (ale pouze virtuální) počítač, na kterém potom může běžet jiný operační systém a myslet si, že je to skutečný počítač. Při virtualizaci tedy běží vícero operačních systémů na stejném počítači, ale každý si myslí, že má celý počítač jenom sám pro sebe. Pouze jeden z všech operačních systémů takto běžících (zvaný hostovský operační systém) pak má sám pro sebe skutečný počítač. Všechny ostatní operační systémy mají k dispozici pouze virtuální počítače.
Každý operační systém má tři základní funkce:
Každý operační systém musí poskytnout nějakou možnost, jak s ním uživatel může komunikovat. Možností může být poskytnuto i více, vždy ale aspoň nějaká existuje. Existují různá uživatelská rozhraní lišící se svými možnostmi, vnitřní složitostí a uživatelskou přívětivostí. Nejčastěji se lze setkat se dvěma základními druhy uživatelských rozhraní:
Ovládání pomocí terminálu je koncepčně starší a bývá složitější se jej naučit skutečně ovládat. Pro některé druhy úloh je ovšem stále nejlepší možností. Jeho velkou výhodou je poměrně malá náročnost na množství přenesených dat, což je velmi výhodné, snažíme-li se připojit k vzdálenému počítači přes třeba i velmi pomalou internetovou linku. Terminálové ovládání počítače nachází také své uplatnění při hromadném zpracování dat. Obecně platí, že zatímco grafické rozhraní je mnohem lepší pro zpracování malého množství dat (řádově jednotky), terminálové rozhraní získává svou sílu při zpracování velkého množství dat (třeba stovky, tisíce nebo třeba miliony údajů)
Toto ovládání poskytuje možnosti ostatním programům, jak vytvářet a používat různé grafické ovládací prvky, jako třeba okna, tlačítka, editační boxy a podobně. Výhodou GUI je, že umožňuje mnohem jednodušší intuitivní pochopení daného programu (je-li rozhraní dobře navrženo samozřejmě), nevýhodou je mnohem větší náročnost na přenos dat. Přenos GUI po síti je možný pouze na velmi rychlých a spolehlivých internetových linkách. GUI typicky nelze použít pro hromadné zpracování dat, není-li program s GUI už předem k takovému učelu navržen.
Většina dnešních moderních operačních systémů kombinuje obě metody a umožňuje používat to nejlepší z obojího.
Velkým problémem na úrovni hardwaru je, že dva kusy hardwaru jinak splňující stejný účel, fungují uvnitř zcela odlišně. Budeme-li mít například dvě klávesnice, mohou sice obě mít stejná tlačítka, ale jejich zpracování může vypadat úplně jinak. Přesně toto řeší hardwarová abstrakce. Ta zařizuje, že k danému zařízení se přistupuje pořád stejně, ať už vnitřně vypadá jakkoliv. I když například jedna klávesnice bude s počítačem komunikovat pomocí úplně jiných dat než druhá klávesnice, je úkolem operačního systému poskytnout abstrakci "klávesnice", která bude s programem komunikovat pořád stejně.
Při hardwarové abstrakci už program nemusí řešit, zda komunikuje s klávesnicí Logitech či Genius, ale ví, že skrze operační systém bude komunikace s oběma klávesnicemi vždy stejná.
Aby operační systém mohl poskytnout hardwarovou abstrakci, potřebuje k tomu jednotlivé ovladače zařízení. Ovladač zařízení je vlastně malý program (nebo ještě lépe knihovna), který na jedné straně komunikuje individuálně se zařízením a na druhé straně poskytuje jednotné rozhraní pro operační systém.
V počítačovém světě je spoustu zdrojů, o které se jednotlivé programy musí dělit. Například, celý počítač má jenom jednu paměť RAM, která musí být nějakým způsobem rozdělena mezi jednotlivé běžící programy. Nebo, je-li k počítači připojena tiskárna, musí se něco postarat o výlučný přístup daného programu. Tj. když program A přistupuje k tiskárně, nesmí tam ve stejnou chvíli přistupovat program B, což by způsobilo, že bude vytištěn nesmysl. Nebo, procesorový čas, tj. čas, kdy se procesor věnuje konkrétnímu programu je potřeba taktéž rozdělit, aby se rovnoměrně rozdělil mezi běžící programy.
A to je všechno taktéž úkolem operačního systému. Operační systém tedy vlastní jednotlivé zdroje (jako tiskárny, paměť RAM, procesor) a přiděluje je podle nějakých kritérií jednotlivým programům.
Unix byl průkopníkem na poli operačních systémů a v rámci jeho vývoje bylo vymyšleno mnoho nápadů a dílčích systémů, které se používají dodnes. Lze říci, že UNIX je jedním z nejinspirativnějších projektů na poli operačních systémů, které kdy spatřily světlo světa.
UNIX není jediný operační systém, ale existuje mnoho jeho variant, které však všechny vycházejí z jednoho původního projektu. Tento projekt byl převzat různými společnostmi, které potom vyvíjely svoje vlastní verze UNIXu. Některé (avšak asi zdaleka ne všechny) varianty a vzájemné vazby ukazuje následující obrázek:

Linux, přísně vzato, taktéž není operačním systémem, ale pouze jádrem operačního systému. Jádro je modul, který provádí hardwarovou abstrakci a správu nejdůležitějších zdrojů, neposkytuje však sám o sobě žádné uživatelské rozhraní. Na jádru Linux je založena celá škála operačních systémů, které jsou si vzájemně hodně podobné, v dílčích věcech se ale mohou i lišit.
Základem operačních systémů založených na Linuxu je typicky operační systém GNU, což je varianta UNIXu, která ovšem vznikla zcela nezávisle na původním UNIXu. Proto se také mnohdy mluví o operačních systémech GNU/Linux. Existují ale i varianty Linuxových systémů, které na operačním systému GNU založeny přímo nejsou. Například operační systém Android.
S operačním systémem GNU a jádrem Linux také úzce souvisí filozofie vývoje softwaru zvaná svobodný software, popřípadě open-source software (oba pojmy nejsou úplně stejné, ale do značné míry se překrývají). V této filozofii jde o to, že jakékoliv programy se dodávají zásadně i se zdrojovými kódy, což umožňuje programátorům stavět na již existujícím kódu a tento dále vylepšovat. V rámci této filozofie je ve většině případů (ačkoliv ne nutně) software nabízen zcela zdarma. Většina operačních systémů založených na Linuxu je tedy k dispozici zdarma a není potřeba nikomu platit žádné licenční poplatky.
Maskotem systému Linux je tučňák Tux:

Operační systém Windows je operační systém z dílny firmy Microsoft, která je také zodpovědná za celý jeho vývoj. Operační systém Windows by nebyl ničím moc zajímavý, kdyby (jistě díky velmi dobré obchodní strategii) se firmě Microsoft nepodařilo tento systém prosadit jako prakticky jedinou alternativu do počítačů rodiny PC. Skutečné alternativy k Windows se objevily až mnohem později a nedokázaly tak na prakticky monopolním postavení Windows na PC nic udělat. Windows je tedy nejrozšířenější operační systém na počítačích rodiny PC.
S operačními systémy z UNIXové rodiny nemá téměř nic společného, byť v posledních letech vyvíjí Microsoft různé snahy o větší kompatibilitu s UNIXovými systémy.
Jedná se o operační systém používaných na počítačích firmy Apple. Tento operační systém je vlastně strikně vzato také UNIXem, jádro tohoto systému vychází z jádra FreeBSD, jehož historie sahá až k původnímu UNIXu.
Android je operační systém firmy Google, který je postaven na jádru Linux a který je určen zejména pro mobilní zařízení, jako telefony popřípadě tablety. Na samotném jádru Linux běží platforma ART (Android Runtime), která umí spouštět aplikace v bajtkódu programovacího jazyka Java. Aplikace pro Android se tedy typicky programují v jazyce Java.
Jak už jsme řekli, jakýkoliv program, který běží na počítači vyžaduje ke svému běhu operační systém. Každý operační systém vytváří nějaké tzv. rozhraní, které program používá pro přístup k funkcionalitě operačního systému.
A samozřejmě platí, že každý operační systém poskytuje úplně jiné rozhraní. Z toho plyne, že aby nějaký program mohl běžet, potřebuje k tomu operační systém, na který byl sestaven. Program určený pro Linux tak nepoběží na OS Windows a naopak program určený a sestavený pro Windows nepoběží na žádném Linuxu. Říkáme proto, že Linux a Windows nejsou vzájemně kompatibilní. To znamená, že rozhraní poskytované Linuxem a rozhraní poskytowané OS Windows si vůbec neodpovídají, ač ve skutečnosti mají velmi podobnou funkcionalitu. Funkcionalita je sice velmi podobná, každý ze systémů jí ale dělá po svém.
Z tohoto pohledu lze pozorovat i nekompatibilitu mezi operačními systémy založenými na Linuxu. Ta ale není tak zásadního charakteru, jako je nekompatibilita mezi Linuxem a Windows, a tak nepřináší většinou velké komplikace. U Linuxu ale musíme počítat s mnohem větší mírou různorodosti, než tomu je třeba na operačním systému Windows.
Existují i projekty, které jednomu operačnímu systému přidávají podporu jiného operačního systému. Například projekt Wine přidává do Linuxového operačního systému rozhraní, které očekávají programy psané pro Windows. Pomocí Wine tak lze i na Linuxu spouštět programy pro Windows. Nutné je ale poznamenat, že tvorba takových emulátorů je velmi náročná a v principu ani nemůže být dokonalá. Nelze jí tedy použít pro všechny programy.
Existuje také celá disciplína zvaná multiplatformní programování, která se zabývá tím, jak psát programy tak, aby byly použitelné na různých operačních systémech. Jednodušší je multiplatformní programování na interpretovaných jazycích, protože u nich stačí mít interpreter pro daný operační systém, čímž je v zásadě vše nutné vyřešeno. Nicméně právě proto je potřeba, aby i vlastní interpreter jazyka byl napsán multiplatformně, aby bylo snadné jej uzpůsobit běhu jiného operačního systému (tomu se říká portování).