UNIX folyamatok kommunikációja



Hasonló dokumentumok
UNIX folyamatok kommunikációja

UNIX: folyamatok kommunikációja

Jelzések és kezelésük

OPERÁCIÓS RENDSZEREK. A mai program. Hiba és eseménykezelés. Alapfogalmak. Eseménykezelés, szignálozás

Operációs rendszerek. 4. gyakorlat: Szignálok küldése, kezelése

Példa: Aktuális könyvtár tartalmának fájlba mentése, melynek neve az aktuális dátum és idő: ls l > `date+%f_%h-%m`.txt

OPERÁCIÓS RENDSZEREK II GYAKORLAT

OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS

Operációs Rendszerek II. labor alkalom

Csak felvételi vizsga: csak záróvizsga: közös vizsga: Mérnök informatikus szak BME Villamosmérnöki és Informatikai Kar január 4.

Osztott alkalmazások fejlesztési technológiái Áttekintés

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Dr. Illés Zoltán

UNIX: fájlrendszerek

TI TMDSEVM6472 rövid bemutatása

S z á m í t ó g é p e s a l a p i s m e r e t e k

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Tartalom. Történeti áttekintés. Történeti áttekintés Architektúra DCOM vs CORBA. Szoftvertechnológia

OPERÁCIÓS RENDSZEREK 1. ÁTIRÁNYÍTÁSOK, SZŰRŐK

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7

Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20

Szálak szinkronizálása (Ro- Sincronizarea threadurilor)

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Socket programozás Példák

S z á m í t ó g é p e s a l a p i s m e r e t e k

Tarantella Secure Global Desktop Enterprise Edition

Operációs rendszerek 1.

Lokális hálózatok. A lokális hálózat felépítése. Logikai felépítés

(kernel3d vizualizáció: kernel245_graph.mpg)

Operációs rendszerek MINB240 V kredit KF Nagyváradi Anett 0. előadás Bevezetés

Operációs rendszerek MINB240 V2+2+0

Máté: Számítógép architektúrák

RIA Rich Internet Application

URL-LEL ADOTT OBJEKTUM LETÖLTÉSE (1) URL-LEL ADOTT OBJEKTUM LETÖLTÉSE

Máté: Számítógép architektúrák

Lekérdezések az SQL SELECT utasítással

Számítógép Architektúrák

EMTP, EGY ÚJ LEVELEZÕ PROTOKOLL ÉS IMPLEMENTÁCIÓJA

Számítógépek felépítése, alapfogalmak

% % MATLAB alapozó % % , Földváry Lóránt % Laky Piroska (kiegészítés)

ORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Programozás alapjai óra. Morvai Flórián, 2010 Dr. Dévényi Károly előadásvázlata alapján

AIX 6.1. IBM Systems Director Console for AIX

Adatkezelő szoftver. Továbbfejlesztett termékvizsgálat-felügyelet Fokozott minőség és gyártási hatékonyság

Néhány kihagyhatatlan Linux tipp és trükk. Ezeket a tippeket olvasóink osztották meg velünk

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Számítógép labor V. Egyszer Web szerver. Dokumentáció. Készítette: Ács Gergely (K4C03M)

Unix-Linux alapok II. gyakorlatvezető: Lutár Patrícia

Intellio Video System 2. Csatlakozási útmutató a demószerverhez

Gyors tippek linuxra

2. fejezet Hálózati szoftver

GQ-3x és GQ-4x USB univerzális programozó Kézikönyv

DB2 Connect Personal Edition telepítése és beállítása

Az időhöz kötődő parancsok

A csatlakozási szerződés 1. sz. melléklete

Bluetooth mérési útmutató 1. mérés

IBM Data Server ügyfelek telepítése

KIS. KELER Zrt. Az STP KID megvalósítása. KELER Internetwork System

MAKING MODERN LIVING POSSIBLE. Danfoss Heating Solutions

Számítógépes hálózatok

