komunikacija i sinhornizacija -...

30

Upload: others

Post on 20-Jan-2020

17 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija
Page 2: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Komunikacija i sinhornizacija

• Procesi i zadaci• Komunikacija između procesa• Komunikacija između zadataka• Sinhronizacija• Sinhronizacija

Page 3: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Komunikacija izmedju programa Fajl - File

�Na najvišem nivou – nivou procesa, odnosno aplikacio ja koje se izvršavaju

Fajl kao izlaz iz jednog programa predstavlja ulaz za dr ugi program.

�Implementacija u svim operativnim sistemima.

�Batch fajlovi

“Windows” primer

REM Batch - File asembliranje programa sa više modulaREM Batch - File asembliranje programa sa više modulaa51 modul1.a51 debuga51 modul2.a51 debuga51 modul3.a51 debugbl51 modul1.obj, modul2.obj, modul3.obj to programoh51 program

---- u komandnom prozoru ----------

dirdir > lista.txt

Page 4: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Proces�Program

• Izvršni fajl

�Proces (Linux)• Instanca programa koja se izvršava od strane OS• Svaki proces ima jedinstveni “ID” ( PID)• Svaki proces predstavljen strukturom podataka• Polje pointera ( array of pointers ) koji ukazuju na svaku

strukturustrukturu• Stanja procesa (Running, Waiting, Stopped, Zombie)

�Thread• Najmanji programski blok koji šeduler može raspore đivati• Proces može imati više thread-ova• Zajedni čki adresni prostor • Preklapanje konteksta brže• Komunikacija izme đu thread-ova jer dele memorijski prostor

Page 5: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Kontrola procesa

�Kreiranje novog procesa:• Funkcija operativnog sistema fork• Kreirani proces se naziva child process

Page 6: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Komunikacija izmedju procesaInterprocess Communications - IPC

�Razmena podataka izme đu procesa.

�Pet osnovnih na čina komunikacije (Linux OS):

• Preko deljive memorije ( shared memory ) – jednostavno čitanje i upis u specificiranu memorijsku lokaciju.

• Preko mapirane memorije ( mapped memory ) – memorija pridružena fajl sistemu.pridružena fajl sistemu.

• “Pipes” koje omogu ćavaju sekvencijalnu komunikaciju izme đu dva povezana procesa

• FIFO koji sli čno pipe elementu omogu ćava komunikaciju izme đu nepovezanih procesa jer mu je dodeljeno ime kroz fa jl sistem.

• “Socket” omogu ćava komunikaciju izme đu nepovezanih procesa čak i na razli čitim ra čunarima.

Page 7: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Komunikacija izmedju procesaInterprocess Communications - IPC

�Kriterijumi za podelu komunikacije.

• Da li se komunikacija ograni čava na povezane procese (procesi sa istim pretkom), na nepovezane procese koji dele isti fajl sistem, ili na bilo koji ra čunar u mreži.

• Da li su procesi koji komuniciraju ograni čeni samo na čitanji ili upis podataka.

• Po broju procesa koji komuniciraju.

• Da li su procesi koji komuniciraju sinhronizirani p omoću IPC –na primer ako je proces koji čita podatke u blokiranom stanju dok podaci ne budu dostupni.

Page 8: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Deljiva memorija – Shared Memory

�Najjednostavnija metoda za komunikaciju izme đu procesa.

�Deljiva memorija omogu ćava da dva i više procesa pristupaju istoj memoriji

• API funkcija malloc koja vra ća pointer na memoriju

�Kada jedan proces promeni sadržaj memorije, svi pro cesi vide ovu promenu.

�Velika brzina pristupa deljivoj memoriji kao i pris tup lokalnoj �Velika brzina pristupa deljivoj memoriji kao i pris tup lokalnoj memoriji procesa. Ne zahteva sistemske pozive ili u laz u kernel.

�Potreba za ugradnjom neke vrste protokola koja će obezbediti konzistentnost podataka.

• Semafor procesa ( Processes Semaphores )

Page 9: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Semafor

Semafor S je memorijska lokacija koja deluje kao blokator u c ilju zaštite kriti čnih regiona.

Wait P(S) i signal V(S) operacije.

void P(int S){

while (S == TRUE);S=TRUE;S=TRUE;

}

