¿Se puede asignar memoria virtual sin tener que depender de fallas de página?

Sí, no * tiene * que tener fallas de página para implementar la memoria virtual.

La memoria virtual es solo una cosa: dar a los procesos individuales la ilusión de que tienen un espacio de direcciones contiguo grande (¡pero finito!) Disponible para ellos, y solo para ellos. Para mantener esa ilusión, necesita dos cosas: algo de almacenamiento disponible para que el proceso pueda escribir en su espacio de direcciones, y un mecanismo de indirección que convierte las solicitudes en un espacio de direcciones virtuales en solicitudes en su almacenamiento disponible.

Ahora, si los procesos realmente llaman a tu farol y tratan de usar mucho de su espacio de direcciones, necesitarás encontrar suficiente almacenamiento para que lo usen. Esta es la razón por la cual prácticamente todas las implementaciones de memoria virtual están respaldadas primero por la memoria física, luego por otro almacenamiento, como el espacio de la unidad de disco, que es mucho más abundante. Dado que los procesos solo pueden escribir en la RAM, el núcleo necesita alguna notificación de cuándo se emite una escritura en la memoria virtual que se almacena en el disco. Aquí es donde entran las fallas de la página. También tienen la buena propiedad de que el núcleo no tiene que asignar ninguna memoria en ningún almacenamiento hasta que se escribe por primera vez, ya que interceptará esa falla de la primera página.

La paginación hace que la memoria virtual sea práctica, pero * no * es parte de la abstracción que proporciona la memoria virtual.

Sin embargo, si no tiene paginación, ¡no necesita fallas de página! Hay dos formas de tener un sistema de memoria virtual sin paginación: en primer lugar, puede decirle a cada proceso que su espacio de direcciones virtuales es bastante pequeño, digamos 64Kb. Entonces, probablemente pueda asignar espacio para todos los procesos de espacio de usuario en RAM, y todo lo que necesita es la capa de indirección. La segunda forma es simplemente fallar antes: cada proceso tiene 4 GB de espacio de direcciones, pero si realmente intentan usarlo todo, habrá una falla catastrófica. Este es casi el mismo modo de falla que el sistema paginado: no puede asignar páginas sucias para millones de procesos, por lo que no está permitiendo que la falla de abstracción se filtre más de lo que lo hace la paginación. La paginación simplemente retrasa el modo de falla lo suficiente como para que los usos cotidianos de las computadoras sean prácticos. Si el espacio en disco se volviera realmente costoso en relación con la RAM, los diseñadores del sistema volverían a evaluar esa compensación y es posible que surja un enfoque menos permisivo para la asignación de memoria.