Linux alapok és használatuk

Operációs Rendszerek II. labor. 2. alkalom

A mai program OPERÁCIÓS RENDSZEREK. A probléma. Fogalmak. Mit várunk el? Tágítjuk a problémát: ütemezési szintek

Bevezetés a C++ programozásba

Hálózati útmutató. A biztonságos és megfelelõ kezelés érdekében használat elõtt olvassa el az Általános Beállítási Útmutató biztonsági információit.

Operációs rendszerek

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

Rétegezett architektúra HTTP. A hálózatfejlesztés motorját a hálózati alkalmazások képezik. TCP/IP protokoll készlet

Debreceni Egyetem Informatikai Kar. Szolgáltatás-orientált programozás az Oracle-ben

Az Oracle rendszer komponensei

Bevezetés a UNIX rendszerekbe

Matematikai és Informatikai Intézet. 4. Folyamatok

Üzleti kritikus alkalmazások Novell Open Enterprise Serveren

DNS hamisítás szerepe, működése, védekezés. Benda Szabolcs G-5S5A Peller Nándor G-5i10 Sőregi Gábor G-5S5A

AlphaRex 3 digitális programkapcsoló

GNU/Linux alapok és alkalmazásuk

C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés / 21

A Picoblaze Core implementálása FPGA-ba

CAD-CAM

A FieldGenius Konfigurálása

Számítógépes alapismeretek

Rendelkezésre állás Magas szintű rendelkezésre állás megvalósítása feladatalapú megközelítéssel

KLIENS-SZERVER ALAPÚ ERLANG PROGRAMOK TRANSZFORMÁCIÓJA ERLANG OTP SÉMÁRA

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

Számítógépes Hálózatok GY 3-4.hét

Teleoperáció Robot vezérlése IP-hálózaton

ARM processzorok felépítése

KP-S110. GSM riasztó rendszer. Kezelési utasítás.

Adatbázis használata PHP-ből

Folyamatok követése. Tartalom. 1. Folyamatok

Külvilági kapcsolat. UPS séma ábra, kétsoros LCD DISPLAY, 8db nyomógomb. A B C D E F G H

Folyamatok kezelése. Az operációs rendszerek egyik legfontosabb feladata a folyamatok kezelése.

Általános használati útmutató Videosec rögzítőkhöz

1. Ismerkedés a Hyper-V-vel, virtuális gépek telepítése és konfigurálása

Komponens modellek. 3. Előadás (első fele)

C programnyelv 1. Kedves Kollegina, Kolléga!

Csak felvételi vizsga: csak záróvizsga: közös vizsga: Mérnök informatikus szak BME Villamosmérnöki és Informatikai Kar május 30.

Tanúsítási jelentés. Hung-TJ az nshield F3 PCI, az nshield F3 Ultrasign PCI és az nshield F3 Ultrasign 32 PCI kriptográfiai adapter

Riak. Pronounced REE-ahk. Elosztott adattároló eszköz. Molnár Péter

Átírás:

UNIX folyamatok kommunikációja kiegészítő fóliák az előadásokhoz Mészáros Tamás http://www.mit.bme.hu/~meszaros/ Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék UNIX folyamatok kommunikációja 1 / 21

Az előző részekben történt... A kernel felügyeli a folyamatokat, menedzseli az erőforrásokat elkülöníti egymástól a folyamatokat (mindenkinek saját virtuális gép) réteges, moduláris felépítésű a folyamatok a kernellel rendszerhívásokon keresztül kommunikálnak A folyamatok a felhasználói programok futás alatt álló példányai UNIX alatt szülő-gyerek kapcsolatban állnak egymással A kommunikáció elmélete közös memórián keresztül, üzenetekkel, távoli eljáráshívás (RPC) erőforrások védelme, kritikus szakasz, szemafor blokkoló (szinkron), nem blokkoló (aszinkron) UNIX folyamatok kommunikációja 2 / 21

