Universidad Fermín Toro
  Facultad de Ingeniería
Ingeniería en Computación




 Procesos
    en
  paralelo
       Andreina Paredes
      Sistemas Operativos
             Saia
El procesamiento     Se basa en                                    Es            La
concurrente de datos                     Procesamiento en
para conseguir menos                         paralelo                           ejecución
    tiempo en las                                                              simultánea
     ejecuciones                                                                   de
                                                        Permiten
                                                                               diferentes
                                                                                procesos
                         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
      T                  Mejora el tiempo de respuesta
      I                  Mejora la productividad
      P
      O                Implícito                             Algunos diseños
      S

                       Explícito       SMP (Multiprocesamiento simétrico)
                                       MPP (Procesamiento masivamente Paralelo)
                                       SPP (Procesamiento paralelo escalable)
 Comunica           Características                                  Son
       procesos                                  Concurrencia                         Varias
   Compite por                                                                     actividades
       recursos                                                                     ejecutadas
   Sincroniza la                                            Permite             simultáneamente
   ejecución de los
       procesos
                                          Programación Concurrente
  Asigna el tiempo
    a los procesos
                                                                Como
                          Evita                                        Permite
                                                                                 El manejo de los
Fragmentos de códigos                         Exclusión Mutua                        procesos
                                                                                    asíncronos

            Usa                                          Variables                 Usando

 La sincronización
 para regresar a un                                      Semáforos                  Algoritmos
  estado anterior
conocido en caso de                                      Monitores
                                                                                    Dekker
  error durante la
       sesión
                                                                                   Peterson
Algoritmo de Dekker                                       Algoritmo de Peterson

      Permite                                                                                   Permite

      Compartir recursos sin                                   Compartir recursos sin conflictos
     conflictos a dos procesos                                 a dos procesos usando memoria
                                                               compartida para la comunicación
      Ejemplo
                                                                Ejemplo

                  shared int cierto = 1;
   ''/* Definición de variables compartidas */ ''
           shared int bandera[2] = {0,0};                                  bandera[0] = 0
                shared int turno = 0;                                       bandera[1] = 0
                         while (cierto)                                      turno = 0
           { bandera[proc_id] = cierto;                                   p0: bandera[0] = 1
         while (bandera[1-proc_id] == cierto)                                   turno = 1
              {        if (turno == 1-proc_id)                     while( bandera[1] && turno == 1 );
              {           bandera[proc_id] = 0;                                 bandera[0] = 0
       while (turno == (1-proc_id)) /* espera a que                       p1: bandera[1] = 1
             sea su turno de intentar */;                                             turno = 0
               bandera[proc_id] = 1;           } }                while( bandera[0] && turno == 0 );
                    /* ''Sección crítica'' */                                       bandera[1] = 0
turno = 1-proc_id;                   /* es el turno del otro
                          proceso */
                   bandera[proc_id] = 0;
                /* ''Sección no crítica'' */ }
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.
                   Tienen

                                             Características
Variables de condición

 Signal     Wait                      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
          Tipos                        otro momento
                                      Evitan inconvenientes ocasionados por los semáforos.
          Hoare

          Mesa
Semáforos

                              Son


                   Variables numéricas enteras de tipo protegida

                        Permiten


                        El manejo de las secciones críticas
            Tienen      La Exclusión mutua entre procesos
                        Restringir o permitir el acceso a recursos compartidos y
Dos Estados             Evitar que fragmentos de códigos accedan al mismo
                         tiempo a recursos que no deben ser compartidos
Cero      Uno




El recurso está                     El recurso está
siendo utilizado                       disponible

Programación pararelo

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