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