Tabla de contenidos
¿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:
- Sección de admisiones: Es parte del proceso que determina la entrada a un proceso en particular.
- Sección crítica: Esta sección permite que un proceso ingrese y modifique la variable compartida.
- Sección de jubilación: La sección de salida permite el siguiente proceso que espera en la Sección de Admisiones, para ingresar a las Secciones Críticas. También verifica que un proceso que haya completado su ejecución deba ser removido a través de este Departamento.
- El resto: Todas otras partes del Código, que no están en la Sección Crítica, Admisiones y Salida, se denominan División de Restos.
¿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.
- La función de espera () maneja la entrada en la parte crítica y se expresa como P ().
- La salida de una sección crítica está controlada por la función de señal (), expresada como V ().
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:
- 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 extendidos. No es posible ejecutar más de un proceso en su parte crítica a la vez.
- Progreso: Esta solución se usa cuando nadie está en el departamento crítico y alguien está tratando de ingresar. Aquellos procesos que no están en sus recordatorios deben decidir quién debe ingresar, en un tiempo limitado.
- Espera conectada: Cuando un proceso solicita una división crítica, existe un límite específico al número de procesos que se pueden encontrar en su parte crítica. Entonces, cuando se alcanza el límite, el sistema debe solicitar al proceso que ingrese a su departamento crítico.
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
- Suponga que hay N procesos (P1, P2, … PN) y todos los procesos en algún punto deben ingresar a la Sección Crítica
- UNA BANDERA[] Un conjunto de tamaño N que es falso se mantiene de forma predeterminada. Entonces, siempre que un proceso requiera entrar en la parte crítica, debe establecer su bandera como real. Por ejemplo, si Pi quiere ingresar, configurará BANDERA[i]CIERTO.
- Otra variable llamada TURN indica el número del proceso por el cual el agua ingresa actualmente al CS.
- El proceso que entra en la parte crítica cuando sale del TURN cambiaría a otro número de la lista de procesos listos.
- Ejemplo: el turno 2 es entonces P2 entra en la parte crítica y mientras sale del turno = 3 y así P3 sale del bucle de espera.
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:
- La sincronización de procesos implica coordinar la ejecución del proceso de tal manera que dos procesos no puedan acceder a los mismos datos y recursos compartidos.
- Los 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 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.
- Las siguientes son tres reglas que deben cumplirse con un artículo crítico: 1) Exclusión mutua 2) Resolución del proceso 3) Mantenerse limitado
- 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 usa cuando nadie está en la parte crítica y uno está tratando de ingresar.
- En una solución de espera limitada, después de que su proceso de solicitud ingresa a su sección crítica, existe un límite en la cantidad de otros procesos que se pueden encontrar en su sección crítica.
- La solución de Peterson se utiliza ampliamente como solución a problemas críticos de división.
- Los problemas de la sección crítica también se resuelven sincronizando el hardware
- La implementación de hardware sincronizado no es un método simple para todos, por lo que también se introdujo el método intensivo en software llamado Mutex Locks.
- El semáforo es un algoritmo u otra solución al problema crítico de la división.