Slides 16 Unix 4 Kommunikacio

download Slides 16 Unix 4 Kommunikacio

of 18

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