verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte a p –daca p si q...

46
2018 - 2019 Verificarea programelor concurente Capitolul 3

Upload: others

Post on 05-Jan-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Verificarea programelor concurente

Capitolul 3

Page 2: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Rezumat

• Invarianti

• Logica temporala liniara – LTL

• Demonstrarea deductiva a corectitudinii

• Verificarea modelelor

• Algoritmi avansati pentru sectiunea critica

Page 3: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Specificarea logica a corectitudinii

• Se considera multimea de variabile VP asociata unui program

concurent P formata din:

– multimea variabilelor globale si locale

– pointerii de control ai proceselor unui program concurent.

• Cu ajutorul acestei multimi de variabile se construiesc

propozitii atomice de forma:

– v = valoare

– v valoare

• Simplificari ale notatiei, in functie de domeniul variabilelor:

– Daca v este o variabila Booleana atunci propozitia atomica v = true se

noteaza prin v si propozitia atomica v = false se noteaza prin v.

– Daca pc este o variabila ce reprezinta un pointer de control atunci

propozitia atomica pc = pi se noteaza prin pi.

Page 4: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Sintaxa proprietatilor de corectitudine

• Fie A multimea propozitiilor atomice.

• Multimea proprietatilor de corectitudine P se defineste astfel:

– Propozitiile atomice sunt proprietati de corectitudine, cu alte cuvinte A P

– Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p q, p q, p q si p sunt proprietati de corectitudine, adica p q, p q, p q , p P

Page 5: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Semantica proprietatilor de corectitudine

• O stare a programului concurent P este o multime de asignari ale tuturor variabilelor din VP. Fie SP multimea acestor asignari. O stare a programului P este reprezentata de un element s SP.

• Semantica se defineste prin relatia de “interpretare” ⊨ : SP P.

– Daca v = valoare s atunci s ⊨ v = valoare

– Daca v = valoare s atunci s ⊨ v valoare

– Daca s ⊨ p si s ⊨ q atunci s ⊨ p q

– Daca s ⊨ p sau s ⊨ q atunci s ⊨ p q

– Daca s ⊭ p este fals atunci s ⊨ p

– Daca s ⊨ p q atunci s ⊨ p q

Page 6: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Sectiune critica V3

boolean wantp false

boolean wantq false

p q

loop forever

p1: sectiune non-critica

p2: wantp true

p3: await wantq = false

p4: sectiune critica

p5: wantp false

loop forever

q1: sectiune non-critica

q2: wantq true

q3: await wantp = false

q4: sectiune critica

q5: wantq false

A treia incercare

Sursa: M.Ben-Ari, 2006

• Formula p1 q1 wantp wantq este adevarata doar in starea pcp = p1, pcq = q1, wantp = false, wantq = false

• Formula p4 q4 este adevarata cand procesele se afla simultan in sectiunea critica. O conditie de excludere mutuala este (p4 q4).

Page 7: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Demonstrarea prin inductie a invariantilor

• Un invariant este o formula logica care este adevarata in

fiecare stare a unui program concurent.

• Deoarece algoritmul “Sectiune critica V3” verifica proprietatea

de excludere mutuala, formula (p4 q4) este un invariant.

• Invariantii I se demonstreaza prin inductie matematica:

– Se demonstreaza ca I este adevarat in starea initiala

– Se presupune ca I este adevarat pentru toate starile pana in starea

curenta si se demonstreaza ca I este adevarat in starea urmatoare.

Page 8: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Exemplu

• Notatie: O formula disjunctiva pi pi+1 … pj, unde pk

pentru k = i, i+1, …, j sunt instructiuni succesive in acelasi

proces se noteaza simplificat prin pi..j.

• Propozitie: In cazul algoritmului “Sectiune critica V3”:

a. Formula A p3..5 wantp este un invariant.

b. Formula B wantp p3..5 este un invariant.

c. Formulele p3..5 wantp si q3..5 wantq sunt invarianti

d. Formula (p4 q4) este un invariant.

• Observatii:

– Este suficient sa demonstram a, deoarece b rezulta prin analogie.

– Punctul c rezulta considerand formulele simetrice cu cele din a si b si

combinand toate cele 4 formule.

