next up previous contents
Next: Distribución de recursos Up: Consideraciones generales Previous: Asignación de recursos

Revocación de recursos

  

La revocación de recursos es más compleja que la asignación dado que habitualmente acarrea agravios para las aplicaciones cuyos recursos se revocan.

En sistemas convencionales es el SO el que decide de forma inapelable qué recursos y a quién deben revocarse. En la mayoría de los casos las aplicaciones ni siquiera pueden percatarse de la revocación y toman sus decisiones ignorantes de este hecho. La ignorancia de las aplicaciones ante la revocación es una causa de problemas derivados de falsas suposiciones sobre la misma.

Consiguientemente, en Off hemos optado por el uso de revocación explícita, en la que el tex2html_wrap_inline8127kernel permite que las aplicaciones conozcan cuando y qué recursos se les van a revocar. Hay también algunos SO adaptables que se comportan de este modo, aunque otros no permiten a las aplicaciones tener conocimiento de revocaciones. Sólo unos pocos SO adaptables permiten a las aplicaciones participar en la decisión de revocación.

Las preguntas que hay que contestar para diseñar un mecanismo de revocación de recursos son (ver tabla 2.1):

 

¿Cuando? ¿Quién? ¿Ámbito? ¿Cómo?
SO monolítico siempre kernel sistema implícita
tex2html_wrap_inline8127kernel siempre tex2html_wrap_inline8127kernel sistema implícita
exokernel en demanda kernel+aplicación aplicación explícita
DAMN en demanda aplicación aplicación explícita
Table: Revocación de recursos en SSOO

 

Considerando ahora el caso de un DAMN, la revocación se basa en los siguientes puntos:

Como puede verse, Off sólo dispara un evento de revocación para un recurso determinado cuando alguna petición de asignación no puede satisfacerse. El tex2html_wrap_inline8127kernel ha concluido con eso su trabajo.

En el caso de aplicaciones que compiten por un recurso será el árbitro el que establezca un reparto adecuado del mismo entre ellas. En general, la revocación de los recursos en un nodo podría proceder como sigue:

  1. En un momento dado un porcentaje de los recursos locales podrían ofrecerse al resto de la red. Así un servidor compartido ofrecería el 100%, una estación de trabajo podría ofrecer el 100% cuando el propietario no la está utilizando y bajar a un 30% o un 60% cuando el propietario la use.
  2. Un árbitro por nodo puede mantener dichos porcentajes.
  3. Mientras estos porcentajes estén satisfechos los árbitros pueden revocar los recursos en función de otros criterios mas tradicionales (conjunto de trabajo, uso reciente, etc.)
  4. Una vez elegida una aplicación por un árbitro, esta puede intentar convencer a otras para que liberen recursos en su lugar.
  5. La aplicación resultante puede escoger las unidades que menos necesita.

Si las aplicaciones funcionan correctamente este sistema no causa problemas. Si las aplicaciones se comportan con malicia o error la responsabilidad de revocar los recursos cae ahora en el árbitro. Este árbitro puede incorporar un esquema de liberación mixto similar al empleado en Aegis:


next up previous contents
Next: Distribución de recursos Up: Consideraciones generales Previous: Asignación de recursos

Francisco J. Ballesteros
Fri Dec 19 17:18:03 MET 1997