Top Banner
PROGRAMACIÓ CONCURRENT Processos i fils
14

1213 Threads [1] Programació concurrent, processos i fils

Jul 01, 2015

Download

Education

Oriol Torres
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 1213 Threads [1] Programació concurrent, processos i fils

PROGRAMACIÓ CONCURRENT

Processos i fils

Page 2: 1213 Threads [1] Programació concurrent, processos i fils

Powerpoint TemplatesPage 2

Programes seqüencialsEs 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.

Page 3: 1213 Threads [1] Programació concurrent, processos i fils

Powerpoint TemplatesPage 3

Programes concurrentsSó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 Un programa concurrent s'acostuma a concebre com un conjunt de processos que col·laboren i competeixen entre sí.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.

Page 4: 1213 Threads [1] Programació concurrent, processos i fils

Powerpoint TemplatesPage 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.

Page 5: 1213 Threads [1] Programació concurrent, processos i fils

Powerpoint TemplatesPage 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.

Page 6: 1213 Threads [1] Programació concurrent, processos i fils

Powerpoint TemplatesPage 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.

Page 7: 1213 Threads [1] Programació concurrent, processos i fils

Powerpoint TemplatesPage 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.

Page 8: 1213 Threads [1] Programació concurrent, processos i fils

Powerpoint TemplatesPage 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.

Page 9: 1213 Threads [1] Programació concurrent, processos i fils

Powerpoint TemplatesPage 9

Sistema distribuïtExisteix concurrència física.

La comunicació és per missatges.

Problemes típics:

La comunicació és costosa.Coherència de dades.Entorns heterogenis.

Page 10: 1213 Threads [1] Programació concurrent, processos i fils

Powerpoint TemplatesPage 10

Exemple de programa concurrentProgramari embarcat de control de un cotxe.

TASCATASCA PeríodePeríode DuracióDuració % ús% ús

Mesura de la velocitat Mesura de la velocitat 200 ms 40 ms 20%

Control de la pressió del Control de la pressió del carburantcarburant

400 ms 100 ms 25%

Control de la vàlvula del Control de la vàlvula del carburadorcarburador

800 ms 400 ms 50%

El conjunt de tasques utilitzen el 95% de la capacitat del processador.NoNo és possible combinar seqüencialmentseqüencialment les tres tasques.

Page 11: 1213 Threads [1] Programació concurrent, processos i fils

Powerpoint TemplatesPage 11

Exemple: Solució concurrentLa solució requereix segmentar les tasques més llargues en seccions més breus.La solució és difícil de mantenir.

Page 12: 1213 Threads [1] Programació concurrent, processos i fils

Powerpoint TemplatesPage 12

Exemple: Tasca aperiòdicaLa 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ó.

Page 13: 1213 Threads [1] Programació concurrent, processos i fils

Powerpoint TemplatesPage 13

Exemple: Solució concurrent

El programa es planteja com 44 processos concurrents que, únicament, interactuen entre ells per compartir el mateix recurs de processament.

Page 14: 1213 Threads [1] Programació concurrent, processos i fils

Powerpoint TemplatesPage 14

Exemple de programa concurrentprogramprogram Control_cotxe;processprocess P_MesuraVelocitat; (*Procés de mesura de la velocitat*)

begin repeat begin repeat M_V; sleep(160 ms); forever; end;forever; end;

processprocess P_PressioCarburant; (*Procés de control de la pressió del carburant*)(*Procés de control de la pressió del carburant*)

begin repeat begin repeat M_V; sleep(300 ms); forever; end;forever; end;

processprocess P_ControlValvulaCarburador; (*Procés de mesura de la velocitat*)(*Procés de mesura de la velocitat*)

begin repeat begin repeat M_V; sleep(400 ms); forever; end;forever; end;

processprocess P_ControlCintur; (*Procés d'atenció del control del cinturó*)(*Procés d'atenció del control del cinturó*)

begin repeatbegin repeat Wait esdeveniment; C_S; forever; end;forever; end;

begin begin (*Programa principal*)(*Programa principal*)

cobegin cobegin

P_MesuraVelocitat;

P_PressioCarburant;

P_ControlValvulaCarburador;

P_ControlCintur;

coend;coend;

endend