Está en la página 1de 6

Tema-1-Introduccion.

pdf

xkuwen_

Programación Concurrente y Tiempo Real

2º Grado en Ingeniería Informática

Escuela Superior de Ingeniería Informática


Universidad de Castilla-La Mancha

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Se habla de concurrencia cuando hay una existencia simultánea de varios procesos en ejecución.

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Programas y procesos
Concurrencia a dos niveles:

o Fichero ejecutable
o Ejecución de un programa secuencial conformada por una sucesión de instrucciones
para realizar una tarea concreta y que utiliza unos recursos para ejecutarse: Contador de
programa, espacio de memoria, pila, …

• Cada proceso puede contener subprocesos o hilos los


cuales comparten memoria principal para variables globales, pero su propio CP, Pila y

Reservados todos los derechos.


Registros…

Thread (hilo) secuencia de ejecución independiente dentro de un proceso (pesado), con un


contador de programa, una pila y un conjunto de registros, … (Los procesos pesados, programas
no concurrentes, tienen un único thread de control)

Arquitecturas físicas
• No hay paralelismo y los procesos se reparten el procesador mediante
interleaving (ocurre programación concurrente), controlado por el planificador del S.O. Los
procesos comparten la misma memoria, comunicación y sincronización mediante variables
compartidas
• Hay paralelismo real, pero el interleaving sigue siendo necesario (nº de
procesadores menor que nº de procesos).
Varios Cores en un procesador pueden compartir la misma memoria (los procesadores actuales
tienen varios niveles de memoria en lugar de toda compartida)
• Computadores (uni/multiprocesador) conectados entre sí por una red. Los
procesadores conectados no comparten memoria ni reloj y los sistemas conectados pueden
ser de cualquier tipo. Pueden llegar a ser millones de procesadores Internet. Comunicación
mediante mensajes.

Modelos de concurrencia
• Los procesos pueden acceder a una memoria común y existen variables
compartidas que varios procesos pueden leer y escribir
• Los procesos se intercambian mensajes entre sí (un proceso envía un
mensaje y otro proceso lo recibe)

Hilos y más hilos


Hay dos niveles de hilos en un sistema:
• Soportados por encima del kernel y sin el soporte de éste. Hilos creados en
los programas multi-hilo.
• Soportados por el Kernel del SO, permitiéndole realizar múltiples tareas
simultáneamente.

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4928377
La conversión de hilos de usuario en
hilos de kernel puede seguir diversas
estrategias dependiendo del sistema.

RelacionES entre procesos


Competencia y cooperación
• No existe ninguna relación entre procesos

Varios procesos deben compartir recursos comunes del sistema (acceso a

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
o
variables, …) por lo que compiten entre ellos para conseguirlo.
o Varios procesos deben trabajar sobre distintas partes de un problema para
resolverlo conjuntamente.

Actividades entre procesos


Comunicación
Intercambio de información (datos) entre
procesos. Es necesaria para que varios
procesos puedan colaborar para realizar

Reservados todos los derechos.


una misma tarea. Se utilizan variables
compartidas para compartir información.

Sincronización
Transmisión y recepción de señales para
llevar a cabo el trabajo de un grupo de procesos cooperativos. Impone restricciones a la ejecución
de las sentencias de los procesos. La comunicación entre procesos permitirá la sincronización
entre ellos.

• Uno o más procesos deben esperar a que otro(s) proceso(s) realicen


determinado trabajo (se cumpla cierta condición) antes de continuar con su ejecución. Esta
condición solo puede ser activada por otro proceso.
• Varios procesos compiten por un recurso común de acceso exclusivo (solo un
proceso puede acceder al recurso a la vez y el resto ha de esperar) Cuando un proceso liebra
el recurso de acceso exclusivo y otro proceso está esperando, el proceso que espera accederá
al recurso.
El consumidor no puede
coger un item si el buffer está
vacío, el productor no puede
insertar un item si el buffer está
lleno.

Tu crush de apuntes tiene mejores apuntes que este


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4928377
Representación de la concurrencia

Muestran gráficamente la relación de precedencia entre un grupo de


sentencias o procesos. Cada nodo representa un conjunto de instrucciones.
Una flecha del nodo A al nodo B (A precede a B) significa que B no puede
comenzar hasta que A haya terminado. Los nodos paralelos pueden ejecutarse concurrentemente.

En una ejecución paralela cada proceso de ejecuta en su propia CPU (tantos procesadores como
procesos en ejecución)

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
begin
S1;
Las instrucciones que pueden ejecutarse en paralelo se escriben dentro de un cobegin
bloque cobegin/coend. Las instrucciones dentro del bloque pueden ejecutarse S2;
S3;
en cualquier orden (concurrentemente), el resto se ejecuta secuencialmente coend;
S4;
pascalFC end;

Estructura de un programa
program name;
(* declaraciones globales: *)

Reservados todos los derechos.


(* constantes, tipos, variables *)
(* tipos de procesos *)
(* procesos, monitores *)

begin
(* sentencias *)
end.
Un proceso se postpone con sleep() y vuelve a
listo después de un tiempo.
Un proceso está suspendido cuando llama a una
primitiva que lo bloquea (semáforo, condición,
lectura de un canal…) Un proceso suspendido
sólo vuelve a listo por la acción de otro proceso
que lo desbloquee.

Primer programa
Se define un tipo proceso con process type (puede
recibir parámetros, declarar variables locales…)
Se declaran los procesos y se lanzan concurrentemente
entre cobegin coend
Es posible crear varios procesos del mismo tipo de proceso.

Tu crush de apuntes tiene mejores apuntes que este


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4928377
ejecución de instrucciones en concurrencia

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Conjunto de declaraciones de datos e instrucciones ejecutables las cuales
deben ejecutarse una a continuación de otra (orden total), siguiente una secuencia determinada
(determinada) para resolver cierto problema. Al ejecutar el programa con los mismos datos de
entrada se obtienen los mismos resultados
• Orden parcial, no se restringe el orden de ejecución de los procesos
ejecutados concurrentemente (las instrucciones podrían ejecutarse en cualquier orden o de
forma concurrente) y no existe determinismo

Instrucciones cuya ejecución es indivisible y se ejecutan completamente sin interferencias de otros


procesos. La ejecución secuencial de varias instrucciones puede no ser atómica ya que puede
ocurrir que las distintas instrucciones atómicas de varios procesos se intercalen en su ejecución.

Reservados todos los derechos.


Las instrucciones no-atomicas se dividen para su ejecución en instrucciones más simples que
pueden intercalarse en su ejecución con otras de otros procesos concurrentes.
En pascal-FC las únicas instrucciones atómicas son la asignación (:=) y la escritura (write)

Como todas las intercalaciones de instrucciones atómicas son posibles, un mismo programa puede
obtener resultados diferentes en diferentes ejecuciones (Indeterminismo)

Un proceso se encuentra en condición de carrera si su resultado depende del orden de su ejecución.


Si los procesos en condición de carrera no son correctamente sincronizados, puede producirse
una corrupción de datos.

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4928377

También podría gustarte