Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.



Podobné dokumenty
Principy operačních systémů. Lekce 5: Multiprogramming a multitasking, vlákna

Procesy a vlákna (Processes and Threads)

Principy operačních systémů. Lekce 4: Správa procesů

Vlákna Co je to vlákno?

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura

Úvod do Linuxu. SŠSI Tábor 1

Stavba operačního systému

Téma 3. Procesy a vlákna

Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

Management procesu I Mgr. Josef Horálek

Stavy procesů. Požadavky na OS při práci s procesy

Procesy a vlákna. A3B33OSD (J. Lažanský) verze: Jaro 2014

Operační systémy. Přednáška 1: Úvod

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Přidělování CPU Mgr. Josef Horálek

Stavy procesů. Požadavky na OS při práci s procesy

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Architektura a koncepce OS OS a HW (archos_hw) Architektura a koncepce OS Jádro OS (archos_kernel) Architektura a koncepce OS Typy OS (archos_typy)

Principy operačních systémů. Lekce 1: Úvod

OPERAČNÍ SYSTÉMY. Operační systém je prostředník mezi hardwarem (technickým vybavením počítače) a určitým programem, který uživatel používá.

Identifikátor materiálu: ICT-1-17

Vláknové programování část I

Základní informace. Operační systém (OS)

Operační systémy: funkce

Provoz Počet zaměstnanců Průměrná nemocnost hod/osoba/rok

Pojem Výpočetní proces. Požadavky na OS při práci s procesy. Stavy procesů

Téma 3 Procesy a vlákna

konec šedesátých let vyvinut ze systému Multics původní účel systém pro zpracování textů autoři: Ken Thompson a Denis Ritchie systém pojmnoval Brian

Služba ve Windows. Služba (service) je program

Dílčí projekt: Systém projektování textilních struktur 1.etapa: tvorba systému projektování vlákno - příze - tkanina

Implementace systémů HIPS: historie a současnost. Martin Dráb

Operační systém. Logické prostředky výpoč etního systému jsou:

Operační systémy (OS)

Název školy: Základní škola a Mateřská škola Žalany

Základy programování Operační systémy (UNIX) doc. RNDr. Petr Šaloun, Ph.D. VŠB-TUO, FEI (přednáška připravena z podkladů Ing. Michala Radeckého)

Operační systémy. Přednáška 2: Procesy a vlákna

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Operační systém. Mgr. Renáta Rellová. Výukový materiál zpracován v rámci projektu EU peníze školám

úvod Historie operačních systémů

Matematika v programovacích

MS WINDOWS I. řada operačních systémů firmy Microsoft *1985 -? Historie. Práce ve Windows XP. Architektura. Instalace. Spouštění

Instalace programu ProVIS

IT ESS II. 1. Operating Systém Fundamentals

Principy operačních systémů

Vrstvy programového vybavení Klasifikace Systémové prostředky, ostatní SW Pořizování Využití

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE

Úvod. Programovací paradigmata

Přednáška 1. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

09. Memory management. ZOS 2006, L.Pešička

Využijte plný výkon procesorů s více jádry v LabVIEW 8.5

OPS Paralelní systémy, seznam pojmů, klasifikace

Základy informatiky. Operační systémy

Instalace a konfigurace web serveru. WA1 Martin Klíma

Základní škola a mateřská škola Lázně Kynžvart Autor: David Holubec NÁZEV: VY_32_INOVACE_11_INF Vzdělávací oblast: informatika

Na různých druzích počítačů se používají různé operační systémy. V průběhu času

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody

Paralelní programování

Architektura Intel Atom

Sísyfos Systém evidence činností

Silný výkon dvoujádrové architektury pro podnikání dnes i zítra

Hardware - komponenty počítačů Von Neumannova koncepce počítače. Von Neumannova koncepce počítače

architektura mostů severní / jižní most (angl. north / south bridge) 1. Čipové sady s architekturou severního / jižního mostu

Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty

Datová věda (Data Science) akademický navazující magisterský program

Windows a real-time. Windows Embedded

Programové vybavení počítačů operační systémy

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

Přehled paralelních architektur. Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur

Paralelní programování

Programové prostředky IS/IT

Základní pojmy informačních technologií

Základní typy struktur výpočetních systémů

Přidělování paměti I Mgr. Josef Horálek

Spuštění instalace. nastavení boot z cd v BIOSu vložení CD s instal. médiem spuštění PC. nastavení parametrů instalace (F2 čěština)

MVC (Model-View-Controller)

Distribuovaný systém je takový systém propojení množiny nezávislých počítačů, který poskytuje uživateli dojem jednotného systému.

Systém adresace paměti

Práce v textovém editoru

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

