Page 1
3.1 ©2009Operačné systémy, Kap. 3: Procesy
Základné tematické okruhy
•Procesy•Vlákna•Plánovanie procesov•Komunikácia medzi procesmi•Synchronizácia procesov•Operačné systémy (vývoj, štruktúra,...)•Správa pamäti•Virtuálna pamäť•Správa súborov•Správa I/O zariadení
Page 2
3.2 ©2009Operačné systémy, Kap. 3: Procesy
Procesy
•Charakteristiky procesu
•Stav procesu
•Riadiaci blok procesu
•Plánovanie (rozvrhovanie) procesu
•Prepínanie kontextu
•Operácie na procesoch
Page 3
3.3 ©2009Operačné systémy, Kap. 3: Procesy
Vzťah: systémové volanie – operačný systém
Používateľská aplikácia
Interfejs systémových volaní
Používateľský mód
Mód jadra
Page 4
3.4 ©2009Operačné systémy, Kap. 3: Procesy
Parameter prechádzajúci cez tabuľkuParameter Passing via Table
X: Parametre pre sys. volanie
Zaveď adresu X
Používateľský program
Operačný systém
Použi parametre z tabuľky X
kód programu pre systémové volanie 13
Page 5
3.5 ©2009Operačné systémy, Kap. 3: Procesy
PROCESY
Pojem procesu
Plánovanie procesov
Činnosť v rámci procesov
Komunikácia medzi procesmi
Príklady medziprocesovej komunikácie
Komunikácia v systémoch typu klient – server
Page 6
3.6 ©2009Operačné systémy, Kap. 3: Procesy
Ciele
Zaviesť pojem procesu – program v priebehu vykonávania, ktorý tvorí základ pre všetky výpočtové činnosti
Opísať rozličné vlastnosti procesov vrátane plánovania, tvorby a ohraničení, komunikácie
Opísať komunikáciu pre systémy s architektúrou klient –server.
Page 7
3.7 ©2009Operačné systémy, Kap. 3: Procesy
Pojem procesu
Operačný systém vykonáva rôzne druhy programov: Dávkové systémy – úlohy Systémy so zdieľaním času – používateľské programy alebo
úlohy Učebnice (príručky) používajú termíny úloha a proces skoro
(takmer) za zameniteľné Proces – program v štádiu vykonávania; vykonávanie procesu musí
postupovať (napredovať) sekvenčným spôsobom Proces obsahuje:
Počítadlo inštrukcií Programový zásobník Dátovú časť
Page 8
3.8 ©2009Operačné systémy, Kap. 3: Procesy
Proces v pamäti
zásobník
halda
dáta
Page 9
3.9 ©2009Operačné systémy, Kap. 3: Procesy
Stav procesu
V priebehu vykonávania procesu sa menia jeho stavy
Nový: proces je práve vytvorený
Bežiaci: vykonávajú sa inštrukcie programu
Čakajúci: proces čaká na určitú udalosť, ktorá sa má vyskytnúť
Pripravený: proces čaká na pridelenie procesora
Ukončený: proces dokončil svoje vykonanie
Page 10
3.10 ©2009Operačné systémy, Kap. 3: Procesy
Možné stavy procesu Diagram of Process State
nový
pripravený
čakajúci
ukončený
bežiaci
prerušenie áno
Výstupzo
systémuPrijatý do systému
Čakaniena
Dokončenie V/V alebo
udalostiPrijatý do systému
Čakanie na V/V alebo
na udalosť
Procesor pridelený
Plánovač pridelil procesor procesu
Page 11
3.11 ©2009Operačné systémy, Kap. 3: Procesy
Riadiaci blok procesu Process Control Block (PCB)
Informácia spojená s každým procesom
Stav procesu
Počítadlo inštrukcií
Registre CPU
Informácie pre plánovanie procesu
Informácia pre správu pamäte
Účtovacie informácie
Informácie o V/V stave
Page 12
3.12 ©2009Operačné systémy, Kap. 3: Procesy
Riadiaci blok procesu Process Control Block (PCB)
registre
Stav procesu
Číslo procesu
Počítadlo inštrukcií
Rozsah pamäti pridelenej procesu
Zoznam otvorených súborov
Page 13
3.13 ©2009Operačné systémy, Kap. 3: Procesy
Prepínanie procesora (CPU) z procesu na procesPrepínanie kontextu procesov
Operačný systémproces proces
vykonáva sa
vykonáva sa
vykonáva sa
Prerušenie alebo systémové volanie
Prerušenie alebo systémové volanienečinný
idle
činnýnečinný
nečinný
Ulož stav do
Ulož stav do
Zaveď stav z
Zaveď stav z
Page 14
3.14 ©2009Operačné systémy, Kap. 3: Procesy
Ready Queue And Various I/O Device Queues
Page 15
3.15 ©2009Operačné systémy, Kap. 3: Procesy
Representation of Process Scheduling
Page 16
3.16 ©2009Operačné systémy, Kap. 3: Procesy
Addition of Medium Term Scheduling
Page 17
3.17 ©2009Operačné systémy, Kap. 3: Procesy
Process Creation
Page 18
3.18 ©2009Operačné systémy, Kap. 3: Procesy
C Program Forking Separate Process
int main(){pid_t pid;
/* fork another process */pid = fork();if (pid < 0) { /* error occurred */
fprintf(stderr, "Fork Failed");exit(-1);
}else if (pid == 0) { /* child process */
execlp("/bin/ls", "ls", NULL);}else { /* parent process */
/* parent will wait for the child to complete */
wait (NULL);printf ("Child Complete");exit(0);
}}
Page 19
3.19 ©2009Operačné systémy, Kap. 3: Procesy
Vlákna
•Základné atribúty vlákien
•Motivácia vytvárania vlákien
•Modelové situácie použitia vlákien
•Multivláknové modely
Plánovanie procesov (vlákien)
•Plánovacie algoritmy
Page 20
3.20 ©2009Operačné systémy, Kap. 3: Procesy
Vlákna
Prehľad
Multivláknové modely
Knižnice vlákien
Problémy vytvárania vlákien
Príklady operačných systémov
Windows XP Threads
Linux Threads
Page 21
3.21 ©2009Operačné systémy, Kap. 3: Procesy
Ciele
Zaviesť pojem vlákno – základná jednotka pre plánovanie činnosti procesora ktorá tvorí základ viacvláknových (multithreaded) počítačových systémov.
Diskutovať API pre Pthreads, Win32, a Java thread knižnice
Problémy multivláknového programovania
Page 22
3.22 ©2009Operačné systémy, Kap. 3: Procesy
Jednovláknové a multivláknové procesy
Page 23
3.23 ©2009Operačné systémy, Kap. 3: Procesy
Prínosy
Citlivosť
Zdieľanie prostriedkov
Ekonomičnosť
Škálovateľnosť
Page 24
3.24 ©2009Operačné systémy, Kap. 3: Procesy
Používateľské vlákna
Správa vlákien vykonávaná pomocou používateľskej knižnice vlákien
Tri základné knižnice vlákien:
POSIX Pthreads
Win32 threads
Java threads
Page 25
3.25 ©2009Operačné systémy, Kap. 3: Procesy
Vlákna jadra
Podporované jadrom (kernel)
Príklady
Windows XP/2000
Solaris
Linux
Tru64 UNIX
Mac OS X
Page 26
3.26 ©2009Operačné systémy, Kap. 3: Procesy
Viacvláknové (multivláknové) modely
Many-to-One
One-to-One
Many-to-Many
Page 27
3.27 ©2009Operačné systémy, Kap. 3: Procesy
Many-to-One
Mnoho (viac) používateľských vlákien je mapovaných do jedného vlákna na úrovni jadra
Príklady
Solaris Green Threads
GNU Portable Threads
Page 28
3.28 ©2009Operačné systémy, Kap. 3: Procesy
Many-to-One Model
Page 29
3.29 ©2009Operačné systémy, Kap. 3: Procesy
One-to-One
Tento model mapuje každé používateľské vlákno do jedného vlákna na úrovni jadra
Príklady
Windows NT/XP/2000
Linux
Solaris 9 and later
Page 30
3.30 ©2009Operačné systémy, Kap. 3: Procesy
One-to-one Model
Page 31
3.31 ©2009Operačné systémy, Kap. 3: Procesy
Many-to-Many Model
Umožňuje mapovať viacero používateľských vlákien do menšieho (rovnakého) počtu vlákien na úrovni jadra
Dovoľuje operačnému systému vytvárať dostatočný počet vlákien jadra
Solaris pred verziou 9
Windows NT/2000 with the ThreadFiber package
Page 32
3.32 ©2009Operačné systémy, Kap. 3: Procesy
Many-to-Many Model
Page 33
3.33 ©2009Operačné systémy, Kap. 3: Procesy
Plánovanie CPU
Základné pojmy
Kritériá plánovania
Algoritmy plánovania
Plánovanie viacprocesorového systému
Plánovanie vlákna
Príklady operačných systémov
Ohodnotenie algoritmov
Page 34
3.34 ©2009Operačné systémy, Kap. 3: Procesy
Ciele
Predstaviť CPU plánovanie tvoriace základ pre multiprogramové operačné systémy
Opis rôznych algoritmov plánovania CPU
Prediskutovať hodnotiace kritériá pre výber algoritmov CPU-plánovania pre jednotlivé systémy
Page 35
3.35 ©2009Operačné systémy, Kap. 3: Procesy
Histogram požadovaného času procesora
Page 36
3.36 ©2009Operačné systémy, Kap. 3: Procesy
Striedanie postupnosti časov procesora a V/V zariadení
Page 37
3.37 ©2009Operačné systémy, Kap. 3: Procesy
Plánovač času procesora
Vyberá spomedzi procesov v pamäti tie, ktoré sú pripravené na vykonanie a uvoľňuje procesor pre jeden z nich.
Plánovanie času procesora sa vykonáva, keď proces sa prepína zo stavu:
1. Bežiaci na čakajúci
2. Bežiaci na pripravený
3. Čakajúci na pripravený
4. Proces ukončil svoju činnosť
Plánovanie pri 1 a 4 je nepreemptívne
Plánovanie pri 2 a 3 je preemptívne
Page 38
3.38 ©2009Operačné systémy, Kap. 3: Procesy
Dispečer
Modul dispečera umožňuje procesoru riadiť procesy vybrané krátkodobým plánovačom. Jeho úlohou je:
Prepínanie kontextu
Prepínanie do používateľského režimu
Skok na správne/vhodné miesto v používateľskom programe, aby sa tento program reštartoval (za účelom reštarovania tohto programu)
Čakacia doba – čas, ktorý trvá dispečerovi zastavenie jedného procesu a spustenie iného procesu
Page 39
3.39 ©2009Operačné systémy, Kap. 3: Procesy
Optimalizačné kritériá pri plánovacích algoritmoch
Maximálne využitie procesora
Maximálna priepustnosť
Minimálny čas vykonania
Minimálny čas čakania
Minimálny čas odozvy
Page 40
3.40 ©2009Operačné systémy, Kap. 3: Procesy
Určenie dlžky nasledujúceho požadovaného času procesora
Je možné iba odhadovať dĺžku
Môže byť určená na základe predchádzajúcej dĺžky požadovaného času procesora ako exponenciálny priemer
:Definujme 4.
10 , 3.
procesoračasu hopožadované ehonasledujúc hodnota anáptredpoved 2.
procesoračasu hopožadované tého-n dĺĺžk aktuálna 1.
1
nnt
.1 1 nnn t
Page 41
3.41 ©2009Operačné systémy, Kap. 3: Procesy
Predpovedanie dĺžky nasledujúceho požadovaného času procesora
Page 42
3.42 ©2009Operačné systémy, Kap. 3: Procesy
Príklady exponenciálneho spriemerňovania
=0 n+1 = n
Nedávna história sa nezapočítava =1
n+1 = tn
Len aktuálne posledný požadovaný čas procesora sa započítava Ak rozšírime vzorec, dostaneme:
n+1 = tn+(1 - ) tn -1 + …
+(1 - )j tn -j + …
+(1 - )n +1 0
Keďže aj aj (1 - ) sú menšie alebo rovné 1, každý nasledujúci člen má menšiu váhu než jeho predchodca