Saltar al contenido

El problema de la sección crítica en el sistema operativo

¿Qué es la sincronización de procesos?

Sincronización de procesos La tarea consiste en coordinar la ejecución del proceso de manera que no haya dos procesos que puedan acceder a los mismos datos y recursos compartidos.

Existe una necesidad especial en un sistema multiproceso cuando varios procesos se ejecutan juntos y más de un proceso intenta acceder al mismo recurso o datos compartidos al mismo tiempo.

Esto puede resultar en inconsistencias de los datos compartidos. Por lo tanto, no es necesario reflejar el cambio realizado por un proceso cuando otros procesos accedieron a los mismos datos compartidos. Para evitar este tipo de inconsistencia de datos, es necesario sincronizar los procesos entre sí.

En este tutorial sobre el sistema operativo, aprenderá:

¿Cómo funciona la sincronización de procesos?

Por ejemplo, el proceso A está cambiando los datos en una ubicación de memoria y otro proceso B está solicitando los datos de mismo ubicación de la memoria. Existe una alta probabilidad de que los datos leídos por el segundo proceso sean erróneos.

Secciones de registro

Aquí hay cuatro elementos básicos de la parte crítica:

¿Cuál es el problema de la sección crítica?

Una parte crítica es un segmento de código al que se puede acceder a través de un proceso de señal en un momento determinado. Esta sección consta de recursos de datos compartidos a los que tuvieron acceso otros procesos.

En la parte crítica, solo se puede completar un proceso. Otros procesos, que están esperando la ejecución de sus críticos, deben esperar hasta que se complete el proceso de ejecución actual.

Reglas de división crítica

La parte crítica debe hacer cumplir las tres reglas:

Soluciones para la sección crítica

En Sincronización de Procesos, el departamento crítico juega un papel clave para que el problema se resuelva.

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

Solución Peterson

La solución de Peterson se usa ampliamente como solución a problemas críticos de división. Este algoritmo fue desarrollado por el científico informático Peterson, por lo que recibe el nombre de solución Peterson.

En esta solución, cuando un proceso se está ejecutando en un estado crítico, el otro proceso simplemente 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 parte crítica en un momento dado.

Ejemplo


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

Hardware sincronizado

A veces, el hardware resuelve problemas de división crítica. Algunos sistemas operativos ofrecen una funcionalidad de bloqueo en la que Process obtiene un bloqueo al ingresar a la sección Crítica y el bloqueo se libera después de salir.

Entonces, cuando otro proceso intente ingresar a la parte crítica, no podrá ingresar porque está bloqueado. Solo puede hacerlo si está libre consiguiendo la cerradura él mismo.

Cerraduras mutex

La sincronización de hardware no es un método simple de implementar para todos, por lo que se introdujo un método intensivo en software llamado Mutex Locks.

En este enfoque, en la sección de entrada del código, LOCK se encuentra más allá de los recursos críticos utilizados en la sección crítica. En caso de que se libere el candado.

Solución de semáforo

Un semáforo es una variable que no es negativa y se divide entre hilos. Es un algoritmo u otra solución al problema crítico de la división. Es un mecanismo de señalización y un hilo en espera de un semáforo, que puede firmar 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;

Resumen: