Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Operační systémy 9. Spolupráce mezi procesy
Obsah: © Milan Keršláger
2
Spolupráce mezi procesy
využívána při multitaskingu tj. současný běh více úloh využíváme při multiprogramování programátor využije multitasking zjednodušení naprogramování příslušné úlohy rozdělení na procesy zjednodušuje programování využití více jader procesorů
3
Komunikace mezi procesy
zajišťuje několik činností synchronizace čekání na událost v druhém procesu vzájemné informování o postupu výpočtu signalizace jednoduchá asynchronní komunikace proces reaguje spuštěním obsluhy signálu výměna dat vysoké nároky na flexibilitu (specifické požadavky) pomocí výměny dat lze realizovat prakticky cokoliv
4
Mechanismy spolupráce
zasílání zpráv flexibilní i mezi různými počítači (např. cluster) sdílená paměť silnější nástroj, (neomezené) možnosti knihovny → jednoduchá implementace některé OS podporují oba mechanismy lze však implementovat i dodatečně (knihovny)
5
Signály jde o asynchronní oznámení události
realizace jako jednoduché zprávy (bez přenosu dat) jádro přeruší provádění procesu vyvolána obsluha signálu implicitní obsluha v jádře OS proces definuje vlastní obsluhu (proceduru) je to nejjednodušší forma zasílání zpráv standardní součást unixového jádra definuje POSIX, seznam v Single Unix Specification omezený počet signálů (Linux: pro RT)
6
Signály v Unixu propojení na řídící znaky terminálu
může být změněno příkazem stty CTRL+c → SIGINT → implicitně ukončení procesu CTRL+z → SIGTSTP → pozastavení procesu CTRL+\ → QUIT → ukončení + zápis core ošetření výjimek (standardně ukončení + core) SIGFPE → dělení nulou SIGSEGV → porušení ochrany paměti signalizace od jádra SIGPIPE → po ukončení procesu, který čte z roury
7
Použití signálů v Unixu
systémové volání jádra – kill() knihovní funkce, příkaz kill pro dané PID nebo pro skupinu procesů definice handleru proces sám definuje obsluhu signálu ignorování nebo procedura (vlastní nebo implicitní) není-li definována, tak implicitní handler nelze pro SIGKILL a SIGSTOP problémy souběh, globální proměnné, non-reentrantní funkce
8
Zasílání zpráv velmi flexibilní
lze předávat v rámci 1 systému, ale i přes síť umístění zprávy sdílená paměť → předání ukazatele buffer, fronta zpráv možné problémy + ošetření chyb ztráta nebo duplicita zprávy zkomolení zprávy jeden z procesů skončí
9
Odlišnosti zasílání zpráv
počet participujících procesů dva nebo více → způsob vytváření spojení vlastnosti spojení kapacita spojení (kolik nezpracovaných) při nulové se odesílatel blokuje nebo se zpráva ztratí → nutnost kombinovat se synchronizačními prostředky omezená a neomezená kapacita velikost zpráv – pevná, proměnná duplex – jednosměrnost, obousměrnost synchronní, asynchronní – bez čekání na odpověď
10
Sdílená paměť velmi flexibilní
programátor si může přizpůsobit dle svých potřeb problém souběhu dva nebo více procesů přistupuje ke stejným datům při samostatném přístupu se problém neprojeví problémem je neatomická operace první proces upravuje sekvenčně data dojde ke změně kontextu na druhý proces druhý proces čte nekonzistentní data problém skutečného paralelního běhu (podobně)
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.