OSY Flashcards

1
Q

Proces

A

• Instance spuštěného programu.
o Program je posloupnost instrukcí definující chování procesu, která obsahuje globální data
• Slouží k alokování prostředků (adresový prostor, otevřené soubory, … ).
• Jádro udržuje informace o procesu (ID, identita, informace o rodiči a potomcích,…).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Vznik nového procesu/

A

Nové procesy vytváří již existující procesy systémovým voláním:
• Unix: fork(), exec()
• Windows: CreateProcess()

Vytvoření:
• OS inicializuje v jádře datové struktury spojené s novým procesem
• OS nahraje kód a data programu z disku do paměti a vytvoří
prázdný systémový zásobník pro main vlákno.

Klonování:
• OS zastaví aktuální proces a uloží jeho stav.
• OS inicializuje v jádře datové struktury spojené s novým procesem.
• OS udělá kopii aktuálního kódu, dat, zásobníku, stavu procesu, …

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Spustenie procesu - fork()

A

• Vytvoří nový proces, který je kopií procesu, z kterého byla tato funkce zavolána.
• Kódový segment sdílí potomek s rodičem.
• Datový a zásobníkový segment vznikají kopií dat a zásobníku rodiče.
• Nový proces má jiné PID a PPID, ostatní vlastnosti dědí (např. EUID, EGID, prostředí), nebo sdílí s rodičem
soubory, …).
• V rodičovském procesu vrací funkce PID potomka (chyba -1), v potomkovi 0.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Spustenie procesu - exec()

A

• V procesu, ze kterého je funkce volána, spustí nový program (obsah původního procesu je přepsán novým
programem).
• Atributy procesu se nemění (PID, PPID, …).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Spustenie procesu - wait()

A
  • Umožňuje v rodičovském procesu počkat na dokončení potomka.
  • Funkce zablokuje rodičovský proces, ve kterém je zavolána, dokud se jeden potomek neukončí.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Ukončenie procesu

A

• Normal exit (dobrovolné) - proces dokončí svou práci a použije OS volání exit(), aby řekl OS, že končí.
• Error exit (dobrovolné) – pomocí exit() při fatální chybě (např. žádný vstupní soubor,…)
• Fatal error (nedobrovolné) – OS násilně ukončí proces díky chybě (často chyba v programu)
• Ukončení jiným procesem (nedobrov.) - proces použije OS volání - např. kill(), aby řekl OS o ukončení jiného
procesu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Implementace procesu

A

• OS spravuje tabulku (seznam struktur), která se nazývá tabulka procesů, s jednou položkou pro jeden proces,
nazývanou process control block (PCB).
• PCB obsahuje informace o procesu a jeho vláknech, které jsou nutné pro správu procesů a vláken.
• Velikost tabulky procesů se obvykle odvozuje od konfigurace systému (např. od velikosti fyzické paměti).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

process control block (PCB)

A

• Informace pro identifikaci procesu (process identification)
o Jméno procesu, číslo procesu (PID), rodičovský proces
(PPID), vlastník procesu (EUID, RUID, SUID), seznam vláken