5.15 INFORMATIKA A VÝPOČETNÍ TECHNIKA

Operační systémy 2. Přednáška číslo 1. Úvod do OS

Počítač jako prostředek řízení. Struktura a organizace počítače

Definice OS. Operační systém je základní programové vybavení počítače, nezbytné pro jeho provoz.

PŘIJÍMACÍ TEST z informatiky a matematiky pro navazující magisterské studium Fakulta informatiky a managementu Univerzity Hradec Králové

Karel Bittner HUMUSOFT s.r.o. HUMUSOFT s.r.o.

Přidělování zdrojů (prostředků)

Deska sběru chyb a událostí

I n f o r m a t i k a a v ý p o č e t n í t e c h n i k a. MS Windows

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE

1. SYSTÉMOVÉ POŽADAVKY / DOPORUČENÁ KONFIGURACE HW A SW Databázový server Webový server Stanice pro servisní modul...

Témata profilové maturitní zkoušky

Téma 8: Konfigurace počítačů se systémem Windows 7 IV

3. Počítačové systémy

Novinky AutoCAD LT 2017

Transkript:

Trochu teorie Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací. Každá spuštěná aplikace má alespoň jeden proces a každý proces má alespoň jedno vlákno, ve kterém počítá. Dříve platilo, že proces měl jen jedno vlákno (přesněji, nebylo důvod tyto pojmy odlišovat). Dnes je stále více programů multithreadových, tedy uvnitř jednoho procesu (a v jednom adresovém prostoru, tedy se sdílenou pamětí) může zároveň běžet více vláken. Praktickým rozdílem mezi multithreadovým a multiprocesovým multitaskingem je kromě sdílené paměti (která některé věci usnadňuje a jiné naopak ztěžuje) režie při přepínání: Přepnutí mezi vlákny bývá výrazně rychlejší neboť vlákna sdílejí paměť a uživatelská práva svého mateřského procesu a není je třeba při přepínání měnit. V některých případech není třeba při přepínání vláken volat jádro OS. Rychlejší může být i vytváření a rušení vlákna. Vlákno také spotřebuje méně paměti, což je důležité pro aplikace, které používají stovky nebo více vláken. Vlákna je možné vytvořit i čistě aplikačně bez OS (například pokud podporu multithreadingu nemá). Takto vzniklá vlákna je poté možné spouštět postupně v jednom vláknu operačního systému nebo takzvaně m:n, tedy v několika vláknech OS současně spouštět větší počet aplikačních vláken. Toto řešení sice není tak dobré jako řešení s podporou operačního systému ( například volání služby operačního systému zablokuje větší vlákno OS a ne jenom aplikační vlákno ) ale pro některé úlohy může být stále rychlejší.

Podpora vláken v OS Z hlediska spravování vláken OS můžeme vlákna rozdělit na : A) vlákna na uživatelské úrovni (ULT) B) vlákna na úrovni jádra (KLT) C) kombinace KLT a ULT Uživatelský vs jaderný prostor vláken Vyšší počet vláken, které jsou rozvrhována OS mohou zvyšovat režii. Moderní operační systémy implementují rozvrhovače.

Podpora vláken v OS - vlákna na uživatelské úrovni (ULT) Správu vláken provádí tzv. vláknová knihovna (thread library) na úrovni aplikačního procesu, jádro operačního systému o jejich existenci neví a přepojování mezi vlákny nepožaduje provádění funkcí jádra. Nepřepíná se ani kontext procesu ani režim procesoru Přepínání vláken a jeho plánování je specifické pro konkrétní aplikaci. Programátor má možnost zvolit si nejvhodnější plánovací strategii a algoritmus sám. U OS není vyžadováno multiprogramování, stačí speciální knihovna. V případě POSIXu je to např. knihovna Pthreads ( pítred ). Vláknová knihovna Pro provozování vláken na uživatelské úrovni je třeba speciální knihovna, která musí umožňovat: rušení a vytváření vláken předávání dat a zpráv mezi vlákny plánování běhu vláken uchovávání a obnova kontextu vláken Výhody uživatelských vláken nezávislost na podpoře vláken v OS přepínání mezi vlákny je nezávislé na JOS (může být rychlejší) výrazně rychlejší tvorba a přepínání vláken plná kontrola procesu nad správou běhu vláken Nevýhody volání služby jedním vláknem zablokuje všechna vlákna procesu nutnost dodatečného programování (řízení vláken programátorem) pokud jádro přiděluje procesor pouze procesům, nemohou dvě vlákna téhož procesu běžet současně, i když systém obsahuje více procesorů

