Desde la aparición del modo protegido del 80286, y sobre todo del 80386 y los sistemas operativos de 32 bits, los diferentes procesos en ejecución que hay en la máquina están aislados unos de otros.

Esto evita que el fallo en una tarea afecte a las otras, y por tanto impacte en la estabilidad del sistema.

El sistema operativo, en combinación con el hardware, limitan la memoria, y las instrucciones que pueden ejecutar los procesos de usuario. Es decir, aquellos que corren en el anillo (ring) 1 o superior. Mientras que el propio sistema operativo, ejecuta sus funciones desde el anillo 0, y por tanto sin ninguna restricción.

Por desgracia estamos acostumbrados a mensajes del tipo "La aplicación ha efectuado una operación no válida y se cerrará". Esto no es más que la notificación que da Windows cuando un programa lee o escribe un bloque de memoria que ha sido reservado, y por tanto no le pertenece.

Lo que es más difícil de ver, es lo que ocurre cuando una aplicación de usuario, intenta ejecutar una instrucción privilegiada. Es decir una instrucción máquina, a la que solamente el sistema operativo tiene acceso.

La prueba es tan sencilla como ejecutar un CLear Interrupts mediante la instrucción CLI.

Aquí tienes para descargar el ejecutable y las fuentes en ensamblador (1 Kb. en formato ZIP).