Procesos Synccronización: Problema de sección crítica en el sistema operativo

¿Qué es el proceso? Sync¿hronización?

Procesos Synchronización es la tarea de coordinar la ejecución de procesos de manera que dos procesos no puedan tener acceso a los mismos datos y recursos compartidos.

Es especialmente necesario en un sistema multiproceso cuando se ejecutan varios procesos juntos y más de un proceso intenta obtener acceso al mismo recurso o datos compartidos al mismo tiempo.

Esto puede generar inconsistencias en los datos compartidos, de modo que el cambio realizado por un proceso no necesariamente se refleja cuando otros procesos acceden a los mismos datos compartidos. Para evitar este tipo de inconsistencias en los datos, los procesos deben estar sincronizados entre sí.

Cómo proceso Sync¿Funciona la cronización?

Por ejemplo, el proceso A cambia los datos en una ubicación de memoria mientras otro proceso B intenta leer los datos de la mismo Ubicación de la memoria. Existe una alta probabilidad de que los datos leídos por el segundo proceso sean erróneos.

Procesos SyncTrabajos de cronización

Secciones de un programa

Aquí hay cuatro elementos esenciales de la sección crítica:

  • Sección de entrada: Es parte del proceso que decide la entrada de un proceso en particular.
  • Sección crítica: Esta parte permite que un proceso ingrese y modifique la variable compartida.
  • Salir de la sección: La sección de salida permite que los demás procesos que están esperando en la sección de entrada ingresen a las secciones críticas. También verifica que un proceso que finalizó su ejecución debe ser eliminado a través de esta Sección.
  • Sección restante: Todas las demás partes del Código, que no se encuentran en la Sección Crítica, de Entrada y de Salida, se conocen como Sección Resto.

¿Qué es el problema de la sección crítica?

Una sección crítica es un segmento de código al que puede acceder un proceso de señal en un momento específico. La sección consta de recursos de datos compartidos a los que otros procesos debían acceder.

  • La entrada a la sección crítica es manejada por la función wait() y se representa como P().
  • La salida de una sección crítica está controlada por la función signal(), representada como V().

En la sección crítica, solo se puede ejecutar un único proceso. Otros procesos, que esperan ejecutar su sección crítica, deben esperar hasta que el proceso actual complete su ejecución.

Reglas para la sección crítica

La sección crítica debe hacer cumplir las tres reglas:

  • Exclusión mutua: La exclusión mutua es un tipo especial de semáforo binario que se utiliza para controlar el acceso al recurso compartido. Incluye un mecanismo de herencia de prioridad para evitar problemas de inversión de prioridad extendida. No se puede ejecutar más de un proceso en su sección crítica a la vez.
  • progreso: Esta solución se utiliza cuando no hay nadie en la sección crítica y alguien quiere entrar. Entonces, esos procesos que no están en su sección de recordatorio deberían decidir quién debe entrar, en un tiempo finito.
  • Espera obligada: Cuando un proceso solicita ingresar a la sección crítica, existe un límite específico sobre la cantidad de procesos que pueden ingresar a su sección crítica. Entonces, cuando se alcanza el límite, el sistema debe permitir que la solicitud al proceso ingrese a su sección crítica.

Soluciones a la sección crítica

En proceso SyncEn la sincronización, la sección crítica juega el papel principal para que el problema deba ser resuelto.

A continuación se muestran algunos métodos ampliamente utilizados para resolver el problema de la sección crítica.

Solución Peterson

La solución de Peterson es una solución ampliamente utilizada para problemas de secciones críticas. Este algoritmo fue desarrollado por el informático Peterson, por eso se le denomina solución de Peterson.

En esta solución, cuando un proceso se ejecuta en un estado crítico, el otro proceso solo ejecuta el resto del código y puede suceder lo contrario. Este método también ayuda a garantizar que solo se ejecute un proceso en la sección crítica en un momento específico.

Ejemplo

Soluciones a la sección crítica

PROCESS Pi
FLAG[i] = true
while( (turn != i) AND (CS is !free) ){ wait;
}
CRITICAL SECTION FLAG[i] = false
turn = j; //choose another process to go to CS
  • Supongamos que hay N procesos (P1, P2,… PN) y cada proceso en algún momento requiere ingresar a la Sección Crítica
  • Se mantiene una matriz FLAG[] de tamaño N que, por defecto, es falsa. Entonces, cada vez que un proceso requiere ingresar a la sección crítica, debe establecer su indicador como verdadero. Por ejemplo, si Pi quiere ingresar, establecerá FLAG[i]=TRUE.
  • Otra variable llamada TURN indica el número de proceso que actualmente está pendiente de ingresar al CS.
  • El proceso que ingresa a la sección crítica al salir cambiaría el TURN a otro número de la lista de procesos listos.
  • Ejemplo: el turno es 2, luego P2 ingresa a la sección crítica y al salir del turno = 3 y, por lo tanto, P3 sale del ciclo de espera.

SyncHardware de cronización

Algunas veces los problemas de la Sección Crítica también se resuelven mediante hardware. Algunos sistemas operativos ofrecen una funcionalidad de bloqueo en la que un proceso adquiere un bloqueo cuando ingresa a la sección Crítica y lo libera después de salir de ella.

Entonces, cuando otro proceso intente ingresar a la sección crítica, no podrá ingresar porque está bloqueado. Sólo podrá hacerlo si queda libre adquiriendo el propio candado.

Cerraduras Mutex

SyncLa sincronización del hardware no es un método sencillo de implementar para todos, por lo que también se introdujo un método de software estricto conocido como Mutex Locks.

En este enfoque, en la sección de entrada del código, se obtiene un BLOQUEO sobre los recursos críticos utilizados dentro de la sección crítica. En la sección de salida se libera ese bloqueo.

Semaphore Solución

Semaphore es simplemente una variable que no es negativa y se comparte entre subprocesos. Es otro algoritmo o solución al problema de la sección crítica. Es un mecanismo de señalización y un hilo que espera un semáforo, que puede ser señalado por otro hilo.

Utiliza dos operaciones atómicas, 1) esperar y 2) señal para la sincronización del proceso.

Ejemplo

WAIT ( S ):
while ( S <= 0 );
S = S - 1;
SIGNAL ( S ):
S = S + 1;

Resum

  • La sincronización de procesos es la tarea de coordinar la ejecución de procesos de manera que dos procesos no puedan tener acceso a los mismos datos y recursos compartidos.
  • Cuatro elementos de la sección crítica son 1) Sección de entrada 2) Sección crítica 3) Sección de salida 4) Sección de recordatorio
  • Una sección crítica es un segmento de código al que puede acceder un proceso de señal en un momento específico.
  • Tres reglas obligatorias que deben cumplir las secciones críticas son: 1) Exclusión mutua 2) Solución del proceso 3) Espera limitada
  • La exclusión mutua es un tipo especial de semáforo binario que se utiliza para controlar el acceso al recurso compartido.
  • La solución de proceso se utiliza cuando no hay nadie en la sección crítica y alguien quiere entrar.
  • En la solución de espera limitada, después de que un proceso realiza una solicitud para ingresar a su sección crítica, existe un límite de cuántos otros procesos pueden ingresar a su sección crítica.
  • La solución de Peterson es una solución ampliamente utilizada para problemas de secciones críticas.
  • Los problemas de la Sección Crítica también se resuelven mediante la sincronización del hardware
  • SyncLa sincronización del hardware no es un método sencillo de implementar para todos, por lo que también se introdujo el estricto método de software conocido como Mutex Locks.
  • Semaphore es otro algoritmo o solución al problema de la sección crítica.