void V(int S){

S=FALSE;}

P and V are the first letters of the Dutch “to test ” – proberen – and “to increment” – verhogen.They were first suggested by Dijkstra [Dijkstra65]. P and wait, and V and signal will be usedsynonymously throughout the text.

Page 10: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Semafor

Page 11: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Mapirana memorija – Mapped Memory

�Mapirana memorija omogu ćava razli čitim procesima da komuniciraju preko deljivog fajla.

�Formira asocijaciju izme đu fajla i memorije procesa.

�Može se koristiti za IPC ili za jednostavan pristup sadržaju fajla.�Može se koristiti za IPC ili za jednostavan pristup sadržaju fajla.

�Može se posmatrati i kao memorijski bafer u koji je smešten celokupni sadržaj fajla. Pristup fajlu se svodi na čitanje i upis u memorijske lokacije

Page 12: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

“Pipes”

�Komunikacioni ure đaj (device ) koji omogu ćava jednosmernu komunikaciju.

�Podaci se upisuju na “write priklju čak” a čitaju sa “read priklju čka”.

�Uređaj serijskog tipa – podaci se čitaju istim redosledom kako su i upisani.

�Koriste se za komunikaciju izme đu dve niti ( thread ) istog procesa �Koriste se za komunikaciju izme đu dve niti ( thread ) istog procesa ili izme đu parent i child procesa.

Page 13: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

“FIFO”

�“ First-in, first-out “ fajl je “pipe” sa imenom u fajl sistemu.

• Named pipes

�Svaki proces može otvoriti i zatvoriti FIFO.

�Pristup kao obi čnom fajlu.

• Jedan proces otvara FIFO za upis

• Drugi proces otvara FIFO za čitanje

• Za upis i čitanje koriste se funkcije niskog nivoa ( write, read )

Page 14: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

“Sockets”

� Dvosmerni komunikacioni ure đaj (device ) koji se može koristiti za komunikacionu izme đu procesa na razli čitim mašinama.

�Internet programi koji koriste sokete:

• Telnet, rlogin, FTP, talk, World Wide Web

�Kreiranje soketa – specificiranje tri parametra:

• communication style (slanje podataka u obliku paketa)

•Connectiion (slično usostavljanju veze pri telefoniranju) ,

•Datagram (nema garancije o redosledu isporuke i prijema poruka)

•namespace,

•protocol

Page 15: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Intertask komunikacija - Baferovanje podataka

Metode razmene podataka:

Globalne promenljive – u brzim sistemimaKorupcija podataka.

Sprečavanje korupcije – primena bafera.

Izbor veli čine bafera.

Page 16: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Dvostruko baferovanje - Time-Relative Buffering

Razmena podataka izme đu vremenski korelisanih zadataka

Telemetrijski sistemeDisk kontroleriGrafi čki interfejsiNavigaciona opremaKontrole robota

Page 17: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Primer

Očitavanje impulsa sa akcelerometra (x,y,z) vrši se sv akih 10 ms.Procesiranje se vrši na 40 ms.

Koristi baferovane promenljive xb, yb, zb

introf(); /* disable interrupts */xb=x; /* buffer data */yb=y;zb=z;intron(); /* enable interrupts */intron(); /* enable interrupts */process(xb,yb,zb); /* use buffered data */

Pravilo: Prva procedura u ciklusu treba da bude rut ina koja baferuje sve podatkeiz zadatka sa višim prioritetom u teku ći zadatak ( buffer-in ).Zadnja procedure – baferovanje svih podataka zadacima nižeg nivoa

Page 18: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Specijalna struktura podataka. Lakše manipulisanje.- Primer: Kružni bafer (16 elemenata, bafer prazan)

head

…… …

Intertask komunikacija – Kružni baferi

………

…… …

tail Bafer prazanKada je:tail = head

Page 19: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

…… …

2 elementa smeštenau bafer

- Primer: Kružni bafer (nakon dva upisa)

Intertask komunikacija – Kružni baferi

[0]

head[1]

………

…… …

tail

Nakon svakog upisa inkrementira se head pointer (ako je mogu će)“ postincrement ”

Page 20: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

…… …

Elementi koji se o čitaju ostaju u baferu ali se preko njih može

