Al diseñar una combinación moderna de computadora / sistema operativo, una de las cosas que queremos hacer es ejecutar múltiples programas al mismo tiempo. Uno de los problemas con los que se encontraría al diseñar este sistema es que todos sus programas quieren asumir que tienen acceso a toda la memoria que desean y no coordinan las direcciones que usan.
La solución al problema es un sistema llamado memoria virtual. El espacio de direcciones virtuales es el espacio de direcciones que el sistema operativo pone a disposición de un programa para usar. Cuando un programa intenta acceder a la memoria virtual en, digamos, la dirección 1024, no pueden acceder a la dirección de la memoria física (las direcciones que salen en los cables a los chips ram) 1024. En cambio, hay un sistema de mapeo.
El sistema operativo maneja todas las asignaciones, de modo que dos programas diferentes pueden acceder a lo que consideran la dirección 1024, pero el proceso 1 podría tener su dirección virtual 1024 asignada a la dirección física 2048, mientras que el proceso 2 podría tener su dirección virtual 1024 asignada a la dirección física 4096.
Con el fin de mantener la información de mapeo manejable, el sistema operativo mapea la memoria en "partes" llamadas páginas. 4096 bytes es un tamaño de página muy común. En el ejemplo de su sitio, un determinado proceso tiene una sola página, ubicada en las direcciones virtuales 4096, que tiene una longitud de 4096 bytes (que se extiende a la dirección virtual 8191), asignada a la dirección física 0 (ya que la página tiene una longitud de 4096 bytes, el la asignación se extiende a la dirección física 4095)
El tamaño real del espacio de direcciones virtuales no se especifica (debe tener al menos 14 bits de ancho porque se menciona la dirección 12287), pero eso no importa. Una cosa es segura, no es un sistema de direccionamiento de 12 bits. Eso es solo el tamaño de una página de memoria virtual, la porción más pequeña de memoria que administrará el sistema operativo. Las direcciones 8192 a 12287 son solo otras direcciones virtuales a las que podría acceder un proceso.
El autor hace la pregunta "¿qué sucede si hay un acceso a la memoria que no está asignado?"
En una computadora sin un sistema de mapeo de memoria virtual, los avisos de hardware que acceden a direcciones que no están conectadas a un ram físico son errores. El hardware señala el sistema operativo de la infracción. Este proceso se llama una trampa de error. El sistema operativo imprimirá el mensaje "Memoria inexistente referenciada" y terminará el proceso. Ese es el mensaje adecuadamente grosero.
En una computadora con un sistema de mapeo de memoria virtual ocurre casi lo mismo. Dado que la mayoría de los programas no utilizan toda la memoria que podrían abordar, el sistema operativo no asigna toda la memoria virtual de un proceso a la memoria física (también, la mayoría de las computadoras tienen más espacio de direcciones virtuales disponibles que la memoria RAM total instalada) ellos). Entonces, cuando un proceso intenta acceder a una dirección virtual en la memoria no asignada, el hardware advierte que no hay memoria física asignada a la dirección virtual en cuestión. El sistema operativo está señalado, imprime un mensaje grosero y finaliza el proceso.
Este sistema de mapeo y captura de errores no solo permite que múltiples procesos tengan sus propias vistas del espacio de direcciones, sino que también permite que el sistema operativo contenga y proteja los procesos en ejecución entre sí. Aunque pueden estar usando las mismas direcciones virtuales, el sistema operativo mantiene diferentes procesos asignados a diferentes direcciones físicas. De esa manera no es posible que un proceso acceda (accidentalmente o a propósito) o sobrescriba la memoria de cualquier otro proceso. Esto evita que los programas defectuosos saquen toda la computadora cuando se bloquean.