Requisito previo: sincronización de procesos | Introducción , Sección Crítica , Semáforos
La sincronización de procesos es una técnica que se utiliza para coordinar los procesos que utilizan datos compartidos. Hay dos tipos de procesos en un sistema operativo: –
- Proceso independiente:
el proceso que no afecta o se ve afectado por el otro proceso mientras se ejecuta, entonces el proceso se denomina Proceso independiente. Ejemplo El proceso que no comparte ninguna variable compartida, base de datos, archivos, etc. - Proceso de cooperación:
el proceso que afecta o se ve afectado por otro proceso durante la ejecución se denomina proceso de cooperación. Ejemplo El proceso que comparte archivo, variable, base de datos, etc. es el Proceso Cooperante.
La sincronización de procesos se utiliza principalmente para el proceso de cooperación que comparte los recursos. Consideremos un ejemplo de
// imagen de condición de carrera
Es la condición en la que varios procesos intentan acceder a los recursos y modificar los datos compartidos al mismo tiempo y el resultado del proceso depende del orden particular de ejecución que conduce a la inconsistencia de los datos, esta condición se denomina Condición de carrera. Esta condición se puede evitar utilizando el técnica llamada Sincronización o Sincronización de Procesos, en la cual permitimos que solo un proceso ingrese y manipule los datos compartidos en la Sección Crítica.
//diagrama de la vista de CS
Esta configuración se puede definir en varias regiones como:
- Sección de Entrada –
Es parte del proceso que decide la entrada de un proceso en particular en la Sección Crítica, entre muchos otros procesos. - Sección crítica:
es la parte en la que solo un proceso puede ingresar y modificar la variable compartida. Esta parte del proceso garantiza que solo ningún otro proceso pueda acceder al recurso de datos compartidos. - Sección de Salida –
Este proceso permite que los otros procesos que están esperando en la Sección de Entrada, ingresen a las Secciones Críticas. Comprueba que un proceso que después de que un proceso ha terminado de ejecutarse en la Sección Crítica puede ser eliminado a través de esta Sección de Salida. - Sección restante:
las otras partes del Código que no sean la Sección de entrada, la Sección crítica y la Sección de salida se conocen como Sección restante.
Los problemas de sección crítica deben satisfacer estos tres requisitos:
- Exclusión mutua:
establece que ningún otro proceso puede ejecutarse en la sección crítica si un proceso se está ejecutando en la sección crítica. - Progreso:
cuando no hay ningún proceso en la sección crítica, cualquier proceso externo a esa solicitud de ejecución puede ingresar a la sección crítica sin demora. Solo pueden ingresar aquellos procesos que han solicitado y tienen un tiempo finito para ingresar al proceso. - Espera limitada:
debe existir un límite superior en la cantidad de veces que ingresa un proceso para que otros procesos puedan ingresar a sus secciones críticas después de que un proceso haya realizado una solicitud para ingresar a su sección crítica y antes de que se conceda esa solicitud.
La sincronización de procesos se maneja mediante dos enfoques:
- Enfoque de software:
en el enfoque de software, se utiliza algún enfoque de algoritmo específico para mantener la sincronización de los datos. Al igual que en el Enfoque uno o el Enfoque dos, para un número de dos procesos, se usa una variable temporal como (giro) o un valor de variable booleana (bandera) para almacenar los datos. Cuando la condición es verdadera, el proceso está en estado de espera, conocido como estado de espera ocupado. Esto no satisface todos los requisitos de la Sección Crítica.Otro enfoque de software conocido como la solución de Peterson es mejor para la sincronización. Utiliza dos variables en la Sección de entrada para mantener la coherencia, como Flag (variable booleana) y Turn variable (almacenamiento de los estados del proceso). Satisface los tres requisitos de la Sección Crítica.
//Imagen del Algoritmo de Peterson
- Enfoque de hardware:
el enfoque de sincronización de hardware se puede realizar a través de la técnica de bloqueo y desbloqueo. La parte de bloqueo se realiza en la sección de entrada, de modo que solo un proceso puede ingresar a la sección crítica, después de completar su ejecución, el proceso se mueve a la Sección de Salida, donde se realiza la Operación de Desbloqueo para que otro proceso en la Sección de Bloqueo pueda repetir este proceso de Ejecución. Este proceso está diseñado de tal manera que se cumplan las tres condiciones de las Secciones Críticas.//Imagen de bloqueo
Uso de interrupciones:
son fáciles de implementar. Cuando las interrupciones están deshabilitadas, ningún otro proceso puede realizar la operación de cambio de contexto que permitiría que solo un proceso ingrese al estado crítico.
//Imagen de Interrupciones
Operación Test_and_Set:
esto permite el valor booleano (Verdadero/Falso) como una sincronización de hardware, que es de naturaleza atómica, es decir, no se permite el acceso a ninguna otra interrupción. Esto se usa principalmente en la aplicación de exclusión mutua. Se puede lograr una operación de tipo similar a través de la función Comparar e intercambiar. En este proceso, se permite el acceso a una variable en la sección crítica mientras su operación de bloqueo está activada. Hasta entonces, el otro proceso está en estado de espera ocupado. Por lo tanto, se cumplen los requisitos de la sección crítica.
Publicación traducida automáticamente
Artículo escrito por kartikeya shukla 1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA