Operációs rendszer
Operációs rendszer (OS), a számítógép erőforrásait kezelő program, különösen az erőforrások más programok közötti elosztása. Tipikus erőforrások közé tartozik a központi feldolgozó egység (CPU), a számítógép memóriája, a fájltároló, a be- és kimeneti (I/O) eszközök és a hálózati kapcsolatok. A kezelési feladatok közé tartozik az erőforrások használatának ütemezése a programok közötti konfliktusok és interferenciák elkerülése érdekében. A legtöbb programmal ellentétben, amelyek befejezik a feladatot és megszűnnek, az operációs rendszer korlátlan ideig fut, és csak a számítógép kikapcsolásakor szűnik meg.
A modern többprocesszoros operációs rendszerek lehetővé teszik, hogy több folyamat legyen aktív, ahol minden folyamat egy-egy “számítási szál”, amelyet egy program végrehajtására használnak. A többprocesszoros feldolgozás egyik formája az úgynevezett időmegosztás, amely lehetővé teszi, hogy sok felhasználó megossza a számítógéphez való hozzáférést azáltal, hogy gyorsan váltogat közöttük. Az időmegosztásnak meg kell akadályoznia a felhasználók programjai közötti interferenciát, ezért a legtöbb rendszer virtuális memóriát használ, amelyben a program által használt memória vagy “címtartomány” a másodlagos memóriában (például egy mágneses merevlemez-meghajtón) tartózkodhat, amikor nincs közvetlen használatban, és igény esetén visszahelyezhető a számítógép gyorsabb fő memóriájába. Ez a virtuális memória egyrészt növeli a program számára rendelkezésre álló címtartományt, másrészt segít megakadályozni, hogy a programok zavarják egymást, de az operációs rendszer általi gondos ellenőrzést és a memóriahasználat nyomon követésére szolgáló kiosztási táblázatok készletét igényli. Egy modern operációs rendszer számára talán a legkényesebb és legkritikusabb feladat a CPU kiosztása; minden folyamat korlátozott ideig használhatja a CPU-t, ami a másodperc töredéke lehet, majd le kell adnia az irányítást, és fel kell függesztenie a következő fordulójáig. A folyamatok közötti váltásnak magának is használnia kell a CPU-t, miközben meg kell védenie a folyamatok összes adatát.
Az első digitális számítógépek nem rendelkeztek operációs rendszerrel. Egyszerre egy programot futtattak, amely az összes rendszererőforrás felett rendelkezett, és egy emberi kezelő biztosította a szükséges speciális erőforrásokat. Az első operációs rendszereket az 1950-es évek közepén fejlesztették ki. Ezek kis “felügyelőprogramok” voltak, amelyek alapvető I/O műveleteket végeztek (például lyukkártya-olvasók és nyomtatók vezérlését), és számlázási céllal nyilvántartást vezettek a CPU-használatról. A szupervíziós programok többprogramozási képességeket is biztosítottak, hogy egyszerre több program is futhasson. Ez különösen fontos volt, hogy ezek a korai, több millió dolláros gépek ne álljanak tétlenül a lassú I/O műveletek alatt.
A számítógépek az 1960-as években az időmegosztás megjelenésével erősebb operációs rendszereket kaptak, amihez olyan rendszerre volt szükség, amely több, a CPU-időn és terminálokon osztozó felhasználót kezel. Két korai időmegosztó rendszer a Massachusetts Institute of Technology-ban kifejlesztett CTSS (Compatible Time Sharing System) és a Dartmouth College-ban kifejlesztett Dartmouth College Basic System volt. További többprogramos rendszerek közé tartozott az angliai Manchesteri Egyetemen kifejlesztett Atlas és az IBM OS/360, az 1960-as évek valószínűleg legösszetettebb szoftvercsomagja. 1972 után a General Electric Co. GE 645 számítógépéhez (majd később a Honeywell Inc. számítógépeihez) készült Multics rendszer lett a legkifinomultabb rendszer, amely a legtöbb olyan multiprogramozási és időmegosztási képességgel rendelkezett, amelyek később szabványossá váltak.
A hetvenes évek miniszámítógépei korlátozott memóriával rendelkeztek, és kisebb operációs rendszert igényeltek. A korszak legfontosabb operációs rendszere a UNIX volt, amelyet az AT&T fejlesztett ki a nagy miniszámítógépek számára, a Multics egyszerűbb alternatívájaként. Az 1980-as években széles körben elterjedt, részben azért, mert az egyetemek számára ingyenes volt, részben pedig azért, mert olyan eszközkészlettel tervezték, amely képzett programozók kezében nagy teljesítményű volt. Újabban a Linux, a UNIX nyílt forráskódú változata, amelyet részben a finn informatikus Linus Torvalds, részben pedig a Richard Stallman amerikai programozó által vezetett csoport fejlesztett ki, népszerűvé vált a személyi számítógépeken és a nagyobb számítógépeken egyaránt.
Az ilyen általános célú rendszerek mellett speciális célú operációs rendszerek futnak a kis számítógépeken, amelyek futószalagokat, repülőgépeket, sőt háztartási gépeket is vezérelnek. Ezek valós idejű rendszerek, amelyeket úgy terveztek, hogy gyors választ adjanak az érzékelőkre, és azok bemeneteit felhasználják a gépek vezérlésére. Mobil eszközökre, például okostelefonokra és táblagépekre is fejlesztettek operációs rendszereket. Az Apple Inc. iPhone-okon és iPadeken futó iOS-je és a Google Inc. Androidja két kiemelkedő mobil operációs rendszer.
A felhasználó vagy egy alkalmazásprogram szempontjából az operációs rendszer szolgáltatásokat nyújt. Ezek közül néhány egyszerű felhasználói parancs, mint például a “dir” – a lemezen lévő fájlok megjelenítése -, míg mások alacsony szintű “rendszerhívások”, amelyeket egy grafikus program használhat egy kép megjelenítéséhez. Az operációs rendszer mindkét esetben megfelelő hozzáférést biztosít az objektumaihoz, az egyik esetben a lemezhelyeket tartalmazó táblázatokhoz, a másik esetben az adatok képernyőre történő átviteléhez szükséges rutinokhoz. Néhány rutinja, például azok, amelyek a CPU-t és a memóriát kezelik, általában csak az operációs rendszer más részei számára érhető el.
A személyi számítógépek mai operációs rendszerei általában grafikus felhasználói felületet (GUI) biztosítanak. A grafikus felhasználói felület lehet a rendszer szerves része, mint az Apple Mac OS és a Microsoft Corporation Windows operációs rendszerének régebbi változataiban; másutt olyan programcsomag, amely egy mögöttes rendszertől függ, mint a UNIX X Window rendszere és az Apple Mac OS X.