Documentos de Académico
Documentos de Profesional
Documentos de Cultura
xkuwen_
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, …
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)
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4928377
La conversión de hilos de usuario en
hilos de kernel puede seguir diversas
estrategias dependiendo del sistema.
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.
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.
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: *)
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.
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
Como todas las intercalaciones de instrucciones atómicas son posibles, un mismo programa puede
obtener resultados diferentes en diferentes ejecuciones (Indeterminismo)
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4928377