– Rezulta ca e suficient sa demonstram a si apoi d.

Page 9: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Demonstratia punctului a

• Pasul initial e trivial deoarece p3..5 = false si wantp = false.

• In pasul inductiv, intai observam ca executia procesului q nu

afecteaza valoarea formulei. Daca suntem in p1 nu este afectata

valoarea de adevar a formulei. Daca suntem in p3 sau p4 atunci

nu se schimba valorile lui wantp si p3..5, astfel ca invariantul

se pastreaza.

• Daca suntem in p2 atunci in starea urmatoare wantp devine

true, iar p3..5 devine true, asa ca invariantul se pastreaza.

• Daca suntem in p5 atunci in starea urmatoare wantp devine

false si p3..5 devine false, deci invariantul se pastreaza.

• Tema: de demonstrat similar formula B de la punctul b

Page 10: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Demonstratia punctului d

• (p4 q4) este invariant dnd p4 q4 este falsa in fiecare

stare.

• p4 q4 este falsa in starea initiala. Presupunem prin absurd ca

ar exista o stare care ar face formula p4 q4 adevarata.

Aceasta stare ar trebui sa fie determinata de instructiunile p3

sau q3. Astfel ca avem doua cazuri:

– (i) fie q se afla deja in q4 si p executa p3,

– (ii) fie p se afla deja in p4 si q executa q3. Datorita simetriei putem

considera doar primul caz.

• Executia lui p3 reuseste doar daca wantq este false. De aici

rezulta ca q3..5 (punctul c de la propozitia anterioara) este

falsa, de unde rezulta q4 este false, contradictie !

Page 11: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Logica temporala

• In logica clasica, valoarea de adevar a unei propozitii este statica. Nu se schimba in timp.

• In programare putem defini o propozitie wantp care este false la inceput, apoi devine true, ulterior devine iar false, s.a.m.d. Valoarea de adevar este dinamica, se schimba in timp (depinde de starea curenta a calculului)

• Logica temporala extinde logica clasica (propozitii, predicate) cu operatori temporali, care permit rationamentul cu valori de adevar care se schimba in timp, de-alungul unei cai de calcul.

wantp

time

false

true

Page 12: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Semantica logicii temporale liniare – LTL

• Se numeste cale de calcul (engl. computation path) sau

scenariu o secventa de stari = [s0, s1, s2, …].

• In logica temporala liniara (engl. linear temporal logic –

LTL), semantica formulelor se defineste “interpretand” cai de

calcul, spre deosebire de logica propozitiilor, in care semantica

se defineste “interpretand” stari individuale.

• Fie CP multimea tuturor cailor de calcul intr-un program

concurent P si fie ⊨ : CP P, unde P este multimea formulelor.

• Pentru o cale de calcul = [s0, s1, s2, …], pentru j 0 se

noteaza cu j subcalea incepand de la starea j, adica:

j = [sj, sj+1, sj+2, …]

• Daca p este formula netemporala atunci ⊨ p dnd s0 ⊨ p.

Page 13: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Operatorul intotdeauna

• Operatorul temporal intotdeauna (engl.always, numit si necesar sau global) este desemnat prin ⃞ sau G (global).

⊨ ⃞p dnd pentru orice j 0 avem j ⊨ p

• O formula ⃞p desemneaza o proprietate de siguranta. Spre exemplu, excluderea mutuala in algoritmul “Sectiune critica V3” se exprima prin ⃞(p4 q4)

Page 14: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Operatorul eventual

• Operatorul temporal eventual (engl.sometime, numit si posibil sau viitor) este desemnat prin ⃟ sau F (engl. future).

⊨ ⃟p dnd exista j 0 astfel incat j ⊨ p

• O formula ⃟p desemneaza o proprietate de vivacitate.

• Lipsa infometarii procesului p in algoritmul “Sectiune critica V3” se exprima prin ⃞(p2 ⃟p4). Orice stare in care p2 este true este eventual urmata de o stare in care p4 este true, adica p intra in sectiunea critica.

Page 15: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Operatorul pana cand

• Operatorul temporal pana cand (engl.until) este desemnat prin U.

⊨ p1 U p2 dnd exista j 0 astfel incat j ⊨ p2 si pentru orice 0 k < j