Podpora vláken v OS - vlákna na úrovni jádra OS (KLT) Veškerá správa vláken je řízena OS a každé vlákno v uživatelském prostoru je zobrazeno na vlákno v jádře. Samotné jádro vytváří, ruší a plánuje vlákna. Podpora OS Windows 2000/XP Linux BSD Unix 4.4 Výhody volání systému neblokuje ostatní vlákna téhož procesu jeden proces může využít více procesorů tvorba, rušení a přepínání mezi vlákny je levnější než mezi procesy i programy jádra mohou mít vícevláknový charakter Nevýhody správa je nákladnější než u čistě uživatelských vláken Podpora vláken v OS kombinace KLT a ULT Některé OS podporují oba způsoby běhu vláken. Přiřazování uživatelských vláken k systémovým se děje automaticky (bez programátora) anebo programátor může nastavit počet vláken na úrovni jádra. Podpora OS Windows 2000/XP s nadstavbou ThreadFiber FreeBSD 5.x

Kdy se vlákna používají Obsluha periferií U některých zařízení je třeba periodicky testovat stav hardware Vláknu pak nemusí zbývat mnoho času na obsluhu uživatelského rozhraní Jedno vlákno pro komunikaci s uživatelem a druhé obsluhuje hardware Síťová komunikace Jedno vlákno akceptuje příchozí komunikace Jedno vlákno odesílá data Jedno vlákno zpracovává data Vyvolání dojmu rychlé odezvy programu Práce s velkým objemem data uložených v databázi Hlavní vlákno pouze obsluhuje uživatelské rozhraní, další pracuje s databází Urychlení výpočtu Lze-li spustit na víceprocesorovém stroji kooperující vlákna na několika procesorech Vhodné pro architekturu aplikace Simulace jedno vlákno počítá vlastní simulaci Další vlákno periodicky vzorkuje stav simulace a zobrazuje ho Primární vlákno obsluhuje uživatelské rozhraní Efektivita Některé aplikace jsou ze své podstaty nevhodná pro jednovláknovou architekturu Použití vláken může vést k výraznému zpřehlednění programového kódu V moderním OS už beztak běží několik vláken, pár navíc nehraje roli Každý OS má maximální strop na počet threadů, kdy je plánování procesu stále ještě efektivní

Kdy se vlákna používají

Typické aplikace

Nevýhody vláken Vlákna byste měli používat jen tam, kde je to opravdu nutné, protože tvorba vlákna na určitých platformách je poněkud zdlouhavá operace. K vyřešení tohoto problému se u vícevláknových aplikací používá mechanismus sdružování vláken. Každé vlákno vytváří v paměti vlastní zásobník, do kterých jsou ukládány mezivýsledky, stavy proměnných, adresy apod. I když je teoreticky možné vytvářet obrovský počet vláken, maximální počet vláken je omezen platformou. Z toho vyplývá, že při tvorbě vláken je třeba se řídit zdravým rozumem. Tento problém nelze vyloučit, lze jej však ovlivnit pomocí sdružování vláken. Je však nutno nechat na správci sdružovaní, kdy vlákno vytvořit a kolik jich vůbec vytvářet. Jednou z největších nevýhod vláken je však zvýšená složitost kódu Je daleko složitější sledovat tok programu. Další z nevýhod vláken je sdílení prostředků, za kterou je většinou odpovědný programátor. K řízení sdílení prostředků se používá synchronizace. Ta zaručuje, že stav dat nebude změněn z více vláken zároveň.

Přepínání kontextu Cooperative multitasking K tomu, aby mohl procesor vykonávat více operací musí přesouval pozornost od jednoho vlákna k druhému, tomuto procesu se říká přepínání kontextu. Ke kontextovému přepnutí může dojít, když se vlákno dobrovolně vzdá svého času procesoru, který tento čas může přidělit jiným vláknům. Tomuto systému se říká cooperative multitasking. Může ovšem dojít k tomu, že se programátor omylem nebo záměrně nevzdá času vlákna ve prospěch procesoru nebo jiného vlákna, což způsobí zatuhnutí aplikace a zablokuje běh všech dalších vláken. Tento systém přepínání kontextu se používal u starých OS a umožňoval vytuhnutí aplikace nebo dokonce celého OS vinnou jednoho vlákna. Preemptive multitasking Podstatně lepším řešením je preemptive multitasking, kde plánovací modul OS rozhoduje kdy přerušit či pozastavit běh vlákna a spustit vlákno jiné, aniž by narušil běh úlohy. Tento druh multitaskingu zabraňuje vláknu monopolizovat čas procesoru a nevyžaduje, aby programátor rozhodoval, kdy se vzdát času procesoru. Toto má jako vždy svou nevýhodu, protože programátor musí zajistit správnou koordinaci využívání prostředků.