• Stavové informace procesoru pro každé vlákno
o Hodnoty viditelných registrů CPU.
o Hodnoty řídících a stavových registrů CPU (program
counter, program status word (PSW), status information
o Ukazatel na zásobník, …

• Informace pro správu vlákna/procesu
o Vlákno: stav, priorita, informace nutné pro plánování,
informace o událostech na které vlákno čeká
o Proces: informace pro mezi-procesovou komunikaci, správu paměti (ukazatel na tabulku stránek),
alokované a používané prostředky (otevřené soubory, …)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Vlákno

A

Nejmenší sekvence (posloupnost) instrukcí, které lze nezávisle spravovat plánovačem. Neboli vlákno je část výpočtu, které je přidělován CPU (jeho jádro)
• Jádro alokuje pro každé vlákno:
o zásobník (pro historii výpočtu a lokální proměnné)
▪ ostatní prostředky a identita jsou sdíleny

o a udržuje aktuální hodnoty registrů (pro opětovné spuštění). Tedy vlastní:
    ▪ hodnotu čítače instrukcí
    ▪ hodnoty CPU registrů (pro uchování informace o výpočtu)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Proces s více vlákny

A
  • Jednotlivá vlákna v daném procesu nejsou nezávislá tak jako jednotlivé procesy.
  • Všechny vlákna v procesu sdílí stejný adresový prostor, stejné otevřené soubory, potomky, reakce na signály
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Vytvoření a ukončení vlákna

A
  • Procesy se spouští standardně s jedním vláknem.
  • Toto vlákno může vytvářet další vlákna pomocí knihovní funkce (např pthread_create()).
  • Když chce vlákno skončit, může se opět ukončit pomocí knihovní fce (např pthread_exit()).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Přepínání kontextu

A

• V systému je omezený počet jader CPU -> Přepínání kontextu
• Vlákna se na jednotlivých jádrech střídají tak, že každé vlákno může běžet na přiděleném jádru po určitou
dobu. Po uplynutí této doby bude vlákno přerušení a nahrazeno jiným.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Stavy vlákien

A
  1. vytvoření procesu/vlákna
  2. spuštění vlákna na jádru CPU
  3. pozastavení vlákna po uplynutí časového kvanta
  4. pozastavení vlákna kvůli čekání na událost (IO,…)
  5. odblokování vlána po tom co nastala událost
  6. vlákno čeká až rodič převezme jeho exit code
  7. ukončení vlákna

Idle 1> Ready 2> Running 3> Ready (4> Blocked 5> Ready) 2> Running 6> Zombie 7> Free

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Časově závislé chyby

A
  • Dva nebo několik procesů/vláken používá (čte/zapisuje) společné sdílené prostředky
  • Výsledek výpočtu je závislý na přepínání kontextu jednotlivých vláken, které používají sdílené prostředky.
  • Velmi špatně se detekují.
  • Př: 2 uživatelé editují stejný soubor
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Kritické sekce

A

• Část programu, kde procesy používají sdílené prostředky (paměť, proměnné, soubor, …)
• Sdružené kritické sekce: kritické sekce dvou a více procesů týkající se stejného sdíleného prostředku
• Vzájemné vyloučení: procesům není dovoleno sdílet ve stejném čase 1 prostředek a nesmí se nacházet ve
sdružených sekcích současně

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Implementace vláken

A

V uživatelském prostoru:
• Run-time system: množina funkcí, která spravuje vlákna.
• Vlákna jsou implementována pouze v uživatelském prostoru.
• V jádru jsou implementovány procesy (jedno-vláknové procesy).
• Jádro o dalších vláknech nemá žádné informace.
• Výhody:
o Vlákna mohou být implementována v OS, které nepodporuje vlákna.
o Rychlé plánování vláken uvnitř procesu.
o Každý proces může mít svůj vlastní plánovací algoritmus.
• Nevýhody:
o Jak budou implementována blokující systémová volání?
o Co se stane když dojde k výpadku stránky?
o Žádný clock interrupt uvnitř procesu (jedno vlákno může okupovat CPU během celého časového
kvanta procesu).
o Špatná efektivita na SMP architektuře.

V prostoru jádra:
• Procesy i vlákna jsou implementovány v jádru.
• Výhody:
o Žádný problém s blokujícími systémovými voláními.
• Nevýhody:
o Vytváření, ukončování a plánování vláken je
pomalejší.

Hybridní:
• Jádro se stará pouze o kernel-level threads a plánuje je.
• Některé kernel-level threads mohou mít user-level threads.
• User-level threads jsou vytvářená, ukončovaná a plánovaná
uvnitř procesu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Plánování vláken

A

Při přidělování CPU vláknům jádro OS (scheduler) rozhoduje:
• Které vlákno poběží.
• Na kterém CPU/jádru.
• Kdy poběží a jak dlouho.

Strategie plánování:
• bez předbíhání - vlákno běží dokud nepožádá o nějakou službu jádro nebo neskončí (vlákno běží dle libosti)
• s předbíháním - běžící vlákno je zablokováno automaticky po uplynutí časového kvanta

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Typy plánování dle použitého systému:

A

Interaktivní systémy:
• Round-robin
o strategie předbíhání
o vlákna čekají ve frontě než se dostanou na řadu
▪ po uplynutí přiděleného CPU času se zařadí na konec fronty.
• Prioritní plánování
o Každé vlákno má prioritu, „ready“ vlákna jsou seskupena do tříd dle priority
o CPU je přidělováno vláknům z aktuálně nejvyšší prioritní třídy metodou round-robin

Dávkové:
• First-Come First-Served - plánování bez předbíhání pomocí jedné FIFO fronty vláken
o Jednoduché, minimalizace času na přepínání kontextu
o Může zpomalit vlákna orientovaná na V/V

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Synchronizační nástroje

A

Problémy při paralelních výpočtech
• Bez použití synchronizace
o Časově závislé chyby (race conditions) = situace kdy více vláken přistupuje (read/write) ke sdílenému
objektu a výsledek je závislý na přepínání kontextu
• Se synchronizací
o Uváznutí (deadlock) = situace, kdy několik vláken čeká na událost, kterou může vyvolat pouze jedeno z
čekajících vláken
o Livelock = situace, kdy několik vláken vykonává neužitečnou práci (mění svůj stav), ale nemohou
postoupit k vykonávaní užitečné práce
o Hladovění (starvation) = situace, kdy ready vlákno je předbíháno a nedostane se k prostředkům.

Různé úrovně synchronizačních nástrojů
• Hardware (zákaz přerušení - DI)
• Kernel space ( atomické operace, zámky)
• User space (pipes, signály, semafory)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Zákaz přerušení (DI):

A

• CPU je přidělováno postupně jednotlivým vláknům za pomoci přerušení od časovače nebo jiného přerušení.
• Vlákno zakáže všechna přerušení před vstupem do kritické sekce a opět je povolí po opuštění kritické sekce.
Nevýhody:
• DI od jednoho uživatele blokuje i ostatní uživatele
• Ve víceprocesorovém systému DI má efekt pouze na aktuálním CPU
• Zpomalí reakce na přerušení
Užitečné uvnitř jádra a na jednoprocesorovém systému (ale jen na krátký čas), nevhodné pro běžná user vlákna

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Aktivní čekání x blokování

A

• Pouze jedno vlákno může vstoupit do kritické sekce, ostatní musí počkat dokud se sekce neuvolní.
• Aktivní čekání: Sdílená proměnná indikuje obsazenost kritické sekce, vlákno ve smyčce testuje aktuální
hodnotu proměnné do okamžiku než se sekce uvolní. Pokud se dlouho čeká na vstup do kritické sekce, pak
dochází k plýtvání časem procesoru.
o Inverzní prioritní problém: Pokud OS používá prioritní plánování a CPU má pouze jedno jádro, potom
může vzniknout. Vlákno A má nižší prioritu než B a nachází se v kritické seci, B čeká pomocí aktivního
čekání na vstup. Pokud přiřazená priorita je fixní dojde k uváznutí.
• Blokování: Vlákno provede systémové volání, které ho zablokuje do okamžiku než se sekce uvolní. Je lepší
vlákna blokovat, než používat zákaz přerušení nebo aktivní čekání. Blokující a odblokovací operace jsou
obvykle implementovány jako služby jádra OS.

22
Q

Sdílená proměnná

A
  • Vzájemné vyloučení pomocí sdílené proměnné lock, kterou vlákno nastaví když vstupuje do kritické sekce.
  • Nevýhody: jedno vlákno může zpomalit ostatní vlákna, vlákno nemůže vstoupit do kritické sekce opakovaně
23
Q

Instrukce TSL

A

• Test and Set Lock (TSL) instrukce načte obsah slova z dané adresy v paměti do registru a nastaví obsah slova na
nenulovou hodnotu.
• CPU provádějící TSL instrukci zamkne paměťovou sběrnici, aby znemožnilo ostatním CPU v přístupu do sdílené
paměti dokud se instrukce TSL nedokončí.
• TSL je atomická instrukce => korektní hardwarové řešení

24
Q

Semafor

A

• obsahuje čítač a frontu čekajících procesů
• 3 operace: Init() - nastaví čítač na zadané číslo a fronta se vyprázdní, Down() - pokud je čítač větší než 0 sníží se
o 1, jinak se volající vlákno zablokuje a uloží do fronty, Up() - poud čekají nějaká vlákna ve frontě, pak se jedno z
nich probudí, jinak se čítač zvětší o 1 (všechny tyto instrukce jsou atomické)
• Binární semafor = mutex
• Pokud zapomeneme up() pak vlákna budou čekat ve frontě navždy (uváznutí) => monitory - vyšší úroveň
synchronizace, pouze 1 vlákno může být aktivní v daném monitoru v jednom okamžiku

25
Q

Bariéry

A

• definujeme minimální počet vláken, které ji mohou prolomit
• vlákno dojde k bariéře a je zablokováno do té doby dokud nedorazí minimální počet vláken, pak se všechny
odblokují

26
Q

Klasické synchronizační úlohy

A

Večeřící filosofové
• N filozofů sedí kolem kulatého stolu a každý z nich buď přemýšlí nebo jí. K jídlu potřebuje současně levou a pravou vidličku.
Naivní řešení
• Všichni filozofové vezmou levou vidličku současně a potom budou čekat až se uvolní pravá vidlička
o Dojde k uváznutí
Vylepšené řešení
• Pokud není pravá vidlička k dispozici, filozof vrátí již alokovanou levou vidličku zpět na stůl a pokus o jídlo se zopakuje později
• Všichni filozofové vezmou levou vidličku - dojde k livelock

Čtenáři – písaři
• Více čtenářů může číst současně data, pokud žádný písař nemodifikuje data v databázi.
• Pouze jeden písař může modifikovat data v databázi v jednom okamžiku.

Producent - konzument
• Producent - produkuje data a vkládá je do sdílené fronty s omezenou kapacitou
• Konzument - vybírá data ze sdílené fronty
• Problémy:
o Pokud je fronta prázdná => musíme zablokovat konzumenta, fronta plná => zablokovat producenta,
musíme zajistit výlučný přístup při vkládání/vybírání dat z fronty
• řešení pomocí sleep() a wakeup(thread)

27
Q

Přidělování prostředků

A
  • hardwarové zařízení (tiskárna, CD vypalovačka)
  • informace (položka v DB, soubor)

Dělí se na 2 typy:
• Odnímatelné – mohou být odebrány procesu bez rizika dalších problémů (např. odložení procesu z RAM na HDD)
• Neodnímatelné – nemohou být odebrány bez rizika

Kroky při použití prostředku

  1. Žádost o prostředek
  2. Použití prostředku
  3. Uvolnění prostředku

Pokud není žádný prostředek dostupný → žádající proces je automaticky zablokován prostřednictvím OS
• Zablokovaná žádost skončí chybou a následně nastane jedna z možností:
o Proces se ukončí po několika neúspěšných pokusech
o Žádající proces bude čekat na prostředek (aktivně/pasivně)

Při přidělování prostředků může dojít k uváznutí – deadlock
• Množina procesů uvázne pokud každý proces v množině čeká na nějakou událost, kterou může vyvolat
• Pouze některý proces z množiny

28
Q

Coffmanovy podmínky

A

Nutné podmínky uváznutí - pokud aspoň jedna z podmínek není splněna, nemůže dojít k uváznutí:
1. Vzájemné vyloučení. Každý prostředek je buď přidělen právě jednomu procesu a nebo je volný (prostředek
nemůže být sdílen více procesy).
2. Podmínka „drž a čekej“. Proces, který má již přiděleny nějaké prostředky, může žádat o další prostředky
(proces může žádat o prostředky postupně).
3. Podmínka neodnímatelnosti. Prostředek, který byl již přidělen nějakému procesu, nemůže mu být násilím
odebrán. Musí být dobrovolně uvolněn daným procesem.
4. Podmínka cyklického čekání. Musí existovat smyčka dvou nebo více procesů, ve které každý proces čeká na
prostředek přidělený následujícímu procesu ve smyčce.

29
Q

Způsoby řešení uváznutí

A

• Pštrosí algoritmus. Úplné ignorování celého problému.
• Detekce a zotavení. K uváznutí může dojít, ale pak je detekováno a odstraněno.
o Zotavení pomocí:
▪ odebrání - násilné odebrání prostředku
▪ návratu - při detekci uváznutí je proces vrácen zpět v čase
▪ ukončení procesů - ukončení procesu ze smyčky alokačního grafu
• Dynamické zamezení vzniku uváznutí pomocí pečlivé alokace prostředků.
o Kontroluje se, zda přidělení prostředku vede na bezpečný stav (jinak se nepřidělí)
o Nevýhoda – proces musí dopředu vědět kolik použije prostředků
• Prevence pomocí nesplnění aspoň jedné z Coffmanových podmínek.
o (pokud alespoň 1 není splněna, nemůže dojít k uváznutí)

30
Q

Memory Management Unit (MMU)

A

• Hardware umístěny na CPU čipu
• Stará se o překlad logických adres na fyzické
• Řeší výpadky stránky (page fault)
o Pokud není virtuální stránka ve fyzické paměti, MMU zařídí, aby CPU požádalo OS o nahrání příslušné
stránky do fyzické paměti.

31
Q

Memory manager

A
  • SW, který je součástí OS
  • Udržuje informace o volné a přidělené paměti
  • Přiděluje volnou paměť
  • Zajišťuje odkládání (swapping) procesů
32
Q

Základní techniky správy paměti - Fixní oblasti

A

• Paměť je rozdělena na n oblastí různých velikostí (většinou při spuštění systému).
• Program je nahrán do stejně velké oblasti nebo větší.
• Velkost paměťových oblastí se nemění během běhu OS.
• Výhody:
o Jednoduchá implementace
o Malá režie
• Nevýhody
o Interní fragmentace (místo uvnitř oblasti není využito na 100%)
o Počet procesů v paměti je fixní

Dva přístupy:
• Oddělené vstupní fronty pro každou oblast – multiple input queues
o Nerovnoměrné obsazení front
• Společná vstupní fronta – single input queue
o Best fit – nalezení největší úlohy, která se vejde do oblasti
▪ Znevýhodňuje malé (interaktivní) úlohy
o First fit – nalezení první úlohy, která se vejde do oblasti
▪ Plýtvá místem velkých oblastí

33
Q

Základní techniky správy paměti - Dynamické oblasti

A
Počet, umístění a velikost oblastí se mění dynamicky, tak jak jednotlivé procesy vznikají, zanikají a přesouvají se
mezi hlavní pamětí a diskem.
• Výhody
    o „Žádná“ interní fragmentace.
    o Efektivnější využití paměti.
 paměti, ale je to časově náročné).
