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



Podobné dokumenty
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í.

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

Procesy a vlákna (Processes and Threads)

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

Vlákna Co je to vlákno?

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

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

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

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

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

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ém. Logické prostředky výpoč etního systému jsou:

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

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

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

Téma 3. Procesy a vlákna

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

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)

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á.

Stavba operačního systému

Správa procesoru. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 11. březen, 2011

Téma 3 Procesy a vlákna

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

Principy operačních systémů

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

Přednáška 11. Historie MS Windows. Architektura Windows XP. Grafické a znakové rozhraní. Úlohy, procesy a vlákna.

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

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

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

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í

Výpočetní technika. PRACOVNÍ LIST č. 7. Ing. Luděk Richter

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

MS WINDOWS II. Jádro. Správa objektů. Správa procesů. Zabezpečení. Správa paměti

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

Management procesu I Mgr. Josef Horálek

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

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)

Logická organizace paměti Josef Horálek

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

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

Operační systémy. Přednáška 4: Komunikace mezi procesy

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

IT ESS II. 1. Operating Systém Fundamentals

Paralelní programování

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

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

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

OS Plánování procesů

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émy 2. Přednáška číslo 1. Úvod do OS

Správa procesoru. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YOS: Přednáška III. 7. listopad, / 23

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

Matematika v programovacích

Operační systémy: funkce

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

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)

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

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

ÚVOD DO OPERAČNÍCH SYSTÉMŮ

Paralelní programování

Rozdělení operačních systémů

Operační systémy (OS)

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

Operační systémy pro systémy sběru dat (=DAQ systems). Vývoj aplikačních programů. Operační systémy pro DAQ RTOS VxWorks Windows CE RTX LabVIEW RT

Principy operačních systémů. Lekce 8: Ovladače periferií

Operační systémy. Tomáš Vojnar IOS 2009/2010. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

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

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

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

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

Aplikační programové vybavení

Paralelní programování

Ukázka zkouškové písemka OSY

Poslední aktualizace: 21. května 2015

Disková pole (RAID) 1

PB002 Základy informačních technologií

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

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. Operační systém

Vzdálený přístup k počítačům

Činnost operačních systémů. Beránek Pavel 1. KŠPA

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

Von Neumannovo schéma

Principy operačních systémů. Lekce 6: Synchronizace procesů

CZ.1.07/1.5.00/

Disková pole (RAID) 1

Systémy pro sběr a přenos dat

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

Shrnutí předcházející přednášky

C2115 Praktický úvod do superpočítání

Úvod. Programovací paradigmata

Software programové vybavení. 1. část

SÁM O SOBĚ DOKÁŽE POČÍTAČ DĚLAT JEN O MÁLO VÍC NEŽ TO, ŽE PO ZAPNUTÍ, PODOBNĚ JAKO KOJENEC PO PROBUZENÍ, CHCE

Procesy a vlákna - synchronizace

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

Témata profilové maturitní zkoušky

Windows a real-time. Windows Embedded

LABORATORNÍ CVIČENÍ Střední průmyslová škola elektrotechnická

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

Transkript:

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

Multiprogramování předchůdce multitaskingu Vzájemné volání: Implementován procesem (nikoliv OS) Procesu je přidělen procesor, pokud je volán jiným běžícím procesem Omezené přepínání: Systém přepíná mezi jedním běžným procesem a tzv. pomůckami (accessories) malé programy specielně pro tento účel programované (např. jednoduchý textový, grafický editor, kalkulačka) Neomezené přepínání: Možnost přepínání mezi jakýmikoli běžícími procesy (Apple MacOS modul MultiFinder) Lekce 5: Multiprogramming a multitasking 2