UNIX folyamatok kommunikációja: példák Folyamatok kimenetének lapozása, átalakítása, feldolgozása ps -ef more ps -ef wc -l ps -ef cut -d \ -f 1 sort uniq wc -l a jel a csővezetéket jelenti: az első parancs (folyamat) kimenetét a második parancs (folyamat) bemenetére irányítjuk. Független folyamatok kommunikációja prw-rw-r-- 1 demo demo 8 márc 26 10:46 /tmp/named_pipe A p jel egy speciális csővezetéket jelöl. Jelzések a folyamatoknak CTRL + C CTRL + Z kill <SIG> <PID> Folyamat leállítása, felfüggesztése Értesítése eseményről (pl. gyerek folyamat leállt, lásd zombi állapot) Alkalmazásfejlesztés: adatcsere, szinkronizáció Rendszerhívások és példaprogramok az előadás későbbi részében UNIX folyamatok kommunikációja 3 / 21

UNIX folyamatok kommunikációja: példák (2) Beérkező levelek spam és vírusszűrése srw-r--r-- 1 clamav clamav 0 Nov 27 11:38 /var/clamav/clmilter.socket srwxr-xr-x 1 sa-milt sa-milt 0 Nov 27 11:38 /var/run/spamass-milter/spamass-milter.sock Az s betű a sor elején egy ún. socket azonosítót jelöl, amely mögött egy hálózati kommunikációs csatorna húzódik meg. Adatbázis-kezelők osztott memória használata Sok folyamattal dolgoznak párhuzamosan: egyszerű és gyors kommunikációra van szükség. Tipikus használati célok: statikus adatstruktúrák zárolás adatpufferek Megfelelően be kell állítani az adatbázis-kezelő telepítése során Nem ritka, hogy a fizikai memória felét ajánlják lefoglalni ilyen célra. Lásd: Oracle System Global Area http://docs.oracle.com/cd/b19306_01/server.102/b14220/memory.htm További egyszerű példák: Speaking UNIX:!$#@*% UNIX folyamatok kommunikációja 4 / 21

A kommunikáció (alap)csatornái az előadás témája Jelzések események keltése és kezelése Csővezetékek FIFO kommunikáció a rokonságon belül és kívül Szemaforok Üzenetsorok diszkrét, típusos üzenetek folyamatok között Osztott memória azonos fizikai memóriaterület használata több folyamatban hálózati (socket) kommunikáció Távoli eljáráshívás (Sun RPC) UNIX folyamatok kommunikációja 5 / 21

UNIX jelzések Cél: egy folyamat (vagy folyamatcsoport) értesítése a kernelben, más folyamatokban, valamint önmagában bekövetkezett eseményekről szinkronizálása más folyamatokhoz (kezdetben, ma van jobb megoldás) Jelzés típusa (SIGINT, SIGCHLD, SIGKILL, lásd: kill l) rendszer: kivételek (pl. hibák), kvóta, riasztás, értesítés (egy gyerek leállt) felhasználói: emberek (ctrl + c, ctrl + z), folyamatok (tetszőleges céllal) A működés áttekintése jelzést keltése (rendszerhívás vagy valamilyen esemény bekövetkezése) a kernel értesíti a címzetteket a jelzésről a címzett egy jelzéskezelő eljárásában fogadja a jelzést Problémák a megvalósítással a keltés és a kézbesítés időben szétválik (akár elég messze is) sokféle implementáció, némelyik nem túl megbízható (elveszhet jelzés) UNIX folyamatok kommunikációja 6 / 21

