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