Zhrnutie: Základy Operačných Systémov v Kocke
Operačný systém je mostom medzi hardvérom a používateľom. Jeho úlohou je spravovať zdroje, poskytovať prostredie pre aplikácie a zabezpečiť efektívne a bezpečné fungovanie počítača. Kľúčovými komponentami sú jadro, ktoré riadi základné operácie, a rôzne súborové systémy, ktoré organizujú dáta.
Článok podrobne rozoberá správu procesov, plánovacie algoritmy, riešenie deadlockov a synchronizáciu. Nevynecháva ani pamäťovú hierarchiu, špecifiká SSD diskov, organizáciu súborov pomocou B+ stromov a metódy žurnálovania pre ochranu dát. Pre študentov je to kompletný sprievodca základmi operačných systémov, ktorý im pomôže pochopiť komplexné témy od plánovania disku až po virtuálny súborový systém.
Základy Operačných Systémov: Definícia a Ciele
Základy operačných systémov sú kľúčové pre pochopenie fungovania každého počítača. Operačný systém (OS) je program alebo kolekcia programov, ktorá tvorí spojovaciu medzivrstvu medzi hardvérom, používateľmi a ich aplikačnými programami. Jeho hlavnými cieľmi sú maximálne využitie zdrojov počítača a jednoduchosť jeho používania.
Základné Role a Klasifikácia OS
Operačný systém plní dve základné role. Je správcom prostriedkov, efektívne a bezpečne prideľuje procesor, pamäť a periférie viacerým procesom. Zároveň je tvorcom prostredia pre používateľov a aplikácie, poskytuje štandardné rozhranie pre prenosnosť a abstrakcie pre zjednodušenie práce s hardvérom (napr. proces, súbor, virtuálna pamäť).
Klasifikácia OS sa delí podľa viacerých kritérií:
- Podľa účelu: univerzálne (Unix, Windows, Linux) a špecializované (Real-time, databázy, web, mobilné zariadenia ako Android, iOS).
- Podľa počtu užívateľov: jedno-užívateľské (MS-DOS) a viac-užívateľské.
- Podľa počtu súčasne bežiacich úloh: jedno-úlohové a viac-úlohové (multitasking).
Architektúra a Komponenty OS: Jadro a Rozhrania
Operačný systém spotrebováva zdroje ako pamäť a čas procesora. Zahŕňa jadro (kernel), systémové knižnice a utility, ako aj textové či grafické užívateľské rozhranie.
Jadro Operačného Systému a Privilegovaný Režim
Jadro OS (kernel) je najnižšou a najzákladnejšou časťou OS. Zavádza sa ako prvé, beží po celú dobu behu systému a naväzuje priamo na hardvér. Väčšinou beží v privilegovanom režime, kde môže vykonávať ľubovoľné operácie nad hardvérom počítača. Tento režim je nevyhnutný na oddelenie a ochranu používateľov a ich aplikácií od priameho prístupu k hardvéru.
Jadro zaisťuje základnú správu prostriedkov a tvorbu prostredia pre vyššie vrstvy OS a používateľské aplikácie, pričom jeho služby sú výsledkom kompromisu medzi efektivitou, bezpečnosťou a flexibilitou.
Systémové Volania a Rozhrania OS
Systémové a používateľské programy žiadajú jadro o služby prostredníctvom systémových volaní (system call), ktoré spôsobujú kontrolovaný prechod do režimu jadra. Rozhrania zahŕňajú:
- Kernel interface: priame volanie jadra špecializovanou inštrukciou.
- Library interface: volanie funkcií zo systémových knižníc, ktoré môžu, ale nemusia viesť k volaniu služieb jadra.
Typy Jadier Operačných Systémov
Jadrá OS sa delia na rôzne typy, každý s vlastnými výhodami a nevýhodami:
- Monolitické jadrá: Všetky subsystémy bežia v privilegovanom režime a v pamäťovom priestore jadra (kernel space). Sú efektívne pri správnej implementácii, ale majú malú flexibilitu a sú náchylnejšie na napadnutie.
- Monolitické jadrá s modulárnou štruktúrou: Vylepšená koncepcia umožňujúca zavádzať a odstraňovať subsystémy jadra v podobe modulov za behu (napr. FreeBSD, Linux).
- Mikrojadrá: Minimalizovaný rozsah jadra (jednoduché rozhranie a abstrakcie) s malým počtom služieb. Väčšina služieb je implementovaná mimo mikrojadro v tzv. serveroch. Poskytujú vysokú flexibilitu a zabezpečenie, no majú vyššiu réžiu (napr. Mach, QNX, L4).
- Hybridné jadrá: Mikrojadro rozšírené o kód, ktorý by mohol byť implementovaný ako server, ale je tesnejšie previazaný s mikrojadrom pre nižšiu réžiu (napr. Mac OS, Windows NT).
- Exojadrá: Experimentálne jadrá s veľmi nízkym rozhraním, zamerané na bezpečné zdieľanie prostriedkov, doplnené o knižnice. Nepresadili sa v praxi.
Správa Procesov v Operačnom Systéme
Správa procesov je jednou z kľúčových úloh operačného systému. Zahŕňa dispatcher (prepínanie kontextu), plánovač (prideľuje CPU procesom), správu pamäti (prideľuje pamäť) a medziprocesovú komunikáciu (IPC).
Proces, Stavy Procesov a Démoni
Proces je bežiaci program definovaný identifikátorom (PID), stavom jeho plánovania a programom, ktorým je riadený. Procesy prechádzajú rôznymi stavmi:
new(neinicializovaný)ready(nemá CPU)running(používa CPU)waiting(čakajúci na udalosť)terminated(ukončený alebo pozastavený).
Démon je dlhodobo spustený proces, ktorý nie je v priamom kontakte s používateľom. Jeho úlohou je vyčkávať na udalosť, obslúžiť ju a zaisťovať rôzne úlohy bez nutnosti interakcie s používateľom.
Plánovanie Procesov a Plánovacie Algoritmy
Plánovanie procesov môže byť nepreemptívne (proces sa vzdá CPU sám) alebo preemptívne (CPU môže byť procesu odobraté na základe prerušenia, napr. časovačom). Medzi základné plánovacie algoritmy patria:
- FCFS (First Come, First Served): Nepreemptívny, FIFO, procesor sa prideľuje prvému procesu vo fronte.
- ROUND-ROBIN: Preemptívna obdoba FCFS, každý proces má pridelené časové kvantum, po ktorého vypršaní sa mu odoberie procesor.
- SJF (Shortest Job First): Nepreemptívny, prideľuje procesor procesu, ktorý požaduje najkratší čas. Hrozí starnutie (starvation).
- SRT (Shortest Remaining Time): Preemptívna obdoba SJF.
- Viacúrovňové plánovanie: Procesy sú rozdelené do skupín, pričom každá skupina môže mať iný plánovací algoritmus. Hrozí starnutie nízkoúrovňových procesov.
- Viacúrovňové plánovanie + spätná väzba: Nový proces má najvyššiu prioritu, ktorá postupne klesá, až kým sa nedostane na najnižšiu úroveň Round-Robin plánovania.
- CFS (Completely Fair Scheduler): Snaží sa každému procesu prideliť percento strojového času (podľa priorít) a vyberá proces s najmenším stráveným časom, pričom procesy drží v Red-Black strome.
Inverzia Priorít a Synchronizácia Procesov
Inverzia priorít je problém, kedy nízko prioritný proces drží zdroj, ktorý potrebuje viac prioritný proces. Riešenia zahŕňajú:
- Priority ceiling: Procesy v kritickej sekcii majú najvyššiu prioritu.
- Priority inheritance: Blokujúci proces dedí prioritu vyššie prioritného blokovaného procesu.
- Zákaz prerušenia: Po dobu behu v kritickej sekcii (v jednoprocesorových systémoch).
Synchronizácia procesov je nevyhnutná, pretože súčasný prístup niekoľkých paralelných procesov k zdieľaným zdrojom môže viesť k časovo závislým chybám (race condition).
Kritická Sekcia a Jej Problémy
Kritická sekcia je úsek kódu, v ktorom riadiaci program pristupuje k zdieľaným zdrojom. Vykonávanie jedného procesu v kritickej sekcii vylučuje súčasné vykonávanie ostatnými procesmi. Problém kritickej sekcie vyžaduje:
- Vzájomné vylúčenie: Najviac jeden proces je v danom okamihu v danej množine zdieľaných KS.
- Dostupnosť KS: Ak je KS voľná, proces nemôže neobmedzene čakať na prístup.
Problémy vznikajúce v kritickej sekcii zahŕňajú:
- Data race: Dva prístupy k zdroju s výlučným prístupom z dvoch procesov bez synchronizácie (aspoň jeden prístup je pre zápis).
- Blokovanie (blocking): Proces žiada o vstup do KS, musí čakať, hoci je KS voľná a žiaden iný proces o ňu nežiada.
- Starnutie/hladovanie (starvation): Proces čaká na podmienku, ktorá nemusí nastať.
- Livelock: Procesy bežia, ale vykonávajú len obmedzený úsek kódu, v ktorom opakovane žiadajú o určitý zdroj (aktívne čakanie).
Semafóry a Monitory
Semafóry sú synchronizačné nástroje, ktoré nevyžadujú aktívne čakanie. Sú to celočíselné premenné prístupné dvomi atomickými operáciami: Lock (zamknutie) a Unlock (odomknutie). Semafór je zamknutý, ak jeho hodnota S <= 0, a odomknutý, ak S > 0. Používajú sa aj read-write zámky (pre viacnásobné čítanie), reentrantné zámky (proces môže rovnaký zámok zamknúť opakovane) a mutexy (binárne semafóry, odomknuteľné iba procesmi, ktoré ich zamkli).
Monitory sú vysokoúrovňové synchronizačné prostriedky, ktoré zapuzdrujú dáta a majú definované operácie. Len jeden z procesov môže vykonávať operáciu nad chránenými dátami v danom okamihu.
Deadlock: Uviaznutie Procesov
Uviaznutie (Deadlock) je situácia, kedy každý proces z určitej neprázdnej množiny procesov je pozastavený a čaká na uvoľnenie zdroja vlastneného iným procesom z rovnakej množiny. Pre vznik deadlocku sú nutné štyri Coffmanove podmienky:
- Vzájomné vylúčenie (mutex) pri prístupe k zdieľaným prostriedkom.
- Procesy vlastnia aspoň jeden zdroj a čakajú na ďalší (
Hold and Wait). - Zdieľané zdroje sú uvoľňované až po úplnom dokončení ich použitia (
No Preemption). - Vzniká cyklická závislosť na seba čakajúcich procesov.
Prevencia deadlocku napáda niektorú z týchto podmienok (napr. proces smie žiadať o prostriedky, iba ak žiadne nevlastní; prideľovanie prostriedkov v číselnom poradí). Vyhýbanie sa deadlocku vyžaduje, aby procesy vopred deklarovali informácie o spôsobe, akým budú zdroje využívať. OS vyhovie žiadosti o pridelenie prostriedkov iba vtedy, ak zostane v bezpečnom stave (Bankérov algoritmus).
Detekcia deadlocku spočíva v hľadaní kružníc v orientovanom grafe vzťahov procesov a zdrojov. Ak sa cyklus nájde, je potrebné ho riešiť zotavením, napríklad odobraním prostriedkov, rollbackom (anulácia nedokončených operácií) alebo reštartom/ukončením procesov.
Hierarchia Pamätí a Správa Diskov
Moderné počítače využívajú hierarchiu pamätí pre optimalizáciu prístupu k dátam. Zahŕňa primárnu pamäť (Registre, L1-L3 cache, RAM), sekundárnu pamäť (pevné disky, SSD) a terciárnu pamäť (CD, DVD).
Uloženie Dát na Pevných Diskoch
Hardvérové komponenty pevného disku zahŕňajú hlavu (čítaciu a zápisovú), platňu (platter), stopu (track) tvorenú sektormi (najmenšie oblasti, 512B) a cylinder (súbor nad sebou ležiacich stôp). Dôležitými parametrami sú kapacita, priemerná doba prístupu, prenosová rýchlosť a otáčky.
SSD Disky a Ich Špecifiká
SSD disky sú založené na nevolatilných NAND flash pamätiach. Ich výhody sú náhodný prístup, rýchly nábeh, vyššie prenosové rýchlosti, tichá prevádzka, mechanická/magnetická odolnosť a nižšia spotreba. Medzi nevýhody patrí vyššia cena, obmedzený počet prepisov a potenciálne komplikácie so zabezpečením.
Problematika zápisu u SSD: SSD sú organizované do stránok (4KiB), ktoré sú zoskupené do blokov (128 stránok). Prázdne stránky sa dajú zapisovať jednotlivo, ale pre prepis je nutné načítať celý blok do pamäte, vykonať modifikáciu a následne blok vymazať a znova zapísať na disk. Minimalizácia tohto problému sa dosahuje prebytočnými stránkami (over-provisioning) a príkazom TRIM, ktorý súborovému systému oznámi, ktoré stránky nie sú používané a môžu byť označené za prázdne.
Pokročilé Diskové Systémy: RAID
RAID (Redundant Array of Independent Discs) je technológia, ktorá spája viac diskov rovnakej kapacity do jedného logického celku, pričom získané vlastnosti závisia od typu RAID poľa:
- RAID0: Viac diskov tvorí kapacitu jedného veľkého disku, bez ochrany dát.
- RAID1: Zrkadlenie, obsah sa súčasne zaznamenáva na dva disky pre redundanciu.
- RAID2: Dáta sú uložené po bitoch medzi diskami a zabezpečené pomocou Hammingovho kódu na zvláštnom disku.
- RAID3: N+1 diskov, N diskov ukladá dáta, posledný disk paritu.
- RAID4: Dáta uložené po blokoch na každom disku, parita na zvláštnom disku.
- RAID5: Ako RAID4, ale parita je rozložená na všetkých diskoch striedavo.
- RAID6: Ako RAID5, ale parita je uložená dvakrát, vyrovná sa aj so stratou dvoch diskov.
Plánovanie Prístupu na Disk
Plánovanie prístupu na disk je proces, pri ktorom sa prichádzajúce I/O operácie ukladajú do vyrovnávacej pamäte a ich poradie sa mení s cieľom minimalizovať réžiu diskových operácií. Typickým príkladom je výťahový algoritmus, ktorý pohybuje hlavičkami od stredu k okraju platní a naspäť, pričom I/O požiadavky vybavuje v poradí zodpovedajúcom pohybu hlavičiek. Heuristiky zahŕňajú Circular SCAN, LOOK, C-LOOK, združovanie, priority, odkladanie a časové limity operácií.
Súborové Systémy a Organizácia Súborov
Správa súborov je neoddeliteľnou súčasťou operačného systému. Súbor je kolekcia záznamov slúžiaca ako základná jednotka pre ukladanie dát na vonkajších pamäťových médiách. Súborový systém je súhrn pravidiel definujúcich správanie a vlastnosti súborov, ich logickú organizáciu (do adresárov) a spôsob uloženia dát.
Atribúty Súboru a Adresáre
Každý súbor má svoje atribúty, ako sú meno, veľkosť, časové informácie (vytvorenie/modifikácia), identifikácia vlastníka, oprávnenia prístupu a umiestnenie v adresári.
Adresár je základná organizačná jednotka pre hierarchickú organizáciu súborov. Súbory sa odkazujú pomocou názvu a názvu ich nadradených adresárov, oddelených lomítkom (/). Koreňový adresár je len jeden a nemá nadradený adresár. Aktuálny adresár sa označuje . a nadradený adresár ... Cesta je sekvencia názvov nadradených adresárov vedúcich k súboru.
Operácie nad Súborom
Operačný systém poskytuje rôzne operácie pre prácu so súbormi:
- Vytvorenie súboru: Alokácia priestoru a vytvorenie položky s jeho menom v adresári.
- Čítanie dát: Ak sú dáta vo vyrovnávacej pamäti, skopírujú sa. Inak prebehne fyzické čítanie z disku.
- Zápis dát: Pomalšia operácia, vyžaduje načítanie, modifikáciu a následný zápis dát.
- Zmazanie súboru: Zrušenie záznamu v adresári a uvoľnenie dátových blokov.
Uloženie Súboru na Disku a Fragmentácia
Alokačný blok je skupina pevného počtu sektorov, logicky aj fyzicky nasledujúcich za sebou, a je to najmenšia jednotka, ktorú OS číta/zapisuje. Problémom je externá fragmentácia (voľné oblasti sú príliš malé, dáta súboru sú uložené nespojito) a interná fragmentácia (nevyužitie miesta v poslednom pridelenom alokačnom bloku). Minimalizácia sa dosahuje predalokáciou alebo defragmentáciou.
Virtuálny Súborový Systém (VFS)
Virtuálny súborový systém (VFS) je vrstva, ktorá zastrešuje všetky použité súborové systémy, čo umožňuje s nimi pracovať jednotným a abstraktným spôsobom. Oddeľuje vyššie vrstvy OS od konkrétnej implementácie operácií na jednotlivých súborových systémoch a pre popis súborov používa rozšírené i-uzly (tzv. v-uzly).
Žurnálovanie a Organizácia Súborov: B+ Stromy
Žurnálovanie slúži na záznam modifikovateľných metadát pred ich zápisom na disk, čím zabezpečuje spoľahlivejší a rýchlejší návrat do konzistentného stavu po chybách. Je implementované ako cyklický prepisovaný buffer v špeciálnej oblasti disku, pričom žurnálované operácie sú atomické.
Pre organizáciu súborov sa často používajú B+ stromy. Vkladanie prebieha na listovej úrovni (pri preplnení sa list rozštiepi). Rušenie začína od listovej úrovne (pri nenaplnení min. kapacity sa uzly pokúsia prerozdeliť, alebo sa spoja, ak klesne naplnenosť susedných uzlov na polovicu).
Často Kladené Otázky (FAQ)
Čo je hlavná úloha operačného systému?
Hlavnou úlohou operačného systému je spravovať zdroje počítača (procesor, pamäť, periférie) a poskytovať štandardizované prostredie pre spúšťanie používateľských aplikácií, pričom zabezpečuje efektívnu a bezpečnú prevádzku.
Ako sa líši monolitické jadro od mikrojadra?
Monolitické jadro obsahuje všetky subsystémy v jedinom pamäťovom priestore a privilegovanom režime, je efektívne, ale menej flexibilné. Mikrojadro má minimalizovaný rozsah a väčšina služieb je implementovaná mimo neho v tzv. serveroch, čo zvyšuje flexibilitu a bezpečnosť, ale za cenu vyššej réžie.
Prečo je synchronizácia procesov dôležitá?
Synchronizácia procesov je kľúčová, aby sa predišlo časovo závislým chybám (race condition), ktoré vznikajú, keď viac paralelných procesov pristupuje k zdieľaným zdrojom bez koordinácie, čo môže viesť k nekonzistenciám dát. Zabezpečuje, že kritické sekcie kódu sú vykonávané výlučne jedným procesom v danom čase.
Aké sú výhody a nevýhody SSD diskov?
SSD disky ponúkajú výhody ako rýchlejší náhodný prístup, vyššie prenosové rýchlosti, tichú prevádzku a mechanickú odolnosť. Ich nevýhody zahŕňajú vyššiu cenu a obmedzený počet prepisov (životnosť), čo je riešené technológiami ako over-provisioning a príkaz TRIM.
Čo je to deadlock a ako sa mu dá predchádzať?
Deadlock je situácia, kedy skupina procesov navzájom čaká na zdroje, ktoré vlastnia iné procesy v skupine, a žiaden z nich nemôže pokračovať. Predchádzať sa mu dá napadnutím jednej zo štyroch Coffmanových podmienok, napríklad zabezpečením, že proces nepožiada o zdroje, ak už nejaké vlastní, alebo prideľovaním zdrojov v určenom poradí, aby sa predišlo cyklickým závislostiam.