Počítačové sítě a operační systémy C:\Users\xplhak\Desktop\filogo.png Jaromír Plhák, 19.2.2018 PB169 Počítačové sítě a operační systémy Jaromír Plhák xplhak@fi.muni.cz Procesy a vlákna • C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Vnitřní struktura OS •Existuje řada přístupů a implementací –Jedno velké monolitické jádro –Modulární, hierarchický přístup –Malé jádro a samostatné procesy •Struktura mnoha OS je poznamenána historií OS a původními záměry, které se mohou od současného stavu radikálně lišit C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Monolitické jádro •OS běží kompletně v jaderném paměťovém prostoru (kernel space) •Činnosti jednotlivých subsystémů jsou odděleny, ale velice silně provázány –Navíc sdílejí stejný paměťový prostor •Například MS-DOS C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Hierarchická vrstvová architektura (1) •OS se dělí do jistého počtu vrstev (úrovní) •Každá vrstva je budována na funkcionalitě nižších vrstev •Nejnižší vrstva (0) je hardware •Nejvyšší vrstva je uživatelské rozhraní •Pomocí principu modulů jsou vrstvy vybírány tak, aby každá používala funkcí (operací) a služeb pouze vrstvy n – 1 • C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Hierarchická vrstvová architektura (2) • new operations existing operations hidden operations layer M layer M - 1 C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Hierarchická vrstvová architektura (3) •Řeší problém přílišné složitosti velkého systému –Provádí se dekompozice velkého problému na několik menších zvládnutelných problémů •Každá úroveň řeší konzistentní podmnožinu funkcí •Nižší vrstva nabízí vyšší vrstvě „primitivní“ funkce (služby) •Nižší vrstva nemůže požadovat provedení služeb vyšší vrstvy •Používají se přesně definovaná rozhraní –Jednu vrstvu lze uvnitř modifikovat, aniž to ovlivní ostatní vrstvy – princip modularity • C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Hierarchická vrstvová architektura (4) •Výhodou je modularita OS •Nevýhodou je především vyšší režie a tím pomalejší vykonávání systémových volání •Protože efektivita hraje v jádře OS významnou roli je třeba volit kompromis –Pouze omezený počet úrovní pokrývající vyšší funkcionalitu –Příkladem je první verze Windows NT •Měly hierarchickou strukturu s řadou vrstev, avšak pro zvýšení výkonu OS bylo ve verzi NT 4.0 rozhodnuto přesunout více funkcionality do jádra a sloučit některé vrstvy • Linux_kernel_map C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Struktura s mikrojádrem (1) •Microkernel System Structure •Malé jádro OS plnící pouze několik málo nezbytných funkcí –Primitivní správa paměti (adresový prostor) –Komunikace mezi procesy – Interprocess communication (IPC) •Většina funkcí z jádra se přesouvá do „uživatelské“ oblasti –Ovladače HW zařízení, služby systému souborů, virtualizace paměti … –Mezi uživatelskými procesy se komunikuje předáváním zpráv V současnosti se zase vrací k monolititickému jádru C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Struktura s mikrojádrem (2) •Výhody mikrojádra –Snadná přenositelnost OS, jádro je malé –Vyšší spolehlivost (moduly mají jasné API a jsou snadněji testovatelné) –Vyšší bezpečnost (méně kódu OS běží v režimu jádra) –Flexibilita (jednodušší modifikace, přidání, odebrání modulů) –Všechny služby jsou poskytovány jednotně (výměnou zpráv) •Nevýhoda mikrojádra –Zvýšená režie –Volání služeb je nahrazeno výměnou zpráv mezi procesy • C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Monolitické jádro a mikrojádro • Unix Server Application IPC Device Driver File Server Application Basic IPC. Virtual Memory, Schelduling Device Drivers, Dispatcher, … Scheduler, Virtual Memory IPC, File System VFS user mode kernel mode Hardware Hardware Microkernel based Operating System System Call Monolithic Kernel based Operating System C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Program a proces (1) •Program –Soubor přesně definovaného formátu obsahující •Posloupnost instrukcí, případně sdílená více procesy •Data potřebná k provedení stanoveného úkolu •Proces (Task) –Akt provádění programu, instance výpočtu podle programu –Proces je systémový objekt – jednotka aktivity charakterizovatelná prováděním posloupnosti instrukcí, okamžitým stavem a relevantní množinou systémových zdrojů Proces je dynamická jednotka činnosti řízená programem. C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Program a proces (2) •Proces (pokr.) –Je charakterizovaný svým kontextem •OS přiděluje prostor ve FAP procesům, ne programům, proces vlastní obraz virtuálního (logického) adresového prostoru uchovávaný na vnější paměti, proces může vlastnit soubory, I/O zařízení, okna na obrazovce, komunikační kanály k jiným procesům (sockets), ... –OS přiděluje procesu čas procesoru, proces drží procesor = běží • C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Co je to proces? •Pro spuštěný program máme řadu pojmenování –Dávkové systémy – úlohy, dávky, jobs –Multitaskingové systémy – procesy, vlákna •Společné pojmenování pro spuštěný program je proces •Dále zavádíme pojem vlákno pro „dílčí“ proces v rámci procesu –Abstrakce jedné z možných sekvenčních činností procesu –Proces zahrnuje mimo prostředí běhu alespoň jedno vlákno •Může se realizovat pomocí několika vláken C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Data nutná pro správu a řízení procesů (1) •Stavové informace –Registry procesoru •Obecné (střadače, ... ), speciální •Stav procesoru, ukazatelé zásobníku, ukazatelé haldy, čítač instrukcí •Registr s návratovou adresou, ... –Běží, čeká na událost, je připravený běžet, … C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Data nutná pro správu a řízení procesů (2) •Informace nutné pro správu a řízení procesů –Priorita procesu, stav procesu –Informace o používání zdrojů systému procesem •Spotřebovaný čas procesoru, doba běhu •PID (process identifier), účet vlastníka procesu, seznam I/O zařízení vlastněných procesem, seznam otevřených souborů, ukazatelé vyrovnávacích pamětí používaných pro otevřené soubory, ... •Informace o používaných prostorech v operační paměti –Báze, délka oblasti I stránkovací tabulka při virtualizaci paměti •... C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Informace OS o procesu •Process Control Block – tabulka obsahující informace potřebné pro definici a správu procesu (udržovaná OS) –Id procesu a jeho priorita –Stav procesu (běžící, připravený, …) –Čítač instrukcí –Registry procesoru –Informace potřebné pro správu paměti –Informace potřebné pro správu I/O –Účtovací informace –... • -Při vytváření procesu si nejdříve vytváří tuto strukturu -Všechny zdroje, které proces potřebuji -Obsahuje stavové proměnné -Proces čerpá dobu procesoru (strojový čas), je uloženo kolik odčerpal -Když mám proces, který trvá hodiny, tak je jedno jestli bude trvat 10 - 11 hodin -Když mám chvilkový proces, tak by neměl čekat několik minut -Podpora koexistence více procesů v jednom pod jedním OS -Umožňuje běžící proces přerušit a později v něm pokračovat C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Stavy procesu (1) •Proces se může nacházet v jednom ze stavů –Nový (new) – právě vytvořený proces –Běžící (running) – některý procesor právě vykonává instrukce procesu –Čekající (waiting) – čeká na určitou událost –Připravený (ready) – čeká na přidělení času procesoru –Ukončený (terminated) – ukončil své provádění C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Stavy procesu (2) • 5 - stavová abstrakce -nový, new - iniciální stav, právě vytvořený proces, identifikovatelný, dosud neplánovaný -běžící, running - jeho program se právě interpretuje některou CPU -čekající, waiting - čeká až nastane jistá událost, jiná než přidělení procesoru (semafor, i/o operaci) -připravený, ready - čeká na přidělení procesoru, zvláštní stav čekání na jediný typ události, na přidělení procesoru -Ukončený, terminated - ukončil své provádění, stále ještě identifikovatelný (zombie - už není činný, ale informace o něm ještě přežívá) ... zruší se PCB C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Stavy procesu (3) • C:\Users\User1\Disk Google\Flash\!!Lektor\Vyuka\PB169\PrezentacePrednasky\img\05_procesy.jpg Máme frontu operací čekající na provedení Stavy mohou být i odložené = nejsou ve fyzické paměti ale jsou na vnější paměti (protože se do vnitřní nevešly) - odložený čekající, odložený připravený Blocked queue ... může jich být více C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Vytvoření procesu, přepnutí z procesu na OS •OS rozhodl, že vytvoří nový proces –Přidělí novému procesu jedinečný id –Vyhradí ve fyzickém adresovém prostoru místo pro každou potřebnou komponentu obrazu procesu –Inicializuje PCB –Proces zařadí do vhodné fronty (mezi připravené procesy) –Vytvoří nebo doplní potřebné datové struktury (účtovací soubor apod.) •Příčiny přepnutí z procesu na OS –Přerušením – je nutná reakce OS na asynchronní událost, externí vůči běžícímu procesu (I/O, časovač, výpadek, ... ) –Synchronním přerušením – je nutná reakce OS na událost souvi-sející s prováděnou instrukcí (chyba, výjimka, volání služby OS) –OS obslouží příčinu přerušení a rozhodne o dalším postupu Nemáte šanci adresovat proces v sítí (neznáte jeho PID). Pioužívají se sockets (schránky) - procesy jsou domluvené, že jeden do ní vkládá informace a druhý si je odebírá. Asynchronní - něco, co vůbec nesouvisí s běžícím procesem Synchronní (trap) - řízené procesem, já něco potřebuji po operačním systému - nemůžu do něj skočit jako podprogram (jiné mapování LAP na FAP, neznám jako programátor vstupní body pro služby OS) - parametricky řeknu OS co po něm chci. OS stejně musí uklidit proces do PCB (bude to potřebovat procesor) a zařadí ho mezi připravené a zavolá se dispečer (služby mohou změnit priority apod.) - takže dispečer musí rozhodnout férově C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Přepnutí procesu • C:\Users\User1\Disk Google\Flash\!!Lektor\Vyuka\PB169\PrezentacePrednasky\img\05_procesyb.jpg Vymění se čítač instrukcí za správu přerušení Uklidí se stav procesu do PCB Context switching jsou statisíce instrukcí = velká režie. Přidělený čas bývá 50, 80 milisekund (nanosekundová instrukce - je to spousta času). Pokud by byl zase příliš dlouhý, tak by zase snižoval dobu reakce. Když chci něco zanedbat, tak by to mělo být aspoň o dva řády nižší. C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Přepnutí kontextu (1) •Vyžádá se služba, akceptuje se některé asynchronní přerušení, obslouží se a nově se vybere jiný běžící proces •Když OS přepojuje CPU z procesu X na proces Y, musí –Uchovat (uložit v PCB procesu X) stav původně běžícího procesu –Zavést stav nově běžícího procesu (z PCB procesu Y) •Přepnutí kontextu představuje režijní ztrátu (zátěž) –Během přepínání systém nedělá nic efektivního • C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Přepnutí kontextu (2) •Doba přepnutí závisí na konkrétní HW platformě –Počet registrů procesoru, speciální instrukce pro uložení/načtení všech registrů procesoru apod. •Při přerušení musí procesor –Uchovat čítač instrukcí –Zavést do čítače instrukcí hodnotou adresy vstupního bodu ovladače přerušení z vektoru přerušení • C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Vytvoření procesu •Rodič vytváří potomky (další procesy) •Potomci mohou vytvářet další potomky … •Vzniká strom procesů •Sdílení zdrojů – varianty při vytváření potomků –Rodič a potomek sdílejí zdroje původně vlastněné rodičem –Potomek sdílí rodičem vyčleněnou podmnožinu zdrojů s rodičem –Potomek a rodič jsou plně samostatné procesy, nesdílí žádný zdroj •Běh –Rodič a potomek mohou běžet souběžně –Rodič čeká na ukončení potomka C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Ukončení procesu •Proces provede poslední příkaz a sám požádá OS o ukončení –Výstupní data procesu se předají rodiči (pokud o to má zájem – např. čeká na ukončení potomka voláním wait) –Zdroje končícího procesu se uvolňují operačním systémem •O ukončení procesu žádá jeho rodič (nebo jiný proces s dostatečnými právy), protože např. –Potomek překročil stanovenou kvótu přidělených zdrojů –Úkol přidělený potomkovi rodič již dále nepotřebuje –Rodič končí svoji existenci a nebylo povoleno, aby potomek přežil svého rodiče –Může docházet ke kaskádnímu ukončování (ukončí se celá větev stromu procesů) • C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Příklad – Linux (1) •volání fork() implementováno jako copy-on-write (tj. dokud paměť není měněna je sdílena a až při pokusu o modifikaci je vytvořena kopie) •vfork – upravené fork, které nekopíruje stránky paměti rodičovského procesu –Rychlejší –Vhodné pro okamžité spuštění execve C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Příklad – Linux (2) •clone – upravené fork, které umožňuje sdílet některé zdroje (například paměť, deskriptory souborů, ovladače signálů) mezi rodičovským a nově vytvořeným procesem. •Informace o procesu jsou uloženy ve struktuře task_struct (viz usr/include/sched.h) • C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Příklad – Linux (3) • procflow C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Procesy a vlákna (1) •Program –Soubor definovaného formátu obsahující instrukce, data a další informace potřebné k provedení daného úkolu •Proces –Systémový objekt charakterizovaný svým paměťovým prostorem a kontextem (paměť i některé další zdroje jsou přidělovány procesům) •Vlákno, také „sled“ –Objekt, který vzniká v rámci procesu, je viditelný pouze uvnitř procesu a je charakterizován svým stavem (CPU se přidělují vláknům) • Proces je sekvenční záležitost. Jak rozmělnit proces na menší paralelní části (které není nutné dělat sekvenčně). Vytvoření a správa procesu jsou organizačně náročné činnosti. Procesor nabízí možnosti jak rozdělit činnosti, které mohou být provedeny paralelně. Vlákna sdílí zdroje. Konečně efektivní využití multiprocesorových systémů. Textový editor načítá data z klávesnice a čas od času je ukládá na vnější paměť. Ta archivace je zdánlivě dlouhodobá záležitost a po celou dobu archivace mi nebude reagovat klávesnice (proces bude obsluhovat tu archivaci). Přeskakování je velmi obtížné a nepomůže nám ani rozdělení na tři samostatné procesy (načítání, vypisování, archivace) … jeden proces by držel prostředky (přístup k souboru). Na přelomu 80. a 90. let vzniká koncept vláken, která se vytváří v rámci procesu a je viditelné pouze v rámci tohoto procesu. Vzhledem k tomu, že sdílejí zdroje je nutné, aby se koordinovali a nevnikali nekonzistence. Vlákna - multitasking na úrovni vnitřku procesu. C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Procesy a vlákna (2) •Model – jen procesy (ne vlákna) –Proces – jednotka plánování činnosti i jednotka vlastnící prostředky •Model – procesy a vlákna –Proces – jednotka vlastnící zdroje –Vlákno – jednotka plánování činnosti • C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Procesy a vlákna (3) •Každé vlákno si udržuje svůj vlastní –Zásobník –PC (Program Counter) –Registry –TCB (Thread Control Block) •Vlákno může přistupovat k paměti a ostatním zdrojům svého procesu –Zdroje procesu sdílí všechna vlákna jednoho procesu –Jakmile jedno vlákno změní obsah (nelokální – mimo zásobník) buňky, všechna ostatní vlákna (téhož procesu) to vidí –Soubor otevřený jedním vláknem mají k dispozici všechna ostatní vlákna (téhož procesu) • C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Procesy a vlákna (4) •Proč využít vlákna –Využití multiprocesorových strojů (vlákna jednoho procesu mohou běžet na různých CPU) –Typický příklad •Jedno vlákno provádí uživatelem požadovaný úkol a druhé vlákno překresluje obrazovku C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Procesy a vlákna (5) •1:1 –UNIX Systém V, (MS-DOS) •Pojem vlákno neznámý, každé „vlákno“ je procesem s vlastním adresovým prostorem a s vlastními prostředky •1:M –OS/2, Windows XP, Mach, … •V rámci jednoho procesu lze vytvořit více vláken •Proces je vlastníkem zdrojů (vlákna sdílejí zdroje procesu) • Vlákno a proces jedno bylo Definuji činnosti, které mohou být prováděny současně. Současné systémy umožňují multitasking na úrovni procesu a zároveň na úrovni vláken. C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Procesy a vlákna (6) • Každé vlákno má vlastní thread control block C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Výhody využití vláken •Vlákno se vytvoří rychleji než proces •Vlákno se ukončí rychleji než proces •Mezi vlákny se rychleji přepíná než mezi procesy •Jednodušší programování (jednodušší struktura programu) •U multiprocesorových systémů může na různých procesorech běžet více vláken jednoho procesu současně • Například Solaris – vytvoření procesu 30x pomalejší než vytvoření vlákna. Přepínání mezi procesy 5x pomalejší než mezi vlákny. C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Příklady využití vláken •Síťový souborový (nebo i jiný) server –Musí vyřizovat řadu požadavků klientů –Pro vyřízení každého požadavku vytváří samostatné vlákno (efektivnější než samostatný proces) •Jedno vlákno zobrazuje menu a čte vstup od uživatele a současně druhé vlákno provádí příkazy uživatele •Překreslování obrazovky souběžně se zpracováním dat • Jedno vlákno získává informace ze sítě. Pro každý požadavek je vybráno jedno vlákno, které je spracovává. C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Problém konzistence •Program se skládá z několika vláken které běží paralelně •Výhody –Když vlákno čeká na ukončení I/O operace, může běžet jiné vlákno téhož procesu, aniž by se přepínalo mezi procesy (což je časově náročné) –Vlákna jednoho procesu sdílí paměť a deskriptory otevřených souborů a mohou mezi sebou komunikovat, aniž by k tomu potřebovala služby jádra (což by bylo pomalejší) •Konzistence –Vlákna jedné aplikace se proto musí mezi sebou synchronizovat, aby se zachovala konzistentnost dat (musíme zabránit současné modifikace stejných dat dvěma vlákny apod.) • Ukládám si mezivýsledky do nějaké sdílené proměnné C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Problém konzistence – příklad •Situace –3 proměnné – A, B, C –2 vlákna – T1, T2 –Vlákno T1 počítá C = A+B –Vlákno T2 přesouvá hodnotu X z A do B (jakoby z účtu na účet) •Představa o chování –T2 dělá A = A-X a B = B+X –T1 počítá konstantní C, tj. A + B se nezmění •Ale jestliže –T1 spočítá A+B poté co T2 udělá A = A-X –Ale dříve než co T2 udělá B = B+X –Pak T1 nezíská správný výsledek C = A+B • Paralelismus sebou nese spoustu patologických situací, které nám umožní efektivně řešit jednotlivé synchronizační úlohy Základní premisa multitaskingu – nemůžu předpokládat (a ani nepředpokládám) nic o rychlosti běhu vlákna/procesu. Může být kdykoliv přerušeno. My budeme muset zavést synchronizační mechanismy, které umožní jejich spuštění paralelně, ale v okamžiku, kdy bude provádět vlákno operace počítání s proměnnými (sdílenými daty) bude probíhat jen jedno z nich (a může to být v libovolném pořadí). To zajistím nějakou službou operačního systému. Zavedeme si pojem kritických sekcí. Synchronizace musí zajistit atomičnost operací (A = A-X a B = B+X) C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Stavy vláken •Tři klíčové stavy vláken –Běžící –Připravené –Čekající •Vlákna se (samostatně) neodkládají –Všechna vlákna jednoho procesu sdílejí stejný adresový prostor •Ukončení procesu ukončuje všechny vlákna existující v rámci tohoto procesu C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Příklad – Win32 (1) •Implementuje vlákna na úrovni jádra OS –Implementace je zdařilá, umožňuje mimo jiné paralelní běh vláken jednoho procesu na různých procesorech •Služby OS –CreateThread –ExitThread –GetExitCodeThread –CreateRemoteThread (vytváří vlákno jiného procesu) –SuspendThread • Vytvoření vlákna je na úrovni služeb OS v jádře. Přepojování mezi vlákny řeší jádro. Tím pádem se řeší přechod mezi uživatelským a privilegovaným režimem procesoru. Zvýšení režie. Například Solaris podporuje jak user level vlákna (knihovna zavádějící informaci o vláknech do procesu) s kernel level vlákny C:\Users\xplhak\Desktop\filogo.png PB169 Počítačové sítě a operační systémy Snímek ‹#› z 42 Příklad – Win32 (2) •Služby OS pokračování –ResumeThread –GetProcessAffinityMask (běh vlákna na procesorech) –SetProcessAffinityMask –SetThreadIdealProcessor –SwitchToThread (spusť jiný thread – je-li připraven) –TlsAlloc, TlsFree, TlsSetValue, TlsGetValue (thread local storage) •