Cada recurso físico (bancos de memoria, bancos de puertos de E/S, bancos de líneas de DMA, etc.) se divide en unidades elementales (marcos de página, puertos de E/S, líneas de DMA, etc.) que son las unidades mínimas asignables a las aplicaciones. Estos ``bancos'' o recursos físicos constituyen las mínimas unidades reemplazables, como se mencionó en el apartado 2.1.2.
Para cada uno de ellos el
kernel incorpora un pequeño servidor,
exportado a las aplicaciones mediante un portal, cuya utilidad es el
procesamiento de peticiones de asignación o liberación de las unidades
elementales que contienen.
Dado que los recursos físicos son conocidos en tiempo de arranque del
sistema
, la implementación de estos pequeños servidores es muy
simple. Por cada recurso hay un vector creado en tiempo de arranque
cuya dimensión corresponde al número de unidades elementales del
recurso considerado. Una lista de unidades libres se emplea para
localizar rápidamente alguna unidad libre susceptible de ser asignada.
La simplicidad que presentan estos servidores de recursos físicos en
comparación con los tres servidores del sistema que implementan
shuttles, portales y DTLBs no debería llevar a engaño: la razón de
ser del kernel es la de asignar estos recursos físicos a las
aplicaciones, aunque el porcentaje de código del
kernel dedicado a ello
sea reducido.
El nombrado y protección de los recursos y unidades elementales que contienen corresponde a lo expuesto en el capítulo anterior, por lo que no repetiremos aquí lo ya dicho en este sentido.
Otra característica de estos servidores es que todos ellos presentan una estructura muy similar. Por lo tanto, detallaremos tan sólo la realización de uno de ellos (el gestor de memoria física), cuya función es la asignación de marcos de página a las aplicaciones.