Kooperativní (nepreemptivní) multitasking Jeden proces na popředí ostatní na pozadí. Proces na popředí má přidělen procesor, když jej nepotřebuje (např. čeká na událost, např. vstup z klávesnice), může být na krátkou dobu přidělen procesor některému procesu na pozadí. Procesy kooperují s OS (předávají mu řízení, když nepotřebují procesor) voláním služby systému Výhody: Možnost spuštění více procesů, kooperace mezi nimi Lepší využití prostředků v systému (paměť, čas procesoru) Možnost implementovat víceuživatelský systém) Nevýhody: Větší nároky na HW Nutnost řešit problémy s bezpečností a stabilitou systému Při chybě volání služby přerušení může dojít k zamrznutí systému Lekce 5: Multiprogramming a multitasking 3

Preemptivní multitasking Neustálé přepínání mezi procesy Procesy na multitaskingu nespolupracují Přerušení odebrání procesoru je vygenerováno při každé události v systému Kontext musí obsahovat více údajů než např. u přepínání úloh - stav registrů procesoru a koprocesoru (proces po znovupřidělení procesoru nemusí být informován o tom, že jeho činnost nebyla souvislá) Je nutno řešit problém přidělování prostředků (architektura klient-server pro přístup k ovladačům zařízení) Lekce 5: Multiprogramming a multitasking 4

Time slicing (sdílení času) Vylepšení preemptivního multitaskingu Přepnutí kontextu nejen při vygenerování nějaké události, ale i v určitých časových intervalech (v řádu jednotek až desítek ms) Rychlé střídání procesů ve využití času procesoru = pseudoparalelismus (uživatel má dojem paralelního zpracování úloh) Přerušení procesu vždy po uplynutí stanoveného časového intervalu nebo dříve, bylo-li přerušení vyvoláno nějakou událostí resp. pokud byl dokončen před uplynutím intervalu Lekce 5: Multiprogramming a multitasking 5

Preemptivní multitasking Výhody: Možnost spuštění více procesů, možnost spolupráce a komunikace procesů Lepší využití prostředků systému (paměť, čas procesoru apod.) Možnost implementace víceuživatelského systému Možnost implementace GUI Možnost implementace bezpečnostních mechanismů Snadnější implementace než u kooperativního multitaskingu Nezávislost na běhu procesů (a dobré vůli programátorů) Nevýhody: Vetší nároky na HW Rozsáhlejší kontext než u kooperativního multitaskingu Lekce 5: Multiprogramming a multitasking 6

Vlákno (Thread) Vlákno (též vlákno řízení, anglicky thread) označuje v informatice odlehčený proces, pomocí něhož se snižuje režie operačního systému při změně kontextu, které je nutné pro zajištění multitaskingu (zdánlivého běhu více úloh zároveň, který je zajištěn jejich rychlým střídáním na procesoru) nebo při masivně paralelních výpočtech. Zatímco běžné procesy jsou navzájem striktně odděleny, sdílí vlákna nejen společný paměťový prostor, ale i další struktury. Procesy Jednovláknové Vícevláknové (Multithreading) Lekce 5: Multiprogramming a multitasking 7

Vztah procesu a vlákna Vlákno: Lekce 5: Multiprogramming a multitasking 8

Proces a vlákna Lekce 5: Multiprogramming a multitasking 9

Proces a vlákna Lekce 5: Multiprogramming a multitasking 10

Rozdíly mezi multithreadovým a multiprocesorovým multitaskingem Sdílená paměť Jednodušší 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. Lekce 5: Multiprogramming a multitasking 11

Podpora vláken v OS: Z hlediska spravování vláken OS můžeme vlákna rozdělit na vlákna na uživatelské úrovni (ULT) vlákna na úrovni jádra (KLT) kombinace KLT a ULT Lekce 5: Multiprogramming a multitasking 12

Vlákna na uživatelské úrovni (ULT = User- Level Threads) Vlastnosti Správu vláken provádí tzv. vláknová knihovna (Thread Library) na úrovni aplikačního procesu, JOS o jejich existenci neví 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 Aplikace má možnost zvolit si nejvhodnější strategii a algoritmus pro plánování vláken Příklady POSIX některé implementace knihovny Pthreads Solaris1 knihovna Threads Lekce 5: Multiprogramming a multitasking 13

