Sistemas operativos modernos

partan tanto el texto como los datos. En un sistema paginado, lo que a menudo se hace es dar a cada uno de estos procesos su propia tabla de páginas y hacer que ambas apunten al mismo con­ junto de páginas. Así, no se copian páginas al ejecutarse fork. Sin embargo, todas las páginas de datos que se han hecho corresponder en ambos procesos se marcan como de SÓLO LECTURA. En tanto ambos procesos se limiten a leer sus datos, sin modificarlos, tal situación podrá continuar. Tan pronto como cualquiera de los procesos actualice una palabra de memoria, la violación de la protección de sólo lectura causará un salto al sistema operativo. Entonces se creará una copia de la página para que cada proceso tenga su propia copia privada. Las dos co­ pias se marcan como de LECTURA-ESCRITURA, así que todas las escrituras subsiguientes a cualquiera de las copias se efectuarán sin generar una interrupción de sistema. Una estrategia así implica que las páginas en las que nunca se escribe (incluidas todas las páginas de progra­ ma) no tienen que copiarse; sólo deben copiarse las páginas de datos en las que sí se escriba. Este enfoque, llamado copiar al escribir, mejora el desempeño porque reduce el copiado. 4.6.6 Política de aseo La paginación funciona en forma óptima cuando hay abundantes marcos de página desocupa­ dos que puedan usarse cuando se presentan fallos de página. Si todos los marcos están llenos, y peor aún, modificados, será necesario escribir una página antigua en el disco para poder traer una página nueva de allí. A fin de asegurar un abasto suficiente de marcos de página libres, mu­ chos sistemas de paginación tienen un proceso de segundo plano, llamado demonio de pagina­ ción, que duerme casi todo el tiempo pero se despierta en forma periódica para examinar el estado de la memoria. Si el número de marcos de página libres es demasiado bajo, el demonio comienza a seleccionar páginas para desalojarlas, aplicando el algoritmo de reemplazo de pági­ nas escogido. Si esas páginas se han modificado desde que se cargaron, se escriben en el disco. En todo caso, se recuerda el contenido previo de la página. Si llega a necesitarse otra vez una de las páginas expulsadas antes de que su marco de página se sobrescriba, se le podrá re­ cuperar con sólo sacarlo de la reserva de marcos de página libres. Mantener un abasto de mar­ cos de página disponibles produce un mejor desempeño que llenar toda la memoria y luego tratar de hallar un marco en el momento en que se necesite. Como mínimo, el demonio de pa­ ginación garantiza que todos los marcos libres estén limpios, por lo que no hay que escribir su contenido apresuradamente en disco cuando se les necesita. Una forma de implementar esta política de aseo es con un “reloj” de dos manecillas. La mane­ cilla del frente está bajo el control del demonio de paginación. Cuando apunta a una página modi­ ficada, esa página se escribe en disco y la manecilla se adelanta. Cuando la manecilla apunta a una página limpia, simplemente se adelanta. La manecilla de atrás se utiliza para el reemplazo de pági­ nas, igual que en el algoritmo de reloj estándar, sólo que ahora es mayor la probabilidad de que la manecilla de atrás apunte a una página limpia, gracias a la labor del demonio de paginación. 4.6.7 Interfaz de memoria virtual Hasta aquí hemos supuesto que la memoria virtual es transparente para los procesos y progra­ madores; es decir, que lo único que ellos ven es un espacio de direcciones virtual grande en una

RkJQdWJsaXNoZXIy MjI4NDcx