programación pararelo
TRANSCRIPT
Universidad Fermín Toro
Facultad de Ingeniería
Ingeniería en Computación
Procesos
en
paralelo
Andreina Paredes
Sistemas Operativos
Saia
Procesamiento en
paralelo
Permiten
La
ejecución
simultánea
de
diferentes
procesos
Es Se basa en El procesamiento
concurrente de datos
para conseguir menos
tiempo en las
ejecuciones
Activar la ejecución de un programa mediante su
división en fragmentos para ser ejecutados
simultáneamente
Acelerar los procesos de cálculos
Mejora la velocidad de procesamiento y de E/S
Mejora el tiempo de respuesta
Mejora la productividad T
I
P
O
S Implícito
Explícito
Algunos diseños
SMP (Multiprocesamiento simétrico)
MPP (Procesamiento masivamente Paralelo)
SPP (Procesamiento paralelo escalable)
Concurrencia
Permite
Varias
actividades
ejecutadas
simultáneamente
Son Características Comunica
procesos
Compite por
recursos
Sincroniza la
ejecución de los
procesos
Asigna el tiempo
a los procesos
Programación Concurrente
Como
Exclusión Mutua El manejo de los
procesos
asíncronos
Permite Evita
Fragmentos de códigos
Usa
La sincronización
para regresar a un
estado anterior
conocido en caso de
error durante la
sesión
Usando
Algoritmos
Variables
Dekker
Peterson
Semáforos
Monitores
Algoritmo de Peterson
Permite
Algoritmo de Dekker
Permite
Compartir recursos sin
conflictos a dos procesos
Ejemplo
shared int cierto = 1;
''/* Definición de variables compartidas */ ''
shared int bandera[2] = {0,0};
shared int turno = 0;
while (cierto)
{ bandera[proc_id] = cierto;
while (bandera[1-proc_id] == cierto)
{ if (turno == 1-proc_id)
{ bandera[proc_id] = 0;
while (turno == (1-proc_id)) /* espera a que
sea su turno de intentar */;
bandera[proc_id] = 1; } }
/* ''Sección crítica'' */
turno = 1-proc_id; /* es el turno del otro
proceso */
bandera[proc_id] = 0;
/* ''Sección no crítica'' */ }
Compartir recursos sin conflictos
a dos procesos usando memoria
compartida para la comunicación
Ejemplo
bandera[0] = 0
bandera[1] = 0
turno = 0
p0: bandera[0] = 1
turno = 1
while( bandera[1] && turno == 1 );
bandera[0] = 0
p1: bandera[1] = 1
turno = 0
while( bandera[0] && turno == 0 );
bandera[1] = 0
Monitores
Son
Procedimientos, variables y estructuras de
datos que se agrupan en un módulo especial y
facilitan la sincronización de las actividades
simultáneas.
Variables de condición
Signal Wait
Tienen
Características
Se activan al ser invocados por procesos en ejecución
Aumentan la concurrencia y facilitan el mantenimiento
Permiten suspender procesos y reanudar su ejecución en
otro momento
Evitan inconvenientes ocasionados por los semáforos. Tipos
Hoare
Mesa
Semáforos
Son
Variables numéricas enteras de tipo protegida
Dos Estados
Cero Uno
Tienen
El manejo de las secciones críticas
La Exclusión mutua entre procesos
Restringir o permitir el acceso a recursos compartidos y
Evitar que fragmentos de códigos accedan al mismo
tiempo a recursos que no deben ser compartidos
Permiten
El recurso está
siendo utilizado
El recurso está
disponible