komunikacija i sinhornizacija -...
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/1.jpg)
![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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/12.jpg)
“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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/13.jpg)
“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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/14.jpg)
“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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/19.jpg)
…… …
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/20.jpg)
…… …
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022041616/5e3b9d937adbd9667e0c9a8a/html5/thumbnails/30.jpg)
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