Jelzések keltése és kezelése Jelzések keltése (folyamat által) #include <signal.h> /* kill() */ kill(pid, SIGUSR1); /* jelzés küldése */ Jelzések kezelése többféle kezelési eljárás lehetséges, bizonyos keretek között állítható Core: core dump és leállítás (exit()) Term: leállítás (exit()) Ign: figyelmen kívül hagyás Stop: felfüggesztés Cont: visszatérés a felfüggesztett állapotból (vagy ignore) az alkalmazás saját kezelőfüggvényt is megadhat signal(sigalrm, alarm); /* kezelőfüggvény beállítása */ void alarm(int signum) {... } /* a kezelőfüggvény */ a jelzés típusától függ, hogy a fentiek közül mi az alapértelmezett, illetve minek a beállítása engedélyezett pl. a SIGKILL nem hagyható figyelmen kívül és nem definiálható rá jelzéskezelő függvény UNIX folyamatok kommunikációja 7 / 21

UNIX jelzések: példák #include <signal.h> /* signal(), kill() */ #include <unistd.h> /* getpid() */ #include <sys/types.h> /* pid_t */ pid_t pid = getpid(); /* saját PID */ kill(pid, SIGSTOP); /* STOP jelzés küldése */ Ekvivalens parancssori utasítás: kill -STOP <PID> signal(sigcld, SIG_IGN); /* nem foglalkozunk a gyerekekkel */ signal(sigint, SIG_IGN); /* nem foglalkozunk a ctrl+c jelzéssel */ signal(sigint, SIG_DFL); /* alapértelmezett kezelő beállítása */ signal(sigalrm, alarm); /* jelzéskezelő függvény beállítása */ void alarm(int signum) {... } /* az eljárás */ alarm(30); /* alkalmazás: ALARM jelzés 30mp múlva */ UNIX folyamatok kommunikációja 8 / 21

man -s 7 signal (részlet) Signal Value Action Comment SIGHUP 1 Term Hangup detected on controlling terminal or death of controlling process SIGINT 2 Term Interrupt from keyboard SIGQUIT 3 Core Quit from keyboard SIGILL 4 Core Illegal Instruction SIGABRT 6 Core Abort signal from abort(3) SIGFPE 8 Core Floating point exception SIGKILL 9 Term Kill signal SIGSEGV 11 Core Invalid memory reference SIGPIPE 13 Term Broken pipe: write to pipe with no readers SIGALRM 14 Term Timer signal from alarm(2) SIGTERM 15 Term Termination signal SIGUSR1 30,10,16 Term User-defined signal 1 SIGUSR2 31,12,17 Term User-defined signal 2 SIGCHLD 20,17,18 Ign Child stopped or terminated SIGCONT 19,18,25 Cont Continue if stopped SIGSTOP 17,19,23 Stop Stop process SIGTSTP 18,20,24 Stop Stop typed at tty SIGTTIN 21,21,26 Stop tty input for background process SIGTTOU 22,22,27 Stop tty output for background process UNIX folyamatok kommunikációja 9 / 21

UNIX csővezetékek: pipe() Cél: folyamatok közötti adatátvitel ( ls -la more) Jellemzők csak szülő-gyerek (leszármazott, testvér) viszonylatban adatfolyam (nincs üzenethatár, tipizálás) egyirányú adatfolyam (író olvasó) (több író és olvasó is lehet!) limitált kapacitás: pl. 4k (Linux < 2.6.11), 65k (Linux >= 2.6.11) A megvalósítás egy folyamat létrehoz egy csővezetéket (pipe()) a kernel létrehozza az adatstruktúrákat és olvasási/írási leírókat ad vissza (a folyamat továbbadja a leírókat a gyerekeinek) a leírók segítségével kommunikálnak a folyamatok (read(), write()) Korlátok, problémák nincs címzés, tipizálás, üzenethatár csak a rokonságban működik UNIX folyamatok kommunikációja 10 / 21

