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

Podobné dokumenty
Úvod do operačního systému Linux Mgr. Josef Horálek

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

Management procesu II Mgr. Josef Horálek

Operační systém UNIX

Stavba operačního systému

Procesy a vlákna Mgr. Josef Horálek

Metody připojování periferií BI-MPP Přednáška 2

Úpravy jádra operačního systému pro Clondike

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

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

Principy operačních systémů. Lekce 2: Správa paměti

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE. Ing. Jaroslav Adamus. Gymnázium, SOŠ a VOŠ Ledeč nad Sázavou

ZPRACOVÁNÍ NEURČITÝCH ÚDAJŮ V DATABÁZÍCH

Procesy a vlákna (Processes and Threads)

10. blok Logický návrh databáze

INTEGRACE IS DO STÁVAJÍCÍ HW A SW ARCHITEKTURY

PROGRAMOVÁNÍ ŘÍDÍCÍCH SYSTÉMŮ

Operační systémy. Cvičení 5: Volání jádra, procesy, vlákna.

Paměti a jejich organizace

Výuka IVT na 1. stupni

Architektura počítače

Albrechtova střední škola, Český Těšín, p.o. II. DTP

Von Neumannovo schema počítače

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

Elektronická kapacitní dekáda - BASIC

Práce s velkými sestavami

Řešení pro správu klientů a mobilní tisk

Uživatelská příručka

Management procesu I Mgr. Josef Horálek

NÁZEV ROČNÍKOVÉ PRÁCE ročníková práce

Principy činnosti sběrnic

POLYMERTEST Tř.T.Bati 299, Zlín. ZÁKRUTOMĚR Dle ČSN EN ISO 2061

3. Linková vrstva. Linková (spojová) vrstva. Počítačové sítě I. 1 (5) KST/IPS1. Studijní cíl

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

usimt10 JEDNOTKA IMPLEMENTUJÍCÍ OBJEKTY PRO SIMULACI TERMINÁLU TERM10 NA PC Příručka uživatele a programátora

Bootkity v teorii a praxi. Martin Dráb martin.drab@ .cz

1. Programování PLC. Programovatelné automaty II - 1 -

MIDAM MW 240 modbus 2 x DI, 2 x DO

Základní programové vybavení počítače

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

Doplněk Parametry Plus pro Altus Vario

OTRS Free Open Source nástroj pro Service Management

2. Konceptuální model dat, E-R konceptuální model

Vstup a úkoly pro 11. kapitolu IDENTIFIKACE A BALENÍ JAKO SUBSYSTÉM ŘETĚZCE.

TÉMATICKÝ OKRUH TZD, DIS a TIS

Regionální knihovní systémy. Ing. Jiří Šilha, LANius s.r.o.

PES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/ PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/ stran 1

Databázovéa informačnísystémy NÁVRH IMPLEMENTACE 3 PARALELNÍ PROCESY V DATABÁZÍCH

Činnost počítače po zapnutí

- program = vykonatelný soubor - proces = jedna instance vykonávaného programu

1.1. Správa a provozní podpora APV ROS, HW ROS a základního SW

usimt03r JEDNOTKA PRO SIMULACI VZDÁLENÉ VARIANTY TERMINÁLU TERM03 NA POČÍTAČI PC Příručka uživatele a programátora

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

GYMNÁZIUM, VLAŠIM, TYLOVA

2N NetSpeaker. Prezentační set Quick Start. IP Audio System. Verze Firmware

Aplikovaná informatika

Uživatelská příručka Evidence příchozí a odchozí pošty a elektronický archiv. V prostředí společnosti. Pražská vodohospodářská společnost a.s.

Procesor. Procesor FPU ALU. Řadič mikrokód

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

Workmonitor. Servisní návod. 24. června 2014 w w w. p a p o u c h. c o m

Operační systémy. Tomáš Hudec.

Katalog služeb a podmínky poskytování provozu

Metody připojování periferií

V Praze dne 4. července Dobrý den,

Stud. skupina: 3E/96 Číslo úlohy: - FSI, ÚMTMB - ÚSTAV MECHANIKY TĚLES, MECHATRONIKY A BIOMECHANIKY REAL TIME CONTROL

Výzva k předložení nabídek

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 JÍST.

Mobilní aplikace docházkového programu

universální monitorovací program

Zřízení technologického centra ORP Dobruška

Univerzita Palackého v Olomouci. Služby spojené s Active Directory

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

Obsah. Základy práce s databází 13. Tabulky 43. Obsah. Úvod 9 Poděkování 12

Návrh programu v Black Box Component Builderu s využitím architektury Model View Controller

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

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.

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

Von Neumannovo schéma

Vítáme Vás na 20. uživatelské konferenci firmy ORTEX

Příloha č. 18. Specifikace bloku PŘÍPRAVA. Příloha k zadávací dokumentaci veřejné zakázky Integrační nástroje, vstupní a výstupní subsystém

Relační databáze a povaha dat

