Los puntos de entrada del servidor que exporta memoria física (el
PMM
) tienen como
función principal la asignación de marcos de página (que pueden
emplearse posteriormente en la instalación de traducciones de memoria)
como puede verse en la figura 3.6.

Figure 3.6: Puntos de entrada del gestor de memoria fisica.
Podemos ver como hay dos funciones que tienen nombres terminados en
alloc y free. Dichas funciones son las encargadas de
asignar y liberar las unidades elementales de memoria física--marcos
de página. Funciones similares aparecen en todos los servidores que
exportan recursos físicos (nótese que los procesadores y el hardware
de traducción de direcciones están encapsulados en el servidor de
shuttles y el DMM respectivamente, por lo que su tratamiento es
diferente y no deberían considerarse en la presente discusión).
En las funciones de asignación y liberación de recursos podemos
apreciar como se permite la agrupación de llamadas al sistema.
Concretamente, ambas funciones trabajan con vectores de marcos de
página (parámetros maddr y n). Con ello se trata de
reducir el número de llamadas al sistema ya que las aplicaciones
operan típicamente con conjuntos de unidades elementales.
Centrándonos ahora en la asignación, la llamada que implementa ésta
tiene como parámetro de entrada un portal que identifica al
responsable del recurso hasta el momento de su liberación, who.
Cualquier excepción relacionada con dicho recurso (ej.: la
notificación de que el recurso no se está utilizando) se enviará a
dicho portal. La función de liberación recibe también un parámetro con
el mismo propósito.
La protección del recurso asignado viene determinada por la
información de protección establecida por el usuario en el instante de
la asignación mediante un parámetro adicional, guty
(guardability).
Dado que todas las unidades de recurso están protegidas, cada servidor de recursos físicos incorpora una función para cambiar la protección de las mismas, como puede verse también en la figura 3.6.
Una vez asignados, los recursos físicos pueden ser utilizados por cualquiera que posea los derechos de acceso adecuados. El caso más delicado (y por ello el expuesto como modelo de servidor de recursos físicos) es el de la memoria física. La protección de un marco en un instante determinado no hace referencia a la posibilidad de leerlo o escribirlo en dicho instante. Hace referencia a la posibilidad de instalar traducciones de lectura o escritura en dicho instante. Recordemos que hablamos de recursos físicos y no de abstracciones; las protecciones se refieren pues a las operaciones realizables sobre dichos recursos y no a las operaciones de alto nivel que imaginan las aplicaciones.
Así, para revocar derechos de acceso sobre un marco de página con carácter retroactivo, hay que invalidar también cualquier traducción existente hacia dicho marco. La información de asignación que exporta el kernel permite averiguar donde están dichas traducciones.
Volviendo al código de la figura 3.6, puede apreciarse como
los marcos de página están nombrados empleando el tipo de datos
paddr_t. Es importante mencionar que dicho tipo corresponde a
lo dicho en el capítulo anterior sobre nombrado de unidades
elementales de recursos físicos en un DAMN. En la
figura 3.7 puede verse como el nombre de un marco extiende
el nombre físico del mismo con un identificador de portal (que
corresponde al portal del servidor que gestiona el banco de memoria
física, en este caso).

Figure: Nombre de un marco de página
En cualquier operación referida a un marco de página, el
kernel
redirigirá (elevando excepciones) las peticiones destinadas a marcos
de página remotos (ya que descubre que los portales de sus
identificadores son remotos). De este modo, los usuarios pueden
emplear marcos cuya ubicación sea remota. En el apartado 3.5
veremos que también es posible emplear marcos de página remotos en las
traducciones de memoria virtual a memoria física empleadas por las
aplicaciones.