Proces a vl akna Vl akna PB 15 Operacn syst emy Jan Staudek http://www..muni.cz/usr/staudek/vyuka/ Ð Û Å«Æ ±²³ µ ¹º»¼½¾ Ý Proces, resp. tak e task { drzitel zdroj u, vc. prostoru ve virtu aln pameti pro uchov an obrazu procesu { jednotka pl anov an cl dynamick eho pridelov an procesoru pro beh procesu Vl akno Sekvencn dej denovateln y v procesu. Pro OS jednotka pl anov an, nikoli vlastnictv zdroj u Vsechna vl akna denovan a v procesu se res soubezne, multitasking. Verze : jaro 017 PB15 Operacn systemy 1 Koncept sekvencnho procesu m uze b yt neefektivn Resen editoru pomoc vl aken Textov y editor cte z kl avesnice prkazy k editaci fom atuje text podle prkaz u z d uvodu spolehlivosti se pozaduje periodicky koprovat editovan y text do diskov eho souboru Resen editoru cist e sekvencnm procesem behem archivace bude ignorovat kl avesnici a mys dokud se archivace neukonc, v ykon editov an bude nzk y Naprogramov an do editoru obsluhy prerusen od mysi a kl avesnice b ehem archivace v ykon se vyleps, program bude slozit y Resen probl emu tremi procesy probl em neres, vsechny tri procesy by musely pracovat s jedin ym dokumentem PB15 Operacn systemy PB15 Operacn systemy 3
vl akno (thread) Proces a vl akno syst emov y objekt, kter y se vytv ar v r amci procesu je viditeln y pouze uvnitr procesu je charakterizov an sv ym stavem (procesory se prideluj vl akn um),,klasick y process"{ proces s jednm vl aknem vl akno se nach az ve stavech: bez, pripraven e,... kdyz vl akno nebez, kontext vl akna je ulozen y v TCB (Thread Control Block), v deskriptoru vl akna vl akno m uze pristupovat k LAP a k ostatnm zdroj um sv eho procesu tyto zdroje sdlej vsechny vl akna jednoho procesu { jakmile 1 vl akno zmen obsah nekter e bu nky LAP, vsechny ostatn vl akna (t ehoz procesu) nov y obsah vid { soubor otevren y jednm vl aknem vid vsechny ostatn vl akna (t ehoz procesu) skupina vl aken jednoho procesu sdl promenn e (LAP, pridelen y FAP), otevren e soubory,... id vl akna Generick y obsah TCB, deskriptoru vl akna odkaz na jeho rodicovsk y proces umoz nujc vl aknu prstup ke zdroj um prid elen ym procesu (na vlastnka vl akna) priorita vl akna stav vl akna stav ctace instrukc a dalsch registr u procesoru po prerusen odkaz na z asobnk PB15 Operacn systemy 4 PB15 Operacn systemy 5 Multitasking / multithreading Vl akna vs. Procesy PB15 Operacn systemy 6 PB15 Operacn systemy 7
Klient-server resen y pomoc vl aken Web server resen y pomoc vl aken Proces m uze denovat vce aktivit provediteln ych soub ezn e Napr. server m uze obsluhovat vce pozadavk u klient u soubezne PB15 Operacn systemy 8 PB15 Operacn systemy 9 Pouzit vl aken Univerz aln n astroj pro vsechny aplikace od interaktivnho kreslen po hry napr. behem cten kl avesnice jednm vl aknem jin e vl akno vykresluje obr azek Efektivn vyuzit multiprocesorov ych poctac u moznost skutecne paralelnho behu vl aken na r uzn ych procesorech msto multitaskingu sdlejcho jedin y procesor Prednosti Vl akno se vytvor rychleji nez proces Vl akno se ukonc rychleji nez proces Mezi vl akny se rychleji prepn a nez mezi procesy Dos ahne se leps strukturalizace programu Prnosy pouzit vl aken, prklady aplikac proc se zav ad vl akna v r amci procesu, prklady prnos u menu vypisovan e soubezne se zpracov anm periodicky prov aden automatick e kopie souboru prekreslov an obrazovky soubezne se zpracov anm dat paralelizace algoritmu v multiprocesoru dosazen leps strukturalizace programu Prklady Souborov y server LAN { mus vyrizovat behem kr atk e doby nekolik pozadavk u na soubory { pro vyrzen kazd eho pozadavku se zrd samostatn e vl akno Symetrick y multiprocesor { na r uzn ych procesorech m uze bezet vce vl aken soucasne jedno vl akno zobrazuje menu a cte vstup od uzivatele a soucasne jin e vl akno prov ad prkazy uzivatele periodick e prov aden automatick e kopie souboru prekreslov an obrazovky soubezne se zpracov anm PB15 Operacn systemy 10 PB15 Operacn systemy 11
Co se zsk a pouzitm vl aken schopnost l epe reagovat na resen y probl em snzen syst emov e rezie Co se zsk a pouzitm vl aken multivl aknov a interaktivn aplikace m uze st ale bezet, i kdyz jej c ast je blokovan a / se dlouho res /... interakce s prohlzecem v jednom vl aknu prohlzece, zav aden obr azku jin ym vl aknem snazs sdlen zdroj u aplikace, kter e se lis pouze nekolika odlisn ymi aktivitami resen ymi samostatne vl akny, mohou sdlet stejn y adresov y prostor, hlavn program,... prepn an kontextu mezi vl akny je jednoduss nez prepn an kontextu mezi procesy napr. Solaris { vytvoren procesu je 30x pomalejs nez vytvoren vl akna { prepn an kontextu mezi procesy je 5x pomalejs nez mezi vl akny ucinn ejs vyuzit multiprocesorov ych architektur soubeznost resen vl aken m uze nab yt formy paralelismu PB15 Operacn systemy 1 PB15 Operacn systemy 13 Prklad pouzit vl aken: RPC, Remote Procedure Call Prklad pouzit vl aken: RPC, Remote Procedure Call Program prov ad dve RPC ke r uzn ym server um a poct a v ysledek z obou hodnot Implementace pomoc 1-vl aknov eho procesu Program prov ad dve RPC ke r uzn ym server um a poct a v ysledek z obou hodnot Implementace pomoc vce-vl aknov eho procesu na monoprocesoru { 1 vl akno na 1 server PB15 Operacn systemy 14 PB15 Operacn systemy 15
Probl em konzistence mezi vl akny Mejme aplikaci kter a sest av a z vce nez avisl ych c ast C asti nemus b ezet v sekvenci Kazd a c ast se implementuje jako vl akno Vlastnosti takov e implementace Kdyz vl akno cek a konec I/O operace, m uze bezet jin e vl akno t ehoz procesu, aniz by se prepojovalo mezi procesy vl akna jednoho procesu sdl pamet' a soubory a tudz mohou mezi sebou komunikovat, aniz by k tomu potrebovaly sluzby j adra vl akna jedn e aplikace se proto mus mezi sebou synchronizovat, aby se zachovala konzistentnost zpracov avan ych dat Sc en ar Prklad probl emu zachov an konzistence dat v procesu jsou vytvorena vl akna T 1 a T T 1 poct a C = A + B, T pren as hodnotu X z A do B: A = A X; B = B + X T 1 a T bez soubezne, nevme jak rychle kazd e z nich Form aln predstava o chov an syst emu vl aken T 1 a T T udel a A = A X a B = B + X T 1 poct a C = A + B, hodnota C se tudz proveden T nezmen Mozn a realita T udel a A = A X T 1 spoct a C = A + B = A X + B T udel a B = B + X, coz C uz neovlivn PB15 Operacn systemy 16 PB15 Operacn systemy 17 tri klcov e stavy bez pripraven e cekajc Stavy vl aken vsechny vl akna jednoho procesu sdlej stejn y adresov y prostor vl akna se samostatne neodkl adaj User-Level Threads (ULT) j adro OS podporuje procesy Typy vl aken vl akna podporuje vl aknov a knihovna sestavovan a do programu uzivatele Kernel-Level Threads (KLT) podporuje je prmo j adro OS tak e lightweight processes nebo kernel-supported threads ukoncen procesu ukoncuje vsechny vl akna existujc v r amci tohoto procesu PB15 Operacn systemy 18 PB15 Operacn systemy 19
Vl akna na uzivatelsk e urovni, ULT Vl akna na uzivatelsk e urovni, ULT User-Level Threads (ULT) vlastnosti Spr ava vl aken se prov ad prostrednictvm vl aknov e knihovny (thread library) na urovni uzivatelsk eho / aplikacnho procesu, j adro o jejich existenci nev Prepojov an mezi vl akny nepozaduje prov aden funkc j adra neprepn a se ani kontext procesu ani rezim procesoru Pl anov an prepn an vl aken je specick e pro konkr etn aplikaci aplikace si vol pro sebe nejvhodnejs algoritmus prklady POSIX { Pthreads Mach { C-threads Solaris { threads PB15 Operacn systemy 0 PB15 Operacn systemy 1 Vztahy mezi ULT vl akny a stavy procesu Vl akna na uzivatelsk e urovni, ULT vl aknov a knihovna obsahuje funkce pro vytv aren a rusen vl aken pred av an zpr av a dat mezi vl akny pl anov an beh u vl aken uchov av an a obnova kontext u vl aken Co del a j adro pro vl akna na uzivatelsk e urovni J adro nev o aktivite vl aken, manipuluje pouze s procesy Kdyz nekter e vl akno zavol a sluzbu j adra a cek a dokud se sluzba nespln je blokov an cel y proces, viz predchoz bod Stavy vl aken jsou na stavech procesu nez avisl e pro vl aknovou knihovnu m uze vl akno b yt st ale ve stavu,,bezc" i kdyz je proces vr acen y mezi,,pripraven e"procesy PB15 Operacn systemy PB15 Operacn systemy 3
Prednosti Vl akna na uzivatelsk e urovni, ULT Prepojov an mezi vl akny nepozaduje prov aden j adra neprepn a se ani kontext ani rezim procesoru Pl anov an je specick e pro konkr etn aplikaci { vol si pro sebe nejvhodnejs algoritmus { ULT mohou bezet pod kter ymkoliv OS { ULT potrebuj pouze adekv atn vl aknovou knihovnu Nedostatky Vetsina vol an sluzeb OS zp usobuje blokov an procesu J adro blokuje procesy a ne vl akna Z adn e vl akno existujc v r amci blokovan eho procesu nem uze bezet J adro m uze pridelovat procesor pouze proces um, takze dve vl akna jednoho procesu nemohou bezet paralelne, i kdyz proces bez v multiprocesoru Vl akna na urovni j adra, KLT Kernel-Level Threads (KLT) vlastnosti Celou spr avu vl aken podporuje j adro, vl aknov a knihovna se nepouzv a pouzv a se API na vl aknov e sluzby j adra Informaci o kontextu procesu a vl aken udrzuje j adro Prepojov an mezi vl akny aktivuje j adro Pl anov an se res na b azi vl aken prklady Windows Solaris, Tru64 UNIX, Linux Mac OS X PB15 Operacn systemy 4 PB15 Operacn systemy 5 Vl akna na urovni j adra, KLT Vl akna na urovni j adra, KLT Prednosti j adro m uze soucasne pl anovat beh vce vl aken stejn eho procesu na vce procesorech k blokov an doch az na urovni vl aken i programy j adra mohou mt multi{vl aknov y charakter Nedostatky prepojov an mezi vl akny t ehoz procesu zprostredkov av a j adro pri prepnut vl akna se x se prepn a rezim procesoru v ysledkem je zpomalen, snzen dostupn eho aplikacnho v ykonu PB15 Operacn systemy 6 PB15 Operacn systemy 7
Kombinace ULT/KLT Kombinace ULT/KLT vl akna se vytv arej v uzivatelsk em prostoru program ator m uze nastavit pocet vl aken na urovni j adra lze kombinovat prnosy obou prstup u podporuje Solaris PB15 Operacn systemy 8 PB15 Operacn systemy 9 Multivl aknov e modely Multivl aknov e modely 1 : 1 Kazd y ULT se zobrazuje do jednoho KLT tradicn Unixy verze n : 1 Vce ULT se zobrazuje do jednoho KLT pouzv a se na syst emech, kter e nepodporuj KLT Windows 95/98/NT/000/XP, Linux, Solaris 9 a vyss verze. Solaris Green Threads, GNU Portable Threads n : m vce ULT se m uze zobrazovat do vce KLT OS m uze vytvorit dostatecn y pocet KLT Solaris do verze 9, Windows NT/000 with the ThreadFiber package two-level model { model n : m s moznost v azat konkr etn ULT na konkr etn KLT (IRIX, HP=UX, True64 Unix) PB15 Operacn systemy 30 PB15 Operacn systemy 31
Vl akna v syst emu Solaris Proces ve Windows a jeho zdroje Jsou implementovan e jako objekty Proces lze vytvorit jako nov y proces nebo jako kopii existujcho procesu V procesu lze denovat jedno nebo vce vl aken Procesy i vl akna maj vestav en e synchronizacn vlastnosti Proces OS nevid ULT OS prid eluje procesor KLT Lightweight process (LWP) rozhran pro paralelismus pro aplikace kazd y LWP podporuje 1 nebo vce ULT a zobrazuje je do jednoho KLT je denovan y jist ym poctem akc /sluzeb, kter e m uze vykon avat prov ad sluzbu, kdyz je volan y nekterou z publikovan ych metod rozhran vznik a jako nov y proces generov anm instance objektu ze sablony vlastnostem objektu se prirad hodnoty pri generov an objektu PB15 Operacn systemy 3 PB15 Operacn systemy 33 Vztah proces u a zdroj u ve Windows Vlastnosti objektu proces ve Windows PB15 Operacn systemy 34 PB15 Operacn systemy 35
Stavy vlakna ve Windows Vlastnosti objektu vlakno ve Windows PB15 Operacn 36 vlakna v sech procesu v c. systemov ych (Executive) mohou b ez et na kteremkoliv dostupnem procesoru vlakna mohou b ez et paraleln e vlakna jednoho procesu mohou b ez et paraleln e na ruzn ych procesorech v ramci jednoho procesu server mu ze pou z t v ce vlaken pro sou casnou obsluhu v ce klientu sou casn e data a zdroje mohou procesy sd let procesy mohou mezi sebou komunikovat PB15 Operacn PB15 Operacn 37 Vlakna Java Windows 7 Architecture, vlakna a SMP vlakna jsou fundamentaln m model r e sen javovskeho programu X jak implementovat JVM do hostitelskeho OS z adn y standard ne re s { nap r. XP: model 1:1 X vlaknov a knihovna Java byv a mapovana na vlaknovou knihovnu hostitelskeho OS { JVM ve XP: na API Win3 { JVM v Linux/Solaris: na API Pthreads 38 PB15 Operacn 39
Vlakna Java, p r klad Vlakna Java, p r klad PB15 Operacn 40 Poznamky k praci s vlakny PB15 Operacn 41 Poznamky k praci s vlakny semantika fork() a exec() X odlo zene zru sen { kontrolovan stavu,,p reru sen " X fork duplikuje proces v jednovlaknov em procesu X ma duplikovat cely proces nebo jenom vlakno, ktere fork vyvolalo? jak ukon cit b eh (c loveho) vlakna, ktery dosud neskon cil? X asynchronn zru sen { jedno vlakno bezprost redn e ukon c c love vlakno X odlo zene zru sen { c love vlakno se periodicky dotazuje, zda ma skon cit Oznamen p reru sen c loveho vlakna PB15 Operacn 4 PB15 Operacn 43
zvl ad an sign al u Pozn amky k pr aci s vl akny sign al { Unixovsk a softwarov a notikace procesu, ze se stala (oznamovan a) ud alost sign aly spravuje spr avce sign al u sign al se procesu dopravuje operacnm syst emem (programove) volby: { m a se sign al dorucit 1 konkr etnmu vl aknu v clov em procesu? { m a se sign al dorucit vsem vl akn um v clov em procesu? { m a se sign al dorucit jen jist ym vl akn um v clov em procesu? { m a jedno vl akno spravovat vsechny sign aly dorucen e procesu? Pozn amky k pr aci s vl akny pr ace s bankem vl aken (Thread Pool) bank vl aken { skupina vl aken pripraven ych na spusten pri z adosti o n asobnou obsluhu serverem se nemus generovat nov e vl akno neomezen e generov an nov ych vl aken by mohlo vycerpat dostupn e zdroje pripraven e vl akno se rychleji spust nez vytv aren e vl akno tri javovsk e architektury banku vl aken: 1. Single thread executor { bank o rozmeru 1. Fixed thread executor { bank o rozmeru > 1 3. Cached thread pool - bank neomezen eho rozsahu pr ace s vlastnmi daty vl akna (Thread Specific Data) vl akno m uze mt vlastn kopii dat, nesdlenou s ostatnmi vl akny procesu napr. pri pouzv an banku vl aken PB15 Operacn systemy 44 PB15 Operacn systemy 45 Prklady vl aknov ych knihoven Pthreads standard API, IEEE 1003.1c, pro vytv aren a synchronicazi vl aken API urcuje chov an, implementaci standard nepredpisuje pouzvaj unixove orientovan e syst emy (Solaris, Linux, Mac OS X) Windows XP Threads implementuje mapov an 1:1 kazd e vl akno sest av a z: id vl akna, sestava registr u, samostatn y uzivatelsk y z asobnk a z asobnk j adra a priv atn pamet'ov a oblast { kontext vl akna vl akna v Linuxu Linux pouzv a pojem tasks msto threads (vl akno) vl akno se vytv ar vol anm syst emu clone() vl akno je potomek a sdl s rodicovsk ym procesem adresov y prostor PB15 Operacn systemy 46