Planificación
Cuando una computadora se
multiprograma, con frecuencia tiene varios procesos o hilos que compiten por la
CPU al mismo tiempo. Esta situación ocurre cada vez que dos o más de estos
procesos se encuentran al mismo tiempo en el estado listo. Si sólo hay una CPU
disponible, hay que decidir cuál proceso se va a ejecutar a continuación. La parte del sistema operativo
que realiza esa decisión
se conoce como planificador de procesos y el algoritmo que utiliza se
conoce como algoritmo de planificación.
Interbloqueos
Los sistemas computacionales
están llenos de recursos que pueden ser utilizados por sólo un proceso a la vez.
Algunos ejemplos comunes son las impresoras, las unidades de cinta y las ranuras
en los tableros internos del sistema. Cuando dos procesos escriben de manera
simultánea en la impresora se producen incoherencias. Si dos procesos utilizan la
misma entrada en la tabla del sistema de archivos invariablemente se corrompe
el sistema de archivos. En consecuencia, todos los sistemas operativos tienen
la habilidad de otorgar (en forma temporal) a un proceso el acceso exclusivo a
ciertos recursos.
Hay situaciones donde varios
procesos están bloqueados y permanecerán así para siempre. A esta situación se le
conoce como interbloqueo. Los
interbloqueos también pueden ocurrir entre máquinas. Las situaciones más
complicadas pueden ocasionar interbloqueos que involucren a tres, cuatro o más dispositivos y usuarios.
El interbloqueo se puede definir
formalmente de la siguiente manera: Un conjunto de procesos se encuentra en un interbloqueo si cada proceso en el conjunto
está esperando un evento que sólo puede ser ocasionado por otro proceso en el conjunto.
Inanición
Una situación en la que todos
los programas continúan ejecutándose en forma
indefinida pero no progresan,
esto se conoce como inanición (starvation).
Un problema muy relacionado con el interbloqueo es la inanición. En un sistema dinámico, las peticiones de recursos ocurren todo el tiempo. Se necesita cierta política para decidir
acerca de quién obtiene qué
recurso y cuándo. Esta política, aunque parece razonable, puede ocasionar que ciertos
procesos nunca reciban atención, aun cuando no estén en interbloqueo.
Como
ejemplo, considere la asignación de la impresora. Imagine que el sistema utiliza
cierto algoritmo para asegurar que la asignación de la impresora
no produzca un interbloqueo. Ahora suponga que varios procesos
la quieren al mismo tiempo.
¿Quién debe obtenerla?
Un
posible algoritmo de asignación es otorgar
la impresora al proceso con el archivo más pequeño a imprimir (suponiendo que
esta información esté disponible). Este método maximiza el número de clientes satisfechos y parece razonable. Ahora considere lo que ocurre en un sistema ocupado, cuando un proceso tiene
que imprimir un archivo enorme. Cada vez que la impresora esté libre, el
sistema buscará y elegirá el proceso con el archivo más pequeño. Si hay un
flujo constante de procesos
con archivos cortos,
el proceso con el archivo
enorme nunca recibirá
la impresora. Simplemente se pospondrá de manera indefinida, aun cuando no está bloqueado.
No hay comentarios:
Publicar un comentario