Struktura OS
Režimy
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)
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
Přechody stavů procesu
PCB
info o procesu v tabulce procesů
Ukončení procesu
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
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