Medziprocesorova komunikacia Flashcards

(150 cards)

1
Q

Z akych dovodov posobia procesy na seba?

A
  1. neumyselne - vykonavaju sa bez ohladu na ine procesy, sutazia o prostriedky
  2. nepriamo - vedia o existencii inych procesov, ale nevedia nic viac, napriklad pouzivaju rovnaky subor
  3. umyselne - spolupracuju, komunikuju
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Co je komunikacia medzi procesmi?

A

Vymena dat

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Co je synchronizacia vykonavania procesov?

A

treba dodrzat poradie vykonania procesov

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Co je subeh?

A

Procesy pristupujúce do spoločnej pamäti sa môžu vykonávať súbežne, respektíve v ľubovoľnom poradí.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Kedy moze nastat prerusenie procesu?

A

Medzi dvoma instrukciami, pouzitie instrukcie je atomicke

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Aky je rozdiel medzi CISC a RISC pri incremente a++?

A

V CISC je to atomicka operacia inc a, v RISC treba po jednom loadnut, inc a ulozit, teda sa moze preplanovat hocikedy medzi

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Ako nazyvame situaciu, ked viacero procesov pristupuje k rovnakej premennej a vysledok zavisi od poradia?

A

subeh - race condition

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Preco race condition?

A

Procesy sutazia o pristup a vysledok zavisi od toho kto bude prvy

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Co je vzajomne vylucovanie?

A

Aby k spolocnemu prostriedku pristupoval v kazdom case najviac jeden z procesov

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Ako sa nazyva usek programu kde sa vykonava pristup k spolocnemu prostriedku?

A

kriticka oblast

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Program v kritickej oblasti smie byt teda vykonavany kolko procesmi?

A

jednym

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Riesenia mut. ex. vieme rozdelit na ..?

A

cisto programove a hardverove

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Ake su hw implementacie mut ex?

A

zakazanie preruseni, specialne instrukcie a pod

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Aka je nevyhoda zakazania prerusenia?

A

neobsluhuju sa chyby od I/O

v pripade chyby sa zasekne cely system

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

kedy sa pouziva zakazanie prerusenia?

A

v jadre na kratke casy

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Co je problem ked ma system viac CPU?

A

zakazanie preruseni na jednom z nich nestaci

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Aky je problem pri CISC a viac CPU pri atomickej operacii inc?

A

subezne moze pristupit k pamati proces na inom procesore

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Ake je hw riesenie pri viac CPU?

A

uzamknutie zbernice signalom lock ako prefix instrukcie

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Ake je riesenie “spolocny zamok”?

A

spolocna premenna lock
enterCS: while(lock); lock = TRUE
leaveCS: lock = FALSE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Aky je problem pre spolocny zamok?

A

ak bude proces preplanovany tesne po tom co ukonci while a pred tym co nastavi LOCK na true, teda tam vedia vojst oba procesy

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Ake je riesenie “striedanie”?

A

spolocna premenna urcuje kto smie vojst, pred vstupom proces pocka kym bude na rade

enum {P, Q} turn = P;
EnterCS_P() { while(turn != P); }
LeaveCS_P() { turn = Q; }
pre Q rovnako

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Preco je zle riesenie “striedanie”?

A

Vynucujeme striedanie, teda ak jeden treba castejsie, tak to zbytocne spomaluje

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Aka je druha podmienka riesenia mut ex?

A

Proces ktorý sa \vykonáva mimo kritickej oblasti nesmie brániť iným vstúpiť do nej.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Ake je riesenie “zamok pre kazdy proces”?

A

kazdy proces ma svoju premennu ktora indikuje potrebu vstupit do kritickej oblasti, pred vstupom ju nastavi na true a pocka ak aj druhy bude chciet vojst

