UNIX 12. Komunikace mezi procesy © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● meziprocesová.

Slides:



Advertisements
Podobné prezentace
Základy databázových systémů
Advertisements

Komunikace periférii.
SOFTWARE dálkové studium PODNIKÁNÍ 2. listopad 2006.
Souborové systémy.
Komunikace v DS Přednášky z distribuovaných systémů Ing. Jiří Ledvina, CSc.
Přístupová práva, maska přístupových práv Jiří Hořejší.
13AMP 6. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled Synchronizace procesů Synchronizace procesů Producent-Konzument Producent-Konzument.
Architektura databází Ing. Dagmar Vítková. Centrální architektura V této architektuře jsou data i SŘBD v centrálním počítači. Tato architektura je typická.
Výrok „Počítač je pouze tak inteligentní jako jeho uživatel.“ (Radek Lochman, dnes)
Databázové systémy. Práce s daty Ukládání dat Aktualizace dat Vyhledávání dat Třídění dat Výpočty a agregace.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Informatika pro ekonomy II přednáška 10
13AMP 2. přednáška Ing. Martin Molhanec, CSc.. Stav procesu (kontext) Stav procesu je úplná informace, kterou je nutné uschovat při přerušení procesu,
Sběrnice Obr. 1.
13AMP 3. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled I. Co je to kontext úlohy Co je to kontext úlohy Task switching (přepnutí úlohy)
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Zablokování (deadlock, smrtelné objetí, uváznutí)
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Počítačové sítě Informatika – 7. ročník
SAMBA umožňuje linuxovému systému sdílení prostředků a služeb prostřednictvím sítě používá SMB (server message block) protocol - identický protokolu.
Základy informatiky část 6
Vnitřní (operační paměť)
Operační systémy Název a adresa školy
Výrok „Vypadá to, že jsme narazili na hranici toho, čeho je možné dosáhnout s počítačovými technologiemi. Člověk by si ale měl dávat pozor na takováto.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Systém souborů. Množina souborů různých typů – Data – Spustitelné programy – Konfigurační a pomocné informace – I/O zařízení Způsob organizace množiny.
Komunikace v DS Přednášky z distribuovaných systémů Ing. Jiří Ledvina, CSc.
Základy operačních systémů Meziprocesová komunikace a synchronizace Jakub Yaghob.
Typy počítačových sítí Střední odborná škola Otrokovice Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je PaedDr. Pavel.
Operační systémy. Výpočetní systém Stroj na zpracování dat vykonávající samočinně předem zadané operace.
Kontakty slajdy: ftp://ulita.ms.mff.cuni.cz/predn/POS.
SVAZEK NEDEDIKOVANÝCH PRACOVNÍCH STANIC NA BÁZI OS LINUX DANIEL LANGR DIPLOMOVÁ PRÁCE 2004.
Funkce operačního systému (11). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro.
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
Počítačová bezpečnost 2. Bezpečnost v OS © Milan Keršlágerhttp:// Obsah: ● jádro,
 = jedná se o vzájemné propojení lokálních počítačových sítí pomocí vysokorychlostních datových spojů  vznikl spojením mnoha menších sítí  v každé.
Unix a Internet 9. Samba © Milan Keršlágerhttp:// Obsah: ●
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
VIRTUÁLNÍ PAMĚŤ EP1. Kryštof Supek. Umožňuje předložit běžícímu procesu adresní prostor paměti, který je větší, než je fyzicky připojená paměť RAM Procesor.
UNIX 7. Meziprocesová komunikace a sítě © Milan Keršlágerhttp:// Obsah: ● meziprocesová.
BEZPEČNOSTNÍ TECHNOLOGIE I Operační program Vzdělávání pro konkurenceschopnost Projekt: Vzdělávání pro bezpečnostní systém státu (reg. č.: CZ.1.01/2.2.00/ )
UNIX 12. Komunikace mezi procesy © Milan Keršláger
Stránkování MATĚJ JURIČIČ 2015/2016 EP1 SPŠ A VOŠ JANA PALACHA KLADNO.
Operační systémy 10. Souběh a uváznutí
Bezpečnostní technologie I
Vypracoval / Roman Málek
Služby Windows Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
UNIX 12. Komunikace mezi procesy
Operační systémy 9. Spolupráce mezi procesy
Operační systémy 9. Spolupráce mezi procesy
Vlastnosti souborů Jaroslava Černá.
Operační systémy - úvod
Soubor Soubor v informatice označuje pojmenovanou sadu dat uloženou na nějakém datovém médiu, se kterou lze pracovat nástroji operačního systému jako.
1. ročník oboru Mechanik opravář motorových vozidel
Počítačová bezpečnost 2. Bezpečnost v OS
Název školy: ZŠ Bor, okres Tachov, příspěvková organizace
Operační systémy 9. Spolupráce mezi procesy
Informatika pro ekonomy přednáška 8
Správa paměti.
1. ročník oboru Mechanik opravář motorových vozidel
UNIX 7. Deskriptory a proudy
1. ročník oboru Mechanik opravář motorových vozidel
Segmentace Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Práce s procesy Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí Autor:
Operační systémy.
Přepínání procesů Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Paměť.
Přednášky z Distribuovaných systémů
Monitor Object 1.
Transkript prezentace:

