2. Programes seqüencials
Es tracta de l'estil de programació que correspon al model conceptual de Von Newmann.
Un programa seqüencial té una línia simple de control de flux.
Les operacions d'un programa seqüencial estan ordenades d'acord amb un ordre estricte.
El comportament d'un programa únicament va en funció de les sentències que l'integren i de
l'ordre en que s'executa.
En els programes seqüencials, el temps que tarda cada operació en executar-se no té
conseqüències sobre el resultat.
La verificació d'un programa seqüencial és senzilla:
Cada sentència dóna la resposta correcta.
Les sentències s'executen en l'ordre adient.
Powerpoint Templates
Page 2
3. Programes concurrents
Són programes que tenen múltiples línies de flux de control.
Les sentències d'un programa concurrent s'executen d'acord amb un ordre no estricte.
La seqüencialització d'un programa concurrent es dóna entre punts de sincronització.
Un programa concurrent s'acostuma a concebre com un conjunt de processos que col·laboren i competeixen
entre sí.
Per validar un programa concurrent:
Les operacions es poden validar individualment si les variables no són actualitzades
concurrentment.
El resultat ha de ser independent dels temps d'execució de les sentències.
El resultat ha de ser independent de la plataforma en la que s'executa.
Powerpoint Templates
Page 3
4. Programa o procés?
Un programa és una seqüència de instruccions escrita
en un determinat llenguatge. Un programa és un
concepte estàtic mentre que un procés és un concepte
dinàmic.
Powerpoint Templates
Page 4
5. Avantatges de la programació
concurrent
Proporciona el model més senzill i natural de concebre moltes aplicacions.
Facilita el disseny orientat a objectes de les aplicacions (els objectes reals són
concurrents.
Facilita la compartició de recursos.
En sistemes monoprocessador permet optimitzar l'ús dels recursos.
Permet reduir els temps d'execució sobre plataformes multiprocessadores.
Powerpoint Templates
Page 5
6. Entorns maquinari per la
programació concurrent
Un programa concurrent correcte ha de funcionar en qualsevol plataforma.
La plataforma pot ser important per establir els models de fallida.
Entorns habituals:
Entorn monoprocessador amb multiprogramació.
Entorn multicomputador amb memòria compartida.
Entorn distribuït.
Powerpoint Templates
Page 6
7. Entorn monoprocessador amb
multiprogramació
Els processos s'executen amb concurrència virtual.
L'aplicació concurrent no s'executa més eficientment.
Raons per les que s'utilitza:
Optimitzar la utilització dels recursos.
Servir a múltiples usuaris.
Aconseguir un disseny més simple i comprensible.
Powerpoint Templates
Page 7
8. Entorn multiprocessador amb
memòria compartida
Els processos s'executen amb concurrència física.
El programa concurrent s'executa de forma més eficient.
Poden existir problemes de coherència entre memòries.
Powerpoint Templates
Page 8
9. Sistema distribuït
Existeix concurrència física.
La comunicació és per missatges.
Problemes típics:
La comunicació és costosa.
Coherència de dades.
Entorns heterogenis.
Powerpoint Templates
Page 9
10. Exemple de programa concurrent
Programari embarcat de control de un cotxe.
TASCA Període Duració % ús
Mesura de la velocitat 200 ms 40 ms 20%
Control de la pressió del 400 ms 100 ms 25%
carburant
Control de la vàlvula del 800 ms 400 ms 50%
carburador
El conjunt de tasques utilitzen el 95% de la capacitat del processador.
No és possible combinar seqüencialment les tres tasques.
Powerpoint Templates
Page 10
11. Exemple: Solució concurrent
La solució requereix segmentar
les tasques més llargues en
seccions més breus.
La solució és difícil de mantenir.
Powerpoint Templates
Page 11
12. Exemple: Tasca aperiòdica
La tasca C_S té la funció de bloquejar el cinturó de seguretat si el sensor
d'acceleració supera un llindar:
Naturalesa: Aperiòdica
Termini de resposta: 30 ms
Ús de la CPU: 20 ms
Interval mínim: 800 ms
Incorporar aquesta tasca a l'estructura seqüencial és molt difícil.
La solució és atendre l'esdeveniment en una rutina de interrupció.
Powerpoint Templates
Page 12
13. Exemple: Solució concurrent
El programa es planteja com 4
processos concurrents que,
únicament, interactuen entre ells
per compartir el mateix recurs
de processament.
Powerpoint Templates
Page 13
14. Exemple de programa concurrent
program Control_cotxe;
process P_MesuraVelocitat; (*Procés de mesura de la velocitat*)
begin repeat M_V; sleep(160 ms); forever; end;
process P_PressioCarburant; (*Procés de control de la pressió del carburant*)
begin repeat M_V; sleep(300 ms); forever; end;
process P_ControlValvulaCarburador; (*Procés de mesura de la velocitat*)
begin repeat M_V; sleep(400 ms); forever; end;
process P_ControlCintur; (*Procés d'atenció del control del cinturó*)
begin repeat Wait esdeveniment; C_S; forever; end;
begin (*Programa principal*)
cobegin
P_MesuraVelocitat;
P_PressioCarburant;
P_ControlValvulaCarburador;
P_ControlCintur;
coend;
end
Powerpoint Templates
Page 14