Vlakna
PB 152 Operacn systemy
Jan Staudek http://www. .muni.cz/usr/staudek/vyuka/
}
w A| y < 5 4 23 1 0 / -. , )+ ( %&' $ # !"
Æ
Verze : jaro 2015
Proces a vlakna
Proces, resp. take task { drzitel zdroju, vc. prostoru ve virtualn pameti pro uchovan obrazu procesu { jednotka planov an cl dynamickeho pridelovan procesoru pro beh procesu Vlakno Sekvencn dej de novatelny v procesu. Pro OS jednotka planov an , nikoli vlastnictv zdroju Vsechna vlakna de novana v procesu se r es soubez ne, multitasking. Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
1
Koncept sekvencn ho procesu mu ze byt neefektivn
2
Textovy editor X c te z klavesnice prkazy k editaci X fomatuje text podle prkazu X z duvodu spolehlivosti se pozaduje periodicky koprovat editovany text
do diskoveho souboru
2
sen editoru c iste sekvencnm procesem Re X behem archivace bude ignorovat klavesnici a mys
dokud se archivace neukonc, X vykon editovan bude nzky 2
Naprogramovan do editoru obsluhy prerusen od mysi a klavesnice behem archivace X vykon se vyleps, program bude slozity Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
2
sen Re editoru pomoc vlaken
sen problemu X Re tremi procesy problem neres,
vsechny tri procesy by musely pracovat s jedinym dokumentem Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
3
Proces a vlakno
2
vlakno (thread) systemov y objekt, ktery se vytva r v ramci procesu je viditelny pouze uvnitr procesu je charakterizovan svym stavem (procesory se prideluj vlakn um) ,,klasicky process"{ proces s jednm vlaknem vlakno se nachaz ve stavech: bez , pripravene, ... kdyz vlakno nebez , kontext vlakna je ulozeny v TCB (Thread Control Block): { jeho provad ec zasobn k, obraz PC, obraz registru, ... X vlakno mu ze pristupovat k LAP a k ostatnm zdrojum sveho procesu X tyto zdroje sdlej vsechny vlakna jednoho procesu { jakmile 1 vlakno zmen obsah nektere bunky LAP, vsechny ostatn vlakna (teho z procesu) novy obsah vid { soubor otevreny jednm vlaknem vid vsechny ostatn vlakna (teho z procesu) X skupina vlaken jednoho procesu sdl promenne (LAP, prideleny FAP), otevrene soubory, . . . X X X X X X
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
4
Multitasking / multithreading
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
5
Vlakna vs. Procesy
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
6
Web server r esen y pomoc vlaken
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
7
Klient-server r esen y pomoc vlaken
2
Proces mu ze de novat vce aktivit proveditelnych soubez ne X Napr. server mu ze obsluhovat vce pozadavku klientu soubez ne
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
8
Pou zit vlaken
2
Univerzaln nastroj pro vsechny aplikace X od interaktivnho kreslen po hry X napr. behem c ten klavesnice jednm vlaknem jine vlakno vykresluje
obrazek
2
Efektivn vyuzit multiprocesorovych poctacu X moznost skutecne paralelnho behu vlaken na ruzn ych procesorech X msto multitaskingu sdlejcho jediny procesor
2
Prednosti X X X X
Vlakno se vytvor rychleji nez proces Vlakno se ukonc rychleji nez proces Mezi vlakny se rychleji prepna nez mezi procesy Dosahne se leps strukturalizace programu Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
9
P r nosy pou zit vlaken, p r klady aplikac
2
proc se zavad vlakna v ramci procesu, prklady prnosu X X X X X
2
menu vypisovane soubez ne se zpracovan m periodicky provad en automaticke kopie souboru prekreslovan obrazovky soubez ne se zpracovan m dat paralelizace algoritmu v multiprocesoru dosazen leps strukturalizace programu
Prklady
X Souborovy server LAN
X X X X
{ mus vyrizovat behem kratk e doby nekolik pozadavku na soubory { pro vyrzen kazdeho pozadavku se zrd samostatne vlakno Symetricky multiprocesor { na ruzn ych procesorech mu ze bez et vce vlaken soucasne jedno vlakno zobrazuje menu a c te vstup od uzivatele a soucasne jine vlakno provad prkazy uzivatele periodicke provad en automaticke kopie souboru prekreslovan obrazovky soubez ne se zpracovan m Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
10
Co se zska pou zitm vlaken
2
schopnost lepe reagovat na r eseny problem X multivlaknov a interaktivn aplikace mu ze stale bez et,
i kdyz jej c ast je blokovana / se dlouho r es / . . . X interakce s prohlz ecem v jednom vlaknu prohlz ece, zavad en obrazku jinym vlaknem 2
snazs sdlen zdroju X aplikace, ktere se lis pouze nekolika odlisnymi aktivitami
r esenymi samostatne vlakny, mohou sdlet stejny adresovy prostor, hlavn program, . . .
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
11
Co se zska pou zitm vlaken
2
snz en systemov e rezie X prepnan kontextu mezi vlakny je jednoduss nez prepnan kontextu
mezi procesy X napr. Solaris { vytvoren procesu je 30x pomalejs nez vytvoren vlakna { prepnan kontextu mezi procesy je 5x pomalejs nez mezi vlakny 2
u cinnejs vyuzit multiprocesorovych architektur X soubez nost r esen vlaken mu ze nabyt formy paralelismu
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
12
P r klad pou zit vlaken: RPC,
2 2
Remote Procedure Call
Program provad dve RPC ke 2 ruzn ym serverum a pocta vysledek z obou hodnot Implementace pomoc 1-vlaknov eho procesu
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
13
P r klad pou zit vlaken: RPC,
2 2
Remote Procedure Call
Program provad dve RPC ke 2 ruzn ym serverum a pocta vysledek z obou hodnot Implementace pomoc vce-vlaknov eho procesu na monoprocesoru { 1 vlakno na 1 server
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
14
Problem konzistence mezi vlakny
2 2 2 2
Mejme aplikaci ktera sestav a z vce nezavisl ych c ast C asti nemus bez et v sekvenci Kazda c ast se implementuje jako vlakno Vlastnosti takove implementace X Kdyz vlakno c eka konec I/O operace, mu ze bez et jine vlakno
teho z procesu, aniz by se prepojovalo mezi procesy X vlakna jednoho procesu sdl pamet' a soubory a tudz mohou mezi sebou komunikovat, aniz by k tomu potrebovaly sluzby jadra X vlakna jedne aplikace se proto mus mezi sebou synchronizovat, aby se zachovala konzistentnost zpracovavan ych dat
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
15
P r klad problemu zachovan konzistence dat
2
Scen a r X v procesu jsou vytvorena vlakna T1 a T2 X T 1 pocta C = A + B , T 2 prena s hodnotu X z A do B : A = A − X; B = B + X X T 1 a T 2 bez soubez ne, nevme jak rychle kazde z nich
2
Formaln predstava o chovan systemu vlaken T1 a T2 X T 2 udela A = A − X a B = B + X X T 1 pocta C = A + B , hodnota C se tudz proveden T 2 nezmen
2
Mozna realita X T 2 udela A = A − X X T 1 spocta C = A + B = A − X + B X T 2 udela B = B + X , coz C uz neovlivn Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
16
Stavy vlaken
2
tri klc ove stavy X bez X pripravene X c ekajc
2
vsechny vlakna jednoho procesu sdlej stejny adresovy prostor X vlakna se samostatne neodkladaj
2
ukoncen procesu ukoncuje vsechny vlakna existujc v ramci tohoto procesu
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
17
Typy vlaken
2 User-Level Threads
(ULT)
X jadro OS podporuje procesy X vlakna podporuje vlaknov a knihovna sestavovana do programu
uzivatele
2 Kernel-Level Threads
(KLT)
X podporuje je prmo jadro OS X take lightweight processes nebo kernel-supported threads
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
18
Vlakna na u zivatelske urovni, ULT
2 User-Level Threads 2
(ULT)
vlastnosti X Sprava vlaken se provad prostrednictvm vlaknov e knihovny (thread library) na urovni uzivatelskeho / aplikacnho procesu, X jadro o jejich existenci nev X Prepojovan mezi vlakny nepozaduje provad en funkc jadra X neprepna se ani kontext procesu ani rezim procesoru X Planov an prepnan vlaken je speci cke pro konkretn aplikaci X aplikace si vol pro sebe nejvhodnejs algoritmus
2
prklady X POSIX { Pthreads X Mach { C-threads X Solaris { threads Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
19
Vlakna na u zivatelske urovni, ULT
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
20
Vztahy mezi ULT vlakny a stavy procesu
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
21
Vlakna na u zivatelske urovni, ULT
2
vlaknov a knihovna obsahuje funkce pro X X X X
2
vytva ren a rusen vlaken predav an zprav a dat mezi vlakny planov an behu vlaken uchovav an a obnova kontextu vlaken
Co dela jadro pro vlakna na uzivatelske urovni X Jadro nev o aktivite vlaken, manipuluje pouze s procesy X Kdyz nektere vlakno zavola sluzbu jadra a c eka dokud se sluzba nespln
je blokovan cely proces, viz predchoz bod X Stavy vlaken jsou na stavech procesu nezavisl e pro vlaknovou knihovnu mu ze vlakno byt stale ve stavu ,,bez c" i kdyz je proces vracen y mezi ,,pripravene"procesy
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
22
Vlakna na u zivatelske urovni, ULT
2
Prednosti X Prepojovan mezi vlakny nepozaduje provad en jadra X neprepna se ani kontext ani rezim procesoru X Planov an je speci cke pro konkretn aplikaci
{ vol si pro sebe nejvhodnejs algoritmus { ULT mohou bez et pod kterymkoliv OS { ULT potrebuj pouze adekvatn vlaknovou knihovnu
2
Nedostatky X X X X
Vetsina volan sluzeb zpusobuje blokovan procesu Jadro blokuje procesy a ne vlakna Takze z adn e vlakno existujc v ramci procesu nemu ze bez et Jadro mu ze pridelovat procesor pouze procesum, takze dve vlakna jednoho procesu nemohou bez et paralelne, i kdyz proces bez v multiprocesoru Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
23
Vlakna na urovni jadra, KLT
2 Kernel-Level Threads 2
vlastnosti X X X X X X
2
(KLT)
Celou spravu vlaken podporuje jadro, vlaknov a knihovna se nepouzva pouzva se API na vlaknov e sluzby jadra Informaci o kontextu procesu a vlaken udrzuje jadro Prepojovan mezi vlakny aktivuje jadro Planov an se r es na bazi vlaken
prklady X X X X
OS/2 Windows 95/98/NT/2000/XP Solaris, Tru64 UNIX, Linux Mac OS X Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
24
Vlakna na urovni jadra, KLT
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
25
Vlakna na urovni jadra, KLT
2
Prednosti X jadro mu ze soucasne planovat beh vce vlaken stejneho procesu
na vce procesorech X k blokovan dochaz na urovni vlaken X i programy jadra mohou mt multi{vlaknov y charakter 2
Nedostatky X prepojovan mezi vlakny teho z procesu zprostredkovav a jadro X pri prepnut vlakna se 2x se prepna rezim procesoru X vysledkem je zpomalen, snz en dostupneho aplikacnho vykonu
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
26
Kombinace ULT/KLT
2 2 2 2
vlakna se vytva rej v uzivatelskem prostoru programator mu ze nastavit pocet vlaken na urovni jadra lze kombinovat prnosy obou prstupu podporuje Solaris
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
27
Kombinace ULT/KLT
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
28
Multivlaknov e modely
2
1:1 X Kazdy ULT se zobrazuje do jednoho KLT X tradicn Unixy verze
2
n:1 X Vce ULT se zobrazuje do jednoho KLT X pouzva se na systemech, ktere nepodporuj KLT X Windows 95/98/NT/2000/XP, Linux, Solaris 9 a vyss verze.
Solaris Green Threads, GNU Portable Threads
2
n:m X X X X
vce ULT se mu ze zobrazovat do vce KLT OS mu ze vytvorit dostatecny pocet KLT Solaris do verze 9, Windows NT/2000 with the ThreadFiber package two-level model { model n : m s moznost vazat konkretn ULT na konkretn KLT (IRIX, HP=UX, True64 Unix) Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
29
Multivlaknov e modely
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
30
Vlakna v systemu Solaris
2 OS nevid ULT 2 OS prideluje procesor KLT 2 Lightweight process (LWP) X rozhran pro paralelismus pro aplikace X kazdy LWP podporuje 1 nebo vce ULT a zobrazuje je do jednoho KLT Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
31
Proces ve Windows a jeho zdroje
2 2 2 2 2
Jsou implementovane jako objekty Proces lze vytvorit jako novy proces nebo jako kopii existujcho procesu V procesu lze de novat jedno nebo vce vlaken Procesy i vlakna maj vestavene synchronizacn vlastnosti Proces X je de novany jistym poctem akc /sluzeb, ktere mu ze vykonavat X provad sluzbu,
kdyz je volany nekterou z publikovanych metod rozhran X vznika jako novy proces generovan m instance objektu ze s ablony X vlastnostem objektu se prirad hodnoty pri generovan objektu
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
32
Vztah procesu a zdroju ve Windows
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
33
Vlastnosti objektu proces ve Windows
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
34
Vlastnosti objektu vlakno ve Windows
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
35
Stavy vlakna ve Windows
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
36
Windows 7 Architecture, vlakna a SMP
2 2 2 2 2 2
vlakna vsech procesu vc. systemov ych (Executive) mohou bez et na kteremkoliv dostupnem procesoru vlakna mohou bez et paralelne vlakna jednoho procesu mohou bez et paralelne na ruzn ych procesorech v ramci jednoho procesu server mu ze pouzt vce vlaken pro soucasnou obsluhu vce klientu soucasne data a zdroje mohou procesy sdlet procesy mohou mezi sebou komunikovat
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
37
Vlakna Java, p r klad
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
38
Vlakna Java, p r klad
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
39
Vlakna Java
2
vlakna jsou fundamentaln m model r esen javovskeho programu
X jak implementovat JVM do hostitelskeho OS z adn y standard neres
{ napr. XP: model 1:1 X vlaknov a knihovna Java byv a mapovana na vlaknovou knihovnu hostitelskeho OS { JVM ve XP: na API Win32 { JVM v Linux/Solaris: na API Pthreads Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
40
Poznamky k praci s vlakny
2
semantika fork() a exec() X fork duplikuje proces v jednovlaknov em procesu X ma duplikovat cely proces nebo jenom vlakno, ktere fork vyvolalo ?
2
jak ukoncit beh (cloveho) vlakna, ktery dosud neskoncil ? X asynchronn zrusen { jedno vlakno bezprostredne ukonc clove vlakno X odlozene zrusen { clove vlakno se periodicky dotazuje, zda ma skoncit
Oznamen prerusen cloveho vlakna
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
41
Poznamky k praci s vlakny
X odlozene zrusen { kontrolovan stavu ,,prerusen"
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
42
Poznamky k praci s vlakny
2
zvlad an signal u X signal { Unixovska softwarova noti kace procesu, z e se stala
(oznamovana) udalost X signaly spravuje spravce signal u X signal se procesu dopravuje operacnm systemem (programove) X volby: { ma se signal dorucit 1 konkretn mu vlaknu v clovem procesu? { ma se signal dorucit vsem vlakn um v clovem procesu? { ma se signal dorucit jen jistym vlakn um v clovem procesu? { ma jedno vlakno spravovat vsechny signaly dorucene procesu ?
Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
43
Poznamky k praci s vlakny
2
prace s bankem vlaken (Thread Pool)
X bank vlaken { skupina vlaken pripravenych na spusten X pri z adosti o nasobnou obsluhu serverem se nemus generovat
nove vlakno X neomezene generovan novych vlaken by mohlo vycerpat dostupne zdroje X pripravene vlakno se rychleji spust nez vytva rene vlakno X tri javovske architektury banku vlaken: 1. Single thread executor { bank o rozmeru 1 2. Fixed thread executor { bank o rozmeru > 1 3. Cached thread pool - bank neomezeneho rozsahu 2
prace s vlastnmi daty vlakna (Thread Specific Data) X vlakno mu ze mt vlastn kopii dat,
nesdlenou s ostatnmi vlakny procesu X napr. pri pouzvan banku vlaken Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
44
P r klady vlaknov ych knihoven
2
Pthreads X standard API, IEEE 1003.1c, pro vytva ren a synchronicazi vlaken X API urcuje chovan , implementaci standard nepredpisuje X pouzvaj unixove orientovane systemy (Solaris, Linux, Mac OS X)
2
Windows XP Threads X implementuje mapovan 1:1 X kazde vlakno sestav a z:
id vlakna, sestava registru, samostatny uzivatelsky zasobn k a zasobn k jadra a privatn pamet'ova oblast { kontext vlakna 2
vlakna v Linuxu X Linux pouzva pojem tasks msto threads (vlakno) X vlakno se vytva r volan m systemu clone() X vlakno je potomek a sdl s rodicovskym procesem adresovy prostor Jan Staudek, FI MU Brno
|
PB152 Operacn systemy { Vlakna
45