Vl akna PB 152 Operacn syst emy Jan Staudek http://www. .muni.cz/usr/staudek/vyuka/ Û¡¢£¤¥¦§¨ª«¬­Æ°±²³´µ·¸¹º»¼½¾¿Ý Verze: jaro 2017 Proces a vl akna Proces, resp. take task { drzitel zdroju, vc. prostoru ve virtualn pameti pro uchovan obrazu procesu { jednotka planovan cl dynamickeho pridelovan procesoru pro beh procesu Vlakno Sekvencn dej de novatelny v procesu. Pro OS jednotka planovan, nikoli vlastnictv zdroju Vsechna vlakna de novana v procesu se res soubezne, multitasking. Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 1 Koncept sekvencnho procesu m uze b yt neefektivn 2 Textovy editor cte z klavesnice prkazy k editaci fomatuje text podle prkazu z duvodu spolehlivosti se pozaduje periodicky koprovat editovany text do diskoveho souboru 2 Resen editoru ciste sekvencnm procesem behem archivace bude ignorovat klavesnici a mys dokud se archivace neukonc, vykon editovan bude nzky 2 Naprogramovan do editoru obsluhy prerusen od mysi a klavesnice behem archivace vykon se vyleps, program bude slozity Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 2 Resen editoru pomoc vl aken Resen problemu tremi procesy problem neres, vsechny tri procesy by musely pracovat s jedinym dokumentem Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 3 Proces a vl akno 2 vlakno (thread) systemovy objekt, ktery se vytvar v ramci procesu je viditelny pouze uvnitr procesu je charakterizovan svym stavem (procesory se prideluj vlaknum) ,,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), v deskriptoru vlakna vlakno muze pristupovat k LAP a k ostatnm zdrojum sveho procesu tyto zdroje sdlej vsechny vlakna jednoho procesu { jakmile 1 vlakno zmen obsah nektere bunky LAP, vsechny ostatn vlakna (tehoz procesu) novy obsah vid { soubor otevreny jednm vlaknem vid vsechny ostatn vlakna (tehoz procesu) skupina vlaken jednoho procesu sdl promenne (LAP, prideleny FAP), otevrene soubory, ... Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 4 Generick y obsah TCB, deskriptoru vl akna 2 id vlakna 2 odkaz na jeho rodicovsky proces umoznujc vlaknu prstup ke zdrojum pridelenym procesu (na vlastnka vlakna) 2 priorita vlakna 2 stav vlakna 2 stav ctace instrukc a dalsch registru procesoru po prerusen 2 odkaz na zasobnk Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 5 Multitasking / multithreading Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 6 Vl akna vs. Procesy Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 7 Klient-server resen y pomoc vl aken 2 Proces muze de novat vce aktivit proveditelnych soubezne Napr. server muze obsluhovat vce pozadavku klientu soubezne Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 8 Web server resen y pomoc vl aken Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 9 Pouzit vl aken 2 Univerzaln nastroj pro vsechny aplikace od interaktivnho kreslen po hry napr. behem cten klavesnice jednm vlaknem jine vlakno vykresluje obrazek 2 Efektivn vyuzit multiprocesorovych poctacu moznost skutecne paralelnho behu vlaken na ruznych procesorech msto multitaskingu sdlejcho jediny procesor 2 Prednosti 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 syst emy { Vl akna 10 Prnosy pouzit vl aken, prklady aplikac 2 proc se zavad vlakna v ramci procesu, prklady prnosu menu vypisovane soubezne se zpracovanm periodicky provaden automaticke kopie souboru prekreslovan obrazovky soubezne se zpracovanm dat paralelizace algoritmu v multiprocesoru dosazen leps strukturalizace programu 2 Prklady Souborovy server LAN { mus vyrizovat behem kratke doby nekolik pozadavku na soubory { pro vyrzen kazdeho pozadavku se zrd samostatne vlakno Symetricky multiprocesor { na ruznych procesorech muze bezet vce vlaken soucasne jedno vlakno zobrazuje menu a cte vstup od uzivatele a soucasne jine vlakno provad prkazy uzivatele periodicke provaden automaticke kopie souboru prekreslovan obrazovky soubezne se zpracovanm Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 11 Co se zsk a pouzitm vl aken 2 schopnost lepe reagovat na reseny problem multivlaknova interaktivn aplikace muze stale bezet, i kdyz jej cast je blokovana / se dlouho res / ... interakce s prohlzecem v jednom vlaknu prohlzece, zavaden obrazku jinym vlaknem 2 snazs sdlen zdroju aplikace, ktere se lis pouze nekolika odlisnymi aktivitami resenymi samostatne vlakny, mohou sdlet stejny adresovy prostor, hlavn program, ... Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 12 Co se zsk a pouzitm vl aken 2 snzen systemove rezie prepnan kontextu mezi vlakny je jednoduss nez prepnan kontextu mezi procesy napr. Solaris { vytvoren procesu je 30x pomalejs nez vytvoren vlakna { prepnan kontextu mezi procesy je 5x pomalejs nez mezi vlakny 2 ucinnejs vyuzit multiprocesorovych architektur soubeznost resen vlaken muze nabyt formy paralelismu Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 13 Prklad pouzit vl aken: RPC, Remote Procedure Call 2 Program provad dve RPC ke 2 ruznym serverum a pocta vysledek z obou hodnot 2 Implementace pomoc 1-vlaknoveho procesu Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 14 Prklad pouzit vl aken: RPC, Remote Procedure Call 2 Program provad dve RPC ke 2 ruznym serverum a pocta vysledek z obou hodnot 2 Implementace pomoc vce-vlaknoveho procesu na monoprocesoru { 1 vlakno na 1 server Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 15 Probl em konzistence mezi vl akny 2 Mejme aplikaci ktera sestava z vce nezavislych cast 2 Casti nemus bezet v sekvenci 2 Kazda cast se implementuje jako vlakno 2 Vlastnosti takove implementace Kdyz vlakno ceka konec I/O operace, muze bezet jine vlakno tehoz procesu, aniz by se prepojovalo mezi procesy vlakna jednoho procesu sdl pamet' a soubory a tudz mohou mezi sebou komunikovat, aniz by k tomu potrebovaly sluzby jadra vlakna jedne aplikace se proto mus mezi sebou synchronizovat, aby se zachovala konzistentnost zpracovavanych dat Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 16 Prklad probl emu zachov an konzistence dat 2 Scenar v procesu jsou vytvorena vlakna T 1 a T 2 T 1 pocta C = A + B, T 2 prenas hodnotu X z A do B: A = A − X; B = B + X T 1 a T 2 bez soubezne, nevme jak rychle kazde z nich 2 Formaln predstava o chovan systemu vlaken T 1 a T 2 T 2 udela A = A − X a B = B + X T 1 pocta C = A + B, hodnota C se tudz proveden T 2 nezmen 2 Mozna realita T 2 udela A = A − X T 1 spocta C = A + B = A − X + B T 2 udela B = B + X, coz C uz neovlivn Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 17 Stavy vl aken 2 tri klcove stavy bez pripravene cekajc 2 vsechny vlakna jednoho procesu sdlej stejny adresovy prostor vlakna se samostatne neodkladaj 2 ukoncen procesu ukoncuje vsechny vlakna existujc v ramci tohoto procesu Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 18 Typy vl aken 2 User-Level Threads (ULT) jadro OS podporuje procesy vlakna podporuje vlaknova knihovna sestavovana do programu uzivatele 2 Kernel-Level Threads (KLT) podporuje je prmo jadro OS take lightweight processes nebo kernel-supported threads Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 19 Vl akna na uzivatelsk e urovni, ULT 2 User-Level Threads (ULT) 2 vlastnosti Sprava vlaken se provad prostrednictvm vlaknove knihovny (thread library) na urovni uzivatelskeho / aplikacnho procesu, jadro o jejich existenci nev Prepojovan mezi vlakny nepozaduje provaden funkc jadra neprepna se ani kontext procesu ani rezim procesoru Planovan prepnan vlaken je speci cke pro konkretn aplikaci aplikace si vol pro sebe nejvhodnejs algoritmus 2 prklady POSIX { Pthreads Mach { C-threads Solaris { threads Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 20 Vl akna na uzivatelsk e urovni, ULT Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 21 Vztahy mezi ULT vl akny a stavy procesu Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 22 Vl akna na uzivatelsk e urovni, ULT 2 vlaknova knihovna obsahuje funkce pro vytvaren a rusen vlaken predavan zprav a dat mezi vlakny planovan behu vlaken uchovavan a obnova kontextu vlaken 2 Co dela jadro pro vlakna na uzivatelske urovni Jadro nev o aktivite vlaken, manipuluje pouze s procesy Kdyz nektere vlakno zavola sluzbu jadra a ceka dokud se sluzba nespln je blokovan cely proces, viz predchoz bod Stavy vlaken jsou na stavech procesu nezavisle pro vlaknovou knihovnu muze vlakno byt stale ve stavu ,,bezc" i kdyz je proces vraceny mezi ,,pripravene"procesy Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 23 Vl akna na uzivatelsk e urovni, ULT 2 Prednosti Prepojovan mezi vlakny nepozaduje provaden jadra neprepna se ani kontext ani rezim procesoru Planovan je speci cke pro konkretn aplikaci { vol si pro sebe nejvhodnejs algoritmus { ULT mohou bezet pod kterymkoliv OS { ULT potrebuj pouze adekvatn vlaknovou knihovnu 2 Nedostatky Vetsina volan sluzeb OS zpusobuje blokovan procesu Jadro blokuje procesy a ne vlakna Zadne vlakno existujc v ramci blokovaneho procesu nemuze bezet Jadro muze pridelovat procesor pouze procesum, takze dve vlakna jednoho procesu nemohou bezet paralelne, i kdyz proces bez v multiprocesoru Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 24 Vl akna na urovni j adra, KLT 2 Kernel-Level Threads (KLT) 2 vlastnosti Celou spravu vlaken podporuje jadro, vlaknova knihovna se nepouzva pouzva se API na vlaknove sluzby jadra Informaci o kontextu procesu a vlaken udrzuje jadro Prepojovan mezi vlakny aktivuje jadro Planovan se res na bazi vlaken 2 prklady Windows Solaris, Tru64 UNIX, Linux Mac OS X Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 25 Vl akna na urovni j adra, KLT Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 26 Vl akna na urovni j adra, KLT 2 Prednosti jadro muze soucasne planovat beh vce vlaken stejneho procesu na vce procesorech k blokovan dochaz na urovni vlaken i programy jadra mohou mt multi{vlaknovy charakter 2 Nedostatky prepojovan mezi vlakny tehoz procesu zprostredkovava jadro pri prepnut vlakna se 2x se prepna rezim procesoru vysledkem je zpomalen, snzen dostupneho aplikacnho vykonu Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 27 Kombinace ULT/KLT 2 vlakna se vytvarej v uzivatelskem prostoru 2 programator muze nastavit pocet vlaken na urovni jadra 2 lze kombinovat prnosy obou prstupu 2 podporuje Solaris Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 28 Kombinace ULT/KLT Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 29 Multivl aknov e modely 2 1 : 1 Kazdy ULT se zobrazuje do jednoho KLT tradicn Unixy verze 2 n : 1 Vce ULT se zobrazuje do jednoho KLT pouzva se na systemech, ktere nepodporuj KLT Windows 95/98/NT/2000/XP, Linux, Solaris 9 a vyss verze. Solaris Green Threads, GNU Portable Threads 2 n : m vce ULT se muze zobrazovat do vce KLT OS muze 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 syst emy { Vl akna 30 Multivl aknov e modely Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 31 Vl akna v syst emu Solaris 2 OS nevid ULT 2 OS prideluje procesor KLT 2 Lightweight process (LWP) rozhran pro paralelismus pro aplikace kazdy LWP podporuje 1 nebo vce ULT a zobrazuje je do jednoho KLT Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 32 Proces ve Windows a jeho zdroje 2 Jsou implementovane jako objekty 2 Proces lze vytvorit jako novy proces nebo jako kopii existujcho procesu 2 V procesu lze de novat jedno nebo vce vlaken 2 Procesy i vlakna maj vestavene synchronizacn vlastnosti 2 Proces je de novany jistym poctem akc /sluzeb, ktere muze vykonavat provad sluzbu, kdyz je volany nekterou z publikovanych metod rozhran vznika jako novy proces generovanm instance objektu ze sablony vlastnostem objektu se prirad hodnoty pri generovan objektu Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 33 Vztah proces u a zdroj u ve Windows Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 34 Vlastnosti objektu proces ve Windows Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 35 Vlastnosti objektu vl akno ve Windows Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 36 Stavy vl akna ve Windows Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 37 Windows 7 Architecture, vl akna a SMP 2 vlakna vsech procesu vc. systemovych (Executive) mohou bezet na kteremkoliv dostupnem procesoru 2 vlakna mohou bezet paralelne 2 vlakna jednoho procesu mohou bezet paralelne na ruznych procesorech v ramci jednoho procesu 2 server muze pouzt vce vlaken pro soucasnou obsluhu vce klientu soucasne 2 data a zdroje mohou procesy sdlet 2 procesy mohou mezi sebou komunikovat Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 38 Vl akna Java 2 vlakna jsou fundamentalnm model resen javovskeho programu jak implementovat JVM do hostitelskeho OS zadny standard neres { napr. XP: model 1:1 vlaknova knihovna Java byva 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 syst emy { Vl akna 39 Vl akna Java, prklad Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 40 Vl akna Java, prklad Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 41 Pozn amky k pr aci s vl akny 2 semantika fork() a exec() fork duplikuje proces v jednovlaknovem procesu ma duplikovat cely proces nebo jenom vlakno, ktere fork vyvolalo ? 2 jak ukoncit beh (cloveho) vlakna, ktery dosud neskoncil ? asynchronn zrusen { jedno vlakno bezprostredne ukonc clove vlakno odlozene zrusen { clove vlakno se periodicky dotazuje, zda ma skoncit Oznamen prerusen cloveho vlakna Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 42 Pozn amky k pr aci s vl akny odlozene zrusen { kontrolovan stavu ,,prerusen" Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 43 Pozn amky k pr aci s vl akny 2 zvladan signalu signal { Unixovska softwarova noti kace procesu, ze se stala (oznamovana) udalost signaly spravuje spravce signalu signal se procesu dopravuje operacnm systemem (programove) volby: { ma se signal dorucit 1 konkretnmu vlaknu v clovem procesu? { ma se signal dorucit vsem vlaknum v clovem procesu? { ma se signal dorucit jen jistym vlaknum v clovem procesu? { ma jedno vlakno spravovat vsechny signaly dorucene procesu ? Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 44 Pozn amky k pr aci s vl akny 2 prace s bankem vlaken (Thread Pool) bank vlaken { skupina vlaken pripravenych na spusten pri zadosti o nasobnou obsluhu serverem se nemus generovat nove vlakno neomezene generovan novych vlaken by mohlo vycerpat dostupne zdroje pripravene vlakno se rychleji spust nez vytvarene vlakno 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) vlakno muze mt vlastn kopii dat, nesdlenou s ostatnmi vlakny procesu napr. pri pouzvan banku vlaken Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 45 Prklady vl aknov ych knihoven 2 Pthreads standard API, IEEE 1003.1c, pro vytvaren a synchronicazi vlaken API urcuje chovan, implementaci standard nepredpisuje pouzvaj unixove orientovane systemy (Solaris, Linux, Mac OS X) 2 Windows XP Threads implementuje mapovan 1:1 kazde vlakno sestava z: id vlakna, sestava registru, samostatny uzivatelsky zasobnk a zasobnk jadra a privatn pamet'ova oblast { kontext vlakna 2 vlakna v Linuxu Linux pouzva pojem tasks msto threads (vlakno) vlakno se vytvar volanm systemu clone() vlakno je potomek a sdl s rodicovskym procesem adresovy prostor Jan Staudek, FI MU Brno | PB152 Operacn syst emy { Vl akna 46