2.1.2. La sección crítica
Material de estudio basado en la edición de 2014. Borrador pendiente de revisión editorial independiente.
La Sección Crítica
Resumen
Definición
Una sección crítica es una secuencia bien delimitada (con inicio y fin) de instrucciones que modifican una o más variables compartidas. Cuando un proceso entra en su sección crítica, debe completar todas las instrucciones antes de que cualquier otro proceso pueda acceder a la región crítica de la misma variable.
Este acceso se denomina acceso en exclusión mutua: hasta que un proceso no finaliza la modificación, ningún otro puede empezar a modificarla.
Requisitos de la solución
Para garantizar la exclusión mutua, la solución debe cumplir:
- Exclusión mutua: asegurar que sólo un proceso accede al recurso compartido a la vez.
- Sin suposiciones sobre velocidad: no asumir nada sobre la velocidad ni el orden de ejecución de los procesos.
- Independencia: si un proceso finaliza el acceso, no debe afectar a otros procesos interesados.
- Evitar inanición (starvation): todos los procesos que esperan deben poder entrar en un tiempo finito.
Protocolo de acceso
1. Petición de acceso a la sección
2. Acceso a la sección crítica
3. Liberar la sección crítica
Estrategia de espera
- Si la sección crítica está ocupada, los procesos esperan bloqueándose (pasando a una cola de espera, no mediante espera activa).
- Cuando la sección está libre, entra uno de los procesos en espera y cierra el acceso a los demás.
- Una vez dentro, utiliza el recurso y luego libera la exclusión mutua.
Nota sobre la solución más simple
La forma más sencilla de exclusión mutua es no permitir la concurrencia, pero es inaceptable. El objetivo es encontrar protocolos y herramientas (como los semáforos) que cumplan los requisitos anteriores.
Ideas clave
- La sección crítica es el código que accede a variables compartidas y requiere exclusión mutua.
- La solución debe garantizar exclusión mutua, independencia de velocidad, ausencia de efectos colaterales y ausencia de inanición.
- Los procesos esperan bloqueándose (no con espera activa) para una mejor utilización del procesador.
- Los semáforos son la herramienta eficiente y sencilla para implementar la exclusión mutua.