UNIX 12. Komunikace mezi procesy © Milan Keršlágerhttp:// Obsah: ● meziprocesová komunikace ● soubor, sdílená paměť ● mapování souborů do paměti ● signály, zasílání zpráv ● roura, pojmenovaná roura, IPC soket ● zamykání souborů, souborové zámky

Účely komunikace ● Inter-Process Communication (IPC) 1) multiprogramování – úloha je rozdělena na více samostatných úloh, aby mohly být zpracovávány odděleně – je nutné zajistit synchronizaci, signalizaci a výměnu dat 2) clustery – výpočty probíhají na oddělených počítačích – je nutné zajistit synchronizaci, signalizaci a výměnu dat při využití počítačové sítě ● vzniká problém souběhu – problém současného zápisu více procesů do stejných dat

Souběh ● dva nebo více procesů modifikuje stejná data ● pokud by procesy byly spuštěny samostatně, k problému by nedošlo ● vznikají mysteriózní chyby ● ohrožená data mohou být uložena různě: ● data operačního systému: paměť jádra OS ● uživatelská data: soubor, sdílená paměť ● thready: z principu mají sdílenou paměť

Souběh – ze života ● sekretářka přidává všem zaměstnancům 100 Kč ● její program načte sdílená data ● sekretářka přičte 100 Kč ● data jsou uložena do sdíleného úložiště ● šéf se rozhoduje o přidělení prémie 500 Kč ● sekretářka načte další, ale odejde udělat kafe ● šéf načte stejná data, přičte 500 a data uloží ● sekretářka přijde, přičte 100 k původní částce ● sekretářka přepíše výsledek, 500 Kč se ztratí

Souběh – v počítači ● vytváření souborů ● soubor musí mít v adresáři unikátní jméno ● nové nejprve testujeme, pak teprve vytváříme ● může dojít k přerušení mezi testem a vytvořením ● nutnost atomické operace (typicky v jádru OS) ● přístup do SQL databáze ● aktualizace několika položek → nekonzistence dat ● ne vše lze vyřešit jako jedinou SQL instrukci ● používá se zamykání (souboru, semafory apod.) – vzniká však nový problém „uváznutí“

Atomická operace ● proběhne jako jeden celek ● operaci nelze přerušit – výsledek (všechny výsledky) se projeví najednou ● nejlépe jedna strojová instrukce ● delší (složitější) operace nejsou atomické ● atomicitu je možné zajistit jinými prostředky – zákaz přerušení, instrukce TSL, semafory ● tj. (zdánlivě) atomický sled více strojových instrukcí (kódu) – jeden CPU: operace je pak zdánlivě atomická – víceprocesorový systém ● zdánlivá atomicita operace problém neřeší ● řešení: budeme chránit (zamykat) data

Meziprocesová komunikace ● soubor ● sdílená paměť ● mapování souborů do paměti ● signály ● zasílání zpráv ● roura ● pojmenovaná roura ● IPC socket ● zamykání souborů

Soubor ● nejjednodušší výměna dat mezi procesy ● dočasné soubory ● v unixových systémech v adresáři /tmp, /var/tmp – všichni mají právo zápisu → mohou si vzájemně škodit ● používá se sticky bit → nelze si vzájemně mazat i přes „w“ ● i tak vyžaduje vytváření dočasných souborů speciální zacházení ● zejména u privilegovaných procesů je riziko poměrně velké ● též problém souběhu → náhodné názvy, zamykání ● komunikace je však poměrně těžkopádná ● velká režie (zápis na HDD) ● mají však všechny systémy → přenositelnost

Sdílená paměť ● procesy jsou normálně odděleny ● kromě threadů, které mají sdílenou paměť záměrně ● sdílená paměť je shodná s částí jiného procesu ● při zápisu problém souběhu – řeší se zamykáním, synchronizačními primitivy ● funkce pro ovládání definuje POSIX – definuje vytvoření, připojení, získání ukazatele – pak zápisy i čtení, odpojení, zrušení sdílené paměti – zaručuje přenositelnost

Příklad $ ipcs -m Shared Memory Segments key shmid owner perms bytes nattch status 0x790068c apache $ ipcrm shm ● nejprve jsou vypsány sdílené segmenty paměti ( ipcs ) ● druhý příkaz ( ipcrm ) zruší sdílený segment paměti (zůstane-li chybně po programu) ● mnoho programů pro GUI využívá sdílenou paměť pro komunikaci ● výše je sdílená paměť démona WWW serveru Apache ● uživatel vidí jen oblasti, do kterých má přístup ● uživatel root vidí všechny oblasti v systému ● v jazyce C se používají funkce shmget(), shmat() apod.