avem k ⊨ p1.

• A este reprezentata cu linia gri si B cu linia neagra. Formula A este adevarata primele 5 stari, moment in care B devine adevarata. Deci, indiferent de ce urmeaza dupa acest moment (starea a cincea) concluzionam ca A U B este adevarata.

Page 16: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Versiunea “slaba” a operatorului pana cand

• Operatorul temporal pana cand slab (engl. weak until)

este desemnat prin W. El este definit astfel:

⊨ p1 W p2 dnd

(i) exista j 0 astfel incat j ⊨ p2 si pentru orice 0 k < j

avem k ⊨ p1 sau

(ii) pentru orice k 0 avem k ⊨ p1

• Spre deosebire de U, semantica lui W permite ca p2 sa

nu devina niciodata adevarat, caz in care p1 trebuie sa

fie mereu adevarat.

p U q ⃟q (p W q)

p W q ⃞p (p U q)

Page 17: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Operatorul urmator • Operatorul temporal urmator (engl.next) este desemnat prin ⃝ sau X.

⊨ ⃝p dnd 1 ⊨ p

• Deci ⃝p este adevarat in starea curenta daca p este adevarat in starea imediat urmatoare.

• Spre exemplu, se considera secventa de instructiuni urmatoare din cadrul aceluiasi proces p:

p1: integer x 0

p2: x 1

p3: x 2

• Ar putea parea intuitiv sa afirmam ca formula:

p3 ⃝(x = 2)

este adevarata. Insa, datorita intreteserii arbitrare a instructiunilor

procesului p cu ale altui proces, e posibil ca (x = 2) sa devina adevarata

nu neaparat in starea imediat urmatoare, ci pur si simplu intr-o stare

viitoare, adica:

p3 ⃟(x = 2)

Page 18: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Proprietatile operatorilor intotdeauna si eventual

• Reflexivitate: Operatorii intotdeauna si eventual includ “acum”:

⃞A A

A ⃟A

• Dualitate: Conform legii lui De Morgan, operatorii ⃞ si ⃟ sunt duali.

⃟A ⃞ A

⃞A ⃟ A

• Reguli de expansiune

p U q q ⃝(p (p U q))

⃟p p ⃝⃟p

⃞p p ⃝⃞p

• Idempotenta

⃞⃞p ⃞p

⃟⃟p ⃟p

• Distributivitatea lui ⃞ fata de si prin dualitate a lui ⃟ fata de

⃞(p q) ⃞p ⃞q Nu este adevarat pentru ⃟ !!

Tema: de demonstrat

Page 19: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Exemplu de deductie cu operatori temporali

• Proprietate: ⃟⃞p ⃟⃞q ⃟⃞(p q)

• Se demonstreaza aceasta proprietate pornind de la definitie:

• “”: Daca ⃟⃞p ⃟⃞q inseamna ca ⃟⃞p si ⃟⃞q. Deci la un rang i formula ⃞p devine adevarata si la un rang j formula ⃞q devine adevarata. Adica de la i incolo p este adevarata si de la j incolo q este adevarata, deci de la k = max(i,j) incolo p q este adevarata. Adica la rangul k formula ⃞(p q) este adevarata, de unde rezulta ca ⃟⃞(p q).

• “”: Daca ⃟⃞(p q) inseamna ca exista k astfel incat la rangul k avem ⃞(p q). Deci de la k incolo p q e adevarata, deci atat p cat si q sunt separat adevarate. Rezulta ca la rangul k formulele ⃞p si sunt ⃞q adevarate. Adica ⃟⃞p si ⃟⃞q sunt adevarate, deci si conjunctia lor ⃟⃞p ⃟⃞q este adevarata.

Page 20: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Algoritmul lui Dekker

boolean wantp false

boolean wantq false

interger turn 1

p q

loop forever

p1: sectiune non-critica

p2: wantp true

p3: while wantq = true

p4: if turn = 2

p5: wantp false

p6: await turn = 1

p7: wantp true

p8: sectiune critica

p9: turn 2

p10: wantp false

loop forever

q1: sectiune non-critica

q2: wantq true

q3: while wantp = true

q4: if turn = 1

q5: wantq false

