Documente Academic
Documente Profesional
Documente Cultură
real
Semafoare
1
Definiţie
z nume
z identificator unic
z valoare (număr binar sau natural)
z bloc de control al semaforului
z listă de procese asociate
Elementele asociate
Observaţii
z Semafoare binare/numărătoare
– eliberarea semafoarelor poate fi realizată de către
oricare dintre procesele existente în sistem.
z Semafoarele de excludere mutuală
– pot fi eliberate doar de către procesele care le-au
luat în posesie.
– semaforul poate fi eliberat în mod repetat de către
procesul care l-a luat în posesie. Numărul de
eliberări trebuie să fie egal cu numărul de luări în
posesie
Golirea listei de procese în aşteptare
Situaţii posibile
z Golirea listei de procese înainte de
eliminarea unui semafor.
z Realizarea unei sincronizări între procese.
Obţinerea de informaţii de la
semafoare
ProcAstept ( ){
:
Ia în posesie semafor binar
:
}
ProcSemnal ( ){
:
Eliberează semafor binar
:
}
Sincronizarea mai multor procese în
aşteptare
Sincronizarea mai multor procese în
aşteptare
ProcAsteptn ( ){
:
Operaţii specifice
Ia în posesie semafor binar
:
}
ProcSemnal ( ){
:
Operaţii specifice
Goleşte lista de aşteptare a semaforului
:
}
Sincronizare cu urmărirea creditului
Sincronizare cu urmărirea creditului
ProcAstept ( ){
:
Ia în posesie semafor numărător
:
}
ProcSemnal ( ){
:
Eliberează semafor numărător
:
}
Sincronizare cu urmărirea creditului
Solicitant1 ( ){
:
Ia în posesie semafor
Scrie sau citeşte resursă
Eliberează semafor
:
}
Sincronizarea resurselor cu acces
recursiv
Sincronizarea resurselor cu acces
recursiv
Solicitant1 ( ){ SubrutinaB ( ){
: :
Ia în posesie mutex Ia în posesie mutex
Scrie sau citeşte resursă Scrie sau citeşte resursă
SubrutinaA() Eliberează mutex
Eliberează mutex :
: }
}
SubrutinaA ( ){
:
Ia în posesie mutex
Scrie sau citeşte resursă
SubrutinaB()
Eliberează mutex
:
}
Sincronizarea accesului la mai multe
resurse partajabile
Sincronizarea accesului la mai multe
resurse partajabile
Solicitantn ( ){
:
Ia în posesie semafor numărător
Scrie sau citeşte resursă
Eliberează semafor numărător
:
}
Sincronizarea accesului la mai multe
resurse partajabile
Cozi de mesaje
1
Coadă de mesaje. Definiţie
z nume
z identificator unic
z lungimea cozii
z lăţimea maximă a cozii
z bloc de control al cozii
z 2 liste de procese asociate
– lista proceselor ce aşteaptă să trimită mesaje
– lista proceselor ce aşteaptă să primească mesaje
z capul şi capătul cozii
Elementele asociate
Observaţii
Situaţii posibile
z Golirea cozii înainte de eliminarea acesteia.
z Realizarea unei sincronizări între procese.
Trimiterea de mesaje
ProcEmitator () {
:
Trimite mesaj în coada de mesaje
:
}
ProcDestinatar () {
:
Citeşte mesajul din coada de mesaje
:
}
Comunicare unidirecţională fără
blocare
z p(ProcEmitator)<p(ProcDestinatar)
– ProcDestinatar – se execută, citeşte mesajele şi se
blochează când coada e goală
– când ProcEmitator trimite un mesaj, ProcDestinatar este
deblocat şi se execută din nou
z p(ProcEmitator)>p(ProcDestinatar)
– ProcEmitator – trimite mesaje până se umple coada de
mesaje şi se blochează
– ProcDestinatar – citeşte mesajele din coadă permiţând
ProcEmitător să se execute şi să trimită noi mesaje
Comunicare unidirecţională cu blocare
Comunicare unidirecţională cu blocare
ProcEmitator () {
:
Trimite mesaj în coada de mesaje
Ia în posesie semafor
:
}
ProcDestinatar () {
:
Citeşte mesajul din coada de mesaje
Eliberează semafor
:
}
Comunicare unidirecţională cu blocare
ProcEmitator () {
:
Trimite mesaj în coada de emisie mesaje
Aşteaptă mesaj în coada de recepţie mesaje
:
}
ProcDestinatar () {
:
Citeşte mesajul din coada de emisie mesaje
Trimite mesaj în coada de recepţie mesaje
:
}
Emisie
Emisie
ProcEmitator () {
:
Trimite mesaj în coada de mesaje
:
}
ProcDestn () { // n=1,2,3
:
Citeşte mesajul din coada de mesaje
:
}
Programarea sistemelor de timp
real
Cutii poştale
1
Cutie poştală. Definiţie
z nume
z identificator unic
z dimensiunea mesajului
z bloc de control al cutiei poştale
z 2 liste de procese asociate
– lista proceselor ce aşteaptă să trimită mesaje
– lista proceselor ce aşteaptă să primească mesaje
Elementele asociate
Observaţii
z comunicare unidirecţională,
z comunicare unidirecţională cu confirmarea
mesajului,
z comunicare bidirecţională cu blocare
z utilizarea cutiei poştale ca semafor binar
Comunicare unidirecţională
Comunicare unidirecţională
ProcEmitator () {
:
Trimite mesaj în cutia poştală
:
}
ProcDestinatar () {
:
Citeşte mesajul din cutia poştală
:
}
Comunicare unidirecţională cu
confirmarea primirii mesajului
Comunicare unidirecţională cu
confirmarea primirii mesajului
ProcEmitator () {
:
Trimite mesaj în cutia poştală
Ia în posesie semafor
:
}
ProcDestinatar () {
:
Citeşte mesajul din cutia poştală
Eliberează semafor
:
}
Comunicare bidirecţională
Comunicare bidirecţională
ProcAstept ( ){ ProcAstept ( ){
: :
Aşteaptă mesaj în cutia poştală Ia în posesie semafor binar
: :
} }
ProcSemnal ( ){ ProcSemnal ( ){
: :
Trimite mesaj în cutia poştală Eliberează semafor binar
: :
} }