Mapování souborů do paměti ● původně metoda nahrazující klasické operace ● otevření, čtení, zápis, posun ukazatele, zavření – nevýhodou je neustále kopírování dat mezi cache, bufferem a paměťovým prostorem procesu ● využívá mechanismu „výpadku stránky“ – odkládání nepoužívaných částí paměti na disk – využíváno u stránkování paměti ● lze využít i pro meziprocesovou komunikaci ● namapovaný soubor může být sdílen více procesy ● samozřejmě je nutné řešit souběh atp.

Příklad ● používá se funkce mmap() ● otevření souboru pomocí open() ● získaný deskriptor jako parametr mmap() – na (zvolené) adrese v paměti bude obsah souboru – pro ni definujeme délku okna a offset obsahu souboru ● ukončení pomocí munmap() – zrušení mmap() též ukončením programu

Signály ● jednoduchá meziprocesová komunikace ● implementováno v jádře OS ● asynchronní signalizace mezi procesy – v unixových OS může odesílat signál i jádro OS ● lze poslat jen vlastním procesům – správce (root) může poslat signál všem procesům ● proces zpracovává signál vyvoláním procedury – implicitní akce, ignorování signálu, vlastní obsluha signálu – ne všel lze předefinovat (KILL bohužel, resp. naštěstí nejde) – při zpracování volat jen bezpečné funkce (! reentrantnost) ● odesláním signálu systémovým voláním kill()

Syscall: kill() ● název podle signálu KILL ● signály odlišeny názvy, ty mapovány na čísla – HUP – „zavěšení“ + ukončení, dnes rekonfigurace – INT – přerušení (z terminálu CTRL+c) – QUIT – ukončení + core dump – KILL – nepodmíněné ukončení procesu („vražda“) ● nelze ve stavu D (proces je v jádře, čeká na dokončení I/O) – SEGV – porušení ochrany paměti – PIPE – signalizace rozpadu roury (ukončení skupiny) – TERM – slušná žádost o ukončení procesu – STOP – pozastavení procesu – CONT – obnovení běhu procesu

Příkaz kill ● zasílání signálů z příkazového řádku ● kill -l → vypíše seznam signálů + jejich čísla ● kill – zaslání signálu TERM (žádost o ukončení) – je číslo procesu – signál lze posílat jen svým procesům, root může všem ● kill -1 nebo kill -HUP – dnes někdy znovunačtení konfigurace (rekonfigurace) ● kill -9 nebo kill -KILL – bezpodmínečné ukončení procesu

Zasílání zpráv ● univerzálnější, než signály ● mezi procesy lze přenášet i data ● implementace v jádře nebo jako sdílená paměť ● řešení mezních situací ● synchronní a asynchronní ● jednosměrné, obousměrné ● spolehlivý přenos nebo bez záruk – nutnost implementovat fronty, potvrzování zpráv ● řešení duplikace, ztráty, příjemce skončil atd.

Kolona (roura) ● propojení příbuzných procesů ● propojení přes deskriptory – jednosměrné spojení (jeden zapisuje, druhý čte) ● vytváří se skupina procesů – jádro posílá při přerušení roury signál SIGPIPE – skupina reaguje ukončením („broken pipe“) ● v paměti kruhový vyrovnávací paměť – buffer ● typicky se využívá v příkazovém řádku grep ro /etc/passwd | sort

Pojmenovaná roura ● umožňuje spojení nepříbuzných procesů ● definuje POSIX ● styčné místo je speciální soubor typu roura – název lze nějak předat nepříbuzným procesům – vytvořená pojmenovaná roura „přežije“ ukončení procesů ● data vyměňována v paměti (buffer) ● pouze jednosměrná komunikace (FIFO) – jeden proces zapisuje, další čte

IPC socket ● též tzv. Unix Domain Socket, definuje POSIX ● speciální soubor, ale implementováno v RAM ● obdoba síťové komunikace – od roury přidává obousměrnou komunikaci – navíc možnost více klientů ● například PostgreSQL server + klient – /tmp/.s.PGSQL.5432 – klient otevře a připojí se

Zamykání souborů ● pro zabránění souběhu ● v unixových systémech jen informativní (advisory) – i když je na soubor aplikován zámek, jádro ho nevynutí – všechny programy musí zámky respektovat – funkce fcntl() a flock() → též na části souboru ● sdílené zámky – též nazývány jako zámky pro čtení ● exkluzivní zámky – též nazývány jako zámky pro zápis ● souborové zámky

Souborové zámky ● soubor signalizující zamčeno ● např. /etc/shadow.lock – znamená: někdo si mění heslo, tak počkáme – někdy název včetně PID procesu, který ho vytvořil ● opět jde o záležitost respektu, jádro nevynucuje ● používá se ve shellu a na FS bez podpory zámků – např. starší verze NFS bez lock démona ● vytvoření musí být atomická operace – v shellu „noclobber“ nebo vytvoření adresáře – v zásadě poměrně komplikovaná logika – problém „opuštěných zámků“ (anglicky: stale lock file)