q6: await turn = 2

q7: wantq true

q8: sectiune critica

q9: turn 1

q10: wantq false

Algoritmul lui Dekker

Sursa: M.Ben-Ari, 2006

Page 21: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Demonstratia algoritmului Dekker

• Propozitie: Urmatoarele formule sunt invarianti (un invariant corespunde unei formule ⃞):

a. ⃞(turn = 1 turn = 2) (Invt)

b. ⃞(p3..5 p8..10 wantp) (Invp)

c. ⃞(q3..5 q8..10 wantq) (Invq)

d. ⃞(p8 q8) (excludere mutuala)

• Demonstratie:

a, b si c rezulta din structura algoritmului

Pasul inductiv la d rezulta prin reducere la absurd. Singura modalitate de

a ajunge in (p8 q8) este ca sa avem q8 si p sa fie in p3 sau sa avem p8

si q sa fie in q3. Se considera primul caz. Daca p se afla in p3 si de aici

se ajunge in p8 inseamna ca wantq = false. Dar conform c ar rezulta ca

q8 este fals, contradictie.

• Observatie: Metoda invariantilor se poate folosi doar la demonstrarea proprietatilor de siguranta, nu si a celor de vivacitate !

Page 22: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Demonstrarea progresului

• Proprietate de progres: daca s-a ajuns intr-o stare ce

satisface A atunci calculul va trebui sa progreseze intr-

o stare in care este adevarat B. Adica:

⃞(A ⃟B)

• In cadrul deductiilor se foloseste regula de echitate:

– daca o instructiune a unui proces devine activata continuu

atunci ea eventual va fi executata.

Page 23: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Instructiuni de atribuire

• Daca numaratorul de program al unui proces p a ajuns

la o instructiune de atribuire:

pi: var expresie

atunci (conform echitatii) ea va fi executata. Deci

exista doua stari s si t astfel incat t se obtine din s prin

incrementarea numaratorului de program al lui p si

modificarea valorii lui var la valoarea expresie: pi, …

pi+1, var = expresie, …

Page 24: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Progres / non-progres in sectiunea critica /

necritica

• Prin ipoteza, procesele progreseaza in sectiunea critica. Pentru

algoritmul Dekker:

⃞(p8 ⃟p9)

• Ipoteza nu este valabila in sectiunea necritica. Nu stim ca:

⃞(p1 ⃟p2)

• Astfel este posibil ca procesul p sa ramana indefinit in

sectiunea necritica, adica ⃟⃞p1.

Page 25: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Progres pentru instructiuni de control

• Exemplu: in algoritmul Dekker, nu putem concluziona

urmatoarea proprietate de progres, desi pare intuitiva:

⃞((p4 (turn = 2)) ⃟p5)

• Justificare: daca p se afla in p4 si turn = 2, se poate intampla ca

prin intretesere q sa apuce sa executa instructiunea de la q9 ce

va face turn = 1 si astfel cand p va executa pasul p4, va trece la

p3, nu p5 !

• Rationamentul corect se bazeaza pe regula urmatoare:

⃞((p4 ⃞(turn = 2)) ⃟p5)

Page 26: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Regula de demonstrare a progresului

• Propozitie: daca formulele:

⃞A ⃟B

⃟⃞A

sunt adevarate atunci va rezulta ca ⃟B este adevarata.

• Demonstratie:

Intuitiv aceasta regula seamana cu modus ponens. Regula a

doua ne spune ca A este indefinit adevarata de la un moment

dat incolo. Atunci, conform primei reguli, aplicata de la acel

moment, B va fi eventual adevarata, c.c.t.d.

Page 27: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Progres in algoritmul lui Dekker

• Proprietatea de progres se exprima prin:

“Daca p intra in sectiunea de preprotocol atunci p eventual va

intra in sectiunea critica”

⃞(p2⃟p8)

• Se considera doua cazuri:

– (i) q eventual ramane in sectiunea necritica, adica ⃟⃞q1 si

– (ii) q paraseste intotdeauna sectiunea necritica, adica

⃟⃞q1 ceea ce este echivalent cu ⃞⃟q1.

Page 28: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Lema

• Se considera ca suntem in cazul (ii).

