Procesy a vlákna Mgr. Josef Horálek

Podobné dokumenty
Výpočet v módu jádro. - přerušení (od zařízení asynchronně) - výjimky - softvérové přerušení. v důsledku událostí

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

OS Plánování procesů

Management procesu I Mgr. Josef Horálek

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

Procesy a vlákna (Processes and Threads)

Von Neumannovo schéma

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

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

Roury a zprávy Mgr. Josef Horálek

PB002 Základy informačních technologií

Správa procesů a vláken Mgr. Josef Horálek

Procesy a vlákna - synchronizace

Systém adresace paměti

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

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

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

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

Činnost počítače po zapnutí

Přednáška. Implementace procesů/vláken. Plánování vláken. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Řízení IO přenosů DMA řadičem

Téma 3. Procesy a vlákna

Operační systémy. Přednáška 3: Plánování procesů a vláken

Management procesu II Mgr. Josef Horálek

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

UŽIVATEL, SKUPINA, PROCES

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

ZOS OPAKOVÁNÍ. L. Pešička

MetaCentrum - Virtualizace a její použití

Principy operačních systémů

OPERAČNÍ SYSTÉMY VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ PŘIDĚLOVÁNÍ PROCESORU. doc. Dr. Ing. Oldřich Kodym.

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

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

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B. 1. úloha (4 body) Kolik existuje cest délky 4 v grafu K11? 2.

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

Měřící systém se vzdáleným přístupem. Databáze

PB153 Operační systémy a jejich rozhraní

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

vjj 1. Priority. Dispatcher

Základní pojmy. Program: Algoritmus zapsaný v programovacím jazyce, který řeší nějaký konkrétní úkol. Jedná se o posloupnost instrukcí.

Konstruktory a destruktory

Přednáška 6. Procesy a vlákna (vznik, stavy, atributy). Signály. Nástroje pro práci s procesy a vlákny. Úvod do Operačních Systémů Přednáška 6

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

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

Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu

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

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Pár odpovědí jsem nenašla nikde, a tak jsem je logicky odvodila, a nebo jsem ponechala odpověď z pefky, proto je možné, že někde bude chyba.

setup() { I = 0; } loop() { I = I + 1; }

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

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

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

Logická organizace paměti Josef Horálek

Přerušovací systém s prioritním řetězem

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

Výpočetní cluster na platformě Linux

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

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)

07. Plánování procesů Deadlock. ZOS 2006, L. Pešička

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)

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

Téma 3 Procesy a vlákna

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

Co mi to tu vlastně běží?

Ukázka zkouškové písemka OSY

Struktura programu v době běhu

Spojová implementace lineárních datových struktur

Cvičení č. 3. Sdílené prostředky a synchronizace Program Banka. 4 body

Administrace Oracle. Práva a role, audit

Architektury počítačů a procesorů

Systémová volání Mgr. Josef Horálek

Paralelní a asynchronní programování. Zdeněk Jurka

Linux Teorie operačních systémů a realita

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

ZOS. Verze 2010-srpen-31, v3 L. Pešička

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

PRINCIPY OPERAČNÍCH SYSTÉMŮ

Paralelní programování

Objektově orientované programování v jazyce Python

Systém řízení sběrnice

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

X36UNX. UNIX - signály. jejich význam a použití. Martin Plicka -

Prostředí pro výuku vývoje PCI ovladačů do operačního systému GNU/Linux

Souborové systémy Mgr. Josef Horálek

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Vstupně - výstupní moduly

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

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

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

Paralelní programování

Virtualizace MetaCentra

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

Anotace: V příspěvku jsou ukázány hlavní charakteristiky operačního systému OS/400.

Firmware řídící jednotky stejnosměrného generátoru

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

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

Přerušení POT POT. Přerušovací systém. Přerušovací systém. skok do obslužného programu. vykonávaný program. asynchronní událost. obslužný.

Kapitola 13: Transakce. Koncept transakce. ACID vlastnosti

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

Transkript:

Procesy a vlákna Mgr. Josef Horálek

Procesy a vlákna = Základním úkolem jádra je = Správa běžících procesů a vláken: = vytváření = plánování = nastavování = ukončování

Proces, vlákno, úloha = Proces běžící program = v OS Linux jde o objekt, který pracuje podle kódu program (včetně knihoven), využívá svůj vlastní adresní paměťový prostor. Využívá služby jádra a komunikuje různými způsoby s ostatními procesy

Proces, vlákno, úloha = Vlákno objekt pracující podle kódu programu, líší se od procesu tím, že je jeho součástí a sdílí prostředky (adresní prostor paměti, prostředky jádra atd.) s ostatními vlákny procesu

