Sistemas operativos modernos

4.7.4 Fijación de páginas en la memoria Aunque no hemos hablado mucho de E/S en este capítulo, el hecho de que una computadora tenga memoria virtual no significa que no se efectúe E/S. La memoria virtual y la E/S tienen interacciones sutiles. Consideremos un proceso que acaba de emitir una llamada al sistema pa­ ra leer de algún archivo o dispositivo y colocar lo leído en un búfer dentro de su espacio de di­ recciones. Mientras espera que termine la E/S, el proceso se suspende y se permite a otro ejecutarse. Este otro proceso causa un fallo de página. Si el algoritmo de paginación es global, hay una posibilidad muy pequeña, pero distinta de cero, de que la página que contiene el búfer de E/S sea la escogida para desalojarse de la me­ moria. Si un dispositivo de E/S está efectuando una transferencia por DMA a esa página, su desalojo hará que una parte de los datos se escriban en el búfer donde deben ir y otra parte so­ brescriba la página recién cargada. Una solución a este problema sería fijar en la memoria las páginas que se usan en E/S para que no sean desalojadas. Cuando se fija una página, se dice que está sujeta en la memoria. Otra solución sería efectuar toda la E/S con búferes en el ker­ nel y luego copiar los datos en páginas de usuario. 4.7.5 Almacén de respaldo Cuando tratamos los algoritmos de reemplazo de páginas, vimos cómo se escoge la página que se desalojará. No hemos dicho mucho acerca de en qué lugar del disco se coloca cuando se de­ saloja. Ahora describiremos algunos aspectos de la administración de disco. El algoritmo más sencillo para asignar espacio en disco a las páginas es tener un área de intercambio especial en el disco. Cuando se arranca el sistema, esta área está vacía, y se repre­ senta en la memoria como una sola entrada que indica su origen y su tamaño. Cuando se inicia el primer proceso, en el área de intercambio se reserva un trozo del tamaño del primer proce­ so, y el área restante se reduce en esa cantidad. A medida que se inician nuevos procesos, se les asigna en el área de intercambio trozos del mismo tamaño que sus imágenes de núcleos. Cuando termina un proceso, se libera su espacio en disco. El área de intercambio se adminis­ tra como una Usta de trozos desocupados. Cada proceso tiene asociada la dirección en disco de su área de intercambio. El cálculo de la dirección donde se escribirá una página es sencillo: simplemente, a la dirección de inicio del área de intercambio se le suma la distancia de la página dentro del espacio de direcciones vir­ tual. Sin embargo, para que un proceso pueda iniciar, primero debe prepararse el área de inter­ cambio. Una forma de hacerlo es copiar la imagen completa del proceso en dicha área, para poder traerla a la memoria cuando sea necesario. Otra es cargar todo el proceso en la memoria y paginarlo hacia el disco cuando sea necesario. Sin embargo, este sencillo modelo tiene un problema: los procesos pueden crecer después de iniciados. Aunque el texto del programa por lo regular es fijo, el área de datos a veces puede crecer, y la pila siempre puede hacerlo. Por ello, podría ser mejor reservar áreas de intercam­ bio disfintas para el texto, los datos y la pila, y permifir que cada una de esas áreas abarque más de un trozo en el disco.

RkJQdWJsaXNoZXIy MjI4NDcx