• Daca p insista sa intre in sectiunea critica atunci eventual q ii

va ceda locul, adica:

(⃞wantp ⃞turn=1) ⃟⃞wantq

• Demonstratie:

Din ipoteza de progres a lui q rezulta ca q ajunge in q2.

Din progresul atribuirii, q ajunge din q2 in q3

Din ipoteza ⃞wantp si progres in bucla while, q va ajunge la q4

Din ipoteza ⃞turn=1 si progres la if, q va ajunge la q5

Din progresul atribuirii, q ajunge din q5 in q6

Deoarece ⃞turn=1, q va ramane la q6

Din Invq rezulta ca eventual wantq si va ramane asa, adica ⃟⃞wantq

Page 29: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Demonstratie progres

• Presupunem prin absurd ca (⃞(p2⃟p8)) adica ⃟(p2 ⃟p8).

Inseamna ca exista o cale de calcul si o stare in care sa avem p2 ⃟p8.

• Sa presupunem ca ⃞turn=2. Acest lucru inseamna ca:

Procesul p progreseaza la instructiunea de atribuire de la p2 la p3

Prin progres la p3, avand in vedere ca ⃟p8, rezulta ca p intra in bucla while la p4.

Conform ipotezei ⃞turn=2, p progreseaza la instructiunea if in p5

Procesul p progreseaza la instructiunea de atribuire de la p5 la p6

Conform ipotezei ⃞turn=2, p ramane la p6

Dar din invariantul Invp rezulta ca eventual wantp si va ramane asa, adica

⃟⃞wantp.

Din ipoteza de progres a lui q rezulta ca q va progresa (ca in cazul lemei) dincolo de q6,

va iesi din bucla si va ajunge in q9

Apoi q va progresa la q10 si vom avea eventual turn=1 adica ⃟turn=1, contradictie !

In concluzie rezulta ca ⃞turn=2, adica ⃟turn=1.

Page 30: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Continuare demonstratie progres

• Din p2 ⃟p8 rezulta ca p nu va ajunge la p9 sa poata

executa turn 2. Conform demonstratiei de pana acum am

aratat ca eventual turn va deveni 1 adica ⃟turn=1. Rezulta ca

eventual turn va ramane 1 adica ⃟⃞turn=1.

• Rezulta ca procesul p se va bucla la while in p3 executand doar

p3 si p4. Acest lucru inseamna ca wantp ramane true adica

⃞wantp. Apoi din lema rezulta ca ⃟⃞wantq, contradictie cu

faptul ca p se bucleaza la p3 si p4 fara sa intre in sectiunea

critica.

Page 31: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Modelare & verificare vs programare &

testare

Model

Diagrama de stare

Proprietati

Logica temporala

Program

concurent

Cerinte de

comportament

Structura Proprietati

Lume formala abstracta

(matematica)

Lume fizica reala

(programare)

Verificare

Modelare Formalizare

Testare

Page 32: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Limbajul Promela

• Un program Promela este compus din:

– declaratii de variabile globale si

– o multime de procese

• Un proces contine:

– declaratii de variabile locale si

– o secventa instructiuni.

• Pe baza starii curente o instructiune poate fi:

– Executabila: poate fi imediat executata

– Blocata: nu poate fi executata

Page 33: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Instructiuni Promela

• Atribuire. Intotdeauna executabila.

wantp = true;

• Asertiune. Intotdeauna executabila.

assert(critical <= 1);

• Afisare. Intotdeauna executabila.

printf(“Salut\n”);

• Expresie. Executabila daca expresia nu este zero.

turn == 1;

Page 34: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Structuri de control

• O comanda cu garzi are sintaxa: ::alegere -> instr ; instr ; ...

• O structura de control are sintaxa: {if | do}

::alegere -> instr ; instr ; ...

::alegere -> instr ; instr ; ...

...

::alegere -> instr ; instr ; ...

[::else -> instr ; instr ; ...]

{fi| od}

• Daca exista cel putin o alegere adevarata atunci se va alege in mod nedeterminist una spre executie.

• Daca nici o alegere nu este adevarata atunci instructiunea se blocheaza.

• Clauza else este optionala. Cand exista, devine adevarata daca nici una dintre alegeri nu este adevarata.

