Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DAI - UNSAAC.
Moment Acciones
o
M4 4) Calentar 2 min.
P2
Tiempo
* EJECUCION SECUENCIAL
P1
P2
Tiempo
* EJECUCION CONCURRENTE
P1
P2
Tiempo
* EJECUCION PARALELA
*Procesador
*Es un dispositivo hardware capaz de ejecutar
las instrucciones de un proceso. Un procesador
puede ejecutar una sola instruccin de un
programa a la vez.
*Existen computadores que tienen un solo
procesador y a los cuales se les denomina
monoprocesador y a las computadoras que
poseen varios procesadores se les llama
multiprocesador.
*Proces
*Cuando el computador ejecuta un conjunto de
instrucciones, se dice que esta realizando un proceso o
tarea, por lo que un proceso es una secuencia de
instrucciones o sentencias que se ejecutan
secuencialmente en un procesador
*Hil
*En un entorno multitarea a las tareas se les llama
procesos pesados, en un entorno multihilo se les denomina
procesos ligeros o hilos. La diferencia es que os procesos
pesados estn en espacios de direccionamiento distintos.
La comunicacin entre procesos y el cambio de contexto es
muy caro. Por el contrario, los hilos comparten el mismo
espacio de direcciones y comparten cooperativamente el
mismo proceso pesado
*Proceso e Hilo
hilos
Proceso Proceso
Pesado Pesado
1 3
PROCESADOR
*Estados de los proceso
INICIAL
Creacin
Ocurre Evento
LISTO
EJECUCION
Espera Evento Terminar
*Ejecucion de los procesos
*Habiamos dicho que en informatica se
habla de concurrencia cuando hay una
existencia simultnea de varios procesos
en ejecucin.
*Pero no se dijimos nada que si esos procesos
se ejecutan sobre un solo procesador o varios
procesadores.
*Para aclarar este concepto nos pondremos
un ejemplo simple:
Programacion Concurrente.
*Secuencial
*< p1 p2 p3 ... pm q1 q2 q3 ...
*Orden de Ejecucin de las
instrucciones
*Un programa concurrente define un orden
parcial de ejecucin.
*Ante un conjunto de datos de entrada no se
puede saber cual va a ser el flujo de ejecucin.
*Indeterminismo
*El orden parcial implica el no determinismo de
los programas concurrentes.
*Es decir, puede producir diferentes resultados
cuando se ejecuta repetidamente sobre el mismo
conjunto de datos de entrada.
*El no determinismo es una propiedad inherente a
la concurrencia
*Por culpa del no determinismo, es ms difcil
analizar y verificar un algoritmo concurrente
*Ojo, que existan varias posibilidades de salida NO
significa necesariamente que un programa
*Peculiaridades de los
programas concurrentes
*Los programas concurrentes pueden no
terminar nunca y al mismo tiempo ser
correctos.
*Unprograma concurrente puede tener mltiples
secuencias de ejecucin.
*Cuando se dice que un programa concurrente
es correcto, seentiende que se refiere a todas
*
sus posibles secuencias de ejecucin.
secuencias de ejecucin
*Problemas inherentes a la
Programacin Concurrente
*Exclusin Mutua
*Condicin de Sincronizacin
*Verificacin.
*Exclusin Mutua
*Si dos hilos P1 y P2 utilizan una variable
compartida X, y ambos desean realizar alguna
actualizacin de sta en alguna parte de su
cdigo, tendramos:
Hilo P1 Hilo P2 inicio
inicio inicio X <-- 0
.... .... Ejecutar(P1)
X <-- X+1 X <-- X+1 Ejecutar(P2)
.... .... ....
fin fin JuntarHilos
escribir X
fin
A:= A+1
LOAD A, R
ADD R, 1
STORE R, A
*Exclusin Mutua
En la ejecucin del ejemplo podra darse el siguiente
escenario:
inicio
.....
.....
<Fase de negociacin>
Seccin Crtica
<Fase de liberacin>
......
......
fin
*Soluciones de la Exclusin Mutua
Primer Algoritmo
Hilo P1 Hilo P2
inicio inicio
mientras true hacer mientras true hacer
inicio inicio
{seccin no crtica} {seccin no crtica}
repetir repetir
*SEMAFOROS
*REGIONES CRITICAS CONDICIONALES
*MONITORES
*MENSAJES
*SEMAFORO
Operaciones Primitivas.
Wait : si el contador del semforo es igual a 0
entonces
se lleva el proceso que realiza la operacin a la cola
asociada con el semforo suspendiendo su ejecucin y
abandonando el procesador a favor de otro proceso
sino
se decrementa el valor del contador del semaforo en
una unidad y el proceso que realiza la operacin sigue
ejecutndose. Esta operacin debe ser indivisible
*TAD Semafor
*Semforos binarios.
* Toman valores de 0, 1
*Semforos generales.
* Toman valores de 0,1,2,3,4.....n
* Ejemplos
Problema de Productores y
consumidores
PROCESO productores PROCESO consumidores;
VAR pdato : dato; VAR cdato : dato;
inicio inicio
mientras true hacer mientras true hacer
inicio inicio
wait(producir); wait(consumir);
pdato := producir(); wait(cs);
wait(ps); cdato:= buffer[sal];
buffer[ent]:= pdato; sal := (sal mod MAX) + 1;
ent := (ent mod MAX) + 1; signal(cs);
signal(ps); signal(producir);
signal(consumir); consumir(cdato);
fin fin
fin; (* Productores *) fin; (* Consumidores *)