Sistemas operativos modernos
secuencia del hecho de que los objetos no son sino esüucíuras de datos del kernel es que cuan do el sistema vuelve a arrancarse (o cuando falla), se pierden todos los objetos. De hecho, cuando el sistema arranca no hay ningún objeto presente (excepto el proceso inactivo o nulo [idle] y el de sistema, cuyos objetos están incluidos de forma permanente en el archivo ntoskml.exe). Todos los demás objetos se crean sobre la marcha a medida que arranca el sistema y se ejecutan di versos programas de iniciación (y después, programas de usuario). Los objetos tienen una estructura, como se muestra en la figura 11-9. Cada objeto confie ne un encabezado con cierta información que poseen todos los objetos de todos los tipos. Los campos de este encabezado incluyen el nombre del objeto, el directorio de objetos en el que reside dentro del espacio de objetos, información de seguridad (para que pueda efectuarse una verificación cuando se abre un objeto) y una lista de los procesos que fienen idenfificadores abiertos para el objeto (si está habilitada cierto indicador de depuración). Enca bezado dei objeto objeto M étodo para abrir M étodo para cerrar M étodo para eliminar M étodo para consultar nombre Método de análisis Método de seguridad Figura 11-9. Estructura de un objeto. Cada encabezado de objeto contiene también un campo de cuota por uso, que es el cargo que se hace a un proceso por abrir el objeto. Si un objeto archivo cuesta 1 punto y un proceso pertenece a un trabajo que tiene una cuota de 10 puntos de archivo, los procesos de ese traba jo sólo podrán abrir 10 archivos en total. Esto permite imponer límites de recursos a cada tipo de objetos de manera individual. Los objetos ocupan terreno valioso —trozos del espacio de direcciones virtual del kemel — por lo que cuando un objeto ya no es necesario, debe eliminarse para reciclar su espacio de di recciones. El mecanismo de reciclaje emplea un contador de referencias en el encabezado de cada objeto, el cual cuenta el número de identificadores abiertos que tienen los procesos. Este contador se incrementa cada vez que el objeto se abre y se decrementa cada vez que se cierra. Si el contador llega a cero, quiere decir que ningún usuario tiene identificadores para el objeto. Cuando un componente del ejecutivo obtiene o libera un objeto, un segundo contador se incre menta o decrementa, aunque no se entregue un identificador real. Si ambos contadores están en cero, quiere decir que ningún proceso de usuario y ningún proceso del ejecutivo están usando el objeto, así que puede eliminarse para liberar su memoria.
RkJQdWJsaXNoZXIy MjI4NDcx