MANUÁL MOBILNÍ APLIKACE GOLEM PRO OPERAČNÍ SYSTÉM ANDROID 4.X A VYŠŠÍ

Elektronický indikátor topných nákladů E-ITN 10.4 Verze: 1.1 Datum: 3. října Charakteristika přístroje. 2. Popis. 2.1.

PROGRAMOVÁNÍ. Cílem předmětu Programování je seznámit posluchače se způsoby, jak algoritmizovat základní programátorské techniky.

Principy operačních systémů. Lekce 3: Virtualizace paměti

Bezpečn č os o t t dat

ZADÁVACÍ DOKUMENTACE K VEŘEJNÉ ZAKÁZCE: DODÁVKA VÝPOČETNÍ TECHNIKY. Stránka 1 z 13

STATUTÁRNÍ MĚSTO HAVÍŘOV Magistrát města, Svornosti 2, Havířov-Město

Obecně závazná vyhlášky obce o vedení technické mapy obce. OBECNĚ ZÁVAZNÁ VYHLÁŠKA č.../2015. o vedení technické mapy obce

5. Směrování v počítačových sítích a směrovací protokoly

Malý distribuovaný I/O modul

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

Hardwarová konfigurace. vysokorychlostní sběrnice SPEED-Bus

Linux RAID, LVM. Ondřej Caletka

Jazyk C++ II. Výjimky

Manuál administrátora FMS...2

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Řídící jednotka AirBasic 2

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

Napájecí zdroj. Zdroje AT. Zdroje AT. Josef Jan Horálek

Transkript:

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

Správa procesů a vláken = Jeden z nejdůležitějších úkolů jádra operačního systému = Linuxové jádro dosáhlo důkladné implementace umožňující například plnohodnotné použití vláken až v řadě 2.6

Úlohy, procesy, vlákna = V pojetí linuxového jádra do značné míry platí proces = vlákno = Původně vlákna nepodporována proces vždy jednovláknový = Dnes máme = plnohodnotné procesy x odlehčené procesy = Úloha entita plánovaná pro běh procesoru = Proces všechno co vykonává kód jednoho spustitelného souboru a sdílí jeden adresní prostor = Vlákno úlohy uvnitř procesu

Vlastnosti a stav úlohy = Task_struct datová struktura popisující úlohu = Obsahuje obrovské množství položek, které se dynamicky mění = Důležité položky: = Stav úlohy = Příznaky úlohy = Datové struktury

Stav úlohy = Položka state reprezentuje stav úlohy = Nastavuje se pomocí funkce set_task_state() a set_current_state() = Hodnoty proměnné state: = TASK_RUNNING = TASK_INTERRUPTIBLE = TASK_UNITERRUPTIBLE = TASK_STOPPED = TASK_TRACED = TASK_DEAD

Stav úlohy TASK_TRACED TASK_STOPPED TASK_RUNNING TASK_UNINTERRUPTIBLE TASK_INTERRUPTIBLE TASK_DEAD

Příznaky úlohy, další datové struktury = Příznaky parametr úlohy uložený v položce flags struktury task_struct = Jedná se o bitovou masku a příznaky se tak mohou kombinovat = PF_STARTING = PF_EXITING = PF_FORKNOEXEC = PF_SIGNALED = PF_MEMALLOC = PF_RANDOMIZE = PF_MEMPOLICY

Příznaky úlohy, další datové struktury = Dalším důležitým parametrem je ukazatel na strukturu thread_info = Každá architektura má vlastní definici jedná se o data silně spjatá s HW = Obsahuje informace o aktuální procesoru úlohy, o návratu ze systémového volání, o adresném prostoru atd.

Příznaky úlohy, další datové struktury = PID datová struktura sloužící k jednoduché identifikaci vlákna, procesu, skupiny procesů a session = V porovnání s TID, TGID/PID, PGID, SID má východu, že je vždy jednoznačná a netrpí problémy s recyklací číselných hodnot = Ukládá se do hashové tabulky, kde je lze velmi rychle najít podle číselné hodnoty

Vztahy mezi úlohami = Mezi jednotlivými úlohami panují určité vztahy = Struktura task_struck obsahuje položky, které tyto vztahy popisují = Parent = Real_parent = Children = Sibling = Group_leader = Ptrace_children = Ptrace_list = Tgid = Signal->pgrp = Signal->session

Procesy rodič a potomci rodič children pid = 2354 parent parent parent potomci pid = 2355 pid = 2355 pid = 2368 sibling sibling sibling

Procesy rodič a jeho vícevláknový potomek rodič children pid = 2354 parent parent pid = 2355 tgid = 2355 sibling Thread_group pid = 2368 tgid = 2355 sibling Thread_group potomci

Procesy ladění pomocí ptrace() rodič children pid = 2354 Ladící proces ptarce_children pid = 9562 real_parent pid = 2354 Potomek a laděný proces sibling ptrace_list