inP, inQ = FALSE
EnterCS_P() { inP = TRUE; while(inQ); }
LeaveCS_P() { inP = FALSE; }

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Aky je problem riesenia zamok pre kazdy proces?
preplanovanie po nastaveni na true, nastane deadlock a system sa zasekne, nikto to nezmeni na false
26
Ake je riesenie "prerusenie cakania"?
Kazdy proces ma premennu ktora indikuje vstup do crit. section. Nastavi na 1, ak ale aj druhy ma 1, tak nastavi na 0 a pokus zopakuje, inak break, cele to bezi vo while(1)
27
Aky je problem riesenia prerusenie cakania?
livelock - navzajom sa uprednostnuju a nikto tam nevstupi, ak sa preplanuju vzdy po nastaveni premennej na true
28
Ake su 4 podmienky riesenia synch. problemu mut ex?
1) V kritickej oblasti sa smie vykonávať v každom čase najviac jeden proces. 2) Proces ktorý sa vykonáva mimo kritickej oblasti nesmie brániť iným vstúpiť do nej. 3) Rozhodnutie o vstupe musí prísť v konečnom čase. 4) Procesy nemôžu pri vstupe do kritickej oblasti predpokladať nič o vzájomnom časovaní (plánovaní).
29
Aké je petersonovo riešenie?
``` da sa rozsirit aj na N > 2 procesov mame premenne int inP = FALSE, inQ = FALSE; enum {P, Q} last = P; enter je ze inP = TRUE; last = P; while(inQ && last == P); ```
30
Ako znacime instrukciu ktora chceme aby sa vykonala atomicky?
<< ... >>
31
Co je instrukcia TSL?
Test and set lock | nastavi lock na 1 a vrati predosliu hodnotu locku
32
Co je instrukcia XCHG?
Exchange | vymeni hodnoty parametra a a lock
33
Co je instrukcia FA?
Fetch and add | prida k hodnote premennej a vrati staru hodnotu
34
Ako vieme spravit V/V protokol s pouzitim TSL?
int lock = FALSE; EnterCS() { while (TS(&lock)); } LeaveCS() { lock = FALSE; }
35
Co je spinlock?
Zamok implementovany pomocou cakania v tesnej slucke
36
Co je ticket algoritmus?
Algoritmus pre mut ex N procesov inspirovany systemom cakania na poradie Kazdy proces dostane ticket, planovac inkrementuje aktualny tiket a ked ma proces svoj tiket tak je na rade
37
Co je problem ticket alg?
ak zlyha proces tak ostatne cakaju navzdy
38
Aka je kriticka oblast ticket alg?
Pridelenie tiketu procesu - je tam inkrement takze 2 procesy mozu dostat rovnake cislo
39
Co je bakery algoritmus?
ako ticket algoritmus, ale nepotrebuje specialnu instrukciu, ak maju 2 rovnake cislo tak sa rozhodne o ich poradi napr podla PID
40
Aka je zlozitost ticket alg?
O(1)
41
Aka je zlozitost bakery alg?
O(n)
42
Co je obsadzujuce cakanie?
Procesor caka v tvare while(lock) - nevykonava ziadnu uzitocnu pracu
43
Aka je nevyhoda obsadzujuceho cakania navyse v multiprocesorovych systemoch?
zahlcovanie zbernice citanim jednej premennej dokola
44
Ake je riesenie obsadzujuceho cakania?
Napr signaly a wait
45
Co je semafor?
Vseobecny synchronizacny mechanizmus, v podstate cele nezaporne cislo
46
Aka je hlavna vyhoda semaforu?
Odstranuje obsadzujuce cakanie, proces bude v blokovanom stave
47
Aka je "nevyhoda" semaforu?
Treba podporu priamo od OS
48
Ake metody su pre semafor?
init - nastavi hodnotu na cislo wait - ak je hodnota viac ako nula dekrementuje ju inak sa uspi a caka signal - ak je rad cakajucich neprazdny tak sa vyberie jeden a zobudi sa, inak inkrementuje cislo
49
Obsahuje aj semafor kriticku oblast?
Ano, napr to inkrementovanie
50
Co teda potrebujeme pre implementaciu semaforu aby sme sa zbavili kritickej oblasti?
synchronizacny mechanizmus nizsej urovne
51
Ako vieme implementovat uspanie a zobudenie procesu?
Signalmi
52
Ake pozname varianty semaforu?
Vseobecny semafor | Binarny semafor - mutex
53
Ako znie invariant semaforu?
pW - pS <= I kde pW je pocet vykonanych write a pS signal, I je hodnota
54
Na co vieme vyuzit napr inu hodnotu semaforu ako 1?
Ak R procesov vie vyuzivat prostriedok sucasne tak nastavime na R
55
Na co nam je semafor s hodnotou 0?
Na synchronizaciu poradia. Cakajuci zavola wait, signal zavola predosly az po vykonani a dany co volal wait teda moze bezat
56
Co je precedencny graf?
Poradie vykonania procesov
57
Ake 2 druhy vykonavania pozname?
Sekvencne, paralelne
58
Na co nam je buffer?
Vyrovnava rozne rychlosti zapisu a citania
59
Kedy v bufferi potrebujeme synchronizaciu?
ak chce niekto zapisat a je plno, alebo chce citat a je prazdno
60
Co je kruhovy buffer?
Efektivne znovupouzitie uvolneneho miesta v bufferi
61
Ako sa da vyriesit problem obedujucich filozofov?
Filozof moze jest len ak jeho sused neje kazdy filozof ma stav thinking/hungry/eating pred zacatim jedla caka na semafor ktory indikuje ci su obe vidlicky volne
62
Co je problem readers/writers?
K spolocnemu prostriedku v pamati ma pristup viac procesov citajucich/zapisujuceho
63
Co vylucuje pritomnost zapisujuceho procesu?
Vsetky ostatne procesy
64
Co vylucuje pritomnost citajuceho procesu?
Pritomnost zapisujuceho ale nie dalsich citajucich
65
Pozri si slide 55 v 3. prednaske na riesenie readers/writers
55 3
66
Co su podmienene premenne?
Umoznuju procesu ktory zamkol zamok cakat, pricom tento zamok bude pocas cakania uvolneny a ked sa proces zobudi tak bude opat zamknuty
67
Co je FUTEX?
Fast Userspace Mutex | cakanie na zmenu hodnoty na danej adrese - implementacia zamkov a semaforov
68
Cim je rychly futex?
Ak je zamok volny, systemove volanie nie je potrebne
69
Co je FUTEX_WAIT?
Ak sa hodnota na adrese uaddr rovna val volajuci proces sa uspi
70
Co je FUTEX_WAKE?
Zobudi najviac val procesov cakajucich na adresu uaddr
71
Ake pozname standardy IPC?
System V a POSIX
72
Porovnaj System V a POSIX?
System V - starsi, dostupny takmer na kazdom systeme, ale zlozitejsi POSIX - novsi, threadsafe, jednoduchsie rozhranie, nema ale podporu vsade
73
Ake systemove volania pre semafory mame v System V?
semget, semop, struct sembuf
74
Ake systemove volania mame pre semafory v POSIX?
sem_open, sem_close, sem_unlink, sem_init, sem_destroy...
75
Co robi volanie v System V shmget(key_t key, ...)?
Vrati ID noveho alebo existujuceho segmentu zdielanej pamate s danym klucom
76
Na com je zalozena POSIXova implementacia zdielanej pamate shm_open a shm_unlink?
Na mmap
77
Ake volania ma System V pre spravy?
msgget, msgsnd, msgrcv...
78
Ake volania ma POSIX pre spravy?
mq_open, mq_send, mq_receive...
79
Pri zasielani sprav ake su 2 hlavne funkcie?
send a receive
80
Zdroj spravy nemusi byt jasny, potom sa oznacuje ___
ANY
81
Ciel spravy moze zodpovedat viacerym, oznacuje sa potom _____
Broadcast
82
Komunikacia moze byt ____ alebo ____
Priama - adresa je konkretneho procesu | Nepriama - adresa specifikuje miesto na ktore budu spravy ukladane a z ktoreho budu citane
83
Cez co komunikuje nepriama komunikacia?
Cez schranky
84
Kde su uchovane spravy ktore boli odoslane ale neboli este prijate?
v OS
85
Ako funguje producent-konzument pomocou priamej komunikacie?
Konzument posle producentovi tolko prazdnych sprav kolko moze on sam prijat Producent ked ma ready spravu, prijme prazdnu a posle data
86
Ako funguje producent-konzument pomocou schranok?
Obaja si vytvoria schranky pre N sprav, producent posiela do schranok konzumenta, ten posiela prazdne producentovi
87
Co je blokujuce prijimanie?
Ak operacia prijimania predchadza vyslaniu spravy ktora ma byt prijata, zostane zablokovana
88
Co je blokujuce vysielanie?
Operacia vysielania zablokuje volajuci proces az kym prijimajuci nezavola zodpovedajucu operaciu receive
89
Kedy sa vrati neblokujuca operacia?
Hned
90
Ake su problemy zasielania sprav?
Velkost, konverzia (little endian big endian), poradie, spolahlivost, autentifikacia a pod.
91
Co je to soket?
Koncovy bod komunikacie, pouziva sa na nom read, write, close
92
Co je domena soketu?
AF_UNIX, AF_INET, AF_INET6...
93
Co je typ soketu?
SOCK_DGRAM, SOCK_STREAM...
94
Akym volanim vieme zviazat soket s lokalnou adresou a portom?
bind
95
Na strane servera ako vieme prepnut soket na cakanie na spojenia?
listen
96
ako vieme prijat prichadzajuce spojenie?
accept
97
Ako prebieha accept?
Caka kym nepride spojenie (zablokovane). Vrati deskriptov na novy socket, z ktoreho vieme citat a zapisovat tam. Povodny soket ostane nezmeneny. Bezne sa po accept robi fork
98
Akym volanim vie klient nadviazat spojenie so serverom?
connect
99
Pre datagramy ake volania pouzivame namiesto read a write?
send, recv,...
100
Ako vieme ukoncit spojenie?
shutdown - citanie a zapis | close - zrusenie soketu
101
Co robi volanie htonl?
converts the unsigned integer hostlong from host byte order to network byte order
102
Kde musime robit bind, na akej strane?
iba na serveri, na klientovi netreba
103
Co je signal?
Asynchronne dorucena informacia o tom ze nastala nejaka udalost, podobaju sa preruseniam
104
Kto typicky posiela signaly komu?
Jeden proces druhemu
105
Cim sa rozlisuju signaly?
cislom
106
Co vykona signal po jeho doruceni?
co ma dany proces nastavene ako handler pre dany signal
107
Akym volanim zasielam signal?
kill
108
Ako vie proces alebo vlakno poslat signal sam sebe?
raise
109
Ako vieme nastavit ake signaly maju byt blokovane?
signal maskou
110
Ake signaly nemozu byt blokovane?
SIGKILL a SIGSTOP
111
Co sa stane so signalom ktory je blokovany?
Je pridany do radu signalov cakajucich na oblsuzenie
112
Moze prist signal aj ked proces vykonava systemove volanie?
Ano ale moze to byt prerusene a nastat chyba alebo sa skusi znova
113
Ake pozname napr signaly generovane jadrom?
``` SIGSEGV - segment violation (pristup na zlu adresu) SIGILL - illegal instruction SIGBUS - bus error SIGFPE - floating point exception ... ```
114
Ake su zakladne akcie procesu na signal?
``` terminate ignore core - ukoncenie a vytvorenie suboru s obrazom pamate stop - do stavu T continue ```
115
Akym volanim vieme nastavit vlastnu rutinu obsluhy signalu?
sigaction
116
Aka musi byt obsluzna funkcia signalu?
Reentrantna
117
Co hovori siginfo_t?
preco ten signal prisiel, teda signal cislo, kod, PID odosielatela a pod
118
Ako vieme vylistovat zoznam signalov?
kill -l
119
Na co sa hlavne pouzivaju signaly?
Na synchronizaciu procesov
120
Co robi funkcia alarm?
volajuci proces dostane signal SIGALRM po uplynuti zadaneho casu
121
Co robi signal USR1 pre prikaz dd?
Vypise statistiky na stderr a pokracuje
122
Co robi prikaz HUP pre demon sshd?
Znovu nacita svoj konfiguracny subor
123
Aka je to blokujuca operacia?
Po zavolani sa nevrati ak nie je ukoncena, napr I/O, disk a pod
124
Aka je to neblokujuca operacia?
Ak pozadovanu operaciu nie je mozne vykonat, vrati chybovy kod alebo pokracuje dalej
125
Co sa da spravit s chybnym vykonanim neblokujucej operacie?
mozeme ju zopakovat neskor, ale idealne az ked budu pripravene data
126
Ake je riesenie blokujucich operacii?
Viacvlaknove procesy, komunikujuce vlakno moze byt blocked kym nepridu data, ostatne mozu pracovat
127
Ake to su asynchronne operacie?
Ich vykonanie nie je zavisle od vykonania inych operacii
128
Ake implementacne naroky kladieme na asynchronne operacie?
reentrantnost
129
Co napr su asynchronne operacie?
obsluzne rutiny vynimiek, signalov a pod
130
Ako vieme ci je operacia asynchronna?
Zavisi to od sposobu pouzitia, nie od implementacie
131
Co je to reentrantnost?
funkcia moze byt pocas vykonavania zavolana znova bez ovplyvnenia korektnosti vysledkov, teda moze byt bez nasledkov spustitelna viackrat, v ramci toho isteho kontextu
132
Co je to thread-safety?
Funkcia moze byt vykonavana subezne viacerymi vlaknami bez ovplyvnenia spravnosti vysledkov, teda v roznych kontextoch
133
Ako vieme zabezpecit vlastnost thread-safety?
doplnenim synchronizacnych mechanizmov pri pristupe k spolocnym datam
134
Co treba spravit pre zabezpecenie reentrantnosti?
zmenit implementaciu ale aj rozhranie
135
Aka poziadavka je silnejsia, reentrantnost alebo thread-safety?
reentrantnost, reentrantnost implikuje thread-safety
136
Akych je 5 poziadaviek pre reentrantnost?
1. neobsahuje globalne nekonstatne data 2. nevracia pointer na staticke nekonstantne data 3. pracuje len s datami volajuceho 4: neblokuje pristup k jedinecnemu zdroju 5. nevola ina nereentrantne funkcie
137
Vieme pouzit v reentrantnej funkcii malloc/free?
Nie
138
Co je to datovod/pipe?
Jednosmerny kanal medzi 2 procesmi
139
Ako su reprezentovane konce pipe?
Ako deskriptory suborov
140
Co spravi volanie pipe()?
Alokuje buffer v jadre a vrati deskriptory
141
Ako sa zapisuje a cita z datovodov?
write, read
142
Su datovody pomenovane?
Nie, su anonymne
143
Ako vieme spravit pomenovany datovod?
mkfifo()
144
Ako sa pouziva pipe?
Vytvori sa kopia procesu a oba zatvoria jeden pre nich nepotrebny koniec pipe (proces ktory bude citat zatvori pisaci koniec a naopak)
145
Co znamena signal SIGPIPE?
zapis do datovodu kde nie je otvoreny citaci koniec
146
Co vrati citanie z pipe so zatvorenym zapisovacim koncom?
EOF
147
ake cisla ma STDIN,STDOUT, STDERR?
0 - in 1 - out 2 - err
148
Co robi volanie dup(int old)?
skopiruje dany deskriptor na prvy volny a vrati jeho cislo
149
co robi volanie dup2(int old, int new)?
skopiruje desc old na new, ak new nebol volny tak ho naprv zatvori
150
Na co vyuzivame teda dup?
Najprv zavrieme napr stdout, dame dup na nejaky pipe a spravime z pipe stdout