RECURSOS

Una clase principal de interbloqueos involucra a los recursos, para que el análisis sobre los interbloqueos sea lo más general posible, nos referiremos a los objetos otorgados como recursos . Un recurso puede ser un dispositivo de hardware (por ejemplo, una unidad de cinta) o una pieza de información (como un registro bloqueado en una base de datos). Por lo general, una computadora tendrá muchos recursos que se pueden adquirir. Para algunos recursos puede haber disponibles varias instancias idénticas, como tres unidades de cinta. Cuando hay disponibles varias copias de un recurso, se puede utilizar sólo una de ellas para satisfacer cualquier petición de ese recurso. En resumen, un recurso es cualquier cosa que se debe adquirir, utilizar y liberar con el transcurso del tiempo.

 Recursos apropiativos y no apropiativos


Los recursos son de dos tipos: apropiativos y no apropiativos. Un recurso apropiativo es uno que se puede quitar al proceso que lo posee sin efectos dañinos. La memoria es un ejemplo de un re- curso apropiativo. Por ejemplo, considere un sistema con 256 MB de memoria de usuario, una impresora y dos procesos de 256 MB, cada uno de los cuales quiere imprimir algo. El proceso A solicita y obtiene la impresora, y después empieza a calcular los valores a imprimir. Antes de ter- minar con el cálculo, excede su quantum de tiempo y se intercambia por el otro proceso. Ahora el proceso B se ejecuta y trata (sin éxito) de adquirir la impresora:se crea una situación potencial de interbloqueo, ya que A tiene la impresora y B tiene la memoria, y ninguno puede pro- ceder sin el recurso que el otro posee. Por fortuna, es posible apropiarse (quitar) de la memoria de B al intercambiarlo y colocar el proceso A de vuelta. Ahora A se puede ejecutar, realizar su impresión y después liberar la impresora. Así no ocurre ningún interbloqueo.

Un recurso no apropiativo es uno que no se puede quitar a su propietario actual sin hacer que el cómputo falle. Si un proceso ha empezado a quemar un CD-ROM y tratamos de quitarle de manera repentina el grabador de CD y otorgarlo a otro proceso, se obtendrá un CD con basura. Los grabadores de CD no son apropiativos en un momento arbitrario. En general, los interbloqueos involucran a los recursos no apropiativos. Los interbloqueos potenciales que pueden involucrar a los recursos apropiativos por lo general se pueden resolver mediante la reasignación de los recursos de un proceso a otro. 

La secuencia de eventos requerida para utilizar un recurso se proporciona a continuación, en un formato abstracto.
1. Solicitar el recurso.
2. Utilizar el recurso.
3. Liberar el recurso.

Si el recurso no está disponible cuando se le solicita, el proceso solicitante se ve obligado a espe- rar. En algunos sistemas operativos, el proceso se bloquea de manera automática cuando falla la so- licitud de un recurso, y se despierta cuando el recurso está disponible. En otros sistemas, la solicitud falla con un código de error y depende del proceso que hizo la llamada decidir si va a esperar un poco e intentar de nuevo. Un proceso al que se le ha negado la petición de un recurso por lo general permanece en  un ciclo estrecho solicitando el recurso, después pasa al estado inactivo y después intenta de nuevo. Aunque este proceso no está bloqueado, para toda intención y propósito es como si lo estuviera, debido a que no puede realizar ningún trabajo útil

La naturaleza exacta de solicitar un recurso es en gran medida dependiente del sistema. En algunos sistemas se proporciona una llamada al sistema request para permitir que los procesos pidan los recursos en forma explícita. En otros, los únicos recursos que conoce el sistema operativo son los archivos especiales que sólo un proceso puede tener abiertos en un momento dado. Éstos se abren mediante la llamada al sistema open ordinaria. Si el archivo ya está en uso, el proceso que llama es bloqueado hasta que su propietario actual lo cierra.

Un programador que esta desarrollando aplicaciones multihilo debe poner especial atención a este problema; los programas multihilo son buenos candidatos para los interbloqueos debido a que existen varios hilos compitiendo por recursos compartidos.