- vsetok beziaci SW v systeme je organizovany ako mnozina beziacich procesov (mimo kernel)
- proces je instancia spusteneho programu
- kazdy proces si alokuje prislusne prostriedky - adresovy priestor, zasobnik a ma atributy - identita, rodicia, informacie o planovani
- kazdy proces implicitne obsahuje jedno vlakno vypoctu - v user space
- ulohou OS je pri vytvoreni procesu nahrat data a kod do pamate a vytvorit zasobnik pre tento proces
- proces potom moze byt ukonceny dobrovolne, nedobrovolne, chybovou hlaskou, inym procesom
OS spravuje tabulku - process control block (1 polozka 1 proces)
- v PCB - identifikacia procesu, stavove informacie procesoru, informacie pre spravu procesu
zatial, co proces sluzi k alokovaniu prostriedkov, tak vlakno je planovane na spustenie na CPU
- vlakno je jednotkou planovanou na spustenie na CPU
- vlakno ma svoj vlastny program counter, registre, zasobnik, lokalne premenne, ale ostatne prostriedky a identita su zdielane
- vlakna v procese zdielaju rovnaky adresovy prostor
- vlakno je na zaciatku len jedno, ale moze vytvarat dalsie vlakna
- jednoprocesorove systemy vyuzivaju tzv. pseudoparalelizmus na simulovanie paralelizmu
- viacprocesorove systemu dokazu spustat viacero vlakien skutocne paralelne
- vlakno sa viac menej nachadza v troch stavoch - Running, Blocked, Ready
- ak su vlakna implementovane v uzivatelskom priestore => proces moze mat svoj vlastny planovaci algoritmus na planovanie a spravu vlakien, vlakna mozu byt implementovane v OS, ktore nepodporuje vlakna a planovanie je rychle. Problem je so systemovymi volaniami, page miss, ziadny clock interrupt
- ak su vlakna implementovane v jadre, tak jadro udrzuje tabulku vlakien a tym eliminujeme problem so sytemovymi volaniami, ale vytvaranie, ukonconvanie a planovanie bude pomalsie . jadro sa stara iba o tieto vlakna
Ak nemame vlakna, ale podporujeme len procesy, tak hovorime o procesorovom modele. Ak mame aj vlakna => vlaknovy model