Operačný systém

Operačný systém (OS) je softvér, ktorý spravuje zdroje počítača a poskytuje programom rozhranie na prístup k týmto zdrojom. Operačný systém tiež spracúva systémové dáta a vstupy od používateľa a odpovedá alokovaním a spravovaním úloh a interných zdrojov počítača ako služby pre užívateľa. OS vykonáva základné úlohy ako kontrola a alokovanie pamäte, pridelenie priority sykontrola vstupných a výstupných zariadení, umožnenie pripojenia do siete a správa súborov. Operačné systémy môžeme nájsť takmer vo všetkom, čo obsahuje integrované obvody, od osobných počítačov, cez internetové servery, mobilné telefóny, hudobné prehrávače, routre, switche, herné konzoly, digitálne kamery, až po šijacie stroje či teleskopy.
Vo väčšine prípadov operačný systém nie je prvým kódom, ktorý sa spúšťa v počítači pri bootovaní. Inicializačný kód, vykonávaný v počítači, je zvyčajne nahratý z firmvéru, ktorý je uložený vo Flash ROM, niekedy označovaný aj ako BIOS alebo boot ROM. Firmvér nahrá a spustí jadro operačného systému (zvyčajne z disku, niekedy aj cez sieť) a zobrazí prvý grafický alebo textový výstup, ktorý užívateľ uvidí.
Najbežnejšie súčasné desktopové operačné systémy sú Microsoft Windows, macOS, Linux, FreeBSD a Solaris. Windows je najpopulárnejší desktopový OS, pričom Linux je najpoužívanejší v serverových prostrediach. Linux, Mac OS X aj Microsoft Windows majú všetky nielen osobné, ale aj serverové varianty. S výnimkou MS Windows, dizajny všetkých spomenutých operačných systémov boli inšpirované, alebo priamo zdedené, z operačného systému Unix. Unix bol vyvinutý v Bell Labs v 60. rokoch a bol základom vzniku mnohých voľných, ale aj komerčných operačných systémov.
Delenie OS:
Podľa počtu používateľov (jedno alebo viac-používateľské)
Podľa režimu, v ktorom pracuje (grafický alebo textový)
Podľa počtu úloh, ktoré dokáže vykonávať "súčasne" (jedno alebo viacúlohový (multitasking))
Základné technológie.
Operačný systém je súbor technológií, ktoré boli navrhnuté, aby umožnili počítaču vykonávať určité funkcie. Tieto technológie môžu (ale aj nemusia) byť prítomné v každom OS, a často sa vyskytujú rozdiely v ich implementácii. Avšak, ako bolo spomenuté vyššie, väčšina súčasných moderných operačných systémov bola odvodená od rovnakých predchodcov, a tak sú v základe podobné.
Vykonávanie programu.
Najbežnejšia funkcia operačného systému je podpora aplikácií spustených užívateľom. Na operačných systémoch s podporou multiprogramovania, sú bežiace programy označované ako procesy. Správa procesov využíva prostriedky poskytované operačným systémom na umožnenie vytvorenia, vykonania a ukončenia procesov, a zabezpečenie rôznych interakcií. Túto funkcionalitu zabezpečuje jadro operačného systému v spojení s príslušným hardvérom.
Vykonanie programu zahŕňa vytvorenie procesu operačným systémom. Jadro vytvorí proces a buď ho odloží na neskoršie použitie, alebo mu alokuje určitú časť pamäte, nahrá programový kód z disku alebo inej časti pamäte do novo-alokovanej oblasti a spustí jeho beh.
Jadro OS ukladá rôzne informácie o bežiacich procesoch. Medzi tieto informácie môže patriť:
Prerušenia.
Prerušenia sú ústrednou časťou operačného systému a umožňujú mu vysporiadať sa s neočakávanými aktivitami bežiacich programov. Sú základnou formou, akou operačný systém prideľuje čas bežiacim procesom a bývajú priamo podporované väčšinou vyrábaných CPU. Prerušenia poskytujú počítaču spôsob, ako automaticky spustiť určitý kód ako odpoveď na rôzne udalosti. Dokonca aj veľmi jednoduché počítače podporujú hardwarové prerušenia, a umožňujú tak programátorovi špecifikovať kód, ktorý sa má vykonať keď nastane určitá udalosť.
Keď dôjde k prerušeniu, hardware počítača automaticky zastaví bežiaci program a uloží jeho registre a program counter (ukazovateľ aktuálnej pozície v programe). Je možné si to predstaviť ako uloženie záložky do knižky, keď čitateľa preruší telefonát.
V moderných operačných systémoch sú prerušenia spracúvané jadrom operačného systému. Prerušenie môže prísť buď od hardvéru počítača, alebo od bežiaceho programu. Keď nejaké hardvérové zariadenie vyvolá prerušenie, jadro operačného systému sa rozhodne, ako s touto udalosťou naloží, vo všeobecnosti ako reakciu buď spustí nejaký kód, alebo udalosť odignoruje. Spracovanie hardvérových prerušení je úloha, ktorá je zvyčajne pridelená programu nazývaný ovládač zariadenia, ktorý môže byť súčasťou operačného systému, alebo iného programu, alebo oboje. Ovládače potom môžu ďalej predať informáciu bežiacemu programu rôznymi spôsobmi.
Program môže tiež vyvolať prerušenie v operačnom systéme. Napríklad keď chce pristúpiť k hardvéru počítača, môže vyvolať prerušenie, čo spôsobí odovzdanie kontroly jadru operačného systému. To potom vykoná požiadavku, ktorá obsahuje inštrukcie, ktoré odovzdá hardvéru alebo ovládaču zariadenia. Keď si program žiada alokovať viac pamäte, spustiť alebo komunikovať s iným programom, alebo oznámiť, že už viac nepotrebuje CPU, robí to pomocou prerušení.
Chránený mód a mód jadra.
Moderné CPU podporujú technológiu nazývanú duálny mód. CPU s touto možnosťou používajú dva módy: chránený mód a mód jadra, ktoré zabezpečujú, že určité funkcie CPU môžu byť kontrolované a ovplyvňované len jadrom operačného systému. Tu chránený mód neoznačuje vlastnosť CPU 80286-tky, aj keď vo všobecnosti sú mu chránené módy veľmi podobné. CPU môžu mať taktiež iné módy, podobné 80286-tkovému chránenému módu, napríklad virtuálny 8086 mód 80386-tky.
Avšak, výraz chránený mód je tu použitý všeobecnejšie v teórii operačných systémov, a označuje všetky módy, ktoré obmedzujú možnosti bežiaceho programu, poskytujú prostriedky ako adresovanie virtuálnej pamäte, či obmedzenie prístupu k hardvéru spôsobom určeným programom, ktorý beží v móde jadra. Podobné módy existujú aj u superpočítačov, minipočítačov, či strediskových počítačov, pretože sú nevyhnutné pre podporu UNIX-ových multiužívateľských operačných systémov.
Keď je počítač spustený, najprv sa automaticky spustí v režime jadra. Prvých niekoľko programov spustených na počítači sú BIOS, bootloader, a operačný systém majú neobmedzený prístup k hardvéru. Keď však operačný systém odovzdá riadenie inému programu, prepne CPU do chráneného módu.
V chránenom móde majú programy prístup iba k obmedzenému množstvu CPU inštrukcií. Užívateľský program môže opustiť chránený mód iba vyvolaním prerušenia, ktoré odovzdá kontrolu opäť jadru systému. Týmto spôsobom si operačný systém udržiava výlučnú kontrolu prístupu k hardvéru, či k pamäti.
Termín “prostriedok chráneného módu” vo všeobecnosti označuje jeden alebo viac CPU registrov, ktoré obsahujú informácie, ku ktorým program nemá povolený prístup. Pokusy o zmenu týchto prostriedkov zvyčajne spôsobia prepnutie do režimu jadra.
Správa pamäte.
Okrem iných vecí, jadro multiprogramového OS je zodpovedné za kontrolu všetkej systémovej pamäte, ktorá je používaná programami. Toto zabezpečuje, že program nemôže narábať s pamäťou, ktorá je už používaná iným programom. Odkedy je možné striedať programy pomocou prerušení, musí mať každý program nezávislý prístup do pamäte.
Kooperatívna správa pamäte, používaná mnohými prvotnými operačnými systémami, predpokladá, že všetky programy budú dobrovoľne využívať správcu pamäte operačného systému, a nebudú presahovať svoju alokovanú pamäť. Tento systém správy pamäte sa už teraz takmer nikde nevyskytuje, keďže programy často obsahujú chyby, ktoré zapríčiňujú, že sa program pokúša zasiahnuť aj mimo svojej alokovanej pamäte. Keď potom program spadne, môže spôsobiť prepísanie pamäte používanej inými programami. Zlomyseľné programy alebo vírusy takto môžu zámerne meniť pamäť iného programu alebo ovplyvniť činnosť samotného operačného systému. U kooperatívnej správy pamäte teda stačí jediný zlý program na pád celého systému.
Ochrana pamäte umožňuje jadru obmedziť procesom prístup do pamäte. Existujú viaceré metódy ochrany pamäte, napríklad segmentácia pamäte a stránkovanie. Všetky metódy vyžadujú určitú úroveň hardvérovej podpory, ktorá nemusí existovať vo všetkých počítačoch.
V oboch metódach – segmentácia aj stránkovanie, registre chráneného módu určujú, ku ktorým pamäťovým adresám môže program pristupovať. Pokusy adresovať inú časť pamäte vyvolajú prerušenie, ktoré spôsobí, že CPU znovu vstúpi do režimu jadra a kontrola bude odovzdaná jadru OS. Toto je nazývané porušenie segmentácie, skrátene seg-V od anglického segmentation violation, a keďže je zvyčajne znakom zlomyseľného programu, jadro ho zvyčajne ukončí a zahlási chybu.
Windows 3.1 – Me mal určitú úroveň ochrany pamäte, ale programy ju mohli veľmi jednoducho obísť. Pod Windows 9x všetky MS-DOS-ovské aplikácie bežali v móde jadra, a tak mali takmer neobmedzenú kontrolu nad počítačom. Chyba všeobecnej ochrany vznikne pri výskyte porušenia segmentácie, avšak systém aj napriek tomu často spadne.
Metódy multitaskingu.
Multitasking označuje beh viacerých nezávislých programov na jednom počítači, pričom sa javia, že sú vykonávané naraz. Keďže väčšina počítačov v skutočnosti môže naraz vykonávať len jednu, či dve činnosti, je toto zdanie spôsobené „zdieľaním času“, čo znamená, že každý program využíva časť procesorového času na svoj beh.
Jadro operačného systému obsahuje softvér nazývaný scheduler – plánovač, ktorý určuje, koľko času ktorý program dostane na svoje vykonávanie, a v akom poradí sa programy dostanú na rad. Kontrola je odovzdávaná procesu jadrom operačného systému, ktorý zároveň umožní programu prístup k CPU a k pamäti. Neskôr je kontrola opäť odovzdaná naspäť operačnému systému, a zas ďalší program môže využívať CPU a pamäť. Toto predávanie kontroly medzi jadrom a aplikáciami je nazývané prepínanie kontextu (context-switch).
Prvotný model, ktorý priraďoval čas bežiacim programom sa nazýval kooperatívny multitasking. V tomto modeli, keď je kontrola raz odovzdaná programu, tak sa môže vykonávať ako dlho chce, bez toho aby musel vracať kontrolu späť operačnému systému. To znamená, že nesprávne fungujúci program mohol zabrániť ostatným aplikáciám používať CPU.
Filozofia preemptívneho multitaskingu bola zabezpečiť, že všetkým programom bude pridelený rovnaký čas používania CPU. To znamená, že všetky programy musia mať vyhradený limitovaný čas, počas ktorého môžu využívať CPU bez prerušenia. K dosiahnutiu tohto používajú moderné operačné systémy časované prerušenia. Časovač chráneného módu je spustený jadrom, ktoré po uplynutí určitého času vyvolá návrat do módu jadra.
Na mnohých monoužívateľských operačných systémoch je kooperatívny multitasking vhodným riešením, napríklad na domácich počítačoch zvyčajne beží len malé množstvo dobre otestovaných programov. Windows XP Home Edition bola prvá verzia MS Windows pre domáce použitie, ktorá používa plne preemptívny multitasking, hoci už predtým bol použitý vo Windows NT. UNIX, ktorý bol navrhnutý pre viacero užívateľov, podporoval preemptívny multitasking už desaťročia, pokiaľ to hardvér dovoľoval.
Súborový systém.
Prístup k súborom uloženým na disku je základná črta všetkých operačných systémov. Počítače ukladajú dáta na diskoch, pričom používajú súbory, ktoré sú rôzne štruktúrované tak, aby zabezpečili rýchlejší prístup, vyššiu spoľahlivosť a lepšie využitie diskového priestoru. Charakteristický spôsob, akým sú súbory na disku uložené, sa nazýva súborový systém a umožňuje súborom nastaviť mená a atribúty. Okrem toho tiež umožňuje uložiť súbory v hierarchii adresárov usporiadaných do adresárového stromu.
Prvotné súborové systémy mali obmedzenú kapacitu, rýchlosť, a tiež obmedzené možnosti názvov súborov a adresárových štruktúr, ktoré používali. Tieto obmedzenia často odrážali obmedzenia v operačných systémoch, pre ktoré boli navrhnuté. Bolo tak zložité pre operačný systém podporovať viac než jeden súborový systém.
Zatiaľ, čo mnohé jednoduchšie operačné systémy podporujú len obmedzené množstvo možností pre prístup k úložnému systému, moderné OS ako UNIX a Linux podporujú technológiu známu ako virtuálny súborový systém alebo VFS (od virtual file system). Tieto OS podporujú tiež veľký rozsah úložných zariadení, bez ohľadu na ich návrh či súborový systém, pretože sa k nemu pristupuje pomocou application programming interface (API). Preto už nie je nevyhnutné, aby programy mali akékoľvek informácie o zariadení, ku ktorému pristupujú. VFS umožňuje operačnému systému poskytnúť programom prístup k neobmedzenému množstvu zariadení s nekonečnou množinou súborových systémov, prostredníctvom špecifických ovládačov.
K pripojenému úložnému zariadeniu ako hard disk je možné pristupovať pomocou ovládača tohto zariadenia. Ovládač rozumie špeciálnemu jazyku toho ktorého zariadenia a je schopný preložiť ho do štandardného jazyku, ktorý používa operačný systém. Na UNIXe je toto jazyk blokových zariadení (block devices).
Keď má jadro OS príslušný ovládač na svojom mieste, môže potom pristupovať k obsahu disku v neupravenom formáte, ktorý môže obsahovať jeden alebo viac súborových systémov. Ovládač preloží príkazy, používané k prístupu ku každému špecifickému súborovému systému, do štandardnej množiny príkazov, ktoré používa OS na komunikáciu so všetkými súborovými systémami. Programy s nimi potom môžu pracovať na základe názvov súborov a adresárov, obsiahnutých v určitom hierarchickom usporiadaní. Môžu taktiež vytvárať, zmazúvať, otvárať a zatvárať súbory, či získavať rôzne informácie ako prístupové práva, veľkosť, zostávajúce voľné miesto, a dátumy vytvorenia a modifikácie.
Kvôli mnohým rozdielom medzi súborovými systémami je zložité podporovať ich všetky. Dovolené znaky v názvoch súborov, citlivosť na veľké a malé písmená, prítomnosť rôznych druhov atribútov robia implementáciu jediného rozhrania pre všetky súborové systémy takmer nemožnou. MS Windows v súčasnosti podporuje len NTFS a FAT súborové systémy, spolu so sieťovými súborovými systémami zdieľanými inými počítačmi.
Vizuálna reprezentácia súborov a ciest sa taktiež líši pod rôznymi platformami, hoci toto je už viac otázkou rozhodnutia, a má málo spoločného so samotným súborovým systémom. UNIX oddeľuje časti cesty lomkou (/) a túto konvenciu nasledovali aj ďalšie OS ako Linux, Amiga OS a Mac OS X. MS-DOS taktiež napodobňoval túto vlastnosť, no mal už zaužívanú inú konvenciu používania lomiek (pre prídavné možnosti v príkazoch), takže namiesto toho používal spätnú lomku ako oddeľovač komponentov v ceste. MS Windows ho nasledovalo, pričom japonské edície Windowsu používajú ¥ a kórejské ₩. Pred príchodom Mac OS X, používali verzie Mac OS dvojbodku (:) ako oddeľovač. RISC OS používa bodku (.).
UNIX a jemu podobné operačné systémy povoľujú používať v názvoch súborov takmer všetky znaky, okrem lomky (/) a znaku NULL. Avšak umožnenie používania aj rôznych kontrolných znakov robí podporu tohto súborového systému pod MS Windows veľmi zložitou. UNIX-ové názvy súborov sú citlivé na veľkosť písma, čo umožňuje vytvoriť niekoľko rôznych súborov, ktoré sa budú v názve líšiť len veľkosťou písmen. Naopak, názvy súborov v MS Windows nie sú implicitne citlivé na veľkosť písmen, aj keď NTFS to podporuje na úrovni súborového systému. Windows taktiež obsahuje väčšiu množinu interpunkčných znamienok, ktoré nie sú povolené v názvoch súborov, z ktorých väčšina bola zdedená od obmedzení pôvodného FAT súborového systému.
Súborové systémy môžu poskytovať protokolovanie (journaling), ktoré zabezpečuje bezpečné obnovenie v prípade pádu systému. Takýto súborový systém zapisuje informácie dvakrát – raz do protokolu, ktorý je vlastne záznam operácií vykonávaných v súborovom systéme, a potom na ich správne miesto vo filesystéme. Protokolovanie je spravované systémovým ovládačom a ukladá informácie o každej operácii, ktorá menila obsah disku. V prípade pádu, systém môže byť obnovený do konzistentného stavu znovuvykonaním časti uloženého protokolu. Mnoho UNIXových súborových systémov podporuje protokolovanie zahŕňajúc ReiserFS, JFS, a Ext3.
Na rozdiel od toho, neprotokolované súborové systémy musia byť po páde systému prekontrolované nejakou utilitou ako fsck či chkdsk, aby sa zistili prípadné inkonzistencie. Jemné aktualizácie (soft updates) sú alternatívou k protokolovaniu, ktorá zabraňuje prebytočným zápisom tak, že starostlivo plánuje poradie aktualizačných operácií. Zápisovo štrukturované (log-structured) súborové systémy a ZFS sa líšia od tradičných protokolovaných systémov tým, že vždy zapisujú nové kópie dát namiesto toho aby aktualizovali staré, a tak zabraňujú inkonzistenciám.
Mnoho distribúcií Linuxu podporuje niektoré, alebo všetko z ext2, ext3, ReiserFS, Reiser4, GFS, GFS2, OCFS, OCFS2, a NILFS. Linux taktiež plne podporuje XFS, JFS spolu s FAT a NTFS.
Microsoft Windows obsahuje podporu pre FAT12, FAT16, FAT32 a NTFS. Súborový systém NTFS je najefektívnejší a najspoľahlivejší zo štyroch windowsových súborových systémov, hoci detaily jeho návrhu nie sú známe. Na Windows Vista je NTFS jediný súborový systém, ktorý môže byť nainštalovaný. Windows Embedded CE 6.0 zaviedol ExFAT, súborový systém vhodný pre flashové zariadenia.
Mac OS X podporuje HFS+ s protokolovaním, ako svoj primárny súborový systém. Ten je odvodený od Hierarchického súborového systému (Hierarchical File System) prvotného Mac OS. Mac OS X dokáže čítať aj zapisovať FAT16, FAT32, NTFS, UDF, a iné súborové systémy, ale nemôžu byť na ňom priamo nainštalované. Taktiež, ako pozostalosť UNIX-u, Mac OS X podporuje všetky súborové systémy podporované UNIX VFS.
Súborové systémy FAT sú zvyčajne používané na disketách, flash pamäťových kartách, v digitálnych kamerách a iných prenosných zariadeniach kvôli svojej jednoduchosti. ISO 9660 a Universal Disk Format sú formáty používané v CD a DVD. Mount Rainier je novšie rozšírenie UDF, podporované v Linuxe 2.6 a Windows Vista, pomocou ktorého je možné prepisovať DVD tým istým spôsobom ako diskety.
Sieť.
Súčasné operačné systémy podporujú množstvo sieťových protokolov, hardvéru a aplikácií na ich používanie. To znamená, že počítače používajúce rôzne OS môžu pracovať v tej istej sieti, a zdieľať súbory, tlačiarne, skenery používajúc drôtové alebo bezdrôtové pripojenia. Siete v zásade umožňujú prístup počítača ku zdieľaným prostriedkom vzdialeného počítača tak, ako keby boli pripojené priamo k nemu samotnému. Toto zahŕňa všetko od jednoduchej komunikácie, cez používanie sieťových súborových systémov až po zdieľanie grafického, či zvukového hardvéru. Niektoré sieťové služby umožňujú transparentne pristupovať k prostriedkom počítača, ako napríklad SSH, ktoré dovoľuje priamy prístup užívateľom siete k príkazovému riadku.
Sieť typu klient/server vyžaduje program na počítači, ktorý sa chce pripojiť cez sieť k inému počítaču, nazývanému server. Servery, zvyčajne bežiace pod UNIX alebo Linux, ponúkajú rôzne služby užívateľom siete. Tieto sú zvyčajne poskytované cez porty alebo číslované prístupové body za serverovou sieťovou adresou. Každé číslo portu je zvyčajne spojené s najviac jedným bežiacim programom, ktorý je zodpovedný za spracovanie požiadavky na danom porte.
Mnoho operačných systémov podporuje jeden alebo viac predajcom špecifikovaných, či otvorených sieťových protokolov, napríklad SNA na IBM systémoch, DECnet na systémoch od Digital Equipment Corporation, a Microsoft-špecifické protokoly na systémoch Windows. Niektoré protokoly pre špecifické úlohy môžu tiež byť podporované, ako napríklad NFS pre prístup k súborom. Protokoly ako Esound alebo esd môžu byť jednoducho rozšírené cez sieť a umožňujú prehrať zvuk z lokálnych aplikácií na vzdialenom počítači. Virtual3D umožňuje vzdialenému počítaču kontrolovať lokálny 3D hardware a tak hrať napríklad 3D hry po sieti.
Bezpečnosť.
Bezpečnosť počítača závisí od mnohých technológií a ich správnej funkčnosti. Moderný operačný systém poskytuje prístup k mnohým prostriedkom, ktoré sú prístupné bežiacim programom a externým zariadeniam prostredníctvom jadra.
Operačný systém musí byť schopný rozlišovať medzi požiadavkami, ktoré môžu, a ktoré by nemali byť vykonané. Kým niektoré systémy jednoducho rozlišujú medzi privilegovanými a neprivilegovanými procesmi, iné zvyčajne využívajú určitú formu „identity žiadateľa“, niečo ako meno užívateľa. Na vybudovanie identity slúži proces autentifikácie, pri ktorom je potrebné uviesť užívateľské meno, a každé užívateľské meno môže mať svoje heslo. Existujú aj iné metódy autentifikácie, napríklad magnetické karty, či biometrické dáta. V niektorých prípadoch, špeciálne pri používaní sieťových prostriedkov, môže byť prístup bez autentifikácie úplne zamietnutý.
Vnútornú bezpečnosť, alebo bezpečnosť práve vykonávaného programu, je možné zabezpečiť iba tak, že všetky potenciálne nebezpečné požiadavky budú vykonané pomocou prerušení jadrom OS. Ak programy priamo môžu pristupovať k hardvéru a iným prostriedkom, nemôžu byť bezpečné. MS Windows bol silne kritizovaný za mnohoročnú neschopnosť ochrániť jeden bežiaci program pred iným, avšak odkedy windows-y nie sú všeobecne používané ako servery, je tento nedostatok považovaný za nie tak závažný. V posledných rokoch Microsoft pridal limitované užívateľské kontá a bezpečnejšie prihlasovanie. Avšak, mnoho ľudí stále používa svoje počítače cez administrátorské konto, čo úplne neguje všetky vylepšenia, ktoré sa dosiahli týmito zmenami.
UNIX a Linux majú dvojúrovňovú bezpečnosť, ktorá umožňuje akékoľvek zmeny týkajúce sa systému len root užívateľovi, čo je špeciálne užívateľské konto na všetkých UNIXových systémoch. Zatiaľ čo root má neobmedzené možnosti vykonávania systémových zmien, programy bežného užívateľa majú vymedzené miesto, kam môžu ukladať svoje súbory a ku akému hardvéru môžu pristupovať. Toto značne obmedzuje škody, ktoré môže bežný užívateľ v systéme spôsobiť, pričom mu stále poskytuje dostatočnú slobodu robiť čokoľvek, okrem systémových zmien. Nastavenia užívateľa sú uložené v časti súborového systému, nazývaného domáci adresár (home directory), ktorý poskytuje priestor, kde si môže užívateľ ukladať svoju prácu, podobne ako Moje Dokumenty v systéme Windows. Keď chce užívateľ inštalovať software, alebo vykonávať systémové zmeny, musí vložiť potrebné root-ovské heslo, čo mu umožní spúšťať určité programy ako root.
Aj keď bežné užívateľské kontá na Linuxe poskytujú dostatok slobody na každodenné aktivity, potreba vkladať heslo pri inštalácii softvéru bola príčinou kritiky mnohých Windowsových užívateľov, ktorí boli zvyknutí mazať, meniť, vytvárať a premenúvať súbory kdekoľvek v systéme, čím sa veľmi ľahko dali zmazať dôležité súbory, alebo infikovať operačný systém vírusmi. Windows Vista sa pokúsil spraviť vylepšenia v tejto oblasti, ale takisto nasledovala vlna kritiky za jej zvedavý prístup a pýtanie sa užívateľa na potvrdenie jeho voľby aj pri bežných aktivitách, ktoré sotva môžu ohroziť bezpečnosť.
Vonkajšia bezpečnosť zahrňuje požiadavky z vonkajšieho prostredia počítača, ako napríklad prihlásenie na pripojenej konzole, alebo nejaký druh sieťového spojenia. Vonkajšie požiadavky musia často prejsť ovládačom zariadenia do jadra OS, odkiaľ môžu byť posunuté príslušným aplikáciám, alebo priamo vykonané. Bezpečnosť operačných systémov bola dlho znepokojivou záležitosťou, pretože v počítačoch boli uložene veľmi citlivé dáta, či už komerčného, alebo vojenského charakteru. Ministerstvo obrany USA vytvorilo kritériá (Trusted Computer System Evaluation Criteria - TCSEC), ktoré sa stali štandardom a určujú základné požiadavky pre určenie efektívnosti bezpečnosti. Toto sa stalo životne dôležitým pre tvorcov operačných systémov, pretože TCSEC bol použitý na ohodnotenie a výber operačných systémov použítých na spracúvanie a ukladanie citlivých informácií.
Sieťové služby ponúkajú zdieľanie súborov, tlačiarní, prístup k emailu, web stránkam, či použitie FTP, z čoho väčšina nemusí mať požadovanú úroveň bezpečnosti. Hlavným prvkom bezpečnosti je hardvérové zariadenie známe ako firewall. Na úrovni operačného systému existuje množstvo softvérových firewallov, tak isto ako aj antivírových programov. Väčšina moderných operačných systémov obsahuje softvérový firewall, ktorý je implicitne zapnutý. Môže byť nastavený tak, aby púšťal, resp. zastavil premávku na sieti smerujúcu od, alebo ku určitej službe či aplikácii bežiacej v operačnom systéme. Z toho dôvodu, keď nainštalujeme a spustíme nie bezpečnú službu, ako napríklad telnet alebo FTP, nemusíme sa báť ohrozenia spôsobeného bezpečnostnou dierou, pretože firewall odmietne všetku premávku pokúšajúcu sa pripojiť k danej službe, na danom porte.
Grafické užívateľské rozhrania.
Dnes väčšina moderných operačných systémov obsahuje grafické užívateľské rozhrania. V niektorých systémoch je priamo integrované v jadre systému – napríklad v pôvodnej implementácii MS Windows a Mac OS, grafický podsystém bol v skutočnosti časťou jadra. Iné operačné systémy, niektoré staršie, niektoré novšie, sú modulárne, oddeľujú grafický podsystém od jadra a operačného systému. V 1980 UNIX, VMS a mnoho iných boli vybudované práve týmto spôsobom. Dnes Linux a Mac OS fungujú tiež na tomto princípe.
Mnoho OS umožňuje užívateľovi nainštalovať, alebo vytvoriť grafické rozhranie podľa jeho požiadaviek. X Window System v spojení s GNOME alebo KDE je bežné nastavenie na väčšine UNIX-ových systémov. Mnohé na unixe založené grafické užívateľské rozhrania existujú už dlhší čas, väčšinou sú zdedené od X11. Súťaženie medzi rôznymi predajcami unixu (HP, IBM, Sun) viedlo k mnohým rozdeleniam, čo spôsobilo zlyhanie snahy o štandardizáciu podľa COSE a CDE v 1990-tom.
Grafické užívateľské rozhrania sa časom vyvíjajú. Napríklad, Windows modifikuje svoje GUI vždy, keď je vydaná nová verzia OS Windows, a rozhranie macOS bolo dramaticky zmenené s príchodom Mac OS X v roku 2001.
Ovládače zariadení.
Ovládač zariadenia je špeciálny typ počítačového softvéru, ktorý umožňuje interakciu s hardvérovými zariadeniami. Toto zvyčajne predstavuje rozhranie pre komunikáciu so zariadením prostredníctvom určitej počítačovej zbernice ku ktorej je hardvér pripojený. Toto rozhranie poskytuje príkazy na posielanie dát od a ku zariadeniu, a tak je nevyhnutné pre operačný systém a softvérové aplikácie. Ovládač je hardvérovo závislý počítačový program, ktorý je špecifický pre určitý OS, a umožňuje iným programom, typicky operačnému systému, pracovať transparentne s hardvérovým zariadením a zvyčajne poskytuje nevyhnutné spracúvanie prerušení.
Hlavným cieľom návrhu ovládačov zariadení je abstrakcia. Každý model hardvéru je odlišný. Novšie modely sú upravené výrobcami tak, aby poskytovali väčšiu spoľahlivosť alebo vyšší výkon a tieto novšie modely sú často ovládané odlišne. Počítače a ich operačné systémy nemôžu dopredu vedieť, ako používať každé zariadenie – či už súčasné alebo budúce. Aby sa vyriešil tento problém, operačné systémy určujú, ako by mal byť určitý typ zariadenia ovládaný. Funkciou ovládača je potom preložiť tieto operačným systémom určene funkcie do špecifických funkcií daného zariadenia. Teoreticky, keď sa objaví nové zariadenie, ktoré funguje novým spôsobom, by malo pracovať správne ak je dostupný príslušný ovládač. Tento nový ovládač zaistí, že z pohľadu OS zariadenie vyzerá že pracuje tak, ako zvyčajne.
Strediskové počítače (mainframes).
Počas 60. rokov bolo vyvinutých mnoho priekopníckych technológií na poli operačných systémov. Vývoj IBM System/360 podnietilo výrobu rodiny strediskových počítačov s rôznymi odlišnými schopnosťami a v rôznych cenách, pre ktoré bol plánovaný operačný systém OS/360 (radšej ako vyrábať špeciálne programy pre každý model). Tento koncept jediného OS použitého v celom rade produktov bol rozhodujúcim pre úspech systému System/360 a v skutočnosti, súčasné IBM mainframové operačné systémy sú potomkami tohto pôvodného systému; aplikácie napísané pre OS/360 môžu stále fungovať na moderných počítačoch. V strede 70. rokov MVS – potomok OS/360 - ponúkol prvú implementáciu používania RAM ako transparentnej pamäte pre trvalé diskové dáta.
OS/360 tiež položil základy mnohých iných konceptov, ktoré, v niektorých prípadoch, sa stále nepoužívajú nikde okrem strediskových počítačov. Napríklad, v OS/360 keď je spustený program, operačný systém udržuje záznamy o všetkých systémových prostriedkoch ktoré sú používané, vrátane úložného priestoru, zámkov, dátových súborov, atď. Keď je proces z nejakého dôvodu prerušený, všetky tieto prostriedky sú znovu vyžiadané operačným systémom. Alternatívny systém CP-67 naštartoval celý rad operačných systémov zameraných na koncept virtuálnych strojov.
Control Data Corporation vyvinul operačný systém SCOPE v 60. rokoch na dávkové spracovanie. V spolupráci s univerzitou v Minnesote boli počas 70-tch rokov vyvinuté operačné systémy KRONOS a NOS, ktoré podporovali súčasné dávkové použitie, aj prideľovanie času. Ako mnoho komerčných systémov s podporou prideľovania času, jeho rozhranie bolo rozšírením Dartmouth BASIC operačného systému, jedného z prvotných úspešných snáh o prideľovanie času procesom. V neskorých 70. rokoch Control Data a univerzita v Illinois vyvinuli PLATO operačný systém, ktorý využíval siete na dlhú vzdialenosť a umožňoval tak real-time chat a multi-užívateľské grafické hry.
Burroughs Corporation uviedli B5000 v roku 1961 s MCP (Master Control Program). B5000 bol zásobníkový stroj navrhnutý pre podporu vysoko-úrovňových jazykov bez použitia vlastného jazyka či assembleru, a skutočne – MCP bol prvý OS napísaný výlučne v high-level jazyku ESPOL, čo je odroda ALGOL. MCP tiež priniesol mnohé inovácie ako prvá komerčná implementácia virtuálnej pamäte.
UNIVAC, prvý komerčný výrobca počítačov, vyrobil sériu operačných systémov EXEC. Ako všetky predchádzajúce OS, aj tento bol dávkovo-orientovaný. V 70. rokoch UNIVAC vyrobil Real-Time Basic (RTB) systém s podporou rozsiahleho prideľovania času, podľa vzoru Dartmouth BASIC system.
General Electric a MIT vyvinuli General Electric Comprehensive Operating Supervisor (GECOS), ktorý uviedol koncept kruhových úrovní bezpečnostných privilégií. Po osvojení Honeywell-om bol premenovaný na General Comprehensive Operating System (GCOS).
Digital Equipment Corporation vyvinulo mnoho operačných systémov pre rôzne rady svojich počítačov, vrátane TOPS-10 a TOPS-20 systémov s podporou prideľovania času pre 36-bitové PDP-10 systémy. Pred širokopoužívaným UNIXom bol TOPS-10 obľúbeným systémom na univerzitách a v prvotnej ARPANET komunite.
V 60. a 70. rokoch sa rozvinuli niektoré hardvérové schopnosti, ktoré umožňovali podobnému alebo prenosnému softvéru bežať na viac ako jednom systéme. Prvotné systémy využívali mikroprogramovanie na implementáciu niektorých svojich vlastností v snahe umožniť rôznym odlišným architektúram aby sa javili rovnako. V skutočnosti väčšina 360 po 360/40 (s výnimkou 360/165 a 360/168) boli mikroprogramové implementácie. Skoro sa však ukázali ako dôležité iné spôsoby dosiahnutia kompatibility aplikácií.
Obrovské investície do softvéru pre tieto operačné systémy prinútilo väčšinu výrobcov počítačov pokračovať vo vývoji kompatibilných OS spolu s hardvérom. Významne podporované mainframové operačné systémy sú napríklad:
Mikropočítače.
Prvé mikropočítače nemali potrebnú kapacitu aby mohli používať operačné systémy navrhnuté pre strediskové počítače. Prvý významný diskovo orientovaný OS pre prvotné 8-bitové mikropočítače založené na mikroprocesore Intel 8080 a kompatibilné CPU bol CP/M. Oddeľoval hardvérovo závislú vrstvu (BIOS), ktorú jedinú bolo potrebné adaptovať na mieru konkrétneho typu počítača, od zvyšku systému, ktorý tak mohol byť univerzálny, vďaka čomu sa stal faktickým štandardom.
MS-DOS, koncepciou inšpirovaný CP/M sa stal populárnym operačným systémom vybraným pre 16-bitové počítače IBM PC a jeho nasledovníci spravili z Microsoftu jednu z najúspešnejších svetových spoločností. V 80. rokoch Apple Computer Inc. opustili od svojej populárnej Apple II série mikropočítačov aby zaviedli Apple Macintosh počítač s novým inovovaným grafickým užívateľským rozhraním v Mac OS.
Predstavenie Intel 80386 CPU s 32-bitovou architektúrou a stránkovaním umožňovali osobným počítačom podporu operačných systémov s multitaskingom tak ako u predošlých minipočítačov a mainframov. Microsoft odpovedal na tento postup prijatím Dave Cutler-a, ktorý vyvinul VMS systém pre Digital Equipment Corporation. On mal viesť vývoj operačného systému Windows NT, ktorý slúžil ako základ operačných systémov Microsoftu. Steve Jobs, spoluzakladateľ Apple Inc., založil NeXT Computer Inc., ktoré vyvinulo unixový systém NEXTSTEP. Ten bol neskôr získaný spoločnosťou Apple Inc. a spolu s kódom od FreeBSD bol použitý ako jadro Mac OS X.
Minix, akademický vzdelávací nástroj, ktorý mohol bežať len na prvotných počítačoch, bol inšpiráciou pre ďalšiu reimplementáciu UNIX-u, nazývanú Linux. Prácu začal študent Linus Torvalds a v spolupráci s dobrovoľníkmi z internetu vyvinul jadro, ktoré bolo skombinované s nástrojmi z projektu GNU. The Berkeley Software Distribution, známe ako BSD, je UNIX-ová odvodenina distribuovaná Kalifornskou univerzitou v Berkeley. Voľne distribuovaná a prenosná na mnohé minipočítače nakoniec získala využitie aj na osobných počítačoch, hlavne ako FreeBSD, NetBSD a OpenBSD.
Niektoré operačné systémy.
Microsoft Windows.
Rodina operačných systémov firmy Microsoft vznikla ako rozšírenie staršieho operačného systému MS-DOS, ktorý bol používaný v IBM PC. Novodobé verzie sú založené na novšom jadre Windows NT, ktoré bolo pôvodne zamýšľané pre OS/2 a prenesené od VMS. Windows bežia na x86, x86-64 a Itániových procesoroch. Staršie verzie bežali taktiež na DEC Alpha, MIPS, Fairchild (neskôr Intergraph) Clipper a PowerPC architektúrach.
Dlhodobo patrí Microsoftu veľká časť celosvetového trhu s desktopovými operačnými systémami. Windows je tiež používaný na serveroch, pričom podporuje aplikácie ako webové či databázové servery. V uplynulých rokoch Microsoft investoval značnú časť peňazí na reklamu, výskum a vývoj aby ukázal, že Windows je schopný spustiť akúkoľvek aplikáciu, čo viedlo k výraznej akceptácii u mnohých firiem.
Rozšírenou verziou z rodiny MS Windows bol Windows XP, vydaný v októbri 2001.
V novembri 2006 prišla Windows Vista. Výraznou zmenou prešlo užívateľské rozhranie a vizuálny štýl nazývaný Windows Aero.
V roku 2009 Microsoft vydal novú verziu operačného systému pod názvom Windows 7, ktorý sa výrazne zmodernizoval oproti predchodcovi.
Nástupcom Windowsu 7 je Windows 8, ktorý bol vydaný v októbri 2012. O rok neskôr Microsoft vydal vylepšenú verziu Windows 8.1 a v roku 2015 Windows 10.
Plan 9.
Ken Thompson, Dennis Ritchie a Douglas McIlroy z Bell Labs navrhli a vyvinuli programovací jazyk C, v ktorom mal byť napísaný operačný systém Unix. Programátori z Bell Labs pokračovali ďalej a vyvinuli Plan 9 a Inferno. Plan 9 bol od začiatku navrhnutý ako sieťový OS a mal zabudovanú grafiku, na rozdiel od Unixu, ktorý pridal tieto grafické črty neskôr. Plan 9 je v súčasnosti vydávaný pod licenciou Lucent Public License. Inferno bol predaný Vita Nuova Holdings a vydaný pod GPL/MIT licenciou.
Unix a Unixové systémy.
Ken Thompson vyvinul jazyk B, hlavne založený na BCPL, ktoré potom použil na napísanie Unixu, založenom na skúsenostiach v projekte MULTICS. B bolo neskôr nahradené C, a Unix sa vyvinul do veľkej, komplexnej rodiny operačných systémov, ktorá ovplyvnila každý moderný operačný systém.
Rodina Unixových systémov je odvodená skupina operačných systémov, s niekoľkými hlavnými podkategóriami ako System V, BSD, a Linux. Názov UNIX je ochrannou známkou The Open Group, ktorá pod ňou vydá akýkoľvek systém, ktorý bude spĺňať jej definície. Termín unixový (unix-like) je bežne používaný na označenie veľkej skupiny operačných systémov, ktoré sa podobajú pôvodnému Unixu.
Unixové systémy bežia na širokej škále počítačových architektúr. Vo veľkom množstve sa využívajú ako servery v komerčnej sfére, ako aj pracovné stanice na akademickej pôde. Voľne šíriteľné Unixové varianty ako Red Hat alebo Novell sú používané prevažne spoločnosťami, ale aj domáci užívatelia ich môžu používať. Historicky, domáci užívatelia si inštalovali distribúcie sami, ale v roku 2007 Dell začal ponúkať Ubuntu na domácich počítačoch. Linux na desktopoch je populárny hlavne vo vývojárskej komunite.
Štatistiky trhu voľne dostupných operačných systémov sú zvyčajne nepresné, keďže väčšina voľných OS sa nekupuje a tak je ich odhadovaný počet nízky. Na druhej strane, štatistiky vychádzajúce z počtu stiahnutí operačných systémov sú často nafúknuté, keďže užívateľ si často stiahne aj viac systémov, vyskúša ich a až potom sa rozhodne, ktorý bude používať.
Niektoré Unixové varianty ako HP-UX od HP a AIX od IBM sú navrhnuté tak, aby fungovali len s určitým dodaným hardvérom. Iné, ako napríklad Solaris, môžu bežať na viacerých typoch hardvéru, vrátane x86 serverov a osobných počítačov. Mac OS X od Apple s hybridným jadrom odvodeným od NeXTSTEP, Mach a FreeBSD nahradil predchádzajúci (ne-unixový) Mac OS.
Unixová prevádzkyschopnosť bola hľadaná pri zakladaní štandardu POSIX. POSIX štandard môže byť aplikovaný na akomkoľvek OS, hoci bol pôvodne vytvorený pre rôzne Unixové varianty.
macOS.
macOS je rad patentovaných, graficky orientovaných operačných systémov, ktoré sú vyvinuté a predávané spoločnosťou Apple Inc a z ktorých najnovší je predinštalovaný na všetkých predávaných počítačoch Macintosh. Mac OS X je nasledovník pôvodného Mac OS, ktorý bol prvotným operačným systémom Applu od roku 1984. Na rozdiel od jeho predchodcu, Mac OS X je unixový operačný systém vybudovaný na technológii vyvinutej v NeXT počas druhej polovice 80. rokov, až kým Apple nekúpil danú spoločnosť v roku 1997.
Operačný systém bol prvýkrát vydaný v 1999 ako Mac OS X Server 1.0, s desktopovo orientovanou verziou (Mac OS X v10.0), ktorá nasledovala v marci 2001. Odvtedy bolo vydaných päť odlišných užívateľských aj serverových verzií, tá najnovšia je Mac OS X v10.5 a prvýkrát bola sprístupnená v októbri 2007. Vydania Mac OS X sú nazvané po mačkovitých šelmách, Mac OS X v10.5 býva označovaný ako Leopard.
Serverová verzia Mac OS X Server je architektonicky identická s desktopovou, s tým rozdielom, že zvyčajne beží na Macintosh serverovom hardvéri. Mac OS X Server zahrňuje správu pracovných skupín a administratívne softvérové nástroje, ktoré poskytujú zjednodušený prístup k sieťovým službám, vrátane mail transfer agenta, Samba serveru, LDAP serveru domain name serveru, a iných.
Embedded systémy.
Embedded (vložené, integrované) systémy používajú množstvo jednoúčelových operačných systémov. V niektorých prípadoch je „operačný systém“ softvér priamo spojený s aplikáciou, ktorej výstup je jednoliaty, jednoúčelový program. V najjednoduchších vložených systémoch nie je žiadny rozdiel medzi operačným systémom a aplikáciou. Systémy s určitými požiadavkami na čas sú známe ako real-time operačné systémy.
Operačné systémy ako VxWorks, eCos a Palm OS nesúvisia ani s Unixom ani s Windows. Windows CE používa podobné API ako desktopové windows, ale nemá s nimi nič spoločné v oblasti kódu. Tiež existuje niekoľko vložených BSD a Linuxových distribúcií.
Vývoj operačných systémov ako hobby.
Vývoj operačných systémov ako hobby má mnoho prívržencov. Napríklad OS Linux bol odvodený od takéhoto hobby projektu. Dizajn a implementácia operačného systému si vyžaduje veľa znalostí a odhodlania a toto označenie pokrýva všetko od základného „hello world“ pri bootovaní, až po plne funkčné jadro systému. Klasický príklad tohto je Minis operačný systém, ktorý bol navrhnutý na vzdelávacie účely ale bol často používaný „hobbystami“ predtým ako Linux získal svoju popularitu.
Ostatné.
Medzi staršie operačné systémy, ktoré sa ešte stále používajú, patria OS/2 od IBM, Mac OS od Applu, BeOS; XTS-300. Niektoré, ako AmigaOS a RISC OS sú stále vyvíjané ako menšinové platformy pre komunity nadšencov. OpenVMS, kedysi DEC, je stále aktívne vyvíjaný spoločnosťou Hewlett-Packard.
Výskum a vývoj nových operačných systémov pokračuje. GNU Hurd je navrhovaný tak, aby bol spätne kompatibilný s Unixom, ale s vylepšenou funkcionalitou a architektúrou mikrojadra.
Singularity je projekt výskumu Microsoftu, ktorý má priniesť operačný systém s lepšou ochranou pamäte založenou na .Net modeli.