Sistemas operativos modernos
Cuando se crea un proceso en un sistema con paginación, el sistema operativo tiene que de terminar qué tamaño van a tener (al principio) el programa y los datos, y crear una tabla de pági nas para ellos. Es preciso asignar espacio en la memoria para la tabla de páginas, y llenarlo con valores iniciales. La tabla de páginas no tiene que estar residente una vez que el proceso se inter cambia a disco, pero sí mientras se está ejecutando. Además, es preciso asignar espacio en el área de intercambio en disco para que, cuando una página se intercambie a disco, tenga algún lugar a donde ir. También hay que colocar en el área de intercambio texto de programa y datos para que, cuando el proceso nuevo comience a generar fallos de página, puedan traerse las páginas del dis co. Algunos sistemas paginan el texto del programa directamente desde el archivo ejecutable, con lo que se ahorra espacio en disco y tiempo de inicialización. Por último, hay que registrar en la tabla de procesos información acerca de la tabla de páginas y del área de intercambio en disco. Cuando se calendariza un proceso para ejecutarse, hay que preparar la MMU para el nuevo proceso y desalojar el TLB, a fin de eliminar cualquier rastro del proceso que se ejecutó antes. Es pre ciso actualizar la tabla de páginas del nuevo proceso, por lo regular copiándola, o con un apunta dor a ella, en uno o más registros de hardware. De manera opcional, pueden traerse a la memoria algunas páginas del proceso, o todas, a fin de reducir el número inicial de fallos de página. Cuando se presenta un fallo de página, el sistema operativo tiene que leer registros de hardware para determinar cuál dirección virtual causó el fallo. Con esta información, deberá determinar qué página se necesita y localizarla en el disco. Debe hallar un marco de página dis ponible en el cual colocar la página nueva, desalojando una página antigua si es necesario. Lue go deberá leer la página requerida del disco y colocarla en el marco. Por último, el sistema operativo tendrá que retroceder el contador de programa para que apunte a la instrucción que causó el fallo, a fin de que se pueda ejecutar otra vez. Cuando un proceso termina, el sistema operativo debe liberar su tabla de páginas, sus pá ginas y el espacio en disco que ocupan las páginas cuando están en disco. Si algunas de esas páginas se comparten con otros procesos, las páginas en la memoria y en el disco sólo podrán liberarse cuando termine el último proceso que las estaba usando. 4.7.2 Manejo de fallos de página Por fin estamos en condiciones de describir con cierto detalle lo que sucede cuando se presen ta un fallo de página. La serie de sucesos es la siguiente: 1. El hardware salta al kemel, guardando el contador de programa en la pila. En casi to das las máquinas se utilizan registros especiales de la CPU para guardar información acerca del estado de la instrucción actual. 2. Se pone en marcha una rutina en lenguaje ensamblador que guarda los registros gene rales y otra información volátil, para evitar que el sistema operativo la destruya. Esta rutina invoca al sistema operativo como procedimiento. 3. El sistema operativo descubre que hay un fallo de página y trata de averiguar cuál pá gina virtual se necesita. Es común que uno de los registros de hardware contenga esta información. Si no la confiene, el sistema operativo deberá recuperar el contador de
RkJQdWJsaXNoZXIy MjI4NDcx