Planificación del Procesador
Colas de Retroalimentación de Niveles Múltiples
Las colas de retroalimentación de niveles múltiples proporcionan una estructura eficaz para lograr los siguientes objetivos en la planificación del procesador:
- Favorecer la ejecución de trabajos cortos.
- Optimizar el uso de los dispositivos de Entrada/Salida (E/S) al favorecer trabajos limitados por E/S.
- Determinar la naturaleza de un proceso lo más rápido posible y planificarlo en consecuencia.
Un nuevo proceso entra en la cola de listos al final de la cola superior. Se mueve por esta cola FIFO (First-In, First-Out) hasta obtener la CPU. Si un proceso finaliza o cede la CPU para esperar la finalización de una operación de E/S o de algún otro evento, abandona la cola de listos.
Planificación de Dos Niveles
El esquema operativo de un planificador de dos niveles es el siguiente:
- Se carga en la memoria principal un subconjunto de los procesos ejecutables.
- El planificador de nivel inferior se restringe a estos procesos durante un tiempo determinado.
- Periódicamente, se invoca a un planificador de nivel superior para efectuar las siguientes tareas:
- Eliminar de la memoria los procesos que hayan permanecido en ella el tiempo suficiente.
- Cargar a memoria los procesos que hayan estado en disco demasiado tiempo.
- El planificador de nivel inferior se restringe de nuevo a los procesos ejecutables que se encuentren en la memoria.
- El planificador de nivel superior se encarga de desplazar los procesos entre la memoria y el disco.
Interrupciones
Una interrupción es un evento que altera la secuencia en que el procesador ejecuta las instrucciones; es un hecho generado por el hardware del computador. Cuando ocurre una interrupción, el Sistema Operativo (SO) realiza las siguientes acciones:
- Obtiene el control.
- Guarda el estado del proceso interrumpido, generalmente en su Bloque de Control de Procesos (BCP).
- Analiza el tipo de interrupción.
- Transfiere el control a la rutina de servicio de interrupción (RSI) apropiada para su manipulación.
Tipos de Procesos
Existen dos tipos principales de procesos:
- Procesos independientes: No afectan ni pueden ser afectados por ningún otro proceso.
- Procesos cooperativos: Afectan y pueden ser afectados por otros procesos del sistema operativo, lo que implica la necesidad de sincronización.
Sincronización de Procesos y Problemas Comunes
Sección Crítica y Exclusión Mutua
Los procesos con frecuencia precisan comunicarse entre sí. Para ello, es necesario superar ciertos desafíos. Para prevenir problemas en situaciones donde intervienen recursos compartidos, se debe impedir que más de un proceso acceda al mismo recurso simultáneamente. Lo que se necesita es exclusión mutua. La parte del programa que accede al recurso compartido se denomina sección crítica.
Condiciones de Carrera o Competencia
La condición de carrera (race condition) ocurre cuando dos o más procesos acceden a un recurso compartido de forma concurrente y sin control, de manera que el resultado combinado de este acceso depende del orden de llegada de las operaciones.
Postergación o Aplazamiento Indefinido
Consiste en el hecho de que uno o varios procesos nunca reciben suficiente tiempo de CPU para terminar su tarea, quedando en un estado de espera indefinida.
Condición de Espera Circular
Esto ocurre cuando dos o más procesos forman una cadena de espera que los involucra a todos, donde cada proceso espera por un recurso que posee el siguiente en la cadena.
Condición de No Apropiación
Esta condición no resulta directamente de la concurrencia, pero juega un papel importante en este entorno. Especifica que si un proceso tiene asignado un recurso, dicho recurso no puede serle arrebatado por ningún motivo, y estará disponible hasta que el proceso lo libere voluntariamente.
Condición de Espera Ocupada
Esta condición se presenta cuando un proceso solicita un recurso que ya está asignado a otro proceso y la condición de no apropiación se debe cumplir. En tal caso, el proceso estará gastando el resto de su quantum de tiempo verificando si el recurso fue liberado, es decir, desperdicia su tiempo de ejecución en esperar activamente.
Condición de Exclusión Mutua (Reafirmación)
Cuando un proceso utiliza un recurso del sistema, realiza una serie de operaciones sobre él y luego lo libera. A la sección de código que accede a ese recurso se le llama ‘sección crítica’. La condición de exclusión mutua establece que solo un proceso puede estar en su sección crítica a la vez, garantizando la integridad del recurso compartido.
Condición de Ocupar y Esperar un Recurso
Consiste en que un proceso solicita un recurso y se le asigna. Antes de liberarlo, solicita otro recurso que otro proceso ya tiene asignado, lo que puede llevar a un interbloqueo.
DEADLOCK (Interbloqueo o Abrazo Mortal)
El deadlock, también conocido como ‘abrazo mortal’ o ‘trabazón’, es el problema más serio que se puede presentar en un entorno de concurrencia. Se caracteriza por la concurrencia de cuatro condiciones necesarias:
- Exclusión Mutua: Los procesos reclaman el uso exclusivo de los recursos que solicitan. Solo un proceso puede usar el recurso a la vez.
- Ocupar y Esperar (Hold and Wait): Los procesos mantienen los recursos que ya les han sido asignados mientras esperan por recursos adicionales que están siendo utilizados por otros procesos.
- No Apropiación (No Preemption): Los recursos no pueden ser quitados a los procesos que los tienen en uso; deben ser liberados voluntariamente por el proceso que los posee.
- Espera Circular (Circular Wait): Existe una cadena circular de dos o más procesos, donde cada proceso en la cadena espera por un recurso que posee el siguiente proceso en la cadena.