• do reia alegerea, iar if termina instructiunea dupa prima alegere.

Page 35: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Algoritmul Dekker in limbajul Promela

bool wantp = false, wantq = false;

byte turn = 1;

active proctype p() {

do

:: wantp = true;

do

:: wantq ->

if

:: (turn == 2) ->

wantp = false; turn == 1; wantp = true

:: else

fi

:: else -> break

od;

printf(“P se afla in sectiunea critica\n”);

turn = 2;

wantp = false

od

}

Ramura else evita blocarea if-ului

Se iese din bucla do

Page 36: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Verificarea excluderii mutuale in SPIN

• Se pot folosi variabile auxiliare.

• Pentru problema sectiunii critice putem folosi un contor critical

initializat cu 0. Ori de cate ori un proces intra in SC, contorul

este incrementat.

• Pentru a verifica excluderea mutuala, si anume ca cel mult un

proces este la un moment dat in SC, putem introduce in SC a

fiecarui proces urmatorul cod ce contine o asertiune:

critical++;

assert(critical <= 1);

critical--;

Page 37: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Verificarea lipsei infometarii in SPIN

• Pentru problema SC putem folosi 2 variabile booleene

auxiliare, cate una pe proces, initializate cu false. bool csp = false;

bool csq = false;

• Cand un proces intra in SC, variabila sa booleana devine true,

apoi iar false. Procesul p contine in sectiunea sa critica codul: csp = true;

csp = false;

• Lipsa infometarii procesului p se descrie cu formula LTL:

[]<>csp

• Ea se poate adauga la program pentru verificare cu sintaxa:

ltl { []<>csp }

• Tema: Sa se verifice excluderea mutuala printr-o formula LTL.

Page 38: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Algoritmul bakery pentru doua procese

integer np 0, nq 0

p q

loop forever

p1: sectiune non-critica

p2: np nq + 1

p3: await nq = 0 or np nq

p4: sectiune critica

p5: np 0

loop forever

q1: sectiune non-critica

q2: nq np + 1

q3: await np = 0 or nq < np

q4: sectiune critica

q5: nq 0

Algoritmul Bakery (propus de Leslie Lamport)

Sursa: M.Ben-Ari, 2006 Instructiunile din p2 si q2 sunt atomice. Aceasta

presupunere este uneori nerealista.

Tema: sa se analizeze acest algoritm in ipoteza ca

aceste instructiuni se implementeaza cu load si store

in maniera clasica.

Page 39: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Descrierea algoritmului Bakery

• Fiecare proces primeste un bilet numerotat, inainte de a intra in

SC. El asteapta ca numarul sau sa devina cel mai mic dintre

biletele aflate in asteptare, apoi intra in SC.

• np si nq sunt numerele biletelor celor 2 procese.

• Valoarea 0 indica faptul ca procesele nu doresc sa intre in SC.

O valoare pozitiva reprezinta o coada implicita a proceselor ce

doresc sa intre in SC. Procesele cu o valoare mai mica a

numarului de pe bilet se afla mai in fata in aceasta coada.

• In cazul in care cele doua procese au numere egale pe bilete, se

da prioritate procesului p (la p3 avem np nq, iar la q3 avem

nq < np).

Page 40: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Invarianti ai algoritmului Bakery

• Lema. Urmatoarele formule sunt invarianti

a. np = 0 p1 p2 (Inva)

b. nq = 0 q1 q2 (Invb)

c. p4 (nq = 0) (np nq) (Invc)

d. q4 (np = 0) (nq < np) (Invd)

• Demonstratie

a si b rezulta trivial din structura. Demonstram c, d rezulta prin simetrie.

Initial Invc este adevarat. Presupunem Invc adevarat la pasul curent.

i. Invc este adevarat deoarece p4 este fals. Daca prin absurd Invc ar deveni fals prin

devenirea lui p4 adevarat, inseamna ca p executa p3. Insa astfel ar trebui sa avem

conditia (nq = 0) (np nq) adevarata, contradicitie !

ii. Invc este adevarat deoarece p4 si (nq = 0) (np nq) sunt adevarate. Daca in

pasul urmator Invc ar deveni fals, ar trebui ca (nq = 0) (np nq) sa devina fals. p

