Přeskočit na hlavní obsah

Otázka č. 15 - Meziprocesorová komunikace

  • Výměna dat mezi dvěma nebo více procesy či vlákny
  • Komunikace může probíhat i mezi počítači v síti
  • Současné OS nabízejí celou škálu prostředků
  • Tyto prostředky se liší svou rychlostí, způsobem použití
  • anglicky Inter-Process Communication (IPC)

Proč je potřeba?

  • Ve výpočetně náročných úlohách je vhodné využít všechna jádra a mikroprocesory počítače
  • Složité výpočty a operace tak můžeme rozdělit mezi více procesů či vláken
  • Ty pak pomocí IPC mohou provádět operace nad daty společně

Dělení meziprocesové komunikace

  • Zasílání zpráv
  • Synchronizace
  • Sdílená paměť
  • Vzdálené volání procedur

Klasifikace komunikačních prostředků

  1. Spoluúčast jádra – jestli se účastí jádro nebo ne o Jádro se komunikace neúčastní o Data proudí přes jádro tj. jsou minimálně 2x kopírována
  2. Vnitřní struktura dat – formát přenášených dat o Proudově orientované datovody - data tvoří jediný nečleněný proud o Zprávově orientované - data jsou organizována do zpráv
  3. Směrování přenášených dat o Všesměrové - z jednoho procesu do více procesů o Dostředné - z více procesů do jednoho procesu o Jedno směrné o Dvousměrné
  4. Přenášený objem dat( přenosová rychlost ) o Malé( kB/s ) - fronty zpráv a signály o Střední( desítky kB-MB/s ) - roury a sokety o Velké( stovky MB - GB/s ) - sdílená paměť
  5. Transparnentnost použití

Typy meziprocesové komunikace

Soubor

  • Nejjednodušší výměna dat mezi soubory
  • Dočasné soubory
  • Všechny procesy mohou zapisovat -> mohou si vzájemně škodit

Výměna dat

  • Data jsou uložena na nepojmenovaný soubor
  • Jeden proces zapisuje
  • Druhý z něj čte
  • Po předání informací jsou data ze souboru odstraněna

Signály

  • Zpráva, která má o něčem informovat ostatní procesy
  • Nepoužívá se pro přenos dat mezi procesy
  • Lze poslat jen vlastním procesům – potomkům

Zasílání zpráv

  • Univerzálnější než signály
  • Mezi procesy lze přenášet data

Sdílená paměť

  • Procesy jsou odděleny (mají svou vlastní paměť)
  • Vlákna mají sdílenou paměť záměrně
  • Pokud chtějí procesy komunikovat dostanou procesy stejnou paměť, kterou sdílí – sdílená paměť
  • Při zápisu problém souběhu –když oba chtějí zapisovat – řeší se zamykáním (synchronizační prvky)

Roura

  • Je klasickým komunikačním prostředkem OS Unix
  • Jednosměrným datovodem (jeden zapisuje, druhý čte)
  • Vhodný především k výměně malých a středních objemů dat mezi dvěma procesy, vlákny, programy
  • V případě obousměrného přenosu je nutno použít dvojici rour
  • Používá vyrovnávací paměť (buffer)
  • Data se vyměňují skrze speciální soubor typu roura
  • 2 Typy
    • Nepojmenovaná roura
      • Nemají vlastní identifikátor ,,nejsou pojmenované"
      • Tudíž nemohou být použity libovolnými procesy, ale pouze procesy, které rouru vytvořili, nebo jejich potomky
    • Pojmenovaná roura
      • Má vlastní identifikátor ,,je pojmenovaná“
      • Používá se pro přenos dat mezi procesy jež nejsou příbuzné

Soket

  • Síťový komunikační prostředek
  • Umožňuje připojení přes počítačovou síť
  • Na rozdíl od ostatních probíhá výměna dat v RAM paměti
  • Na rozdíl od roury umí obousměrnou komunikaci(oba procesy zapisují i čtou)
  • Umožňují navázat 2 typy spojení
    • Datagramové - zprávově orientované(neposkytují záruku úspěšného doručení ani pořadí)
    • Proudové - obousměrný datovod
  • Údaje v soketu
    • IP adresa a port serveru
    • IP adresa a port klienta
    • Použitý protokol pro komunikaci - většinou TCP nebo UDP

Spojení

  1. Otevření půlsoketu serverem se svojí IP adresou a portu – nabídne potenciální spojení
  2. Klient vyšle požadavek na spojení, který obsahuje identifikaci serveru (adresu, port, protokol)
  3. Pokud je na specifikovaném místě nalezen soket, jenž čeká na spojení dojde ke vzniku spojení( vzniká tzv. relace )
  4. Dojde k duplikaci půlsoketu, aby se mohl připojit další klient

Fronta zpráv

  • Zprávově orientovaným komunikačním prostředkem
  • Umožňuje cílenou i všesměrovou výměnu zpráv
  • Zprávy jsou nezbytné u OS klient-server, ale jsou užívány i v jiných systémech

Obsahuje

  • Frontu, do které se ukládají zprávy
  • Funkci pro přijetí zpráv
  • Funkci odesílání zpráv

Obsah zprávy

  • Hlavička - informace
  • Tělo – data

Výměna dat

  • Vysílající proces přidává do fronty zprávy
  • Vysílající proces se blokuje pokud je fronta plná
  • Přijímací proces bere zprávy z fronty
  • Přijímací proces se blokuje není-li ve frontě žádná použitelná zpráva

Vzdálené volání procedur

  • Umožňuje programu vykonat kód na jiném místě, než je umístěn volající program
  • Vzdáleně volaná procedura může přijímat parametry
  • Vzdáleně volaná procedura může též hodnoty vracet
  • Jedná se tedy o zprávově orientovaný obousměrný komunikační prostředek

Příklad

  • provedení složitějšího matematického výpočtu výkonnějším počítačem, dostupným skrze síť