Sistemas operativos modernos

3. Se ha escrito una página compartida. 4. La pila necesita crecer. 5. La página a la que se hizo referencia está comprometida pero no tiene correspondencia. Los dos primeros casos son errores fatales de los que el proceso que produjo el fallo no puede recuperarse. El tercer caso tiene los mismos síntomas que el segundo (un intento por escribir en una página de sólo lectura), pero el tratamiento es distinto. La solución es copiar la página en un nuevo marco de página físico y aplicarle correspondencia de lectura/escritura. Así es como funciona el copiado al escribir. (Si una página compartida se marca como escribible en todos los procesos que la usan, no será de copiar al escribir y no se producirá un fallo de página cuan­ do se escriba en ella.) El cuarto caso requiere asignar un nuevo marco de página y aplicarle cor­ respondencia en memoria. Sin embargo, las reglas de seguridad exigen que la página esté llena de ceros, para evitar que el proceso pueda averiguar algo acerca del dueño anterior de la pági­ na. Por tanto, hay que encontrar una página llena de ceros o, si no hay ninguna, asignar otro marco de página y llenarlo de ceros en ese momento. Por último, el quinto caso es un fallo de página normal. Se localiza la página y se le aplica correspondencia en memoria. El mecanismo real para obtener páginas y aplicarles correspondencia en memoria es más o menos estándar, así que no nos ocuparemos de este asunto. La única característica que me­ rece mención es que Windows 2000 no lee páginas aisladas del disco; más bien, lee series de páginas consecutivas, por lo regular de uno a ocho, en un intento por reducir al mínimo las transferencias de disco. El tamaño de la serie es mayor si se trata de páginas de código, y me­ nor si se trata de páginas de datos. El algoritmo de reemplazo de páginas El reemplazo de páginas funciona como sigue. El sistema se esfuerza por mantener un núme­ ro considerable de páginas libres en la memoria, de modo que si se presenta un fallo de pági­ na, pueda ocuparse de inmediato una página libre sin tener que escribir primero alguna otra en el disco. Como consecuencia de tal estrategia, casi todos los fallos de página pueden satisfacerse con, al menos, una operación de disco (leer la página), en vez de dos (escribir una página mo­ dificada y luego leer la página requerida). Claro que las páginas de la lista libre tienen que conseguirse en algún lado, por lo que el verdadero algoritmo de reemplazo de páginas es el que decide cuáles páginas se quitarán a los procesos y se colocarán en la lista libre (en realidad hay cuatro listas libres, pero por el mo­ mento lo más sencillo es suponer que sólo hay una; entraremos en pormenores más adelante). Veamos ahora la forma en que Windows 2000 libera páginas. Por principio de cuentas, el mecanismo de paginación se apoya mucho en el concepto de conjunto de trabajo {working set). Cada proceso {no cada subproceso) tiene un conjunto de trabajo, que consiste en las páginas con correspondencia que están en la memoria y a las que, por tanto, es posible el acceso sin ge­ nerar un fallo de página. Desde luego, el tamaño y la composición del conjunto de trabajo fluc­ túa conforme se ejecutan los subprocesos del proceso. El conjunto de trabajo de un proceso dado se describe con dos parámetros; el tamaño mí­ nimo y el máximo. Estos límites no son estrictos; un proceso puede tener en memoria menos

RkJQdWJsaXNoZXIy MjI4NDcx