LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No...

213
LaSalleOnLine ENGINYERIES MODELAT I VERIFICACIÓ DE SISTEMES DISTRIBUÏTS Guia d’estudi Miquel Beltran 2010 Creative Commons Deed

Transcript of LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No...

Page 1: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

LaSa

lle

On

Lin

e

EN

GIN

YER

IES

MODELAT I VERIFICACIÓ DE SISTEMES DISTRIBUÏTS

Guia d’estudi Miquel Beltran

2010 Creative Commons Deed

Page 2: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i
Page 3: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Creative Commons License Deed Reconeixement-No comercial-Sense obres derivades 3.0 Espanya

Vostè és lliure de: Copiar, distribuir i comunicar públicament l’obra.

Sota els següents condicionants:

Reconeixement.

S’ha de referenciar aquesta obra a Miquel Beltran - Enginyeria La Salle (Semipresencial)

No comercial. No es pot utilitzar aquesta obra per a finalitats comercials.

Sense obres derivades.

No es pot alterar, transformar o generar una obra derivada a partir d’aquesta.

Quan reutilitzeu o distribuïu l'obra, heu de deixar ben clar els termes de la llicència de l'obra.

Alguna d'aquestes condicions pot no aplicar-se si obteniu el permís del titular dels drets d'autor.

No hi ha res en aquesta llicència que menyscabi o restringeixi els

drets morals de l'autor.

Els drets derivats d'usos legítims o altres limitacions reconegudes

per llei no queden afectats per l'anterior

Això és un resum fàcilment llegible del text legal (la llicència completa) disponible en els idiomes següents:

Català Castellà Basc Gallec

Page 4: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i
Page 5: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Crèdits

Autor: Miquel Beltran

Editor: Lluís Vicent

Coordinació lingüística: Sara Laso

Revisió lingüística: Carmina Mateo

Maquetació: Víctor Ballesteros

Disseny de portada: Víctor Ballesteros

Aquesta edició ha comptat amb el suport de l’Agència de Gestió d’Ajuts Universitaris i de Recerca (AGAUR) de la Generalitat de

Catalunya en la Convocatòria d’ajuts a l’edició i la difusió de llibres de text o manuals universitaris i llibres cientificotècnics, en suport

paper o en suport electrònic, escrits en llengua catalana (DILL 2010)

ISBN: 978-84-937712-9-4

Page 6: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i
Page 7: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Modelat i verificació de sistemesdistribuïts

Una introducció

Miquel Bertran

Page 8: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i
Page 9: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Reconeixement i agraïment

El format d’aquests apunts no hagués estat possible sense el tre-ball sistemàtic de Roman Duch i la col·laboració de Francesc-XavierBabot. El model de xarxa de comunicació descrit en la part finalva sorgir del treball amb August Climent, Joan Navarro i Francesc-Xavier Babot. El diàleg regular amb Xavi Canaleta és molt apreciat.

La notació de modelat ha servit en docència, recerca i projectes pera la indústria; gràcies a la col·laboració de moltes persones en lacreació de diversos entorns de desenvolupament. Recentment i desdel principi: Albert Duran i Miquel Porta. Més recentment: Francesc-Xavier Babot, Joan-Andreu Margalef i Carles Blanc. En els temps decreació de la notació i dels primers entorns: Jordi Forga, FrancescOller, Felipe Álvarez-Cuevas, Joan Viaplana, Josep M. Solanas, Josep-Artur Frau, Joan-Manuel Espejo i Toni Ripoll. No em voldria oblidar deningú. Excuses si ho faig. A tots ells estenc el meu reconeixement iagraïment més profund.

Page 10: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i
Page 11: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

ÍNDEX

1 Introducció 11.1 Objectius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Modelat i verificació en el desenvolupament de sistemes . . . . . 21.3 Resum i continuació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Modelat de sistemes pròpiament distribuïts 72.1 Introducció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2 Procediments modulars . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3 Paral·lelisme i comunicació . . . . . . . . . . . . . . . . . . . . . . . . . 92.4 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.5 Resum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.6 Problemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3 Sistemes amb memòria compartida 333.1 Motivació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.2 Suposicions de base i validació de models . . . . . . . . . . . . . . . 343.3 Propietats d’un model . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.4 La màquina de transicions finites (MTF) d’un model . . . . . . . . 483.5 Formulació de propietats d’un model . . . . . . . . . . . . . . . . . . 523.6 Demostració de propietats d’un model . . . . . . . . . . . . . . . . . 543.7 Extensió a sistemes pròpiament distribuïts . . . . . . . . . . . . . . 583.8 Resum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633.9 Problemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

4 Exemples sobre l’exclusió mútua (EM) 694.1 Introducció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.2 Esquema i propietats desitjables de les solucions a l’EM . . . . . 694.3 Intents i solucions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724.4 Solució basada en una instrucció especial . . . . . . . . . . . . . . . 844.5 Verificació amb reforç de l’invariant . . . . . . . . . . . . . . . . . . . 884.6 EM pròpiament distribuïda . . . . . . . . . . . . . . . . . . . . . . . . . 904.7 Resum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944.8 Problemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

5 Modelat i verificació amb semàfors 995.1 Introducció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995.2 Elements i propietats bàsiques . . . . . . . . . . . . . . . . . . . . . . 1005.3 Exemple: exclusió mútua amb semàfors . . . . . . . . . . . . . . . . 1035.4 Exemple: cua de comunicació amb semàfors . . . . . . . . . . . . . 1085.5 Implementació i avaluació . . . . . . . . . . . . . . . . . . . . . . . . . . 1165.6 Resum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195.7 Problemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

i

Page 12: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

6 Modelat i verificació amb monitors 1236.1 Introducció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1236.2 Trets característics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1246.3 Operacions invocades a cada part d’un monitor . . . . . . . . . . . 1256.4 Exemple: monitor de cua . . . . . . . . . . . . . . . . . . . . . . . . . . 1286.5 Funcionament d’un monitor . . . . . . . . . . . . . . . . . . . . . . . . . 1336.6 Verificació de models amb monitors . . . . . . . . . . . . . . . . . . . 1366.7 Exemple. El monitor d’accés a una taula . . . . . . . . . . . . . . . . 1436.8 Monitors amb signals a llocs arbitraris . . . . . . . . . . . . . . . . . 1506.9 Resum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1526.10Problemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

7 Elements per a la realització de monitors 1657.1 Introducció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1657.2 Monitors realitzats amb semàfors . . . . . . . . . . . . . . . . . . . . 1657.3 Organització de sistemes operatius amb monitors . . . . . . . . . 1687.4 Resum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1787.5 Problemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

Bibliografia 181

A Programació seqüencial en PADD 183A.1 Introducció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183A.2 Procediments modulars . . . . . . . . . . . . . . . . . . . . . . . . . . . 183A.3 Sentències per definir la part algorísmica . . . . . . . . . . . . . . . 186A.4 Definició de tipus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189A.5 El mòdul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190A.6 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

B Un model de xarxa de comunicació 193B.1 Introducció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193B.2 Marc d’aplicació del model . . . . . . . . . . . . . . . . . . . . . . . . . 193B.3 Els nodes client de la xarxa . . . . . . . . . . . . . . . . . . . . . . . . . 194B.4 Requeriments del model de la xarxa . . . . . . . . . . . . . . . . . . . 195B.5 Disseny del model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195B.6 El mòdul que conté el model de la xarxa . . . . . . . . . . . . . . . . 197B.7 La xarxa pròpia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198B.8 Entrada a la xarxa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199B.9 Sortida de la xarxa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200B.10El paral·lelisme global . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

ii

Page 13: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

1 Introducció

1.1 Objectius

Avui, pujar la velocitat dels processadors ja no és possible augmentant la freqüèn-cia del rellotge, a causa de les limitacions físiques dels materials electrònics. Percontinuar pujant la velocitat de càlcul, els fabricants fan treballar en paral.lel unsquants processadors, dins el mateix xip. D’aquests xips en diuen multicores. Lavelocitat s’augmenta amb el paral.lelisme i la comunicació entre els cores, pro-cessadors connectats en paral.lel. No obstant, la programació es complica. Elparal·lelisme i la comunicació poden entrar en la programació, que fins ara eraseqüencial.

El treball en paral.lel de processadors també es té en les xarxes de comuni-cació. Els seus nodes dialoguen amb protocols de comunicació. També surten sistemes multitasca, mono i multiprocessador, els quals corren sobre els sis-temes operatius actuals. Encara que en monoprocessadors no hi ha paral.lelismepròpiament, el seu funcionament es pot modelar amb paral.lelisme i comunica-cions. Finalment, l’electrònica digital també pot ser vista, en sentit ampli, comel treball en paral.lel de les diverses parts d’aquesta electrònica.

En aquests apunts un sistema distribuït és tot sistema real que pot ser mo-delat, de forma natural (propera al sistema), amb processos paral·lels, operacionsde comunicació entre ells i memòria compartida entre tots o alguns d’ells. Un casparticular de sistema distribuït és el que es modela de forma natural amb proces-sos paral·lels comunicants solament. S’anomena, en aquests apunts, sistemapròpiament distribuït. En ell, els processos no comparteixen memòria.

Els sistemes que s’han esmentat al principi són exemples de sistema distribuït. Engeneral, ho és tot sistema real que té físicament més d’un processador comunicant-se via memòria compartida o via operacions de comunicació.

La paraula concurrent o bé concurrència està molt relacionada. Es refereix asistemes en que tasques d’aplicació comparteixen memòria. El cas monoproces-sador, així com els sistemes operatius monoprocessador, van ser els primers sis-temes reals que van motivar la recerca sobre sistemes concurrents; la referència[9] en dóna una perspectiva. Amb els multiprocessadors d’avui, la concurrèn-cia s’ha estès i aplicat a ells. Aquesta extensió es pot anomenar concurrència idistribució. La noció de sistema distribuït, en aquests apunts, n’és equivalent.

Les notacions de modelat amb paral.lelisme explícit i operacions de comunicaciósón idònies per expressar totes les aplicacions anteriors. Hi ha moltes notacionsamb aquestes característiques: PROMELA, del verificador SPIN [12], ADA [6, 19],SPL, dels llibres de Manna i Pnueli [16, 17], OCCAM [13, 14, 15]. Aquí s’usarà unanotació de modelat que, a més dels elements que tenen les notacions esmen-tades, disposa de variables compartides, semàfors i monitors. D’aquesta formas’aconsegueix un equilibri entre comunicació pròpia i comunicació per memòriacompartida. En aquesta línia, els apunts tenen els objectius següents:

1

Page 14: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

• Introduir elmodelat de sistemes distribuïts en una notació amb paral.lelismeexplícit, pas de missatges, semàfors i monitors.

• Introduir la verificació de sistemes distribuïts. S’aprendrà a pensar ambrigor sobre aquests sistemes; en altres paraules: a formular les seves pro-pietats i a verificar-les amb mètodes matemàtics.

1.2 Modelat i verificació en el desenvolupamentde sistemes

Requeriments

Especificació derequerimients

Disseny

Especificació dedisseny

Modelat

Verificació Model Simulació

Mapeig

VHDL . . . Programa en C . . . Programa en C

Testeig

{Sistemareal }

Figura 1.1.: Desenvolupament basat en modelat, simulació i verificació

Modelar és útil, no solament en el disseny de computadors, sino també en eldesenvolupament de sistemes en general, tan hardware com software. Per

2

Page 15: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

exemple, el disseny d’electrònica en la qual intervenen processadors program-ables, el disseny de programes sobre sistemes multiprocessador o sobre com-putadors multiprocessador. Totes aquestes situacions poden ser freqüents en unavida professional.

En l’estudi dels apunts s’han de tenir sempre presents dos nivells o plans per atot sistema distribuït.

1. El model, o els models del sistema.

2. La descripció detallada del sistema real. Feta en C, en VHDL, amb esquemes,etc.

Es treballarà en el primer nivell, en el qual s’ha de pensar d’una forma més abs-tracte que en el segon. En un sol cas es mostra el nivell real, el format perinstruccions màquina corrent sobre multiprocessadors. Les paraules tasca d’apli-cació, thread, processador, etc ... sempre es refereixen a sistemes reals. Laparaula procés sempre es refereix al nivell abstracte o del model.

Construir un model és l’equivalent a fer una maqueta d’un edifici. El model cor-respon a una simplificació de la realitat, però ajuda a analitzar-la tot simulant elcomportament del model o simplement raonant sobre les propietats que posseeix(calcula el que volem?, es "penja"?, etc.). Això últim s’anomena verificar les pro-pietats del model. La simulació consisteix a fer córrer el model en un simulador,així un pot fer-se una idea del funcionament, molt abans de tenir el sistema re-al. Permet corregir el disseny en les primeres fases del desenvolupament. Laverificació es fa amb l’ajut dels verificadors, eines que analitzen el model sensefer-lo córrer. Simulació i verificació són fonamentals per obtenir dissenys segurs ifiables.

L’esquema de la figura 1.1. dóna una visió simplificada del procés de desenvolu-pament basat en modelat, simulació i verificació. En ell tenim activitats i resul-tats d’aquestes activitats. Els resultats poden ser simplement documents o béprogrames, diagrames de blocs, etc... Finalment, hi ha el sistema real descriten VHDL, amb esquemàtics, o una altra forma en el cas d’electrònica dedicada.En C o similars en el cas de programes sobre multiprocessadors. Descrits de lesdues maneres segons les parts d’un sistema composat per electrònica dedicada iprocessadors.

Per donar una visió sobre el paper i situació del modelat, simulació i verificació enel procés de desenvolupament d’un sistema digital, representat a la figura 1.1., acontinuació s’en dóna una descripció de les fases:

Requeriments Formulació de què ha de fer el sistema. Han d’estar-hi d’a-cord els clients i els constructors de l’arquitectura. Els clients poden ser undepartament de la mateixa empresa. El seu resultat és el document especi-ficació dels requeriments. Alguns dels requeriments poden expressar-se enfórmules lògiques, les quals corresponen a propietats concretes. Llavors esdirà que les propietats estan expressades formalment. Existeixen molteslògiques per formular propietats. Exemples: la lògica de primer ordre o càl-cul de predicats, les lògiques temporals, la notació matemàtica Z, etc...

Disseny Concepció de com el sistema realitzarà els requeriments, contingutsen el document de requeriments. Cal escollir tecnologies, estructures, com-ponents existents per a ser usats, etc., relacions entre les parts i compo-nents del sistema, etc... El seu resultat és el document d’especificació deldiseny. Durant aquesta fase pot fer-se necessària la revisió i posada al dia

3

Page 16: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

del document de requeriments, a causa del major grau de concreció quans’ha realitzat el disseny.

Modelat Concepció d’una maqueta del futur sistema, segons el disseny ante-riorment dut a terme. Existeixen llenguatges de modelat, els quals han deser senzills, esquemàtics i han de poder ser aplicats tan al hardware com alsoftware. El resultat del modelat és el model o els models, ja que en més d’u-na situació és convenient modelar diferents aspectes del sistema en modelsdiferents. El model ha de poder córrer sobre un simulador.

Verificació del model. Les propietats expressades formalment són objecte decontrast amb el model. Un estil freqüent de raonament que s’introduïrà ésel de la demostració matemàtica basada en sistemes de transicions finites,a partir del capítol 3. Aquest treball es fa sobre verificadors, eines softwared’ajut a la verificació. Per usar-les cal saber la cultura tècnica que es treballaals apunts.

Simulació Es tracta de fer córrer el model a fi d’obtenir traces de la seva exe-cució i veure si el comportament és l’esperat. En realitat, el model va inseriten un banc de proves, sobre el qual s’han preparat casos de prova. La si-mulació i proves són complementàries amb la verificació. Les dues ajudena descobrir errors abans d’entrar en els detalls del sistema real. Com a re-sultat de la simulació, i/o de la verificació, pot ser necessari tornar enrere imodificar el disseny.

Mapejat Aquesta activitat obté el sistema real partint del model. Es com unatraducció i ampliació, la qual ha de respectar l’estructura del model a fi queconservi les propietats que s’han comprovat en les fases d’anàlisi i de simula-ció. Per tant, s’ha de seguir una sistemàtica de mapejat. En molts escenaris,existeixen eines que obtenen la codificació en C, partint del model i de ladefinició de quins processadors han de córrer les diferentes parts del model.

Testeig Es refereix a les proves de tot tipus que han de fer-se sobre el sistemareal. Aquí no s’entra en detall. Tan sols cal dir que les fases de modelat,verificació i simulació fan que el testeig pugui ser molt més curt.

A la figura 1.2., la corba creixent indica el cost de detectar i corregir un erroro un mal plantejament d’un sistema, en moments diversos del procés de desen-volupament. Ho indica en funció del moment (temps) en el que succeeix això.Aquest moment pot ser molt aviat, quan solament s’han pensat i fet documents;o bé molt tard, quan ja s’està validant el sistema davant els usuaris. Com es potveure, per al mateix error, el cost de corregir-lo és molt més elevat quans’està molt més endavant en el desenvolupament.

La corba decreixent de la figura 1.2. quantifica el nombre de decisions a prendredurant el desenvolupament; decisions correctes, naturalment. S’observa que lesdecisions de disseny han de tenir lloc durant les fases inicials, anomenades tambéfases abstractes. A les fases finals serien molt costoses, ja que correspondrien acanvis. Les fases finals es dediquen a realitzar les bones decisions preses durantles inicials.

És degut a aquest fet que la construcció de models, juntament ambllur verificació i simulació, disminueixen els costos de desenvolupament,

4

Page 17: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

COST DE CORRECCIÓ D’ERRORS

Costos elevats

NOMBRE DE DECISIONS

CORRECTES

0INICI DEL

PROJECTE

TEMPS DE DETECCIÓ D’ERRORS

FI DEL PROJECTE

Fases concretesFases abstractes

Costos baixos

EVOLUCIÓ DEL PROJECTE

Figura 1.2.: Costos del desenvolupament d’un projecte

per què aquestes activitats tenen lloc a les primeres fases i ajuden molta concretar i pensar; i, per tant, a prendre bones decisions sobre elsistema concret durant les fases abstractes.

1.3 Resum i continuació

En el capítol següent es veurà el modelat de sistemes de pas de missatges, ambmemòria local a cada procés. Aquests sistemes no tenen memòria compartida.Serveixen, entre moltes altres aplicacions, per modelar arquitecturesmultiproces-sador, però poden aplicar-se també per modelar hardware. Per exemple, àrbitresde busos de memòria, els quals coordinen els processadors que hi estan dialo-gant. Els exemples mostren com aquestes tècniques es poden aplicar a modelarprotocols de xarxes de comunicació i cues hardware d’elements digitals.

El capítol de sistemes amb memòria compartida resumeix tècniques de modelati de verificació de programes que corren sobre computadors multiprocessador,els quals es comuniquen intercanviant dades via memòria compartida. Es veuràuna manera de formular algunes propietats importants i es donaran tècniquesde verificació basades en la màquina de transicions finites (MTF), la qual seràassociada a cada model d’una forma sistemàtica.

En el capítol d’exemples al voltant de l’exclusió mútua, es mostren intents per talde garantir l’EM així com solucions efectives. Fins aquest punt s’ha pensat en unnivell real de programes màquina corrent sobre multiprocessadors.

El modelat i verificació amb semàfors és introduït en el capítol següent. Aquí lesoperacions del semàfor formen un nucli de sistema operatiu. S’està treballantsobre multiprocessadors amb memòria compartida.

5

Page 18: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

En el capítol sobre monitors també s’està treballant amb sistemes de memòriacompartida. Un monitor és vist com una generalització del semàfor; és un semà-for programable. Les màquines de transicions finites serveixen també per or-ganitzar les demostracions. Per poder fer-ho es dóna una forma sistemàtica perobtenir les transicions de la MTF d’un sistema amb monitors; se les associa acerts fragments de les operacions de monitor.

Finalment, un capítol dedicat a donar idees sobre la realització de monitors tancaels apunts. Es veu com el monitor pot ser realitzat sobre bases diferents. Enuna d’elles, els monitors es realitzen directament sobre la màquina. Aquesta re-alització mostra com els monitors poden ser la base de l’organització de sistemesoperatius, treballant directament sobre els processadors, per fer-los més clars iverificables.

L’apèndix A exposa les construccions seqüencials de la notació de modelat PADD.És necessàri conèixer-les per entendre el capítol 2, el qual entra directament enles construccions de paral·lelisme i comunicació, suposant conegudes les seqüen-cials.

L’apèndix B presenta un model complet d’una xarxa de comunicació. Ofereixals seus clients diversos serveis: Unicast, Broadcast, etc. Integra la majoria deconstruccions i nocions presentades en els apunts. El lector el pot consultar,durant l’estudi, per veure l’ús a la pràctica de paral·lelisme, comunicació síncrona,memòria compartida i distribuïda, semàfors, monitors, etc.

El model s’ha dissenyat i programat en el Grup de Recerca en Sistemes Distribuïts(GRSD) del Departament d’Informàtica d’Enginyeria La Salle, Universitat RamonLlull. És usat i actualitzat en el GRSD per estudiar i mesurar el comportamentd’algorismes de control de concurrència en bases de dades distribuïdes.

Continuació de l’estudi. Els apunts fan un esforç per exposar detingudamenti amb claredat els conceptes fonamentals per modelar i verificar. Això perme-trà l’estudi d’altres llibres. Caldria aprofundir, especialment en la verificació. Perfer-ho es donen a continuació algunes fonts. La verificació en els apunts segueixl’estil de [16, 17], per tant aquests dos llibres són molt indicats per ampliar coneix-ements. Hi ha altres llibres que exposen més temes i exemples. Entre ells elssegüents: [3] i [20] per estudiar més sobre programes distribuïts, [1] verificacióalternativa de models concurrents i distribuïts, [18] programació concurrent en Ci altres notacions, [5] verificació de programes concurrents. Una perspectiva delsinicis de la programació concurrent, amb articles pioners, es troba a [9].

La verifcació de sistemes amb un nombre finit d’estats es fa automàticamentsobre la màquina de transicions finites (MTF), presentada i treballada en aquestsapunts, amb els verficadors de models, també coneguts commodel checkers. Und’ells és SPIN, exposat a [12]. Per fer-los funcionar cal expressar les propietatsen lògiques temporals. La referència [16] explica detingudament una d’elles, laLTL, de linear time logic. Sobre verificadors de models hi ha els llibres [4] i [2], elsquals també inclouen presentacions de lògiques temporals.

6

Page 19: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

2 Modelat de sistemes pròpiamentdistribuïts

2.1 Introducció

El modelat de sistemes, tant distribuïts com concurrents, es fa amb notacionsespecials, de modelat. Encara que n’hi ha moltes, en aquests apunts treballaremsolament en aquelles que són imperatives i tenen paral·lelisme explícit i comuni-cacions amb sincronisme entre receptor i emissor. Un treball pioner és el de Hoare[11]. Les notacions OCCAM [13, 14, 15] , Promela del verificador SPIN [12] i SPL[16, 17] pertanyen a aquest grup. Hem integrat les construccions fonamentals detotes elles en la notació PADD (de paral·lelisme, abstracció i disseny dimension-al). En aquest capítol s’introdueixen aquestes construccions PADD fonamentats,aquelles que són imprescindibles pel modelat de sistemes distribuïts. Són novesper aquells de vosaltres que coneixeu solament la programació seqüencial. Lessentències corresponents a la programació seqüencial són tractades en l’apèndixA. En altres capítols es tracten les construccions que es fan servir pel modelat desistemes amb memòria compartida. Bàsicament són el semàfor [7] i els monitors[10]. PADD també les té, a més a més de les anteriors. Així es poden modelar enaquesta notació tant sistemes concurrents com distribuïts.

La noció de procediment modular, surt en tot model, el qual sempre està formatper un conjunt d’ells. Té aspectes relatius al paral·lelisme, encara que com acas particular és usat en programació seqüencial. L’apartat següent en dóna unresum. També és tractat a l’apèndix A.

2.2 Procediments modulars

Introducció

Un procediment modular és una part de programa, una sentència, a la qual lidonem un nom per ser invocat dins algun altre procediment; per exemple delprograma principal. El motiu del nom procediment modular és el d’evitar con-fusions amb el procediment usual de la programació seqüencial, el qual n’és uncas particular. D’ara en endavant s’usarà el mot procediment per referir-se a unprocediment modular.

Per introduir el procediment, s’ha de parlar de conceptes que es defineixen poste-riorment, a l’apartat 2.3. Aquests són la composició en paral·lel de processos i laconnexió. La primera defineix que dos parts d’un programa poden dur-se a termesimultàniament. La connexió defineix un punt de comunicació entre processos

7

Page 20: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

composats en paral·lel; per on passaran missatges. Amb aquesta idea generalpodeu entendre el que s’exposa aquí sobre procediments.

Estructura global

<proc_name>int

... definició de la interfíciealg

... cos de l’algorisme

Figura 2.1.: Estructura d’un procediment modular

L’algorisme i la interfície són les dues parts principals d’un procediment. Figurencom a subarbre diagonal inferior de les paraules clau alg i int, respectivament,figura 2.1.. La interfície defineix els punts de comunicació entre el procediment ila resta del programa. Aquests punts poden ser variables i/o connexions. Les vari-ables defineixen posicions de la memòria per al pas de valors. Aquesta memòriapot estar compartida amb altres processos paral·lels. Les connexions serviranper comunicar valors a processos connectats en paral·lel, sense intervenció de lamemòria compartida. La comunicació pròpia té lloc dins l’algorisme del procedi-ment, al dur a terme les sentències d’assignació i/o les de comunicació. Per tant,la interfície és estàtica i l’algorisme és dinàmic.

La interfície d’un procediment

La interfície defineix l’acoblament, relació o connexió, del procediment amb laresta del programa. Aquesta definició es fa amb variables i connexions, tant perles entrades com per les sortides:

<proc_name>int

resDeclaració de resultats

posPostcondicions relacionantresultats i paràmetres

parDeclaració de paràmetres

prePrecondicions imposadesals paràmetres

algCos de l’algorisme

Figura 2.2.: Interfície d’un procediment modular

La interfície té dues parts definides en diagonal per sota les paraules clau par, elsparàmetres o entrades, i res, pels resultats o sortides, tal com indica la figura 2.2..

8

Page 21: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

L’àmbit de les variables i les connexions definides a la interfície és l’algorisme delprocediment. Les variables definides a la part par, com a paràmetres, no podenser modificades pel procediment; a no ser que també estiguin definides a la partres. Solament les variables a la part res poden ser modificades per l’algorismedel procediment.

El procediment pot estar composat en paral·lel amb altres processos. Si les varia-bles estan a la memòria compartida, els canvis del valor d’una variable, realitzatsper altres processos, són vistos dins el procediment. No cal tornar a entrar pera veure’ls. De la mateixa forma, tot canvi de valor fet pel procediment a unavariable definida a la part res és vist immediatament per qualsevol procés paral-lel que la consulti; no cal que el procediment retorni. Per tant, les variables a lainterfície són passades per referència i no per valor.

Una altra forma d’intercanvi de valors d’un procediment amb la resta del pro-grama és mitjançant connexions. Aquesta és la forma corresponent a un sistemapròpiament distribuït, carent de memòria compartida. Les connexions han d’estardefinides a la interfície. Com a paràmetres, si per elles el procediment rebrà val-ors de processos paral·lels, o com a resultats si per elles el procediment enviaràvalors.

La interfície pot tenir també precondicions i postcondicions. Les precondicionsposen condicions que han de complir els paràmetres. Es defineixen a la diagonalinferior de la paraula clau pre. Les postcondicions informen sobre els resultatsdesitjats en funció dels valors dels paràmetres. Es defineixen a la diagonal infe-rior de la paraula clau pos. Per aquests apunts, tant les precondicions com lespostcondicions, es defineixen com a comentaris. Formen part de la documentaciódel procediment.

Referència a un procediment

La forma d’aquesta sentència és la següent:

r1, r2, ... := Proc.Nme(p1, p2, ...).

Una referència a procediment serveix per iniciar l’execució del procediment en elpunt de la referència. La sentència té la llista de resultats a la part esquerra, elsímbol d’assignació a la dreta, continuant amb el nom del procediment i la llistade paràmetres, a la dreta del nom. L’ordre a les dues llistes ha de correspondreals de la interfície del procediment referenciat.

2.3 Paral·lelisme i comunicació

Introducció

A més a més dels procediments modulars, les sentències pel modelat de sistemesamb paral·lelisme i comunicació són la composició en paral·lel, la declaració deconnexions, les operacions de comunicació i la selecció de comunicacions. S’ex-pliquen a continuació.

9

Page 22: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Paral·lelisme

La definició del paral·lelisme entre processos és explícita en la notació mitjançantla sentència de composició en paral·lel. La figura 2.3. en dóna un exemple com-posant N processos, sentències, en paral·lel:

. . . sentències sequencialment anteriors al paralúlelisme| |

P1Sentència de P1

P2Sentència de P2

... PNSentència de PN.

. . . sentències sequencialment posteriors al paralúlelisme

Figura 2.3.: Estructura d’un paral·lelisme

En aquesta sentència, els processos tenen una etiqueta d’encapçalament, (P), iestan connectats horitzontalment entre ells. El símbol ‘ ||’ representa la totalitatde la sentència de paral·lelisme, usualment formant part, tota ella, d’una sentèn-cia de composició en seqüència. La llista horitzontal de processos és el subarbreen diagonal, o sigui, el refinament diagonal del node del símbol de paral·lelisme.El cos de cada procés (sentència de Pi) pot ser definit explícitament o be amb unareferència a procediment. En el segon cas, la definició esta encapsulada dins elprocediment.

L’execució del paral·lelisme s’inicia creant i fent començar tots els seus processos.L’ordre relatiu d’execució de les subsentències dels processos pot ser qualsevol:és desconegut; però ha de respectar el seu ordre dins cada procés. L’execució delparal·lelisme acaba solament quan tots els processos han acabat, i continua ambla sentència seqüencialment posterior al paral·lelisme, o sigui, la connectada coma subarbre seqüencial del símbol‘ ||’.

La semàntica del paral·lelisme s’exposa amb més detall en el capítol 3. És unasemàntica d’entrellaçaments de les subsentències de cada procés.

Connexions

Els processos composats en paral·lel poden comunicar-se per connexions, decla-rades abans del paral·lelisme corresponent a l’emissor i al receptor. L’esquemade la figura 2.4. il·lustra la declaració de connexions. Les connexions són usadespels processos en paral·lel per enviar i rebre valors, de forma síncrona; tal coms’explica a l’apartat següent.

La sentència con, figura 2.4., declara connexions per ser usades més avall enl’algorisme. L’àmbit o zona on es poden usar les connexions és el subesquemavertical del node de con. Són invisibles en qualsevol altre lloc.

Les connexions es declaren amb el seu tipus. El tipus de la connexió buida és nul.

La sentència con amb un paral.lelisme en el seu àmbit, on els processos paral.lelses comuniquen per les connexions declarades, constitueix el marc per definir unaxarxa de processos comunicants.

10

Page 23: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

concon1: TypeCon1con2: TypeCon2. . .

| |P1

. . .. . . PN

. . .

Figura 2.4.: Declaració de connexions

Encara que les connexions són tipades, no tenen cap buffer. Són punts sensememòria que fan possible la comunicació half-duplex de punt a punt, entre dosprocessos paral.lels.

Les connexions que comuniquen un procediment amb altres processos paral.lels,són declarades a la interfície del procediment, a més a més de les variablesparàmetre o resultat (per memòria compartida), tal com s’ha exposat abans.

Les connexions d’entrada tenen noms amb el prefix "<>", i han de declarar-se enl’apartat de paràmetres.

Les connexions de sortida tenen noms amb el prefix "[]", i han de declarar-se al’apartat de resultats.

Aquestes connexions són usades dins de l’algorisme del procediment. Arrays uni-dimensionals de connexions també es poden declarar, com s’exposa més avall.No hem de confondre una connexió amb un canal, el qual és modelat com unprocés. Un altre nom per les connexions és canal síncron.

Operacions de Comunicació. Enviar i rebre

El succés real de la comunicació d’un valor s’especifica amb operacions de comu-nicació, dins l’algorisme dels processos composats en paral.lel. Hi ha les opera-cions enviar i rebre. S’anomenen parell abstracte de comunicació (PAC).

Cada tipus té associat un PAC amb les seves dues operacions complementàries,enviar i rebre. Serveixen per comunicar valors del tipus. La forma concreta comla comunicació té lloc és desconeguda; aquesta és la motivació per la paraulaabstracte.

Donades c : t i : t, una connexió i una variable de tipus t, s’usarà la sintaxisegüent per les operacions d’enviar i rebre, respectivament:

:=<>c i []c := .

La sintaxi següent s’usarà per les comunicacions tipades amb nul:

<> c i []c.

En aquest cas no es passa cap valor, només dos senyals de sincronització. Aques-tes fan que un dels processos, el que ha arribat a la sentència de comunicació,esperi a que l’altre hagi arribat a l’altra operació de comunicació.

11

Page 24: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

La comunicació té lloc sense cap buffer intermedi; els dos processos sincronitzena les seves operacions de comunicació. El primer procés que arriba a la operacióde comunicacions espera l’altre. Quan les dues estan a punt per comunicar, elvalor de tipus t, que és a la variable de la sentència d’emetre, és guardat a lavariable de l’operació de rebre. Un cop passat el valor, l’execució continua enparal.lel.

Selecció de comunicacions estàndard

La sentència de selecció de comunicacions té alternatives connectades en unallista horitzontal. Solament una de les alternatives será escollida per execu-tar. La selecció d’aquesta ve determinada per condicions booleanes (guardesbooleanes), b, i per operacions de comunicació (guardes de comunicació), c,situades en els encapçalaments de les alternatives. La selecció depèn de l’ava-luació de les condicions i de les possibilitats de comunicació amb el processosveïns, implicats per les connexions. La disjunció lògica de totes les condicions hade valer cert en totes les possibles execucions de la selecció. Si no és així, télloc un acabament amb error. La figura 2.5. il·lustra la sintaxi de la selecció decomunicacions:

...?

b1, c1A1

b2, c2A2

... bn, cn

An...

Figura 2.5.: Selecció de comunicacions

L’execució es fa de la manera següent:

• Per cada alternativa, començant per la de més a l’esquerra, el booleà bi ésavaluat.

– Si val fals, l’alternativa següent és examinada.

– Si val cert, s’avalua l’estat de l’operació de comunicació ci :

∗ Si està a punt, llavors té lloc l’esdeveniment de comunicació i l’alter-nativa corresponent és seleccionada per executar.

∗ Si no ho està, s’inspecciona l’alternativa següent, però la comuni-cació es deixa “oberta".

• Finalment, un cop totes les alternatives s’han examinat sense que cap es-tigui a punt per comunicar, el procés que duu a terme la selecció espera laprimera comunicació, de les obertes, que vulgui comunicar.

Al menys, una de les guardes ha de valer cert, si no un error té lloc. Per tant,al menys, una operació de comunicació és inspeccionada. Resumint, el procésseleccionarà l’alternativa de més a l’esquerra que tingui una condició booleana

12

Page 25: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

certa i una comunicació a punt. Quan cap està a punt, es selecciona l’alternativaamb condició certa i que tingui primer la seva comunicació a punt.

Selecció de comunicacions amb timeouts

...?

b1, c1A1

b2, c2A2

... bn, delay(t)

An...

Figura 2.6.: Selecció de comunicacions amb timeout

Quan la guarda de comunicacions d’una alternativa és delay(t), el procés de laselecció activarà delay(t) solament quan la guarda booleana corresponent valcert. En aquest cas, quan activa delay(t), espera l’arribada d’una comunicació. Eltemps d’arribada és t unitats de temps després de l’activació de delay(t). Això potveure’s com una comunicació que ve d’un procés, amagat, rellotge-despertador,el qual ha estat inicialitzat quan el procés de la selecció activa delay(t). Si abansd’aquest temps arriba una altra comunicació oberta de la selecció, la seleccióescull aquesta alternativa; al mateix temps desactiva el despertador.

Una selecció de comunicació pot tenir més d’una alternativa d’aquest tipus i po-den estar en qualsevol de les alternatives. S’escull l’alternativa amb menor tempsd’espera. La figura 2.6. il·lustra la sintaxi d’aquest tipus de construcció PADD.

Estructures iterades

Vectors de connexions

Els vectors de connexions han de declarar-se dins l’àmbit d’un con. Amb la sintaxisegüent: conName(inx0 .. inxEnd):ConType. Per exemple, ot(0..4) : nteger.

També poden declarar-se a la interfície d’un procediment. En aquest cas, essegueix la mateixa sintaxi però ampliant el nom del vector amb els prefixos ‘<>’o bé ‘[]’, segons sigui d’entrades, a la secció par o de sortides, a la secció res.Per exemple <> n(1..7) dins l’àmbit d’un par.

Per referir-nos a un element d’un vector, es fa de la manera usual. Per exemple,<> nCon(5) i []ot(2). Aquestes referències poden estar dins de les sentènciesenviar i rebre, o bé dins una referència a procediment, com a resultat (enviar) ocom a paràmetre (rebre).

Si volem passar tot un vector de connexions a un procediment, hem de posar sola-ment el nom del vector al lloc adient de la sentència de referència a procediment.El nom ha d’ampliar-se amb els prefixos ‘<>’ o bé ‘[]’ pels vectors d’entrada,llista de paràmetres, i pels vectors de sortida, llista de resultats, respectivament.

13

Page 26: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Iteracions de paral·lelisme

Donen una representació concisa i paramètrica d’una sentència de paral·lelisme.Això estalvia molt de temps; cal tan sols canviar una variable entera per tenirel nombre de processos paral·lels que ens calgui. Per poder usar la sentènciade paral·lelisme iterat, paramètric, cal que tots els processos paral·lels siguinidèntics, exceptuant un índex. Per indicar que una sentència és una iteració deparal·lelisme es juxtaposa al símbol de paral·lelisme el nom de l’índex i l’intervalde valors que ha de prendre. La sintaxi és la següent

|| parameter name := first value .. last value.

Per exemple, ||k := 0..n o bé || := 1..7.

En el refinament d’aquest node hi ha de figurar un sol procés, el qual usa l’índex.El sistema generarà un paral·lelisme, com els d’abans, amb tots els processosobtinguts en fer variar el valor de l’índex dins l’interval especificat al costat delsímbol de paral·lelisme.

Aniuament de paral·lelismes

Corresponen a sentències de paral·lelisme les quals inclouen sentències del mateixtipus, amb iteració o sense iteració. Aquestes sentències sempre indiquen una so-la sentència horitzontal de paral·lelisme. Una sentència aniuada inclou nodes delmateix tipus, tots són paral·lelismes. Un possible exemple es mostra a la figura2.7.:

| || | k:=1..n

A(k) B| |

| | l:=1..mC(l)

| | i:= 0..rD(i)

Figura 2.7.: Un exemple de paral·lelisme aniuat

Aquest exemple de paral·lelisme aniuat és equivalent a un paral·lelisme ambn+m+ r + 2 processos en paral·lel.

2.4 Exemples

Una cua per comunicar processos

Aquest apartat ensenya a modelar sistemes distribuïts. Ho fa mitjançant exem-ples. El primer exemple modela una cua d’ítems (poden ser missatges, strings,

14

Page 27: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

enters, etc...), la qual té aplicació per comunicar processos. La comunicació ambuna connexió, com s’ha vist anteriorment, sincronitza el procés emissor i el re-ceptor; solament passen un ítem quan els dos tenen el control a les sentènciesde comunicació respectives. La cua d’aquest exemple presta un servei de comu-nicació on els processos no han d’esperar al receptor quan emeten un missatge,sempre que hi hagi lloc a la cua. Tampoc els processos receptors han d’esperaral procés emissor, quan hi ha ítems a la cua. Per tant, aquesta cua ofereix unacomunicació on els processos estan desacoblats i desincronitzats.

La cua té longitud finita, solament poden guardar un nombre finit d’ítems. Quan lacua està plena, el procés emissor ha d’esperar a que el procés receptor s’emportiun ítem de la cua, amb el qual fa lloc per l’ítem que vol passar el receptor. Tambéa l’inrevés, el receptor haurà d’esperar a que hi hagi al menys un ítem a la cua,quan la cua és buida.

Les cues d’aquest apartat també es poden fer servir com a models d’un canal decomunicació d’una xarxa, quan es vol que l’ordre dels missatges rebuts sigui elmateix que l’ordre en el qual l’emissor els ha deixat al canal. També, a més amès, es permet que hi hagi simultàniament a la cua un nombre finit d’ítems. Elsmodels són lliures d’error i de pèrdues.

Les cues amb solament un ítem són un model alternatiu i equivalent al protocolde parada i espera descrit més endavant en aquesta secció. Els mecanismes deretransmissió, en cas d’error o de pèrdua, faran que aquell model sigui equivalentals d’aquest apartat.

Cua amb paral·lelisme intern

El primer exemple està format composant en paral·lel N registres. Els registresestan connectats en sèrie, el qual els fa comportar com una cua. Aquest modelel mostra la figura 2.8.. Es remarca que els models de les dues figures són duesformes d’expressar la mateixa cua. En aquesta última no cal modificar el modelquan el valor de N canvia.

QueParint

res[]out: Item

par<>in: Item

algcon

c(1..N-1): Item| |

Register1var

mem: Item

* ∞mem:= <>c(1)[]out:= mem

Register2var

mem: Item

* ∞mem:= <>c(2)[]c(1):= mem

. . . RegisterNvar

mem: Item

* ∞mem:= <>in[]c(N-1):= mem

Figura 2.8.: Cua amb paral·lelisme intern

15

Page 28: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Cada un dels registres té la seva variable local mem on hi guarda el seu ítem,el seu estat. El seu comportament és expressat com una iteració indefinida. Laprimera sentència del cos de la iteració és un rebre, o entrada, del registre veí dela seva dreta. La segona sentència és un emetre del seu ítem al veí de la sevaesquerra.

Els registres dels dos extrems són especials. El de l’esquerra emet un ítem per laconnexió out. El de la dreta rep un ítem per la connexió in. Les dues connexionssón externes, respecte a la cua, i estan declarades en la interfície.

El model anterior solament pot ser expressat per un nombre concret de registres.Per tenir un model més flexible, expressarem el model en funció de N, el nombrede registres, el qual és un paràmetre ara. Emprarem l’iterador de paral·lelisme,com mostra l’esquema de la figura 2.9.. Correspon a una cua general amb Nregistres. N és un paràmetre que pot prendre valors de 2 en endavant.

QueueItParint

res[]out: Item

par<>in: ItemN: Integer

preN>1

algcon

c(1..N-1): Item| | k:=1..N

varmem: Item

?

k=1

* ∞mem:= <>c(k)[]out:= mem

k>1 AND k<N

* ∞mem:= <>c(k)[]c(k-1):= mem

k=N

* ∞mem:= <>in[]c(k-1):= mem

Figura 2.9.: Cua amb paral·lelisme intern i definida paramètricament

Referent al funcionament, o semàntica d’execució, fixeu-vos que a l’estat inicialtots els registres estan esperant un ítem del seu veí de la dreta. El registre extremde la dreta espera una entrada a la cua global. En aquest estat inicial, un procésque vulgui agafar el primer ítem de la cua espera a la connexió out. Per tant, lacua solament està disposada a rebre un ítem.

Un cop aquest ítem entra, al registre extrem de la dreta, és decalat automàti-cament fins el registre extrem de l’esquerra. En aquest moment, la cua estàdisposada tant a donar un ítem, del registre extrem esquerra, com a introduir unnou ítem, pel registre de la dreta.

Podeu estudiar les traces de les execucions descrites per comprovar tot el ques’ha dit. Per fer-les, heu de considerar atòmiques les sentències d’assignació i les

16

Page 29: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

dues de comunicació per la mateixa connexió, una a cada procés, dels registresque comuniquen. També considereu que una execució és un entrellaçament delsàtoms de cada procés, el qual respecta l’ordre dels àtoms a cada un dels proces-sos. Tot això es treballa detalladament al capítol 3.

Cua sense paral·lelisme intern

SeqQueueint

res[]out : item

par<>in : item

algvar

b : queuenew : item

InicialitzacióN:= 8b:= MkQueue()

* ∞?

NOT IsEmpty(b), []out:= FirstQue(b)b := DelFirst(b)

NOT IsFull(b), new:=<>inb := InQueue(new,b)

Figura 2.10.: Cua sense paral·lelisme intern

La figura 2.10. mostra el model de la cua sense usar paral·lelisme. Modela unacua amb comportament idèntic al de la d’abans. Farem servir un tipus abstractede dades (una classe), queue, que suposarem ja programat amb programacióseqüencial usual. Les operacions del tipus abstracte són les següents:

• MkQueue, crea i retorna la cua buida.

• InQueue, afegeix un element al final de la cua.

• DelFirst, esborra el primer element de la cua.

• FirstQue, dóna el primer element de la cua; sense esborrar-lo de la cua.

• NonEmpty, dóna cert si la cua no és buida.

• NonFull, dóna cert si la cua no està plena.

El model també és un exemple d’ús de selecció de comunicacions. Les sevesalternatives tenen la mateixa forma. Aquesta selecció no fa servir cap crida adelay(t).

El cos del bucle indefinit conté la selecció de comunicacions. Les dues guardesbooleanes aturen tot procés que vol treure un ítem quan la cua és buida, i aturentambé tot procés que vol encuar un ítem quan la cua és plena.

17

Page 30: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Tant la sortida com la entrada poden estar obertes en el mateix estat; naturalments’escollirà una sola alternativa.

Fixeu-vos com no hi ha cap estat de la cua on les dues guardes booleanes tinguinel valor fals. Si n’hi hagués algun seria un error de programació.

El comportament o semàntica d’execució d’aquest model, vist de l’exterior de lacua (dels processos emissor i receptor), és el mateix que el del model de cua ambparal·lelisme intern exposat abans. Comproveu-ho vosaltres amb traces.

Protocol de parada i espera

Continuem exposant exemples a fi de concretar el significat de les construccionsde la notació de modelat. L’exemple ara és el model d’un canal d’enllaç, punt apunt, de parada i espera (stop-and-wait). Aquest canal podria ser, per exemple,un component del model d’una xarxa.

La figura 2.11. mostra el model, el qual el formen quatre processos composatsen paral·lel: emissor, receptor, canal de dades i canal de reconeixement de tor-nada (acknowledge). Aquests quatre processos comuniquen per connexions tantentre ells com amb l’exterior. Aquest el suposem format per dos processos, clientreceptor i client emissor.

E(et)

Emtter

Ce(pe, p, t, t)

DtChne

C(p, t, t)

AckChne

R(·)

Receer

o

s

ke

er r

kr

L2Chne

Figura 2.11.: Canal de nivell 2

Els processos emissor i receptor són els que realitzen el protocol, pròpiament.Els altres dos són models del comportament del canal o xarxa real. El conjunt,incloent els dos clients, funciona com a banc de proves de l’emissor i el receptor.El protocol té un timeout per acabar la espera del reconeixement que fa l’emissor.

L’esquema de la figura 2.12. descriu solament les connexions entre els quatre pro-cessos i amb l’exterior format pels dos clients. Els comportaments dels processoses defineixen en els procediments E, Ce, C i R. Alguns d’aquests procedimentses tracten més avall. Queden composats en paral·lel. Les connexions d’entradai sortida de cada procediment queden definides en les respectives sentències dereferència a procediment. Correspon al diagrama de blocs de la figura 2.11..

Aquest exemple exposa solament una forma de definir processos paral·lels. Enaquest un procés es defineix en un procediment, la invocació del qual és una

18

Page 31: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

sentència de referència a procediment. No obstant, existeix una altra opció senseprocediments: la definició explícita en el mateix procés composat en paral·lel.Aquesta opció ha estat usada en el primer exemple, la cua realitzada amb paral-lelisme intern.

L2Channelint

resSortida vers el client

[]o : messagepos

Els missatges surten en el seuordre d’entrada, i sense canvis.El procediment no acaba mai.

parEntrada del client

<>i : messageProbabilitats d’error i de pèrdua

pe: realpl: real

Temps dins el canal i entre caràcterstl: realt: real

Temps d’esperaet: real

pre0 < pe, pl < 1tl, t, et >= 0

algcon

s, r, akr, ake : packeter : nul

| |Emitter

[]s:=E(<>i,<>ake,et)DataChannel

[]r,[]er:=Cel( <>s,pe,pl,tl,t)AckChannel

[]ake:=Cl(<>akr,pl,tl,t)Receiver

[]o,[]akr:=R(<>r,<>er)

Figura 2.12.: Procediment principal del model

L’esquema defineix el canal L2Chanel com un procediment. La seva interfície diuque: valors de tipus message entren del client emissor (no representat explícita-ment) per la connexió d’entrada <>; també que els valors són passats al procésclient receptor (tampoc representat explícitament) per la connexió de sortida []o.El paral·lelisme composa els quatre processos. Cada un d’ells invoca un procedi-ment. Recordeu que en la invocació d’un procediment es passen solament dretsde comunicació; el comportament real del procés es concreta amb sentències decomunicació dins la part algorísmica de cada procediment.

El model del canal de dades el teniu a la part algorísmica del procediment Cel, elqual és tractat més endavant. Transmet missatges de l’emissor al receptor. Incloula possibilitat d’errors de transmissió i de pèrdua de missatges. Les probabilitatsd’error de transmissió i de pèrdues es defineixen en les variables d’entrada pe i p,respectivament. Els temps de retard del primer caràcter d’un missatge es defineixen la variable t. El temps addicional per a cada nou caràcter del missatge esdefineix en la variable t. El temps màxim d’espera del missatge de reconeixementcorrespon a la variable et. Totes aquestes variables són paràmetres.

El diagrama anterior defineix aspectes estàtics solament, o sigui, el graf del di-agrama de blocs de més amunt. El funcionament del canal global L2Channel, osigui, la dinàmica de les comunicacions, quedarà definida dins la part algorísmicade cada un dels procediments. El procediment L2Channel defineix els quatre pro-cessos paral·lels i invoca els quatre procediments. El procediment no acaba maidoncs, com veureu, l’algorisme dels quatre procediments és, bàsicament, unaiteració indefinida. Per tant, cap procediment acaba i el control mai és retornat a

19

Page 32: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

L2Channel.

L’emissor passa paquets al canal de dades per la connexió s. També, rep missat-ges del client emissor per la connexió . Els paquets de reconeixement, positiu onegatiu, entren a l’emissor per la connexió ke, la qual surt del procés ackchan-nel. Els paquets que arriben amb error del canal de dades, datachannel, es mo-delen activant la connexió er, de tipus nul, declarada localment en l’algorismedel procediment L2Channel. Aquestes connexions internes no són visibles fora deL2Channel.

Un paquet té l’estructura següent:

- - - - -

Type: {"ack", "nack", "dta", . . . }

header info: message

L’emissor

L’esquema de la figura 2.13. correspon al process emissor. L’algorisme inicialitzal’estructura d’un paquet dins el procediment constant Mkpacket; suposem queposa a la capçalera els camps necessaris: adreces de l’origen i del destí, tipus"dta", etc...

En l’algorisme, després de rebre un missatge del client i posar-lo al camp info delpacket, entra en una iteració indefinida. El cos d’aquesta iteració comença eme-tent el paquet que conté el missatge rebut. Es fa per la connexió que internaments’anomena se i que a L2Channel es coneix com a s.

La primera selecció del cos de la iteració te dues alternatives, una per acceptar elpaquet de reconeixement per la connexió ack i l’atre per acceptar la fi del tempsd’espera màxim, timeout, del reconeixement. La primitiva delay (timeout) inicial-itza el rellotge-despertador ocult i, si el temps màxim d’espera venç, accepta elmissatge i escull la segona alternativa, la qual passa el control a l’inici del cos dela iteració on es retransmet el mateix paquet.

Doneu-vos compte que la retransmissió succeeix en dos casos, quan no es repcap missatge de reconeixement o quan es rep un missatge de reconeixementnegatiu, "nack". En el cas usual de rebre un paquet de reconeixement propi, enl’alternativa corresponent s’accepta un nou missatge del client emissor.

Model del canal de dades

El diagrama de la figura 2.14. modela el canal de dades. Els paquets entren perla connexió in, la qual correspon a la s de L2Channel. El model té un mecanis-me per acceptar paquets de l’emissor en tot moment; encara que l’emissor no

20

Page 33: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Eint

res[]se : packet

posCada paquet que entra per <>in és enviat per []se,llavors hi ha tres comportaments possibles:1. Es reb un reconeixement per <>ack2. Ee reb un reconeixement negatiu per <>ack.Llavors és enviat novament3. Acaba el temps d’espera del reconeixement.Llavors és enviat novament

par<>in : message<>ack : packettimeout : real

pretimeout és no negatiu.

algloc

e : packetb : packet

Inicialitzacióe := Mkpacket()

Acceptar el primer missatgee.info := <>in

* ∞[]se := e?

true, b := <>ack?

b.type = "ack"e.info := <>in

elseRetransmetre

Nil

true, delay ( timeout )Retransmetre

Nil

Figura 2.13.: Model de l’emissor

21

Page 34: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Celint

res[]out : packet[]err : nul

posCada paquet entrat per <>inTé quatre possibilitats:1. �s sobreescrit2. �s perd amb probabilitat pl3. Aarriba amb error,amb probabilitat pe x (1-pl)4. Aarriba correctament,amb probabilitat (1-pl)x(1-pe)

par<>in : packetProbabilitats d’error i de pèrdues

pe: realpl: real

Temps de transmissió del primer caràcter i entre caràcterstl: realt: real

pre0 =< pe, pl =< 1

algvar

p : packetAcceptar el primer paquet

p := <>in

* ∞?

true, p := <>inEl paquet actual ha estat sobreescrit

nil

true, delay ( tl+t*length(p) )?

randTrue(pl)Pèrdua

nil

else?

randTrue(pe)Error

[]err

elseArribada correcta

[]out := pAcceptar un paquet nou

p := <>in

Figura 2.14.: Model del canal de dades

22

Page 35: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

envia un segon paquet mentre no hagi rebut el missatge de reconeixement delprimer. El banc de proves ha de servir per detectar tot tipus d’error. Per exemple,penseu que l’emissor estigui mal programat i envia paquets abans de rebre elscorresponents reconeixements. Llavors, gràcies al mecanisme anterior, el canalels acceptaria i així podem posar, en el canal de dades, indicadors d’aquest error,per adonar-nos-en.

El canal de dades té dues connexions de sortida. La out, per enviar al receptorels paquets sense error, i la err, per indicar-li que un paquet arriba amb error.En aquest últim cas és suficient el sincronisme de la comunicació, el qual faràentrar al receptor en el punt de control que actua quan rep un paquet erroni.Fixeu-vos com les dues comunicacions de sortida són guardes d’una selecció decomunicacions. Tant aquestes dues connexions com l’anterior són declarades ala interfície del procediment Cel.

L’estructura principal de l’algorisme és similar al de l’emissor: una iteració in-definida, el cos de la qual és una selecció de comunicacions de dues alternatives.La primera permet que el canal accepti paquets de l’emissor en tot moment; aixíes duu a terme el mecanisme exposat més amunt. En aquest cas, el delay de lasegona alternativa modela el temps de transmissió. Quan l’emissor esta ben pro-gramat, no envia un nou packet al canal de dades fins no rebre el reconeixementi, per tan, s’escull la segona alternativa.

El punt de control immediatament posterior al delay correspon a l’arribada delpaquet al receptor. Hi figura una selecció normal amb dues alternatives seguida,en seqüència, per una comunicació d’entrada. Aquesta comunicació accepta unnou packet de l’emissor quan el paquet anterior ja ha estat processat pel canalde dades.

La primera alternativa modela la pèrdua d’un paquet. La probabilitat de pèrduaés pl. El modelat de probabilitats amb el procediment randTrue és exposat breu-ment en l’apartat següent. La segona alternativa modela l’arribada dels paquetsque no han estat perduts pel canal de dades. Com es veu, els paquets no perdutsarriben amb error amb probabilitat pe.

Modelat de probabilitats

El modelat de probabilitats és un tema important i extens que aquests apunts nopoden tractar. Es basa en procediments bàsics que donen nombres aleatoris ambfunció de densitat uniforme. En l’exemple del canal de dades aquesta funció bàsi-ca és nƒdst(m, ), la qual suposem existent. Al cridar-la ens dóna, al retornar,un nombre aleatori entre m −

2 i m +

2 amb igual probabilitat. Amb funció de

densitat uniforme entre m −2 i m +

2 . Podem dir que nƒdst(m, ) val aquestnombre. Al cridar aquest procediment molts cops, els nombres que ens dóna sóndiferents, però estan dins l’interval anterior amb equiprobabilitat.

En el procediment randTrue del diagrama, els paràmetres de nƒdst(m, ) sónm = 0,5 i = 1. Per tant, els nombres aleatoris que retorna estan uniformementdistribuïts entre 0 i 1.

Al al ser 0 ≤ p ≤ 1, p sempre estarà dins l’interval dels nombres aleatoris quedóna unifdist. Llavors, la desigualtat nƒdst(0.5,1) < p, i la variable b resultatde randTrue, seran certes amb probabilitat p.

23

Page 36: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

randTrueint

resb: Boolean

posb cert amb probabilitat p

parp: real

pre0 =< pp =< 1

algb:= (unifdist(0.5, 1) < p)

Figura 2.15.: Procediment booleà per generar cert amb probabilitat p

Els altres procediments

Faltaria donar els procediments del receptor i del canal de reconeixements deretorn. Us animem a fer-los vosaltres. Heu de fer-los de manera que treballin béamb els altres, que no hi hagi atur indefinit. Totes les comunicacions han de podersincronitzar.

El receptor R, quan rep un paquet sense error, emet el reconeixement positiu alcanal de retorn C i passa el missatge corresponent al client receptor. En cas derebre un paquet amb error ha d’enviar un paquet de reconeixement negatiu a C.Podeu fer un canal de retorn més senzill que el canal de dades: sense pèrdues nierrors.

Finalment, tots els procediments, amb inclusió del L2Channel, poden posar-sedins la part prc d’un mòdul (exposat a l’apèndix). Hi hauria d’haver un procedi-ment principal que definís els dos clients i els composés en paral·lel amb el canalglobal L2Channel.

El problema dels filòsofs

El problema dels cinc filòsofs és clàssic dins el camp de la programació concur-rent. Per tant, és inexcusable la seva presentació. En comptes del número cincusarem el dos. Ja és suficient per tenir problemes. Tenim un sistema tancat ambdos filòsofs i dues forquilles. Un filòsof duu a terme solament dues activitats: pen-sar i menjar. Ho fa alternativament i iterativa, per sempre (iteració indefinida).Com mostra la figura 2.16., per menjar hi ha una taula rodona al menjador, ambdues cadires i dues forquilles al voltant del plat de menjar, situat al bell mig de lataula. Al començament, tota cadira té dues forquilles damunt la taula a la dretai esquerra de la cadira, preparades perquè, si ve un filòsof i seu per menjar, lespugui agafar.

Tot filòsof té la seva cadira. Per menjar, seu; llavors necessita les dues forquilles.Si són lliures les agafa abans de menjar, primer una i després l’altra. Solamentquan té les dues pot menjar. Quan ha acabat de menjar deixa les dues forquillesi surt del menjador per continuar pensant.

Si al voler menjar un filòsof troba una de les seves dues forquilles agafada pel veí,espera fins que és alliberada, quan el company acaba de menjar (en temps finit).

24

Page 37: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

P2

F1

P1

F2

Figura 2.16.: El sistema: dos pensadors, dues forquilles i menjar

Mai podem prendre una forquilla quan la té un filòsof. Diem, en aquest cas, queel sistema és no preemtiu (non preemtive).

Tal com mostra la figura 2.17., modelarem el sistema amb processos comuni-cants, amb connexions síncrones de tipus Nil. Cada forquilla serà un procés (F1 iF2) i cada filòsof també (P1 i P2). Les connexions modelen els successos d’agafar(T, take) i de deixar (L, leave) forquilles. Per exemple, la pTj modela el succés enel qual el filòsof agafa la forquilla j. També la pLj el corresponent al filòsof deixant la forquilla j. La direcció de la comunicació no té cap importància, doncsel rendez-vous simple és totalment simètric.

F1

P1

F2

P2

p1T1p1L1 p2T1

p2L1

p2T2p2L2p1L2p1T2

Figura 2.17.: Model amb quatre processos i vuit connexions

La figura 2.18. mostra el model. Fixeu-vos en el comportament dels filòsofs, P1 iP2. Solament ens interessen els sincronismes; les activitats de pensar i menjar lesmodelem amb un nil. Observeu els processos que representen el comportamentde les forquilles, F1 i F2. Tota forquilla està oberta a que l’agafi P1 o P2, però uncop agafada per un, solament espera a que l’alliberi.

25

Page 38: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

algcon

p1T1, p1L1, p1T2, p1L2: Nulp2T1, p2L1, p2T2, p2L2: Nul

| |Filòsofs

| |P1

* ∞P1 pensa

NilP1 vol menjar

P1 agafa les forquilles[]p1T1[]p1T2

P1 menja pròpiamentNil

P1 deixa les forquilles[]p1L1[]p1L2

P2

* ∞P2 pensa

NilP2 vol menjar

P2 agafa les forquilles[]p2T2[]p2T1

P2 menja pròpiamentNul

P2 deixa les forquilles[]p2L1[]p2L2

Label 1...

Label 1Forquilles

| |F1

* ∞?

true, <>p1T1<>p1L1

true, <>p2T1<>p2L1

F2

* ∞?

true, <>p1T2<>p1L2

true, <>p2T2<>p2L2

Figura 2.18.: Model del sistema expressat en PADD

26

Page 39: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Hem definit que P1 agafi primer F1 i P2 agafi primer F2, les forquilles de les sevesdretes, respectivament. Aquest sistema no és absent de bloqueig. En altres pa-raules, és possible que els dos filòsofs es quedin aturats per sempre. Penseu enel cas on P1 té F1 i P2 té F2. P1 espera F2 (comunicació per p1T2 pendent) i P2espera F1 (comunicació per p2T1 pendent), però en aquest estat F1 solamentespera comunicar per p1L1 (alliberament de F1) i F2 solament per p2L2. Capd’aquestes dues comunicacions podrà donar-se mentre els filòsofs no acabin demenjar, però resulta que esperen eternament per començar a fer-ho.

Per evitar aquest possible bloqueig podem intercanviar l’ordre de les comunica-cions [ ]p2T2 i [ ]p2T1 a P2. Comproveu que, llavors, el sistema no entra maien l’estat de bloqueig.

2.5 Resum

Per construir models de sistemes distribuïts cal una notació de modelat. Els mo-dels serveixen per analitzar el comportament del sistema abans de tenir-lo ope-ratiu. Aquesta anàlisi es fa sobre el model, tant fent-lo córrer simulant l’execuciódel sistema com, també, verificant el model. Per tant, primer de tot hem d’apren-dre a modelar.

Amb aquest objectiu, aquest capítol ha introduït la notació de modelat PADD,la qual integra les sentències més usades en les notacions de modelat actuals:paral·lelisme, operacions de comunicació, selecció de comunicacions. La comuni-cació fonamental entre processos paral·lels és la que sincronitza el procés emissori el receptor per la connexió. Totes aquestes sentències s’han exposat en aquestcapítol.

La noció de procediment modular també s’ha exposat, com a extensió del pro-cediment de la programació seqüencial, amb l’objectiu d’usar-lo en models ambparal·lelisme explícit. Hem vist com aquest tipus de procediment pot definir laseva comunicació amb processos paral·lels amb connexions i/o amb variables amemòria. El primer cas, en el context de sistemes pròpiament distribuïts. Enel segon cas, per sistemes amb memòria compartida; preparant-nos així pelscapítols següents. El procediment modular és, doncs, un element de modelat in-tegrador de sistemes distribuïts i sistemes amb memòria compartida.

Tots els elements citats anteriorment han estat aplicats en exemples concrets.Primer, s’ha vist com modelar una cua d’ítems de mida finita. S’ha modelat dedues formes diferents: amb i sense paral·lelisme intern. En el primer cas, ca-da element de la cua és guardat en un registre, el qual es comunica amb elsregistres veïns; aquest model s’ha expressat de dues formes diferents, en unad’elles el nombre de registres és un paràmetre. El model que no usa paral·lelismees fa en funció d’una cua seqüencial expressada com a tipus abstracte de dades.

El segon exemple ha estat un protocol de comunicació d’enviament i espera. Es-tà format per quatre processos composats en paral·lel: l’emissor, el receptor, elcanal de dades i el canal de retorn de reconeixements de recepció.

27

Page 40: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Finalment s’ha explicat un model, totalment distribuït, del clàssic problema delsfilòsofs; no s’usa cap variable. En ell, les comunicacions per connexions modelenels successos de demanar, adquirir i alliberar les forquilles per part dels filòsofs.

2.6 Problemes

Problema 2.1En un sistema multiprocessador amb memòria compartida, amb temps unitariper a les operacions suma-assignació ( := b+c), multiplicació-assignació ( :=b∗c), i temps d’accés a memòria negligible, es demana transformar el programa

algExemple de càlcul aritmètic seqüencial

locx, y, v, w, z: real

x:= i + gw:= c * dy:= w * xv:= a * bz:= v + y

en un altre programa que realitzi el mateix càlcul, però amb paral.lelismeexplícit. El temps d’execució del nou programa ha de ser mínim, per tant had’usar-se el màxim paral.lelisme possible.

Solució Les restriccions a la paral.lelització són les dependències de dadesexistents.

algVersió equivalent paral.lelitzada

| |

| |

x:= i+g w:= c*dy:= w*x

v:= a*b

z:= v+y

Observeu com l’última sentència depèn de les que calculen i y, per tant en elnou programa es duu a terme després del paral.lelisme dels dos processos queacaben amb les assignacions que calculen les dues variables. Això també escompleix en el cas de la sentència y :=∗. El temps de càlcul resultant és de3 unitats de temps.

28

Page 41: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Problema 2.2()- Si PA, PB i PC representen les abstraccions PADD dels segments de pro-grama DLX Segment A, Segment B i Segment C, respectivament, representeul’abstracció PADD del segment:

. . .ADD r1, r2, r3 sumaBNEZ r1, b branch non-equal zero—————Segment A—————J c salt incondicional

b: —————Segment B—————

c: —————Segment C—————. . .

Solució

. . .?

r2 + r3 = 0PA

ElsePB

PC. . .

Problema 2.3Doneu el programa d’instruccions del DLX que és equivalent a l’abstracciósegüent:

ra:= 0

* ri > 0

ra:= ra + Ma(ri)ri:= ri - 1

end: ...

on r i r són registres i M és una adreça de memòria.

Solució

ADD ra, r0, r0loop: BEQZ ri, end

LW rm, M(ri)ADD ra, ra, rmSUBI ri, ri, 1J loop

end: . . .

29

Page 42: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Problema 2.4L’esquema següent ha de modelar un pas a nivell en un encreuament de car-retera amb una línia ferroviària.

varbarrera: {pujada, baixant, baixada, pujant}tren: {lluny, prop, creuant}

contrenentra, trensurt: Nilbaixa, puja: Nil

| |Tren

* ∞Lluny

tren:= llunydelay(tlluny)

Aproximació[]trenentratren:= propdelay(taproximació)

Encreuamenttren:= creuantdelay(tcreuant)[]trensurt

Controladorcompleteu

. . .

Barrera

* ∞Pujada

barrera:= pujada<>baixa

Baixantbarrera:= baixantdelay(tbaixada)

A baixbarrera:= baixada<>puja

Pujantbarrera:= pujadelay(tpuja)

Es vol simular el comportament del controlador electrònic de la barrera. Elprocés Tren modela el comportament del tren, el qual pot estar en tres estats:lluny, prop i creuant. La variable que correspon a l’estat és tren. El procés Bar-rera correspon a la barrera, la qual pot estar en quatre estats: pujada, baixant,baixada i pujant. La variable corresponent és barrera.

Completeu el model del controlador a fi que mantingui l’invariant:

: (tren = crent)→ (brrer = bd)

però maximitzi el temps durant el qual la barrera està pujada.

Les connexions trenentra i trensurtmodelen els sensors que informen al contro-lador que el tren entra a la zona d’aproximació i que l’últim vagó surt de la zonade encreuament. Les connexions puja i baixa modelen les ordres que dóna elcontrolador per pujar i baixar la barrera.

Les variables de temporització t ... se les suposa globals a tots els processos isón inicialitzades amb les restriccions

taproximació > tbaixada i tlluny > tpuja

30

Page 43: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Solució

Controladortbaixar:= taproximació - tbaixada

* ∞<>trenentradelay(tbaixar)[]baixa<>trensurt[]puja

Problema 2.5Un procés emissor Em envia un missatge a un procés receptor Re per la con-nexió c, de tipus Missatge. A continuació, Em espera un reconeixement per laconnexió ack de tipus Nul durant tout unitats de temps. Quan expira aquesttemps torna a enviar el mateix missatge. Quan rep el missatge de Em, Re li en-via un missatge de reconeixement per ack, però amb probabilitat pack. Quan noli envia, simplement no fa res. Els dos processos buclen per sempre en aquestesactivitats. Completeu el diagrama

| |Em

ve:= nou_missatgeCompleteu

. . .

ReCompleteu

. . .

a fi que modeli els dos processos descrits. Suposeu declarades les connexions iles variables locals ve, local a Em, i vr, local a Re, de tipus missatge. Suposeutambé disponible el procediment booleà randT(p), el qual retorna cert amb pro-babilitat p. La sentència ve:= nou_missatge posa un nou missatge a ve. Podeutornar-la a usar si cal.

Problema 2.6Completeu el model del protocol de parada i espera de la Secció 2.4. Concreta-ment heu de modelar el receptor i el canal de retorn segons les indicacions del’apartat Els altres procediments de la Secció 2.4. Heu de fer un procedimentper a cada un dels dos processos. Feu-los de manera que les operacions de co-municació quedin acoblades amb les que ja existeixen dins dels procedimentsexplicats en la secció.

Problema 2.7Doneu el procediment modular receptor. El seu comportament ha de ser elsegüent: quan no està tractant cap missatge, ha d’estar atent a rebre missatgesdels processos P1, P2 i P3 que poden enviar-li contínuament per les connexionsdeP1, deP2 i deP3, respectivament, de tipus Missatge. Tot missatge rebut ha deser tractat en funció del veí que li ha passat. Suposeu fet i useu el procedimentr:=tracta(m,vei) per tractar el missatge m, de tipus Missatge rebut del veí , detipus 1..3. La variable r, de tipus RTract, guarda el resultat del tractament, el

31

Page 44: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

qual ha de ser enviat, per la connexió aCol de tipus RTract, a un procés col·lectorabans d’acceptar cap nou missatge. Tots els processos esmentats estan connec-tats en paral·lel.

Problema 2.8En l’esquema,

conc1,c2,endInf1,endInf2:nulinf1,inf2:Integer

| |E

varv:Integer

* ∞| |

[]c1 []c2completeu

. . .usem la informació rebuda a vcompleteu

. . .

P1var

val1:Integer

* ∞val1:=nova informaciócompleteu

. . .

P2var

val2:Integer

* ∞val2:=nova informacióno cal que completeu.

. . .

un procés E demana cíclicament a dos veïns en paral·lel, P1 i P2, que li passininformació. Ho fa per les connexions c1 i c2. A continuació, espera la primeraresposta (solament una), de P1 o de P2, per les connexions inf1 o inf2 respec-tivament. La deixa a la variable . Les connexions endInf1 i endInf2 serveixenperquè E indiqui a P1 o a P2, respectivament, que E ja ha agafat una resposta.Completeu les parts indicades de l’esquema anterior de manera que, complinttot l’anterior, cap procés pugui quedar aturat indefinidament.

32

Page 45: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

3 Sistemes amb memòria compartida

3.1 Motivació

El tema d’aquest capítol és d’aplicació a forces camps dins el disseny i desenvolu-pament de sistemes generals, encara que el seu marc de fons siguin els multipro-cessadors amb memòria compartida. El tema s’anomenava programació concur-rent quan l’escenari era un sistema monoprocessador. S’ha anat generalitzant,amb el temps, a multiprocessadors i altres sistemes.

Un escenari real d’aplicació està format per programes màquina accedint a me-mòries compartides i corrent sobre processadors diferents. Es treballarà ambmodels d’aquesta realitat. El tractament és aplicable, amb alguna extensió, asistemes distribuïts, sense memòria compartida. S’exposa en una secció d’aquestcapítol. En tota situació on es programa en llenguatges d’alt nivell, hi ha uncompilador i un assemblador que els tradueixen a codi màquina seqüencial. Elsistema operatiu sobre el qual corren aquests també està format per instruccionsmàquina. S’està també en un escenari de programes d’instruccions màquinacorrent sobre multiprocessadors, amb memòria compartida.

La problemàtica tractada aquí, i les solucions, són adients per a molts camps:sistemes monoprocessador i multitasca, programació sobre computadors multi-processador, modelat i disseny de hardware digital, sistemes operatius, xarxesde comunicació, etc. Si esteu treballant en algun d’aquests temes, amb tecnolo-gies concretes, podreu fer el pont mental entre les vostres situacions reals i elnivell de modelat en què el capítol treballa; i amb el qual tindreu un mètoded’anàlisi precís dels vostres sistemes. Revisem aquestes àrees:

1. Sistemes monoprocessador i multitasca. En ells el sistema operatiumultiplexa un sol processador entre més d’una tasca d’aplicació. Exemplesd’aquestes tasques són els processos i els threads dels sistemes operatiusactuals. Les tasques són modelades com processos composats en paral·lel,els quals tenen accés a variables a memòria compartida, corrent totes en elmateix processador.

2. Programació sobre computadors multiprocessador. Aquí es té mésd’un processador, que pot accedir a la memòria compartida entre ells. Cadaprocessador pot fer córrer tasques sobre un sistema operatiu. El sistema pottenir memòries cau, les quals són transparents. Com en l’escenari anterior,aquest segon escenari es modela amb processos paral·lels amb variablescompartides entre ells.

3. Modelat i disseny de hardware digital. En la major part de dissenystenim registres i altres recursos hardware, els quals han de ser accedits perles diverses parts del circuit. Per exemple, el disseny electrònic d’alt nivell,on un sistema electrònic és vist com un conjunt de processos o subsistemesque treballen en paral.lel. Com exemple d’aquest escenari tenim el mode-lat de planificadors de processadors superescalars, el qual es pot fer ambprocessos paral·lels accedint a l’estat de planificació mantingut a variablescompartides.

33

Page 46: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

4. Sistemes operatius. De fet, l’anàlisi rigorós de processos paral·lels ambmemòria compartida, la concurrència, va ser iniciat amb l’objectiu de dis-senyar i organitzar elegantment els sistemes operatius multitasca i mono-processador, per fer-los de funcionament clar i segur.

5. Xarxes de comunicació. Per modelar-les és molt adient i pràctic ferservir variables a memòria compartida, a més de connexions.

6. Altres. Sistemes de telecontrol en temps real, sistemes de bases dedades, protocols de telecomunicació, etc.

A fi de reduir l’esforç, en aquest capítol es tracta la problemàtica comuna atotes les aplicacions esmentades. Es fa de forma simplificada o abstracte, elqual vol dir eliminar molts dels detalls que són específics a cada una d’elles. Esposa especial èmfasi en la verificació. Amb aquest fi, el funcionament es defineixamb propietats expressades en lògica de predicats i es demostra si el model lessatisfà, o no. Es treballa sobre una màquina de transicions finites (MTF), la qualés associada sistemàticament al model.

3.2 Suposicions de base i validació de models

Introducció

A fi de poder analitzar i raonar amb un cert rigor sobre tots els sistemes en-globats a la programació concurrent, és necessari fixar una sèrie d’hipòtesis decomportament dels programes concurrents. A aquest conjunt se l’anomena Mo-del Abstracte de la Programació Concurrent, o més senzillament, Abstracció dela Programació Concurrent. Aquest model representa una forma d’interpretar laconstrucció de paral.lelisme vista en el capítol anterior. Un conjunt de processosconnectats en paral.lel P1, P2, ... ,PN, els quals poden accedir a variables globals,com mostra la figura 3.1..

VARVariables compartides.

v1, v2, ... ,vmProcessos en paral.lel.

| |P1

Primer process.. . .

P2Segon process.

. . .

... PNN-esim process.

. . .

Figura 3.1.: Processos paral·lels amb variables compartides

Per poder dur a terme l’execució dels processos hi hauran processadors, al menys,un. L’ordre temporal d’execució de les parts dels processos l’anomenarem cal-endari d’execució (schedule). La part del sistema que determina el calendari

34

Page 47: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

P2P1

n

M

r1 r2

Arq1 rq2

ack1 ack2

sel

Figura 3.2.: Dos processadors amb memòria compartida i àrbitre

l’anomenarem planificador temporal (scheduler). La figura 3.2. representa unhardware real amb dos processadors.

Suposarem que els processadors accedeixen a un bus, el de la memòria compar-tida, M. Aquest bus tindrà un protocol d’accés basat en un àrbitre del bus, A. Totprocessador ha de demanar permís a l’àrbitre quan vol usar el bus. L’àrbitre ésun circuit que solament deixarà usar el bus a un processador en cada cicle. Elsaltres hauran d’esperar. Per tant, si dos processadors volen dur a terme simultà-niament una operació sobre la memòria compartida, per exemple els dos volenfer una càrrega (instrucció LOAD), l’àrbitre deixarà fer-ho només a un. Quan hagiacabat el primer, llavors deixarà fer la càrrega al segon. Igualment ocorrerà ambinstruccions d’emmagatzemament (STORE).

L’àrbitre és, de fet, un planificador, a un primer nivell, ja que determina l’ordred’execució. La programació concurrent pretén estudiar propietats que valen pera qualsevol calendari concret d’execució, resultat de l’actuació de l’àrbitre. Comhem dit, l’àrbitre tan sols posa limitacions relatives a l’ús del bus de memòria.Suposarem que l’execució d’operacions sobre memòria dels processadors podràseguir qualsevol ordenació possible, compatible amb les limitacions imposadesper l’àrbitre. A això en direm model d’entrellaçament d’operacions atòmiques.

Com a conseqüència, l’abstracció de la programació concurrent que estudiaremconsisteix en els principis següents: atomicitat, seqüencialitat, entrellaça-ment, no-determinisme. Els quals són exposats a continuació.

35

Page 48: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Suposicions i nocions de base

Atomicitat

Els processos estan formats per parts, l’execució de les quals és indi-visible. Per exemple, l’execució de les instruccions dels processadors és indivisi-ble. Per tant, les considerarem operacions atòmiques. Això val especialment pera les instruccions d’access a memòria, tant LOADs com STOREs.

En general, al considerar processos concurrents i haver de raonar sobre ellssempre hem de definir quines són les seves parts indivisibles. Per deduir qual-sevol propietat hem de tenir ben clar on és l’atomicitat, o quina atomicitat estemsuposant. Altrament, és impossible raonar.

Exemple

Suposem un procés que incrementa la posició n de memòria:

n := n + 1,

La seqüència d’operacions atòmiques serà, per exemple:

LOAD r1 nADDI r1 1STORE r1 n,

Les operacions atòmiques reals són les tres instruccions màquina.

Atomicitat en la realitat

Correspon a les instruccions màquina. S’executen sense divisió, per cons-trucció del hardware. No cal considerar parts de l’execució de les instruccions,doncs cap procés pot veure els canvis interns al final d’aquestes parts.

Atomicitat en el model

Sovint és còmode suposar que les sentències del model s’executen atòmi-cament. Això fa més senzills els raonaments. En l’exemple, la sentència n :=n + 1 seria considerada sense parts. No obstant, haurem de justificar aquestasuposició, la qual no sempre correspon a la realitat.

Seqüencialitat

Una vegada escollida l’atomicitat, suposarem també que l’execució d’un procéssobre un processador equival a una seqüència d’operacions atòmiques,les instruccions en l’exemple esmentat abans. De fet, això correspon al que jasabem de programació imperativa i seqüencial.

36

Page 49: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Exemple

En l’exemple anterior, el procés executa una seqüència d’operacions atòmiques,les tres instruccions màquina o la sentència n := n+ 1, depèn del nivell d’atomi-citat que considerem (real, model). En l’últim cas, tindríem una seqüència delongitud d’un sol àtom.

Entrellaçament

L’execució d’un sistema de processos concurrents (paral.lels) serà vistacom una seqüència obtinguda entrellaçant les parts atòmiques de cadaprocés. Serà, doncs, un entrellaçament de les operacions atòmiques. Això sí,respectant l’ordre relatiu entre les operacions atòmiques d’un mateix procés.

Exemple

El diagrama de la figura 3.3. representa dos processos com l’anterior, connec-tats en paral.lel:

Paral.lelisme Simple.VAR

n: integern:= 0| |

P1VAR

r1: integern:= n + 1

LOAD r1 nADDI r1 1STORE r1 n

P2VAR

r2: integern:= n + 1

LOAD r2 nADDI r2 1STORE r2 n

Figura 3.3.: Model de dues sentències en paral·lel

S’han posat com a refinament de les sentències les instruccions màquina corres-ponents. El següent entrellaçament és fruit d’alternar les instruccions dels dosprocessos.

LOAD r1 n+ 1 LOAD r2 n+ 2 ADD r1 1+ 3 ADD r2 1+ 4 STORE r1 n+ 5 STORE r2 n

Si suposem atomicitat a nivell de sentència del model, llavors solament hi ha dosentrellaçaments possibles, segons comenci primer P1 o no.

37

Page 50: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

No-determinisme

L’entrellaçament de les parts atòmiques de cada procés concurrent ésarbitrari, no està determinat. És no-determinista. Qualsevol ordre relatiu de lesoperacions atòmiques de cada procés és vàlid sempre que respecti l’ordre se-qüencial de les operacions de cada procés. Les propietats i solucions que veuremhauran de funcionar o valdre per a tots els entrellaçaments possibles. Maiparlarem d’un scheduler o d’un pla temporal, o entrellaçament, concret. Així, elsraonaments valdran per a tots els possibles planificadors.

Exemple

Continuant amb l’exemple d’abans, suposem ara l’execució concurrent de dosprocessos iguals que l’anterior, on n és a memòria compartida i el seu valorinicial és 0. Si suposem atomicitat a nivell d’instrucció màquina, no tots els en-trellaçaments possibles acaben amb el mateix valor de n a memòria compartida.Si l’entrellaçament és: una instrucció de P1 seguida d’una instrucció de P2, i aixísuccessivament, com més amunt, el valor final de n és 1. En canvi, si primer esduu a terme tot el procés de l’esquerra, seguit, i quan ha acabat es duu a termetot el de la dreta, el valor final de n és 2.

Zones crítiques

En l’exemple anterior, l’indeterminació del valor final és deguda a que dos pro-cessos actualitzen independentment la mateixa posició de la memòria comparti-da, n. L’indeterminació del valor del resultat, naturalment, no és desitjada. El quevolem és que tots els increments siguin comptats. Per tant, el resultat correcte,en l’exemple dels dos processos anteriors, seria 2. La solució passaria per feractuar un procés després de l’altre. Com ho farem?

Més endavant introduirem primitives de sincronització per solucionar el problema.De moment donem nom a la situació problemàtica: dos processos escriuen sobrela mateixa variable. Aquest accés concurrent és perillós i en direm zona crítica.

Una zona crítica és la part del procés paral·lel (concurrent) que accedeixa una variable que altres processos concurrents també hi accedeixen.On, al menys, un procés escriu o modifica la variable compartida.

En l’exemple, la sentència n := n+1 és la zona crítica, amb les instruccions en lesque es descompon.

Si tots llegeixen no hi ha cap problema, el resultat no depèn, llavors, del’ordre relatiu de lectures.

S’hauran d’identificar les zones crítiques dels processos concurrents i fer que maiexecutin instruccions entrellaçades de les seves zones crítiques. O sigui, s’hauràd’eliminar la possibilitat d’execució d’aquells entrellaçaments que duen a resul-tats indesitjats. Això es tradueix en el fet que els processos executin la zona críti-ca un després de l’altre, seqüencialitat entre zones crítiques. Solament un procéspot estar en un moment donat dins la zona crítica. Com que no permetrem certsentrellaçaments estarem restringint l’ordre d’execució. En realitat, estarem cre-ant un altre planificador, per damunt de l’àrbitre de bus. Ja ho anirem veient iconcretant.

38

Page 51: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Recursos

La problemàtica vista fins aquí sobre l’exemple d’una variable compartida esdóna en moltes altres situacions. Per això, parlarem de recurs en comptes devariable, per referir-nos a tots els casos.

Generalitzant, una zona crítica és tota part de programa que accedeix a un recursque altres programes, concurrents amb ell, també poden accedir-hi, modificant-lo. No solament una variable compartida és un recurs. Per exemple, l’accésa un disc és una zona crítica quan més d’un procés vol escriure-hi. Un discés també un recurs. L’accés a una impressora, també: no és desitjable quesurtin entrellaçats els llistats produïts per dos programes concurrents. Hem defer escriure primer a un i després a l’altre. L’impressora és vista com a recurs.Una pàgina de memòria és un recurs, molts processos o tasques d’aplicaciódemanen pàgines al sistema operatiu, per escriure-hi.

En el cas del hardware, un bus és un recurs, solament un processador pot usar-loen tot instant. Un registre que pot ser llegit o modificat per diverses parts d’unsistema electrònic digital, també és un recurs.

Amb la informació vista fins aquí, es pot dir que la programació concurrent donaràmecanismes (algorismes) per a la gestió de recursos demanats per un conjunt deprocessos paral.lels; i també mètodes per verificar que les solucions satisfan unescertes propietats. Quines? Com? Es veurà més endavant.

Validació de models

Un model sempre és una simplificació de la realitat. Per tant, abans de raonarsobre un model, un s’ha de preguntar si el que vol resoldre o estudiar en el sis-tema real també té lloc en el model. En altres paraules, és vàlid suposar atomici-tat a nivell de sentència del model? Tenim dos nivells: el model, sobre el qual seràmés fàcil raonar, i el sistema real. L’esquema següent mostra aquests nivells.

Model expressat en PADD. Els àtoms són les sentències.

Sistema real. Els àtoms són les instruccions màquina.

Les solucions i les propietats seran formulades sobre el model. Naturalment,interessa que valguin també pel sistema real. La simplificació del sistema realque el model sempre fa (les sentències són atòmiques), no ha de ser tan burdaque elimini el problema que es vol analitzar i resoldre sobre el model.

En l’exemple d’abans, el model sempre compta bé però el sistema real no. Es diràque el model no és vàlid per raonar. S’ha de recordar que tot raonament es fà su-posant l’abstracció, o suposicions de base, de la programació concurrent (atomi-citat, seqüencialitat, entrellaçament i no-determinisme) on l’atomicitat suposadaés fonamental. L’atomicitat a nivell de sentència del model elimina artificialmentel problema.

39

Page 52: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Partició del conjunt de traces i classes d’equivalència

Una traça equival a un entrellaçament. Observem que pot haver-hi més d’unentrellaçament amb el mateix resultat final. Per exemple, si en un entrellaçamentmovem una instrucció que no faci referència a la memòria compartida, semprerespectant l’ordre relatiu de les instruccions del seu procés, tindrem el mateixresultat final. En l’exemple anterior, l’entrellaçament:

LOAD r1 n+ 1 ADD r1 1+ 2 LOAD r2 n+ 3 ADD r2 1+ 4 STORE r1 n+ 5 STORE r2 n

és el resultat de permutar la segona ( + 1) i la tercera ( + 2) instruccions de latraça alternant allò que hem vist més amunt. El seu resultat final és el mateixque abans: n = 1.

Quan canviarà el resultat final? Solament pot canviar, i no sempre, quan es canvial’ordre de lectures (LOADs) i escriptures (STOREs) de processos diferents, doncsla seqüència determinada per les instruccions d’un mateix procés no pot canviarmai. També si es canvia l’ordre d’escriptures de processos diferents. Per exemple,l’entrellaçament:

LOAD r1 n+ 1 ADD r1 1+ 2 STORE r1 n+ 3 LOAD r2 n+ 4 ADD r2 1+ 5 STORE r2 n

canvia el resultat a 2. Si intercanviem l’ordre de la tercera instrucció (STORE) i laquarta (LOAD), queda l’entrellaçament:

LOAD r1 n+ 1 ADD r1 1+ 2 LOAD r2 n+ 3 STORE r1 n+ 4 ADD r2 1+ 5 STORE r2 n

el resultat torna a ser 1. Per tant, com a regla general, el resultat solamentpot canviar entre dos entrellaçaments solament quan tenen ordenaments dife-rents d’instruccions de lectura i escriptura, o d’escriptures a la mateixa variablea memòria compartida.

El conjunt de totes les traces pot ser partit en subconjunts disjunts(classes). Totes les traces de la mateixa classe donen el mateix resultatfinal. Les traces de classes diferents donen resultats diferents.

40

Page 53: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Referències crítiques

Una referència a una variable compartida és crítica si compleix alguna de lescondicions següents:

1. És una escriptura en un procés quan algun procés paral.lel a ell té unalectura o una escriptura sobre la mateixa variable.

2. És una lectura a una variable compartida quan algun procés paral.lel té unaaltra escriptura a la mateixa variable. No ho és si els processos paral.lelstenen lectures solament.

Per tal que existeixi alguna zona crítica ha d’haver-hi alguna referència crítica.

Exemple

En l’exemple d’abans, figura 3.3., totes les referències a la variable compartidan són crítiques. Les dues referències a n en la sentència n := n+ 1 són crítiquesen els dos processos.

Per comprendre la criticitat de l’ordre d’escriptures considereu l’exemple on lessentències n := 1 i n := 2 pertanyen a processos paral.lels. El resultat final de ndepèn de l’ordre d’execució de les dues sentències. Val 1 o 2, segons acabi l’últimel primer o el segon, respectivament. Per tant, quan dos processos escriuen a unavariable compartida, llavors el valor final dependrà de l’ordre d’escriptura.

També pot haver-hi problema quan un procés és lector i l’altre escriptor. L’ordrerelatiu d’ambdues operacions farà que el valor llegit sigui diferent: el d’abans del’escriptura o el posterior.

Processos disjunts

Un conjunt de processos paral·lels són disjunts quan en cap d’ells hi ha unareferència crítica.

En comptes de referències crítiques, es pot formular la disjunció mitjançant elsconjunts de variables llegides i escrites per cada procés de la forma següent:

Un conjunt de processos concurrents

P , = 1..N

amb conjunts de variables d’escriptura i lectura W i R, respectivament són dis-junts quan:

W ∩ Rj = ∅

iW ∩Wj = ∅

on , j = 1..N i 6= j.

Aquestes condicions s’anomenen de Bernstein. La composició en paral.lel delsprocessos que les satisfan no comporta cap perill; mai dóna lloc a cap zona críti-ca. Quan un conjunt de processos satisfan les condicions de Bernstein són disjuntsi no tenen cap referència crítica.

41

Page 54: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Exemple

Per als dos processos

P1def= := b+ c i P2

def= d := e− c

es té que:

W1 = {}, W2 = {d}, R1 = {b, c}, R2 = {e, c}

per tant, les condicions anteriors es compleixen, els processos són disjunts, i no hiha problemàtica d’haver d’introduir mecanismes per aconseguir exclusió mútuaa les zones crítiques.

Les dues formes d’expressar la disjunció de processos són equivalents: si no hi hacap referència crítica, les interseccions anteriors seran buides, i també a l’inrevés.

Construcció de models vàlids

Amb el que hem dit abans, podeu comprendre que per tal que un model siguivàlid, ha de poder donar els mateixos entrellaçaments entre referències crítiquesque en el sistema real.

Per tant, un model és vàlid si té, com a màxim, una referència crítica persentència. Solament així, l’atomicitat de les sentències no impedirà entrellaça-ments que poden donar-se en el sistema real. Tota classe d’entrellaçaments delsistema real estarà representada per una classe del entrellaçaments del model,la qual al menys contindrà una traça.

Per construir un model vàlid haurem d’introduir variables locals auxiliars iexpressar les sentències amb més d’una referència crítica, mitjançantmés d’una sentència, tantes com a referències crítiques tingui la sentència.

Exemple

Per validar el model de la figura 3.3., on les sentències tenen dues referènciescrítiques, introduïm una nova variable per a cada procés i expressem la sumaamb dues sentències.

varn: integer

n:= 0| |

P1var

v1: integerv1:= nn:= v1 + 1

P2var

v2: integerv2:= nn:= v2 + 1

Figura 3.4.: Model vàlid amb dues sentències en paral·lel

42

Page 55: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

L’esquema de la figura 3.4. representa el nou model on, suposant atomicitat persentència, poden donar-se els mateixos entrellaçaments entre referènciescrítiques que en el sistema real. En aquest nou model totes les referències a lavariable n són crítiques, però no hi ha més d’una referència crítica per sentència.Les referències a les variables 1 i 2 no compleixen cap de les condicions decriticitat.

Exercici 3.1Considereu el sistema real modelat amb els dos processos

n := n+ 1 n := n− 1

composats en paral.lel i on la variable compartida n és inicialitzada a zero. Elsistema real està format amb les instruccions màquina corresponents.

()- Doneu les classes d’equivalència de la partició dels entrellaçaments (traces)del sistema real format pels programes màquina corresponents.

(b)- Doneu tots els valors finals possibles de la variable n.

(c)- Si el que es vol és computar la diferència entre el nombre de vegades quecorre el procés de l’esquerra menys el del procés de la dreta, és vàlid el model.En cas negatiu doneu un model que ho sigui.

Exemple de representació a dos nivells

t=1

Mem

0

1

2

r0

r1

r2

0

1

2

r0

r1

r2

b1: LW r3 , t

SUB r3 , r3 , r1

BNEZ r3 , b1

d1: SW r2 , t

b2: LW r3 , t

SUB r3 , r3 , r2

BNEZ r3 , b2

d2: SW r1 , t

J a1 J a2

a1 : ZNC1 a2 : ZNC2

c1 : ZC1 c1 : ZC2

F1

B1

F2

B2

Figura 3.5.: Nivell real del mecanisme dels torns

En la figura 3.5. tenim l’esquema d’un sistema biprocessador amb dos pro-grames màquina expressats en codi assemblador.

En la figura 3.6. hi ha el seu model, a nivell abstracte. Ben aviat explicaremaquest programa, no cal que us hi preocupeu ara. Observeu les correspondèn-

43

Page 56: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

F1

B1

F2

B2

Figura 3.6.: Nivell abstracte del mecanisme dels torns

cies. Fixeu-vos en el valor inicial de la variable t, a memòria compartida, i en elsvalors inicials dels registres de cada un dels processadors. Els registres són localsa cada processador, per tant no creen cap problema. En canvi, les referències ala variable t són crítiques.

Exercici 3.2És vàlid el model de la figura 3.6.? Justifiqueu la resposta. Si no és vàlid, cons-truïu un model que sigui vàlid. El sistema real està representat a la figura 3.5..

Matisacions i reflexions

Atomicitat relativa

Observeu com els processos concurrents s’entrellaçen, en canvi les seves ope-racions atòmiques, no. No es podrà estudiar cap propietat d’un conjunt de proces-sos concurrents si no s’ha definit prèviament quines són les operacions atòmiques,indivisibles. Aquí ho seran les instruccions o bé les sentències, però no semprepoden ser convenients aquestes hipòtesis.

Seqüencialització de la simultaneïtat

En realitat, l’àrbitre actua solament sobre les instruccions que accedeixen a lamemòria compartida. El resultat de la seva actuació serà un ordre concret d’exe-cució d’aquestes operacions. Les altres instruccions no interaccionen entre elles

44

Page 57: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

i poden realment dur-se a terme simultàniament en el temps. Observeu comel model d’entrellaçament suposa que la seva execució serà un entrellaçamentqualsevol, però seqüencial.

Estem, per tant, suposant que no hi ha execució simultània estrictament. Això ésuna hipòtesi que pot no ser interessant en certs casos. Estem fent una simplifi-cació de la realitat per crear un model que ens permeti raonar.

Per justificar aquesta simplificació, podem suposar un rellotge infinitament precísque marca els temps d’acabament de totes les instruccions en una execució paral-lela real. Amb tanta precisió mai dues instruccions acaben en el mateix instant,per tant, tenim sempre un ordre total, el qual està representat per algun delspossibles entrellaçaments del model.

Quan vulguem introduir el temps ho farem inserint tics de rellotge en els en-trellaçaments. Naturalment amb rellotges de precissió finita. Quan entre dostics consecutius hi hagi poques instruccions tindrem una execució amb menysparal.lelisme que quan n’hi hagi moltes, doncs, en aquest últim cas, en el mateixinterval de temps s’executen més instruccions de tots els processos. Sempre ambel mateix rellotge.

Procés, un concepte a nivell de modelat

En aquests apunts, i generalment en la programació concurrent, la paraulaprocés correspon a un concepte del nivell de modelat. En el pla delssistemes reals, segons acabem de repassar, el procés del model correspon (ésmapejat, vegeu el capítol primer) a la tasca d’aplicació (application task), althread, etc. del sistema real.

Encara que aquí s’ha introduït el concepte de procés com a execució seqüenciald’operacions atòmiques, un procés és, en general, l’execució d’un programa, en-cara que aquest programa contingui subprogrames en paral.lel. El concepte deprocés és relatiu també, en el sentit que es pot descompondre en subprocessos,seqüencials i/o paral.lels. O sigui, admetem jerarquies de processos paral.lels.Això ajuda a modelar els sistemes reals. Per exemple, podem tenir processosconcrets d’un sistema operatiu usual i dins de cada un d’ells tenir threads.

3.3 Propietats d’un model

Introducció

Fa poc s’ha dit que la programació concurrent dóna tècniques per verificar pro-pietats dels models, els processos dels quals accedeixen a recursos compartits.Primer, s’han de veure aquestes propietats. Quines són? Aquesta secció intro-dueix un conjunt de propietats prou generals com per ser exigides a qualsevolmecanisme per tal de garantir exclusió mútua a recursos; sigui quin sigui el sis-tema real: sistemes electrònics digitals, sistemes multitasca, sistemes multipro-cessador, etc. Hi haurà altres propietats específiques de cada aplicació que usi

45

Page 58: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

el mecanisme estudiat. Aquí no seran tractades ja que no les ha de complir totsistema.

Esquema i propietats de la solució

Correctesa funcional

Hi ha correctesa funcional quan el programa calcula allò que es vol que calculi,sense error. Per exemple, sempre compta bé, sempre suma bé, etc. Aquestes sónles propietats específiques de cada aplicació i no seran tractades.

Exclusió mútua

És una propietat relativa a les zones crítiques dels processos concurrents delprograma. Es compleix quan és impossible que més d’un procés pugui accedirsimultàniament a les zones crítiques relatives al mateix recurs (variable compar-tida, disc, impressora, etc.). Sols un procés, com a màxim, dins una zona críticaen qualsevol moment.

Absència de bloqueig

A fi de garantir exclusió mútua haurem de fer esperar els processos quan mésd’un vol accedir a un recurs. Hem de vigilar de no fer-los esperar per sempre,seria una forma massa trivial de garantir exclusió mutua.

Bloqueig és aquell estat d’un programa concurrent en què un subconjunt delsseus processos no progressa ni progressarà mai més. Els processos d’aquestsubconjunt poden estar simplement aturats o constantment demanant un permísque mai no tindran.

Una de les primeres propietats que ha de tenir un sistema concurrent és l’absèn-cia de bloqueig. Hi ha dos tipus de bloqueig, el viu i el mort.

Bloqueig viu (livelock)

Quan els processos que no progressen estan buclant per sempre. És el livelock,en anglès. Aquest tipus de bloqueig ocupa els processadors, els quals duen aterme una activitat inútil.

Bloqueig mort (deadlock)

Quan els processos que no progressen estan aturats, per tant no ocupen capprocessador. Aquest bloqueig s’anomena usualment abraçada mortal, deadlocken anglès.

46

Page 59: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Equitativitat (fairness)

Correspon a una propietat global. Molt informalment, un programa és equitatiu,respecte un recurs, quan tot procés del conjunt que demana el recurs se li dónaen condicions semblants als altres. Hi ha moltes maneres de formular aquestapropietat, depenent, per exemple, de la forma de demanar el recurs (permanent-ment, de tant en tant, etc. ). Per exemple, pot formular-se amb el criteri FIFO: esdóna el recurs en l’ordre en què és demanat.

Fam individual (starvation)

Propietat d’un procés concret. Un procés passa fam quan no pot accedir mai alrecurs que demana. Mentre que l’equitativitat és una propietat d’un conjunt deprocessos; la fam fa referència a un sol procés.

Si un sistema és equitatiu, cap procés individual passa fam. En canvi, si no ésequitatiu, pot ser que algun procés passi fam, o també que cap procés en passi.Per exemple, si dóna el recurs a un procés solament quan l’hi ha donat tres copsa un altre, llavors el sistema no és equitatiu, però tampoc passa fam cap procés.

Classificació de les propietats

Propietats de seguretat (safety)

Són aquelles que diuen que un programa no entra mai en un estat dolent. Sónpropietats que sempre han de ser certes. Ho són, per exemple, el mantenimentde l’exclusió mútua, l’absència de bloqueig mort (deadlock) i la correctesa fun-cional parcial (si el programa acaba, llavors el resultat és correcte). Si el sistemacompleix aquest tipus de propietat, tota traça o entrellaçament finit, el qualinclou l’estat inicial, ha de complir també la propietat.

Propietats de vivacitat (liveness)

Aquestes propietats diuen que el programa entra eventualment en un estatdesitjat. El fet que l’estat desitjat és assolit, eventualment ha de ser cert. Hoés l’absència de fam d’un procés respecte al recurs: eventualment se li’n dóna,si el demana. Ho és l’absència de bloqueig viu (livelock), ja que implica queeventualment el programa entra en un estat en què un dels processos surt d’unazona determinada. També ho és la correctesa funcional total (el programa acabaeventualment i llavors el resultat és correcte). Si el sistema compleix aquesttipus de propietat, tota traça finita que no compleix la propietat pot sercontinuada a una traça que la compleix. Això vol dir que tot entrellaçamentde durada un nombre finit d’estats que no compleix la propietat, ha de poder sercontinuat a un entrellaçament de més durada que compleix la propietat.

47

Page 60: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

3.4 La màquina de transicions finites (MTF) d’unmodel

Introducció

La màquina de transicions finites (MTF) està formada per un conjunt d’estats iun conjunt finit de transicions. El nombre d’estats pot ser infinit. És introduïda enaquesta secció per descriure amb precisió l’execució d’un model, mitjançant unasuccessió de transicions entre estats de la màquina. Aquesta successió correspondirectament a l’entrellaçament d’operacions atòmiques que s’està duent a termeal córrer el model. Les transicions corresponen a operacions atòmiques. La MTFpot generar tots els entrellaçaments possibles en el model.

En aquests apunts, tots els raonaments sobre la verificació de propietats esbasaran directa o indirectament en una MTF que serà associada al model quees vol analitzar.

L’estat de la màquina està format pels valors de les variables (memòria compar-tida) i dels registres, entre els quals n’hi ha un molt important: el comptador deprograma. Cada procés té el seu comptador de programa.

Una transició d’estat correspon a un canvi en els valors de les variables que for-men l’estat. Els canvis estan restringits als que poden dur a terme les sentènciesdel programa.

Elements associats a una MTF

Els comptadors de programa

Parlarem del comptador de programa de cada procés d’una forma indirecta.Primerament, posarem etiquetes a les sentències importants del nostre progra-ma: a:, b:, c:, ... Introduïm, a continuació, una funció lògica (booleana) de lesetiquetes. L’anomenarem predicat at(.). Per exemple, podrem posar:

t(), t(b), · · ·

La convenció serà que t() valdrà cert solament quan el comptador de progra-ma, del procés al qual pertany la sentència etiquetada amb , apunti a la primerainstrucció de la sentència. Important: això succeeix just abans d’executar aques-ta primera instrucció. Això és solament una convenció, però a fi que doni fruithem de ser consistents amb ella sempre que usem el predicat t.

Definirem el valor de at(.) al principi d’una construcció de paral.lelisme formadapels processos P1, P2, ..., PN com a la conjunció

t(1)∧ t(2)∧ · · ·∧ t(N)

48

Page 61: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

on ai, = 1..N són les etiquetes de les primeres sentències de cada un dels pro-cessos.

Exemple

A fi d’aclarir aquests conceptes farem servir el programa de la figura 3.7. formatper dos processos concurrents P1 i P2. El programa correspon a l’anterior de lafigura 3.6.. Intenta garantir l’exclusió mútua a una zona crítica: els processos nopoden estar mai un a la ZC1 i l’altre a la ZC2 simultàniament. És cert això?

VARtorn: Tp1o2

Donar el torn al procés 1.a0: torn:= 1

apar:-| |

P1

* ∞a1: ZNC1Permís.

* b1: !(torn=1)

Nilc1: ZC1Notificar alliberament.

d1: torn:= 2

P2

* ∞a2: ZNC2Permís.

* b2: !(torn=2)

Nilc2: ZC2Notificar alliberament.

d2: torn:= 1

Figura 3.7.: Model dels torns per garantir exclusió mútua

Abans de contestar la pregunta feta més amunt, fixem-nos en les etiquetes deles sentències del programa: a1, a2, b1, ... Per exemple, t(b1) valdrà certsolament quan el comptador de programa de P1 apunti a la primera instrucció del’expressió lògica, la qual podria ser un LOAD torn. També,

t(||) = t(1)∧ t(2)

Els estats

L’estat de la màquina finita serà un producte cartesià de variables, entre lesquals sempre hi hauran els comptadors de programa de cada un dels processoscomposats en paral.lel. Quines altres variables? Les que siguin interessants pera les propietats que volem demostrar. Per tant, un programa es pot modelaramb més d’una màquina de transicions finites. Les variables que formen l’estats’anomenen variables d’estat. En l’exemple de la figura 3.7. el vector d’estat serà< torn,π1, π2 >, format per tres variables. Les π’s representen els comptadorsde programa de P1 i de P2. La variable torn pot prendre dos valors, les variablesπk poden prendre quatre valors, els quatre valors corresponents a les etiquetesde cada un dels processos. El nombre de variables d’estat de la màquina ha deser el més petit possible, però que permeti raonar sobre el que volem.

49

Page 62: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Poden ser necessàries màquines d’infinits estats. No obstant, per a l’exemplevist anteriorment, tenim un nombre finit d’estats, com a màxim 2 × 4 × 4 = 32,totes les valuacions possibles de les tres variables. No tots els estats possiblessón assolibles des de l’estat inicial, com es veurà en l’exercici de la secció 3.3. Eldiagrama de transicions de l’exemple el teniu en la figura 3.8.. Dins dels estats hihan els valors de les variables d’estat que corresponen a cada un d’ells.

Les transicions

1 , a1 , a2

1 , b1 , a2

1 , c1 , a2 1 , b1 , b2

1 , a1 , b2 b2-b2

b2-b2

a1-b1 a2-b2

b1-c1 a2

c1-d1 a2-b2b1-c1

a1-b1

Estat inicial

a1-a1

a2-a2

a1-a1a2-a2

1 , d1 , a2

2 , a1 , a2

1 , c1 , b2

2 , a1 , d2

2 , b1 , d2

b2-b2

c1-d1 a2-b2

d1-a1 a2-b2 c1-d1

b1-c1

d2-a2

d2-a2

. . . . . .

c2-d2 a1-b1

c2

b1-b1a1-a1

a2-a2a1-a1

a2-a2

a2-a2

Figura 3.8.: MTF incompleta del model de la figura 3.7.

Una transició d’estat dóna lloc a canvis en les variables d’estat i correspon auna sola operació atòmica. Per tant, pertany a un sol procés entre els que formenla composició en paral.lel. Tan sols un dels comptadors de programa canvia.

En l’exemple d’abans 1 − b1, b2 − c2 i d1 − 1, són transicions, en canvi ni2−b1 ni d2−1 ho són. En la figura 3.8. podeu veure part del diagrama d’estatsde la MTF del mecanisme dels torns de la figura 3.7.. Fixeu-vos com el nom dela transició està, en general, en més d’una branca. Per tant, cada transició d’unaMTF correspon, generalment, a un conjunt de branques.

En general, tota sentència d’un model dóna un nombre finit de transicions. Enen el model dels torns de la figura 3.7., la sentència b1 dóna dos transicions, lab1−b1 i la b1−c1; també, la 1 en dóna dues, la 1−1 i la 1−b1. La transició1− 1 dóna la possibilitat de romandre en aquest estat per sempre. Encara queel nombre d’estats pot ser infinit, el nombre de transicions sempre és finit.

50

Page 63: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Exercici 3.3Completeu el diagrama d’estats de la figura 3.8. i compteu el nombre d’estats.Seran els estats assolibles. El nombre màxim d’estats és 32, segons s’ha vistanteriorment. Les transicions 1− 1 i 2− 2 representen la possibilitat de nosortir mai de les ZNCs.

Recorreguts i arbres de càlcul

Un camí (path) o recorregut (run) d’una MTF és una seqüència d’estats

σ : s0, s1, s2, ...

on s0 és un estat inicial de la MTF i entre cada dos estats consecutius, sk i sk+1,hi ha una transició. Un camí de la MTF anterior és el següent:

< torn π1 p2s0 : < 1 1 2 > −→ (tr : 1→ b1) −→s1 : < 1 b1 2 > −→ (tr : b1→ c1) −→s2 : < 1 c1 2 > −→ (tr : 2→ b2) −→s3 : < 1 c1 b2 > −→ (tr : b2→ b2) −→s4 : < 1 c1 b2 > −→ (tr : c1→ d1) −→s5 : < 1 c1 b2 > −→ (tr : b2→ b2) −→s6 : < 1 d1 b2 > −→ (tr : d1→ 1) −→s7 : < 2 1 b2 > −→ (tr : b2→ c2) −→s8 : < 2 1 c2 > −→ (tr : 1→ b1) −→s9 : < 2 b1 c2 > −→ . . . . . . . . . . . . . . . −→

. . . . . .

Els recorreguts són sempre infinits, doncs suposen l’existència de la transicióbuida que salta al mateix estat sense modificar cap variable.

Un arbre de càlcul (computation tree) és un arbre d’estats l’arrel del qual és unestat inicial. L’obtenim desenroscant la MTF. Els fills d’un estat són tots els estatsassolibles des d’ell amb una transició. L’arbre de càlcul també és infinit.

Exercici 3.4Continueu, fins que us canseu, al menys cinc nivells, l’arbre de càlcul de la MTFanterior, el principi del qual és el següent:

51

Page 64: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Estat inicial

1, 1, 2

1, b1, 2 1, 1, b2

1, c1, b2 1, b1, b2 1, b1, b2 1, 1, b2

1 2

b1 b2

3.5 Formulació de propietats d’un model

Un invariant és una expressió booleana que val cert per a tots els estats ac-cessibles d’un programa. Algunes propietats, com l’exclusió mútua, poden serformulades com un invariant.

Per exemple, si el programa exemple, vist anteriorment, manté realment l’ex-clusió mútua, l’expressió

¬( t(c1)∧ t(c2) )

ha de ser un invariant. Demostrar la propietat d’exclusió mútua equivaldria ademostrar que l’expressió anterior és un invariant, o sigui, que val cert en tots elsestats accessibles.

Altres expressions candidates a invariant pel mateix programa serien:

t(c1)∨ t(d1)→ (torn = 1)

i

t(c2)∨ t(d2)→ (torn = 2)

on l’operador → denota implicació material. Si el comptador de programa de P1apunta a c1 o a d1, llavors torn ha de valer 1.

Implicació material

L’operador implicació material és un operador booleà que es defineix en funcióde la negació i la disjunció del mode següent:

52

Page 65: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

A→ Cdeƒ= ¬A∨ C.

Direm que A és l’antecedent i C el conseqüent. Representem la taula de veritatde ¬A∨ C, la qual serà definitòria de l’implicació material

A C ¬A ¬C ¬A∨ C0 0 1 1 10 1 1 0 11 0 0 1 01 1 0 0 1

Observeu el següent:

1. Si l’antecedent A val fals, llavors l’implicació val cert independentment delvalor del conseqüent C.

2. Si el conseqüent C val cert, llavors l’implicació val cert independentment delvalor de veritat de l’antecedent A.

3. L’únic cas en el qual l’implicació val fals és quan l’antecedent val cert i elconseqüent val fals.

4. Per tant, si demostrem que quan el conseqüent val fals, llavors l’antecedenttambé val fals, haurem demostrat que l’implicació val cert.

Aquesta interpretació de l’implicació fa que si A val fals i C val cert, l’implicacióno quedi falsejada. C pot valer cert per algun altre motiu diferent de A. Penseuel cas A = "plou" i C ="el carrer està mullat". La frase "quan plou implica que elcarrer està mullat"(la qual formulem com A→ C) no és falsejada en el cas que noplou i el carrer està mullat. Per exemple, poden estar regant i la frase anteriorcontinuar vàlida. Penseu que la lògica és una interpretació d’un subconjunt delnostre llenguatge. En els càlculs, però, hem de ser sempre fidels a la mateixainterpretació.

L’operador ↔ representa equivalència lògica i també serà usat. L’expressióA↔B val cert solament quan A i B valen els dos cert o els dos fals. També es potdefinir partint de l’implicació material com:

A↔Bdeƒ= (A→ B)∧ (B→ A).

53

Page 66: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

3.6 Demostració de propietats d’un model

El mètode de demostració que s’introdueix en aquesta secció s’aplicarà en totala resta dels apunts. Des dels models amb esperes actives fins els models ambsemàfors o monitors. També a sistemes pròpiament distribuïts.

En la secció 3.5, s’han formulat les propietats com a invariants. Això era degut aque una propietat d’un model ha de complir-se en tots els seus estats assolibles.Per demostrar que l’expressió és un invariant d’un model, es treballa sobre laseva MTF de forma inductiva, seguint l’esquema següent:

Mètode inductiu. Un cop demostrats els dos punts següents, val cert entots els estats assolibles del model.

1. val cert en l’estat inicial de la màquina.

2. Per a tota transició, suposant cert en l’estat inicial de la transició s’hade demostrar que val cert en el seu estat final, o bé que la transició ésimpossible, no està activada en el seu estat inicial.

Tota transició que no modifiqui compleix el segon punt. Aquesta transicióen direm no crítica respecte . Per tant, el segon punt es limita solament a lestransicions crítiques respecte l’invariant que volem demostrar.

Justificació. El mètode assegura que val cert en tots els estats accessiblesde la MTF, encara que no podem accedir-hi realment en el cas d’infinits estats.

El raonament que ara es farà té infinits passos, per tant, és solament conceptual;en el sentit que s’admet que es podria dur a terme.

Primer, s’ha demostrat directament que val cert en l’estat inicial de la MTF (punt1). Això forma la base del raonament inductiu. Al ser el nombre de transicionsfinit, el punt 2 pot dur-se a terme. Suposem, doncs, que per a tota transició s’hapogut demostrar que si valgués cert en l’estat inicial de la transició, llavors val cert també en el seu estat final, o bé que la transició no és possible, no estàactivada.

Llavors, per les transicions que surten de l’estat inicial de la MTF, també val certen els seus estats finals. Per les raons següents:

1. Els seus estats inicials coincideixen amb l’estat inicial de la MTF, que satisfà segons el demostrat en el punt 1.

2. La suposició de que val cert en l’estat inicial d’aquestes transicions, ques’ha fet segons el punt 2, ara es compleix per aquestes transicions.

Per tant, val cert en els estats immediatament successors de l’estat inicial de laMTF. Seran els segons estats de tot recorregut, entrellaçament. Els seus primersestats sempre són l’estat inicial de la MTF.

El mateix raonament pot ser aplicat a totes les transicions que surtin dels estatsimmediatament successors de l’estat inicial. Aquestes sempre seran alguna del

54

Page 67: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

conjunt finit de de la MTF, en totes les transicions de la qual s’ha demostrat elpunt 2. En el paràgraf anterior, ja s’ha demostrat que val cert en els estatsprimers successors de l’estat inicial. Conseqüentment, a causa d’allò demostraten el punt 2, es pot afirmar que val cert en els segons successors de l’estatinicial.

Es pot repetir el mateix pas als segons successors, etc. Es recorren així, concep-tualment, tots els entrellaçaments possibles. Per tant, entre tots els entrellaça-ments s’hauran visitat tots els estats accessibles de la MTF i valdrà cert en totsaquests estats.

En el punt 2, per algunes transicions solament s’ha pogut demostrar que no estanactivades en els seus estats inicials. Si es dugessin a terme, segurament en elsseus estats finals , no valdria cert. Aquestes transicions, al no estar activades,no figuraran en cap entrellaçament.

Exemples

Demostrem amb el mètode anterior la propietat d’exclusió mútua del programadels torns, apartat 3.4.2:

deƒ= ¬( t(c1)∧ t(c2) ) (3.1)

Per l’estructura del programa podem intuir que sempre que el comptador deprograma de P2 apunti a c2 o a d2, llavors torn solament pot valer 2 (fixem-nosen la condició b2 i en el fet que solament P1 pot canviar el valor de torn a 2). Pertant, formulem aquest fet:

2deƒ= t(c2)∨ t(d2)→ (torn = 2) (3.2)

Per simetria entre P1 i P2, també tindrem:

1deƒ= t(c1)∨ t(d1)→ (torn = 1) (3.3)

Com exemple demostrarem pel mètode de la MTF que és invariant suposantdemostrat que les dues últimes expressions són invariants.

Demostració 3.1Estat inicial: en aquest cas tant t(c1) com t(c2) valen fals, ja que el comp-tador de programa d’un procés solament pot apuntar a una sola sentència. Pertant, val cert.

Transicions: les transicions que no modifiquen directament compleixen quesi val cert als seus estats inicials també val cert als seus estats finals. Per tant,solament hem de preocupar-nos de les crítiques, les quals són, en el cas de lafórmula , les que entren o surten de les sentències c1 i c2.

55

Page 68: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Per simetria entre P1 i P2 tan sols cal tenir en compte les dues transicionsassociades a c1: c1− d1 i b1− c1.

c1 − d1: com hem dit, hem de suposar que val cert en l’estat inicial c1 idemostrar que continua valent cert en l’estat final de la transició, d1. En aquestestat final t(c1) valdrà fals, doncs t(d1) val cert, i per l’estructura lògica dela fórmula, valdrà cert.

b1−c1: suposem cert en l’estat inicial b1. Hem de demostrar que continuavalent cert a l’estat final c1 o bé que no pot donar-se. Hi ha dos casos possibles,segons la fórmula :

1. t(c2) val fals. Llavors en l’estat final c1, sempre valdrà cert, per l’estruc-tura de la fórmula. El comptador de programa de P2 no es mou durant latransició actual, de P1 (entrellaçament).

2. t(c2) val cert. Aquí hem de demostrar que la transició no pot donar-se, altrament l’invariant s’invalidaria. En aquest segon cas, podem usarl’invariant anterior i deduir d’ell que torn ha de valer 2. Per tant, tindrà llocla transició b1− b1 i no la b1− c1, la qual és impossible. L’invariant nos’invalida.

Observeu com el valor de t(c2) no canvia durant la transició, conse-qüència del model d’entrellaçament d’operacions atòmiques. Solament potcanviar un comptador de programa, en cada transició.

Exercici 3.5Demostreu pel mètode MTF que les expressions (3.2) i (3.3) són invariants en elprograma anterior.

Esquema general de la demostració d’invariància en una transició

Usualment, donada una transició crítica, hi ha formes diverses de raonar el punt2 de la demostració per a l’invariant . Podem recolzar-nos en molts fets, perexemple: suposició de cert a l’estat inicial de la transició (eit), hi ha raons per ala certesa de en l’estat final de la transició (eft), condicions d’activació les qualshan de valer cert, canvis que fa la transició en l’estat, etc. En cada cas concretprocurarem quedar-nos amb el raonament més curt possible. Hi haurà casos enquè caldrà que ens agafem als raonaments més llargs. També hi ha casos en elsquals, tot i ser cert l’invariant, no hi ha forma de demostrar-lo. Llavors, s’hauràde fer servir un altre mètode. En la secció 4.4 s’exposa aquest altre mètode.

Ens interessa el raonament més curt. A continuació, es presenten els diversosraonaments ordenats, aproximadament, de més curt a més llarg.

1. El cas més senzill és raonar que val cert en l’estat final de la transició(eft).

Per exemple en la demostració d’invariància de 1 de (3.3) en la transiciód1− 1. Aquí solament cal dir que a l’estat final de la transició t(1) valcert i, com a conseqüència, t(c1) i t(d1) valen fals, doncs un comptadorde programa solament pot tenir un valor en qualsevol estat. Llavors, 1 valcert per antecedent fals.

56

Page 69: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

2. Un cas similar és haver de recolzar el raonament en els efectes de la pròpiatransició.

Per exemple, al demostrar invariància de 1 en la transició d2 − 2. Aquíl’efecte de la transició és fer que t valgui 1. Llavors, a l’estat final de latransició 1 val cert per conseqüent cert.

3. Un cas més elaborat és haver d’usar la condició d’activació de la transició iels efectes de la transició.

Per exemple, la transició b1−c1 en la demostració d’invariància de 1. Aquídirem que la condició d’activació és t = 1 i que la transició no modifica elvalor de t. En conseqüència, t = 1 a l’estat final de la transició i 1 valcert, per conseqüent, cert.

En els casos anteriors no hem hagut de recolzar-nos en la hipòtesi que l’invariantval cert en l’estat inicial de la transició. Aquesta suposició sempre la podem fer iusar-ne conseqüències. Arribem, doncs, a l’esquema més sofisticat de raonamentd’invariància d’una fórmula en una transició. És el següent:

1. De la suposició que val cert en l’estat inicial de la transició en traiemconseqüències, les quals les podem usar en la resta de la demostració.

2. Usem la condició d’activació de la transició i els efectes de la transició.

3. Amb les conseqüències de 1 i 2 donem raons per les quals val cert enl’estat final de la transició.

Un exemple on hem d’aplicar tot l’esquema general el tenim en la demostraciód’invariància de

A1 : t(2)∧ t = 1↔t(c12)

en la transició (1, c21;2, c22) de l’àrbitre distribuït de la figura 3.10.. Peraquest raonament no cal que entengueu aquell sistema, s’explicarà en la secció3.7. Aquí el raonament obligat és el següent:

1. Suposant cert A1 en l’estat inicial de la transició deduïm que t(c12) hade valer fals. Ho fem dient que en l’estat inicial de la transició t(1) valcert i, per tant, t(2) val fals. En conseqüència, la fórmula de la dreta dela doble implicació t(c12) ha de valer fals.

2. Aquesta transició està activada quan t = 2 i la transició no modifica el valorde t. Tampoc modifica el valor del comptador de programa de P1 i t(c12)continuarà valent fals a l’estat final de la transició.

3. De les raons deduïdes en els dos punts anteriors tenim que A1 val cert enl’estat final de la transició, doncs les seves dues fórmules, dreta i esquerra,valen fals. L’esquerra degut a que t = 2.

57

Page 70: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

3.7 Extensió a sistemes pròpiament distribuïts

Introducció

El mètode de verificació que s’ha exposat en aquest capítol val també per a sis-temes distribuïts. La MTF, la formulació de propietats, el mètode de demostració,etc. Tot continua igual. Tan sols cal introduir més tipus de transicions.

La comunicació per connexions és l’element nou del model distribuït que no éspresent en els sistemes amb memòria compartida. Cal, doncs, formular les tran-sicions associades a una comunicació síncrona. Com que les operacions de co-municació poden ser guardes de seleccions de comunicació, caldrà també definirles transicions associades a la selecció de comunicació. De passada, com a casparticular amb guardes de comunicació nul·les, tindrem definides les transicionsassociades a una selecció normal.

Definits aquests nous tipus de transició, tan sols caldrà aplicar els mètodes pre-sentats en aquest capítol. Definirem primer les noves transicions i, després, lesaplicarem a un exemple concret.

Transicions associades a les comunicacions

Les transicions corresponents a un succés de comunicació involucren el movimentdels comptadors de programes de dos processos, l’emissor i el receptor.

Els successos de comunicació poden ser de dos tipus: amb o sense pas de valor.En el primer cas, tenim variables locals en les operacions d’emetre i de rebre. Laforma general és la següent:

r :=<> c []c := e.

La primera operació està en el procés receptor, la segona en el procés emissor.Les dues operacions formen part del succés de comunicació. Per tant, aquest suc-cés es modela com a àtom al qual hi ha associada una nova transició, la qual estàactivada quan els comptadors de programa dels dos processos apunten, respec-tivament, a les dues operacions de comunicació. L’efecte de la nova transició ésdoble:

1. Mou els comptadors de programa dels dos processos. Estaven apuntant a lesdues operacions i, un cop acabat el succés, apunten a les dues sentènciessegüents.

2. Al final de la transició r pren el valor de e.

En el cas que no hi ha comunicació de valor, per exemple:

<> c []c

solament té lloc el moviment dels dos comptadors de programa, o sigui el primerdels dos efectes.

58

Page 71: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Transicions associades a la selecció

Cada alternativa d’una sentència de selecció de comunicacions té una transiciód’entrada a l’alternativa. És la de la guarda de comunicació de l’alternativa, peròaugmentada amb la guarda booleana. S’exposa sobre un exemple. La selecció

xi:-?

b1,v1:=<>c1x1i:-A1

b2,v2:=<>c2x2i:-A2

b3,v3:=<>c3x3i:-A3

Figura 3.9.: Selecció de comunicacions etiquetada

de tres alternatives de la figura 3.9. té tres transicions d’entrada. Solament unaserà eventualment seleccionada. Una transició està activada quan:

1. El comptador de programa del procés apunta a la entrada de la selecció,representada en la figura per l’etiqueta .

2. A més a més, la guarda booleana bj de la transició val cert.

3. Un procés paral·lel està disposat a comunicar amb l’operació complemen-tària de j :=<> cj.

L’efecte de la transició és doble:

1. El comptador de programa del procés que té la selecció passa de a j,on j = 1,2,3 segons l’alternativa seleccionada. El del procés amb l’operaciócomplementària també passa a apuntar la sentència següent de l’operaciócomplementària.

2. Un valor és passat d’un procés a l’altre, depenent de l’operació concreta c.En l’exemple actual, el procés que té la selecció rep un valor.

Les guardes de comunicació poden ser operacions dels quatre tipus possi-bles. Com en l’apartat anterior.

Fixeu-vos com el funcionament que modelem amb les transicions d’entradaés diferent de l’exposat a l’apartat 2.3.5. Aquell donava prioritat a les alter-natives de l’esquerra. Aquí el comportament és no-determinista, on totes lesalternatives activades tenen les mateixes possibilitats de ser seleccionades.Naturalment, també solament queda seleccionada una sola alternativa.

Finalment, podem entrar en les transicions d’entrada a la selecció simple. És uncas particular de la de comunicacions; quan totes les guardes de comunicaciósón buides, en el sentit que sempre estan disposades a comunicar amb un procésparal·lel inexistent, llavors val el dit anteriorment, traient el referent a les guardesde comunicació.

59

Page 72: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Exemple

conp(1..2): nil

| |Arbitre

vart: 1..2:= 1

* ∞a1:-?

true, <>p(t)a2: <>p(t)

true, nilComnil

a3:t:= (t+1)MOD 2

Clients-Processadors| |

P1

* ∞c11: []p(1)c12: []p(1)

P2

* ∞c21: []p(2)c22: []p(2)

Figura 3.10.: Model d’arbitratge distribuït

La figura 3.10. representa un model simplificat d’un àrbitre distribuït. Dos clientsP1 i P2 tenen les regions crítiques formades pels valors dels comptadors de pro-grama c12 i c22, respectivament. L’àrbitre vol evitar que el dos clients estiguinsimultàniament a aquests dos valors, respectivament.

La notació (t + 1) MOD 2 fa prendre a t els valors 1 i 2, cíclicament:

(t + 1) MOD 2 =�

2 si t = 11 si t = 2.

Analitzarem el comportament de l’àrbitre tot construint la MTF del model. Estu-diarem dos comportaments segons sigui la semàntica de la selecció de comu-nicacions; la de prioritat a l’esquerra i la no-determinista introduïda en l’apartatanterior.

1 1 c11 c21

1 2 c12 c21

1 3 c11 c21

2 1 c11 c21

2 2 c11 c22

2 3 c11 c21

1− c11

1

2− c12

1− c21

1

2− c22

3 3

Figura 3.11.: MTF del model de la figura 3.10.

L’esquema de la figura 3.11. mostra la MTF del model de la figura 3.10.. Lestransicions etiquetades com −cj mouen el comptador de programa de l’àrbitrei el del procés Pj, j = 1,2. Per exemple, en l’estat inicial < 1, 1, c11, c21 > estan

60

Page 73: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

activades les transicions 1− c11 i 1. La primera comporta una comunicaciósíncrona per la connexió p(1) i mou els comptadors de programa de l’àrbitre i deP1 a 2 i c12, respectivament. Si aquesta transició és duta a terme el nou estatactiva la transició 2−c12. Si ho és la 1, el nou estat serà el < 1, 3, c11, c21 >.Comproveu tots els estats i transicions de la MTF, contrastant-los amb el model.

En primer lloc, l’exclusió mútua és garantida; doncs no hi ha cap estat de la MTFamb c12 i c22.

Analitzem el comportament de la selecció. Segons la MTF, hi ha dos estats assoli-bles a l’entrada de la selecció, o sigui amb el control de l’àrbitre a 1, segons elvalor de t. Són els estats < 1, 1, c11, c21 >, l’inicial, i el < 2, 1, c11, c21 >.En aquests dos estats hi ha dues transicions activades: la 1, en els dos estats, ila 1− c11 en l’estat inicial i la 1− c12, en el segon estat < 2, 1, c11, c21 >.

Si suposem seleccions amb prioritat a l’esquerra, mai saltarà la transició 1; il’àrbitre tindria un comportament cíclic i per torns. Obliga a que P1 entri perdesprés poder entrar P2, i a l’inrevés.

En canvi, si suposem seleccions amb comportament no-determinista, exposat enaquest apartat, la transició 1 pot saltar en els dos estats d’abans. Hi ha unentrellaçament en el qual sempre salta 1 en els dos estats. És el següent:

< 1, 1, c11, c21 > −− > < 1, 3, c11, c21 > −− > < 2, 1, c11, c21 > −− >< 2, 3, c11, c21 > −− > < 1, 1, c11, c21 > .

Aquest comportament cíclic indefinit és possible però molt improbable. En ell,l’àrbitre consulta els dos clients cíclicament, i entraran finalment.

Demostració de propietats

En els sistemes distribuïts, el mètode per verificar el compliment de les propietatsés el mateix que s’ha estat treballant en aquest capítol. Per tant, solament esdóna un exemple.

En el sistema d’arbitratge distribuït de la figura 3.10. es demostrarà exclusió mú-tua

EM : ¬(t(c12)∧ t(c22)).

Com en els exemples anteriors, primer és útil formular invariants per comporta-ments del model que veiem intuïtivament.

Per exemple, sempre que l’àrbitre és a 2 i t = 1, llavors P1 és a c12 i també al’inrevés. Per formular aquest fet usem la doble implicació:

1 : t(2)∧ t = 1 ↔ t(c12).

De la mateixa forma es proposa l’invariant següent:

2 : t(2)∧ t = 2 ↔ t(c22).

Ara s’han de demostrar rigorosament aquests suposats invariants. De moment,suposem-los demostrats i demostrem EM.

61

Page 74: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Demostració 3.2Suposem que EM no es compleix. Llavors

¬EM : (t(c12)∧ t(c22))

ha de ser cert en almenys un estat del model. En aquest estat, ja que 1, t(2)i t = 1 valen cert, perquè en l’estat suposat t(c12) ho és.

En el mateix estat, com que 2, t(2) i t = 2 valen cert, doncs en l’estat suposatt(c22) ho és.

Hem arribat a la conclusió que t = 1 i t = 2 en l’estat suposat. Això és unacontradicció, per tant un estat que violi EM no pot existir i EM és un invariant.

Ens queda per demostrar que 1 i 2 són invariants. A causa de la simetria tan solscal demostrar-ne un. Demostrem 1:

Demostració 3.3Per la forma de 1

1 : t(2)∧ t = 1 ↔ t(c12)

en l’estat inicial del sistema t(2) val fals i t(c12) també. Per tant 1 éscompleix amb els dos costats fals.

Les transicions crítiques són:

1. (1,c11)-(2,c12) degut a 2 i a c12.

2. (2,c12)-(3,c11) degut a 2 i a c12.

3. 3-1 degut a t.

Els raonaments per a cada una són els següents:

1. (1,c11)-(2,c12): la transició solament pot donar-se si t = 1. A l’eft 1 escompleix amb els dos costats cert.

2. (2,c12)-(3,c11): a l’estat final de la transició 3 i c11 valen cert, per tantt(2) i t(c12) valen fals i 1 es compleix amb els dos costats fals.

3. 3-1 : suposant 1 cert en l’estat inicial de la transició, t(c12) val falsdoncs en aquest estat t(2) val fals. Per tant, a l’estat final de la transiciót(2) continua valent fals, doncs no modifica l’estat de P1 i l’invariant escompleix amb els dos costats fals.

Demostreu que la transició (1, c11 − 2, c12) conserva l’invariant. Feu-ho pelmètode informal del vol.II dels apunts.

Demostreu exclusió mútua, EM : ¬(t(c12) ∧ t(c22)) per reducció a l’absurd.Podeu suposar demostrats els invariants anteriors. Feu-ho informalment, estilvol.II dels apunts.

62

Page 75: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

3.8 Resum

Els sistemes distribuïts inclouen processos paral·lels que poden comunicar pas-sant missatges per canals, comunicacions pròpies, però també passant valors permemòria compartida. Per tant, els models han d’incloure sentències per modelaraquestes dues formes de comunicació. Si el capítol 2 va tractar la comunicacióamb missatges, aquest capítol s’ha dedicat a la segona forma de comunicació,als sistemes amb memòria compartida.

Les construccions de la notació per passar valors per memòria compartida sónsenzilles: la declaració de variables compartides i la sentència d’assignació. Noobstant, la problemàtica de l’escriptura a memòria compartida és complicada. Peraixò, quasi bé tot el capítol s’ha dedicat a aquesta problemàtica. El tema tambées coneix com concurrència. A causa d’aquesta dificultat ha estat necessari unplantejament més rigorós. Això vol dir: definir el comportament del model, for-mular propietats que volem que compleixi i verificar que realment les compleix;tot amb un enfocament matemàtic. És el que s’ha fet en la major part del capítol.

S’ha treballat amb models de memòria compartida. No obstant, tot el que s’haintroduït pels sistemes de memòria compartida val també per a sistemes ambpas de missatges, amb algunes extensions. En la secció final s’han explicat lesextensions necessàries. En conseqüència, el capítol ha introduït la verificaciósobre models de sistemes distribuïts generals.

Per poder verificar amb precisió han estat necessàries unes suposicions fetessobre els models expressats en la notació de modelat. Són les anomenades su-posicions de base o també abstracció de la programació concurrent: atomicitat,seqüencialitat, entrellaçament i no determinisme.

Un model pot o no representar bé la problemàtica del sistema real; el model ésuna simplificació que ha de conservar els problemes que es volen resoldre delsistema real. Les condicions perquè un model sigui vàlid han estat explicades.També com validar models que no ho són.

En el capítol s’ha treballat amb sistemes reals formats per programes d’instruc-cions màquina corrent sobre processadors funcionant en paral.lel i compartintmemòria, els multiprocessadors.

S’han explicat exemples de propietats a verificar, així com la formulació d’algunesd’elles en lògica de predicats. Per verificar-les s’ha treballat sobre la màquina detransicions finites, MTF, d’un model. La MTF pot generar tots els entrellaçamentso traces del model i es pot construir gràcies a les suposicions de base.

Gràcies a la formulació de propietats d’un model i a la seva MTF, s’ha pogutintroduir un mètode inductiu de verificació de propietats; el qual s’ha aplicat adiversos sistemes.

En el capítol següent s’usarà el que s’ha après aquí per analitzar amb rigor diver-sos sistemes.

63

Page 76: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

3.9 Problemes

Problema 3.1()- El model abstracte següent vol representar l’execució en paral·lel de dosprogrames P1 i P2 sobre un sistema multiprocessador, de memòria compartida.Les variables i b corresponen a dues posicions d’aquesta memòria.

vara,b: Integer

a:= 1b:= 2| |

P1a:= a + b

P2b:= b + a

Els dos processadors són DLX. Escriviu els dos programes concrets i reals,DLX, corresponents a les abstraccions P1 i P2. Useu solament instruccions delDLX, emprant el mínim nombre de registres interns dels processadors. Su-poseu que els valors de i de b ja han estat inicialitzats a 1 i a 2 respectivament.

(b)- Reproduïu la construcció de paral.lelisme anterior amb les dues assigna-cions, P1 i P2. Marqueu sobre ella les referències crítiques a variables, si es quen’hi ha alguna.

(c)- Com recordareu, l’atomicitat que sempre suposem per tot diagrama(abstracció) PADD correspon a les sentències; cada sentència és consideradaatòmica. Les seves parts (corresponents a instruccions màquina) s’executensense entrellaçament amb les d’altres sentències dels processos paral.lels. Nosucceeix el mateix en el sistema real, en llenguatge màquina. Escriviu un en-trellaçament del sistema real, amb instruccions assemblador, que no pot succeirmai en l’abstracció PADD anterior però que si pot donar-se en el sistema re-al. Escriviu també els valors de i de b un cop acabada l’execució corresponent.

(d)- Representeu un esquema PADD del mateix sistema anterior que millori labondat de la representació del sistema real. Concretament, ha de poder generarels entrellaçaments que es donen en el sistema real i que no poden donar-se enel model inicial.

Solució

()-

P1: P2:LW1 ra, a LW2 ra, aLW1 rb, b LW2 rb, bADD1 ra, ra, rb ADD2 rb, rb, raSW1 ra, a SW2 rb, b

(b)- P1: := a + b P2: b := b +

64

Page 77: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

de P1 és crítica doncs és una escriptura a una variable sobre la qualel procés paral·lel P2 hi escriu. b de P1 és crítica ja que és una lecturad’una variable sobre la que el procés paral·lel P2 hi escriu. El cas de lesreferències crítiques de P2 és totalment anàleg.

(c)-

LW1 ra1, aLW2 ra2, aLW1 rb1, bLW2 rb2, bADD1 ra1, ra1, rb1ADD2 rb2, rb2, ra2SW1 ra1, aSW2 rb2, b

Els valors finals són a = b = 3.

(d)-

vara, b: Integer

a:= 1b:= 2| |

P1var

r: Integerr:= ba:= a + r

P2var

r: Integerr:= ab:= b + r

Problema 3.2En el marc de la demostració de l’invariant següent,

t(c1)∨ t(d1)∨ t(e1)→ (1 = 0)

d’un programa que corre sobre multiprocessador amb memòria compartida, pelmètode de la màquina de transicions finites, doneu la part de la demostraciórelativa a la transició e1→ 1. Les sentències consecutives corresponentsals dos estats de la transició són:

e1: x1:=11: ZNC1.

Solució Hem de demostrar que, suposant cert l’invariant a l’inici de la tran-sició, l’invariant es continua complint al final o bé la transició no pot donar-se(està desactivada). En aquest cas tan senzill, només cal considerar el valor del’invariant a l’estat final de la transició. No cal fer ús de la suposició anterior.La transició sempre està activada i al seu estat final el predicat t(1) val cert.Com que el comptador de programa d’un procés pot tenir un sol valor tindremque t(c1) = t(d1) = t(e1) = ƒs , el qual fa que l’antecedent de l’invariantvalgui fals a l’estat final de la transició. Per tant, l’implicació val cert.

65

Page 78: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Problema 3.3Demostreu que la transició 2− 3 no invalida l’invariant que formula l’exclusiómútua en l’algorisme:

VARy1,y2: Bool := false, falses: Integer := 1| |

P1

* ∞l0: ZNC1l1: { y1, s:= true, 1 }

* l2: y2 AND s=1

Nill3: ZC1l4: y1:= false

P1

* ∞m0: ZNC2m1: { y2, s:= true, 2 }

* m2: y1 AND s=2

Nilm3: ZC2m4: y2:= false

La sentències yi, s:= true, i per = 1,2 actualitzen les variables yi i s enuna sola operació atòmica.

Solució L’invariant corresponent a la propietat d’exclusió mútua és:

: ¬(t(3)∧ t(m3)).

La transició τ2−3 es pot produir solament quan ()- y2 val fals, o quan(b)- s = 2 (s pot valer 1 o 2 solament).

Cas (): P2 és fora de la zona crítica (es pot demostrar que ¬y2 →t(m0) ∨ t(m1) ), per tant t(m3) val fals i val cert al final de la transi-ció.

Cas (b): solament canviem el valor de s a 1 i a m1. A l’estat inicial de latransició som a 2 i s = 2, en el cas present. Per tant, m1 s’ha dut a terme ambposterioritat a 1 (si no fos així s valdria 1) i P2 és a m2 amb s = 2. Però y1 valcert a causa de que P1 és a 2 (es pot demostrar que t(2)∧ t(3)∧ t(4)→y1). Llavors P2 es queda en la iteració de m2 i al finat de la transició t(m3) valfals.

Problema 3.4Considereu l’algorisme:

:= P1(b, c); d := P2(); := P3(b, c); e := C(,b, c, d); F

()- Doneu totes les condicions de Bernstein (condicions per ésser disjunts) delsprocessos P1, P2 i P3. Es compleixen?(b)- Dibuixeu el graf de dependència de dades del programa. Indiqueu els tipusde dependència.

66

Page 79: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

(c)- Doneu l’esquema PADD del programa funcionalment equivalent que tinguiel màxim paral·lelisme assolible.(d)- Doneu l’esquema PADD d’un altre programa, funcionalment equivalent alprimer, però on P1, P2, P3 i C estiguin connectats en paral·lel i que corri en elmateix temps que l’esquema resultat del punt (c).

Problema 3.5(Els programes P1 : {LD ra, a; ADDI ra, 1; SW b, ra} i P2: {LD rb, b; ADDI rb,1; SW a, rb}, on i b són posicions de memòria, han de córrer sobre un sistemamultiprocessador amb dos processadors i condicions inicials = b = 0. Quantselements té la partició del conjunt d’entrellaçaments en classes d’equivalència?Quins són els resultats,<valor de a,valor de b>, associats a cada una d’elles?Doneu un entrellaçament representatiu de cada classe.

Problema 3.6El programa següent ha de córrer en un sistema multiprocessador

a0: t:= 1apar: -| |

P1

* ∞*

a1: !(t=1)nil

b1: t:=2

P2

* ∞*

a2: !(t=2)nil

b2: t:=1

Doneu el diagrama de transicions d’estat del model MTF que li correspon. Poseudins de cada estat el valor del vector d’estat corresponent i sobre cada tran-sició el seu nom. Suposeu que l’estat inicial és < 1, 1, 2 >. Amb el mateixestil, dibuixeu els dos primers nivells de l’arbre de càlcul generat amb la MTF.Formuleu l’invariant AB corresponent a la propietat d’absència de bloqueig i uninvariant que capti una propietat de la variable t.

Problema 3.7L’esquema següent pretén garantir exclusió mútua entre els processos P1 i P2en l’accés a les seves regions crítiques ZC1 i ZC2.

i: t:= 1| |

P1

* ∞a1: ZNC1

* b1: NOT(t=1)

Nilc1: ZC1d1: t:= 2

P2

* ∞a2: ZNC2

* b2: NOT(t=2)

Nilc2: ZC2d2: t:= 1

67

Page 80: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

t solament es modifica en les assignacions que s’indiquen explícitament. Lesvariables solament canvien al final dels passos (xi:) del programa.

()- Demostreu pel mètode MTF que

t(c2)∨ t(d2)→ (t = 2)

és un invariat.

(b)- Formuleu l’invariant corresponent a l’exclusió mútua.

(c)- Doneu una demostració rigorosa que l’invariant no és falsejat mai, pel mè-tode MTF.

68

Page 81: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

4 Exemples sobre l’exclusió mútua (EM)

4.1 Introducció

La formulació de propietats i la seva demostració, tractats en el capítol anterior,s’aplicaran en aquest capítol a sistemes concrets. Els exemples seran mecanis-mes necessaris per resoldre la problemàtica d’accés a zones crítiques; en altresparaules, per a garantir l’exclusió mútua, entre processos, en l’accés a zonescrítiques.

El mètode inductiu basat en la MTF s’aplicarà sistemàticament. En la secció 4.4es veurà que hi ha situacions on la propietat és realment invariant però el mètodeno ho pot demostrar. Llavors, s’introduirà la demostració per reforç de l’invariant.

En la secció 4.6 es tracta un mecanisme d’EM pròpiament distribuït, sense me-mòria compartida.

4.2 Esquema i propietats desitjables de lessolucions a l’EM

A fi que sols un procés accedeixi a la zona crítica d’un recurs, tot procés hauràde demanar permís. El controlador de l’accés haurà de saber quan el procés queés dins la regió crítica en surt, a fi de poder donar permís a altres processos quetambé volen entrar-hi. Per tant, tot procés haurà de notificar l’alliberament,per part d’ell, de la regió crítica. Per tant, l’esquema general d’accés a una zonacrítica ha de ser el següent:

Pròleg: demanar permísZona CríticaEpíleg: notificar l’alliberament

Aquesta estructura, amb un pròleg i un epíleg, la comparteixen totes les solucionsque donarem.

69

Page 82: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Introducció

Volem presentar solucions de diversos tipus al problema de garantir exclusiómútua. Les propietats següents han estat proposades per molts autors. Formulenallò que és desitjable per als mecanismes encaminats a l’assoliment de l’exclusiómútua d’un conjunt de processos respecte un recurs.

Exclusió mútua pròpia

Naturalment, és el primer que ha de complir la solució.

Absència de bloqueig

Per al compliment de l’exclusió mútua, el mecanisme es veu forçat a aturarprocessos. Per exemple, quan el recurs és usat ja per un procés, el qual és dins laregió crítica, tot altre procés que demana entrar ha de ser aturat.

Si aturem tots els processos fora de la regió crítica es complirà l’exclusió mútua.Naturalment, aquesta solució no és vàlida. Haurem, doncs, de comprovar que, toti complint l’exclusió mútua, el mecanisme no condueixi a cap situació de bloqueig.

Equitativitat

El mecanisme solució ha de ser tal que tot procés que demana el recurs seli dóna eventualment, en temps finit, i en les mateixes condicions que tot altreprocés que fa el mateix. Un tipus d’equitativitat molt feble podria ser l’absènciade fam individual de tot procés del sistema. Hi ha molts criteris d’equitativitat:FIFO, que com a màxim passi davant un sol procés, etc.

Ús eficient del processador

És del tot desitjable evitar les esperes actives. En elles el procés itera demanantd’entrar fins que se l’hi deixa. Encara que les primeres solucions que es donaranpateixen aquest inconvenient, els semàfors i els monitors, com explicarem mésendavant, no el presenten. En aquestes dues solucions el procés espera en unacua de processos, quedant un processador lliure, i el sistema el desperta quanveu que ja pot usar el recurs.

70

Page 83: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Simetria

És del tot natural exigir que el mecanisme que posem dins un procés siguiidèntic al dels seus veïns en la construcció de paral.lelisme.

Independència de velocitats relatives

El mecanisme ha de ser tal que no forci els processos a determinades periodici-tats en l’accés a la zona crítica. Per exemple, no admetem que es forci alternançaentre dos processos; ara entra un, després l’altre. El mecanisme ha de funcionarper a totes les periodicitats o freqüències relatives dels processos en l’entrada ala regió crítica.

Independència de fallida fora de la ZC

Un cas particular de la propietat anterior és quan, en el límit, un procés s’aturafora de la regió crítica. Els altres processos han de poder entrar i el mecanismeha de continuar funcionant. En canvi, no exigim que el mecanisme continuï fun-cionant quan un procés s’atura dins la ZC.

Complexitat independent del nombre de processos

No es considera convenient, a efectes pràctics, que el mecanisme (pròleg iepíleg) es compliqui massa a mesura que el nombre de processos en paral.lelaugmenti. Moltes de les solucions que veurem pateixen d’aquest inconvenient,són acceptables per a dos processos però massa tedioses per a molts, cinc o sis,per exemple.

71

Page 84: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

4.3 Intents i solucions

Primers intents per solucionar l’EM

El primer grup de mecanismes atura els processos en espera activa: els pro-cessos iteren demanant d’entrar a la ZC. Més endavant veurem mecanismes méselaborats, en els quals el procés és aturat tot alliberant un processador, per tantsolament aquest segon grup complirà amb el requeriment d’ús eficient del pro-cessador.

L’exemple dels torns treballat en el capítol 3 és el primer intent d’un mecanismeper assolir EM. Hem demostrat que aquest assoliment és cert (si heu fet l’exercicique es proposa allà).

Hem de demostrar que no hi ha bloqueig, el qual serà viu (livelock) en aquest cas.Solament hi hauria bloqueig si els dos processos repetissin indefinidament b1 elprocés P1 i b2 el procés P2. Això és impossible ja que torn solament pot tenir unvalor, el qual no és canviat en cap de les dues iteracions.

No obstant, aquest primer mecanisme no és acceptable ja que força a l’accésalternatiu a la ZC per part del dos processos. No tenim independència de veloci-tats relatives. En la situació límit, si un dels dos processos s’aturés fora de la ZC,l’altre acabaria iterant indefinidament, tot demanant permís, però sense entrar ala ZC.

El programa de la figura 4.1. és un segon intent per assolir l’EM. En ell evitemla necessitat d’accés alternant. Usem dues variables 1 i 2 per indicar si elsprocessos respectius són (0) o no són (1) dins la ZC. Aquest segon mecanisme ésdolent perquè ni tan sols assoleix l’exclusió mútua. En aquest cas, la demostraciópot reduir-se a trobar una traça del programa en la qual els dos processos entrina les seves respectives ZCs. La traça següent és suficient:

1 2 b1 b2 c1 c2 d1 d2.

Observeu com per demostrar la falsedat de l’EM tan sols cal trobar una traça quevioli l’EM. Si és difícil trobar aquesta traça, llavors val la pena intentar construiruna demostració de l’EM. Això succeiria si ho provéssiu en l’intent primer.

Exercici 4.1Raoneu la possibilitat real de la traça anterior.

En el tercer intent, representat en la figura 4.2., per evitar la traça alternant, laqual conduïa als dos processos a les ZCs simultàniament, s’inclou dins les ZCs lesiteracions que demanen permís.

A continuació, tenim la demostració de l’exclusió mútua.

Demostració 4.1(a) Invariants de base.

1 : t(c1)∨ t(d1)∨ t(e1) ↔ (1 = 0)

72

Page 85: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Segon intent d’obtenir exclusió mútua.VAR

Indicadors d’estar dins (0) la ZC.x1, x2: Tp0o1

A l’inici tots dos són fora.x1:= 1x2:= 1

| |P1

* ∞a1: ZNC1Pròleg. Demanar permís.

* b1: !(x2=1)

nilc1: x1:= 0

d1: ZC1Epíleg.

e1: x1:= 1

P2

* ∞a2: ZNC2Pròleg. Demanar permís.

* b2: !(x1=1)

nilc2: x2:= 0

d2: ZC2Epíleg.

e2: x2:= 1

Figura 4.1.: Segon intent

Tercer intent d’obtenir exclusió mútua.VAR

Indicadors d’estar dins (0) la ZC.x1, x2: Tp0o1

A l’inici tots dos són fora.x1:= 1x2:= 1

| |P1

* ∞a1: ZNC1Pròleg. Demanar permís.

b1: x1:= 0

* c1: !(x2=1)

Nild1: ZC1Epíleg.

e1: x1:= 1

P2

* ∞a2: ZNC2Pròleg. Demanar permís.

b2: x2:= 0

* c2: !(x1=1)

Nild2: ZC2Epíleg.

e2: x2:= 1

Figura 4.2.: Tercer intent

73

Page 86: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Estat inicial: en ell, t(1) = t(2) = cert i 1 = 2 = 1, per tant els doscostats de l’equivalència lògica valen fals i l’equivalència val cert.

Les transicions crítiques respecte 1 són: b1− c1, a causa del canvi de valorde 1 i de t(c1), i e1 − 1, a causa del canvi de valor de 1 i det(e1). Per simetria, també b2− c2 i e2− 2.

Les transicions c1 − d1 i c2 − d2 no les considerem crítiques doncs, en laprimera, tant t(c1) com t(d1) estan en la disjunció de l’invariant; ladisjunció no canvia el valor. Demostrarem b1− c1 i e1− 1.

b1− c1: al final de la transició 1 = 0 i t(c1) val cert. Per tant, els doscostats de l’equivalència lògica valen cert.

e1− 1: la transició canvia el valor de 1, com a conseqüència 1 = 1en l’estat final de la transició. En aquest estat les fórmules dels doscostats de l’equivalència lògica valen fals.

L’altre invariant de base és:

2 : t(c2)∨ t(d2)∨ t(e2) ↔ (2 = 0)

podem considerar-lo demostrat per raons de simetria.

(b) Invariant corresponent a l’exclusió mútua.

EM : ¬ (t(d1)∧ t(d2)).

Estat inicial: en ell t(1) = t(2) = cert. Per tant t(d1) = t(d2) = ƒs,perquè els comptadors de programa solament poden estar en un sol llocde control cada un. Per tant, la negació de la conjunció és certa.

Transicions: per simetria solament considerem la c1− d1 i la d1− e1.

d1− e1: al final de la transició t(e1) val cert, per tant t(d1) val fals,la conjunció de EM val també fals i EM, cert.

c1− d1: diversos casos:

- Cs t(d2) = ƒs. Al final de la transició continua valent fals i EMcert.

- Cs t(d2) = cert. Per 2, 2 = 0. Llavors ¬(2 = 1) val cert i lanostra transició no està activada. Solament pot donar-se la c1−c1.En conseqüència, l’invariant no pot invalidar-se.

El tercer intent no gaudeix d’absència de bloqueig. Això pot demostrar-se enaquest cas senzill demostrant que el suposat invariant:

ABdef= t(c1)∧ t(c2)→ 2 = 1∨ 1 = 1

no ho és. El qual fa veure que en els estats del cicle indefinit (t(c1) t(c2))d’espera no sempre alguna de les dues condicions per poder sortir del cicle (2 =1 o 1 = 1) val cert, amb el qual els dos processos no surten d’ell. Observeu comAB formula el fet que si els dos processos són dins els seus cicles de demanarpermís, al menys un d’ells té activada la condició de sortir del cicle i entrar a laseva zona crítica.

74

Page 87: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Exercici 4.2Demostreu que AB no és invariant. Doneu una traça on els dos processos entreni es queden per sempre demanant permís per entrar a les seves zones crítiques.També és invalidat com a conseqüència de 1 i 2 de la demostració 4.1.

Demostració 4.2Per demostrar la possibilitat de fam individual construïm un entrellaçament enel qual un procés iteri indefinidament demanant permís, mentre l’altre entra ala zona ZC també indefinidament. Tan sols cal construir un període. Pot ser elsegüent:

P1 P2 1 2 b1 : 1 := 0 ——+ 1 —— b2 : 2 := 0 0+ 2 —— c2 : ¬ (1 = 1) cert 0 0+ 3 —— d2 : 2 := 1 0 0+ 4 c1 : ¬ (2 = 1) ƒs —— 0 1+ 5 ƒ1 : ZC1 —— 0 1+ 6 g1 : 1 := 1 —— 0 1+ 7 1 : ZNC1 —— 1 1+ 8 b1 : 1 := 0 —— 1 1+ 9 e2 : 2 := 0 0 1+ 10 c2 : ¬ (1 = 1) cert 0 0

. . . . . . . . . . . .

Els passos o transicions + 2, + 3, ...., + 9 poden repetir-se indefinidament.En aquest període P1 entra a la seva ZC (pas + 5) mentre que P2 dóna unavolta del bucle per demanar permís (passos +2, +3, +9). Mai entra a ZC2.

El quart intent, mostrat a la figura 4.3. pateix de fam individual. La idea en ellés, mentre itera demanant permís, posar a 1 la variable indicadora de ser a laZC a fi que l’altre procés pugui entrar-hi, intentant així sortir del bloqueig viu queteníem en el tercer intent.

En el problema 4.6 teniu una solució un xic diferent i un exemple de com forçarl’entrellaçament en PADD.

Exercici 4.3Estudieu el compliment de l’EM en el programa anterior.

Solució de Dekker

La figura 4.4. mostra l’algorisme de Dekker. Combina dues tècniques usadesanteriorment: ()- Les variables 1 i 2 indiquen si el procés corresponent téinterès per entrar o bé és a la seva ZC(0) o el contrari (1), incloent el codi dedemanar permís dins la ZC. (b)- En canvi, s’usa la tècnica de torns alternatius

75

Page 88: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Quart intent per obtenir exclusió mútua.VAR

Indicadors d’estar dins (0) la ZC.x1, x2: Tp0o1

A l’inici tots dos són fora.x1:= 1x2:= 1

| |P1

* ∞a1: ZNC1Demanar per entrar i fer-ho.

b1: x1:= 0Demanar permís.

* c1: !( x2=1 )

Deixar entrar l’altre.d1: x1:= 1

e1: x1:= 0f1: ZC1

Epíleg.g1: x1:= 1

P2

* ∞a2: ZNC2Demanar per entrar i fer-ho.

b2: x2:= 0Demanar permís.

* c2: !( x1=1 )

Deixar entrar l’altre.d2: x2:= 1

e2: x2:= 0f2: ZC2

Epíleg.g2: x2:= 1

Figura 4.3.: Quart intent

solament per insistir a demanar permís. La variable torn indica qui té el dretd’insistir. Quan no s’insisteix s’entra en una iteració considerada fora de la ZC.Observeu que si un procés posa la seva a zero (vol entrar) i troba que la de l’altre procés val 1, llavors entra a la zona ZC immediatament.

Exercici 4.4A l’algorisme de Dekker, demostreu que les expressions següents són inva-riants. Feu-ho amb picardia, demostrant primer les més fàcils:

0 : (torn = 1)∨ (torn = 2)1 : (1 = 1)∨ (1 = 0)2 : (2 = 1)∨ (2 = 0)3 : (1 = 1)↔ t(1)∨ t(b1)∨ t(g1)∨ t(h1)4 : (1 = 0)↔ t(c1)∨t(d1)∨t(e1)∨t(ƒ1)∨t(1)∨t(j1)∨t(k1)5 : (2 = 1)↔ t(2)∨ t(b2)∨ t(g2)∨ t(h2)6 : (2 = 0)↔ t(c2)∨t(d2)∨t(e2)∨t(ƒ2)∨t(2)∨t(j2)∨t(k2)

Exercici 4.5Demostreu que l’expressió:

: ¬ (cjk1∧ cjk2)

on cjk1 : t(1) ∨ t(j1) ∨ t(k1) i cjk2 : t(2)∨ t(j2) ∨ t(k2) és uninvariant, i per tant l’algorisme de Dekker garanteix l’EM.

76

Page 89: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Algorisme de Dekker.VAR

Indicadors d’estar (0), o de no estar (1) a la ZC ni tenir intenció d’entrar-hix1, x2: Tp0o1

Indicador de qui té el torn per insistir per entrar a la ZCtorn: Tp1o2

Indicar que, al principi, els dos processos sóo fora de la ZCx1:= 1x2:= 1

torn:= 1| |

P1

* ∞a1: ZNC1Demanar per entrar a ZC i fer-ho

b1: x1:= 0Demanar permís

* c1: !( x2=1 )

?

d1: torn=2Deixar d’insistir,mentre és el torn de P2

f1: x1:= 1

* g1: torn=2

Nilh1: x1:= 0

ElseInsistir

e1: Nil

i1: ZC1Alliberar ZC. Donar el torn a P2

j1: torn:= 2k1: x1:= 1

P2

* ∞a2: ZNC2Demanar per entrar a ZC i fer-ho

b2: x2:= 0Demanar permís

* c2: !( x1=1 )

?

d2: torn=1Deixar d’insistir,mentre és el torn de P1

f2: x2:= 1

* g2: torn=1

Nilh2: x2:= 0

ElseInsistir

e2: Nil

i2: ZC2Alliberar ZC. Donar el torn a P1

j2: torn:= 1k2: x2:= 1

Figura 4.4.: Algorisme de Dekker

77

Page 90: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

L’algorisme de Dekker és absent de bloqueig (viu), livelock. Aquest estat cor-respon als dos processos iterant a les seves iteracions de demanar permís. In-tentarem demostrar que aquesta situació no pot mantenir-se sempre.

La variable torn pot tenir dos valors: 1 i 2. Suposarem que val 1, l’altre cas éssimètric.

Si torn val 1, P1 repeteix les sentències c1, d1, e1 indefinidament, si, com hemsuposat, som a l’estat de bloqueig. En canvi, per al mateix valor 1 de torn, P2entra eventualment al bucle intern format per g2. Però, en aquest bucle intern2 = 1. Per tant, P1 sortirà del bucle anterior duent a terme la transició c1 → 1,a causa del valor de 2.

Podem formalitzar una mica més aquest raonament: Suposem que els dos pro-cessos són dins els bucles de demanar permís. Els dos volen entrar i són certs elsinvariants:

P1 : c1∨ d1∨ e1∨ ƒ1∨ g1∨ h1

iP2 : c2∨ d2∨ e2∨ ƒ2∨ g2∨ h2

per tant, P : P1 ∧ P2 és també cert. Tenint en compte 0, suposem quetorn = 1, P1 té el dret d’insistir per entrar a la seva ZC. Llavors:

(torn = 1)∧ P1 −→ eentment permnent (c1∨ d1∨ e1).

També,

(torn = 1)∧ P2 −→ eentment permnent (c2∨ d2∨ ƒ2∨ g2).

Això no és del tot formal. Hem usat l’operador eventualment i permanentment, elqual no hem definit encara. Indica que la fórmula següent serà certa, no ara, sinóen el futur i d’un mode permanent. Per continuar, caldria una lògica temporal[16]. Aquests apunts no hi entren.

En el següent invariant formulem el fet que en la situació anterior 2 valdrà 1,al final:

c2∨ d2∨ ƒ2 ∨ g2 −→ eentment permnent (2 = 1).

Finalment:

(c1∨ d1∨ e1) ∧ (2 = 1) −→ eentment t(1)

per tant, P1 surt del suposat bucle indefinit, i entra a la seva ZC. El que s’ha fetno és cap demostració, tan sols és un esquema del que podria ser la demostració,si poguéssim incloure els nous operadors.

Solució de Lamport o del forn

Dos processos

Simulem un forn de pa (botiga) on els clients (els processos) han d’agafarnúmero per ser servits, a la ZC. El número agafat és sempre més gran que eldels altres clients. Quan el número val zero, indiquem que el client és fora de labotiga.

78

Page 91: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Algorisme del forn (bakery) per a 2 processosVAR

n1, n2: integern1:= 0n2:= 0| |

P1

* ∞a1: ZNC1Agafar el numero

b1: n1:= n2 + 1Demanar permís

* c1: !( n2=0 OR n1=<n2 )

Nild1: ZC1e1: n1:= 0

P2

* ∞a2: ZNC2Agafar el numero

b2: n2:= n1 + 1Demanar permís

* c2: !( n1=0 OR n2<n1 )

Nild2: ZC2e2: n2:= 0

Figura 4.5.: Algorisme del forn amb dos processos

Exercici 4.6Demostreu que:

1 : t(c1)∨ t(d1)∨ t(e1)→ (n1 > 0)

2 : t(c2)∨ t(d2)∨ t(e2)→ (n2 > 0)

3 : t(d1)→ (n2 = 0∨ n1 ≤ n2)

4 : t(d2)→ (n1 = 0∨ n2 < n1)

són invariants en l’algorisme del forn anterior. Demostreu també, en el mateixalgorisme, la propietat d’exclusió mútua. El cas més complicat és en la transicióc1 − d1 quan t(d2) =cert. Si la transició es dóna, l’exclusió mútua quedainvalidada. Useu els invariants anteriors per demostrar que n2 = 0 val fals enl’estat inicial de la transició. En aquest estat demostreu, a més a més, que de1 i de 4 es dedueix que n1 ≤ n2 val fals, llavors la transició no pot donar-se.

Exercici 4.7El model anterior no és vàlid, ja que les sentències b1 i b2 tenen dues re-ferències crítiques cada una. L’esquema següent mostra el model fet vàlid,subdividint en dues cada una de les dues sentències anteriors:

79

Page 92: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Algorisme del forn, validatVAR

n1, n2: integerr1, r2: integer

n1:= 0n2:= 0| |

P1

* ∞a1: ZNC1Agafar número

b1: r1:= n2c1: n1:= r1+1

Demanar permís

* d1: !(n2=0 OR n1=<n2)

Nile1: ZC1f1: n1:= 0

P2

* ∞a2: ZNC2Agafar número

b2: r2:= n1c2: n2:= r2+1

Demanar permís

* d2: !(n1=0 OR n2<n1)

Nile2: ZC2f2: n2:= 0

Demostreu que aquest algorisme no garanteix EM. Feu-ho construint un camí(entrellaçament) adient. (Feu avançar P2 quan P1 està agafant número).

De l’observació que l’algorisme del forn validat no garanteix exclusió mútua, in-troduïm un nou algorisme validat, modificat de manera que un procés esperi quel’altre hagi dut a terme la sentència c, abans d’entrar pròpiament a demanarpermís. El teniu a la figura 4.6. Definim intuïtivament els següents invariants debase, associats a aquest algorisme:

n : n1 ≥ 0 ∧ n2 ≥ 0 , r : r1 ≥ 0 ∧ r2 ≥ 011 : e1 ∨ ƒ1 ∨ g1 ∨ h1 ∨ 1 → n1 > 012 : 1 ∨ b1 ∨ c1 ∨ d1 → n1 = 021 : e2 ∨ ƒ2 ∨ g2 ∨ h2 ∨ 2 → n2 > 022 : 2 ∨ b2 ∨ c2 ∨ d2 → n2 = 01 : 1 = 0 ∨ 1 = 12 : 2 = 0 ∨ 2 = 110 : 1 ∨ b1 ∨ ƒ1 ∨ g1 ∨ h1 ∨ 1 → 1 = 0

11 : c1 ∨ d1 ∨ e1 → 1 = 120 : 2 ∨ b2 ∨ ƒ2 ∨ g2 ∨ h2 ∨ 2 → 2 = 021 : c2 ∨ d2 ∨ e2 → 2 = 1h1 : (h1 ∨ 1) → (n2 = 0 ∨ n1 ≤ n2)h2 : (h2 ∨ 2) → (n1 = 0 ∨ n2 < n1)

Exercici 4.8Demostreu els invariants anteriors pel mètode de la MTF. Després, demostreutambé l’invariant:

EM : ¬[(h1 ∨ 1) ∧ (h2 ∨ 2)]

80

Page 93: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Algorisme del forn, validat i modificatVAR

n1, n2: integerr1, r2: integerx1, x2: integer

n1:= 0n2:= 0x1:= 0x2:= 0| |

P1

* ∞a1: ZNC1b1: x1:= 1c1: r1:= n2d1: n1:= r1+1e1: x1:= 0

* f1: !(x2=0)

Nil

* g1: !(n2=0 OR n1=<n2)

Nilh1: ZC1i1: n1:= 0

P2

* ∞a2: ZNC2b2: x2:= 1c2: r2:= n1d2: n2:= r2+1e2: x2:= 0

* f2: !(x1=0)

Nil

* g2: !(n1=0 OR n2<n1)

Nilh2: ZC2i2: n2:= 0

Figura 4.6.: Algorisme del forn validat i modificat

81

Page 94: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

n i r no són inductius (no es poden demostrar independentment), però n∧ rsí ho és. h1 i h2 tampoc són inductius relatius als anteriors; calen nousinvariants per a les transicions d2− e2 i d1− e1. Trobeu-los.

Absència de bloqueig viu. Hi ha quatre invariants, corresponents a les quatrepossibilitats teòriques de bloqueig viu.

AB11 : g1 ∧ g2 → (n2 = 0 ∨ n1 ≤ n2) ∨ (n1 = 0 ∨ n2 < n1)AB21 : ƒ1 ∧ ƒ2 → (2 = 0) ∨ (1 = 0)AB12 : g1 ∧ ƒ2 → (n2 = 0) ∨ (n1 ≤ n2) ∨ (1 = 0)AB21 : ƒ1 ∧ g2 → (2 = 0) ∨ (n1 = 0 ∨ n2 < n1)

AB11 és vàlid independentment del programa, ja que n1 ≤ n2 ∨ n2 < n1 sempreés cert.

Exercici 4.9Demostreu els invariants AB21, AB12 i AB21 partint dels invariants de basedemostrats anteriorment.

N processos

L’esquema de l’algorisme del forn per a N processos es representa a la figura4.7..

La iteració de paral.lelisme, (|| := 1..N), significa que tenim N processosparal.lels, l’índex del procés general és . El vector n(·) guarda el número que entot moment té cada procés. Tot procés, quan és dins el forn té número n() > 0.Dins el forn pot estar esperant per entrar a la zona crítica o bé dins la zona crítica.Quan és fora del forn n() = 0. La figura 4.8. representa el procediment booleà delcriteri per determinar si el procés és anterior al j. És referenciat per l’algorismede la figura 4.7..

Comproveu que és possible que dos o més processos tinguin el mateix número.Quan els dos números són iguals, llavors es decideix segons els índexs dels dosprocessos. Fixeu-vos que si el procés ha comprovat que és anterior a un procés,el j, passa a comprovar si és anterior al següent procés, el j+1. No cal que vigilimés els números dels processos 1,2, . . . , j. Això és degut a que aquests processosentraran sempre després d’ell.

Comproveu que existeix un camí (entrellaçament) en el qual els números de doso més processos poden créixer sense límit. Per tant, la MTF té infinits estats.

82

Page 95: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Algorisme del forn per a N processosVAR

Els números de cada procésn: ArrayNNaturals

Indicadors d’estar agafant númeroan: ArrayN1_0

n:= 0’san:= 0’s| | i:= 1..N

Pi, el procés i

* ∞ai: ZNCiEscollir número, a l’entrar

bi: an(i):= 1ci: n(i):= max(n(1), ..., n(N))di: an(i):= 0

Dins el fornConsultar els altres (j) processos fins que jo (i) tingui el dret d’entrar

* j:= 1..N?

ei: !(j=i)Si Pj està escollint n, esperar que acabi

* fi: an(j)=1

NilEsperar a que Pi pugui entrar abans de Pj

* gi: !(n(j)=0 OR anterior(i,j))

Nil

j=iNil

hi: ZCiii: n(i):= 0

Figura 4.7.: Algorisme del forn per N processos

83

Page 96: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

anteriorINT

RESb: bool

POSb cert si n(i)<n(j)sinó, si n(i)=n(j) i i<jEn tot altre cas val fals

PARi: integerj: integern: ArrayNEnter

PREi>=0j>=0!(i=j)!(n(j)=0)

ALG?

n(i)<n(j)b:= true

(n(i)=n(j)) AND i<jb:= true

Elseb:= false

Figura 4.8.: Funció booleana per anterior

4.4 Solució basada en una instrucció especial

La instrucció i primeres propietats

Fins ara hem treballat ambmodels en PADD de sistemes amb processos formatsper seqüències d’instruccions màquina. Darrera un model podeu sempre veure-hiprocessos formats per instruccions màquina. Les figures 3.5. i 3.6. del capítol 3en dóna un exemple concret.

La problemàtica venia dels possibles entrellaçaments d’instruccions LOAD i STORE,les quals eren considerades atòmiques a causa de l’àrbitre del bus de memòriacompartida. L’àrbitre del bus garanteix el no solapament d’aquest tipus d’instruc-cions executades des de processadors diferents.

Si al repertori d’instruccions de la màquina se li afegeix una nova instrucció, lade test and set, llavors el mecanisme per garantir exclusió mútua es simplifica.Aquest apartat analitza el nou escenari.

La instrucció especial, representada com TS(), correspon a una lectura de laposició a de memòria. No obstant, dins el mateix cicle de lectura, sensealliberar el bus, escriu un zero (0) a la posició a. Aquesta instrucció esconsidera atòmica.

Per tant, si hi escrivim un 1 i molts processos duen a terme concurrentment TS(),solament un d’ells, el primer, llegirà un 1. Els altres llegiran un zero, l’escrit dinsel cicle del primer TS().

La figura 4.9. representa la solució a l’EM basada en test and set.

84

Page 97: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Assoliment d’exclusió mútua amb TSVAR

a: Tp0o1a:= 1| | k:= 1..N

Pk, procés k

* ∞ak: ZNCkPròleg

*bk: TS(a)=0

nilck: ZCk.Epíleg

dk: a:= 1

Figura 4.9.: Mecanisme per garantir EM basat amb TS

La iteració que demana permís és totalment simbòlica, no funciona en PADD.Seria equivalent al segment de programa assamblador:

bucle TS r aBEQZ r bucle

Absència de bloqueig

El mecanisme de la figura 4.9. gaudeix d’absència de bloqueig. Fem-ho pel casde dos processos. Hem de demostrar que si els dos processos iteren demanantpermís, sempre un d’ells pot sortir. Podem formular això amb l’invariant:

AB : b1 ∧ b2 → ( = 1).

Intentem demostrar-lo:- Estat inicial: b1 = b2 = ƒs, antecedent fals, AB cert.- Transicions crítiques: {1− b1, b1− c1, d1− 1, 2− b2, b2− c2, d2− 2}- a1-b1. Cas b2 = cert, al final antecedent cert però no podem garantir que = 1.

No podem demostrar aquest invariant directament. Es demostra a l’apartat 4.5amb la tècnica de reforç de l’invariant.

85

Page 98: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Intent de demostració de l’EM

Com fèiem altres vegades, podem formular l’invariant com:

EM : ¬ (c ∧ cj)

a causa de la simetria i j, són arbitraris. Estudiem primer el cas de N = 2 quemostra la figura 4.10.

VARa: 0..1

a:= 1| |

P1

* ∞a1: ZC1

*

b1: TS(a)=0nil

c1: ZC1d1: a:= 1

P2

* ∞a2: ZC2

*

b2: TS(a)=0nil

c2: ZC2d2: a:= 1

Figura 4.10.: Solució amb TS per a dos processos

EM : ¬(c1∧ c2)

Hem escrit c1 i c2 en comptes de t(c1) i t(c2), respectant el mateixsignificat. Intentem demostrar aquest invariant.

EM és cert a l’estat inicial, en el qual 1 i 2 valen cert. Estudiant ara latransició b1− c1: suposem EM cert a l’estat inicial de la transició, c1 val fals,per tant 2 casos: c2 fals i c2 cert.

- Cas c2 cert. Ens interessaria que fos invariant:

: c2 → ( = 0) o be 2 : b1∧ c2 → ( = 0).

Solament així podem demostrar rigorosament que la transició no pot donar-se.

Intentem demostrar:

1 : c2 → ( = 0).

Transició d1–1: suposem 1 cert a l’inici. Dos casos: c2 = cert i c2 = ƒs.

86

Page 99: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

- Cas c2 = ƒs, continua fals al final i 1 cert en l’estat final de la transició.

- Cas c2 = cert, vol dir que = 0 val cert a l’estat inicial de la transició(de la suposició que 1 val cert a aquest estat inicial). c2 continua certal final de d1–1, la qual força que = 1 al final, per tant 1 FALS alfinal.

Sembla que NO PODEM DEMOSTRAR 1 pel mètode usual. Intenteu-ho vosal-tres.

Intentem ara demostrar:

2 : b1∧ c2 → ( = 0).

Transició 1 − b1: a l’inici l’antecedent de 2 fals (b1 = ƒs) per tant, doscasos: = 0 i = 1.

Cas = 1: subcasos c2 = cert ó c2 = ƒs.

Subcas c2 = cert. Al final transició (1− b1) c2 = cert i b1 = cert,per tant antecedent cert però continua valent 1 amb la qualcosa el conseqüent és fals i 2 val fals al final de la transició.

SEMBLA QUE TAMPOC PODEM DEMOSTRAR 2. Intenteu-ho vosaltres.

Exercici 4.10Repetiu l’anterior intent de demostració, però amb l’invariant:

′EM

: ¬ ((c1∨ d1)∧ (c2∨ d2)).

Us en sortiu?

L’EM del mecanisme amb TS es demostra a l’apartat 4.5 amb la nova tècnica ambreforç de l’invariant proposat.

Crítica de la solució basada en TS

Entre els inconvenients de la solució amb la instrucció de TS tenim els següents:

1. La fallida d’una posició de memòria pot aturar el sistema.

2. Espera activa. Inconvenient compartit amb totes les solucions vistes fins elmoment.

3. No aplicable quan no disposem d’un processador amb TS.

4. L’equitativitat no està garantida. L’àrbitre solament seqüencialitza TS’s dediferents processadors. No té visió de conjunt, entre més d’un TS concurrent,l’àrbitre no sap qui fa més temps que demana entrar sense aconseguir-ho.

87

Page 100: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

5. Un procés pot passar fam. El camí següent ho posa de manifest.

P Pj : ZNC ——

b : TS() = 0 cert —— 0—— dj : := 1 0—— j : ZNCj 1—— bj : TS() = 0 ƒs 1—— cj : ZCj 0

b : TS() = 0 cert —— 0—— dj : := 1 0—— j : ZNCj 1—— bj : TS() = 0 ƒs 1—— cj : ZCj 0

b : TS() = 0 cert —— 0. . . . . . . . .

4.5 Verificació amb reforç de l’invariant

Aquesta nova tècnica intenta demostrar un invariant més fort, en sentit lògic,que el que es vol demostrar originàriament. Recordeu que la fórmula F és mésforta que la D si en tot estat, valuació de les seves variables, en el qual F val certD també, però no necessàriament a l’inrevés. Per exemple, A ∧ B és més fortaque A o que B.

Per demostrar absència de bloqueig:

AB : b1 ∧ b2 → ( = 1)

apliquem el mètode de reforç de l’invariant proposat. Hem de reformular l’in-variant proposat de manera que el nou invariant impliqui l’anterior, per exemplecom:

AB : [(b1∨ 1)∧ (b2∨ 2)] → ( = 1).

Observeu com AB → AB, doncs (b1∧ b2) → [(b1∨ 1) ∧ (b2∨ 2)].

Per tant, si podem demostrar que AB és invariant, AB quedarà automàticamentdemostrat.

Demostració 4.3- Estat inicial: antecedent i conseqüent certs, AB cert.- Transicions crítiques: {d1−1, (1−b1), b1−c1}, i les simètriques {d2−2,(2− b2), b2− c2}.

- d1− 1: al final de la transició, conseqüent cert i AB cert.

- 1 − b1: si AB cert a l’inici, també cert al final de la transició, ja que lasubfórmula (b1∨ 1) no canvia de valor.

88

Page 101: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

- b1 − c1: al final de la transició, 1 ∧ b1 fals i antecedent fals, per tant ABcert.

Per obtenir un invariant més fort que EM composarem l’expressió de l’EM ambaltres fórmules que també esperem que siguin invariants. Llavors, les demostrempel mateix mètode, totes a l’hora.

Com exemple, en el cas que ens ocupa, representat a la figura 4.10., podemreforçar l’invariant de la forma següent:

EMƒ : ¬ (cd1∧ cd2)∧ (cd1 → ( = 0))∧ (cd2 → ( = 0))

on

cd1 : c1∨ d1 i cd2 : c2∨ d2.

Fixeu-vos com EMƒ → ′EM

.

Demostració 4.4- Estat inicial: cd1 i cd2 falsos, amb el qual les tres fórmules composades enconjunció en EMƒ valen cert.- Transicions crítiques: {b1− c1, d1− 1}, i les simètriques.

- d1 − 1: al final de la transició = 1 i cd1 i cd2 falsos, amb el qual les tresfórmules composades en conjunció en EMƒ valen cert.

- b1− c1: podem considerar dos cassos completament diferents. Si P2 és dinsla ZC o no hi és. Corresponen als dos estats lògics de cd2. En els doscasos hem de fer ús de la suposició que EMƒ val cert a l’estat inicial de latransició.

- cd2 cert en l’eit. Per EMƒ cert = 0 en l’eit i, llavors b1 − c1 no estàactivada.

- cd2 fals en l’eit. Al final de la transició cd2 continua fals, amb el qual¬ (cd1 ∧ cd2) i cd2 → ( = 0) valen cert. cd1 → ( = 0) val certdegut al funcionament de la transició de TS, al final de la transició = 0.

Exercici 4.11Apliqueu el mètode MTF per demostrar que EMƒ és invariant de la solució al’exclusió mútua basada en la instrucció de test and set amb dos processos.

L’exercici següent demostra el cas de N processos.

Exercici 4.12Tècnica de demostració per reforç (strengthening) del que es vol demostrar.Intenteu demostrar l’ invariant del programa anterior:

A : ∀, j{( 6= j)→ ¬(Z ∧ Zj)}

89

Page 102: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

el qual és equivalent a:

A : ¬(∃, j{( 6= j)∧ Z ∧ Zj})

onZ : t(c)∨ t(d)

i els índexs i j prenen valors en l’interval (1..N).

Demostreu, però, que l’invariant reforçat:

: A ∧ B

on

B : ∀{Z → ( = 0)}

és un invariant del programa anterior i per tant, A també.

4.6 EM pròpiament distribuïda

Introducció

En moltes aplicacions, es vol exclusió mútua en l’accés a zones crítiques de pro-cessos paral·lels que no comparteixen memòria. En aquests sistemes pròpiamentdistribuïts, el permís per entrar s’ha de demanar a un tercer procés que actuï d’àr-bitre. Penseu, per exemple, en un sistema client-servidor on el servidor, en totinstant, solament pot estar comunicant amb un sol client per donar-li el servei. Elservidor fa d’àrbitre, donant pas als clients que han demanat servei. Els atendràun darrera l’altre. Aquesta secció analitza un model d’aquest tipus de sistema.

El model

Suposarem que els clients quan necessiten el servei el demanaran al servidor ambcomunicacions síncrones, ja que al ser un sistema pròpiament distribuït no hi havariables a memòria compartida. No obstant, a diferència del model simplificatde l’apartat 3.7, hi ha moments en els quals els clients no demanen servei. Lafigura 4.11. representa el model. Hi ha dos clients en paral·lel entre ells i ambel servidor-àrbitre. Solament es vol analitzar l’aspecte de sincronisme, exclusiómútua, etc. Per això, no es modela l’activitat pròpia de servei.

La notació (t + 1) MOD 2 fa prendre a t els valors 1 i 2, cíclicament.

(t + 1) MOD 2 =�

2 si t = 11 si t = 2

90

Page 103: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

conp(1..2): nil

| |Servidor-àrbitre

vart: 1..2:= 1

* ∞a1:-?

true, <>p(t)a2: <>p(t)

true, nilComnil

a3:t:=(t+1)MOD 2

Clients| |

P1

* ∞c11: ZNCc12: []p(1)c13: ZCc14: []p(1)

P2

* ∞c21: ZNCc22: []p(2)c23: ZCc24: []p(2)

Figura 4.11.: Model amb àrbitre distribuït

Com sempre, l’atomicitat és a nivell de sentència. La selecció de comunicacionsfunciona amb prioritat a l’esquerra, tal com es defineix a l’apartat 2.3 del capítol2. També, tot parell de comunicacions síncrones defineix un àtom en l’execuciódel qual els comptadors de programa dels processos emissor i receptor avancen,tal com especifica l’apartat 3.7. Es suposarà que tots els àtoms acaben en tempsfinit, incloent el de la ZNC.

Propietats i verificació

Per detallar el funcionament del model es proposen propietats que el descriguin;després es demostraran. La primera propietat és l’EM, naturalment.

EM : ¬(c134∧ c234)

on c134 : t(c13) ∨ t(c14) i c234 : t(c23) ∨ t(c24). S’ha suposat lazona crítica formada per dos valors del comptador de programa. Si satisfà EM enaquest sentit ampliat, també satisfarà EM considerant solament l’àtom ZC.

S’intueix que si P1 és a c134, el servidor estarà a 2 amb t = 1, ja que hauràcomunicat per la connexió p(1), també és cert a l’inrevés; el mateix val si P2 ésa c234. Per tant, dues propietats de base que es proposen són

1 : t(2)∧ t = 1↔ c134

i2 : t(2)∧ t = 2↔ c234.

El problema 4.5 demana demostrar aquests dos invariants i EM.

La segona propietat a considerar és l’absència de bloqueig: si els dos clientsdemanen per entrar, o sigui t(c12)∧t(c22) val cert, al menys un entrarà. Pertal que un procés entri, l’àrbitre ha d’estar a 1 i t ha de valer 1 o 2. Així doncs,la formulació de l’absència de bloqueig serà:

AB : t(c12)∧ t(c22)→ eentment ((t = 1∨ t = 2)∧ t(1)).

91

Page 104: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

En aquest estat l’àrbitre durà a terme la transició 1 − 2 i un dels dos clientsentrarà, a causa de la prioritat a l’esquerra de la selecció. Ha calgut usar l’opera-dor eventualment introduït a l’apartat 4.3. Per tant, no es farà servir l’entorn dedemostració usual.

Per justificar aquesta propietat, cal raonar que l’àrbitre iterarà indefinidament,encara que cap client demani per entrar a la ZC i que, en les iteracions succes-sives, els valors de t aniran alternant. Amb el qual, en tot moment, eventualmentt(1) ∧ t = 1 serà cert i, també t(1) ∧ t = 2. La frase en tot moment in-clou l’estat on els dos clients estan demanant per entrar, per tant AB quedaràjustificada.

Per formular aquest comportament de l’àrbitre es necessiten els operadors sem-pre i eventualment, tal com en l’algorisme de Dekker a l’apartat 4.3. Es fa ambles formulacions següents:

Arb1 : sempre eentment (t(1)∧ t = 1)

iArb2 : sempre eentment (t(1)∧ t = 2).

Justificació dels invariants Arb1 i Arb2. Es justifica el primer, el segon es fariade la mateixa manera. S’ha de justificar que sempre eventualment el control del’àrbitre estarà a 1 amb t = 1.

S’ha de raonar que a l’estat inicial del model el control de l’àrbitre és a 1 isempre que és a 1 tornarà a 1, per tant el cicle no s’acabarà mai. Justifiquemprimer la part relativa a 1; després s’entrarà en el valor de t.

El control torna a 1, ja que si el control de l’àrbitre és a 1, la selecció de comuni-cacions té prioritat a l’esquerra i escollirà l’alternativa de la dreta quan cap clientdemani per entrar a ser servit. Aquesta alternativa és buida i el control passarà a3. Però, el mateix succeirà quan, estant a 1, algun client demani per entrar; jaque obligadament, s’escollirà l’alternativa de l’esquerra i el control passarà a 2i d’allà a 3.

En relació als valors de t, en la transició 3 − 1 els valors de t van alternantentre 1 i 2 en les iteracions consecutives, independentment de l’alternativa se-leccionada. Per tant, en les successives passades per 1 els valors de t aniranalternant.

Absència de fam individual. El compliment de l’absència de bloqueig no diures del de l’absència de fam individual, ja que la primera podria complir-se entrantsempre un dels dos clients. Es formula de la manera següent:

AF : sempre(t(c12)→ eentment t(c13))

correspon al cas del primer client. AF es compleix a causa de Arb1 i a la prioritata l’esquerra de la selecció.

Selecció no determinista. Canviem ara la semàntica de la selecció. Fins a-quest punt s’ha treballat suposant prioritat a l’esquerra. En aquest nou escenaril’àrbitre pot estar a 1 i els clients a c12 i c22 i l’alternativa de la dreta ser sempreseleccionada. Encara que molt poc probable aquest comportament és possible.L’àrbitre estaria iterant, Arb1 i Arb2 es compleixen, però cap client entraria. Pertant, el model no compleix l’absència de bloqueig ni l’absència de fam individual.Encara que AB es compliria, no formularia l’absència de bloqueig en el cas nodeterminista. AF formularia bé l’absència de bloqueig però no es compliria. Enel referent a l’EM, EM i els invariants de base 1 i 2 continuarien complint-se. Són

92

Page 105: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

propietats de seguretat. Les propietats que es formulen amb l’operador eventual-ment són propietats de vivacitat; repasseu les definicions d’aquestes nocions a lasecció 3.3.

MTF del model

Les propietats que podem demostrar, amb els mètodes de demostració exposats,són invariants. Expressat en altres paraules, valen cert en tot estat assolible de laMTF del model. Les demostracions eviten haver de construir aquesta MTF, perquèpodríem també demostrar els invariants, comprovant que en tot estat de la MTFsón certes. Això comportaria processar tots els estats i seria molt laboriós enMTFs amb un nombre finit d’estats i seria impossible quan el nombre d’estats noestà acotat.

Aprofitant que la MTF del model de la figura 4.11., sobre el qual estem treballant,té un nombre finit d’estats, i per adonar-nos de tot això, aquest apartat analitzaaquesta MTF. Es mostra a la figura 4.12.. No és gens pràctic construir aquesta

1 a1 c11 c21 1 a3 c11 c21

1 a1 c11 c22 1 a1 c12 c21 1 a3 c12 c21

2 a1 c12 c21

2 a1 c11 c21 2 a3 c11 c21

2 a1 c11 c22 2 a1 c12 c22 2 a3 c11 c22

1 a1 c11 c22

1 a1 c12 c22

1 a3 c11 c22

1 a3 c12 c22

1 a1 c11 c21

1 a2 c13 c22

1 a2 c14 c22

1 a2 c13 c21

1 a2 c14 c21

2 a1 c12 c22

2 a3 c12 c21

2 a3 c12 c22

2 a1 c11 c22

2 a2 c12 c23

2 a2 c12 c24

2 a2 c11 c23

2 a2 c11 c24

a2–c14 a2–c24

c21

a2–c24

c23

a1–c22

c23

a1-c22c11

c11

c11

ZC2

a3

a3

c11

c11c21c11a1–c22

c21 c11 c21

a3

c11c21

a3

a3

a3

c11 c21 a1–c12

c21 c11

a1 a3 a1

c21 c11

a3c21

c21

c21

a1–c12

c13

a2–c14

c11

c13

a1–c12ZC1

a3

a3

28 estats accessibles

a1, a1-c12, a2-c14, c13, c11a3, a1-c22, a2-c24,c23, c21

Transicions:

c11apareix 8 vegadesa3 apareix 6 vegades, etc.

c21

Figura 4.12.: MTF del model de la figura 4.11.

MTF i és molt fàcil cometre errors. La MTF correspon a les suposicions que s’hanexposat anteriorment pel model. Per exemple, les sentències ZNC acaben entemps finit.

Per exemple, observeu en aquesta MTF com el model gaudeix d’exclusió mútua,ja que en cap estat tenim c13 i c23 ni c14 i c24, ni c13 i c24 ni c14 i c23.Els estats on, separadament, cada un dels processos és a la seva zona crítica,ZC1 i ZC2, estan indicats en la MTF. Comproveu també que 1 i 2 es compleixenen tots els estats.

93

Page 106: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

4.7 Resum

Treballant sobre una sèrie d’exemples que garanteixen l’exclusió mútua, aquestcapítol ha servit d’exercici per formular i verificar propietats. S’han formulat: ex-clusió mútua, absència de bloqueig i absència de fam individual. També propietatsde base lligades a l’estructura dels models.

Molts exemples eren tan sols intents per garantir exclusió mútua. No servien, jaque o bé no la garantien, o bé no garantien l’absència de bloqueig. Els models deDekker, Lamport i de la instrucció especial poden ser usats a la pràctica.

S’han practicat tres tipus de demostració: el mètode inductiu, la reducció a l’ab-surd i la construcció d’entrellaçaments. Els tres mètodes són rigorosos. Els dosprimers són positius, en tant que demostren la certesa de l’invariant; el tercerés negatiu, perquè tan sols pot demostrar que l’invariant és fals; al construir unentrellaçament concret que té un estat que no el satisfà. Per tant, el tercer potdemostrar que l’exclusió mútua no es compleix, que l’absència de bloqueig o defam individual no es compleixen.

S’han pogut veure, també, les limitacions dels mètodes de verificació de propie-tats. En l’exemple sobre la instrucció especial, el mètode inductiu no ha pogutdemostrar l’exclusió mútua, tot i ser aquesta un invariant. S’ha introduït el mè-tode inductiu amb reforç de l’invariant el qual l’ha pogut demostrar.

Les propietats d’absència de bloqueig i d’absència de fam individual s’han pogutformular en casos senzills, en els quals les iteracions d’espera tenien una solasentència. En alguns casos, s’han pogut demostrar amb el mètode inductiu i enaltres, s’han pogut invalidar construint un entrellaçament.

En el cas més complicat de la solució de Dekker, el qual compleix l’absència defam individual, no s’ha pogut formular aquesta propietat. Per poder fer-ho, s’hanproposat operadors de futur: eventualment i per sempre en el futur, necessi-taríem una altra lògica que tingués aquests operadors. Els apunts no hi entren.Són les lògiques temporals [16]. En l’exemple de la secció 4.6 també han sor-tit aquests operadors temporals. Els raonaments per verificar propietats ambaquests operadors no se’ls hi ha donat el nom de demostració.

Les esperes de tots els exemples treballats en aquest capítol són actives. O sigui,el processador està ocupat en una iteració demanant permís per continuar. Noobstant, els mètodes de verificació treballats també valen per models on els pro-cessos esperen sense consumir temps de processador. Aquests models corrensobre un mecanisme que pugui prendre el processador al procés, fer-lo esperaren una cua, i donar el processador a un altre procés que esperava en una altracua. Aquests mecanismes pertanyen al nucli del sistema operatiu i estan encap-sulats en els semàfors. El capítol següent aplica els mètodes de verificació enaquest nou escenari.

4.8 Problemes

Problema 4.1El model següent correspon a un sistema amb dos processadors amb memòriacompartida. Demostreu que el processador P1 pot passar fam, construint una

94

Page 107: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

execució (entrellaçament) adient. Doneu el model ampliat amb sentències delayque genera la traça anterior.

x1:= 1x2:= 1| |

P1

* ∞a1: ZNC1b1: x1:= 0

* c1: NOT(x2=1)

d1: x1:= 1e1: x1:= 0

f1: ZC1g1: x1:= 1

P2

* ∞a2: ZNC2b2: x2:= 0

* c2: NOT(x1=1)

d2: x2:= 1e2: x2:= 0

f2: ZC2g2: x2:= 1

Solució

P1 P2 x1 x2

b1: x1:= 0 - 1 1- b2: x2:= 0 0 1

c1: NOT (x2=1) (T) - 0 0d1: x1:= 1 - 0 0

- c2: NOT (x1=1) (F) 1 0- f2: ZC2 1 0- g2: x2:= 1 1 0- a2: ZNC2 1 1

e1: x1:= 0 - 1 1- b2: x2:= 0 0 1

c1: NOT (x2=1) (T) - 0 0d1: x1:= 1 - 0 0

- c2: NOT (x1=1) (F) 1 0

Observeu ara com la seqüència b2, c1, d1, c2, ƒ2, g2, 2, e1 pot repetir-seperiòdicament. En ella P1 repeteix indefinidament el bucle c1, d1, e1 en elqual demana permís per entrar a la ZC, mentre P2 entra a la seva ZC (ƒ2 :) unnombre indefinit de vegades.

95

Page 108: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Model ampliat amb sentències delay:

x1:= 1x2:= 1| |

P1

* ∞delay(0.5)a1: ZNC1delay(1)b1: x1:= 0delay(1)

* c1: !(x2=1)

d1: x1:= 1delay(2)e1: x1:= 0delay(1)

f1: ZC1g1: x1:= 1

P2

* ∞delay(1)a2: ZNC2delay(1)b2: x2:= 0delay(1)

* c2: !(x1=1)

d2: x2:= 1e2: x2:= 0

f2: ZC2g2: x2:= 1

Problema 4.2Demostreu que la transició τc1→d1 del programa:

x1:= 1x2:= 1| |

P1

* ∞a1: ZNC1b1: x1:= 0

* c1: not( x2 = 1 )

Nild1: ZC1e1: x1:= 1

P2

* ∞a2: ZNC1b2: x2:= 0

* c2: not( x1 = 1 )

Nild2: ZC1e2: x2:= 1

no invalida l’invariant:

EM : ¬(t(d1)∨ t(e1))∧ (t(d2)∨ t(e2))

Feu solament el cas en el qual P2 és dins la zona crítica. Suposeu demostratsels invariants:

t(c1)∨ t(d1)∨ t(e1)→ (1 = 0)

96

Page 109: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

t(c2)∨ t(d2)∨ t(e2)→ (2 = 0).

Solució Si P2 és dins la zona crítica, t(d2)∨ t(c2) val cert. Llavors, delsegon dels dos últims invariants deduïm que 2 = 0 val també cert. Per tant,¬(2 = 1) pren el mateix valor lògic i la transició τc1−d1 no està activada.

Problema 4.3Considereu el programa del problema 4.1.()- Formuleu l’invariant corresponent a la propietat d’exclusió mútua.(b)- Demostreu pel mètode de la màquina de transicions finites (MTF) la propie-tat d’exclusió mútua. Suposeu demostrats els invariants:

1 : (1 = 0)↔ t(c1)∨ t(d1)∨ t(ƒ1)∨ t(g1)

i

2 : (2 = 0)↔ t(c2)∨ t(d2)∨ t(ƒ2)∨ t(g2).

(c)- Demostreu 1 pel mètode MTF.(d)- Es compleix la propietat d’absència de bloqueig viu (livelock)? Demostreula resposta.

Problema 4.4()- En un sistema multicomputador, dos processos:

P1(<>adq1,<>allib1) i P2(<>adq2,<>allib2),

la durada dels quals és indefinida, han d’usar un sol recurs amb exclusió mútua.Les connexions <>adqi i <>allibi (i=1,2) són usades per ells per demanar a untercer procés el permís per adquirir i alliberar el recurs. Aquest és el format dela crida al procés:[]adq1, []adq2, []allib1, []allib2:= Control(). P1, P2 i Control funcionen con-nectats en paral·lel. Es demana el diagrama PADD complet, com a procediment,del proces Control a fi que controli l’exclusió mútua dels dos processos respecteel recurs.

Problema 4.5En el model de la figura 4.11. de la secció 4.6, demostreu 1 amb el mètodeinductiu. Amb el qual, per simetria, queda també demostrat 2. Demostreutambé EM. Aquests tres invariants figuren també en la secció 4.6. Repasseuprimer l’exemple de la secció 3.7.

97

Page 110: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

98

Page 111: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

5 Modelat i verificació amb semàfors

5.1 Introducció

El semàfor dóna un mecanisme de sincronització de processos en els modelsamb memòria compartida. Tot semàfor resideix a memòria compartida. Pot atu-rar processos sense que aquests hagin d’iterar contínuament. Aquest és un nouelement que no es tenia encara. En el pròleg per demanar permís de les solu-cions estudiades fins ara, els processos iteraven consultant intermitentment unacondició booleana, sense alliberar el processador.

Entre altres funcions, el semàfor permet donar una solució per garantir l’exclusiómútua sense necessitat d’espera activa. El procés que vol entrar a una zonacrítica demana permís invocant el semàfor. Si no se li pot donar permís, el semàforel fa esperar en una cua.

Els processos que esperen són despertats durant la crida a un semàfor, per partd’un altre procés. Els processos despertats continuen tan bon punt hi hagi unprocessador lliure. Tot semàfor ha de gestionar una cua de processos on faràesperar els processos que no poden passar.

Fer esperar un procés vol dir prendre-li el processador i posar-lo en la cua dela condició. El processador queda així lliure. Aquesta és una funció de sistemaoperatiu que duu a terme el semàfor. En aquest nou marc hi haurà processos queno esperen cap condició, sols esperen un processador. A aquests el semàfor els hipot donar un processador que estigui lliure. A causa d’aquest comportament, elsemàfor té una funció de planificació temporal, és un scheduler, encara que d’unnivell bastant elemental. Però està per sobre de la planificació bàsica que es vaveure que feia l’àrbitre de memòria.

Aquest capítol exposa el funcionament del semàfor, la seva utilització en el mo-delat, i la verificació de models amb semàfors. També es donen directrius perimplementar el semàfor. Es dedueix l’invariant del semàfor, partint de les sevestransicions, i s’aplica per demostrar propietats dels models que el fan servir. Pera verificar models amb semàfors, s’usen els mètodes introduïts en els capítolsanteriors.

99

Page 112: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

5.2 Elements i propietats bàsiques

Sintaxi

Veurem el semàfor com un tipus abstracte particular. Tot semàfor concret seràuna variable de tipus semàfor. Com ja sabem, tot tipus abstracte té una repre-sentació, que és una estructura de dades per guardar a memòria un element deltipus. La representació d’un semàfor consisteix en un comptador de senyals i unacua de processos. El comptador guardarà un enter no negatiu, el qual indica elnombre de senyals que guarda el semàfor. Tots els senyals són iguals i no calguardar-los com a tals en cap cua.

Quines operacions posseeix el tipus abstracte semàfor? Les fonamentals són lessegüents:

s := ntSem(ntCont) Inicialització.P(s) Un procés vol agafar un senyal.V(s) Un procés vol dipositar un senyal.

Els noms P i V de les primitives són els escollits per en Dijkstra, el qual va proposarel semàfor i era holandès. P ve de probeer, el qual vol dir provar en holandès. Vve de verhoog, el qual vol dir incrementar, també en holandès. El curiós és que laparaula holandesa que fa un decrement és verlaag, la qual també comença ambla lletra V.

Els processos paral·lels podran invocar les operacions P i V. Abans d’entrar dins elparal.lelisme, s’inicialitzarà el semàfor donant un valor inicial (InitCount) pel seucomptador.

Semàntica

Com funciona un semàfor? Sempre fa el mateix. Si un procés invoca una P, elsemàfor li dóna un senyal si és que en té. Si no en té cap, l’atura a la seva cua deprocessos fins que algun altre procés li passi un senyal, llavors pot reemprendre elprocés aturat, tot donant-li el senyal. Queden, en aquest últim cas, dos processospotencialment executables. Si hi ha un sol processador, quin continua? Es veuràmés endavant.

Si un procés invoca una V, el semàfor mai l’atura. Es suposa sempre que elnombre de senyals que pot guardar el semàfor és il.limitat. Com hem vist abans,si hi ha un procés esperant serà despertat i se li donarà el senyal que acabad’entrar.

100

Page 113: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

El semàfor és un recurs

El semàfor posseeix un comptador que pot ser escrit (modificat) per tot procésque fa una P o una V. N’hi pot haver molts d’aquests processos. Per tant, elcodi interior d’aquestes dues operacions és una zona crítica de tot procés queles invoca. Estem en un cas molt semblant al de l’exemple del començamentdel capítol 3. Per tant, el semàfor ha de disposar d’un mecanisme que garanteixiexclusió mútua en el seu accés per part dels processos concurrents, paral·lels.

Recapitulem. Una de les aplicacions del semàfor és garantir exclusió mútua res-pecte qualsevol recurs general. Ara es diu que tot semàfor ha de ser consideratcom un recurs i que s’ha de garantir exclusió mútua en el seu accés. Què hemguanyat?

Quan s’està implementant el semàfor encara no es disposa de semàfors, per tant,aquests no es poden usar per garantir l’EM en el seu accés per part del proces-sos paral·lels. No hi ha més remei que usar mecanismes amb espera activa. Esgaranteix exclusió mútua en l’accés al semàfor mitjançant, per exemple, l’esque-ma basat en la instrucció de test and set. Solament fem servir aquest mecanismeen aquest punt. Un cop implementat, podem usar semàfors per garantir exclusiómútua en l’accés de qualsevol recurs sense espera activa, pràcticament. Perquè?Ben senzill, com que el codi de les operacions P i V del semàfor és brevíssim,l’espera activa de tot procés que vol accedir-hi serà molt curta, car el procés queés dins el semàfor sortirà aviat. En canvi, les esperes del procés causades perla P d’un semàfor no són actives; el processador ja no està assignat al procés.Solament hi ha espera activa per accedir al semàfor. Les esperes per accedir atot altre recurs, o purament de sincronització, són passives. Per tant, de mitjana,el temps total d’espera activa baixarà moltíssim en el sistema.

Els processos

IniSem(s1), P(s1), V(s1) IniSem(sn), P(sn), V(sn)

Els semàfors

Nucli sistema operatiu

Algorismes per a EM amb espera activa

Hardware

amb àrbitre de bus de memòria

Figura 5.1.: Nivells arquitectònics

El diagrama de la figura 5.1. il·lustra els nivells arquitectònics de l’escenari nou.Tots els nivells se’ns donen fets, amb excepció del dels processos. Aquests elshaurem de programar nosaltres. Més avall s’estudien alguns exemples.

101

Page 114: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Per comprendre millor el funcionament del mecanisme de l’EM en l’accés alsemàfor, s’han de tenir molt clars els punts d’entrada i de sortida, en els qualss’ha de demanar permís per entrar, o bé per alliberar el semàfor. L’inici d’una Po d’una V és clarament punt d’entrada, en el qual s’ha de demanar permís. Lafi d’una P o d’una V són punts de sortida. En ells, s’ha d’alliberar el semàfor.Però, a més, si un procés és aturat dins una P també s’ha d’alliberar el semàfor,un cop el procés és a la cua. Si no es fes hi hauria bloqueig, ja que cap altreprocés podria entrar a la V per alliberar el procés aturat. En correspondènciaamb això, si una V és efectiva (treu un altre procés de la cua del semàfor) passael control del semàfor al procés despertat, el qual retorna de la P i allibera elsemàfor. El procés que ha acabat la V és assignat a un altre processador o quedaesperant-ne un, ja fora de la V.

Les transicions i l’invariant del semàfor

La semàntica d’un semàfor serà expressada ara amb més concreció. Més for-malment direm que el semàfor és responsable de mantenir cert un invariant. Lesoperacions del semàfor són programades de forma que aturen tot procés que, deno fer-ho, invalidaria l’invariant següent:

sem : ntCont + NV − NP ≥ 0

on NV i NP representen el nombre total d’operacions V i P dutes a termecompletament. El valor inicial del comptador del semàfor, sumat al nombre deVs completades (un senyal nou entra al semàfor en cada una d’elles) menys elnombre de Ps completades, mai pot ser negatiu. Per tant, P suspèn l’execució delprocés que la invoca quan no hi ha cap senyal dins el semàfor. El procés es posaa la cua del semàfor i serà despertat, tret de la cua, quan un altre procés faci unaV sobre el mateix semàfor.

L’invariant del semàfor s es pot expressar de la forma següent:

sem : s · c ≥ 0

on s · c indica el comptador del semàfor s. sem és un invariant de base detot programa que usi el semàfor s. Es demostrarà amb el mètode inductiu (de laMTF). Les transicions crítiques d’aquesta classe de programa són de dos tipus:

: P(s); : V(s);

Cada una d’elles pot existir en més d’un lloc i en molts processos, però sempreseran les úniques transicions que modifiquen el comptador s · c del semàfor.

La transició tipus P(s) està activada solament quan s · c > 0 i, al dur-se a termeel decrement del comptador.

La transició tipus V(s) està activada només que el comptador de programal’apunti. No té cap altra condició d’activació. En dur-se a terme incrementa elcomptador.

Demostració 5.1Demostració de l’invariant sem : s · c ≥ 0.

102

Page 115: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

- Estat inicial del programa. Amb la condició que el compte inicial nCont ala sentència:

s := nSem(nCont)

sigui no-negatiu sem val cert.

- Transició tipus P(s). Es duu a terme solament quan s · c > 0. A l’estat finalde la transició s · c ≥ 0, ja que en dur-se a terme decrementa s · c en unaunitat.

- Transició tipus V(s). Suposant sem cert a l’estat inicial de la transició, al’estat final de la transició s·c > 0 ja que aquesta incrementa el comptadoren una unitat.

5.3 Exemple: exclusió mútua amb semàfors

Esquemes bàsics

Per garantir exclusió mútua entre dos processos, en l’accés a les seves zonescrítiques, s’usa l’esquema de la figura 5.2..

Garantiment de l’exclusió mútua, usant un semàforvar

s: semàfors:= InitSem(1)| |

P1

* ∞a1: ZNCb1: P(s)c1: ZCd1: V(s)

P2

* ∞a2: ZNCb2: P(s)c2: ZCd2: V(s)

Figura 5.2.: Garantint EM amb un semàfor

Si usem l’invariant de base NV : NP ≥ NV i el del semàfor s, 1 + NV − NP ≥ 0,podem deduir-ne les desigualtats:

1 ≥ NP −NV NP − NV ≥ 0

Al ser NP − NV el nombre de processos dins les ZCs, les desigualtats anteriorsens el limiten a un sol procés, amb el qual l’exclusió mútua està garantida. Faltademostrar NV.

103

Page 116: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Demostració 5.2Demostració de NV . Definim primer les fórmules:

b1 : t(1)∨ t(b1) cd1 : t(c1)∨ t(d1)

i les simètriques b2 i cd2. Amb elles es proposen els invariants:

: b1∧ b2 → NP = NVd : b1∧ cd2 → NP = NV + 1d : cd1∧ b2 → NP = NV + 1dd : cd1∧ cd2 → NP = NV + 2

Els seus antecedents corresponen a les quatre possibles configuracions de l’es-tat del control. Per tant, en tot estat del programa, algun antecedent val cert itenim:

NP = NV ∨NP = NV + 1∨NP = NV + 2

el qual implica NV .

Falta demostrar els quatre invariants anteriors.

Exercici 5.1Raoneu com els quatre invariants , d, d i dd, no es poden demostrar perseparat.

Demostració 5.3S’usa el mètode de reforç de l’invariant. L’invariant que cal demostrar és:

: ∧ d ∧ d ∧ dd.

Estat inicial de la màquina:

b1 i b2 certs , NP = NV .

Llavors, cert per conseqüent cert i els altres certs per antecedent fals.

Transicions crítiques: b1−c1, d1−1 ja que modifiquen NP o NV , b1 o cd1.També les simètriques.

Transició b1− c1.

- Cas b2 cert.Suposant cert a l’eit, per tenim NP = NV .La transició incrementa NP en 1.Per tant, a l’eft NP = NV + 1 i d, d certs per conseqüent cert.I per c1, b1 fals i cert per antecedent fals.I per b2, cd2 fals i dd cert per antecedent fals.

- Cas b2 fals.Suposant cert a l’eit, per d tenim NP = NV + 1.La transició incrementa NP en 1.

104

Page 117: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Per tant, a l’eft NP = NV + 2 i dd cert per conseqüent cert.I per b2 fals i d certs al’eft per antecedent fals.I per c1, d cert a l’eft per antecedent fals.

Transició d1− 1. Es demana demostrar-la en l’exercici 5.2.

Exercici 5.2En la demostració anterior de l’invariant:

: ∧ d ∧ d ∧ dd

demostreu la part de la transició d1− 1.

La figura 5.3. mostra l’esquema que garanteix l’EM per a N processos paral·lels.

Exemple que garanteix l’exclusió mútua d’N processos, usant un semàfor.VAR

s: TpSemafork: integer

s:= InitSem( 1 )| | k:= 1..N

Pk, procés k

* ∞ak: ZNCkAccés a la ZC

Pròlegbk: P(s)

ck: ZCkEpíleg

dk: V(s)

Figura 5.3.: Garantint EM per N processos amb un semàfor

Usa un semàfor, s, inicialitzat a 1 per garantir l’exclusió mútua en l’accés a unazona crítica. Per demanar permís un procés invoca una P. En sortir de la ZC duua terme una V.

Invariant NV

En el cas general de N processos també tenim l’invariant:

NV : NP ≥ NV .

Procedim com en el cas de dos processos i definim dos estats de control per acada procés: bk i cdk, on k = 1..N.

105

Page 118: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Demostració 5.4Per demostrar NV definim comptadors per a cada procés: nP1, nP2, · · ·nPN pelnombre de P()s i nV1, nV2, · · ·nVN pel de V()s. Llavors:

NP =∑N

k=1nPk i NV =

∑N

k=1nVk.

Es demostrarà, primer, que per un sol procés nPk ≥ nVk, k = 1..N.

* ∞ak: ZNCbk: P(s)ck: ZCdk: V(s)

Llavors, NP ≥ NV degut al fet que les dues sumes tenen N termes i cada termede la suma de les Ps és més gran o igual que el seu terme corresponent a lasuma de les Vs.

Per demostrar nPk ≥ nVk demostrarem primer els invariants:

kb : bk→ nPk = nVk

ikcd : cdk→ nPk = nVk + 1.

Suposant que són certs, es té que en tot estat de control nPk ≥ nVk.

Exercici 5.3Doneu la raò per la qual l’invariant:

cdk→ nPk = nVk + 1

proposat pel procés de la figura 5.3. no es pot demostrar amb el mètode inductiubàsic.

S’ha d’usar el mètode inductiu amb reforç de l’invariant. Es demostrarà la con-junció de kb i kcd, la qual és més forta que cada un d’ells.

Demostració 5.5Demostració de l’invariant:

(bk→ nPk = nVk)∧ (cdk→ nPk = nVk + 1)

Estat inicial de la màquina:

Es compleix que nPk = nVk i cdk val fals. La implicació de l’esquerra segueix dela primera i la de la dreta de la segona.

Transicions crítiques: bk − ck, dk − k ja que modifiquen nPk o nVk, bk ocdk.

Transició bk − ck. Suposant cert a l’eit l’invariant que volem demostrar, esdedueix que nPk = nVk. La transició incrementa nPk en una unitat. Amb el

106

Page 119: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

qual a l’eft nPk = nVk + 1. Llavors, la implicació de la dreta de la conjuncióval cert per conseqüent cert i la de l’esquerra per antecedent fals.

Transició dk−k. Aquesta part de la demostració es demana en l’exercici 5.4.

Exercici 5.4En la demostració de l’invariant kb ∧ kcd demostreu la part corresponent a latransició dk − k.

Verificació de l’exclusió mútua

És conseqüència de l’invariant NP ≥ NV i del semàfor.

Demostració 5.6Demostració de l’EM entre N processos.

NP −NV Nombre de processos dins la ZC.NP ≥ NV És NV demostrat a l’apartat anterior.NP −NV ≥ 0 De l’anterior.1+NV − NP ≥ 0 Invariant del semàfor.1 ≥ NP −NV De l’anterior.

Per tant:1 ≥ NP − NV ≥ 0

i el nombre de processos dins la ZC mai és més d’un.

Verificació de l’absència de bloqueig

S’ha de raonar que la situació on tots els processos volen entrar a les seves Ps,sempre al menys un d’ells podrà completar la P.

1 ≥ NP −NV de l’invariant del semàfor.NP − NV = 0 Si tots els processos són fora la ZC.

Per tant, un dels processos que ha invocat una P no quedarà aturat, ja que justabans de les invocacions a P el comptador del semàfor valdrà 1.

Demostració 5.7Podem formalitzar més el raonament. Si tots els processos són a punt de dur aterme les seves P’s, llavors NP = NV i podem formular:

t(b1)∧ t(b2)∧ . . .∧ t(bN) → (NP = NV).

107

Page 120: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

perquè t(bk) → nPk = nQk per k = 1..N. El qual és l’invariant kb de la de-mostració 5.4, demostrat en la 5.5. De la mateixa demostració, NP i NV valen lasuma dels comptadors nPk i nQk, del qual es dedueix NP = NV.

Degut al fet que l’invariant del semàfor, c = 1 + NV − NP, el comptador delsemàfor valdrà c = 1 i

t(b1)∧ t(b2)∧ . . .∧ t(bN) → (c ≥ 1).

Per tant, al menys un procés podrà completar la seva P i no hi haurà bloqueig.

5.4 Exemple: cua de comunicació amb semàfors

Introducció

Amb el semàfor implementat (vegeu subsecció 5.5.1), tenim un nucli mínim desistema operatiu multiprocessador. Ara volem afegir-hi un mecanisme de comuni-cació entre processos (threads, tasques d’aplicació) basat en cues de missatges ala memòria compartida. Així, anem completant el nucli de sistema operatiu. Rea-litzarem la cua amb semàfors. Primer, l’especificarem amb un invariant, desprésconstruirem el mecanisme, finalment, analitzarem el compliment de l’invariant.

Esquema i invariant fonamental

La cua serveix per comunicar elements (paquets, missatges, etc.) entre pro-cessos emissors i processos receptors que la comparteixen a memòria.

La cua és finita, amb lloc per N elements com a màxim. Si Ne representa elnombre d’elements entrats i si Ns representa el nombre de elements que hansortit de la cua, llavors:

0 ≤ Ne −Ns ≤ N

car Ne − Ns val permanentment el nombre d’elements dins la cua. Aquesta rea-lització d’una cua de comunicació aturarà tot emissor que vulgui posar (introduir)un element nou a una cua plena (totalment). També aturarà tot receptor quevulgui treure un element d’una cua totalment buida.

Entrem, ara, en l’esquema amb un emissor i un receptor. El model, amb dosprocessos, fa servir tres semàfors: Loc, NoBd i c. El primer aturarà el procés

108

Page 121: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

varEstructura de dades de la cua, un tipus abstracte

q: queueSemàfors per: aturar emissors i receptors

Lloc, NoBuida: semàforPer al manteniment de l’exclusió mútua

c: semàforq:= IniQueue(N)Lloc:= IniSem(N)NoBuida:= IniSem(0)c:= IniSem(1)| |

EmissorVAR

k: integere: element

* ∞Construir l’element, e

. . .Entrar-lo a la cua

P(lloc)P(c)q:= InQueue(e,q)V(c)V(NoBuida)

ReceptorVAR

k: integere: element

* ∞Agafar e de la cua

P(NoBuida)P(c)e:= FirstQue(q)q:= DelFirstQ(q)V(c)V(lloc)

Processament de e. . .

Figura 5.4.: Model de cua de comunicació amb semàfors

109

Page 122: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

emissor quan vol encuar un nou missatge quan no hi ha lloc a la cua; l’inicialitza-rem amb tants ítems com llocs N té la cua, ja que en el moment inicial la cua téN llocs disponibles, buits; s’espera a que hi hagi lloc.

El semàfor NoBd aturarà el procés receptor quan vol agafar un missatged’una cua buida; l’inicialitzarem amb zero ítems, perquè al principi, la cua no técap missatge; haurà d’esperar a que la cua no estigui buida.

El tercer semàfor c garanteix l’exclusió mútua en l’accés a la cua; s’inicialitza a1. Això és necessari ja que l’estructura de dades de la cua no pot ser accedidaconcurrentment. Per exemple, té un comptador del nombre de missatges i, comvam veure al principi, per comptar bé necessitem seqüencialitzar els processosque hi accedeixen.

És interessant subratllar que les crides al semàfor c no poden passar-se fora del’actual regió crítica, incloent les crides als semàfors Lloc i NoBuida. Si la regiócrítica vigilada pel semàfor c inclogués aquestes crides, llavors podria aturar-seun procés en un dels dos semàfors, quedant dins la zona crítica. Cap altre procéspodria entrar a dur a terme la crida V per despertar-lo, ja que el procés aturat hoestaria dins la zona crítica.

L’esquema del model amb dos processos es mostra a la figura 5.4.. Com podeuveure, les zones crítiques guardades pel semàfor c són estrictament les d’accésa la cua, per encuar o desencuar. L’accés als semàfors Loc i NoBd quedafora de les zones crítiques. Si les incloguéssim a dins, hi podria haver una situacióde bloqueig.

Verificació de l’invariant

Es vol ara raonar, demostrar, que si l’invariant dels semàfors Lloc i NoBuidaes compleix. Amb altres paraules: si els semàfors han estat ben implementats,llavors s’ha de complir l’invariant de la cua, com hem vist abans. Prescindirem delsemàfor c que garanteix l’exclusió mútua. Això serà tractat en el següent apartat.

L’invariant de la cua, el qual es vol demostrar, pot ser expressat com:

: 0 ≤ q ≤ N

on q : Ne − Ns és la longitud de la cua, el nombre de missatges que té.

La primera demostració es recolza en que el semàfor c aconsegueix el compor-tament atòmic de l’encuament, < nQe >, i també de l’extracció d’un missatge,< OtQe >. El model resultant es mostra a la figura 5.5..

Si usem les variables auxiliars NnQ i NOtQ, que compten el nombre d’àtomsd’encuament i d’extracció de missatges, la longitud de la cua valdrà:

q : NnQ −NOtQ

i l’invariant a demostrar pren la forma:

q : (0 ≤ NnQ − NOtQ) ∧ (NnQ − NOtQ ≤ N).

110

Page 123: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

| |Emissor

vare: TpElement

* ∞ae: construir ebe: P(Lloc)ce: <InQue e>de: V(NoBuida)

Receptorvar

e: TpElement

* ∞ar: P(NoBuida)br: <OutQue e>cr: V(Lloc)dr: consumir e

Figura 5.5.: Model de cua amb àtoms d’accés a la cua

Exercici 5.5En el model de la figura 5.5., considereu atòmiques les sentències i demostreuels invariants:

P Ot : NP(NoBd) ≥ NOtQ , Ot V : NOtQ ≥ NV(Loc)

P n : NP(Loc) ≥ NnQ , n V : NnQ ≥ NV(NoBd)

Com a orientació, per demostrar P−Ot demostreu prèviament:

(1)P Ot : r ∨ cr ∨ dr → NP(noBd) = NOtQ

(2)P Ot : br → NP(NoBd) = NOtQ + 1

pel qual demostreu (1)P Ot ∧

(2)P Ot, ja que no ho podreu fer per separat; després

demostreu que P Ot és conseqüència de l’anterior. Feu servir un esquemasimilar per als altres invariants.

Demostració 5.8Demostració de q. Fent servir els invariants dels dos semàfors i els següents;deduïts a l’exercici anterior, 5.5:

P Ot : NP(NoBd) ≥ NOtQ , Ot V : NOtQ ≥ NV(Loc)

P n : NP(Loc) ≥ NnQ , n V : NnQ ≥ NV(NoBd)

es poden sumar les tres desigualtats següents:

NV(NoBd) ≥ NP(NoBd) (NoBd)

NP(NoBd) ≥ NOtQ (P Ot)

NnQ ≥ NV(NoBd) (n V)

i obtenim:NnQ ≥ NOtQ

iNnQ −NOtQ ≥ 0.

També, sumant les tres desigualtats següents:

N+NV(Loc) ≥ NP(Loc) (Loc)

111

Page 124: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

NP(Loc) ≥ NnQ (P n)

NOtQ ≥ NV(Loc) (Ot V).

Obtenim:N+ NOtQ ≥ NnQ

iN ≥ NnQ − NOtQ.

Demostració 5.9Demostració alternativa. En el model de la figura 5.5., es defineix primer laregió R, la qual conté els valors dels comptadors de programa que van de lasentència P(c) a la V(NoBd) de l’emissor, i els de les sentències P(c) aV(oc) del receptor.

Es demostrarà, primer, que el nombre de missatges nR existents en el sistemaque són a la regió R satisfà:

0 ≤ nR ≤ N.

Fem el compte següent:

- Nombre de misstages que han entrat: NP(oc).

- Nombre de missatges que han sortit: NV(oc).

- Nombre de missatges dins R : nR = NP(oc) −NV(oc).

A causa de l’invariant del semàfor Loc tenim que:

N+ NV(Loc)− NP(Loc) ≥ 0.

Per tant, N− nR ≥ 0 i nR ≤ N. Això és part del que volíem demostrar.

Es faran servir aviat els dos invariants:

e : NP(Loc) ≥ NV(NoBd)

r : NP(NoBd) ≥ NV(Loc)

els quals són invariants de base, conseqüència de l’estructura del programa. Enl’exercici 5.6 es demana demostrar-los rigorosament.

A causa de l’invariant de NoBd tenim:

0 + NV(NoBd) − NP(NoBd) ≥ 0

i, per tant:NV(NoBd) ≥ NP(NoBd).

Usant e i r , podem ampliar l’última desigualtat:

NP(Loc) ≥ NV(NoBd) ≥ NP(NoBd) ≥ NV(Loc)

per tant:NP(Loc) ≥ NV(Loc)

112

Page 125: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

inR = NP(Loc) − NV(Loc) ≥ 0.

Això és el que faltava per demostrar 0 ≤ nR ≤ N.

Finalment, els missatges a R estan, o bé a la cua, o bé en possessió d’algunprocés. Amb el qual, nR = nq + np, on cap enter pot ser negatiu perquènR ≥ 0. nq és el nombre de missatges que són pròpiament a la cua. np és elnombre de missatges que estan a la regió R però no són a la cua. Estan encaraen possessió d’algun procés.

De l’anterior deduïm que, nq ≤ nR ≤ N i nq ≥ 0. Amb el qual:

0 ≤ nq ≤ N.

Exercici 5.6En l’esquema de programa de la figura 5.5., considereu atòmiques les sentèn-cies i demostreu, pel mètode de la MTF, els invariants:

e : NP(Loc) ≥ NV(NoBd)

r : NP(NoBd) ≥ NV(Loc).

Per exemple, per e podeu demostrar prèviament invariants del tipus:

e∨ be → NP(Loc) = NV(NoBd)

ice ∨ de → NP(Loc) = NV(NoBd)+1.

Feu-ho demostrant la conjunció dels dos i, després, que aquesta implica e.

De forma similar, per r del receptor tindríem:

r ∨ dr → NP(NoBd) = NV(Loc)

br ∨ cr → NP(NoBd) = NV(Loc)+1.

Verificació de l’EM i de l’absència de bloqueig

El semàfor c garanteix l’EM en l’accés a la cua pels raonaments donats a l’a-partat 5.3, ja que s’ha usat el mateix mecanisme.

El bloqueig es té quan tots els processos esperen. Sols ho poden fer a les invo-cacions P dels semàfors. S’ha vist abans que la construcció per garantir exclusiómútua, aquí basada en el semàfor c, gaudia d’absència de bloqueig. Per tant,hem d’estudiar el bloqueig a P(Loc) i a P(NoBd), únic bloqueig que pot donar-se. No hi ha altres llocs on els processos puguin quedar aturats.

Demostració 5.10El bloqueig serà complet quan l’emissor és aturat a P(Loc) i el receptor A

113

Page 126: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

P(Lre). Si l’emissor espera a P(Loc) tindrem que:

N + NV(Loc) − NP(Loc) = 0

a causa de l’invariant del semàfor Loc i degut al fet que el seu comptadorha de valer zero, altrament no esperaria. Però, també, si l’emissor espera abe : P(Loc):

NP(Loc) − NV(NoBd) = 0

pels invariants de l’exercici 5.6. Si sumem les dues últimes igualtats tenim que:

NV(NoBd) − NV(Loc) = N.

Si, també, el receptor espera a r : P(NoBd) ha de ser que:

NV(NoBd) − NP(NoBd) = 0

a causa del compliment de l’invariant del semàfor NoBd i degut al fet queel seu comptador ha de valer zero, altrament no esperaria. Però, també, si elreceptor espera a r:

NP(NoBd) − NV(Loc) = 0

pels invariants del final de l’exercici 5.6. Si sumem les dues últimes igualtatstenim que:

NV(NoBd) − NV(Loc) = 0.

Però, aquesta igualtat és incompatible amb l’obtinguda abans per l’emissor, nopot ser que la mateixa diferència valgui 0 i N alhora. Per tant, no pot ser queels processos esperin indefinidament com hem suposat inicialment.

Cua amb múltiples emissors i receptors

Entrem ara en el model amb emissors i receptors múltiples. El model, amb Neemissors i Nr receptors, es mostra a la figura 5.6.. La part anterior al paral-

| |Emissors

vark: integere: element

| | k:= 1..NeEmissor_k

* ∞ae(k): construir ebe(k): P(Lloc)ce(k): <InQue_e>de(k): V(NoBuida)

Receptorsvar

k: integere: element

| | k:= 1..NrReceptor_k

* ∞ar(k): P(NoBuida)br(k): <OutQue_e>cr(k): V(Lloc)dr(k): consumir e

Figura 5.6.: Model de cua amb múltiples emissors i receptors

114

Page 127: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

lelisme és la mateixa que en el cas d’un emissor i un receptor a la figura 5.4. i nos’ha repetit.

Tal com s’ha fet en el model amb un emissor i un receptor, s’introdueixen lesvariables auxiliars NnQ i NOtQ, que compten el nombre d’àtoms executats,d’encuament i d’extracció de missatges. Llavors, la longitud de la cua valdrà:

q : NnQ −NOtQ

i l’invariant a demostrar pren la forma:

q : (0 ≤ NnQ − NOtQ) ∧ (NnQ − NOtQ ≤ N).

S’introdueixenmés variables comptador: NP(NoBd), NP(Loc), NV(NoBd) i NV(Loc);on el seu subíndex indica l’àtom que compten. Es proposen els mateixos inva-riants que a l’exercici 5.5:

P Ot : NP(NoBd) ≥ NOtQ , Ot V : NOtQ ≥ NV(Loc)

P n : NP(Loc) ≥ NnQ , n V : NnQ ≥ NV(NoBd)Llavors, la demostració de l’invariant de la cua és idèntica a la 5.8.

Per demostrar els invariants proposats P Ot, Ot V, P n i n V es procedeix definintvariables comptador per a cada emissor i per a cada receptor, semblantment a lademostració 5.4.

Per exemple, en el cas de P n : NP(Loc) ≥ NnQ, es definirien els comptadors per acada un dels emissors:

nPLock i nnQk per k = 1..Ne.

Amb aquests comptadors:

NP(Loc) =∑Nek=1

nPLock i NnQ =∑Nek=1

nnQk.

Es demostrarà, primer, que per un sol procés nPLock ≥ nnQk, k = 1..Ne.

Emissor k

* ∞ae(k): construir ebe(k): P(Lloc)ce(k): <InQue_e>de(k): V(NoBuida)

Llavors, NP(Loc) ≥ NnQ ja que les dues sumes tenen Ne termes i cada terme dela suma de les P(Loc)s és més gran o igual que el seu terme corresponent a lasuma de les nQs.

Demostració 5.11Demostració de nPLock ≥ nnQk, per a qualsevol k = 1..Ne. Es demostrenprimer els invariants:

kcd : cdk→ nPLock = nnQk

ikb : bk→ nPLock = nnQk + 1.

Suposant que són certs, es té que en tot estat de control nPLock ≥ nnQk.

115

Page 128: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Per demostrar kcd i kb no es pot per separat i s’ha de demostrar la conjunciódels dos.

Exercici 5.7Demostreu kcd ∧ kb seguin un mètode semblant al de la demostració 5.5.

Per demostrar els tres invariants que falten:

P Ot : NP(NoBd) ≥ NOtQ , Ot V : NOtQ ≥ NV(Loc)

n V : NnQ ≥ NV(NoBd)

es faria amb un mètode anàleg al que s’acaba de seguir pel P n.

L’exclusió mútua en l’accés a la cua queda establerta pel semàfor c. Som da-vant un cas particular del demostrat a la secció 5.3.

L’absència de bloqueig es refereix a que tots els emissors esperin a les seves Psi tots els receptors també a les seves Ps. El raonament és similar al de la de-mostració 5.10 feta pel model amb un sol emissor i un sol receptor. Els invariantsnecessaris es demostrarien amb mètodes similars al seguit anteriorment P n.S’haurà de demostrar invariants locals a cada emissor o receptor com el que s’hafet a la demostració 5.11.

5.5 Implementació i avaluació

Elements per a la realització de semàfors

Aquest apartat explica, més detalladament, les operacions que es realitzen dinsels procediments P i V de tot semàfor. Entre altres, tenen l’efecte de canviarl’estat dels processos. En un marc multiprocessador, amb memòria compartida,tenim el diagrama de transició d’estats, dels processos, representat a la figura5.7.. La taula indica el significat de cada estat.

Suposem que l’EM, a tot P i V, és garantida amb algun algorisme d’esperaactiva, vist anteriorment. Aquest mecanisme permet que dos semàfors puguincórrer simultàniament, però amb processadors diferents. Això és correcte mentreno s’hagi de canviar l’estat de cap procés.

Si una P ha d’aturar el procés que l’ha invocat; o bé el procés que duu a termeuna V ha de fer continuar, alliberar, un procés i treure’l de la cua del semàfor,llavors, solament un semàfor pot actuar. No hem de permetre que un altre semà-for faci alguna d’aquestes operacions concurrentment. El motiu és que s’han demodificar cues i estats, els quals són comuns a tot el sistema. Per tant, en aquestscasos hem d’entrar a una nova zona crítica, realitzada com l’anterior. El proces-sador entra en una zona comuna. Conceptualment, deixa el procés i fa córrer elnucli del SO.

116

Page 129: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

C

E

Ll

Pƒse1 Vƒse2

Pƒse2

Vƒse1

Corrent

Esperant

Lliure,a punt

Estat d’un procés Cues de processos Significat per al procés

C Cap cua. Poden córrer tants El procés està duent-secorrent processos com processadors a terme, està corrent.

E Una cua per a cada El procés espera a laesperant semàfor en el sistema cua d’un semàfor

Ll Una sola El procés espera que unlliure, a punt (ready) cua processador quedi lliure

Figura 5.7.: Transicions d’estat i cues mantingudes pels semàfors

Suposarem que tot processador sense procés està consultant la cua L cícli-cament. Naturalment, abans de fer això, ha de demanar per entrar a la zonacomuna. Si la cua no és buida, agafa el primer procés i el fa córrer. Observeu, jaque, que un processador pot ser assignat a qualsevol procés. No hi ha assignaciófixa de processos a processadors. Les operacions que es duen a terme en cada Pi V són les següents:

P no efectiva. El comptador c d’aquest semàfor és més gran que zero, c > 0.Decreixent c i el procés continua, sense entrar a la zona comuna.

P efectiva. Vol dir que hem d’aturar el procés. El comptador c val zero, c = 0.El procés que invoca i entra a P, després d’una possible espera activa, ésa l’estat C, corrent. Després d’una altra possible espera activa entra a lazona comuna. Fa els canvis següents a l’estructura de dades del nucli: elprocés que ha entrat a P passa a l’estat E, és encuat a la cua del semàfor(transició Pƒse1).

És important, en aquest punt, alliberar el semàfor. De no fer-ho, hi hauriabloqueig mort. El comptador de programa del procés que ha invocat la Pqueda dins P, just abans de retornar.

Al quedar el processador lliure, desencuem el primer procés de la cua L(transició Pƒse2), sortim de la zona comuna i el processador es queda duenta terme aquest procés.

V no efectiva. El comptador c és incrementat en una unitat. Cap procéss’esperava a la cua d’aquest semàfor. Per tant, el procés que ha entrat a Vsurt, tot alliberant l’EM del semàfor, i continúa en estat C. En aquest cas nocal entrar a la zona comuna, nucli del SO.

V efectiva. Vol dir que c = 0 i, al menys, un procés espera a la cua d’aquestsemàfor. En conseqüència, el comptador quedarà a zero i el procés que es-perava serà alliberat. Naturalment, hem d’entrar a la zona comuna per dur a

117

Page 130: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

terme aquestes operacions. De les dues alternatives que hi ha, assignaremel processador, el del procés que ha entrat a la V, al procés alliberat, el qualpassarà a l’estat corrent (Vƒse2). Abans, però, hem de posar a la cua delslliures aquell primer procés (Vƒse1).

Conceptualment, el seu control queda en la instrucció següent a la crida aV. No alliberem encara el semàfor. El que fem, com hem dit, és assignar elprocessador al procés alliberat, el control del qual és encara dins de P. Elprocessador acaba de dur a terme P alliberant, primer, la zona comuna idesprés el semàfor, al sortir de P.

Podeu pensar l’altra opció: és possible que sigui més pràctica. No obstant,la nostra política dóna prioritat al procés alliberat (penseu en els casos on hiha pocs o un sol processador).

Exercici 5.8Critiqueu aquesta implementació. És correcte? És justa? És absenta de blo-queig?

Avaluació crítica del semàfor

El semàfor ha representat un avanç considerable comparat amb els mecanis-mes anteriors. Ara els processos esperen sense ocupar processador. Hem gua-nyat en eficiència.

Per altra banda, el semàfor és rígid. Tan sols podem variar el compte inicial desenyals. Tota la lògica per aturar processos l’hem d’expressar amb semàforsinicialitzats adientment. Això és enutjós i molt poc clar quan els problemes d’ex-clusió mútua es van complicant. Les invocacions a les Ps no ens diuen si elprocés haurà d’esperar o no. Aquesta lògica queda amagada, no explícita, dinsde P. A la secció següent veurem possibilitats de superar aquests problemes.

Exercici 5.9 (Els cinc filòsofs)El problema dels cinc filòsofs és clàssic dins el camp de la programació concur-rent. Ha estat presentat a l’apartat 2.4.9.

()- Programeu un model d’aquest sistema on cada filòsof és vist com un procésen paral.lel amb els companys. Cada forquilla és un recurs que solament unfilòsof pot posseir en exclusiva, per tant, el seu ús és una zona crítica. Introduïusemàfors per garantir l’exclusió mútua en l’ús de cada forquilla.

(b)- Analitzeu que es garanteix l’EM respecte cada forquilla, l’absència de blo-queig, l’equitativitat i la fam individual.

(c)- Modifiqueu el model, si cal, a fi que, a més a més de garantir l’EM, hi hagiabsència de bloqueig.

118

Page 131: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

5.6 Resum

En els capítols anteriors s’han exposat mètodes de verificació rigorosa de pro-pietats de models concurrents i distribuïts. També s’han aplicat a models ambmecanismes per a garantir l’EM entre processos, en el seu accés a zones crítiques.Totes les esperes dels processos eren actives, es feien ocupant un processador.Encara que s’ha treballat a nivell de modelat, un nivell real analitzat ha estat elformat per programes amb instruccions màquina corrent en paral·lel. Mai s’haviatreballat sobre un sistema operatiu.

Els processos d’aquest capítol corren sobre un nucli de sistema operatiu. Aixòés un nivell per sobre dels programes màquina tractats en capítols anteriors. Lesesperes dels processos no ocupen processador. Els processos esperen en cues delsistema operatiu. Cada semàfor és responsable d’una d’aquestes cues. L’accésal sistema operatiu, per part dels processos, s’ha fet solament amb semàfors.Aquests, actualment, són presents en totes les biblioteques.

S’han analitzat alguns models fets amb semàfors. Per verificar propietats s’havist que els mètodes dels capítols anteriors també es poden aplicar en aquest nouescenari. Tan sols ha calgut definir nous àtoms per les operacions del semàfor.Amb ells, els mètodes inductius basats en la MTF s’han aplicat sistemàticamentals models analitzats.

S’ha treballat amb processos usant semàfors, sobre un nucli de sistema operatiu.En aquest marc, s’ha exposat amb detall el funcionament de cada operació delsemàfor, com a guia d’una possible implementació. Amb aquesta finalitat, s’handefinit estats dels processos usuaris del semàfor en el sistema operatiu, consti-tuint una màquina de transicions entre estats, les quals són dutes a terme per lesoperacions dels semàfors.

Finalment, s’han exposat les limitacions del semàfor, entre elles la seva rigidesa.Per superar-les, el capítol següent exposa una construcció nova, el monitor, perser emprada pels processos en comptes dels semàfors. És com un semàfor pro-gramable a mida per a cada situació.

5.7 Problemes

Problema 5.1Construïu un procés semàfor, el qual ha de ser consultat per n processosconnectats en paral·lel amb ell. Els processos es comuniquen amb el semàforamb connexions de tipus Nul: una per a cada una de les seves dues opera-cions, per a cada procés. El semàfor sols pot aturar els processos no oferint decomunicar-se amb ells. Inicialitzeu el semàfor abans d’entrar en el paral·lelisme.

119

Page 132: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Solució

Semàforint

res[]p(1..n): Nul[]v(1..n): Nul

parn: Integerini: Integer

pren>0 /\ ini >= 0

algvar

i, c: Integerc:= ini

* ∞? i:= 1..n

c>0, []p(i)c:= c-1

true, []v(i)c:= c+1

Problema 5.2Una cua il·limitada s’usa per passar ítems entre np productors i nc consumi-dors. Esquematitzar en PADD el conjunt: els np + nc processos en paral.lel i elssemàfors adients a memòria compartida, de forma que quan la cua no estiguibuida no s’accedeixi a cap més semàfor que al que garanteix exclusió mútua enl’accés a la cua.

Solució

La cua il·limitada és un cas particular del cas general d’una cua de comunicacióentre processos, realitzada amb semàfors, i que podeu estudiar en els apunts deteoria. Necessita solament dos (2) semàfors: el que garanteix l’exclusió mútuaentre processos que accedeixen a la cua i el que atura al consumidor quan lacua de missatges és buida. Podeu estudiar i simplificar aquest exemple a partirde l’anterior.

Aquest problema requereix una altra solució, en la qual volem que, en el casusual de cua no buida, solament calgui accedir al semàfor que garanteix l’ex-clusió mútua (anomenem-lo c). En aquest cas, es durà a terme el comptatge demissatges a la cua solament, sense accedir a cap altre semàfor. Tindrem, pertant, una solució més eficient si suposem aquest cas com el més probable. Capprocés s’aturarà.

Tot i així, haurem de vigilar si estem en el cas límit de cua buida. Solament, enaquest cas, aturarem els consumidors. Usarem un nou semàfor, anomenem-loMissatge. Aquí teniu el seu esquema:

120

Page 133: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Sistema amb cua eficient. . .var

c, missatge: semàforn, p, k: Integer

c:= 1missatge:= 0| |

Productors| | p:= 1..np

* ∞Produir missatgeEncuar-lo

P(c)Afegir-lo a la cua. Sempre pot !n:= n+1?

n=1Cua era buida

V(Missatge)

ElseNil

V(c)

Consumidors| | k:= 1..nc

* ∞Adquirir missatge

P(c)?

n=0Cua és buida

V(c)P(Missatge)

ElseNil

n:= n-1Extreure el missatge de la cuaV(c)

Consumir el missatge

Problema 5.3Un semàfor de tipus Conjunt d’espera (Blocked set) difereix del vist a classe enel fet que els processos aturats dins de P són considerats com a conjunt i nocom a pertanyent a cap cua FIFO. Per tant, una V efectiva desperta un procésdel conjunt que espera, escollit aleatòriament.

Analitzeu el compliment de la propietat d’absència de fam individual. Pot unprocés esperar per sempre dins de P?. Suposeu que els altres processos vanduent a terme operacions V repetidament i per sempre. Analitzeu els casos deprogrames formats per 2, 3, i 4 processos concurrents.

Problema 5.4()- Es demana l’esquema d’un procediment (complet) PADD:

Semàfor(<> P, <> V, <> Pb, <> Vb, c)

el qual ha d’actuar com un semàfor, usat solament per dos processos:

[]P, []V := A i []Pb, []Vb := B

mitjançant les connexions indicades, les quals son de tipus n. El paràmetre cés de tipus enter i correspon al comptador del semàfor. El procés A, quan volinvocar una P o una V sobre el semàfor, fa un output sobre la seva connexió Po V, respectivament. B fa el mateix, però amb les connexions Pb o Vb. Penseuque, en aquest escenari, l’única forma d’aturar un procés és fent-lo esperar a

121

Page 134: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

una comunicació.

(b)- Doneu també l’esquema PADD d’un programa principal (main) que connectiels tres processos amb les quatre connexions i el comptador. Els processos hande tenir la forma de crida a procediment. Suposeu existents els procediments Ai B (no cal que els programeu).

Problema 5.5En el conegut problema dels filòsofs, completeu el programa següent per a unsistema multiprocessador amb N processadors, on cada processador simula unfilòsof.

Filòsof k

* ∞pensa

skipagafa les dues forquilles

P(mutex)?

lliure(k) AND lliure(k+1 mod N)lliure(k):= falslliure(k+1 mod N):= falsV(mutex)

elseespera(k):= cert{V(mutex)P(s(k))}

menjaskip

retorna les seves forquilles. . . completeu . . .

El programa correspon a la solució on cada filòsof agafa sempre les duesforquilles alhora, mai en té una i espera l’altra. Cada filòsof té un semàfor s(k)on espera quan demana les seves forquilles i no estan lliures les dues. El vectorre(k) ha d’indicar, en tot moment, si la forquilla k està agafada o no per undels seus dos filòsofs. El vector esper(k) indica si el filòsof k espera per poderagafar les seves forquilles.

122

Page 135: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

6 Modelat i verificació amb monitors

6.1 Introducció

Els monitors són construccions de llenguatge d’alt nivell per donar solució, nosolament al problema d’exclusió mútua, sinó a problemes de sincronització i/oplanificació de processos en el seu accés a recursos. Les polítiques d’accés sóndiverses i programables. Varen ser proposats per Hoare [10] i per Per BrinchHansen [8] com a una generalització del semàfor. El monitor evita esperes ac-tives, igual que el semàfor. En canvi, permet una programació explícita i clara dela lògica associada a l’aturament dels processos. Per tant, es presten a una bonaautodocumentació dels programes, fent més fàcil la seva anàlisi i verificació.

Com el semàfor, el monitor serà considerat una forma particular de tipus abs-tracte. Aquí, però, haurem de programar cada monitor amb la lògica adient peraturar i reemprendre processos. El semàfor ja ens venia programat, amb la sevalògica d’aturament i alliberament de processos dins. Ara haurem de programarexplícitament cada monitor per resoldre cada problema d’exclusió mútua i/o pla-nificació.

Els processos

Els monitors

Biblioteca per realitzar monitors(encuar i desencuar processos, entrar i sortir de monitor)

Nucli del S.O.

Hardwareamb àrbitre de bus de Memòria

Figura 6.1.: Nivells arquitectònics usant monitors

L’esquema de la figura 6.1. presenta els nivells arquitectònics del nou escenari.Els nivells dels processos i dels monitors els hem de programar nosaltres. Su-posarem que els altres tres nivells ens vénen donats. Les primitives per pro-gramar monitors són presents en tota biblioteca de sistemes amb threads. Lesestudiarem amb tot detall en aquest capítol.

La biblioteca té primitives per encuar i desencuar processos. A la cua esperaranel compliment d’una condició. Aquests procediments estan associats, juntamentamb les cues que gestionen, a les anomenades variables de condició.

El monitor és una construcció excel.lent per organitzar (dissenyar, estructurar)molts tipus de programes:

123

Page 136: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

• Aplicacions sobre sistemes operatius multitasca, multithread mono o multi-processador.

• Sistemes operatius mono o multiprocessador.

• Modelat de hardware digital, de xarxes de comunicació, etc.

6.2 Trets característics

En aquest apartat es presenten els trets que són característics dels monitors.Quedaran molt clars al final del capítol.

Evitar esperes actives

Igual que el semàfor, tot monitor atura els processos posant-los a cues de pro-cessos. El procés no ha de consultar constantment per veure si pot entrar a laregió crítica. Per tant, el processador del procés aturat queda lliure.

Tipus abstractes especials

Tenen una representació (estructura de dades amagada) i unes operacions (pro-cediments). La representació posseeix, entre altres elements, cues de processos.Les operacions fan ús de primitives especials per aturar i reemprendreprocessos. Cada exemplar concret de monitor serà una variable tipada amb elnom del monitor. La seva forma sintàctica és la d’un tipus abstracte de dades, oclasse.

Recursos que volen exclusió mútua

Igual com en el cas del semàfor, les operacions del monitor són zones crí-tiques, car dins d’elles els processos poden escriure a la memòria (representació)del monitor. Per garantir exclusió mútua disposem, en la notació de modelat, deprimitives per entrar i per sortir de qualsevol operació d’un monitor.

124

Page 137: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Cues de processos: variables de condició

Aquesta variable (de tipus condition en PADD), pot ser vista com un tipus abs-tracte ja programat i disponible en la notació de modelat. La variable de condicióno és altra cosa que una cua de processos amb les operacions d’encuar i dedesencuar. La cua és amagada dins la seva variable de condició. Les variablesde condició sols poden ser declarades i usades dins les operacions d’un monitor.Per a la seva definició és necessari haver definit prèviament el monitor que lesconté. Tenen, almenys, dues operacions: Wait i Signal, per aturar i reemprendreprocessos. Aquestes modifiquen la cua de la variable de condició.

A fi de programar les esperes i continuacions dels processos, el monitor (les sevesoperacions) ha d’invocar les operacions de les variables de condició, les quals hand’estar declarades a la representació del monitor. Les operacions associades a lesvariables de condició són, en PADD, les indicades a la figura 6.2..

GetCondton() Inicialització.Wt() Atura un procés a la cua de la VC.

Sempre.SgnEt() Fa continuar un procés que esperava a la

cua de la VC. Si la cua és buida, no fa res.Allibera també el monitor: ha de serl’última sentència d’una operació.

Sgn() Fa continuar un procés que esperava a la cuade la VC. Si la cua és buida, no fa res.Invocable en qualsevol punt d’unaoperació, però no al final.

sEmpty() Booleana certa si la cua és buida.

Figura 6.2.: Les operacions usades pels monitors

La sintaxi concreta per invocar-les s’explica al següent apartat. Com podeu veure,la planificació temporal (scheduling) de l’execució dels processos es duu a termeinvocant les operacions Sgn, SgnEt i Wt de les variables de condició delmonitor. Tota variable de condició ha de ser inicialitzada dins l’operació d’inicial-ització que tot monitor ha de tenir.

6.3 Operacions invocades a cada part d’unmonitor

El monitor es programa com un mòdul PADD. El nom d’aquest mòdul, a la sevapart superior, ha d’anar precedit per la paraula clau ati (de abstract type imple-mentation). Com tot mòdul, té la part typ per declarar tipus i la part prc on esdisposaran les operacions del monitor, com procediments. El d’inicialització és unprocediment important.

En aquesta secció s’exposa el que és comú a tot monitor, el que s’ha de progra-mar a cada part; què ha de fer i quines operacions de la biblioteca s’han d’usar.Les formes sintàctiques de les invocacions a aquestes operacions.

125

Page 138: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Es recomana que la lectura alterni amb revisions de l’exemple del monitor de cuapresentat en la secció següent. Després de l’estudi d’aquell exemple quedarà totaclarit.

Representació del monitor

Dins la part typ de declaració de tipus del mòdul del monitor, es defineix la rep-resentació de dades. És un tipus i se li dóna sempre el mateix nom Nom_Monitorque s’ha donat al mòdul. És un producte de tipus (estructura), on un dels seuscomponents (anomenat m) ha de ser del tipus particular monitor, disponible ala biblioteca de PADD. Aquest component m ha de ser inicialitzat dins l’operaciód’inicialització del monitor, que tot monitor ha de tenir, invocant l’operació Get-monitor que s’exposa en l’apartat següent.

A més a més, dins la representació s’ha de definir almenys una variable de condi-ció. Cada una és una component del producte de tipus. El tipus d’aquestes com-ponents és condition, un tipus ja disponible en PADD. Els altres camps de la rep-resentació no tenen cap particularitat, poden ser comptadors enters, booleans,arrays, etc., els que es necessitin per a cada monitor particular.

Inicialització del monitor

L’operació d’inicialització de tot monitor ha de fer saber al sistema que s’estàdefinint un nou monitor. Això es duu a terme invocant GetMonitor. A continuació,ha d’inicialitzar-se tota VC que s’hagi declarat a la representació. Finalment, lesaltres components de la representació han d’inicialitzar-se adientment: compta-dors a zero, booleanes a true o false, etc. segons cada monitor requereixi.

El programa usuari del monitor ha d’inicialitzar-lo, invocant la seva operació d’ini-cialització, abans d’entrar en el paral.lelisme que l’usa. La sintaxi de les inicialit-zacions de monitor i la de les variables de condició és la següent:

Camp de tipus monitor:

Nom_Mon.m:= GetMonitor("Nom").

On hem suposat que m és el nom del camp de tipus monitor, a la rep-resentació. També, "Nom" és un nom arbitrari que sortirà a les traces.Nom_Mon és una variables de tipus Nom_Monitor, declarada a la interfíciede l’operació d’inicialització.

Camps de tipus condition (VCs)

Després d’haver inicialitzat el monitor:

Nom_Mon.Nom_Cond:= GetCondition( "Nom", Nom_Mon.m).

on m i Nom_Mon són el mateix que abans. "Nom" és el nom de la VC quesortirà a les traces.

126

Page 139: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Les altres operacions del monitor

Les altres operacions del monitor han de començar demanant permís per ac-cedir al monitor. No oblideu que, com el semàfor, tot monitor és un recurs per alconjunt de processos que l’invoca. Solament un d’ells pot estar dins les opera-cions del monitor.

Per demanar permís, tota operació de monitor ha de començar invocant:

EnterMon(Nom_Mon.m).

Per alliberar el monitor, quan acaba, tota operació de monitor ha d’invocar:

ExitMon(Nom_Mon.m).

sempre que no calgui fer un signal tot sortint. Si cal fer-lo, llavors s’ha de sortirinvocant:

SignalExit(Nom_Mon.Nom_Cond)

sobre la VC adient. Per accedir a les VC es disposa, com ja s’ha dit, de:

Per aturar un procés a una VC, invoquem:

Wait(Nom_Mon.Nom_Cond).

Per senyalar una VC, bo i sortint del monitor, invoquem:

SignalExit(Nom_Mon.Nom_Cond).

Per senyalar una VC, en tot punt menys al final, invoquem:

Signal(Nom_Mon.Nom_Cond).

Per saber si és buida la cua d’una VC, invoquem:

IsEmpty(Nom_Mon.Nom_Cond).

127

Page 140: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

6.4 Exemple: monitor de cua

Introducció i requeriments

La millor manera d’aprendre el que s’ha exposat fins aquí sobre monitors ésexposar un exemple senzill. Per això, escollim el mateix que s’ha treballat mésamunt amb relació als semàfors. El repetirem aquí, però fent servir monitors:una cua finita de pas de missatges (elements, ítems) entre processos emissors ireceptors.

Aquí la realització té dues parts:

1. Programar el monitor com una implementació concreta d’un tipus abstracte(ati).

2. Usar el monitor des de el programa usuari.

La primera part defineix la representació i les operacions del monitor. La segonapart les usa. El semàfor ja venia programat. Sempre té les mateixes operacions:IniSem, P i V. Per tant, allà solament era necessària la segona part. Aquí s’ha deprogramar el monitor segons el que s’ha decidit en el disseny global. Per això, esdiu que el monitor pot ser vist com a semàfor programable.

Entrem en els requeriments de l’exemple. La cua és finita, amb lloc per Nelements com a màxim. Si, en tot moment, Ne representa el nombre d’elementsque han entrat i si Ns representa el nombre d’elements que han sortit, llavors s’hade tenir sempre, com en el cas de la cua amb semàfors, que:

0 ≤ Ne −Ns ≤ N

ja que Ne − Ns val permanentment el nombre d’elements dins la cua. Aquest ésl’invariant que ha de garantir la nostra implementació. Per tant, aquesta rea-lització d’una cua de comunicació aturarà tot emissor que vol posar (introduir)un element nou a una cua plena (totalment). També aturarà tot receptor quevol treure un element d’una cua totalment buida. Hi pot haver altres polítiquesassociades a una cua, però aquesta és la que en el nostre exemple volem.

Esquema d’ús

El model de la figura 6.3. il.lustra un conjunt de processos paral.lels que usen lacua. Equival al model amb processos que s’ha vist abans, en el cas dels semàfors.

Com a decisió important del disseny, està la d’ubicar la cua dins el monitor, coma part de la seva representació. Una altra possibilitat seria ubicar la cua fora del

128

Page 141: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Esquema d’ús del monitor cua de comunicació d’N posicionscns

Nombre de posicionsN:= 7

Nombre d’emissors i de receptorsE:= 3R:= 5

typmoncua

ABS tpmoncuaprc

. . .alg

varc: moncua

c:= IniMonCua(N)| |

Emissorsvar

k: integer| | k:= 1..E

Ek, emissor k.var

e: TpElement

* ∞Construir l’element, e

. . .Posar-lo a la cua

c:= PosaraCua( e, c )

Receptorsvar

k: integer| | k:= 1..R

Rk, receptor k.var

e: TpElement

* ∞Agafar e de la cua

e, c:= AgafardeCua(c)Processament de e

. . .

Figura 6.3.: Model dels usuaris de la cua

129

Page 142: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

monitor; i fer que els processos usuaris invoquessin les operacions del monitorsolament per demanar permís per accedir a la cua i per notificar al monitor que elseu accés a la cua ha acabat. Aquesta segona opció es farà en el segon exemple,el monitor de control de l’accés a una taula.

S’han donat noms a les operacions del monitor, el qual encara no s’ha programat.Són: IniMonCua, PosaraCua i AgafardeCua. Els seus significats són prou clars. Elmonitor concret (també dit l’exemplar de monitor) és una variable, la c, declaradade tipus moncua. Aquest tipus s’ha definit, en la part typ del mòdul, com atipus abs tpmoncua. Amb això es defineix que moncua és una abstracció deTpMonCua. TpMonCua és una realització, ati, del tipus moncua que s’exposaràaviat. Amb aquesta sintaxi el mòdul on es programarà el monitor serà vist des delprograma usuari; en el sentit de que podrà invocar les operacions però no podràaccedir a la representació, com a tot tipus abstracte de dades, classe.

El monitor

Un monitor és una cas particular de tipus abstracte. Aquí suposarem existentuna implementació de cua seqüencial, tal com s’ha fet a la cua sense paral·lelismeintern SeqQueue de la secció 2.4 del capítol 2. Els noms de les operacions sóndiferents, però també autoexplicatius. El monitor invocarà les operacions de lacua seqüèncial, amb el qual solament s’han de programar els aspectes de sin-cronització.

. . .

Missatges

Emissors Receptors

1 2

c.Lloc c.NoBuida

Processos

c.cua

N

Figura 6.4.: Estructura de dades del monitor de cua

Els elements principals de l’estructura de dades interna del monitor, la repre-sentació, es poden veure a la figura 6.4.. Hi ha dues variables de condició: Lloci NoBuida. A la primera esperaran els emissors a que hi hagi lloc a la cua. A lasegona hi haurà els receptors esperant que la cua sigui no buida; o sigui, a quehi hagi almenys un missatge. És important donar noms adients a les variablesde condició; aquí s’ha donat el nom de la condició lògica, el compliment de laqual estan esperant els processos a la cua. El camp cua es defineix com la cuaseqüencial que s’ha suposat ja programada.

130

Page 143: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Monitor cua de comunicacions, finitaati TpMonCua

typTpMonCua

cuaabs CuaElems

Lloccondition

NoBuidacondition

mmonitor

Label 1...

131

Page 144: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Label 1prc

IniMonCuaint

resc: TpMonCua

pos0 = Ne = Ns = LengthQ(c.cua)

parN: Uinteger

algc.m:= GetMonitor("Cua de comunicació")c.lloc:= GetCondition("Hi ha lloc", c.m )c.NoBuida:= GetCondition("No és buida", c.m )c.cua:= MkQueue(N)

PosaraCuaint

resc: TpMonCua

pos0 =< Ne - Ns =< N

pare: TpElemc: TpMonCua

pre0 =< Ne - Ns =< N

algEnterMon(c.m)?

IsFull(c.cua)Wait(c.Lloc)

ElseNil

{Hi ha almenys un lloc lliure a cua}Posar e a la cua

c.cua:= InQueue( e, c.cua )SignalExit(c.NoBuida)

AgafardeCuaint

rese: TpElemc: TpMonCua

pos0 =< Ne - Ns =< N

parc: TpMonCua

pre0 =< Ne - Ns =< N

algEnterMon(c.m)?

IsEmpty( c.cua )Wait( c.NoBuida )

ElseNil

{Almenys hi ha un ítem a cua}Agafar i treure el primer ítem de la cua

e:= FirstQue( c.cua )c.cua:= DelFirst( c.cua )

SignalExit( c.Lloc )

El diagrama representa el monitor de cua. S’ha posat explícitament a les interfí-cies l’invariant que ha de garantir el monitor. S’ha fet com a pre i postcondició,

132

Page 145: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

és per a documentació solament. Es podrien ampliar aquestes condicions ambinformació sobre els canvis de la cua de missatges en cada operació. L’apartatsegüent dóna informació sobre el funcionament de les operacions.

6.5 Funcionament d’un monitor

Ubicació de les operacions dins un monitor

En el diagrama anterior del monitor cua, s’observa el mecanisme que garanteixexclusió mútua en l’accés al monitor per part dels processos. En tot moment,solament un procés pot ser dins el monitor. Per això, en PADD, totes lesoperacions pròpies han de començar amb un EnterMon. Un nou procés que volentrar al monitor quedarà aturat en aquests punts si encara n’hi ha un altre dins.El monitor és alliberat pels processos dins tota execució d’un Wait, d’unSignalExit i d’un ExitMon. Si en entrar a Wait no l’alliberés, hi hauria bloqueigmort, doncs mai més podria entrar al monitor cap altre procés. En voler posarun missatge a la cua, el procés esperarà a la VC c.Lloc que hi hagi lloc, quan non’hi ha. Simètricament, en voler agafar un missatge de la cua quan és buida, elprocés receptor esperarà que la cua no sigui buida, a la VC c.NoBuida, o sigui aque hi hagi almenys un missatge per agafar.

És important que, en tot punt d’una operació de monitor en que es com-pleixi alguna de les condicions a les quals pot esperar algun procés, s’hiposi el Signal corresponent. Això succeeix al final de les dues operacions. Ob-serveu, també, que la condició lògica que ha de fer esperar al procés que invocal’operació figura explícitament abans del Wait que l’ha de fer esperar. Per tant,la lògica és explícita; a diferència del semàfor on la decisió d’esperar es fa dinsl’operació P.

Estats i cues actualitzades pels monitors

S’exposen en aquest apartat, en forma resumida, les activitats que són rea-litzades dins les operacions Wt(·) i SgnEt(·), invocades per processosdins algun monitor. Representen una extensió del que ja s’ha exposat en parlardels semàfors. Com allà, treballarem en un marc multiprocessador, amb memòriacompartida. Naturalment, el cas monoprocessador-multitasca n’és un cas parti-cular. De moment no incloem el Sgn(·).

La figura 6.5. mostra el diagrama de transició d’estats d’un procés. La taula dela figura descriu els estats i les cues de processos associades a cada estat. Essuposa que l’EM a un exemplar de monitor és garantida fent esperar el procés enuna cua, associada a l’exemplar de monitor. Aquest mecanisme permet que mésd’un monitor pugui córrer concurrentment. Tal com fèiem en el cas dels semàfors,quan, dins un monitor, un procés entra a un Wt(·) o a un SgnEt(·), hem

133

Page 146: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

de fer-lo esperar, degut al fet que s’accedirà a cues i estats de processos que sóncomuns a tot el sistema. En aquest cas esperarà activament.

Tot processador sense feina duu a terme un procés que itera. Una de les activitatsque duu a terme dins aquest bucle és entrar al nucli per agafar el primer procésque és a la cua L. Si troba buida aquesta cua continua iterant en el procésanterior.

Es fan sempre esperes inactives, amb l’excepció de Enc. Fixem-nos, també, quesi s’ha d’esperar per entrar al nucli, vol dir que un altre processador està duenta terme el nucli des d’un altre monitor. S’entra al nucli sempre que s’ha demanipular alguna cua dels processos. Les operacions que es duen a terme dinsun monitor són les següents:

C

Em

Enc

E

Ll

M1

M2

W1 S2

N1

N2

W2

S1

Estat d’un procés Cues de processos Significat per al procés

C Cap cua. Poden córrer tants El procés està corrent,corrent processos com processadors duent-se a termeEm Una cua per a El procés espera

esperant entrar cada exemplar per entrara monitor de monitor a un monitor

Enc Cap cua. Espera activa El procés esperaesperant entrar (p.ex. amb TS) per entrar

al nucli Una sola ZC al nucliE Una cua per a El procés espera

esperant una cada VC en el complimentcondició el sistema d’una condició

Ll El procés esperaLliure, a punt Una sola cua que un processador

(ready) quedi lliure

Figura 6.5.: Transicions d’estat i cues d’un monitor

EnterMon Entrada a monitor. El procés pot fer la transició M1 i quedar al’estat Em, esperant que un altre procés surti del monitor. En aquest casha d’entrar i sortir del nucli, ja que ha d’accedir a una cua de processos. Elprocessador queda lliure i es duu a terme el que exposa l’últim punt, mésendavant en el text.

ExitMon Sortida de monitor. S’ha de veure si algun procés espera a Em per

134

Page 147: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

entrar al mateix exemplar de monitor. Si és així, s’entra al nucli i es posa elprocés que surt a la cua i estat L, doncs queda lliure. Després es fa entrarel procés que espera (transició M2) i es surt del nucli (mecanisme TS), jadins el monitor.

En cas contrari, quan cap procés espera en l’estat Em, el procés que duua terme la sortida allibera el monitor i continua amb el processador. No calentrar al nucli.

Wait Aquí sempre fem esperar al procés, per tant hem d’entrar al nucli. Enaquest camí el procés pot haver d’esperar abans a l’estat Enc, iterant. Uncop dins el nucli, el procés que ha invocat el Wait passa a l’estat d’espera Ei queda encuat a la cua de la variable de condició del Wt. És la transicióW1. Si algun procés espera a Em per entrar al mateix exemplar de monitor,li passem el processador i alliberem el nucli. En cas contrari, un processadorqueda lliure i anem al punt corresponent.

Signal Exit no efectiu S’ha de dur a terme el que s’ha exposat a EtMon.

Signal Exit efectiu El procés entra al nucli. Per tant, pot ser que esperiiterant a l’estat Enc . Un cop dins el nucli, el procés es passa a l’estat L,transició S1, ja que s’ha d’assignar el processador, que feia córrer el procés,al procés que s’ha de fer continuar amb el signal. Aquest és el primer queesperava a la cua de la condició assenyalada. Per tant, es fa que el procésdespertat faci la transició S2. Aquí es surt del nucli i es duu a terme el codiPostWait del procés despertat, dins del monitor que havia cridat i fet elWait.Fixeu-vos com aquí no s’allibera el monitor. El processador passa del procésassenyalador al despertat.

Un processador queda lliure En aquest punt sempre estem dins el nucli.Assignem al processador el primer procés de la cua L. Sortim tot seguit delnucli.

Exercici 6.1Programeu un monitor, MonRecurs, per garantir l’exclusió mútua en l’accés a unrecurs per part del programa usuari de l’esquema de més avall. Concretament,programeu l’ati corresponent a aquest monitor amb la representació i les tresoperacions: IniciRec, AdquirirRec i AlliberarRec a fi que el monitor garanteixil’invariant:

0 ≤ n ≤ 1

on n representa en tot moment el nombre de processos que estan accedint alrecurs.

Doneu-vos compta de les similituds entre aquesta i l’implementació del mateixexemple basada en semàfors.

135

Page 148: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Usuaris d’un recurs en exclusió mútuatyp

MRecursabs MonRecurs

. . .prc

. . .alg

varr: MRecursk: Integer

r:= IniciRec()| | k:= 1..NP

Usuari k

* ∞No usa el recurs

. . .Usa el recurs

r:= AdquirirRec(r)Us propi del recurs

. . .r:= AlliberarRec(r)

6.6 Verificació de models amb monitors

Introducció

La verificació de models amb monitors es pot fer seguint els mateixos mètodesque s’han usat fins aquí. En particular, els basats en la MTF d’un model. Per fer-hotan sols cal definir els àtoms que s’han de considerar. En el cas dels semàfors, amés de les instruccions màquina, les operacions P i V es consideraven atòmiques.En el cas dels monitors, els àtoms seran fragments de les seves operacions que,per tota bona implementació, es poden considerar executables sense cap inter-rupció.

En aquesta secció es defineixen els fragments atòmics de tot monitor; cada und’ells dóna lloc a una transició. Amb això queda definida la MTF d’un model ambmonitors, perquè els estats estan formats per valuacions d’un conjunt de vari-ables, com abans. Després es passa a concretar com s’aplica als monitors elmètode inductiu general de la secció 3.6; es fa sobre la MTF. Finalment, s’aplicael mètode de demostració a verificar invariants del monitor cua presentat anteri-orment.

136

Page 149: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Fragment atòmic de monitor

Introducció

Per a tot monitor, amb el seu conjunt d’operacions, es poden identificar puntsd’entrada i punts de sortida. Els punts d’entrada comporten l’adquisició en ex-clusiva del monitor per part d’un procés. Són els EnterMon, els punts de retorndels Wait, i els punts de retorn dels Signal (que no són SignalExit). Els puntsde retorn dels Wait comencen a executar el que encara queda després, el quals’anomena PostWait (AfterWait). Els punts de retorn dels Signal comencen a exe-cutar el que encara queda després, el qual s’anomena PostSignal (AfterSignal).En els punts de sortida el procés que havia entrat al monitor, i el tenia enexclusiva, l’allibera. Són els ExitMon, els Signal, els SignalExit i les crides a Wait.

Fragment atòmic

Un fragment atòmic (FA) és tota part de l’execució d’un monitor quees troba entre un punt d’entrada i un punt de sortida, sense cap puntd’entrada ni de sortida en el seu interior.

Almenys hi ha tants FAs com entrades té un monitor. A causa d’aquesta estructuraparticular, dins un FA el procés posseeix el monitor en exclusiva i la seva execucióés indivisible. Per això n’hi diem atòmic. Com es veurà aviat, tot FA dóna lloc auna transició de la MTF que s’usarà en les demostracions.

Exemple

En el monitor de cua que s’acaba d’exposar es tenen sis fragments atòmics.Tres associats a PosaraCua i tres associats a AgafardeCua. Dos comencen ambEnterMons per acabar ambWaits, tot passant per les alternatives de l’esquerra deles seleccions corresponents. Dos més comencen amb retorns deWait per acabaramb SignalExits, els anomenarem fragments PostWait. Els dos últims fragmentscomencen amb EnterMons i acaben en SignalExits, tot passant pel Else de laselecció.

Verificació d’invariants de monitor

Introducció

La demostració basada en els models de màquina de transicions finites potaplicar-se per a la demostració d’invariants en sistemes basats en monitors. Elmètode MTF pren una forma particular per aquest tipus de programes.

En primer lloc, els invariants estan formats per variables que no són acce-dides fora del monitor. Això permet descartar d’entrada, com a no crítiques,les transicions entre estats en què els processos són fora del monitor.

137

Page 150: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

En segon lloc, tota execució d’un fragment de monitor ha de ser consideradauna operació atòmica. S’ha de suposar que el monitor està ben implementat ique, per tant, el mecanisme que garanteix exclusió mútua en l’accés al monitorfunciona correctament. Això fa que les úniques transicions interessantsde la MTF són les que consisteixen integrament en l’execució atòmicad’un fragment de monitor per part d’un procés, perquè és solament dins elmonitor on les variables de l’invariant poden canviar.

L’atomicitat de l’execució de tot fragment de monitor fa que tan sols calguiconsiderar l’invariant en els punts d’entrada i de sortida dels fragments.No cal que es compleixi l’invariant en els altres punts interiors dels fragments.

El mètode

Les consideracions anteriors fan que el mètode inductiu exposat a la secció 3.6es concreti en el cas de sistemes basats en monitors en els passos següents:

1. S’ha de demostrar que l’invariant val cert en l’estat inicial, o sigui, en sortirde l’operació d’inicialització. Aquesta és invocada abans d’entrar al paral-lelisme.

2. Per a tota transició, suposant cert en el seu estat inicial, punt d’entrada,s’ha de demostrar que val cert en el seu estat final, punt de sortida.

A causa de la continuïtat que ha d’existir entre un signal efectiu (que real-ment desperta un procés) i el Postwait del procés despertat hi ha casos enels quals una transició es converteix en dos o més fragments con-catenats. En aquests casos, la transició correspon a la concatenació delsfragments i no cal demostrar que l’invariant és cert en els punts in-teriors, de canvi de fragment. Aquesta continuïtat s’explica a continuació.

Continuïtat Signal-PostWait

És necessari suposar que tota bona realització de monitors, assegura, a més del’exclusió mútua en l’accés al monitor, que tot fragment acabat en Signal oen SignalExit, quan en la seva execució desperta efectivament un altreprocés, és seguit immediatament pel corresponent fragment Postwait oPostSignal del procés despertat.

Dit amb altres paraules, cap altre fragment del mateix monitor ha de poder exe-cutar entre els dos fragments anteriors. La raó d’aquesta regla és que si no hihagués continuïtat, un altre fragment del monitor que s’intercalés podria inval-idar la condició senyalada. Llavors, el procés senyalat actuaria erròniament, jaque suposaria encara certa la condició que esperava i que el fragment intrús hamodificat.

Verificació del monitor de cua

Novament es fa servir el monitor de cua com exemple. Es demostrarà quegaranteix realment l’invariant:

138

Page 151: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

0 ≤ Ne −Ns ≤ N

o el què és equivalent:

: (0 ≤ Ne − Ns)∧ (Ne −Ns ≤ N).

Ne − Ns és la longitud de la cua, la qual ens dóna LengthQ(c.cua) en el monitor.Un increment de LengthQ corespon a un increment de Ne, un decrement corres-pon a un increment de Ns.

No obstant, es demostrarà abans que les esperes dels processos tenen sen-tit: si algun procés espera per posar un missatge (¬sEmpty(c.Loc) val cert) voldir que la cua de missatges és totalment plena:

EP : ¬sEmpty(c.Loc)→ sF(c.c).

El mateix per als que esperen treure un missatge:

ET : ¬sEmpty(c.NoBd)→ sEmpty(c.c).

Demostració 6.1Demostració de EPEstat Inicial. Es compleix a causa de la implementació de IniMonCua i degut alfet que aquesta operació és cridada abans d’entrar al paral.lelisme. Ens basemen el fet que les cues de processos són sempre inicialitzades a zero, amb capprocés esperant, per tant sEmpty(c.Loc) val cert i l’antecedent de EP val fals,amb el qual EP val cert inicialment.

Transicions. Hi ha una transició per fragment, en total sis. Esquemàticament:

1. Posar-WaitLloc. Perquè es doni aquesta transició, sF(c.c) ha de valercert. La cua c.c no és modificada en la transició, per tant, al final de latransició el conseqüent de EP val cert i EP també.

2. Posar-SlExit. Suposem l’invariant cert a l’inici. Ha de ser-ho amb l’an-tecedent fals, ja que el conseqüent sF(c.c) és fals a l’inici degut aque la transició passa pel Else. Per tant, sEmpty(c.Loc) val cert a l’inici,però també al final, perquè la transició no modifica la cua de processosc.Loc. Amb el qual, l’antecedent de EP val fals i EP val cert.

3. WaitLloc-SlExit. Aquesta transició ha de ser activada per dos possibles frag-ments: Agafa-SlExit o WaitNoBuida-SlExit. Al principi de qualsevol d’elles¬sEmpty(c.Loc) val cert, ja que el signal corresponent del seu final ésefectiu. Per tant, al principi d’elles, de la suposició que l’invariant val cert,el seu conseqüent sF(c.c) ha de valer també cert. Entre els dos frag-ments concatenats, no és modificada la longitud de la cua, perquè primerdesencuem unmissatge, però després n’encuem un. Per tant, sF(c.c)continua valent cert al final de la transició que ens ocupa. Aquest predicatés el conseqüent del nostre invariant. Per tant, aquest valdrà cert al finalde la transició.

Observeu com aquest fragment sempre dóna una transició formada perdos fragments.

139

Page 152: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

4. Agafar-WaitNoBuida. La transició no modifica cap predicat de EP.

5. Agafar-SlExit. Considerem dos casos:

(a) sEmpty(c.Loc) val cert a l’inici de la transició. Llavors, continua va-lent cert al final, ja que la transició no modifica c.Loc i el SignalExitdel final no és efectiu. L’antecedent del nostre invariant es manté falsa l’inici i al final de la transició. Per tant, EP val cert al final de latransició.

(b) sEmpty(c.Loc) val fals a l’inici de la transició. Llavors, el SignalExitdel final és efectiu i tenim la concatenació de dos fragments. Entreels dos no modifiquen la longitud de c.c (el primer treu un missatgei el segon en posa un). De la suposició que EP és cert a l’inici de lanostra transició, així com de la suposició que fa el cas en el qual estem,deduïm que sF(c.c) val cert a l’inici de la transició. Pel que hemdit fa un moment, sF(c.c) continuarà valent cert al final dels dosfragments i el nostre invariant valdrà també cert, degut al fet que elseu conseqüent valdrà cert.

6. WaitNoBuida-SlExit. Hi ha hagut un SignalExit(c.NoBuida) efectiu, el qual,ha activat el fragment. Hi ha dues possibilitats: el fragment Posar-SglExiti el WaitLloc-SglExit. Els dos són dins l’operació PosaraCua. El nostre frag-ment serà, per tant, dins àtoms multifragment. L’inici d’un dels possiblesàtoms és amb el fragment Posar-SglExit. Aquest solament està activat siIsFull(c.Cua) val fals (selecció). D’això i de la suposició que EP val cert al’inici de la transició (àtom) deduïm que IsEmpty(c.Lloc) a l’inici de l’àtom.

Per tant, aquest primer cas d’àtom serà multifragment. Concretament dosfragments:

Posar¬IsFull(c.cua)elsec.cua:= InQueue(e, c.cua)SignalExit(c.NoBuida)

DesencuarSignalExit(c.Lloc)

Wait(c.NoBuida)

Així doncs sEmpty(c.Loc) continua cert al final del segon fragment;perquè l’àtom no modifica la cua de c.Loc. Per tant, l’antecedent deEP val fals a l’eft i EP val cert.

L’inici de l’altre possible àtom és amb el fragment Agafar-SglExit, concate-nat amb WaitLloc-SglExit, el qual activa immediatament el fragment queens ocupa WaitNoBuida-SglExit:

140

Page 153: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Agafar¬IsEmpty(c.cua)elseDesencuarSignalExit(c.Lloc)

EncuarSignalExit(c.NoBuida)

Wait(c.Lloc)

DesencuarSignalExit(c.Lloc)

Wait(c.NoBuida)

Hi ha dos casos: IsFull(c.cua) o ¬sF(c.c), compatibles amb¬sEmpty(c.c) i la suposició de EP cert a l’eit. En el segon cas(¬sF(c.c)), per EP ha de ser sEmpty(c.Loc) i la concatenacióno pot donar-se; perquè el SgnEt(c.Loc) del primer fragment no potser efectiu.

En aquest segon possible àtom tenim, per tant, que sempre:

sF(c.c)

a l’eit. Descartem també el cas on sEmpty(c.NoBd) a l’eit; ja que lasegona concatenació no es donaria; l’àtom no inclouria el nostre fragment.Per tant, el segon cas d’àtom tindrà, com a mínim, tres fragments.

Fixeu-vos que hi ha una crida iterativa del final del tercer al principidel segon fragment. L’àtom pot acabar de dues maneres: amb unSgnEt(c.NoBd) o amb ub SgnEt(c.Loc) no efectius.

En el primer cas tenim sEmpty(c.NoBd) a l’eft i un nombre iguald’operacions d’encuar i de desencuar. La longitud de la cua de missatgesno varia i continuarà valent sF(c.c) (com a l’eit). EP es compleixamb conseqüent cert a l’eft.

En el segon cas tenim sEmpty(c.Loc) i EP es compleix amb antecedentfals a l’eft.

Exercici 6.2Demostreu pel mètode MTF que ET és un invariant del monitor actual.

Demostració 6.2Demostració de l’invariant principal:

: (0 ≤ Ne −Ns)∧ (Ne −Ns ≤ N)

Estat Inicial. Es compleix a causa de la implementació de IniMonCua i degut alfet que aquesta operació és cridada abans d’entrar al paral.lelisme. Ens basemen el fet que MkQueue(N) deixa la cua buida, i que per tant:

LengthQ(MkQueue(N)) = 0.

141

Page 154: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

També, naturalment, tenim dret a suposar que Ne = Ns = 0 abans d’entrar alparal.lelisme.

Transicions. Hi ha una transició per fragment, en total, sis. Esquemàticament:

1. Posar-WaitLloc. Si val cert a l’entrar, també ho val al sortir, perquè niIsFull ni Wait modifiquen LengthQ(c.cua).

2. Posar-SlExit. En entrar LengthQ(c.cua) < N, doncs IsFull(c.cua) val fals;altrament estaríem en la transició anterior. També es suposa que val cert.InQueue(e,c.cua) incrementa en una unitat LengthQ(c.cua). Per tant, alsortir 0 <LengthQ(c.cua) i LengthQ(c.cua) ≤ N. Amb el qual val cert al’estat final d’aquesta transició.

3. WaitLloc-SlExit. Aquesta transició és activada pel fragment Agafar-SlExt obé pel AgafarWt-SlExt, ja que són els únics que acaben (o tenen) amb unsignal de c.Lloc, la variable de condició on esperava el procés despertatque duu a terme la transició actual. En entrar a qualsevol d’aquests dosfragments activadors de l’actual ¬sEmpty(c.Loc) ha de valer cert, perquèel SignalExit sobre la mateixa condició és efectiu. Usant l’invariant:

¬sEmpty(c.Loc)→ sF(c.c)

deduïm que sF(c.c) val cert a l’inici de qualsevol fragment activador.Al final d’ells, a la cua li falta solament un missatge per ser plena, ja queen els dos en traiem un solament i al principi era plena, sF(c.c) valiacert. Per tant, al final de la transició actual la cua torna a ser exactamentplena, perquè el fragment actual afegeix un missatge a la cua, i l’invariantcontinua complint-se. Observeu com la transició actual està formada perdos fragments consecutius.

4. Agafa-WaitNoBuida. Si val cert a l’entrar, també ho val en sortir, ja que niWait ni IsEmpty modifiquen LengthQ(c.cua).

5. Agafa-SlExit. En entrar la cua no és buida perquè IsEmpty(c.cua) valfals, altrament estaríem en la transició anterior. FirstQue no modificaLengthQ(c.cua). DelFirst(c.cua) el fa decréixer en una unitat. Per tant alsortir:

0 ≤LengthQ(c.cua) i LengthQ(c.cua) < N

6. WaitNoBuida-SlExit. Aquesta transició és activada pel fragment Posar-SlExto bé pel PosarWt-SlExt, ja que són els únics que acaben (o tenen) amb unSignal de c.NoBuida, la variable de condició on esperava el procés desper-tat que duu a terme la transició actual. En entrar a qualsevol d’aquests dosfragments, ¬sEmpty(c.NoBd) ha de valer cert, perquè el SignalExit so-bre la mateixa condició és efectiu. Fent servir l’invariant:

ET : ¬sEmpty(c.NoBd)→ sEmpty(c.c)

deduïm que sEmpty(c.c) val cert a l’inici de qualsevol fragment acti-vador. Al final d’ells, la cua té solament un missatge, ja que en qualsevoldels dos en posem un solament i al principi era buida, sEmpty(c.c) valiacert. Per tant, al final de la transició actual la cua torna a ser exactamentbuida, ja que el fragment actual treu un missatge de c.cua, i l’invariantcontinua complint-se amb LengthQ(c.c) = 0.

142

Page 155: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

6.7 Exemple. El monitor d’accés a una taula

Introducció

Quan un conjunt de processos vol accedir a una taula a memòria per modificar-la i un altre conjunt (disjunt o no del primer) vol accedir a la mateixa taula perconsultar-la està davant el problema dels lectors i escriptors. La taula és un recurscomú y caldrà un monitor per garantir una política d’accés.

Aquesta situació és prou general com per dedicar-hi atenció. Apareix en els sis-temes multitascamono o multiprocessador quan les tasques han d’accedir a unesdades residents a la memòria compartida. També té aplicació als sistemes debase de dades.

Requeriments per una primera versió

Els dos requeriments següents corresponen a una versió senzilla del problemade lectors-escriptors.

1. Qualsevol nombre de lectors pot llegir la taula simultàniament.

2. Per escriure, un escriptor ha de posseir la taula en exclusiva.

Aquests requeriments amplien els del monitor recurs. Si solament hi ha escrip-tors, llavors la situació és la del monitor recurs, que deixarà accedir a la taula(recurs) solament a un procés. En afegir els lectors, la situació es complica res-pecte la del monitor recurs. Els lectors no representen problema; si un lector potllegir, els altres també poden.

Si R és el nombre de processos que estan llegint, i W el dels que estan escrivint,llavors una primera formulació de l’invariant que ha de garantir el monitor és:

(R > 0→W = 0)∧ (W > 0→ (W = 1∧ R = 0)),

el qual, expandint i simplificant, és equivalent a:

LE : (W = 0∨ R = 0)∧W ≤ 1. (6.1)

143

Page 156: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Model per a la primera versió

L’esquema següent ens il.lustra la representació per aquesta primera versió demonitor. En haver de garantir un invariant, posarem com a components del tipusproducte els entres W i R, els quals apareixen a l’invariant.

ati MonTaulatyp

MonTaular

Integerw

IntegerOKtoRead

ConditionOKtoWrite

Conditionm

Monitorprc

IniMonTaulaint

resct: MonTaula

algct.m:= GetMonitor("Monitor Taula")ct.OKtoRead:= GetCondition("Podeu Llegir",ct.m)ct.OKtoWrite:= GetCondition("Pots Escriure",ct.m)ct.w:= 0ct.r:= 0

Label 1...

144

Page 157: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Label 1AdqLectura

intres

ct: MonTaulapar

ct: MonTaulaalg

EnterMon(ct.m)?

ct.w > 0Wait(ct.OKtoRead)

ElseNil

ct.r:= ct.r + 1SignalExit(ct.OKtoRead)

FiLecturaint

resct: MonTaula

parct: MonTaula

algEnterMon(ct.m)ct.r:= ct.r - 1?

ct.r = 0SignalExit(ct.OKtoWrite)

ElseExitMon(ct.m)

AdqEscripturaint

resct: MonTaula

parct: MonTaula

algEnterMon(ct.m)?

(ct.r > 0) OR (ct.w > 0)Wait(ct.OKtoWrite)

ElseNil

ct.w:= ct.w + 1ExitMon(ct.m)

FiEscripturaint

resct: MonTaula

parct: MonTaula

algEnterMon(ct.m)ct.w:= ct.w - 1SignalExit(ct.OKtoRead)

A fi de fer complir l’invariant farem que tot procés que vulgui llegir ens ho demaniinvocant l’operació AdqLectura. Quan acabi de llegir ens ho haurà de dir invo-cant l’operació FiLectura. Farem quelcom semblant amb els processos que volenescriure a la taula, per això posarem les operacions AdqEscriptura i FiEscriptura.

145

Page 158: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Per mantenir l’invariant haurem d’aturar els processos. Per poder-ho fer hemd’usar variables de condició. Per tant, introduïm a la representació OKtoRead iOKtoWrite per aturar els que esperen llegir i els que esperen escriure.

Aquí el recurs (taula) no és dins la representació del monitor. En el monitor vistabans, el recurs cua de missatges era dins el monitor. Per tant, aquí teniu unexemple d’un altre estil de monitor, on el recurs taula és accedit directament pelsprocessos, però aquests estan obligats a demanar permís al monitor i a notificar-lila fi de l’accés. La representació té solament les variables necessàries i que calmantenir per realitzar la política d’accés que desitgem.

Demostracions per a la primera versió

Es vol demostrar que aquesta primera versió del monitor de taula compleix l’in-variant 6.1. En primer lloc es proposa que demostreu alguns invariants auxiliars.

Exercici 6.3Demostreu pel mètode MTF que:

ER : ¬sEmpty(OKtoR) → (W > 0) (6.2)

i

WRP : W ≥ 0 ∧ R ≥ 0 (6.3)

són invariants del monitor anterior.

L’invariant ER ens diu que les esperes dels processos que volen llegir tenen sentit.

Demostració 6.3Demostració de l’invariant:

LE : (W = 0∨ R = 0)∧W ≤ 1.

Estat Inicial. Després de la crida a IniMonTaula W = 0 i R = 0, i l’invariant escompleix.

Transicions.

AdqLect-Wait. Si l’invariant es compleix en el seu estat inicial, es complirà enel seu estat final, perquè aquesta transició no modifica ni W ni R.

AdqLect-SlExit. L’invariant es compleix inicialment amb W = 0, ja que no soma la transició anterior i, per tant, en la primera alternativa de la selecció lacondició lògica val fals. També sabem que W ≥ 0. Al final de la transicióR s’ha incrementat en una unitat, però l’invariant continua complint-se jaque la transició no modifica W i, per tant, en el s estat final W = 0.

146

Page 159: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

FiLect-SlExit. Si es compleix l’invariant a l’inici de la transició, es compleix ambR = 1, ja que al final R = 0. La transició solament ha fer decréixer R enuna unitat i no modifica de cap altre forma l’invariant, per tant es continuacomplint al final.

FiLect-Exit. Com que al final R > 0 (perquè la transició segueix la segonaalternativa de la selecció i, per tant, la condició R = 0 val fals i sabem queR ≥ 0). De la suposició que l’invariant val cert a l’inici, deduïm que W = 0.La transició no modifica W, solament fa un decrement d’R. Per tant, alprincipi R > 1, i al final l’invariant és cert amb R > 0.

AdqEscr-Wait. Si l’invariant es compleix inicialment, es continua complint final-ment, perquè la transició no modifica el valor de W ni el de R.

AdqEscr-Exit. Si l’invariant es compleix inicialment, llavors s’ha de complir ambR = 0 ∧ W = 0, la qual és la negació de la condició de la primera alternativade la selecció; sabent també que R ≥ 0 ∧W ≥ 0. Per tant, l’invariant escomplirà al final de la transició amb W = 1.

WaitAdqLect-SlExit: Aquesta transició correspon a un PostWait. Ha estat cau-sada pel SignalExit de FiEscriptura. L’altre possibilitat és el SignalExit dela transició AdqLect-SlExit, la qual està activada solament quan ct. = 0i llavors ER obligaria a que sEmpty(ct.OktoRed) valgui cert, amb elqual el SgnEt(ct.OktoRed) no seria efectiu. Per tant, l’únic possiblefragment activador és el FiEscriptura-SglExit.

En general, tindrem sempre unmacrofragment constituït per, com amínim,dos fragments. Serà la següent:

[FEscrptr− SgEt;WtAdqLect − SgEt; ...;WtAdqLect− SgEt].

El nombre de repeticions de la transició que ens ocupa és el nombre delectors que esperaven a la cua de ct.OktoRed.

A l’inici del macrofragment sEmpty(ct.OktoRed) val fals, amb el qual iER tenim que ct. > 0. També, de la suposició que LE val cert a l’inicitindrem que = 1 i R = 0 a l’inici del macrofragment atòmic. En ellfem decréixer un cop i incrementem R tants cops com processosesperàvem a ct.OktoRead. Del qual deduïm que LE valdrà cert, al finaldel macrofragment, amb R > 0 i W = 0.

WaitAdqEscr-Exit. Aquesta transició ve disparada pel SignalExit(ct.OktoWrite)de la transició FiLectura - SglExit. Estem, per tant, sempre en una accióatòmica formada per dos fragments:

[FLectr− SgEt;WtAdqEscr − Et].

A l’inici d’aquesta acció tenim que ct.r = 1 perquè, després de fer undecrement, ct.r val 0 i duem a terme el SignalExit(cxt.OktoWrite).

De la suposició que LE val cert a l’inici deduïm que = 0 doncs R = 0val fals. En el doble fragment fem decréixer R i un decrement de ,amb el qual al final d’ell tindrem que R = 0 i W = 1 i LE es continuaràcomplint.

FiEscr-SlExit. Si l’invariant es compleix inicialment, llavors ha de ser ambW = 1i R = 0. Això és degut a que els processos estan ben programats, si unprocés crida FiEscr ha de ser que abans ha executat un AdqEscr. Per tant,l’invariant es compleix al final amb W = 0 i R = 0.

147

Page 160: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Absència de bloqueig mort (deadlock). Aquest és un tipus de demostracióon es tracta de deduir conseqüències lògiques dels possibles estats de bloqueigi treure’n la conseqüència que el sistema surt d’aquest estat en un temps finit.Ens basarem en el fet que l’execució d’una zona crítica dura un temps finit.

Demostració 6.4L’estat de bloqueig correspon a escriptors aturats a OKtoW i lectors aturats a OK-toR. Per tant IsEmpty(OKtoR) i IsEmpty(OKtoW) valen fals en aquest estat. S’hade donar raons per les quals aquests processos no esperaran indefinidament.

De l’invariant ER es té que W > 0. Com que el sistema garanteix l’invariantprincipal serà que W = 1, per tant hi ha un escriptor escrivint.

Aquest escriptor cridarà FiEscriptura en un temps finit i allà durà a terme unSignalExit(OKtoR) , el qual despertarà el primer procés a la cua de lectors. Acausa del signal al final d’AdqLectura, cada nou lector reemprendrà el següentlector a la cua. Al final, tots els lectors aturats entraran a llegir.

Els lectors acabaran en temps finit. L’últim lector que dugui a terme un FiLecturafarà un signal sobre la condició OKtoW i la cua d’escriptors aturats decreixeràen una unitat. Per inducció, tot procés esperant per llegir adquirirà el recurs entemps finit. Per tant, no tenim bloqueig mort.

Possible fam d’algun escriptor. S’ha vist com la situació d’atur no és per-manent, però fixem-nos que si es vol desbloquejar un segon escriptor, cal unsegon grup de lectors. Què passa si no ve aquest segon grup? Una altra situacióperillosa: si existeix un flux constant de lectors, pot succeir que els escriptors noentrin mai, perquè en aquesta situació pot no haver-hi mai un últim lector, encaraque tots ells llegeixin en temps finit. Com a conclusió, no es pot dir que l’esperasempre tingui sentit pels processos que volen escriure. Per tant, la fórmula:

¬sEmpty(OKtoW) → (W > 0)∨ (R > 0) (6.4)

no és un invariant. S’observa, no obstant, que si la freqüència de lectors és l-l’adient"els processos que volen escriure no passarien fam.

Exercici 6.4Demostreu que la fórmula anterior no és un invariant. Feu-ho pel mètode deconstruir un entrellaçament que la invalidi.

Absència de fam dels lectors. La tècnica de raonament és la que s’haemprat abans: es suposarà que hi ha un lector aturat, llavors s’ha de demostrarque adquirirà la taula en temps finit.

Demostració 6.5Si hi ha lectors aturats, IsEmpty(OKtoR) val fals. De l’invariant ER deduïm quel’invariant general es compleix amb W = 1: hi ha un escriptor escrivint. Quanacabi, en temps finit, senyalarà OKtoR dins FiEscriptura. Llavors, un nou lectorque esperava es despertarà i podrà llegir. A causa del signal que duu a terme totlector al final d’AdqLectura, tots els que esperaven a la cua entraran a llegir.

S’observa com el sistema pot estar absent de bloqueig tot havent-hi algun escrip-tor que passa fam. Això pot ser degut també a una política no equitativa de lacua d’OKtoW respecte d’aquest escriptor, el qual s’evita si les cues són FIFO.

148

Page 161: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Requeriments per una segona versió

Les mancances que s’han observat en la primera versió poden ser eliminadessuprimint el requeriment d’una freqüència "adient" de lectures. Cap escriptor hade passar fam quan hi ha massa lectors. També, si hi han escriptors esperant la fid’una escriptura, no ha de ser necessari un lector per despertar un nou escriptor.En aquesta línia s’afegeixen als dos anteriors els requeriments següents:

3.- Quan un procés demana per llegir, no se l’hi ha de permetre si hi ha un altreprocés esperant per escriure.

4.- A la fi d’una escriptura poden entrar immediatament lectors o escriptors. Elslectors que esperen han de tenir prioritat sobre els escriptors que esperen.

Quan hi ha un procés esperant per escriure, el tercer requeriment força a quehi hagi eventualment un últim lector; encara que hi hagi molts processos quevulguin llegir. Fa que els processos que volen escriure no passin fam quan hi hamassa lectors.

El quart requeriment fa que no calgui almenys un lector per fer entrar un procésque espera la fi d’una escriptura per poder escriure. Si no hi ha lectors esperantes desperta l’escriptor en espera. L’única raó per donar prioritat als lectors és perpermetre una certa alternança entre escriptures i lectures.

L’objectiu dels nous requeriments és que els processos que esperen escriure hofacin amb sentit, per tant, a més dels invariants LE i WRP, la fórmula (6.4) tambéha de ser un invariant.

Exercici 6.5Modifiqueu el monitor anterior per tal que, tot garantint l’invariant correspo-nent als dos primers requeriments, garanteixi també els requeriments 3 i 4. Lafórmula (6.4) ha de ser també invariant.

Exercici 6.6Demostreu pel mètode MTF que les fórmules (6.1), (6.3), (6.4) i

¬sEmpty(OKtoR) → (W > 0∨¬sEmpty(OKtoW)) (6.5)

són invariants en el nou monitor.

149

Page 162: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

C

Em

Enc

Erg

E

Ll

Me

Mn

Ne

Nn

S1W1 S2

W2Esperaactiva

−→

Figura 6.6.: Transicions d’estat dels processos a l’invocar monitors

6.8 Monitors amb signals a llocs arbitraris

Introducció

Fins aquí s’ha treballat amb monitors que tenien els signals al final de les ope-racions; eren sempre SignalExits, no eren signals. Amb això s’ha pogut aprendreel funcionament general i la verificació dels monitors. Algun cop, no obstant, s’haesmentat el signal, amb el codi de la operació posterior a ell.

Sobre la base adquirida, en aquesta secció s’afegirà tot el relatiu a signals a llocsarbitraris de les operacions. En aquest cas hi ha fragments de les operacions d’unmonitor que són PostSignals. Encara que s’havien esmentat, mai es va entraramb detall en la nova problemàtica que comporten.

Aquesta nova problemàtica és similar a la dels PostWaits. Allà el procés quesenyalava ja era gairebé fora del monitor; el processador passava a dur a termeel PostWait i el procés que senyalava quedava a la cua dels processos que esperenun processador, la Ll. En la nova situació, la continuïtat Signal-PostWait es manté,però el procés que senyala és encara dins el monitor i se’l posa a una cua especialassociada a l’exemplar del monitor, la cua urgent. Amb el qual es vol donarprioritat als PostSignals sobre els processos que són fora de monitor, a la cua Ll.En els punts de sortida de monitor es consulta la cua urgent i si hi ha algun procésesperant se li assigna el processador.

En aquesta secció s’amplien les cues, els estats dels processos, així com les pri-mitives de base per realitzar monitors, exposats a la secció 6.5, per incloure elcas on hi ha PostSignals. Com exemple de monitor amb signals a llocs arbitrarisreviseu el problema 6.3.

150

Page 163: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Estat d’un procés Cues de processos Significat per al procés

C Cap cua. Poden córrer tants El procés s’està duentcorrent processos com processadors a terme, corre.Em Una cua per a El procés espera per

esperant entrar cada exemplar entrar al monitora monitor de monitor en règim de EM

Enc Cap cua. Espera activa El procés esperaesperant entrar (p.ex. amb TS). Una sola ZC per entrar al nuclial nucli del SO per a tot el sistema (dins Wt o Sgn)Erg, esperant Una cua per a El procés espera

després d’assenyalar cada exemplar per continuaramb PostSignal de monitor dins el monitor

E Una cua per El procés esperaEsperant en la a cada VC el compliment d’unacua d’una VC en el sistema condició

Ll Una sola cua El procésLliure, a punt en tot el espera un

(redy) sistema processador

Figura 6.7.: Cues de processos invocant monitors

Cues i canvis d’estat d’un procés

La figura 6.6. representa el diagrama de transicions d’estat dels processos en lesseves invocacions a les operacions d’un monitor i, ja dins d’elles, a les primitivesde base cridades pels monitors. Com a la secció 6.5, s’està en sistemes multipro-cessador i multitasca. En aquest escenari ampliat es té un nou estat, el Erg, onesperen els processos senyaladors que encara han de dur a terme els PostSignals.Es suposa que qualsevol processador pot fer córrer qualsevol tasca. La taula dela figura 6.7. dóna informació de les cues on esperen els processos. Estan associ-ades a cada estat. Els estats C i Enc no tenen cues; en el Enc el processador estàiterant en espera activa, en el C està fent córrer un procés.

Activitats de les primitives de base

Les activitats de cada una de les primitives són les següents:

EnterMon. Si hi ha un altre procés dins el monitor, el que ha invocat EnterMonfa la transició Me i queda a l’estat Em, esperant que li toqui el torn d’entrarquan un procés alliberi el monitor. En aquest cas s’ha d’entrar prèviamental nucli i dur a terme l’exposat al final d’aquesta subsecció per a quan unprocessador queda lliure.

Si a l’invocar EnterMon no hi ha cap procés dins el monitor no cal entrar alnucli i el procés entra al monitor, tot retornant de EnterMon.

ExitMon Si algun procés (el qual havia senyalat anteriorment) espera a Ergper continuar el mateix exemplar de monitor en el corresponent PostSignal,s’entra al nucli, es posa el procés que ha invocat ExitMon a la cua de L ies fa continuar el primer procés de la cua de Erg, tot alliberant el nucli,però no el monitor. Aquest últim és passat al procés que duu a terme el seuPostSignal.

151

Page 164: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

En cas que la cua urgent estigui buida, es consulta la cua d’entrada al moni-tor, la de Em. Si algun procés espera a Em, per entrar al monitor, es posa elprocés a L i es fa continuar el primer procés que espera a Em, tot alliberantal nucli, però no el monitor. Si ningú espera, ni a Erg ni a Em, s’allibera elmonitor, es surt i es continua. No cal entrar al nucli.

Wait S’ha d’entrar al nucli per fer esperar el procés que ha invocat el Wait.És possible esperar iterant abans d’entrar al nucli. Ja dins el nucli, es deixael procés esperant a la cua de la variable de condició associada al Wt.Això correspon a la transició W1. Aquí el monitor i el processador quedenlliures. Si algun procés espera a Erg, per continuar un PostSignal dinsel mateix exemplar de monitor, se li passa el processador tot alliberant elnucli. En cas contrari, si algun procés espera a Em per entrar al mateixexemplar de monitor, se li passa el processador i després s’allibera el nucli.En els dos últims casos no s’allibera el monitor. En cas contrari, on les duescues estan buides, sí. Llavors, un processador queda lliure i es va al puntcorresponent, per dur a terme la transició W2. Aquesta té l’efecte d’assignarel processador al primer procés de la cua de Ll.

Signal no efectiu És un signal que no desperta a cap procés. Es fa el que s’haexposat a EtMon quan és un SignalExit. Quan és un signal es continuacorrent el monitor.

Signal efectiu El procés és dins el monitor i entra al nucli. Per tant, pot serque abans esperi iterant a l’estat Enc. Un cop dins el nucli, el procés passaa l’estat Erg, transició S1. Després s’assigna el processador al procés as-senyalat, el primer que esperava a la cua de la condició corresponent. Aixòcorrespon al fet que el procés assenyalat dugui a terme la transició S2. Totseguit s’allibera el nucli i es duu a terme el PostWait del procés despertat,dins l’exemplar de monitor que té elWait que ell havia invocat anteriorment.Aquí no s’allibera el monitor. Aquest passa del procés assenyalador al des-pertat i duu a terme el PostWait.

Un processador queda lliure Quan el control passa a aquest punt, sempres’està dins el nucli. S’assigna el processador al primer procés de la cua L.Després s’allibera el nucli.

6.9 Resum

El modelat amb semàfors, exposat en el capítol anterior, és rígid i poc clar quanels models creixen; el mecanisme sempre és el mateix, basat en un comptador desenyals i solament permet inicialitzar comptadors i ubicar els semàfors als llocsadients dels processos paral·lels. La lògica que decideix aturar un procés quedasempre amagada dins l’operació P, no és explícita en el model.

Per millorar aquestes mancances es van proposar els monitors. El capítol presentha estat totalment dedicat a ells. En els monitors, la lògica per aturar els pro-cessos és visible dins les operacions del monitor, programades per l’usuari per acada aplicació. Per aturar el procés que invoca el monitor es fa amb la primitivade baseWait, la qual sempre atura el procés i s’ha d’invocar quan la condició peraturar es compleix. La Wait correspon a la P dels semàfors, però solament encuael procés que la invoca i no manté cap comptador com feia la P.

152

Page 165: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

En el capítol, després de presentar els monitors com a tipus abstractes especialsamb sincronització de processos programables com a mòduls del llenguatge demodelat, s’ha exposat el nivell arquitectònic a què pertanyen, com funcionen icom es programen.

També s’ha presentat la verificació d’invariants dels monitors. Amb aquest ob-jectiu s’han definit les transicions de la MTF associada al model amb monitors.Corresponen a fragments de les seves operacions. Amb això els mètodes induc-tius de verificació treballats en els capítols anteriors s’han pogut aplicar al nouescenari. Aquests punts s’han il·lustrat amb l’exemple d’una cua de comunica-ció entre processos i amb el disseny en dues etapes d’un monitor per controlarl’accés a una taula per part de processos paral·lels.

En gairebé tot el capítol s’ha suposat que els monitors no tenien crides a la primi-tiva de base signal en punts interiors de les seves operacions. Aquestes solamentapareixien en punts de sortida. Com a últim tema del capítol s’ha estès al casde signals a llocs arbitraris el funcionament de les primitives bàsiques, amb elsencuaments i estats dels processos que les invoquen.

6.10 Problemes

Problema 6.1()- El monitor Taula_V2 ha de garantir l’invariant:

: (W = 0∨ R = 0)∧W ≤ 1

on W i R representen el nombre de processos que estan escrivint i llegint lataula, respectivament. L’estructura de dades del monitor és un registre de cinccamps: (W, R, OKtoRed, OKtoWrte, m), amb significats idèntics als del mon-itor taula. El tercer i quart camps són del tipus condition, variables de condició(amb operacions Wait, SignalExit, Signal i IsEmpty) on esperen els processosque volen llegir i els que volen escriure, però el monitor no els ha donat permís.Completeu l’operació:

AdqLecturaint

rest: Taula_V2

part: Taula_V2

algEnterMon(t.m)?

........

ElseNil

....SignalExit(t.OKtoRead)

a fi que, a més a més de garantir l’invariant , no doni mai permís de lectura aun procés que vol llegir si hi ha un altre procés que vol escriure i espera dins delmonitor.

153

Page 166: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

(b)- Raoneu que la transició AdqEscriptura-Exit de l’operació:

AdqEscripturaint

com a AdqLecturaalg

EnterMon(t.m)?

(t.r>0)OR(t.w>0)Wait(t.OKtoWrite)

ElseNil

t.w:= t.w + 1ExitMon(t.m)

conserva l’invariant .

Solució ()-

AdqLecturaint

. . .alg

EnterMon(t.m)?

t.w>0 OR NOT IsEmpty(t.OKtoWrite)Wait(t.OKtoRead)

ElseNil

t.r:= t.r + 1SignalExit(t.OKtoRead)

(b)- La transició passa per l’Else. Per tant t.r = t.w = 0. Després de l’exit t.r = 0i t.w = 1 i l’invariant continua complint-se amb aquests valors.

Problema 6.2()- El monitor Taula_V2 ha de garantir l’invariant:

: (W = 0∨ R = 0)∧W ≤ 1

on W i R representen el nombre de processos que estan escrivint i llegint lataula, respectivament. L’estructura de dades del monitor és un registre decinc camps: (W, R, OKtoRed, OKtoWrte, m), amb significats idèntics als delmonitor taula. El tercer i quart són del tipus condition, variables de condició(amb operacions Wait, SignalExit, Signal i IsEmpty) on esperen els processosque volen llegir i els que volen escriure, però el monitor no els ha donat permís.Completeu l’operació FiEscriptura i l’alternativa Else de l’operació FiLectura deldiagrama següent:

154

Page 167: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

FiLecturaint

resct: MonTaula

parct: MonTaula

algEnterMon(ct.m)ct.r:= ct.r - 1?

ct.r=0SignalExit(ct.OKtoWrite)

Else...Completeu...

FiEscripturaint

resct: MonTaula

parct: MonTaula

alg...Completeu...

a fi que, a més a més de garantir l’invariant , a la fi d’una escriptura puguin teniraccés a la taula tant processos que esperen llegir com processos que esperenper escriure. Doneu prioritat als lectors.

(b)- Raoneu que la transició FiLectura - SignalExit de la operació FiLectura delmonitor, representada al diagrama anterior, conserva l’invariant .

Solució ()- L’alternativa Else de FiLectura ha de completar-se amb la sen-tència ExitMon(ct.m). L’algorisme de FiEscriptura és el següent:

algEnterMon(ct.m)ct.w:= ct.w - 1?

!IsEmpty(ct.OKtoRead)SignalExit(ct.OKtoRead))

!IsEmpty(ct.OKtoWrite)SignalExit(ct.OKtoWrite)

ElseExitMon(ct.m)

(b)- A l’inici de la transició FiLect-SgnlExt es compleix l’invariant . La transiciósurt per SignalExit, el qual vol dir que ct.r val 0 (R=0) al final. Al principi de latransició val 1, perquè la transició fa decréixer ct.r en una unitat.

Si R val 1 a l’estat inicial de la transició, usant la suposició que val cert enaquest mateix estat deduïm que W = 0 (l’operand esquerre de la conjunció hade valer cert).

155

Page 168: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Per tant, a l’estat final de la transició es compleix amb W = R = 0, ja queSignalExit no modifica directament W.

Problema 6.3()- Completeu les dues operacions del monitor forquilles que s’indiquen al’esquema següent:

AdqForquillesint

resf: Forquilles

parf: Forquillesk: 0..N-1

algEnterMon(f.m)?

f.nlliures(k) < 2Wait(f.potmenjar(k))

ElseNil

f.menja(k):= true. . .completeu. . .

LlibForquillesint

resf: Forquilles

parf: Forquillesk: 0..N-1

alg. . .completeu. . .

El monitor ha de controlar l’adquisició no preemptiva de N forquilles per part deN filòsofs. Cada un d’ells menja i pensa cíclicament. El filòsof k necessita permenjar les forquilles k i k +N 1 solament, on +N indica la suma d’entersmòdul N. Les demana, totes dues al mateix temps, al monitor amb la operacióAdqForquilles. Les usa de forma no preemptiva. Quan ha acabat de menjar lesallibera, totes dues al mateix temps, invocant la operació LlibForquilles.

El tipus forquilles és el producte de quatre camps: nlliures, PotMenjar, Menjai m. Els tres primers estan definits com arrays de 0..N − 1 elements Integer,Condition i Bool, respectivament. El camp m és de tipus Monitor. nlliures(k)ha de valer el nombre de forquilles disponibles (lliures) per al filòsof k . A lavariable de condició PotMenjar(k) espera el filòsof k quan vol menjar i no té lesseves dues forquilles lliures per a ell. Menja(k) val cert quan el filòsof k estàmenjant i fals quan està pensant.

Més formalment, el monitor ha de mantenir els següents invariants:

156

Page 169: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

1 : menj(k) → {(nres(k) = 2)∧ (nres(k +N 1) < 2)∧(nres(k −N 1) < 2)}

2 : ¬menj(k) → {(nres(k +N 1) > 0)∧ (nres(k −N 1) > 0)}3 : ¬sEmpty(PotMenjr(k)) → nres(k) < 24 : ¬(menj(k +N 1)∨menj(k −N 1)) → nres(k) = 2

Inicialment cap filòsof esta menjant. L’operador −N indica resta d’enters mòdulN.

(b)- (2 punts) Raoneu el manteniment de l’invariant 3 en la transicióAdqForquilles-Wait.

Solució ()-

AdqForquilles. . .alg

EnterMon(f.m)?

f.nlliures(k) < 2Wait(f.potmenjar(k))

ElseNil

f.menja(k):= truef.nlliures((k+1)mod N):= f.nlliures((k+1)mod N) - 1f.nlliures((k-1)mod N):= f.nlliures((k-1)mod N) - 1ExitMon(f.m)

LlibForquilles. . .alg

EnterMon(f.m)f.menja(k):= falsef.nlliures((k+1)mod N):= f.nlliures((k+1)mod N) + 1f.nlliures((k-1)mod N):= f.nlliures((k-1)mod N) + 1?

f.nlliures((k+1)mod N) = 2Signal(f.PotMenjar((k+1)mod N))

ElseNil

?

f.nlliures((k-1)mod N) = 2SignalExit(f.PotMenjar((k-1)mod N))

ElseExitMon(f.m)

(b)- Al principi i al final de la transició ƒ .nres(k) < 2 val cert, ja que la transiciópassa per l’alternativa corresponent a aquesta condició. Al final de la transició,a causa de l’execució del Wait, IsEmpty(f.potmenjar(k)) val fals, ja que almenyshi ha un procés que espera a la cua corresponent. Per tant, antecedent i conse-qüent de la implicació de l’invariant 3 valen cert i ell també.

157

Page 170: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Problema 6.4Completeu l’esquema següent a fi que modeli, com a monitor, el comportamentd’un àrbitre de bus de memòria amb política FIFO d’assignació de la memòriaals processadors.

Tots els processadors i la memòria són processos. Tot processador que vol dur aterme una operació amb la memòria invoca la operació PeticioMem del monitor.Inicialment, i sempre que el procés memòria acaba una operació, invoca MemL-liure. Suposeu que les cues associades a les variables de condició són FIFO. Elsprocessadors esperen a torn per accedir a la memòria. El procés memòria es-pera, a la condició processador, un processador que vulgui accedir-hi. El monitorha de mantenir els invariants:

p : ¬sEmpty(.processdor)→ .n = 0n : 0 ≤ .n ∧ .n ≤ 1t : ¬sEmpty(.torn)→ sEmpty(.processdor)

on n és el nombre de processadors que estan usant la memòria, el qual ésinicialitzat a 1 a fi que, immediatament després que el procés memòria invoquiMemLliure en començar, n quedi igual a zero. Suposeu, per tant, que sempreque la memòria acabi una operació de lectura o escriptura, el processador quela usaba passa a dur a terme una activitat aliena a la memòria.

És degut a aquesta suposició que n decreix a l’inici de MemLliure.

158

Page 171: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

ati MonArbitretyp

MonArbitren

Integertorn

Conditionprocessador

Conditionm

Monitorprc

PeticioMemint

resa: MonArbitre

para: MonArbitre

algCompleteu

MemLliureint

resa: MonArbitre

para: MonArbitre

algEnterMon(a.m)a.n:= a.n - 1Completeu

159

Page 172: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Solució

PeticioMemint

resa: MonArbitre

para: MonArbitre

algEnterMon(a.m)?

IsEmpty(a.processador)Wait(a.torn)

ElseNil

a.n:= a.n + 1SignalExit(a.processador)

MemLliureint

resa: MonArbitre

para: MonArbitre

algEnterMon(a.m)a.n:= a.n - 1?

IsEmpty(a.torn)Wait(a.processador)ExitMon(a.m)

ElseSignalExit(a.torn)

Problema 6.5En un sistema que disposa de monitors es vol implementar un semàfor clàssic,l’exposat en el capítol 5. Ha de garantir l’invariant:

c0 + NV −NP ≥ 0.

Completeu l’esquema següent a fi que el realitzi.

160

Page 173: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

SemaforRealització d’un semàfor basada en monitors

typsem

mmonitor

Estructura pròpia d’un semàforA completar

prcIniSem

intres

A completarpar

A completaralg

A completarP

intres

A completarpar

A completaralg

A completarV

intres

A completarpar

A completaralg

A completar

La seva representació ha de tenir un comptador de tokens (senyals o missatgesbuits), c, i una cua de processos.

Demostreu que el monitor-semàfor que heu realitzat garanteix l’invariant delsemàfor i que és absent de bloqueig mort. Analitzeu l’equitativitat. Quinessuposicions necessiteu?

Problema 6.6En un sistema multiprocessador amb N processos es disposa d’un dipòsit debuffers a memòria compartida. El nombre de buffers total a l’inici és Nb < N.Els processos, quan volen guardar un missatge, demanen un buffer del dipòsita un monitor, invocant l’operació AdqBuf. Quan ja no necessiten un buffer elretornen al dipòsit, invocant l’operació LlibBuf del mateix monitor. Es disposadel tipus abstracte Dipòsit de Buffers amb les operacions: b, d := Bƒ ƒer(d)per obtenir un buffer lliure, b, del dipòsit d, i d := RetBƒ (b,d) per retornar elbuffer b al dipòsit d.

Doneu l’esquema PADD complet del monitor que garanteix l’exclusió mútuaen la manipulació del dipòsit per part dels processos.

161

Page 174: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

El monitor ha d’usar el tipus abstracte Dipòsit de buffers, el qual es suposa japrogramat. Solament cal invocar les seves operacions. Per tant, el dipòsit debuffers ha de formar part de l’estructura de dades del monitor. Es suposenconeguts (visibles) els tipus TipBuf i Dipòsit que representen un buffer i undipòsit (el tipus abstracte) respectivament (no cal programar-los).

Dissenyeu el monitor MonBufPr, estructura de dades (representació) i ope-racions, (useu la notació PADD), i formuleu el seu invariant. El monitor ha desatisfer l’especificació de requeriments següent:

El monitor actua de buffer de missatges. En distingeix dos tipus: normalsi prioritaris. Els processos paral·lels que interaccionen amb el monitor ho faninvocant tres operacions: ()- PosaPr, per posar missatges prioritaris al monitor,(b)- PosaN, per posar missatges no prioritaris al monitor i (c)- Agafa, per agafarmissatges del monitor. Si hi ha algun missatge prioritari esperant dins el mo-nitor, és passat al procés que invoca agafar. Sols es permet agafar missatgesnormals quan no n’hi ha cap de prioritari esperant.

El monitor admet N missatges no prioritaris i N de prioritaris, simultàniament,com amàxim. Quan el monitor té Nmissatges prioritaris i un procés vol posar-neun altre, el procés és aturat fins que un altre procés agafi un missatge prioritari.Actua igualment quan hi ha N missatges no prioritaris i el nou missatge quees vol posar és no prioritari. Quan no hi ha cap missatge, el monitor atura totprocés que vol agafar un missatge. Fins que se n’hi posi un.

Per a la realització del monitor és obligatori usar el tipus abstracte cua FIFOfinita, amb N posicions, el qual disposa de les operacions següents:

cua:=IniCua()cua:=PosaCua(missatge,cua)missatge:=PrimerdeCua(cua)cua:=EsborraPrimer(cua)CuaPlena(cua)CuaBuida(cua)

Les dues últimes són booleanes.

Problema 6.7L’esquema següent correspon a un monitor per controlar l’accés a un recurs.Tot procés que vol accedir al recurs ha de cridar AdqRecurs. Quan el procés jano necessita el recurs ha de cridar LlibRecurs.()- Demostreu que la formula 0 ≤ r.n ≤ 1 és un invariant.(b)- Demostreu que cap procés passa fam.

162

Page 175: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

ati MonRecurstyp

Crecursn

integerlliure

conditionm

monitorprc

IniMonRecint

resr: Crecurs

alg. . .r.n:= 0

AdqRecursalg

EnterMon(r.m)?

r.n > 0Wait(r.lliure)

ElseNil

r.n:= r.n + 1ExitMon(r.m)

LlibRecursalg

EnterMon(r.m)r.n:= r.n - 1SignalExit(r.lliure)

Problema 6.8En una aplicació multitasca y multiprocessador tenim un nombre fix, nprocs, deprocessos. L’aplicació requereix que siguin sincronitzats, de tant en tant, en unabarrera que el sistema ofereix.

Quan un procés vol ser sincronitzat fa una crida a una única operació de labarrera, de nom sincrobr. La barrera el farà esperar sempre que encara quedialgun procés que no ha cridat a sincrobr.

Tan bon punt tots els nprocs processos estan dins la barrera, esperant o haventinvocat sincrobr, la barrera els fa continuar tots immediatament.

Volent realitzar la barrera com a monitor, doneu l’esquema PADD complet del’ati MBarrera:

()- La representació i l’operació inibarrera d’inicialització.

(b)- L’operació sincrobr completa.

(c)- Suposeu que npin i npout valen en tot moment, en el qual cap procés execu-ta fragments del monitor, els nombres de processos que esperaven a la barrera

163

Page 176: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

en el moment de l’última invocació a sincrobr i en l’últim moment en el qualun procés va sortir d’un fragment o d’una concatenació de fragments d’aquestaoperació. Formuleu l’invariant d’aquest monitor. Suposeu que la durada de totfragment de monitor és zero.

164

Page 177: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

7 Elements per a la realització demonitors

7.1 Introducció

Aquest capítol presenta alguns aspectes de l’implementació de monitors. Estracten dos escenaris reals: monitors realitzats sobre semàfors i directament so-bre hardware.

En el primer escenari es disposa d’un sistema operatiu (OS) que té les primi-tives dels semàfors, però no les dels monitors. No obstant, es vol treballar ambmonitors. Es necessita, per tant, interpretar amb semàfors les primitives delsmonitors.

L’altre situació real ocupa la major part del capítol. En ella, no es disposa decap OS sinó que es vol dissenyar un OS per un sistema multiprocessador ambuna única memòria compartida. S’organitza l’OS, incloent la gestió immediatade les interrupcions, amb monitors i tasques. Es donen els principis per tal queels monitors, amb les primitives que invoquen, es puguin programar directamentsobre el hardware multiprocessador.

7.2 Monitors realitzats amb semàfors

Introducció

Es tracta de fer funcionar un model basat en monitors sobre un nucli multitascaque ofereixi les primitives del semàfor, solament. El sistema ha de ser obert, enel sentit que permet accedir als fonts per programar variants de les primitivesque ofereix. Es farà, doncs, un mapejat de monitors sobre semàfors.

Si es pot dur a terme aquesta realització d’un monitor amb semàfors, voldrà dirque tot el que es pot modelar amb monitors també es pot modelar di-rectament amb semàfors. En l’exercici 6.5 es va veure que un monitor podiaactuar de semàfor, amb el qual tot el que es pot modelar amb semàforstambé es pot modelar amb monitors. En conseqüència, semàfors i monitorspoden modelar el mateix. Però fer-ho amb monitors permet molta més claredat.

L’esquema següent representa els nivells arquitectònics d’aquest escenari:

165

Page 178: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Processos (tasques).

API: monitors.

API: variables de condició més EnterMon i ExitMon.

Semàfors d’un nucli de SO multitasca sobre multiprocessador.

En un primer nivell hi ha els processos, els quals criden les operacions del monitor.Es poden veure com formant una API. Els monitors criden les VC’s i les primitivesper a l’exclusió mútua (EnterMon, ExitMon). Totes elles formen una API de mésbaix nivell. Les operacions (n, P, V) dels semàfors formen una altra API, la qualés invocada des del nivell immediatament superior.

En treballar sobre un multiprocessador, se suposa que per tal de garantir exclusiómútua sobre les seves operacions, els semàfors usen mecanismes basats en es-peres actives, tal com els de la instrucció TS. També, si dins el semàfor s’han demanipular cues de processos s’haurà d’entrar al nucli. Aquest estarà protegit ambbucles d’esperes actives per tal de garantir, com a màxim, que un sol processadorhi actuï.

Exclusió mútua dels monitors

S’ha de tenir una cua de processos per fer-los esperar quan hi ha un procés dinsel monitor. Aquesta cua solament pot ser la d’un semàfor. S’ha d’usar el meca-nisme per garantir exclusió mútua amb semàfors. A cada exemplar de monitor seli associa un semàfor, mon_mte , inicialitzant-lo amb un toquen:

mon_mte := nSem(1).

Llavors, EnterMon(mon.m) és realitzada com P(mon_mte) i EtMon(mon.m)com V(mon_mte).

Variables de condició

Una variable de condició, cond, amaga una cua de processos, per tant s’had’usar un altre semàfor, condsem, per a cada una d’elles. S’introdueix també uncomptador, condcompt, per disposar sempre del nombre de processos esperanta la cua de la VC. S’inicialitza condsem sense cap toquen:

condsem := nSem(0),

i condcompt a zero,condcompt := 0.

166

Page 179: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

La primitiva Wait encua sempre, però allibera el monitor dins el nucli. Encuar esfa amb un P(consdem) i alliberar el monitor amb un V(mon_mte). A causa dela inicialització de condsem, el procés sempre espera a P, però abans ha alliberatel monitor, invocant la V sobre mon_mte, la cua d’entrada al monitor.

Així directament no es pot fer, ja que en sortir de P ja s’ha alliberat el nucli. Esproposa modificar les dues primitives del semàfor i realitzar Wt(cond) amb laseqüència:

condcompt := condcompt+ 1Vmd(mon_mte, condsem)Pmd(condsem)condcompt := condcompt− 1.

Les primitives Vmd(·, ·) i Pmd(·) són les V(·) i P(·), però modificades a fi quegaranteixin l’execució atòmica, sense interrupció, en la manipulació de les duescues. Així, la seqüència {Vmd(·);Pmd(·)} es duu a terme sense interrupció,atòmicament.

La implementació de Vmd és com la de V, però s’ha d’adquirir simultàniamentels dos semàfors mon-mutex i condsem i retornar sempre estant dins el nucli delSO, però havent alliberat el semàfor mon_mutex. La implementació de Pmd éscom la de P, però en entrar s’ha de suposar que ja s’és dins del nucli i dins delsemàfor condsem.

SgnEt(cond) és realitzat com:

?

condcompt >0V(condsem)

ElseV(mon_mutex)

L’alternativa de l’esquerra correspon a un signal efectiu, fa continuar un procés.S’hi posa V(condsem) i no Vmd(condsem). No s’hi afegeix V(mon_mte) ,perquè no s’ha d’alliberar el monitor. Se l’ha de passar al procés despertat, a fique dugui a terme el seu postt immediatament.

Variants

S’ha de definir una tasca d’aplicació per a cada procés. Es defineixen com atasques d’aplicació sobre el nucli de l’OS. Llavors, la realització de les VCs potfer-se de dues formes:

• Els procedimentsWait, SignalExit, etc. són programats amb semàfors, seguintles equivalències exposades més amunt. Amb això es té una API pròpia.

• O bé, aquests procediments són substituïts, manualment o ambmini-traductor,pel seu equivalent amb semàfors, segons les mateixes equivalències. Aquíel nivell d’API pròpia desapareix.

167

Page 180: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Memòria

Tasca 1

Tasca OS 1

Tasca OS n

. . .

. . .

Tasques pròpiament d’aplicació

Tasques que pertanyen al OS + GIs

Tasques

Tasca OS n

Mon 1

Mon m

Operacions VC i EM

. . .Monitors que pertanyen al OS + GIs

Nucli pròpiament

OS + GIs

Monitors

Nivells de base

Figura 7.1.: Distribució de la memòria compartida

7.3 Organització de sistemes operatius ambmonitors

Introducció i principis de base

Aquest apartat tracta de com es pot organitzar un nucli de sistema operatiubasant-lo solament en el model de processos i monitors que s’ha treballat en elcapítol anterior. Això presenta molts avantatges. La claredat que es pot acon-seguir i la verificabilitat són alguns d’ells. L’altre és la modelabilitat del sis-tema real i la simulabilitat, sobre el model. La verificació es fa també sobre elmodel, en el qual es defineixen invariants, verificant-los amb els mètodes apre-sos. Perquè la simulació i la verificació serveixin per al sistema real cal seguir unmapeig sistemàtic.

S’exposen les idees generals per a l’organització d’un OS i de les aplicacions quecorren sobre ell. En conseqüència, no es tracta tot un disseny sinò una part mí-nima, per transmetre els principis i l’estructuració. Expressat en altres paraules,es dóna un esquelet format per tasques i monitors que caldrà omplir-lo i fer-locrèixer quan s’emprengui el disseny complet del OS i de les aplicacions.

El terme tasca es refereix al sistema real; correspon a procés en el model. Elterme aplicació es refereix al software que no pertany a l’OS, però que corresobre ell.

Els principis i suposicions de base són els següents:

168

Page 181: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Procés extern

Interrupció de

nou char.

. . .Filera de chars

Tasca de l’OS

(GI)Tasca

pròpia

d’aplicació

Aplicació

Nivell de

tasques

OS +GIs

Hardware

en paral·lel

Interrupció

Op: sgnlIn Op: getChar

Monitor intIn

(GI)

Op: Encua un

missatge

Op: Agafa un

missatge

Monitor de cua

Wait SglExt Sl EnterMon

Nivell de

monitors

Nivell de VC i

primitives EM

Interrupció

ExitMon EnterInt

Figura 7.2.: Tractament de la interrupció d’entrada de caràcters

1. L’arquitectura física és un multiprocessador amb solament una memòriacompartida.

2. Tota interrupció està associada a un processador concret. Tot processador téles seves interrupcions. Aquestes solament poden ser ateses per ell.

3. Els monitors s’usen per sincronitzacions solament; les seves operacions sónmolt curtes. Les parts més intenses en càlculs es programen en les tasques.

4. L’OS, incloent el tractament de les interrupcions, s’organitza solament ambmonitors i tasques.

5. Uniformitat. Tots els processadors poden córrer qualsevol tasca, i tambéqualsevol monitor. Amb l’excepció de l’atenció immediata d’una interrupció,la qual solament pot ser atesa pel seu processador.

Les aplicacions corren sobre l’OS i estan realitzades amb tasques d’aplicació, queno pertanyen al sistema operatiu. És possible que una aplicació requereixi tambéalgún monitor nou, no pertanyent a l’OS.

El conjunt del sistema real, és modelable naturalment amb processos paral·lelsinvocant monitors, tal com s’ha treballat en aquests apunts. Les aplicacions esmodelen com a processos paral·lels que invoquen monitors, de l’OS o pròpis del’aplicació. Això té els avantatges esmentats al principi d’aquest apartat.

169

Page 182: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Interrupcions

Les interrupcions i el seu tractament immediat estan a la base de tot OS. Són elsgestors d’interrupcions (interrupt handlers). Aquí s’entén per gestor d’interrupció(GI) el software que atén més immediatament una interrupció. En la organització,un GI es veu distribuït entre una operació d’un monitor i una tasca de l’OS. Aques-ta està sincronitzada amb la interrupció per la invocació, que fa la tasca, d’unaaltra operació del mateix monitor. Monitor i tasca estan únicament dedicats al GI.

L’esquema de la figura 7.1. mostra un mapa de la memòria. Es pot observar coml’OS, els GI inclosos, queden distribuïts entre:

• Tasques de l’OS. Contenen tot el que no sigui sincronització, tant dels GIscom d’altres parts de l’OS.

• Monitors diversos. Les parts de sincronització, tant dels GIs com d’altresparts de l’OS.

Els principis de la implementació de gestors d’interrupcions es resumeixen a con-tinuació:

1. Les interrupcions són ateses solament quan el processador fa córrertasques, mai quan s’executen els monitors. Per tant, s’han d’inhibir lesinterrupcions en els punts d’entrada a monitors i rehabilitar-les en els puntsde sortida.

2. Tot GI és implementat amb un monitor i una tasca, si cal, associatssolament a ell. El monitor realitza les parts de sincronització lligades al GI ique cal dur a terme amb interrupcions inhibides.

3. El monitor associat a una interrupció té dues operacions:

(a) getInt, invocada per la tasca per demanar el caràcter o cadena de bitsque entren amb la interrupció; o bé giveInt per passar al monitor el queha de sortir.

(b) signalInt, invocada solament quan el processador atén la interrupció; noha de tenir cap Wait, solament un signal.

4. L’inici del tractament de tota interrupció es veu com l’entrada a l’ope-ració signalInt del monitor de la interrupció, invocada per una tasca paral-lela externa imaginaria; corrent, dins ja del monitor, sobre el processadorinterromput.

5. La tasca del GI està esperant en l’únic Wait de l’operació getInt. Té unaestructura de bucle, iteració.

Al principi del cos de la tasca del GI hi ha la crida a getInt, després de la qualduu a terme el tractament seqüencial que calgui. La tasca associada a un GI desortida té la crida al monitor al final del cos de la iteració. En la resta del cos dela iteració prepara l’ítem que vol enviar. Aquestes tasques, com totes, poden serinterrompudes.

Com a conseqüència del primer punt, en no poder interrompre un monitor, enel punt de sortida del monitor encara el farà córrer el mateix processador que

170

Page 183: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

ati IntIntyp

IntInnouCar

Conditioncar

CharhiHaCar

Boolm

Monitorprc

Inici. . .

SgnlInint

resmi:IntIn

parmi:IntInEl nou caràcter

algEnterInt(mi.m)?

NOT hiHaCarmi.car:=El nou caràctermi.hiHaCar:=trueSignalExit(mi.nouCar)

elseerror de canal saturatExitMon(mi.m)

GetCharint

resmi:IntIncar:Char

parmi:IntIn

algEnterMon(mi.m)?

NOT mi.hiHaCarWait(mi.nouCar)

elsenil

car:=mi.carmi.hiHaCar:=falseExitMon(mi.m)

Figura 7.3.: Monitor d’interrupcions d’entrada

171

Page 184: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

en el punt d’entrada, quan va entrar. Per tant, quan en els punts de sortida esdesinhibeixin interrupcions, seran les mateixes del processador concret que leshavia inhibit a l’entrar al monitor.

La inhibició i desinhibició de les interrupcions del processador les fa el monitorassociat a la interrupció, dins el mateix mecanisme que segueix tot monitor.

Quan no hi ha interrupcions, als processos externs se’ls suposa corrent en unestat fora del sistema; sobre hardware en paral.lel amb el processador (rellotge,canal, perifèric, etc.). Així, tota tasca del sistema corre en l’estat Cmentre que lestasques externes corren en l’estat F (de fora del sistema). Les tasques externessón simbòliques i són les úniques que poden estar en aquest estat.

En el moment de ser atesa la interrupció provocada per la tasca externa, es con-sidera que la tasca entra a l’operació sgnlInt (nom genèric a ser concretat per acada GI) del monitor associat al GI, ara sí, executant sobre el processador quefeia córrer la tasca interrompuda. Amb més concreció, la posició de la memòriaassociada a la interrupció conté una instrucció de salt a la primera instrucció del’operació sgnlInt.

Aquesta primera instrucció és la crida a una primitiva semblant a EnterMon, peròampliada i adaptada al tractament d’interrupcions. El seu nom és EnterInt. En ellaes duen a terme totes les activitats d’una entrada a monitor. Però, a més, la tascainterrompuda es passa a la cua Ll, per poder-la reemprendre quan hi hagi un pro-cessador lliure. El seu funcionament s’exposa més endavant en aquesta secció,en l’apartat on es revisen les primitives del nucli per integrar les interrupcions.

Per concretar tots aquests punts, a continuació, es donen dos exemples:

Exemple. Interrupcions d’arribada de caràcters

Aquesta interrupció avisa que hi ha un nou caràcter, en el canal o el perifèric, perser transferit a la memòria. Té associats, com pot observar-se a la figura 7.2.,el monitor intIn i la tasca que acumula una filera de caràcters. La filera, com aunitat, ha d’estar definida segons algun criteri. En la figura 7.2. també es potobservar la representació, en un quadrat de línia discontínua, de la tasca externaimaginària que provoca aquesta interrupció. Ho fa després que té disponible elcaràcter que ha d’entrar.

Dins l’estructura de dades del monitor hi ha un lloc per dipositar aquest caràcter.L’operació sgnlIn fa la transferència del caràcter i avisa amb un signal a fi que latasca de la interrupció el transfereixi a la filera.

El monitor de cua sincronitza amb una tasca de l’aplicació per transferir-li la file-ra. A la part inferior de la figura es representen simbòlicament les primitives debase a disposició dels monitors. La figura 7.3. mostra una realització del monitorintIn amb la representació de les dades internes i les operacions, exceptuant lad’inicialització. D’aquesta solament interessa conèixer el fet de que posa a fals elcamp hiHaCar.

El diagrama és autoexplicatiu. Solament es fan algunes observacions.

1. L’operació SgnlIn és duta a terme pel processador de la tasca interrompuda.En canvi, l’operació GetChar, i la tasca que la invoca, pot ser duta a termeper qualsevol processador.

2. Dins l’operació SgnlIn se suposa que no hi ha cap caràcter al monitor, ja quela tasca ja ha retirat l’anterior. Si encara hi hagués un caràcter voldria dir

172

Page 185: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Procés extern

Interrupció de

canal

disponible . . .Missatge

Tasca de l’OS

(GI)Tasca

pròpia

d’aplicació

Aplicació

Nivell de

tasques

OS + GIs

Interrupció

Op: sgnlOut Op: giveChar

Monitor intOut

(GI)

Op: Agafa un

missatge

Op: Encua un

missatge

Monitor de cua

Wait SglExt Sl EnterMon

Nivell de

monitors

Nivell de VC i

primitives EM

Interrupció

ExitMon EnterInt

Figura 7.4.: Tractament d’interrupcions de sortida de caràcters

que el processament que fa la tasca per cada caràcter dura massa temps,en relació al període mig entre caràcters. Tot bon disseny ha de garantir queaquesta situació no es dóna mai.

3. En l’operació GetChar, invocada per la tasca associada a la interrupció perrecollir un nou caràcter, si no hi ha cap caràcter es fa esperar la tasca finsque, a l’arribar la interrupció, l’operació SgnlIn senyala que el caràcter ja haarribat. En canvi, quan hi ha un caràcter la tasca no ha d’esperar.

4. Quan la tasca ha d’esperar, el processador que duu a terme el post-wait ésel mateix que fa el signal. Això és degut a la política, sempre seguida enels apunts, de que el processador que duu a terme el signal passa immedi-atament a dur a terme el post-wait. Així, doncs, al final del post-wait i ensortir del monitor les interrupcions desinhibides seran les mateixes que elprocessador va inhibir a l’entrar a sgnlIn.

Referent al punt 2, si es preveuen desajustos momentanis entre el flux dels caràc-ters i el del seu tractament, es pot substituir el caràcter del monitor intIn per unbuffer de caràcters. Llavors, cada nou caràcter s’afegiria als del buffer. No obs-tant, l’operació getChar es canviaria a la getBuffer, la qual transferiria a la tascatots els caràcters acumulats en el buffer.

Exemple. Interrupcions d’emissió de caràcters

La figura 7.4. representa els elements del sistema associats a la sortida de caràc-ters. En aquest exemple, la interrupció indica que el canal està disponible per re-

173

Page 186: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

ati IntOuttyp

IntOutcar

CharchanReady, hiHaCar

BoolchanApunt

Conditionm

Monitorprc

Inici. . .

SgnlOutint

resmou:IntOutEl canal:Char

parmou:IntOut

algEnterInt(mou.m)mou.chanReady:=true?

NOT mou.hiHaCarSignalExit(mou.chanApunt)

elseEl Canal:=mou.carmou.chanReady:=falsemou.hiHaCar:=falseExitMon(mou.m)

GiveCharint

intres

mou:IntOutpar

mou:IntOutcar:Character

algEnterMon(mou.m)?

NOT mou.chanReadyWait(mou.chanApunt)El Canal:=carmou.chanReady:=falsemou.hiHaCar:=false

elsemou.car:=carmou.hiHaCar:=true

ExitMon(mou.m)

Figura 7.5.: Monitor d’interrupcions de sortida

174

Page 187: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

bre un nou caràcter. Quan aquesta es produeix, es duu a terme l’operació sgnlOutdel monitor intOut. Aquesta desperta la tasca de l’OS dedicada a la transmissióde fileres de caràcters (missatges), la qual havia demanat prèviament, invocantl’operació giveChar del mateix monitor, si podia enviar un caràcter. Durant l’ope-ració es transmet el caràcter al procés extern.

Quan la tasca ha acabat amb un missatge, en demana un altre a un monitor cuaassociat al canal, on tota tasca, pròpiament d’aplicació, pot dipositar un missatgeper transmetre.

La figura 7.5. representa el model del monitor intOut d’interrupcions de sortida.No s’inclou l’operació d’inicialització, de la qual solament interessa saber queinicialitza a fals els camps chanReady i hiHaCar de la representació.

Algunes observacions:

1. Quan arriba la interrupció s’entra a SgnlOut. Hi ha dos casos: que el monitorja tingui un caràcter per enviar o que no en tingui cap. En el primer cas, sesenyala la condició chanApunt per quan arribi. En el segon cas, es passa elcaràcter al canal o perifèric; el qual queda ocupat fins que no avisa amb unanova interrupció. Aquest estat es registra posant a fals el camp chanReady.Es considera també que no hi ha caràcter, ja que el que hi havia ja s’ha lliuratal canal.

2. Quan la tasca del GI vol enviar un nou caràcter d’un missatge, el passa almonitor invocant GiveChar. Hi ha dues situacions segons el canal estigui apunt o no, reflectides en l’estat booleà del camp chanApunt.

3. El processador que entra a GiveChar és el que fa córrer la tasca del GI. Peròel que fa córrer el post-wait és el que feia córrer la tasca interrompuda i vaentrar a SgnlOut, acabant amb el SignalExit. Per tant, les interrupcions quedesinhibirà seran les del mateix processador que les va inhibir.

Revisió del nucli per integrar les interrupcions

Estats i cues de processos

Es segueix el mateix diagrama de transició d’estats dels processos de la figura6.6., el qual és reproduït a la figura 7.6..

La taula de la figura 7.7. és la mateixa de la figura 6.7. i dóna informació de lescues on esperen els processos. Estan associades a cada estat. Els estats C i Encno tenen cues, en el Enc el processador està iterant en espera activa, mentre queen el C fa córrer un procés.

Revisió de les primitives de base

Tenint en compte el tractament d’interrupcions, les activitats de cada una deles primitives són les següents:

EnterMon Inhibir interrupcions. Si hi ha un altre procés dins el monitor, el queha invocat EnterMon fa la transició Me i queda a l’estat Em, esperant que

175

Page 188: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

C

Em

Enc

Erg

E

Ll

Me

Mn

Ne

Nn

S1W1 S2

W2Esperaactiva

−→

Figura 7.6.: Transicions d’estat dels processos en invocar monitors

Estat d’un procés Cues de processos Significat per al procés

C Cap cua. Poden córrer tants El procés s’està duentcorrent processos com processadors a terme, corre.Em Una cua per a El procés espera per

esperant entrar cada exemplar entrar al monitora monitor de monitor en règim de EM

Enc Cap cua. Espera activa El procés esperaesperant entrar (p.ex. amb TS). Una sola ZC per entrar al nuclial nucli del SO per a tot el sistema (dins Wt o Sgn)Erg, esperant Una cua per a El procés espera

després d’assenyalar cada exemplar per continuaramb post-signal de monitor dins el monitor

E Una cua per El procés esperaEsperant en la a cada VC el compliment d’unacua d’una VC en el sistema condició

Ll Una sola cua El procésLliure, a punt en tot el espera un

(redy) sistema processador

Figura 7.7.: Cues de processos invocant monitors

176

Page 189: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

li toqui el torn d’entrar quan un procés alliberi el monitor. En aquest cas,s’ha d’entrar prèviament al nucli i dur a terme el que s’ha exposat al finald’aquesta subsecció per quan un processador queda lliure.

Si a l’invocar EnterMon no hi ha cap procés dins el monitor, no cal entrar alnucli i el procés entra al monitor, tot retornant de EnterMon. Les interrup-cions queden inhibides.

EnterInt Inhibir interrupcions. Si hi ha un altre procés dins el monitor, aquestsolament pot ser la tasca associada al GI. En aquest cas s’espera iterant,perquè l’espera serà brevíssima. Això es fa també per assegurar que no escanvia de processador; com podria succeir si s’esperés en una cua. A conti-nuació s’entra al nucli per posar la tasca interrompuda a la cua Ll. Finalment,se surt del nucli per continuar el monitor tot sortint de EnterInt.

ExitMon Si algun procés (el qual havia senyalat anteriorment) espera a Ergper continuar el mateix exemplar de monitor en el corresponent post-signal,s’entra al nucli, es posa el procés que ha invocat ExitMon a la cua de L ies fa continuar el primer procés de la cua de Erg, tot alliberant el nucli,però no el monitor. Aquest últim és passat al procés que duu a terme el seupost-signal. Les interrupcions continuen inhibides.

En cas que la cua urgent estigui buida, es consulta la cua d’entrada al moni-tor, la de Em. Si algun procés espera a Em, per entrar al monitor, es posa elprocés a L i es fa continuar el primer procés que espera a Em, tot alliberantel nucli, però no el monitor. Si cap procés espera, ni a Erg ni a Em, s’alli-bera el monitor, es surt i continua el procés que havia invocat el monitor. Nocal entrar al nucli. Abans s’han de desinhibir les interrupcions.

Wait S’ha d’entrar al nucli per fer esperar el procés que ha invocat el Wait. Éspossible esperar iterant abans d’entrar al nucli. Ja dins el nucli, es deixa elprocés esperant a la cua de la variable de condició associada al Wt. Aixòcorrespon a la transició W1. Aquí el monitor i el processador queden lliures.Si algun procés espera a Erg, per continuar un post-signal dins el mateixexemplar de monitor, se li passa el processador tot alliberant el nucli. Encas contrari, si algun procés espera a Em per entrar al mateix exemplarde monitor, se li passa el processador i desprès s’allibera el nucli. En elsdos últims casos no s’allibera el monitor. En cas contrari, on les dues cuesestan buides, un processador queda lliure i es va al punt corresponent, perdur a terme la transició W2. Aquesta té l’efecte d’assignar el processador alprimer procés de la cua de Ll. S’allibera el nucli i el monitor, i es desinhibei-xen les interrupcions.

Signal no efectiu És un signal que no desperta a cap procés. Es fa el ques’ha exposat a EtMon quan és un SgnEt. Quan és un sgn continuacorrent el monitor.

Signal efectiu El procés és dins el monitor i entra al nucli. Per tant, pot serque abans esperi iterant a l’estat Enc. Un cop dins el nucli, el procés passaa l’estat Erg, transició S1. Després s’assigna el processador al procésassenyalat, el primer que esperava a la cua de la condició corresponent.Això correspon a que el procés assenyalat dugui a terme la transició S2. Totseguit s’allibera el nucli i es duu a terme el post-Wt del procés despertat,dins el mateix exemplar de monitor, però en l’operació que té el Wt que elprocés despertat havia invocat anteriorment. Aquí no s’allibera el monitor.Aquest passa del procés assenyalador al despertat per dur a terme el post-Wt.

177

Page 190: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

Un processador queda lliure Quan el control passa a aquest punt, sempres’està dins el nucli. S’assigna el processador al primer procés de la cua L.Després s’allibera el nucli i es desinhibeixen les interrupcions.

Com s’ha exposat abans, sempre les interrupcions desinhibides seran les delmateix processador que les va inhibir a l’entrar a monitor.

7.4 Resum

Desenvolupar un sistema operatiu (OS) directament sobre hardware i organitzar-lo de forma sistemàtica, permet el control de totes les capes de software. No hi hacapes fosques, que no es coneixen. Si, a més, es segueix el model de processosparal·lels invocant monitors, es pot obtenir un sistema molt clar i verificable. Coma conseqüència, la seguretat del seu funcionament augmenta moltíssim.

Aixó és molt necessari per sistemes crítics, tals com els incrustats en vehicles detota mena: automòbils, avions, etc. També els que realitzen operacions bancàries,i molts altres.

La major part del capítol s’ha dedicat a transmetre el coneixement necessari perpoder fer-ho. S’ha exposat l’estructuració d’un nucli d’OS per un hardware mul-tiprocessador amb una sola memòria compartida. Un dels aspectes importantsés el disseny dels gestors d’interrupcions, els quals han estat dissenyats com amonitors complementats, si cal, amb tasques de l’OS.

S’ha entrat en el detall de les primitives dels monitors, suficient per poder-lesprogramar sobre la màquina. Per això s’ha ampliat, per incloure les interrupcions,l’exposat en la secció 6.8. S’ha exposat, com exemple, el model de dos monitorsdedicats a la gestió d’interrupcions d’entrada i de sortida de caràcters.

Com a primera part, el capítol ha tractat la implementació de monitors sobre unOS que solament ofereix semàfors, però no ofereix les primitives per realitzarmonitors. S’ha exposat una manera d’interpretar amb semàfors aquestes primi-tives.

7.5 Problemes

Problema 7.1(). Construïu un mòdul PADD equivalent al següent, però implementat única-ment amb semàfors.

178

Page 191: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

ATI MonTaulaTYP

MonTaular

integerw

integerOKtoR

conditionOKtoW

conditionm

monitorPRC

IniMonTaula. . .

AdqReadINT

RESct: MonTaula

PARct: MonTaula

ALGEnterMon(ct.m)?

ct.w > 0Wait(ct.OKtoR)

ElseNil

ct.r:= ct.r + 1SignalExit(ct.OKtoR)

Concretament, es demana el mateix segment de mòdul: representació, IniMon-Taula i AdqRd complets, suposant que PADD disposés de semàfors i no disposésde l’API que li permet realitzar monitors. No heu de programar el mòdul semàfor.

(b). En el mòdul que s’ha donat anteriorment, demostreu que la transicióAdqRd_SgnlExit conserva l’invariant:

ct. > 0→ ¬sEmpty(ct.OKtoRd).

Podeu fer ús de l’invariant del monitor taula explicat a classe. Suposeu-lo jademostrat.

Problema 7.2Una aplicació, la qual ha de córrer sobre una arquitectura multiprocessador ambmemòria compartida, és simulada usant un monitor. L’esquema següent corres-pon a l’algorisme d’una de les operacions d’aquest monitor:

179

Page 192: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

ALGEntermon(c.m)?

C OR !IsEmpty(c.cond2)Wait(c.cond1)

PSignalexit(c.cond1)

ElseNil

C és una condició booleana i P és un segment de programa. Es vol realitzarl’aplicació sobre un nucli multitasca que no té monitors però si semàfors. Pertant, els procediments EnterMon, Wait, SignalExit i IsEmpty no són disponibles.

Doneu:

()- L’esquema PADD equivalent a l’esquema anterior, però usant segments deprograma amb semàfors en comptes dels procediments no disponibles.

(b)- La inicialització dels semàfors que heu usat a ().

Suposeu que el semàfor té les operacions IniSem, P i V de sempre. Però, a mésa més, també disposa del procediment booleà EsperaAlgu(semafor), el qual valcert si hi ha algun procés esperant a la cua del semàfor. En el cas contrari valfals.

180

Page 193: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

BIBLIOGRAFIA

[1] G. R. Andrews. Concurrent Programming. Principles and Practice. The Ben-jamin/Cummings Publishing Company, Inc., 1991.

[2] Christel Baier and Joost-Pieter Katoen. Principles of Model Checking. The MITPress, Cambridge, MA, 2008.

[3] M. Ben-Ari. Principles of Concurrent and Distributed Programming. PrenticeHall, 1990.

[4] E.M. Clarke, O. Grumberg, and D.A. Peled. Model Checking. The MIT Press,1999.

[5] Willem-Paul de Roever, Franck de Boer, Ulrich Hanneman, Yassine Lakhnech,Mannes Poel, and Job Zwiers. Concurrency Verification: Introduction to Com-positonal and Noncompositional Methods. Cambridge University Press, 2001.

[6] Department of Defense. Reference Manual for the Ada Programming Lan-guage, 1983. ANSI/MIL-STD-1815A.

[7] E.W. Dijkstra. Cooperating Sequential Processes. In F. Genuys Ed. Program-ming Languages, pages 43–112. Academic Press, New York, 1968.

[8] Per Brinch Hansen. Operating System Principles. Prentice-Hall, 1973.

[9] Per Brinch Hansen. The Origin of Concurrent Programming. Springer, NewYork, USA, 2002.

[10] C.A.R. Hoare. Monitors: An Operating System Structuring Concept. Commu-nications of ACM, 17(10):549–557, October 1974.

[11] C.A.R. Hoare. Communicating Sequential Processes. Communications ofACM, 21:666–677, 1978.

[12] Gerard J. Holzmann. The Spin model checker: primer and reference manual.Addison Wesley, 2004.

[13] INMOS-Limited. Occam Programming Manual. Prentice Hall, 1985.

[14] INMOS-Limited. Occam 2 Reference Manual. Prentice Hall, 1988.

[15] G. Jones. Programming in Occam. Prentice Hall, 1987.

[16] Z. Manna and A. Pnueli. The Temporal Logic of Reactive and ConcurrentSystems. Specification. Springer, 1991.

[17] Z. Manna and A. Pnueli. Temporal Verification of Reactive Systems. Safety.Springer, 1995.

[18] J.T. Palma, M.C. Garrido, F. Sanchez, and A.Quesada. Programación Concur-rente. Thomson Eds. Spain, Paraninfo, 2003.

181

Page 194: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

[19] S. Tucker Taft, Robert A. Duff, Randall L. Brukardt, Erhard Ploedereder, andPascal Leroy. Ada 2005 Reference Manual. Language and Standard Libraries.LNCS. Springer Berlin / Heidelberg, 2006. International Standard ISO/IEC8652/1995 (E) with Technical Corrigendum 1 and Amendment 1.

[20] Gerard Tell. Introduction to Distributed Algorithms. Cambridge UniversityPress, 2000.

182

Page 195: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

A Programació seqüencial en PADD

A.1 Introducció

Aquest apèndix introdueix les sentències PADD per a la programació seqüen-cial. Són usades en el capítol 2, el qual tracta les sentències PADD per al modelatde sistemes distribuïts. S’aconsella llegir aquest apèndix quan no s’entengui al-guna sentència seqüencial del capítol citat.

Un programa consta d’un conjunt de procediments. Un d’ells és el principal,anomenat main. Els procediments estan continguts dins d’un mòdul, en el qualtambé es poden definir constants i tipus. Els procediments, les constants i elstipus són visibles, poden usar-se, dins del mòdul. Més informació sobre el mòdulla trobareu més endavant en la secció A.5 d’aquest apèndix.

A.2 Procediments modulars

Introducció

Un procediment modular és una part de programa a la qual li donem un nomper ser invocat dins d’algún altre procediment; per exemple del programa prin-cipal. La relació del procediment amb la resta del programa, les seves entradesi sortides, estan definides a la interfície del procediment. La figura A.1 il·lustral’esquema PADD del procediment.

El motiu del nom procediment modular és el d’evitar confusions amb el proce-diment usual de la programació seqüencial. Un cas particular del procedimentmodular és el procediment típic de la programació seqüencial. Aquest apèndixtractarà solament aquest cas particular. El capítol 2 farà servir el cas general.En ell, el procediment modular es compon en paral·lel amb uns altres i usa con-nexions per comunicar-se amb altres processos paral·lels. Les connexions sóndeclarades a la interfície. Aquesta és una de les diferències amb el procedimentseqüencial usual. D’ara endavant emprarem el mot procediment per referir-nos aun procediment modular.

183

Page 196: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

<proc_name>int

... definició de la interfíciealg

... cos de l’algorisme

Figura A.1: Esquema d’un procediment modular

Estructura

L’algorisme i la interfície són les dues parts principals d’un procediment, figuraA.1. Aquestes s’ubiquen com a subarbre diagonal inferior de les paraules claualg i int, respectivament. La interfície defineix els punts de comunicació entre elprocediment i la resta del programa. Aquests punts són variables i/o connexions.Les variables defineixen posicions de la memòria per al pas de valors. Aquestamemòria pot estar compartida amb uns altres processos paral·lels. Les connex-ions serviran per comunicar valors a processos connectats en paral·lel, senseintervenció de la memòria compartida. La comunicació pròpia té lloc dins l’al-gorisme del procediment, en dur a terme les sentències d’assignació i/o les decomunicació. Per tant, la interfície és estàtica i l’algorisme és dinàmic.

El procediment principal, main, representat en el següent esquema de la figuraA.2, pot cridar altres procediments. L’execució d’un programa comença en elprocediment principal.

mainint

resret: integerin: FILEout: FILEerr: FILE

parargs: StrArrayin: FILEout: FILEerr: FILE

alg...

Figura A.2: Procediment principal

La interfície del procediment principal és sempre la mateixa, la indicada a la figuraA.2. Connecta el programa amb unitats d’entrada i de sortida. També permetpassar arguments pel vector args. El codi d’error, al final del programa es posa ala variable ret.

La interfície d’un procediment

La interfície defineix l’acoblament, relació o connexió, del procediment amb la

184

Page 197: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

resta del programa. Aquesta definició es fa amb variables i connexions, tant perles entrades com per les sortides.

<proc_name>int

resDeclaració de resultats

posPostcondicions relacionantresultats i paràmetres

parDeclaració de paràmetres

prePrecondicions imposadesals paràmetres

algCos de l’algorisme

Figura A.3: Interfície d’un procediment

La interfície, figura A.3, té dues parts definides en diagonal per sota les paraulesclau par, els paràmetres o entrades, i res, pels resultats o sortides. L’àmbit de lesvariables i les connexions definides a la interfície és l’algorisme del procediment.Les variables definides a la part par, com a paràmetres, no poden ser modificadespel procediment; a no ser que també estiguin definides a la part res. Solamentles variables a la part res poden ser modificades per l’algorisme del procediment.

El procediment pot estar compost en paral·lel amb altres processos. Si les varia-bles estan a la memòria compartida, els canvis del valor d’una variable, realit-zats per altres processos, són vistos dins el procediment. No cal tornar a entrarper a veure’ls. De la mateixa forma, tot canvi de valor fet pel procediment auna variable definida a la part res és vist immediatament per qualsevol procésparal·lel que la consulti; no cal que el procediment retorni. Per tant, les variablesa la interfície són passades per referència i no per valor.

Una altra forma d’intercanvi de valors d’un procediment amb la resta del progra-ma és mitjançant connexions. Aquesta és la forma corresponent a un sistemapròpiament distribuït. Les connexions han d’estar definides a la interfície. Coma paràmetres, si per elles el procediment rebrà valors de processos paral·lels, ocom a resultats si per elles el procediment enviarà valors.

Aquesta política de declaracions a la interfície evita efectes laterals, ja que no hiha variables implícitament comunes. Això força a treballar amb variables de tipusestructura, per evitar declaracions llargues; la qual cosa és positiva a efectesd’ordenament de conceptes i auto-documentació.

La interfície pot tenir també precondicions i postcondicions. Les precondicionsposen condicions que han de complir els paràmetres. Es defineixen a la diagonalinferior de la paraula clau pre. Les postcondicions informen sobre els resultatsdesitjats en funció dels valors dels paràmetres. En aquest document, tant lesprecondicions com les postcondicions es defineixen com a comentaris, formantpart de la documentació del procediment.

Referència a un procediment

Una sentència de referència a procediment serveix per iniciar l’execució del pro-cediment en el punt de la referència. El format és el següent:

185

Page 198: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

r1, r2, ... := Proc.Nme(p1, p2, ...).

La sentència té la llista de resultats a la part esquerra, el símbol d’assignacióa la dreta, el nom del procediment i la llista de paràmetres a la dreta del nom.L’ordre a les dues llistes ha de correspondre als de la interfície del procedimentreferenciat.

A.3 Sentències per definir la part algorísmica

Declaració de variables

algvar

v1: Typv1...

...

algloc

v1: Typv1...

...

Figura A.4: Declaració de variables

Una variable pot declarar-se en qualsevol part de l’algorisme, no només en dia-gonal de la paraula clau alg. En diagonal de var o loc podem posar una llistavertical ,b el noms de les variables i els seus tipus associats, tal com es mostraen l’exemple de la figura A.4. Les declaracions poden quedar niades entre co-mentaris. L’àmbit de la variables declarades correspon a tot el subarbre verticalde var o loc.

Sentències bàsiques

Són les referències a procediments, vistes abans, l’assignació, la sentència Nil iles sentències de comunicació. Aquestes últimes juntament amb els processosen paral·lel són tractades en el capítol 2.

Descripcions amb àmbit

Els comentaris en PADD són descripcions amb àmbit. Consisteixen en una líniade text que descriu les sentències que estan en el seu subarbre diagonal, o siguisota el seu àmbit. El comentaris han de començar amb el caràcter ‘♯’ quan s’en-tren amb l’editor d’esquemes PADD. Aquest caràcter s’esborra quan s’usa l’einad’impressió.

Acabada l’execució de les sentències que estan en diagonal del comentari, elprograma continua executant les sentències connectades en vertical sota la líniadel comentari. Un exemple és el de la figura A.5.

186

Page 199: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

alg... sentències que s’executen abans de la descripcióDescripció amb àmbit

... sentències sota la descripció... sentències que s’executen després de la descripció

Figura A.5: Cometaris en PADD

Composició en seqüència

La composició en seqüència de processos es representa com una llista de proces-sos connectats en vertical, seguint un esquema com el de la figura A.6. L’ordred’execució comença pel procés que està més amunt de la llista i continua pelsque té per sota. L’execució s’acaba quan l’últim procés de la llista acaba.

alg...p1p2...pn

Figura A.6: Composició en seqüència

Composició en selecció

La selecció es construeix connectant les alternatives amb línies horitzontals, perla seves capçaleres (en l’actual implementació el punt estructural d’unió és elcaràcter ‘o’). Cada alternativa A està encapçalada per la seva condició booleanab precedida per un parèntesi obert, figura A.7.

alg... sentències que s’executen abans de la selecció?

b1A1

b2A2

... bn

An... sentències que s’executen després de la selecció

Figura A.7: Composició en selecció

Les alternatives connectades en horitzontal estan en diagonal sota l’àmbit delsímbol de la selecció ‘?’. L’alternativa de més a l’esquerra, en el cas de que laseva condició avaluï a cert, serà l’elegida per executar-se. En qualsevol execu-ció, almenys una condició booleana ha d’avaluar-se a cert, si no es produeix un

187

Page 200: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

error d’execució. A l’última alternativa d’una selecció, la de més a la dreta, hipodem trobar un else en el lloc de la condició booleana, indicant que sempreestarà validada. Quan l’alternativa else no executar res, llavors hem de posar-hiun nil. L’execució d’una selecció acaba quan l’alternativa seleccionada acaba,continuant pel següent procés connectat en vertical del símbol ‘?’.

Iteració seqüencial

alg... sentències que s’executen abans de la iteració

*B1 b

B2... sentències que s’executen després la iteració

Figura A.8: Iteració seqüencial

Una iteració seqüencial condicional consisteix en el símbol ‘*’, indicatiu del fetque la iteració comença en aquest punt de la seqüència, i el cos de la iteració,ubicat a la diagonal del símbol (el seu refinament).

L’expressió booleana b de la figura A.8 la podem situar arreu del cos de laiteració. Quan editem, posarem un parèntesi obert ‘(’ a l’esquerra, com en el casd’una selecció, de la condició booleana. En l’actual implementació, l’estamentde l’expressió booleana no pot estar com a refinament d’un comentari. B1 andB2 , figura A.8, són parts del cos que s’executen abans i després de la condicióbooleana b. Ambdues són opcionals, però almenys una d’elles ha de ser-hi.

La repetició ocorre mentre l’expressió booleana b avalua cert. En el cas contrari,se surt de la iteració i l’execució continua amb el procés connectat en verticalsota del símbol d’iteració ‘*’.

...

* k:= 1..nB

...

Figura A.9: Iteració indexada

També es podem fer iteracions indexades; la figura A.9 mostra l’esquema. El cosde la iteració, B , conté les sentències que s’executaran repetitivament.

188

Page 201: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

A.4 Definició de tipus

Tipus bàsics

Les estructures de dades es defineixen com a tipus. Els tipus són esquemes,com en un algorisme, i es col·loquen sota l’àmbit de la paraula clau typ. El llen-guatge inclou els tipus bàsics, els enumerats i els de subinterval. Aquests podenusar-se per definir tipus més complexos, ubicant-se a les fulles dels esquemes ala diagonal del tipus. Alguns exemples són: re, strng, {centƒ c engnyer}, i1..30.

Producte de tipus

A la figura A.10 hi ha un exemple d’una definició d’un tipus de número com-plex, en concret un producte cartesià de dos res. L’operador del producte carte-sià es representa com la unió en vertical entre r i .

typcomplex

rreal

ireal

Figura A.10: Exemple d’un tipus complex

Els identificadors r i s’usen per seleccionar els components d’una variable declara-da com a tipus complex. Així doncs, complex està definit com el producte cartesiàdels tipus complex.r i complex.i, els quals es defineixen com a tipus real, en dia-gonal, tal com es mostra a la figura A.10. Estructures de tipus més gran es podendefinir fent créixer els arbres, explícits i clars, sota l’àmbit de la paraula clau typ.Dins del cos de l’algorisme, els selectors per una variable de tipus complex són.r i ..

Array

El tipus array es defineix com una iteració sobre l’operador del producte carte-sià. El símbol ‘*’ denota bucle, on l’índex de tipus interval està a la dreta, i al seusubarbre diagonal hi ha l’expressió que iterem.

L’esquema de la figura A.11 il·lustra un exemple de la definició d’un tipus array.Els selectors vàlids per una variable v del tipus array serien (1), ... ,(N).

189

Page 202: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

typType_Id

* 1..NElement

...

Figura A.11: Tipus array

Exemple

Un exemple d’una definició de tipus més complexa és el de la següent figuraA.12:

typLinkList

Location

* 0 .. mxsize - 1contents

elemtypenext

integerFirst

0 .. mxsize - 1FirstAvail

0 .. mxsize - 1

Figura A.12: Exemple d’una definició de tipus

A la figura A.12, es defineix el tipus LinkList, una llista enllaçada, com un pro-ducte on un dels components és un array amb elements de tipus producte de doselements. Els altres dos components First i FirstAvail són cursors.

A.5 El mòdul

Un mòdul permet definir constants, tipus i procediments. A més a més, pot tenirparàmetres.

El mòdul, figura A.13, conté un nom a la capçalera refinat amb una llista verticalde seccions per paràmetres (par), constants (cns), tipus (typ) i procediments(prc). Totes les constants es defineixen en una llista vertical refinant la paraulaclau cns. La definició de tipus i procediments segueix aquest mateix patró.

Un programa té sempre un mòdul principal sense paràmetres. L’execució delprograma s’inicia en el seu algorisme.

190

Page 203: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

<module_name>par

... declaració dels paràmetres del mòdulcns

... definició de constantstyp

... definició de tipusprc

... declaració de procediments

Figura A.13: Esquema de mòdul

A.6 Exemple

Descripció general

L’exemple de la figura A.14 il·lustra un senzill programa seqüencial que cerca elnúmero més gran que hi ha dins d’un array d’enters positius.

A la capçalera del programa PADD hi ha la definició de constants (cns) i tipus(typ) i en vertical trobem els dos procediments.

Detalls de la implementació

A la part inicial del programa hi ha l’assignació de la constant N, N := 10. El tipusArrayInt està definit com un bucle de N integers.

Els dos procediments, ubicats en diagonal de la paraula clau (prc), són maini MaxIntArray. La interfície del main inclou els paràmetres i resultats tal coms’indica a la subsecció A.2.2. En el cos de l’algorisme trobem la declaració de lesvariables i , respectivament dels tipus ArrayInt i integer. L’array s’inicialitzaamb el procediment InitIntArray, el qual omple les N caselles d’ amb enterspositius. La seva implementació no es detalla a la figura A.14. En vertical hi ha lacrida a MaxIntArray que realitza el càlcul de l’enter més gran dins de l’array . Elresultat es visualitza per pantalla mitjançant la comanda trace.

La interfície del procediment MaxIntArray té dos paràmetres: l’array d’entradasobre el que es cercarà l’enter màxim i N la longitud d’, la qual ha de ser méspetita o igual a la dimensió de l’array definida en el tipus ArrayInt. Els resultatssón l’enter més gran que s’ha trobat dins de l’array i l’índex de la posició queocupa aquest dins d’.

En el cos de l’algorisme de MaxIntArray, un cop inicialitzades les variables n i , unbucle recorre les N posicions d’ cercant l’enter més gran. El cos del bucle és unaselecció. Quan l’actual valor, (k), és més gran que n, llavors n i s’actualitzen.

191

Page 204: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

MaximArrayMàxim d’una llista d’enters

cnsN:= 10

typArrayInt

*1..Ninteger

prcProcediment principal

mainint

resret: integerin : FILEout: FILEerr: FILE

parargs: StrArrayin : FILEout : FILEerr : FILE

algvar

a: ArrayInti: integer

Inicialitzar la llistaa:= InitIntArray(N)

Màxim de la llistan, i:= MaxIntArray(a, N)trace(1, "El màxim de la llista és = %d ubicat a la posició = %d", n, i)

Cerca el valor màxim dins de la llista d’enters positiusMaxIntArray

intres

n: integeri: integer

posn: l’enter més gran dins la llista ai: l’índex de n dins de la llista a

para: ArrayIntaN: integer

preLa llista a conté aN entersaN <= N

algvar

k: integerInicialitza variables

n:= 0i:= 1

*k:= 1..aN?

a(k) > nn:= a(k)i:= k

elsenil

Figura A.14: Exemple que calcula el màxim d’un array d’enters

192

Page 205: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

B Un model de xarxa de comunicació

B.1 Introducció

Es descriu un model de xarxa de comunicació que s’està usant en l’actualitat perestudiar i optimitzar protocols i programes distribuïts. Aquest estudi no es podriafer en una xarxa real, perquè obtenir traces relacionant nodes diferents seriamassa costós i complex. Una xarxa real tampoc permetria fer proves, especificantel que hauria de dur a terme cada node. Com definir proves en una xarxa de moltsnodes, distants entre ells? Una altra raó per fer un model és que aquest pot oferirels serveis de la xarxa que necessitem i que no són oferts en cap de les xarxesreals a les que podem accedir.

Es poden reunir processadors en un laboratori formant una xarxa, però això seriacostós i no es podria treballar en xarxes de molts nodes. És molt més fàcil modelarla xarxa i estudiar els programes dels seus nodes client en un entorn de simulació,sobre un sol ordinador. Llavors es té el màxim control de la xarxa; es poden entrarels casos de prova que es vulgui i obtenir les traces corresponents. En el model enPADD que es dóna, el nombre de nodes és un paràmetre que pot prendre valorsgrans; per canviar aquest nombre tan sols cal recompilar el model.

En fer ús de molts dels elements que s’han estudiat, el model és un exemple inte-grador: paral·lelisme, iteradors de paral·lelisme, comunicació síncrona, semàfors,monitors, memòria compartida i local, etc.

Solament es descriu el model de la xarxa de comunicació pròpia. Es modela elcomportament dels seus nodes de comunicació. No s’entra en detall en els nodesclient en els que s’executen les aplicacions.

B.2 Marc d’aplicació del model

El grup de recerca en sistemes distribuïts (GRSD) ha creat i usat a fons un modelde xarxa de comunicació. Aquest ha estat imprescindible per a la seva recerca enalgorismes de control de concurrència en bases de dades distribuïdes (BDD).

L’aplicació està formada per un conjunt de nodes client, interconnectats per unaxarxa de comunicació. Un d’aquests clients és l’scheduler, la resta són els servi-dors. Cada servidor té la seva còpia de la BD i el seu procés de lectures i escrip-tures sobre ella. Aquestes operacions sempre es fan sobre variables, les qualsformen part de la BD on cada variable pot estar replicada en més d’un node.Cada node té un diccionari amb informació de quins nodes tenen còpia de cadavariable.

La seqüència de lectures i escriptures que fa un servidor és agrupada en transac-cions i cada una d’elles està formada per unes quantes lectures i escriptures. Pertant, cada servidor duu a terme un seguit de transaccions, una després de l’altra.

Es vol que les actualitzacions quedin reflectides a totes les còpies de les varia-bles. Per tal de garantir la igualtat de totes aquestes còpies s’han de dissenyar

193

Page 206: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

programes distribuïts amb protocols d’actualització ( algorismes de control deconcurrència en BDDs ) i que són l’objecte d’estudi.

B.3 Els nodes client de la xarxa

Introducció

Es modela un sistema gestor de base de dades format per un conjunt de clients del’aplicació, modelats en grup dins l’scheduler, que és un dels clients de la xarxa.Aquest envia, a la resta de clients de la xarxa, els servidors, les operacions queells han de dur a terme, mitjançant missatges de comunicació. Llavors, el sis-tema està format per tres processos globals: l’scheduler, la xarxa i els servidors.Solament es descriu detalladament la xarxa. Dels altres dos processos tan solses resumeixen les seves funcions.

L’scheduler

L’schedulermodela el conjunt de clients que envien les operacions de les transac-cions cap els servidors del sistema. Aquestes són operacions d’inici, de finalit-zació i de lectura/escriptura.

Cada client envia en sèrie les transaccions, de forma que no inicia l’execuciód’una transacció fins que no ha finalitzat l’execució de l’anterior. Les operacionsque formen la transacció també s’executen en sèrie, ja que no s’inicia l’execuciód’una operació fins que l’anterior s’hagi executat completament.

D’aquesta forma, l’scheduler permet executar transaccions de forma concurrententre els diferents clients que envien les transaccions en paral·lel.

La càrrega del sistema es modela a partir del temps d’espera entre l’execució dedues operacions de la mateixa transacció i el temps d’espera entre la finalitzaciód’una transacció i l’inici de l’execució de la següent. També es pot fixar la càr-rega del sistema en funció del número de clients del sistema i la longitud de lestransaccions.

L’scheduler també s’encarrega de guardar tota la informació que li permet cal-cular les mètriques de la simulació a partir dels temps d’execució i del tipus definalització de les transaccions, que pot ser de commit o abort.

Els servidors

El servidor és l’element central de la base de dades distribuïda i disposa d’unabase de dades local i del diccionari de dades, que té informació relativa a laubicació de les dades entre els diferents nodes del sistema. El diccionari estàtotalment replicat entre els diferents nodes, i no distribuït, ja que així tots elsservidors tenen informació sobre tot el sistema.

194

Page 207: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

La principal funció del servidor és rebre les operacions de l’scheduler i gestionarla seva execució. Per fer-ho, resol les operacions de lectura i d’escriptura i estàestructurat en: gestor de transaccions, gestor de concurrència i processamentlocal.

El gestor de transaccions s’encarrega de coordinar l’execució de les operacionsentre els diferents nodes i de resoldre l’inici i finalització de les transaccions. Elgestor de concurrència aplica l’algorisme de control de concurrència. D’aquestaforma es poden estudiar diferents algorismes i avaluar el seu rendiment. El pro-cessador local duu a terme la operació de lectura o d’escriptura, que sempre éslocal.

B.4 Requeriments del model de la xarxa

Un cop resumides les funcions dels clients de la xarxa, s’entra en els seus requeri-ments. El primer requeriment és que la xarxa ha de ser fàcilment dimensionable.El nombre de nodes ha de poder variar entre 2 i 512, i més gran, depenent de leslimitacions de la màquina.

Tot node client ha de poder enviar paquets a altres clients usant tres tipus deservei:

1. Unicast. El paquet ha d’anar solament al node indicat en el camp destí.

2. Broadcast. Una còpia del paquet ha d’anar a tots els servidors de la xarxa.

3. Total order. És un broadcast que garanteix el mateix ordre d’arribada a totsels nodes.

Per enviar paquets a solament alguns nodes de la xarxa, els processos clientenvien tants paquets Unicast com nodes destí desitjats.

En l’últim tipus de servei, els nodes van enviant paquets concurrentment, no sesap l’ordre de les sortides de paquets. Solament importa que tots els nodes rebinpaquets en el mateix ordre. L’ordre concret és indiferent.

B.5 Disseny del model

Remarcar, primer de tot, que la xarxa real és un sistema pròpiament distribuït.Els nodes no comparteixen memòria. No obstant aquest fet, el model pot tenirmemòria compartida si això el simplifica; sempre modelant el comportament de-sitjat de la xarxa real.

L’estructura global del model de la xarxa pròpia es pot veure a la figura B.1. Elrectangle network representa la xarxa pròpia. Consisteix en la composició enparal·lel d’un procés d’entrada, intoNet, i un de sortida, outFmNet, per a cada undels nodes. Els clients de la xarxa es representen en la part inferior de la figura.Són el scheduler i els servers.

NServ és una constant que val el nombre de servidors a la xarxa. Canviant el seuvalor i recompilant es variarà la mida del model.

Per introduir paquets a la xarxa es disposa un array de connexions, toNet(·). Peragafar paquets arribats a un node es disposa un array de connexions, fmNet(·).

195

Page 208: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

outFmNet(0) intoNet(0) outFmNet(1) intoNet(1) outFmNet(NServ) intoNet(NServ)

Network

getQ(0)

outQ(1)

getQ(1)

outQ(NServ)

getQ(NServ)

Monitor

Semaphore

Monitor

Semaphore

Monitor

Semaphore

outQ(0)

outFmNet(0) intoNet(0) outFmNet(1) intoNet(1) outFmNet(NServ) intoNet(NServ)

SchedulerServer(1) Server(NServ)

fmNet(0) toNet(0) fmNet(1) toNet(1) fmNet(NServ) toNet(NServ)

Figura B.1: Esquema del model global

Cada una d’aquestes connexions es defineix de tipus Packet, amb els camps quemostra la figura B.2.

service order destination origin message

Figura B.2: Estructura del tipus Packet

A causa de la concurrència en l’arribada de paquets a un node, s’hauran deguardar temporalment paquets arribats mentre el client estigui processant un pa-quet anterior. Per fer-ho es posa una cua de paquets a cada node, dins la xarxa.Les cues han de ser a memòria compartida, ja que hi han d’accedir tots els nodes.S’ha de garantir EM en l’accés a les cues. Per això, es decideix usar monitors cuaper guardar-hi els paquets que han de sortir per cada node. És l’array de monitorsoutQ(·) de la figura B.1. A l’entrar, s’examinarà el destí del paquet encuant-lo enla sortida corresponent.

Per modelar el servei d’ordre total s’introdueix un semàfor per a cada una deles cues de sortida. És l’array de semàfors getQ(·) de la figura B.1. El procésd’entrada, per realitzar l’ordre total, adquirirà la propietat de totes les cues desortida; invocant la P del semàfor corresponent, en mecanisme d’EM inicialitzatamb un token. Una cua pot ser propietat de solament un procés d’entrada, coma màxim. Un cop hagi adquirit totes les cues, encuarà una còpia del paquet acada una d’elles. Finalment, alliberarà les cues invocant les V’s dels semàfors. Enaquests accessos s’haurà de garantir absència de bloqueig, ja que més d’un nodepot voler una cua mentre en té un altre. Les línies a traços de la figura indiquenles invocacions de monitors i semàfors per part dels processos d’entrada.

Per tal de garantir absència de bloqueig, cada node d’entrada demanarà les cuesseguint l’ordre dels seus identificadors. Amb aquesta política es pot demostrarque mai pot haver-hi bloqueig.

L’ordre de sortida dels paquets estarà determinat per l’ordre en què cada procés

196

Page 209: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

d’entrada adquireixi totes les cues en règim d’EM; totes solament per a ell. No espot saber, a priori, de quin ordre concret es tracta; però serà el mateix per a totsels nodes de sortida.

B.6 El mòdul que conté el model de la xarxa

La figura B.3 mostra l’estructura global del mòdul PADD que conté el model dela xarxa. S’hi pot observar l’apartat de definició de tipus i el dels procediments.

modXarxatyp

Monitor de cuaQMon

abs PacketQMSemàfors per adquirir les cues

SemArray

* 0..NServSemaphore

Cues de paquets de sortidaQMonArray

* 0..NServQMon

prcProcediment per tractar paquets entrants

intoNet. . .

Procediment per tractar paquets sortintsoutFmNet

. . .Procediment que defineix la xarxa pròpia

network. . .

Figura B.3: Esquelet del mòdul on es defineix la xarxa pròpia

A la primera es defineixen tres tipus: el del monitor cua QMon, l’array de semà-fors SemArray i l’array de monitors QMonArray. El tipus QMon es defineix coml’abstracció abs de la implementació PacketQM del monitor de cua de paquets.Aquesta és semblant a la de la secció 6.4. NServ, el nombre de servidors, és unaconstant coneguda en tot el model.

A l’apartat de definició de procediments de la figura B.3 s’indica lloc per a tresprocediments, els quals s’exposen a les següents seccions.

197

Page 210: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

B.7 La xarxa pròpia

La figura B.4 mostra el procediment que defineix el paral·lelisme corresponenta la xarxa. En els apartats de paràmetres i resultats s’hi declaren els arrays deconnexions per on sortiran i entraran els paquets.

networkint

res[]fmNet(0..NServ):Packet

par<>toNet(0..NServ):Packet

algvar

k:IntegeroutQ:QMonArraygetQ:SemArray

* k:=0..NServgetQ(k):=iniSem(1, "Semaphore")outQ(k):=initQMon()

| | k:=0..NServNode k

| |Sortida

[]fmNet(k),outQ(k):=outFmNet(k,outQ(k))Entrada

outQ,getQ:=intoNet(k,<>toNet(k),outQ,getQ)

Figura B.4: La xarxa pròpia

A l’apartat de l’algorisme s’hi declara l’array de monitors cua, outQ(·), i el desemàfors, getQ(·), emprant els tipus corresponents, definits en el mòdul presentata la secció B.6. A continuació, s’inicialitzen els semàfors, amb un token, i elsmonitors. La resta de la part algorísmica defineix la xarxa pròpia usant l’iteradorde paral·lelisme.

Hi ha NSer + 1 nodes. Cada node té un procés de sortida, definit en el procedi-ment outFmNet, i un procés d’entrada, definit en el procediment intoNet. Segonsindica la sentència d’invocació a procediment, el procés de sortida té el monitoroutQ(k) accessible, tant per llegir com per escriure-hi; pot enviar paquets per laconnexió fmNet(k). Segons la invocació de procediment, el procés d’entrada tél’array de monitors outQ(·) i el de semáfors getQ(·), accessibles tant per escriure-hi com per llegir. Necessita accedir a tots els monitors i semàfors per posar-hiels paquets, ja que aquests poden tenir com a destí qualsevol node de la xarxa.Finalment, els dos procediments tenen accés de lectura a l’índex k del node, coma paràmetre.

198

Page 211: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

B.8 Entrada a la xarxa

La figura B.5 mostra el procediment que defineix el tractament de cada paquetque entra a la xarxa. A la interfície es pot observar que l’ordre dels paràmetresi resultats és consistent amb els de la invocació del procediment a la figura B.4.Com a variables locals al procediment hi ha pkt per guardar-hi el paquet que en-

intoNetint

resoutQ:QMonArraygetQ:SemArray

pari:Integer<>toNet:PacketoutQ:QMonArraygetQ:SemArray

algvar

pkt:Packetk,order:Integer

order:=0

* ∞pkt:=<>toNetGuardar l’ordre d’entrada en el camp corresponent del paquet

order:=order+1pkt.order:=order

?

pkt.service=TotalOrderAgafar en EM totes les cues

*k:=1..NServP(getQ(k))

*k:=1..NServpkt.dest:=koutQ(k):=inQM(pkt,outQ(k))

Alliberar totes les cues

*k:=1..NServV(getQ(k))

pkt.service=Broadcast

*k:=1..NServpkt.dest:=koutQ(k):=inQM(pkt,outQ(k))

pkt.service=UnicastoutQ(pkt.dest):=inQM(pkt,outQ(pkt.dest))

Figura B.5: Entrada a la xarxa

tra, l’índex k de les iteracions i order que guarda l’ordre d’arribada dels paquets.

Després de l’arribada del paquet i d’estampar-hi l’ordre, una selecció de tres al-ternatives bifurca el tractament del paquet segons el tipus de servei demanat pelclient de la xarxa, guardat al camp pkt·service. El codi del servei està guardat ales constants globals Broadcast, Unicast i TotalOrder; les quals tenen els valors 1,2 i 3 respectivament.

En les tres alternatives, per modelar l’enviament a un node d’un paquet entrant,s’encua a la cua del node de sortida pkt·dest invocant l’operació inQM del mo-nitor outQ(d), on d pot ser k o bé pkt·dest, segons l’alternativa i el destí desitjat.

El servei Unicast fa solament un enviament, el Broadcast en fa tants com servi-dors a la xarxa. El servei TotalOrder primer adquireix totes les cues, desprésencua una còpia del paquet a cada una d’elles i, per acabar, allibera totes ellesinvocant la V de cada un dels seus semàfors.

199

Page 212: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

B.9 Sortida de la xarxa

La figura B.6 mostra el procediment que modela la sortida de paquets d’un nodede la xarxa. Es pot observar la coincidència dels ordres i tipus dels paràmetresi resultats amb els de la invocació al procediment, en el procés de sortida dela figura B.4. La part algorísmica consisteix en una iteració indefinida. El cos

outFmNetint

res[]fmNet:PacketoutQ:QMon

parIdentificador del node

i:IntegeroutQ:QMon

algvar

pkt:Packetdeltime:Real

* ∞pkt,outQ:=outQM(outQ)Modelat del temps de retard.

deltime:= . . .delay(deltime)

[]fmNet:=pkt

Figura B.6: Sortida de la xarxa

d’aquesta comença demanant el primer paquet de la cua del node outQ, invocantl’operació outQM, desencuar. Quan aquesta cua és buida el procés espera, segonsl’exposat a la secció 6.4. El paquet tret de la cua és guardat a la variable pkt. Uncop agafat un paquet hi ha la part on es modelaria el temps de transmissió perla xarxa. En el model actual no s’ha entrat en cap detall. Un cop avaluat esguardaria a la variable deltime. En el model, després d’esperar aquest temps eslliura el paquet al client per la connexió fmNet.

B.10 El paral·lelisme global

La figura B.7 mostra el procediment main que modela tot el sistema, incloentels clients de la xarxa. Està ubicat en un mòdul diferent del de la xarxa pròpia,juntament amb els procediments del planificador: sched i server. La interfície delmain és la mateixa per a qualsevol model i no cal entrar-hi. Després de declararels arrays de connexions toNet i fmNet, es composen en paral·lel l’scheduler,la xarxa pròpia i tots els NServ servidors. Aquests últims amb una iteració deparal·lelisme.

Una vegada creats tots aquests processos, s’invoquen els procediments correspo-nents, dins dels quals comença l’execució.

200

Page 213: LaSalleOnLine ENGINYERIES MODELAT I … · Creative Commons License Deed . Reconeixement-No comercial-Sense obres derivades 3.0 Espanya Vostè és lliure de: Copiar, distribuir i

mainint

resret: integerin : FILEout: FILEerr: FILE

parargs: StrArrayin : FILEout : FILEerr : FILE

algcon

toNet(0..NServ):PacketfmNet(0..NServ):Packet

vark:Integer

| |Scheduler

[]toNet(0):=Sched(<>fmNet(0))Network

[]fmNet:=Network(<>toNet)Servers

| |k:=1..NServ[]toNet(k):=Server(k,<>fmNet(k))

Figura B.7: El paral·lelisme global

201