UNIX elnevezett csővezetékek (named pipe, FIFO) Az egyszerű csővezetékek legkomolyabb problémájának megoldása független folyamatok kommunikációja avagy egy már létező csővezeték elérése egy másik folyamat által Jellemzők nem csak szülő-gyerek viszonylatban alkalmazható ugyanúgy működik, mint a csővezeték a létrehozás a fájlrendszer segítségével történik (mkfifo, mknod) lehetséges a kétirányú kommunikáció (megnyitás olvasásra és írásra) Példa: kommunikáció az init folyamattal a fájlrendszerben látható a csővezeték: prw------- 1 root root 0 Jan 1 12:38 /dev/initctl (a fájlrendszerrel kapcsolatos részletek később) További példák: Introduction to Named Pipes UNIX folyamatok kommunikációja 11 / 21

UNIX System V IPC Cél: folyamatok közötti szabványos, egységes kommunikáció adatátvitel szinkronizáció Közös alapok (fogalmak) erőforrás: a kommunikáció eszköze (l. lentebb) kulcs: azonosító az erőforrás eléréséhez (egy 32 bites szám) közös kezelőfüggvények: *ctl(), *get( kulcs ) jogosultsági rendszer: létrehozó, tulajdonos és csoportjaik a szokásos hozzáférés-szabályozási rendszer (felhasználó, csoport, mások) Erőforrások szemaforok üzenetsorok bővebb infó: man svipc ipc ipcs osztott memória UNIX folyamatok kommunikációja 12 / 21

UNIX System V IPC: szemaforok Cél: folyamatok közötti szinkronizáció P() és V() operátorok szemaforcsoportok kezelése Használat sem_id = semget(kulcs, szám, opciók); adott számú szemaforhoz nyújt hozzáférést (adott kulccsal és opciókkal) (a tényleges létrehozás és az egyszerű hivatkozás az opciókban válik szét) az ops struktúrában leírt műveletek végrehajtása (részletek: man semop): status = semop(sem_id, ops, ops_méret); egyszerre több művelet, több szemaforon is végrehajtható blokkoló és nem blokkoló P() operáció is lehetséges egyszerű tranzakciókezelésre is van lehetőség UNIX folyamatok kommunikációja 13 / 21

UNIX System V IPC: üzenetsorok Cél: folyamatok közötti adatátvitel diszkrét, tipizált üzenetek nincs címzés, üzenetszórás Használat msgq_id = msgget(kulcs, opciók); adott kulcsú üzenetsorhoz nyújt hozzáférést (adott opciókkal) (a tényleges létrehozás és az egyszerű hivatkozás az opciókban válik szét) üzenetküldés (az msg tartalmaz egy típus azonosítót is): msgsnd(msgq_id, msg, méret, opciók); vétel: msgrcv(msgq_id, msg, méret, típus, opciók); a típus (egész szám) beállításával szűrést valósíthatunk meg = 0 a következő üzenet (tetszőleges típusú) > 0 a következő adott típusú üzenet < 0 a következő üzenet, amelynek a típusa kisebb vagy egyenlő UNIX folyamatok kommunikációja 14 / 21

UNIX System V IPC: osztott memória Cél: folyamatok közötti egyszerű és gyors adatátvitel a kernel helyett közvetlen adatátviteli csatorna (osztott memória régió) a fizikai memória elkülönített része, amely közösen használható Használat shm_id = shmget(kulcs, méret, opciók); adott kulcsú osztott nyújt hozzáférést (adott opciókkal) (a tényleges létrehozás és az egyszerű hivatkozás az opciókban válik szét) hozzárendelés saját virtuális címtartományhoz: változó = (típus) shmat(...); az adott változót hozzákötjük a visszakapott címhez lecsatolás: shmdt(cím); a kölcsönös kizárást meg kell valósítani (pl. szemaforokkal) A fájlrendszerekkel foglalkozó órán: fájlok osztott memóriás elérése UNIX folyamatok kommunikációja 15 / 21

