ZOS Flashcards
Struktura OS
- modul pro správu procesů
• program, proces, vlákno, plánování procesů a vláken
• kritická sekce, souběh, synchronizace (semafory, …)
• deadlock, vyhladovění - modul pro správu paměti
• virtuální paměť: stránkování, segmentace - modul pro správu I/O
- modul pro spr ávu souborů
- síťování
- ochrana a bezpečnost
- uživatelské rozhraní
Režimy
- Jádro OS běží v tzv. privilegovaném režimu CPU
• Všechny instrukce CPU jsou zde povoleny - Aplikace v uživatelském režimu CPU
- Některé instrukce zakázány (tzv. privilegované instrukce) např. není přímý přístup k disku, narušitel –> formátování
- Při pokusu o vykonání privilegované instrukce = => chyba, výjimka
- Aplikace musí požádat OS o přístup k souboru, ten rozhodne zda jej povolí
CPU ví, v jakém je režimu podle bitu ve stavovém registru CPU (0 = priv., 1 = uživ.) - CS (code segment) registr;;
Přerušení
Přerušení
Definice:
Metoda pro asynchronní obsluhu událostí, kdy procesor
přeruší vykonávání sledu instrukcí, vykoná obsluhu
přerušení a pak pokračuje v předchozí činnosti.
Rozdělení:
• HW přerušení (vnější) obsluha HW zařízení
• SW přerušení synchronní, instrukcí INT x v kódu procesu
• Vnitřní přerušení (výjimky) procesor oznamuje chyby
při vykonávání instrukcí (dělení nulou)
Systémové volání
vyvolání služby OS poskytované jádrem; aplikace volá službu sys. volání přímo (open, creat), knihovní funkcí (fopen)
Vektor přerušení
index do pole, obsahující adresu obslužné rutiny, vykonané při daném typu přerušení
Maskování přerušení
v době obsluhy přerušení lze zamaskovat méně důležitá přerušení, ale SW přerušení jsou nemaskovatelná (NMI)
Příchod přerušení
dokončí se rozpracovaná strojová instrukce, na zásobník se uloží adresa následující instrukce (CS:IP) tj. kde jsme skončili a kde budeme chtít pokračovat, z vektoru přerušení se zjistí adresa podprogramu pro obsluhu přerušení, přepnutí do priv. režimu, na zásobník se uloží hodnoty registrů, obsluha, instrukce návratu RET (IRET) a přepnutí do uživ. režimu
Jádro
OS = (jádro + systémové nástroje)
- monolitické (= 1 funkční celek) - LINUX
- mikrojádro - model klient-server (malé jádro, oddělitelné části pracují jako samostatné procesy v user space) - HURD
- hybridní - kombinace (Windows)
Přístup k souboru
pomocí ACL nebo základní unixová práva (UGO - rwx)
IRQ
signál, kterým zařízení žádá procesor o přerušení zpracovávaného procesu, IRQL - priorita přerušovacího požadavku
Proces
instance běžícího programu; adresní prostor procesu - MMU (zajišťuje soukromí), kód programu, data, zásobník; stavové informace procesu (registry - PC, SP)
Registry
obecné (EAX…), segmentové (CS, DS…), speciální (IP…)
Pseudoparalelní běh
v jednu chvíli aktivní pouze jeden proces, po určité době pozastaven a spuštěn další (1 CPU)
Stavy procesu
- běžící - využívá CPU
- připravený - pozastaven, aby mohl jiný proces pokračovat, čeká na CPU
- blokovaný - neschopný běhu, dokud nenastane externí událost (čeká na zdroj nebo zprávu)
- nový - právě vytvořený proces
- ukončený
- zombie - proces dokončí svůj kód, pořád má záznam v tabulce procesů, čekání, dokud rodič nepřečte exit status voláním wait
- sirotek - jeho kód stále běží, ale skončil rodičovský proces, adoptován procesem init
Přechody stavů procesu
- plánovač vybere nějaký proces
- proces je pozastaven, plánovač vybere jiný proces (např. vypršelo časové kvantum)
- proces se zablokuje, protože čeká na událost
- nastala očekávaná událost
PCB
info o procesu v tabulce procesů
Ukončení procesu
- proces úspěšně vykoná kód programu
- skončí rodičovský proces
- proces překročí limit nějakého zdroje
MMU
více procesů v paměti a každý má paměť pro sebe, program pracuje s virtuálními adresami a MMU je převede na fyzické adresy
Procesy a vlákna
každý proces svůj vlastní PID, PGID, UID, GID, adresový prostor a místo, kde leží (bod běhu), instrukce programu, registry, zásobník, haldu, popisovače souborů, signal actions, shared libraries, IPC, aktuální prioritu, výši priority (nice), celkovou velikost, velikost použité fyzické paměti, stav, %CPU; PID atd. uložený v PCB (včetně kontextu procesu) v tabulce procesů, ta je v RAM a je to datová struktura jádra OS
Vlákna
v procesu sdílejí adresní prostor, otevřené soubory; každé vlákno má svůj zásobník, čítač instrukcí, obsah registrů, zásobník, lokální proměnné, množinu blokovaných signálů, plánovací vlastnosti
Plánování procesů
stupeň multiprogramování = počet procesů v paměti
- nepreemptivní - proces skončí, nebo běžící -> blokovaný;
- preemptivní - navíc přechod běžící -> připravený (uplynulo časové kvantum), k odstavení procesu může dojít v nevhodný čas
Modely vláken
1:1 - vlákna v jádře
M:1 - vlákna jen v user space
M:N - komerční unixy (Solaris)
Kritická sekce
místo v programu, kde je prováděn přístup ke společným datům
Pravidla pro řešení časového souběhu
- vzájemné vyloučení - uvnitř KS vždy jen 1 proces
- proces mimo KS nesmí blokovat jiné procesy (bránit ve vstupu do KS)
- žádný proces nesmí na vstup do KS čekat nekonečně dlouho
Aktivní čekání
průběžné testování proměnné ve smyčce, dokud nenabyde očekávanou hodnotu, ale plýtvá časem CPU, tak se používá, jen pokud předpokládáme krátké čekání (spin lock)
Spin lock s instrukcí TSL
instrukce, která otestuje hodnotu a nastaví paměťové místo v jedné nedělitelné operaci (Test and Set Lock)