Vlákna na uživatelské úrovni (ULT) Lekce 5: Multiprogramming a multitasking 14

Vlákna na uživatelské úrovni (ULT) Výhody nezávislost na podpoře vláken v OS přepínání mezi vlákny je nezávislé na OS (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ů Lekce 5: Multiprogramming a multitasking 15

Vlákna na úrovni jádra (KLT = Kernel-Level Threads) Vlastnosti Veškerá správa vláken je realizována OS Každé vlákno v uživatelském prostoru je zobrazeno na vlákno v jádře (model 1:1) JOS vytváří, plánuje a ruší vlákna Jádro může plánovat vlákna na různé CPU Skutečný multiprocessing Příklady Windows NT/2000/XP Linux 4.4BSD UNIX Tru64 UNIX Lekce 5: Multiprogramming a multitasking 16

Vlákna na úrovni jádra Lekce 5: Multiprogramming a multitasking 17

Vlákna na úrovni jádra Výhody: Volání systému neblokuje ostatní vlákna téhož procesu Jeden proces může využít více procesorů (skutečný paralelismus uvnitř jednoho procesu každé vlákno běží na jiném procesoru) Tvorba, rušení a přepínání mezi vlákny je levnější než mezi procesy I moduly jádra mohou mít vícevláknový charakter Nevýhody: Systémová správa je režijně nákladnější než u čistě uživatelských vláken Klasické plánování není spravedlivé: Dostává-li vlákno své kvantum, pak procesy s více vlákny dostávají více času Lekce 5: Multiprogramming a multitasking 18

Kombinace ULT a KLT 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. Příklady Windows 2000/XP s nadstavbou ThreadFiber FreeBSD 5.x Lekce 5: Multiprogramming a multitasking 19

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í Lekce 5: Multiprogramming a multitasking 20

Kdy se vlákna používají 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í Lekce 5: Multiprogramming a multitasking 21

Kritéria pro použití vláken Vlákna je výhodné použít, pokud aplikace splňuje některé z následujících kritérií: Je složena z několika nezávislých úloh. Může být blokována po dlouhou dobu. Obsahuje výpočetně náročnou část. Reaguje na asynchronní události. Obsahuje úlohy s nižší nebo vyšší prioritou než zbytek aplikace. Lekce 5: Multiprogramming a multitasking 22

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ň. Lekce 5: Multiprogramming a multitasking 23

Typické vícevláknové aplikace Lekce 5: Multiprogramming a multitasking 24

Modely vícevláknových aplikací Lekce 5: Multiprogramming a multitasking 25

Model Boss/Worker Lekce 5: Multiprogramming a multitasking 26

Model Boss/Worker Lekce 5: Multiprogramming a multitasking 27

Model Peer Lekce 5: Multiprogramming a multitasking 28

Model Peer Lekce 5: Multiprogramming a multitasking 29

Model Pipeline Lekce 5: Multiprogramming a multitasking 30

Model Pipeline Lekce 5: Multiprogramming a multitasking 31

Vícevláknové aplikace a ladění Hlavní problémy vícevláknových aplikací souvisí se synchronizací Uváznutí (Deadlock) úspěšné dokončení první akce je podmíněno předchozím dokončením druhé akce Souběh (Race Conditions) - přístup více vláken ke sdíleným proměnným a alespoň jedno vlákno nevyužívá synchronizačních mechanismů. Vlákno čte hodnotu zatímco jiné vlákno zapisuje. Zápis a čtení nejsou atomické a data mohou být neplatná. Vyhladovění - stav, kdy jsou vláknu neustále odepírány prostředky. Bez těchto prostředků program nikdy nedokončí svůj úkol. Lekce 5: Multiprogramming a multitasking 32