UNIX hálózati (socket) kommunikáció Cél: címzéssel és protokollokkal támogatott adatátvitel tetszőleges folyamatok között kliens szerver architektúrában többféle célra (folyamatok közötti és gépek közötti hálózati komm.) sokféle protokollt támogat többféle címzés Fogalmak hálózati csatoló avagy azonosító (socket): a kommunikáció végpontja IP cím és portszám (l. hálózatok) Használat sfd = socket(domén, típus, protokoll); szerver: bind(sfd, cím,...); kliens: connect(sfd, cím,...); szerver: listen(sfd, sor_mérete); szerver: accept(sfd, cím,...); send(sfd, üzenet,...); recv(sfd, üzenet,...); shutdown(sfd); UNIX folyamatok kommunikációja 16 / 21

Kliens és szerver programok váza Kliens program socket() connect() send() recv() close() Szerver program sfd1 = socket() bind(sfd1) listen(sfd1) while sfd2 = accept(sfd1) fork() szülő: gyerek: vissza a ciklusba recv(sfd2) send(sfd2) close(sfd2) exit() UNIX folyamatok kommunikációja 17 / 21

(Sun) RPC (távoli eljáráshívás) A socket kommunikációra épülő elosztott rendszer infrastruktúra Cél: folyamatok közötti magas szintű kommunikáció távoli eljárások meghívása (másik folyamatban, akár másik gépen) programozói támogatás: interfész leírás + programgenerálás Fogalmak RPC nyelv: a hívható eljárások és típusaik (interfész) leírása azonosítók: a leírásban megadott egyedi számok (program, eljárás) rpcgen: a leírásból C programkódot generáló program portmapper: a programazonosítók és a hálózati portok összerendelése A Sun RPC technológia részei interfész leírás programgenerátor kommunikációs infrastruktúra (protokoll, szoftver) UNIX folyamatok kommunikációja 18 / 21

RPC interfész leírás és programgenerátor RPC nyelv (példa: date.x) program DATE_PROG { version DATE_VERS { long BIN_DATE(void) = 1; /* eljárás azon. = 1 */ string STR_DATE(long) = 2; /* eljárás azon. = 2 */ } = 1; /* verziószám = 1 */ } = 0x31234567; /* program azon. = 0x31234567 */ Kódgenerátor: rpcgen rpcgen date.x eredményei date.h: adattípusok deklarációja date_clnt.c: a kliens kódjában felhasználható date_... függvények date_srv.c: a szerver date implementációját meghívó függvények ( ) UNIX folyamatok kommunikációja 19 / 21

Összefoglalás: hogyan válasszak? (Implementációs kötöttségek: programozási nyelv, környezet, stb.) A kommunikáció végpontjai szerint: számítógépen belül: mindegyik, RPC esetleg nem számítógépek között: socket, RPC, hálózati diszkeken fájlon keresztül is A kommunikáció jellege: értesítés eseményekről: jelzések (SIGUSR1) szinkronizálás: szemaforok adatfolyam (pl.: csővezeték, socket) vs. diszkrét üzenetek (üzenetsorok) üzenettípusok, szűrés? (üzenetsorok) adatmennyiség (osztott memória: kicsi, csővezeték: közepes, socket: nagy) Teljesítmény gyorsak: osztott memória, csővezeték, socket (PF_UNIX) korlátos méret: osztott memória Kényelem RPC, osztott memória (szemaforok?) Programozási példák: http://beej.us/guide/bgipc/ UNIX folyamatok kommunikációja 20 / 21

Összefoglalás: a folyamatok közötti kommunikáció Klasszikus kommunikációs formák Jelzések (signal) Csővezetékek (pipe) FIFO (elnevezett csővezeték, named pipe) System V IPC: egységes kommunikációs keretrendszer Szemaforok Üzenetsorok Osztott memória (nem csak) Hálózati kommunikáció hálózati csatoló (socket) kommunikáció Sun RPC távoli eljáráshívás UNIX módra Szabványok IEEE Posix, System V, BSD További lehetőségek teljesítmény (rendszerhívások, fájl absztrakció eliminálása), pl. MegaPipe alk. környezet, szolgáltatások (CORBA, DCOM, SOAP, REST, stb.) UNIX folyamatok kommunikációja 21 / 21