domingo, 25 de octubre de 2015

2.4.1 Exclusión mutua de secciones criticas

Regiones críticas 

Parte de un programa, en la cual se intenta el acceso a recursos compartidos
Tipos de procesos

  Los procesos no conocen a los demás, son independientes, no trabajan juntos.
  Los procesos conocen indirectamente  a otros: no los conocen necesariamente, pero comparten algunos recursos.
  Los procesos conocen a otros: se comunican y trabajan conjuntamente en una misma actividad. 

Competencia de procesos por los recursos

Hay conflicto cuando los procesos compiten por el mismo recurso al mismo tiempo y el sistema operativo asignará el recurso a uno y el resto tendrá que esperar, el que quede esperando se retrasará, se bloqueará y en el peor de los casos nunca terminará bien
Ejemplo: Un Sistema Operativo debe asignar un identificador de proceso (PID) a dos procesos en un sistema multiprocesador. Si se realiza esta acción en dos procesadores a la vez sin control,  se puede asignar el mismo PID a dos procesos distintos. Este problema se debe a que la asignación de PID es una sección crítica que debe ejecutarse en forma atómica, de forma completa e indivisible y ningún otro proceso podrá ejecutar dicho código mientras el primero no haya acabado su sección. 
Debe haber sincronización que permita a los procesos cooperar entre ellos sin problemas protegiendo el código de la región crítica:

  Cada proceso debe solicitar permiso para entrar en la sección crítica mediante código. 
  Cuando un proceso sale de la sección crítica debe indicarlo mediante código. Esto permitirá que otros procesos entren a ejecutar la sección crítica.
Requisitos:
  Exclusión mutua: Si un proceso está ejecutando código de la sección crítica, ningún otro proceso lo podrá hacer. 
  Progreso: Si ningún proceso está ejecutando dentro de la sección crítica, se elegirá alguno de los que desean entrar. 
  Espera acotada: Debe haber un límite en el número de veces que se permite que los demás procesos entren a ejecutar código de la sección crítica después de que un proceso haya efectuado una solicitud de entrada y antes de que se conceda la suya.

Exclusión mutua  

Operación de control que permite la coordinación de procesos concurrentes, prohibiendo a otros procesos realizar una acción cuando un proceso haya obtenido el permiso.
Involucra al sistema operativo (quien asigna recursos), y a procesos, que deben  expresar los requisitos de exclusión mutua, como puede ser bloqueando los recursos antes de usarlos.

Problemas:
                     Interbloqueo. Se tienen dos procesos 1 y 2 y dos recursos críticos, R1 y R2. Cada proceso necesita acceder a ambos recursos para llevar a cabo una parte de su función, es posible que: el sistema operativo asigna R1 a 1 y R2 a 2. Cada proceso está esperando uno de los dos recursos. Ninguno liberará el recurso que ya tiene hasta que adquiera el otro y ejecute su sección crítica. Ambos procesos están interbloqueados.
                     Inanición. Tres procesos, 1, 2 y 3, necesitan acceder periódicamente al recurso R. 1 tiene el recurso, 2 y 3 espera. Cuando 1 deja su sección crítica, 2 y 3 pueden acceder a R. Se concede acceso a 3 y antes que termine su sección crítica, 1 solicita acceso de nuevo. Se concede el acceso a 1 después de que 3 termine y si 1 y 3 se conceden el acceso repetidamente el uno al otro, se puede negar indefinidamente a 2 el acceso. 

Requisitos para la exclusión mutua.
1.  Solo un proceso, de los que tienen regiones críticas por el mismo recurso, debe tener permiso para entrar en ella en un instante dado. 
2.  Un proceso no debe poder solicitar acceso a una sección crítica para después ser demorado indefinidamente; no puede permitirse el interbloqueo o la inanición.
3.  Cuando ningún proceso está en su sección crítica, cualquier proceso que solicite entrar en la suya debe poder hacerlo sin dilación. 
4.  Un proceso permanece en su sección crítica solo por un tiempo finito.
 

2 situaciones:

Sin sincronización.- Puede ser que Escribir esté actualizando un registro y sin terminar le sorprenda el cambio de proceso, terminará
en el siguiente turno de CPU. Con el cambio le tocará turno a Leer, que leerá el registro obteniendo datos inconsistentes

Con sincronización.- Mediante un mecanismo que impida la lectura de un registro (bloqueo) a un proceso mientras Escribir realice operaciones. Leer al usar el CPU y solicitar lectura sobre el registro lo encontrará bloqueado y quedará en espera de que Escribir termine para hacer su lectura 

No hay comentarios.:

Publicar un comentario