Slides 16 Unix 4 Kommunikacio
-
Upload
sweidan-omar -
Category
Documents
-
view
229 -
download
0
Transcript of Slides 16 Unix 4 Kommunikacio
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
1/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 1 / 18
UNIX folyamatok kommunikcija
kiegszt flik az eladsokhoz
Mszros Tamshttp://home.mit.bme.hu/~meszaros/
Budapesti Mszaki s Gazdasgtudomnyi Egyetem
Mrstechnika s Informcis Rendszerek Tanszk
http://home.mit.bme.hu/~meszaros/http://home.mit.bme.hu/~meszaros/ -
8/3/2019 Slides 16 Unix 4 Kommunikacio
2/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 2 / 18
Az elz rszekben trtnt...
A kernel
felgyeli a folyamatokat, menedzseli az erforrsokat elklnti egymstl a folyamatokat (mindenkinek sajt virtulis gp)
rteges, modulris felpts
a folyamatok a kernellel rendszerhvsokon keresztl kommuniklnak
A folyamatok a felhasznli programok futs alatt ll pldnyai
UNIX alatt szl-gyerek kapcsolatban llnak egymssal
A kommunikci elmlete
kzs memrin keresztl, zenetekkel, tvoli eljrshvs (RPC) erforrsok vdelme, kritikus szakasz, szemafor
blokkol (szinkron), nem blokkol (aszinkron)
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
3/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 3 / 18
A kommunikci (alap)csatorni az elads tmja
Jelzsek esemnyek keltse s kezelse
Csvezetkek FIFO kommunikci a rokonsgon bell s kvl
Szemaforok
zenetsorok diszkrt, tpusos zenetek folyamatok kztt
Osztott memria azonos fizikai memriaterlet hasznlata tbb folyamatban
hlzati (socket) kommunikci
Tvoli eljrshvs UNIX mdra
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
4/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 4 / 18
UNIX jelzsek
Cl: egy folyamat (vagy folyamatcsoport)
rtestse a kernelben, ms folyamatokban, valamint nmagbanbekvetkezett esemnyekrl
szinkronizlsa ms folyamatokhoz (ma mr van jobb megolds)
Jelzs tpusa (SIGINT, SIGCHLD, SIGKILL, lsd: kill l)
rendszer: kivtelek (pl. hibk), kvta, riaszts, rtests (egy gyerek lellt) felhasznli: emberek (ctrl + c, ctrl + z), folyamatok (tetszleges cllal)
A mkds ttekintse jelzst keltse (rendszerhvs vagy valamilyen esemny bekvetkezse)
a kernel rtesti a cmzetteket a jelzsrl a cmzett egy jelzskezel eljrsban fogadja a jelzst
Problmk a megvalstssal a kelts s a kzbests idben sztvlik (akr elg messze is)
sokfle implementci, nmelyik nem tl megbzhat (elveszhet jelzs)
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
5/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 5 / 18
Jelzsek keltse s kezelse
Jelzsek keltse (folyamat ltal)#include /* kill() */
kill(pid, SIGUSR1); /* jelzs kldse */
Jelzsek kezelse tbbfle kezelsi eljrs lehetsges, bizonyos keretek kztt llthat
Core: core dump s lellts (exit()) Term: lellts (exit())
Ign: figyelmen kvl hagys
Stop: felfggeszts
Cont: visszatrs a felfggesztett llapotbl (vagy ignore)
az alkalmazs sajt kezelfggvnyt is megadhatsignal(SIGALRM, alarm); /* kezelfggvny belltsa */
void alarm(int signum) { ... } /* a kezelfggvny */
a jelzs tpustl fgg, hogy a fentiek kzl mi az alaprtelmezett, illetveminek a belltsa engedlyezett
pl. a SIGKILL nem hagyhat figyelmen kvl s nem definilhat rjelzskezel fggvny
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
6/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 6 / 18
UNIX jelzsek: pldk
#include /* signal(), kill() */
#include /* getpid() */#include /* pid_t */
pid_t pid = getpid(); /* sajt PID */
kill(pid, SIGSTOP); /* STOP jelzs kldse */
Ekvivalens parancssori utasts: kill -STOP
signal(SIGCLD, SIG_IGN); /* nem foglalkozunk a gyerekekkel */
signal(SIGINT, SIG_IGN); /* nem foglalkozunk a ctrl+c jelzssel */
signal(SIGINT, SIG_DFL); /* alaprtelmezett kezel belltsa */
signal(SIGALRM, alarm); /* jelzskezel fggvny belltsa */
void alarm(int signum) { ... } /* az eljrs */
alarm(30); /* alkalmazs: ALARM jelzs 30mp mlva */
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
7/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 7 / 18
man -s 7 signal (rszlet)
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 exceptionSIGKILL 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 1SIGUSR2 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
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
8/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 8 / 18
UNIX csvezetkek: pipe()
Cl: folyamatok kztti adattvitel ( ls -la | more)
Jellemzk csak szl-gyerek (leszrmazott, testvr) viszonylatban
adatfolyam (nincs zenethatr, tipizls)
egyirny adatfolyam (r olvas) (tbb r s olvas is lehet!)
limitlt kapacits: pl. 4k (Linux < 2.6.11, 65k (Linux >= 2.6.11)
A megvalsts egy folyamat ltrehoz egy csvezetket (pipe())
a kernel ltrehozza az adatstruktrkat s olvassi/rsi lerkat ad vissza
(a folyamat tovbbadja a lerkat a gyerekeinek) a lerk segtsgvel kommuniklnak a folyamatok (read(), write())
Korltok, problmk nincs cmzs, tipizls, zenethatr
csak a rokonsgban mkdik
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
9/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 9 / 18
UNIX elnevezett csvezetkek (named pipe, FIFO)
Az egyszer csvezetkek legkomolyabb problmjnak megoldsa
fggetlen folyamatok kommunikcija avagy egy mr ltez csvezetk elrse egy msik folyamat ltal
Jellemzk nem csak szl-gyerek viszonylatban alkalmazhat
ugyangy mkdik, mint a csvezetk a ltrehozs a fjlrendszer segtsgvel trtnik
lehetsges a ktirny kommunikci (megnyits olvassra s rsra)
Plda: kommunikci az init folyamattal
a fjlrendszerben lthat a csvezetk:prw------- 1 root root 0 Jan 1 12:38 /dev/initctl
(a fjlrendszerrel kapcsolatos rszletek ksbb)
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
10/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 10 / 18
UNIX System V IPC
Cl: folyamatok kztti szabvnyos, egysges kommunikci
adattvitel szinkronizci
Kzs alapok (fogalmak) erforrs: a kommunikci eszkze (l. lentebb)
kulcs: azonost az erforrs elrshez (egy 32 bites szm) kzs kezelfggvnyek: *ctl(), *get( kulcs )
jogosultsgi rendszer: ltrehoz, tulajdonos s csoportjaik
a szoksos hozzfrs-szablyozsi rendszer (felhasznl, csoport, msok)
Erforrsok szemaforok
zenetsorok bvebb inf: man svipc man ipc
osztott memria
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
11/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 11 / 18
UNIX System V IPC: szemaforok
Cl: folyamatok kztti szinkronizci
P() s V() opertorok szemaforcsoportok kezelse
Hasznlatsem_id = semget(kulcs, szm, opcik);
adott szm szemaforhoz nyjt hozzfrst (adott kulccsal s opcikkal)(a tnyleges ltrehozs s az egyszer hivatkozs az opcikban vlik szt)
az ops struktrban lert mveletek vgrehajtsa (rszletek: man semop):status = semop(sem_id, ops, ops_mret);
egyszerre tbb mvelet, tbb szemaforon is vgrehajthat blokkol s nem blokkol P() operci is lehetsges
egyszer tranzakcikezelsre is van lehetsg
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
12/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 12 / 18
UNIX System V IPC: zenetsorok
Cl: folyamatok kztti adattvitel
diszkrt, tipizlt zenetek nincs cmzs, zenetszrs
Hasznlatmsgq_id = msgget(kulcs, opcik);
adott kulcs zenetsorhoz nyjt hozzfrst (adott opcikkal)(a tnyleges ltrehozs s az egyszer hivatkozs az opcikban vlik szt)
zenetklds (az msg tartalmaz egy tpus azonostt is):msgsnd(msgq_id, msg, mret, opcik);
vtel: msgrcv(msgq_id, msg, mret, tpus, opcik);
a tpus (egsz szm) belltsval szrst valsthatunk meg= 0 a kvetkez zenet (tetszleges tpus)> 0 a kvetkez adott tpus zenet< 0 a kvetkez zenet, amelynek a tpusa kisebb vagy egyenl
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
13/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 13 / 18
UNIX System V IPC: osztott memria
Cl: folyamatok kztti egyszer s gyors adattvitel
a kernel helyett kzvetlen adattviteli csatorna (osztott memria rgi) a fizikai memria elklntett rsze, amely kzsen hasznlhat
Hasznlatshm_id = shmget(kulcs, mret, opcik);
adott kulcs osztott nyjt hozzfrst (adott opcikkal)(a tnyleges ltrehozs s az egyszer hivatkozs az opcikban vlik szt)
hozzrendels sajt virtulis cmtartomnyhoz:
vltoz = (tpus) shmat(...);
az adott vltozt hozzktjk a visszakapott cmhez
lecsatols: shmdt(cm);
a klcsns kizrst meg kell valstani (pl. szemaforokkal)
O 2011
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
14/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 14 / 18
UNIX hlzati (socket) kommunikci
Cl: cmzssel s protokollokkal tmogatott adattvitel
tetszleges folyamatok kztt kliens szerver architektrban tbbfle clra (folyamatok kztti s gpek kztti hlzati komm.)
sokfle protokollt tmogat
tbbfle cmzs
Fogalmak hlzati csatol avagy azonost (socket): a kommunikci vgpontja
IP cm s portszm (l. hlzatok)
Hasznlat sfd = socket(domn, tpus, protokoll);szerver:
bind(sfd, cm, ...);kliens: connect(sfd, cm, ...);szerver: listen(sfd, sor_mrete);szerver: accept(sfd, cm, ...);send(sfd, zenet, ...);recv(sfd, zenet, ...);
shutdown(sfd);
BME MIT O i d k 2011 t
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
15/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 15 / 18
Kliens s szerver programok vza
Kliens program
socket()
connect()
send()
recv()close()
Szerver program
sfd1 = socket()
bind(sfd1)
listen(sfd1)
while
sfd2 = accept(sfd1)
fork()
szl: vissza a ciklusbagyerek: recv(sfd2)
send(sfd2)close(sfd2)
exit()
BME MIT O i d k 2011 t
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
16/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 16 / 18
(Sun) RPC (tvoli eljrshvs)
A socket kommunikcira pl elosztott rendszer infrastruktra
Cl: folyamatok kztti magas szint kommunikci
tvoli eljrsok meghvsa (msik folyamatban, akr msik gpen)
programozi tmogats: interfsz lers + programgenerls
Fogalmak RPC nyelv: a hvhat eljrsok s tpusaik (interfsz) lersa
azonostk: a lersban megadott egyedi szmok (program, eljrs)
portmapper: a programazonostk s a hlzati portok sszerendelse
rpcgen: a lersbl C programkdot generl program
A Sun RPC technolgia rszei interfsz lers
programgenertor
kommunikcis infrastruktra
BME MIT O i d k 2011 t
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
17/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 17 / 18
RPC interfsz lers s programgenertor
RPC nyelv (plda: date.x)
program DATE_PROG {
version DATE_VERS {
long BIN_DATE(void) = 1; /* eljrs azon. = 1 */
string STR_DATE(long) = 2; /* eljrs azon. = 2 */
} = 1; /* verziszm = 1 */
} = 0x31234567; /* program azon. = 0x31234567 */
Kdgenertor: rpcgen
rpcgen date.x eredmnyei
date.h: adattpusok deklarcija
date_clnt.c: a kliens kdjban felhasznlhat date_... fggvnyek date_srv.c: a szerver date implementcijt meghv fggvnyek
()
BME MIT Opercis rends erek 2011 ta as
-
8/3/2019 Slides 16 Unix 4 Kommunikacio
18/18
BME MIT Opercis rendszerek 2011. tavasz
UNIX folyamatok kommunikcija 18 / 18
sszefoglals: a folyamatok kztti kommunikci
Klasszikus kommunikcis formk:
Jelzsek (signal) Csvezetkek (pipe)
FIFO (elnevezett csvezetk, named pipe)
System V IPC Szemaforok zenetsorok
Osztott memria
(nem csak) Hlzati kommunikci hlzati csatol (socket) kommunikci
Sun RPC tvoli eljrshvs UNIX mdra