ramane la p4, doar q poate schimba variabilele la q2 sau q5. Dupa q2 conditia np

nq ramane adevarata. Dupa q5 conditia nq = 0 ramane adevarata. Contradictie !

Page 41: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Excluderea mutuala in algoritmul Bakery

• Combinand Invc si Invd rezulta ca:

p4 q4 ((nq = 0) (np nq)) ((np = 0) (nq < np))

• Dar, daca p4 q4 atunci din Inva si Invb rezulta ca nq 0 si np

0. Rezulta ca va ramane doar implicatia:

p4 q4 (np nq) (nq < np)

• Insa (np nq) (nq < np) este falsa, de unde rezulta ca:

(p4 q4)

• Acest invariant exprima proprietatea de excludere mutuala.

Page 42: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Lipsa infometarii in algoritmul Bakery

• Faptul ca p nu este infometat se exprima prin ⃞(p2 ⃟p4).

• Presupunem prin absurd ca exista o stare in care p2 ⃟p4 este fals, adica p2 si ⃟p4 sunt adevarate.

• Prin progres al lui p la atribuirea p2, p3 devine adevarata. Dar corelat cu ⃟p4 inseamna ca p3 va ramane adevarata, adica ⃟⃞p3. Dar, conform Inva, vom avea ⃟⃞(np=k) pentru un k>0. Deoarece p ramane in p3, instructiunea p3 nu va progresa, desi procesul p va executa instructiunea (conform echitatii), gasind conditia falsa. Rezulta ca: ⃞⃟((nq = 0) (np nq)).

• Rezulta ca ⃞⃟(nq 0) ⃞⃟(nq < np). Din ⃞⃟(nq 0) rezulta ca q paraseste SC de o infinitate de ori deci prin progres va executa q2 de o infinitate de ori. Insa din ⃟⃞(np=k) va rezulta ca ⃟⃞(nq=k+1) cu k>0, ce contrazice ⃞⃟(nq < np) !

Page 43: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Algoritmul bakery pentru N procese

integer array[1..N] number [0,. …, 0]

pi

loop forever

p1: sectiune non-critica

p2: number[i] 1 + max(number)

p3: for all other processes j

p4: await (number[j] = 0) or (number[i] ≪ number[j])

p5: sectiune critica

p6: number[i] 0

Algoritmul Bakery pentru N procese

Sursa: M.Ben-Ari, 2006

(number[i] ≪ number[j]) (number[i] < number[j])

((number[i] = number[j]) (i < j))

Page 44: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Observatii

• Instructiunea de determinare a maximului dintr-un vector este

considerata atomica. Aceasta presupunere se poate inlatura cu

un artificiu (vezi versiunea urmatoare a algoritmului).

• Algoritmul Bakery este elegant deoarece fiecare variabila

globala este scrisa de exact un proces.

• Dezavantaje:

– Daca intotdeauna unul dintre procese se afla in sectiunea critica atunci

numerele biletelor pot creste indefinit

– Fiecare proces va trebui sa evalueze biletele tuturor celorlalte procese,

chiar daca nici unul dintre ele nu vrea sa intre in SC.

Page 45: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Algoritmul bakery pentru N procese

integer array[1..N] number [0,. …, 0]

boolean array[1..N] choosing [false, ..., false]

pi

loop forever

p1: sectiune non-critica

p2: choosing[i] true

p3: number[i] 1 + max(number)

p4: choosing[i] false

p5: for all other processes j

p6: await choosing[i] = false

p7: await (number[j] = 0) or (number[i] ≪ number[j])

p8: sectiune critica

p9: number[i] 0

Algoritmul Bakery fara atribuire atomica

Sursa: M.Ben-Ari, 2006

Page 46: Verificarea programelor concurentesoftware.ucv.ro/~cbadica/scd/cap3.pdfcuvinte A P –Daca p si q sunt proprietati de corectitudine, adica p, q P atunci si formulele p ... adevarata

2018 - 2019

Tema

• Sa se implementeze algoritmul Bakery folosind

interfata Lock din Java. Pentru a determina indexul

firului curent se va folosi clasa ThreadID introdusa in

cursul 2.