- Primer: Kružni bafer (nakon dva čitanja)

Intertask komunikacija – Kružni baferi

[0]

head[1]

………

…… …

tail

preko njih može prepisati novi podatak

(buffer empty)

Page 21: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

head

[12][13] [14]

- Primer: Kružni bafer (nakon 16 upisa)

Intertask komunikacija – Kružni baferi

[15]

[0]

[1]

[2]

[3]

[4][5][6]

[7]

[8]

[9]

[10]

[11]

[12][13] [14]

Bafer je punkada je:head = tail – 1

tail

Page 22: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Specijalna struktura podataka. Lakše manipulisanje .

typedef struct ring_buffer{

int contents[N];int head;int tail;

Intertask komunikacija – Kružni baferi

int tail;}

Page 23: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

void read (int data, ring_buffer *s){

if (s->head==s->tail)data=NULL; /* underflow */

else{data=s->contents +head; /* retrieve data from buffer */s->head=(s->head+1) % N; /* decrement head index */}

}void write (int data, ring_buffer *s){{

if ((s->tail+1) %N==head)error(); /* overflow, invoke error handler */

else{s->contents+tail=data;tail=(tail+1) % N; /*take care of wrap-around */}

}

Overflow i Underflow

Page 24: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Mailbox

Memorijska lokacija koju jedan ili više zadataka ko riste za prenos podataka ili sinhronizuju

void pend (int data, s);void post (int data, s);

Razlika izme đu pend i jednostavnog pulinga.Podatak koji se prenosi – flag, podatak ili pointer na strukturu.

Implementacija

Lista zadataka sa potrebnim resursimaLista resursa sa njihovim stanjima

Tabela 1 Tabela 2Task Resource Status Resource Status Owner100 Printer Has it Printer Busy 100102 Mailbox 1 Has it Mailbox 1 Busy 102104 Mailbox 1 Pending Mailbox 2 Empty None

Page 25: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Binarni semafor (Inicijalno mutex = 1 i proc_sem = 0)

bool mutex, proc_sem, full_slots, empty_slots;void post(int mailbox, int message){

wait(mutex);If (empty_slots)

{insert(mailbox,message);update();signal(mutex);Signal(proc_sem);

}}else

{...signal(mutex);wait(proc_sem);wait(mutex);insert(mailbox,message);update();signal(mutex);signal(proc_sem);

}};

Page 26: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

void pend(int *mailbox,int *message){

wait(mutex);if((full_slots))

{extract(mailbox,message);update();signal(mutex);

}else

{{...signal(mutex);wait(proc_sem);wait(mutex);extract(mailbox,message);update();signal(mutex);

}};

Page 27: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Broja čki semaforZaštita grupe resursa, evidencija o broju slobodnih resursa.Inicijalizuju se na broj slobodnih resursa.

Wait:void MP(int S){

while (S < 0);S=S-1;

}

Signalvoid MV(int S){

S=S+1}

Page 28: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Realizacija broja čkog semafora ako kernel ima binarne semafore:Neka su S i T binarni semafori a P(S) i V(S) wait i signal operacije resp.Nek je R globalni intedžer.

void MP (int R) /* multiple wait */{

P(S); /* lock counter */R=R-1; /* request a resource */if(R < 0) /* none available? */{{

V(S); /* release counter */P(T); /* wait for free resource */

};V(S); /* release counter */

}

Page 29: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

void MV(int R) /* multiple signal */{

P(S); /* lock counter */R=R+1; /* free resource */if (R <= 0) /* give that task the go ahead */

V(T);elseelse

V(S); /* release counter}}

Page 30: Komunikacija i sinhornizacija - es.elfak.ni.ac.rses.elfak.ni.ac.rs/rts/Materijal/NASTAVA_2012/PDF... · Najjednostavnija metoda za komunikaciju izme đu procesa. Deljiva memorija

Neki problem i sa semaforima

Atomi čnost sekvence testiranja i postavljanja semafora.

void P (int S){

while (S == TRUE);S = TRUE;

}

Na asembleruNa asembleru@1 LOAD R1,&S

TEST R1,1JEQ @1 ; S = TRUE? !!prekid!!STORE &S,1 ; S := TRUE

Test i set instrukcije