• Nevýhody
    o Externí fragmentace (možno setřásání
34
Q

Jednoduché stránkování

A

Hlavní paměť je rozdělena na malé úseky stejné
velikosti (např 4kB) nazvané rámce (frames).
Program je rozdělen na malé úseky stejné velikosti
nazývané stránky (pages).

• Velikost rámce a stránky je stejná.
• Celý program je nahrán do volných rámců hlavní
paměti
• OS si pamatuje
o rámce přidělené jednotlivým procesům
(pomocí tabulky stránek)
o volné rámce v hlavní pamětí
• Stránky jsou pro OS nejmenší paměťové jednotky.

35
Q

Virtuální paměť

A

V 32-bit OS může jeden proces adresovat až 4GB

Problém
• Pokud OS umožňuje spustit až 64k procesů, pak bychom potřebovali až 256 TB paměti
• Řešením je virtuální paměť
o Proces je automaticky (pomocí OS) rozdělen na menší kousky.
o Ve fyzické paměti jsou pouze aktuálně používané kousky, zbytek procesu je na disku.

36
Q

Virtuální paměť se stránkováním

A

• Proces používá adresy, kterým se říká virtuální adresy a které tvoří virtuální adresový prostor.
o Virtuální adresový prostor je rozdělen na stejně velké souvislé úseky nazývané virtuální stránky (virtual
pages, typicky 4KB).
• Korespondující úseky ve fyzické paměti jsou nazývány rámce stránek (page frames).
• V hlavní paměti jsou pouze stránky aktuálně používané.

O překlad virtuálních adres na fyzické se stará MMU.
• Překlad fyzické adresy implementován pomocí tabulky stránek
• Ta má u 32-bit virtuálního prostoru s 4KB stránkami velikost milion položek
• Každý proces potřebuje vlastní tabulku stránek (má vlastní virt. prostor)

37
Q

Logická adresa

A

• Číslo virtuální stránky – index do tabulky stránek na konkrétní položku
o TabulkaStránek[ČísloVirtualníStránky] → dostaneme 1 položku tabulky stránek (viz struktura dále)
• Offset
o Rozdíl mezi bytem adresy kterou chceme a začátkem stránky
o Offset se musí být schopný dostat na každý byte stránky
▪ Při použití 4KB stránek je proto nutné mít 12 bit offset (212 = 4096 = 4KB)

Překlad však musí být velmi rychlý (dochází k němu při každém přístupu do paměti)

38
Q

Bitová mapa - Základní techniky správy paměti - Dynamické oblasti

A

Můžeme si představit, že fyzická pamět’ je složená z malých alokačních jednotek stejné velikosti. Potom v bitové mapě bude jeden bit (0=volná/1=alokovaná) reprezentovat jednu alokační jednotku.

  • Alokace paměti: nalezení řetězce nul požadované délky ⇒ pomalé.
  • Uvolnění paměti: změna příslušného řetězce jedniček na nuly.
39
Q

Zřetězené seznamy - Základní techniky správy paměti - Dynamické oblasti

A

Informaci o volných oblastech budeme uchovávat v N zřetězených seznamech Li , 1 ≤ i ≤ N. Každý seznam Li bude obsahovat informace pouze o oblastech určitých velikostí. Necht’ jsou definovány hodnoty S0 ≤ . . . ≤ SN . V seznamu Li budou informace pouze o volných oblastech, pro jejichž velikost S platí Si−1 < S ≤ Si .

40
Q

Víceúrovňová tabulka stránek

A

• Proces obvykle používá pouze podmnožinu adres svého virtuálního prostoru.
• Stačí tedy mít v paměti pouze ty položky z tabulky stránek, které bude OS potřebovat při překladu adres.
o Pro proces, který používá pouze 12MB, není potřeba adresový prostor 4GB (1 mil. položek).
▪ Stačí pouze 4 tabulky stránek po 1 000 položkách.
• V praxi se kvůli rychlosti používají maximálně 3-4 úrovně tabulek.
• Při rozdělení PT1 = PT2 = 10 bitů je velikost tabulek
210 – 1024 položek.

41
Q

Struktura položek v tabulce stránek

A

Závisí na architektuře CPU, většinou obsahuje:
• Modified bit
o Aby OS věděl, zda při vyhazování z paměti musí
obsah stránky uložit na disk
• Reference bit
o Když je ke stránce přistupováno – nastaven na 1
• Caching disabled bit
o Důležitý pro stránky, které jsou mapovány na
registry místo cache
• Page frame number – číslo rámce
• Present bit
o 1 – je v RAM
o 0 – mimo
• Protection bits (3 bity)
o RWX (read,write,..)

42
Q

Translation lookaside buffer – TLB

A

TLB je speciální hardwarová cache v MMU, která má za úkol urychlit překlad.
• Organizovaný jako asociativní paměť – velmi rychlé.
o Content-addressable memory (CAM) Or Associative Memory
o „Unlike standard computer memory (random access memory - RAM) in which the user supplies a memory
address and the RAM returns the data word stored at that address, a CAM is designed such that the user
supplies a data word and the CAM searches its entire memory to see if that data word is stored anywhere in
it. If the data word is found, the CAM returns a list of one or more storage addresses where the word was
found“
• Obsahuje posledně používané položky tabulek stránek.
• Obsahuje desítky položek.

43
Q

Invertovaná tabulka stránek

A

V klasické tabulce stránek slouží číslo virtuální stránky jako index do tabulky. Díky tomu je nutné i pro procesy, které paměť vůbec nevyužívají držet 4MB tabulku stránek(pro systém s 32-bit adresami a 4KB stránky)

• Invertovaná tabulka stránek se snaží tomuto problému s plýtváním paměti předejít.
•Pro přístup do tabulky stránek je tak potřeba kromě čísla virtuální stránky také PID procesu.
o TabulkaStránek[ČísloVirtualníStránky, PID]
• Tzn díky PID a číslu virtuální stránky se najde položka v invertované tabulce stránek.
o Z této položky se vezme číslo rámce, které se spojí s offsetem z logické adresy.
▪ Dostaneme konkrétní byty fyzické paměti RAM.

44
Q

Virtuální paměť x Segmentace

A

Virtuální paměť
• Proces má jednorozměrný virtuální adresový prostor
Segmentace
• Virtuální adresový prostor procesu je rozdělen na několik segmentů
o Délka segmentu se může měnit během výpočtu, poskytují sdílení a ochranu paměti.

45
Q

Jednoduchá segmentace (Virtuální paměť se segmentací)

A

Může sloužit například pro překladač, který si udržuje několik tabulek datových struktur a dynamicky mění během překladu jejich velikost
• Je viditelná pro programátora.
• Vhodná pro dynamicky rostoucí datové struktury, modularitu

46
Q

Virtuální paměť se segmentací a stránkováním

A

• Virtuální adresový prostor je rozdělen na segmenty
o Segmenty se skládají ze stejně velkých stránek, které jsou stejně velké jako rámce v hlavní paměti.
• Segmentace se stránkováním se může používat společně s TLB (Translation lookaside buffer)

47
Q

Algoritmy pro nahrazování stránek u virtuální stránkované paměti - princíp

A
  • Všechny rámce stránek v hlavní paměti jsou obsazené.
  • Potřebujeme nahrát další virtuální stránku do hlavní paměti.
  • Algoritmus pro náhradu stránek musí určit stránku, která bude nahrazena.
  • Většina algoritmů je založena na principu lokality (stránky, ke kterým se přistupovalo v nedávné minulosti, se bude přistupovat s velkou pravděpodobností v blízké budoucnosti).
48
Q

Algoritmy pro nahrazování stránek - Optimální algoritmus

A

Nahradí se stránka, která již nebude používána, nebo ta, která bude použita za nejdelší dobu. Slouží pro porovnání ostatních algoritmů - v praxi nelze.

49
Q

Algoritmy pro nahrazování stránek - Not Recently Used Alg. (NRU)

A

Každé stránce jsou přiřazeny dva bity R a M:
Stránky se pak rozdělují na 4 kategorie, nahrazuje se stránka z nejnižší neprázdné kategorie.

• R bit je nastaven, když ke stránce přistupujeme (čtení/zápis).
• M bit je nastaven, když stránku modifikujeme (zápis).
• Tyto bity jsou uloženy např. v TLB, tabulce stránek.
• Jsou aktualizovány hardwarem při každém přístupu na stránku.
• Při spuštění procesu jsou oba bity vynulovány.
• Periodicky (např. při přerušení od časovače) je bit R nulován tak, abychom rozlišili, které stránky byly
používány nedávno.

Kategorie 0. : R = 0, M = 0
Kategorie 1. : R = 0, M = 1
Kategorie 2. : R = 1, M = 0
Kategorie 3. : R = 1, M = 1

50
Q

Algoritmy pro nahrazování stránek - First-In First-Out Alg. (FIFO) - FRONTA

A

• OS si udržuje seznam všech stránek, které jsou právě v hlavní paměti.
• Nejstarší stránky jsou na začátku seznamu.
• Posledně nahrané stránky jsou na konci seznamu.
• Při výpadku stránky, je nejstarší stránka ze začátku seznamu vyhozena z hlavní paměti a nová stránka je
přidána na konec seznamu.
• Nevýhoda:
o FIFO bere v úvahu pouze, kdy se stránka načetla do hlavní paměti, ale nikoliv jak často se ke stránce
přistupuje.

51
Q

Algoritmy pro nahrazování stránek - Least Recent Used Alg. (LRU)

A

Dobrá aproximace optimálního algoritmu. Nahrazujeme stránku, která nebyla používána nejdelší dobu.
Stránky hodně používané během několika posledních instrukcí budou s velkou pravděpodobností ještě používány
během několika následujících instrukcí.
Realizovat by se to dalo, ale je to časově drahé. Chce to seznam stránek řazený dle doby přístupu a musí se
aktualizovat při každém přístupu do paměti.