Proces, vlákno, úloha = Úloha (task) objekt, jehož kód se sekvenčně vykonává. = Každému vláknu procesu odpovídá jedna úloha (kromě toho může proces využívat ještě další, navenek neviditelné, úlohy přímo v jádře např. vlákna jádra spravující pracovní fronty. = Na jednom procesoru běží v určitý okamžik nejvýše jedna úloha

Plánování úloh = Úlohy běží na jednotlivých procesorech v rámci přidělených časových kvant. Úloha tedy dostane časové kvantum, a dokud ho nevyčerpá, a není ji z nějakého důvodu procesor odebrán plánovačem, vykonává své programové instrukce.

Plánování úloh = Jak bude plánování vypadat ovlivňují tři faktory: = Použitý plánovač = Priorita úlohy = Vlastní jádra (preemptivita) = Každé vlákno procesu je z hlediska plánování chápáno jako samostatná úloha, je tedy plánováno nezávisle na jiných vláknech téhož procesu.

Plánovače = Plánovač má nejzásadnější vliv na plánování. V jádře jsou dnes implementovány čtyři plánovače. = Normální plánovač pro většinu použití = Dávkový plánovač jako normální plánovač, ale s úpravou pro neinteraktivní úlohy = Plánovač FIFO pro úlohy zpracovávané v reálném čase = Plánovač round-robin podobný pl. FIFO

Normální plánovač = Tento plánovač je použit ve výchozím případě. Využívá jedinou úroveň statické priority, místo toho používá hodnoty nice (40 úrovní) a časová kvanta přiděluje na základě dynamických priorit, které jsou určovány podle toho, jak úloha v minulosti využívala procesor. = Časové kvantum tak získá vždy úloha, která je první ve frontě, velikost kvanta odpovídá dynamické prioritě.

Dávkový plánovač = Vhodný pro úlohy, které mají velké požadavky na čas procesoru a nepotřebují být interaktivní. Liší se výpočtem dynamických priorit, na základě které se určuje velikost časového kvanta. = Úloha se posuzuje vždy tak, jako kdyby neustále požadovala běh na procesoru, je tedy permanentně penalizována.

Plánovač FIFO = Tento plánovač funguje tak, že úloze přidělí procesor, a dokud ho on sám neodevzdá, žádná jiná úloha na tomto procesoru příležitost k běhu nedostane. = Využívá 99 úrovní statických priorit. Procesor je přidělen úloze, která má vyšší prioritu.

Plánovač round-robin = Podobný jako plánovač FIFO, ale liší se přidělováním časových kvant, které přiděluje dokola na určité úrovni priority (úrovní 99). = Úloha tedy běží nejdéle po dobu přiděleného časového kvanta, pak jí je procesor odebrán a je předán další úloze se stejnou prioritou.

Priority běhu = Hodnota nice je priorita s obráceným významem čím vyšší nice, tím nižší priorita. Výchozí hodnotou je nula, záporné hodnoty (do -20 znamenají větší prioritu, kladné (do 19) nižší. Úloha může vždy snížit svoji prioritu (zvýšit NE). = Statická priorita nabývá hodnoty od 1 do 99. Čím vyšší hodnota, tím vyšší priorita.

Preemtivita jádra = Jádro můžeme zkompilovat třemi způsoby: = Nepreemtivní chování úloha se v jádře musí sama vzdát procesoru = Dobrovolně preemtivní chování jsou přidány body, kde se úloha vzdá procesoru = Plně preemtivní chování plánovač úloze odebere procesor, pokud vyčerpala časové kvantum

Proces a jeho vlastnosti = Každý proces má jednoznačnou číselnou identifikaci označenou zkratkou PID (process idenfifiter). Tento identifikátor je jedinečný, po použití se ale recykluje a bude co nejdříve použit znovu* = Každý proces má svého rodiče proces kterým byl vytvořen = Jedinou výjimkou je proces init**

Proces a jeho vlastnosti = Problematika paměťového prostoru: = Stránky namapované procesem se z hlediska procesu zkopírují* ne však hned. = Dokud se ze stránek jen čte, zůstávají společné pro starý i nový proces = Zkopírování nastává až v okamžiku, kdy se některý z procesů pokusí o zápis nebo si zkopírování explicitně vynutí.

Proces a jeho vlastnosti = Souborové deskriptory: = Až a výjimky se dědí jsou tedy platné beze změny i v novém procesu = Problém hrozí v nechtěném přístupu k datům a také výrazné bezpečnostní riziko* = Proti nechtěnému úniku deskriptorů se používá uzavření všech možných deskriptorů hned po jeho zkopírování, krom těch které potomek zdědit má

Proces a jeho vlastnosti = Oprávnění procesů: = Reálná odpovídají oprávnění uživatele, který spustil program příslušející k procesu = Efektivní mohou být ovlivněna tím, že má program nastaven bit SUID, nebo-li proces běží s právy vlastníka souboru s programem = Při vytváření nového procesu se toto všechno opět dědí

Proces a jeho vlastnosti = Po skončení procesu se nastaví jeho návratová hodnota, kterou si může zkontrolovat rodičovský proces a podle ní zjistit, zda byl úspěšný atd.

Životní cyklus procesu = Běžící procesory vykonávají programový kód procesu nebo některá vlákna čekají na splnění nějaké podmínky* = Zastavený proces obdržel signál SIGSTOP,SIGTTOU, SIGTTIN, SIGTSTP, a byl tedy zastaven. Žádný z procesorů nevykonává kód tohoto procesu

Životní cyklus procesu = Pozastavený provádění kódu bylo přerušeno (signálem SIGTRAP) kvůli splnění nějaké podmínky, například definované debuggerem. Tento stav je velmi podobný stavu zastavený = Zombie provádění kódu bylo dokončeno, již neběží ne žádném procesoru. Prosec zůstává v tomto stavu, dokud není nadřazeným procesem jádro požádáno o jeho odstranění

Životní cyklus procesu = Proces tedy za normálních okolností běží dokud má k dispozici instrukce, které lze vykonat. Po dokončení běhu procesu (signál SIGCHLD) může mít rodičovský proces nataveno SIG_IGN pak proces tiše zanikne. = Pokud má však nastavenou explicitní obsluhu, proces nezanikne a zůstává ve stavu zombie.

Životní cyklus procesu Vytvoření a spuštění procesu běžící zastavený pozastavený zombie Odstranění procesu

Implementace správy procesu rodič fork () fork () = 1256 rodič fork () = 0 potomek fork () = -1 errno = Chyba (rodič)

Implementace správy procesu Rodičovský proces waitpid() fork() exit() Potomek čas

Implementace správy procesu událost WIFEXIT WIFSIGNALED WIFSTOPPED WIFCONTINUED WEXITSTATUS WTERMSIG WSTOPSIG WTERMSIG Proces skončil Neobsloužený signál Proces zastaven Proces pokračuje

Práce s vlákny = Hlavní vlákno vlákno, které je spuštěno v procesu jako první nepotřebuje explicitně žádnou obsluhu = Každé vlákno označeno identifikátorem TID (thread identifier) přidělované ze stejného číselného prostoru jako PID = TID hlavního vlákna = PID procesu = Pro zjištění TID voláme funkcí gettid()

Životní cyklus vlákna = Běžící nějaký procesor právě vykonává kód vlákna = Připravené k běhu vlákno čeká na časové kvantum pro svůj běh = Přerušitelně uspané vlákno čeká na splnění nějaké podmínky lze ho probudit, takže např. může obsloužit signál = Nepřerušitelně uspané vlákno čeká na splnění podmínky, ale nelze ho probudit nastává zřídka a to většinou jen pro vlákna v procesu

Životní cyklus vlákna = Zastavené vlákno bylo zastaveno signálem = Pozastavené opět podobná situace jako u procesu = Skončené vlákno doběhlo do konce a čeká se, až se s ním vlákno spojí

Základní práce s vlákny = S vlákny se obvykle pracuje prostřednictvím knihovny libpthread, která hlavně implementuje rozhraní POSIX Threads. = Knihovna poskytuje vše potřebné prostřednictvím hlavičkového souboru pthread.h = Knihovna pthread je v uživatelském prostoru a většina vláken se vykonává v jejím rámci.

Základní práce s vlákny = Běh vlákna může skončit trojím způsobem: = Doběhnutí startovací funkce (vrácení hodnoty) = Zavolání funkce pthread_exit() = Zrušení vlákna

Ukončování a úklid = Speciální možnosti ukončení: = Odloučení vlákna nechceme-li na vlákno čekat, lze ho převést do odloučeného stavu pthread_detach() skončí-li takové vlákno automaticky po sobě uklidí a uvolní všechny související prostředky = Zrušení vlákna můžeme jej zrušit synchronně nebo asynchronně

Ukončování a úklid = Důležitou funkcí při ukončování vlákna je zavolat tzv. úklidovou obslužnou funkci (clean-up handler) = Tuto funkci voláme ve chvíli, když někdo zvenku zruší vlákno,a cílem je uklidit data před úplným ukončením vlákna

Děkuji za pozornost