1/62
OS, Tannenbaum
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Vymenujte hlavné rysy Unixu a uveďte, akým spôsobom inšpiroval ďalšie operačné systémy.
Unix vychádza z projektu MULTICS, s dôrazom na jednoduchosť a malý počet špecializovaných utilít, ktoré sa dajú reťaziť.
Zaviedol koncepciu „všetko je súbor“ a silnú filozofiu pipeline (prepájanie procesov cez vstup/výstup).
Inšpiroval Linux, BSD a ďalšie systémy, ktoré prebrali model jadro + shell a podobné spôsoby práce so súbormi, procesmi či právami.
Napíšte, čo je shell, akú funkciu plní v OS a porovnajte aspoň dva druhy shell-u.
Shell je príkazový interpret, ktorý sprostredkúva komunikáciu medzi používateľom a jadrom OS.
Umožňuje spúšťať programy, presmerovávať vstup/výstup a písať skripty.
Napríklad: bash (prednastavený v mnohých Linux distribúciách). Líšia sa syntaktickými rozšíreniami a možnosťami konfigurácie.
Opíšte, čo je shellový skript, aké možnosti poskytuje a uveďte príklady využitia.
Skript je textový súbor s príkazmi pre konkrétny interpret (napr. bash).
Umožňuje automatizovať opakované úlohy, reťaziť rôzne nástroje a logicky riadiť vykonávanie (podmienky, cykly).
Príklady využitia: zálohovanie súborov, nasadzovanie aplikácií, spracovanie logov či testovanie softvéru.
Vymenujte základné operácie so súbormi a vysvetlite, ako súbor v OS abstrahuje fyzické uloženie dát.
Základné operácie: open (otvorenie súboru), read (čítanie), write (zápis) a close (zatvorenie).
OS cez súbory skrýva detaily fyzického uloženia (napr. rozloženie na disku), takže používateľ pracuje s jednoduchým dátovým tokom bajtov.
Uveďte, čo je obyčajný (regular) súbor, ako je organizovaný a prečo OS nezasahuje do jeho vnútornej štruktúry.
Obyčajný súbor je sekvencia bajtov bez špeciálnej vnútornej štruktúry z pohľadu OS.
Organizáciu (formát, kódovanie) si určuje až aplikácia, ktorá súbor spracúva.
OS len poskytuje mechanizmus na čítanie/zápis; neinterpretuje obsah.
Vysvetlite, ako je v Unix-like systémoch riešená hierarchická štruktúra adresárov a aké informácie adresár obsahuje.
Systém používa stromovú hierarchiu s jedným koreňom (root, „/“).
Každý adresár obsahuje záznamy o menách a inodoch súborov/podadresárov.
Týmto spôsobom môžu adresáre vytvárať vetvenie (podadresáre), čím vzniká celková štruktúra systému súborov.
Opíšte podstatu symbolických liniek a porovnajte ich správanie s hard linkami. Čo sa stane, ak je cieľ symbolickej linky zmazaný?
Symbolická linka je špeciálny súbor, ktorý obsahuje cestu k cieľovému súboru/adresáru.
Ak je cieľ zmazaný, symbolická linka sa stane neplatnou („zlomenou“).
Hard link je iný záznam na rovnaké dáta (rovnaký inode), kým symbolický link odkazuje menom na iný súbor.
Napíšte, z akých hlavných častí sa skladá moderný CPU a akými optimalizačnými technikami disponuje.
CPU má jedno alebo viac jadier (cores), každé s aritmeticko-logickou jednotkou (ALU) a riadiacou jednotkou.
Obsahuje cache pamäť (L1, L2, prípadne L3), registre a riadi pipeline.
Moderné CPU umožňujú out-of-order vykonávanie, predikciu skokov a ďalšie optimalizácie zvyšujúce výkon.
Vymenujte príklady základných typov inštrukcií a opíšte, ako procesor postupuje pri ich vykonávaní.
Typy inštrukcií: aritmetické (sčítanie, násobenie), logické (AND, OR), presunové (LOAD, STORE), riadiace (skoky, volanie funkcie).
Procesor inštrukciu načíta (fetch), dekóduje (decode), vykoná (execute) a prípadne zapíše výsledok (write back).
Postup sa opakuje v tzv. inštrukčnom cykle.
Vysvetlite, čo znamená atomická inštrukcia a prečo je dôležitá pri synchronizácii.
Atomická inštrukcia sa vykoná celá „naraz“, bez možnosti prerušenia či zásahu iného vlákna.
To zaručuje, že pri čítaní a zápise zdieľaných dát nedôjde k nekonzistentnému stavu.
Je kľúčová pri implementácii synchronizačných primitív (mutex, semafor).
Opíšte mechanizmus prerušenia, ako ho CPU spracuje a ako sa systém vráti k pôvodnému programu.
Pri prerušení CPU preruší bežiaci kód, uloží kontext (registri, čítač inštrukcií) a preskočí do obslužnej rutiny (interrupt handler).
Handler obslúži udalosť (napr. I/O) a potom sa kontext obnoví, aby mohla pôvodná úloha pokračovať.
Tento prístup zabezpečuje rýchlu reakciu na asynchrónne udalosti.
Vymenujte rozdiel medzi programom a procesom. Prečo považujeme program za „pasívnu“ a proces za „aktívnu“ entitu?
Program je len súbor s inštrukciami (kód a dáta) – pasívna forma uložená napr. na disku.
Proces je bežiaci program v pamäti, ktorý má vlastný kontext (registri, pamäťový priestor) – aktívna entita.
Z programu môže vzniknúť viac procesov (napr. keď spustíte ten istý program viackrát).
Vysvetlite základné vlastnosti procesu a aké výhody prináša ich izolácia.
Proces má vlastný adresný priestor (kód, dáta, zásobník), sadu registrov a vlastnú sadu otvorených súborov.
Izolácia zabezpečuje, že chybný alebo škodlivý proces neprepisuje pamäť iného procesu.
Tým sa zvyšuje stabilita a bezpečnosť systému.
Opíšte, aké sú požiadavky na správu pamäte v modernom OS a ako sa zabezpečuje, aby sa procesy vzájomne neprepisovali.
OS musí prideľovať pamäť pre procesy a zároveň chrániť ich priestory pred vzájomným zásahom.
Využíva sa hardvérová podpora (MMU, tabuľky stránok) na mapovanie virtuálnych adries na fyzické.
Takto každý proces vidí len „svoju“ pamäť a nemôže priamo pristupovať k iným adresným priestorom.
Uveďte, ako sa využíva spoločná pamäť na komunikáciu medzi procesmi. Prečo je potrebná synchronizácia pri zdieľaní?
Spoločná pamäť poskytne viacerým procesom rovnakú oblasť RAM, kde môžu čítať či zapisovať dáta.
Je to rýchla forma IPC, keďže sa nevyžaduje kopírovanie medzi procesmi.
Synchronizácia (napr. semafor, mutex) je nutná, aby sa predišlo kolíziám pri súbežnom prístupe.
Napíšte, prečo je synchronizácia procesov/vlákien potrebná a vymenujte aspoň tri synchronizačné mechanizmy.
Synchronizácia zabraňuje „race conditions“, keď vlákna/procesy pristupujú k zdieľaným zdrojom bez koordinácie.
Mechanizmy: mutext (vzájomné vylučovanie), semafory (down/up), monitory (synchronized bloky), prípadne podmienené premenné (condition variables).
Vysvetlite, čo sa rozumie pod pojmom „prostriedok“ v OS a akým spôsobom OS zabezpečuje jeho manažment.
Prostriedok je akákoľvek časť systému, ktorú proces potrebuje: CPU čas, pamäť, súbory, I/O zariadenia.
OS prideľuje prostriedky tak, aby sa zabezpečila fair-play (plánovanie CPU, kvóty pamäte, zamykanie súborov).
Po uvoľnení prostriedku ho OS pridelí inému čakajúcemu procesu.
Uveďte, čo znamená vzájomné vylučovanie a prečo je dôležité. Opíšte situácie, pri ktorých by mohla nastať race condition.
Vzájomné vylučovanie zaručí, že k zdieľanému zdroju (kritickej oblasti) pristupuje vždy len jeden proces/vlákno naraz.
Dôležité je to pri zápise do spoločnej premennej, súboru či do zdieľaného zariadenia, aby sa dáta nepoškodili.
Race condition vzniká, ak dve vlákna zapisujú do rovnakej premennej súčasne bez koordinácie.
Vymenujte, čo je kritická oblasť a prečo musí byť vykonávanie kódu v nej chránené. Uveďte príklad z praxe.
Kritická oblasť je časť kódu, v ktorej sa pristupuje k zdieľanému zdroju (napr. globálna premená, súbor).
Musí byť chránená, lebo súbežný prístup viacerých procesov by mohol spôsobiť neplatné alebo nekonzistentné dáta.
Príklad: Inkrementovanie globálneho počítadla, zápis do databázy, tlač na spoločnú tlačiareň.
Opíšte štyri základné požiadavky na algoritmus riešenia kritickej oblasti.
Do kritickej oblasti (KO) môže v danom čase vstúpiť len jeden proces.
Proces, ktorý je mimo KO, neblokuje iné procesy, ak chcú vstúpiť do KO.
Žiadny proces nesmie čakať nekonečne dlho (žiadne deadlocky či neobmedzené čakanie).
Správnosť nesmie byť narušená rozdielnou rýchlosťou CPU alebo počtom CPU.
Vysvetlite, akú úlohu plnia vstupný a výstupný protokol pri vstupe do KO a výstupe z nej.
Vstupný protokol vykoná prípravu a rozhodne, či proces môže vstúpiť do KO (napr. získa zámok, skontroluje semafor).
Výstupný protokol pri odchode z KO uvoľní zdroj (napr. odomkne mutex, zvýši semafor), aby iný proces mohol vstúpiť.
Spoločne zaisťujú, že do KO vždy narazí len jeden proces.
Vymenujte príklady špeciálnych inštrukcií (Test-and-Set, XCHG) a ukážte, ako sa dajú využiť pri implementácii synchronizačných primitív.
Test-and-Set (TAS) a XCHG (výmena hodnôt) sa vykonávajú atomicky na úrovni CPU.
Využívajú sa na vytvorenie základných zámkov (spinlock) alebo pri implementácii semaforov, mutexov.
Vďaka týmto inštrukciám sa zaručí, že kontrola a nastavenie premennej prebehne ako jeden nedeliteľný krok.
Opíšte, ako OS vytvára a ukončuje procesy, ako ich plánuje (scheduler) a aké stavy procesu sa rozlišujú.
Proces sa vytvára napr. volaním fork() (v Unix/Linux) alebo iným API. Ukončuje sa volaním exit() alebo po dokončení programu.
Scheduler rozhoduje, ktorý proces dostane CPU (plánovacie algoritmy: napr. Round Robin, Priority Scheduling).
Stavy procesu obvykle: running (beží), ready (pripravený bežať), blocked (čaká na udalosť), terminated (ukončený).
Vymenujte základné úlohy pamäťového manažmentu (prideľovanie blokov, stránkovanie, swapovanie). Čo je to page fault?
Pamäťový manažment prideľuje RAM procesom, stará sa o mapovanie virtuálnych adries na fyzické (stránkovanie) a rieši nedostatok pamäte presunom na disk (swapovanie).
Page fault je prerušenie vzniknuté, keď proces pristupuje k stránke, ktorá nie je momentálne v pamäti. OS musí túto stránku načítať (alebo vybrať obeť) a potom pokračuje.
Uveďte, aké operácie spadajú do správy súborov a ako OS zabezpečuje prístupové práva a ochranu súborov.
Operácie: vytváranie, mazanie, otváranie, zatváranie, čítanie, zápis, nastavovanie prístupových práv.
OS spravuje hierarchiu adresárov, sleduje inody (v Unix systémoch) a používa systém práv (r/w/x) s rozlíšením používateľ, skupina a ostatní.
Prístupové práva bránia neoprávnenému čítaniu/zápisu.
Napíšte, akým spôsobom OS abstrahuje fyzické zariadenia (device drivers) a ako rieši prerušenia a prideľovanie I/O zariadení procesom.
OS používa ovládače (drivers), ktoré tvoria rozhranie medzi konkrétnym hardvérom a univerzálnou obsluhou v OS (napr. súborové rozhranie).
Prerušeniami (interrupty) zariadenie signalizuje dokončenie operácie, OS to spracuje v handleri a následne prebudí blokovaný proces.
Prideľovanie I/O (napr. fronty na disk) zaisťuje, aby sa viac procesov mohlo férovo deliť o zariadenie.
Vysvetlite, aké mechanizmy OS využíva na autentifikáciu a autorizáciu. Akú úlohu hrajú skupiny a prístupové tokeny?
Autentifikácia prebieha napr. heslom, kľúčmi či iným faktorom pri prihlasovaní, OS potom prideľuje užívateľovi identifikátor (UID).
Autorizácia určuje, k čomu má používateľ prístup – využívajú sa prístupové práva k súborom a procesom.
Skupiny (GID) a prístupové tokeny (napr. v systémoch Windows) zjednodušujú správu viacerých používateľov s podobnými právami.
Opíšte princíp semaforu (hodnota, down/P, up/V) a uveďte, prečo je semafor vhodný nástroj pre vzájomné vylučovanie.
Semafor je premená, ktorá udržuje celé číslo, zvyčajne nezáporné.
• down() (P) – ak je hodnota > 0, zníži ju a pustí proces ďalej, inak proces blokuje,
• up() (V) – zvýši hodnotu, prípadne odblokuje čakajúci proces.
Binárny semafor (0/1) funguje podobne ako mutex a umožňuje vzájomné vylúčenie do kritickej oblasti.
Vysvetlite, ako presne fungujú operácie init, down (P) a up (V). Prečo musia byť vykonané atomicky?
init(sem, hodnota): nastaví počiatočnú hodnotu semaforu,
down(sem) (P): ak semafor > 0, dekrementuje; ak je 0, proces čaká,
up(sem) (V): inkrementuje a ak niekto čaká, odblokuje ho.
Vykonanie „atomicky“ zabraňuje tomu, aby došlo k nežiaducemu predbiehaniu (race condition) pri kontrole a úprave hodnoty semaforu.
Uveďte, kedy môže down() blokovať a čo sa deje pri up(), ak existujú čakajúce procesy. Aký je vplyv na plánovanie?
down() blokuje proces vtedy, keď je hodnota semaforu 0 – proces čaká, kým iný proces nevykoná up().
up() zvýši hodnotu a ak bol nejaký proces blokovaný, prebudí ho a ten sa zaradí do fronty pripravených procesov (ready queue).
Plánovač môže následne rozhodnúť, kedy sa prebudený proces dostane k CPU.
Napíšte, čo vyjadruje invariant semaforu (počet vykonaných up() ≥ počet vykonaných down()) a aký praktický význam to má.
Vyjadruje, že nemôže byť ukončených viac down() ako up() – inými slovami, semafor nemôže „ísť do mínusu“.
Prakticky to znamená, že procesy nemôžu do kritickej oblasti vstúpiť viac ráz, než koľko je povolené (hodnota semaforu).
Zaručuje konzistentné správanie a kontrolu počtu zdrojov.
Vysvetlite rozdiel medzi binárnym semaforom a všeobecným (counting) semaforom a uveďte príklad, kedy je counting semafor výhodný.
Binárny semafor drží hodnotu 0 alebo 1, vhodný na klasické vzájomné vylúčenie (mutex).
Všeobecný (counting) semafor môže mať hodnotu vyššiu ako 1, vďaka čomu vie dovoliť vstup viacerým procesom naraz.
Príklad: Máme 5 rovnakých zariadení (tlačiarne) a semafor inicializovaný na 5, kedy môže až 5 procesov tlačiť súčasne.
Opíšte princíp binárneho semaforu. V čom sa správa podobne ako mutex a kedy ho používať?
Binárny semafor (0/1) dovoľuje vstup len jednému procesu k zdroju.
Správa sa podobne ako mutex (ak je semafor = 1, môžeš vstúpiť; ak je 0, čakáš).
Používa sa, keď je zdroj len jeden (napr. jeden súbor, ktorý chceme zapísať) alebo pre kritickú oblasť s jediným prístupom.
Vymenujte, ako sa určuje iniciálna hodnota semaforu pri rôznych situáciách (jediný zdroj vs. viacero zdrojov).
Pre binárny semafor (mutex) je najčastejšie iniciálna hodnota 1 – znamená, že zdroj je voľný.
Pre všeobecný semafor závisí hodnota od počtu rovnakých zdrojov (napr. 5 tlačiarní = iniciálna hodnota 5).
Ak je semafor určený napr. na synchronizáciu udalostí (proces čaká, kým iný nedokončí), môže sa začínať hodnotou 0.
Opíšte, ako funguje monitor na vysokej úrovni (synchronized bloky, metódy). V ktorých programovacích jazykoch sa používa?
Monitor je abstrakcia, ktorá kombinuje dáta a procedúry prístupu k nim, pričom len jeden proces môže byť naraz v monitore.
V jazykoch ako Java existujú synchronized metódy/bloky, kde kompilátor a behové prostredie zaisťujú vzájomné vylúčenie.
Monitory zjednodušujú správu zdieľaných dát, lebo riešia uzamykanie priamo v konštrukcii jazyka.
Uveďte, akým spôsobom multiprogramovanie zvyšuje vyťaženosť CPU a aké faktory ovplyvňujú jeho efektivitu.
Pri multiprogramovaní je v pamäti naraz viac procesov, takže keď jeden čaká na I/O, CPU môže vykonávať iný proces.
Zvyšuje sa tým vyťaženosť CPU a celková priepustnosť.
Efektivitu ovplyvňujú plánovacie algoritmy, rýchlosť I/O, veľkosť pamäte a počet procesov.
Napíšte, čo znamená multiprocessing (viacero CPU/jadier) a porovnajte ho s multiprogramovaním a multitaskingom.
Multiprocessing znamená, že systém má viac fyzických procesorov alebo jadier, ktoré môžu vykonávať viaceré inštrukcie naraz.
Oproti multiprogramovaniu (viac procesov v pamäti, ktoré sa striedajú na jednom CPU) dochádza k skutočnému paralelnému behu.
Multitasking je širší pojem – môže zahŕňať aj jedno jadro s rýchlym prepínaním (time-sharing).
Vysvetlite, ako OS dosahuje zdanlivo súbežný beh viacerých úloh (procesov, vlákien) na jedinom CPU.
OS používa plánovač (scheduler), ktorý prideľuje každému procesu/vlákno časový úsek (time slice).
CPU sa tak rýchlo prepína medzi úlohami, až to vytvára ilúziu paralelizmu.
Vhodným plánovaním sa zvyšuje dojem plynulosti a odozvy systému.
Opíšte, prečo sa v moderných aplikáciách využíva viacvláknovosť. Aké výhody a riziká prináša?
Viacvláknovosť umožňuje rozdeliť úlohy (napr. užívateľské rozhranie, spracovanie dát, sieťovú komunikáciu) do paralelne bežiacich vlákien.
Výhody: lepšie využitie CPU (najmä na viacjadrových systémoch), responsivita aplikácie, jednoduchšia štruktúra kódu pre súbežné aktivity.
Riziká: nutnosť synchronizácie zdieľaných dát (riziko deadlockov, race conditions), zložitejšie ladenie a potenciálna vyššia spotreba zdrojov.
Uveďte, aký je cieľ swapovania. Prečo a kedy sa OS uchyľuje k presunu celých procesov alebo segmentov na disk?
Cieľom je uvoľniť RAM, ak je preťažená, presunutím neaktívnych procesov (alebo ich častí) na disk.
Ak proces dlhšie čaká (napr. na I/O) alebo ak je pamäť veľmi zaplnená, OS ho môže „odložiť“ na disk.
Po návrate procesu do behu sa obsah (alebo segment) znova natiahne do RAM.
Opíšte, ako vzniká externá fragmentácia pri dynamickom prideľovaní pamäte a aké mechanizmy ju môžu zmierniť.
Vzniká, keď medzi pridelenými blokmi vznikajú malé medzery (voľné fragmenty), ktoré nie je možné využiť na uspokojenie väčších požiadaviek.
Typicky pri alokovaní/uvoľňovaní blokov rôznych veľkostí.
Zmierňuje sa defragmentáciou, zlučovaním voľných blokov alebo použitím stránkovania (paging), ktoré rozdeľuje pamäť na rovnaké bloky.
Napíšte, v čom spočíva interná fragmentácia a prečo sa často spája s pevnou veľkosťou blokov (stránok).
Interná fragmentácia znamená, že proces nevyužije celý pridelený blok, a tak časť zostáva „nevyužitá“ vo vnútri.
Pri stránkovaní, ak má stránka napr. 4 KB a proces potrebuje len 3,7 KB, zvyšných 0,3 KB v rámci stránky ostáva nevyužitých.
Vzniká tak „vnútorné plytvanie“ pamäťou.
Vysvetlite princíp virtuálnej pamäte, aké výhody prináša a prečo môžu mať procesy väčší adresný priestor, než je fyzická RAM.
Virtuálna pamäť oddeľuje logické adresy procesov od reálnych (fyzických).
Proces pracuje s „veľkým“ virtuálnym priestorom, pričom OS podľa potreby načíta relevantné stránky do fyzickej RAM.
Výhody: lepšie využitie pamäte, ochrana procesov medzi sebou, možnosť „väčšej“ adresy ako reálna veľkosť RAM (časť dát je na disku).
Uveďte, ako funguje stránkovanie. Vysvetlite pojmy stránka (page) a rámec (frame) a ako sa mapujú.
Pri stránkovaní je virtuálna pamäť rozdelená na rovnako veľké stránky a fyzická pamäť na rovnako veľké rámce.
Tabuľka stránok ukladá, ktorá virtuálna stránka je momentálne uložená v ktorom fyzickom rámci (alebo či je na disku).
Pri prístupe k adrese OS/MMU zistí, do ktorého rámca patrí stránka, a adresa sa tak preloží na fyzickú.
Definujte, čo je logický adresový priestor procesu a akým spôsobom sa prekladá na fyzickú adresu.
Logický (virtuálny) adresový priestor je množina adries, ktoré proces vidí a môže používať.
Preklad na fyzickú adresu (v RAM) vykonáva hardvér (MMU) s pomocou tabuľky stránok.
Každá logická adresa sa rozdelí na číslo stránky a offset, pričom číslo stránky sa vyhľadáva v tabuľke stránok.
Opíšte úlohu fyzickej (reálnej) RAM a spôsob, akým ju zdieľajú všetky bežiace procesy pri použití stránkovania.
Fyzická RAM je skutočná pamäť počítača, do ktorej sa načítavajú inštrukcie a dáta.
Vďaka stránkovaniu môže OS priradiť každému procesu iné rámce, pričom reálne môžu byť roztrúsené v pamäti.
Viac procesov tak zdieľa RAM, no vďaka tabuľkám stránok každé vidí len „svoje“ adresy.
Porovnajte pojmy logický a virtuálny adresový priestor. Prečo proces nepracuje priamo s fyzickými adresami?
V kontexte moderných OS sa pojmy „logický“ a „virtuálny“ adresový priestor často používajú zameniteľne a znamenajú adresy, s ktorými pracuje proces.
Proces nepracuje priamo s fyzickými adresami, aby bola zaistená ochrana a izolácia.
Navyše to umožňuje flexibilné presúvanie stránok medzi RAM a diskom bez vedomia procesu.
Vymenujte, ako OS manipuluje so stránkami (page in, page out). Aká je typická veľkosť stránky v moderných systémoch?
OS načíta stránku z disku do RAM (page in) alebo ju v prípade potreby uvoľniť zapíše na disk (page out), ak bola modifikovaná.
Typická veľkosť stránky v súčasných systémoch je 4 KB, no existujú aj väčšie (napr. 2 MB, 1 GB - tzv. veľké stránky).
Správu, ktorá stránka je v pamäti a ktorá na disku, vedie tabuľka stránok.
Vysvetlite, čo sú page frames vo fyzickej pamäti a prečo musia mať rovnakú veľkosť ako stránky.
Page frame je blok vo fyzickej pamäti, do ktorého sa môže nahrať virtuálna stránka.
Musí mať rovnakú veľkosť ako stránka, aby sa dali adresy presne mapovať (offset vo virtuálnej stránke zodpovedá offsetu vo frame).
Toto zjednodušuje prideľovanie a správu pamäte.
Uveďte, z akých častí sa skladá logická adresa pri stránkovaní a ako OS tento offset využíva.
Logická adresa sa typicky delí na časť s číslom stránky a časť s offsetom v rámci stránky.
OS (alebo MMU) z čísla stránky určí, ktorý rámec je priradený.
Offset hovorí, o ktorý bajt (prípadne slovo) v rámci danej stránky ide.
Opíšte, ako sa z logickej adresy určuje príslušná fyzická adresa a prečo tento proces prebieha za pomoci MMU.
MMU zoberie číslo stránky z logickej adresy, v tabuľke stránok zistí zodpovedajúci rámec a vytvorí fyzickú adresu kombináciou čísla rámca a offsetu.
Proces tak nemá priamy prístup k fyzickej adrese, chráni sa tým izolácia procesov.
MMU to robí automaticky pri každom prístupe do pamäte.
Napíšte, aké údaje obsahuje tabuľka stránok a ako OS zistí, že stránka nie je v pamäti.
Záznam: číslo rámca, prítomnostný bit (je stránka v RAM?), R/W bit (povolenie zápisu), prípadne M (modified) a R (referenced).
Ak prítomnostný bit = 0, znamená, že stránka nie je v RAM.
Pri pokuse o prístup k takejto stránke dôjde k page fault-u, OS zabezpečí jej načítanie.
Vysvetlite, prečo pri veľkých adresných priestoroch používame viacúrovňové tabuľky stránok.
Jedna tabuľka stránok by bola priveľmi veľká (napr. pre 64-bitové adresy), zaberala by enormné množstvo pamäte.
Viacúrovňový prístup rozdelí tabuľky na menšie časti, pričom sa alokuje len tá časť tabuľky, ktorú proces reálne využíva.
Šetrí to pamäť a zvyšuje flexibilitu mapovania.
Opíšte, čo sa deje pri výpadku stránky (page fault). Prečo OS potrebuje vybrať voľný rámec alebo obeť?
Pri page fault-e procesor zistí, že prítomnostný bit stránky je 0. Vyvolá prerušenie obsluhe page fault.
OS vyhľadá, či je k dispozícii voľný rámec. Ak nie je, vyberie stránku-obeť na vysunutie (page out).
Načíta požadovanú stránku z disku do vybraného rámca, upraví tabuľku stránok a proces môže pokračovať.
Vymenujte dôvody, prečo sa používajú asociatívne pamäte (napr. TLB). Akým spôsobom zrýchľujú preklad adries?
Asociatívna pamäť umožňuje vyhľadávanie záznamu (stránka → rámec) podľa obsahu, nie podľa adresy.
TLB (Translation Lookaside Buffer) uchováva nedávno použité mapovania, ktoré sa dajú nájsť veľmi rýchlo (naraz porovnáva všetky záznamy).
Tým sa preklad adries zrýchli, lebo netreba prechádzať celú tabuľku stránok v pamäti.
Opíšte, ako funguje TLB, čo sa do neho ukladá a prečo je prístup do TLB rýchlejší ako prechod cez tabuľku stránok.
TLB je rýchla cache v MMU, do ktorej sa ukladajú páry (číslo stránky → číslo rámca) používané nedávno.
Pri každom prístupe sa najprv skontroluje TLB, a ak je nájdený záznam (TLB hit), môže sa adresa preložiť okamžite.
Je to hardvérová pamäť so špeciálnym vyhľadávaním, preto je rýchlejšia ako pamäťové prístupy pri bežnej tabuľke stránok.
Vysvetlite, čo je reference link na stránky a akým spôsobom sa využíva pri hodnotení efektivity algoritmov na výmenu stránok.
Je to postupnosť čísel stránok, na ktoré proces pristupuje (napr. 2, 3, 2, 4, 7...).
Slúži na simuláciu a porovnanie rôznych algoritmov výmeny stránok (FIFO, LRU, OPT), aby sme videli, koľko page fault-ov vygenerujú.
Podľa toho môžeme určiť, ktorý algoritmus je v konkrétnej situácii výkonnejší.
Uveďte, čo predstavuje pracovná množina stránok procesu a prečo má kľúčový význam pre počet page fault-ov a výkonnosť.
Pracovná množina je podmnožina stránok, ktoré proces v danom krátkom čase intenzívne využíva.
Ak je táto množina v RAM, proces má málo page fault-ov a beží hladko.
Ak sa do RAM nezmestí, môže dôjsť k častým výpadkom (thrashing), čo výrazne spomalí výkon.
Napíšte, aké ciele by mal spĺňať dobrý algoritmus výberu obete a uveďte príklady najznámejších prístupov.
Ciele: minimalizovať počet page fault-ov, jednoduchá implementácia a efektívnosť.
Príklady: FIFO (stránka, ktorá prišla do pamäte najskôr, ide von), LRU (Least Recently Used), OPT (optimálny, teoretický).
Algoritmy sa líšia podľa toho, ktoré stránky sú považované za „najmenej potrebné“.
Vysvetlite, prečo sa LRU alebo podobné algoritmy označujú ako zásobníkové. Ako súvisia s Beladyho anomáliou?
Zásobníkový algoritmus má vlastnosť, že množina stránok v pamäti pre n rámcov je vždy podmnožinou množiny stránok pre n+1 rámcov.
LRU patrí medzi takéto algoritmy – pri rozširovaní pamäte sa nestáva, že by sa zvýšil počet page fault-ov (teda nevzniká Beladyho anomália).
Beladyho anomália sa objavuje pri FIFO, ktoré nie je zásobníkovým algoritmom, a preto môže paradoxne spôsobiť viac fault-ov, ak sa zvýši počet rámcov.
Opíšte princíp LRU. Prečo je v reálnej implementácii náročnejší ako FIFO a čo ho robí efektívnym?
LRU odstraňuje tú stránku, ktorá sa najdlhšie nepoužila. Predpokladá, že ak sa stránka dlho nepoužívala, nebude sa hneď potrebovať.
Implementačne je zložitejšie sledovať poradie naposledy použitých stránok (napr. potrebné špeciálne štruktúry, časové pečiatky).
Je efektívny, lebo sa snaží odhadnúť budúce správanie na základe nedávnej histórie prístupov, čo často funguje lepšie ako FIFO.
Vysvetlite výhody a nevýhody FIFO algoritmu pri výmene stránok. Čo je Beladyho anomália?
Výhody: jednoduchá implementácia (len fronta stránok, ktoré prišli do pamäte).
Nevýhody: neberie do úvahy, či je stránka často využívaná, môže vyhadzovať často čítané stránky.
Beladyho anomália: situácia, keď zvýšenie počtu rámcov paradoxne spôsobí viac page fault-ov, čo je proti intuícii „viac pamäte = menej fault-ov“.
Uveďte, prečo je optimálny algoritmus (vyhadzuje stránku, ktorá bude použitá najneskôr) v praxi nerealizovateľný a prečo sa používa len na porovnanie.
Optimálny (OPT) algoritmus vždy odstráni stránku, ktorá sa v budúcnosti použije najneskôr (alebo vôbec).
V reálnej prevádzke nevieme dokonale predpovedať budúce prístupy, preto je nerealizovateľný.
Slúži však ako referenčný „ideálny“ štandard, voči ktorému sa porovnávajú reálne algoritmy (napr. LRU, FIFO).