Professional Documents
Culture Documents
ASIGNACION DE RECURSOS
ECONOMICOS
La manera en que una economía distribuye sus recursos (sus factores de producción) entre los
posibles usos para poder producir un determinado conjunto de bienes finales.
Asignación de recursos.
Distribución de los recursos económicos existentes entre diversos usos.
y social, tales como producto interno bruto, balanza de pagos, consumo, inversión, precios,
salarios, tasas de interés, tipo de cambio, empleo, etc. Con base en sus expectativas es posible
adecuar los objetivos, metas y
descentralizadas.
MERCADO DE DIVISAS
Por lo que sabemos, sólo existe otro sistema --aunque este es centralizado-- en el que
son las aplicaciones las que gestionan sus propios recursos, Aegis [60]. Salvo en lo
referente a la distribución física del sistema, lo que aquí decimos es también aplicable a
dicho sistema, del mismo modo que (si obviamos la distribución) lo aprendido en el
desarrollo de Aegis es aplicable a un DAMN.
Para que dicha gestión se pueda realizar de forma distribuida (entre las aplicaciones y el
DAMN) es necesario que el sistema exponga la información necesaria para
implementarla. Dicha información, al contrario que en Aegis [60], no está limitada a un
nodo. Si una aplicación utiliza recursos procedentes de varios nodos de la red, la
información relevante sobre todos ellos estará disponible con independencia de la
ubicación concreta que tenga. La información expuesta por el sistema --como ocurre
también en Aegis-- incluye el estado de los recursos que posee la aplicación y la lista de
recursos libres.
Consiguientemente las aplicaciones pueden emplear los algoritmos que deseen para
escoger los recursos que prefieran. Las interfaz de asignación de recursos de un DAMN
debe pues ser capaz de expresar el deseo de utilizar o no una unidad concreta de un
recurso determinado (por ejemplo, un manejador de disco de un Intel puede expresar su
deseo de utilizar marcos de página locales de los primeros 16M capaces de soportar
DMA).
Si los recursos fuesen infinitos, con lo ya dicho en este apartado bastaría. Dado que los
recursos son finitos, es preciso revocar recursos eventualmente.
Revocación de recursos
Las preguntas que hay que contestar para diseñar un mecanismo de revocación de
recursos son (ver tabla 2.1):
¿Cuándo se revocan los recursos?
Habitualmente es el SO el que decide el momento apropiado en que se han de revocar
recursos. El mecanismo empleado suele ser el uso de umbrales de revocación, de tal
modo que si la cantidad usada de un tipo de recurso sobrepasa un umbral
determinado el sistema revoca unidades de dicho recurso para aumentar su
disponibilidad.
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 kernel 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:
Distribución de recursos
Cada aplicación considera el nodo local como una cache de los recursos disponibles en
todo el sistema distribuido. En el caso de aplicaciones centralizadas, éstas se limitan a
utilizar dicha cache ignorando la ubicación de los recursos (pensando que son locales).
En cambio, las distribuidas pueden solicitar la asignación de recursos en las ubicaciones
que deseen y controlar la revocación de tal modo que se mantengan en el nodo local (en
la cache) los recursos convenientes (revocando primero aquellos recursos que sea más
barato traer al nodo local, y no aquellos que sea costoso volver a obtener debido a su
ubicación u otros factores). En este sentido es crucial que el kernel permita a las
aplicaciones escoger las unidades de recurso que han de revocarse, de otro modo el
sistema escogería él mismo las unidades a revocar y ello sin tener una idea exacta de
para qué se emplea cada una de ellas.
Sorprendentemente, en un DAMN, no hay un único modelo de distribución de recursos.
El kernel permite que peticiones locales al sistema puedan operar con recursos
remotos, eso es todo lo que hace.
Por otro lado, una aplicación distribuida puede emplear algoritmos específicos de
asignación y revocación sin necesidad de conformarse con un algoritmo general que
funcione bien en el caso medio.
Por último, conviene dejar claro que en un DAMN no sólo se distribuyen las IPCs, esto
es, no sólo se permiten interacciones entre elementos en distintos nodos. Para cualquier
servicio del sistema, la operación se procesa en el nodo local tanto como sea posible.
Cuando el sistema ve que el recurso es remoto es la propia implementación del servicio
la que contacta con el nodo remoto usando protocolos específicos de cada aplicación
(esto es, realizando una up-call). Esto no es lo mismo que emplear una IPC distribuida
que alcanza un núcleo remoto sin que el local se entere de ello. Si se distribuyen sólo las
IPCs podemos tener problemas en el uso de referencias a memoria de usuario en las
llamadas al sistema (una referencia local no es válida en el nodo remoto). Estas pueden
ocasionar mensajes extra en la red o el envió de datos innecesarios.
Localización de recursos
Los recursos físicos mantienen siempre su posición y, por tanto, no son móviles. No
obstante, hay dos casos que aparecen al considerar un DAMN que requieren de ciertas
técnicas relacionadas con la ``movilidad de recursos'':
Un elemento físico puede ser reemplazado por otro elemento similar en una posición
(i.e. nodo) diferente. Dicha operación, cuando se realiza en caliente equivale a mover
el elemento físico considerado.
Las abstracciones lógicas empleadas por un DAMN para multiplexar el hardware no
están sujetas a la restricción de inmovilidad a que se ven sometidos los elementos
físicos. Así, en el caso de Off, tanto Shuttles, como portales y DTLBs podrían moverse
de un nodo a otro.
En ambos casos el sistema debe hacer frente a cambios en la posición de recursos del
sistema. Elementos físicos--p.ej. bancos de memoria--que contienen unidades
elementales de recursos--p.ej. marcos de página--, en el primer caso; abstracciones del
sistema--p.ej. Portales en Off-- en el segundo caso.
nodo
Indica la localización (el nodo) que se intentará en primer lugar para objetos que no
son locales. Si dichos objetos no han migrado estarán aún en el nodo en que se
crearon, que es precisamente el indicado en este campo.
secuencia
slot
Cuando un usuario del sistema referencia el portal, el servidor de portales extrae slot del
identificador e indexa en su vector de portales para obtener el descriptor. Si el portal no
ha migrado se ha localizado con una sóla indexación. No ha sido preciso el empleo de
tablas hash, estructuras arborescentes u otro mecanismo más costoso.
Supongamos ahora que dicho portal cambia su posición. Cualquier cliente de dicho
portal enviará una petición (como hacía siempre) al nodo de creación del mismo. Ahora
bien, el servidor de portales de dicho nodo indexará (utilizando de nuevo el campo slot)
en su vector de portales y encontrará o una entrada libre, o un portal distinto (los
campos nodo y secuencia serán distintos).
En este punto se eleva una excepción que deberá tratar la aplicación. El propósito de
dicha excepción es permitir a distintas aplicaciones el uso de distintos protocolos de
localización. Aquellas aplicaciones que lo deseen, pueden hacer que un servidor--
implementando un protocolo de localización de propósito general--trate esta excepción.
En pocas palabras, sólo la primera llamada a un portal tras la migración del mismo
ocasiona más trabajo que una invocación antes de dicha migración. Posteriores llamadas
presentan el mismo coste en tiempo que para aquellos portales que no han cambiado de
posición. Es de reseñar que el kernel no incorpora ningún protocolo concreto y tan
sólo mantiene la última localización conocida, de este modo diferentes aplicaciones
pueden optar por diversos esquemas a la hora de tolerar migración de recursos.
Nótese que la libertad en la implementación del protocolo de localización es casi
absoluta. En aquellas ocasiones donde las migraciones son predecibles (p.ej. si se
definen en tiempo de compilación) el protocolo de localización puede ser una búsqueda
en una tabla. En redes de área local se pueden emplear algoritmos que aprovechen
facilidades de difusión (broadcast), si las hay. También es posible implementar
cualquier estructura de cache jerárquica de ubicaciones que sea imaginable para evitar
ejecuciones del algoritmo de localización.
Por último, hay que tener presente que los usuarios realizan peticiones al servidor de
portales de su nodo (de forma transparente), siendo éste el que se encarga de reenviar la
petición (si procede, y mediante protocolos suministrados por las aplicaciones) al nodo
apropiado de acuerdo con la información presente en la parte pública del identificador
de portal.