Vytváření a rušení úloh = Vytvoření úlohy vždy centrální = Hlavní výkonnou funkcí je do_fork() zde končí volání fork(), clone()a kernel_thread() = do_fork začne alokací struktury pid nastaví případný ladící příznak a provede kopírovací práce

Kopírování úlohy = Ve starších unixových systémech vytvoření procesu = kompletní zkopírování procesu = V Linuxu NE = paměť se kopíruje až při zápisu do stránky = lze určit co kopírovat = lze určit co sdílet

Kopírování úlohy = Proces kopírování zajišťuje funkce copy_process(), která provede: = Kontrolu příznaků = Ověří oprávnění = Zkopíruje základní strukturu úlohy = Kontrola limitu = Zvýšení reference = Aktualizace dalších stavových hodnot = Do struktury úlohy se nastaví příznaky a struktura pid

Kopírování úlohy = Dále se kopíruje vše co má nastaveno příznak pro zkopírování souborové deskriptory, signály a jejich obsluha, paměťové struktury atd. = Vždy se volají všechny funkce, teprve uvnitř každé se rozhoduje, jak a zda se bude kopírovat = Kopírování se dokončí funkcí copy_thread()

Kopírování úlohy = Poté pokračuje inicializace datových položek, následuje mapování úlohy na procesor, nastavení procesoru a masky procesů = Pak dojde k přepočítání signálů, aby byli doručeny určité relaci nebo skupině procesů = A následuje řada nastavení, které definují vtahy mezi rodiči, skupinou procesů, session atd.a aktualizují se stavové údaje

Ukončení běhu úlohy = Implementace ukončení běhu úlohy je veslice složitá záležitost = Běh končí vždy stejným mechanismem = Na nejvyšší úrovni využívá funkci do_group_exit(), která je volána systémovým voláním exit_group() a při neobsloužených signálech = Ta zajistí ukončení všech vláken ve skupině daného procesu posílá všem signál SIGKILL a pak zavolá do_exit()

Ukončení běhu úlohy = do_exit() začíná kontrolami posílá notifikaci a aktualizuje paměť systému = Po posledním vlákně ve skupině ruší časovače a odstraní jejich infrastrukturu = Postupně uvolňuje jednotlivé komponenty (paměť, souborové deskriptory, souborové systémy..)

Ukončení běhu úlohy = Dalším krokem jsou notifikace = Nejdříve se posílá zpráva přes connector a volá se exit_notify(), která mimo jiné zajistí přesměrování čekajících signálů do jiných vláken, potomky předá procesu init = Změní ukončovací stav úlohy na EXIT_ZOMBIE a pokud nikdo nečeká pak přímo na EXIT_DEAD

Ukončení běhu úlohy = Uvolňovací funkcí release_task()se ukončuje daná úloha a také se zasílá signálová notifikace vláknu, které odstartovalo ukončení skupiny vláken a je ve stavu zombie = sched_exit() zajistí dostatečné časové kvantum na zbytek ukončovacích prací

Ukončení běhu úlohy = Na samém závěru ukončování se úloha ještě jednou naplánuje volá se funkce finish_task_switch() s voláním put_task_struct(), které dekrementuje počítadlo referencí pokud na úlohu již nikdo nečeká klesne na nulu a úloha se odstraní = Nedostane již časové kvantum a zůstane uzavřena

Ukončení běhu úlohy = Pokud na úlohu čeká její rodič, provede se definitivní uvolnění ve funkci wait_task_zombie(). Poté co se v této funkci změní stav úlohy na EXIT_DEAD a přečtou se potřebné údaje o úloze.

Vlákna/procesy jádra = Speciálním druhem vlákna je vlákno jádra (kernel thread) někdy se mluví i o procesu jádra = Jde v podstatě o totéž, jelikož běží v adresním prostoru jádra společném pro všechny vlákna jádra = Za vlákno jádra se považujeme jediná úloha, kdežto za proces pak skupina takových vláken, které k sobě logicky patří

Vlákna/procesy jádra = Jejich smyslem je vykonávat kód jádra na úrovni procesu s plným přístupem k paměťovému adresnému prostoru jádra = Úlohy vlákna jádra: = Správa pracovních front = Obsluha SW přerušení = Automatické načtení modulů = Asynchronní operace I/O = Zpožděný zápis = Odkládání paměťových stránek atd.

Zdroje = NEMETH, Evi, SNYDER, Garth, HEIN, Trent R. Linux : kompletní příručka administrátora. 1. vyd. Brno : Computer Press, 2004. 828 s. ISBN 80-7226-919-4. = Linux : Dokumentační projekt. 4. vyd. Brno : Computer Press, 2007. 1334 s. ISBN 978-80-251-1525-1. = JELÍNEK, Lukáš. Jádro systému Linux : kompletní průvodce programátora. 1. vyd. Brno : Computer Press, 2008. 686 s. ISBN 978-80-251-2084-2. Josef Jan Horálek FIM Univerzita Hradec Králové Start systému

Děkuji za pozornost