3. Apoyo del hardware para implementar el sistema operativo
Texto íntegro de la conversión. Las figuras y la disposición de las notas se pueden consultar en el PDF.
Página 19
3.Apoyo del hardware para implementar el sistema operativo
Hemos visto que el sistema operativo ofrece una máquina virtual a los usuarios más sencilla de usar que la máquina física. Ahora bien, ¿qué pasaría si un usuario insistiera en trabajar directamente con la máquina física ignorando el sistema operativo? Si el sistema operativo quiere garantizar la fiabilidad de los servicios que ofrece, no puede consentir esta situación. Un usuario que trabaje directamente con la máquina física puede provocar errores irrecuperables o puede acceder a recursos (como posiciones de memoria o sectores de disco) que no le pertenecen y poner en compromiso la confidencialidad y integridad de los datos de otros usuarios.
Ahora bien, al fin y al cabo, todo el código en ejecución en un procesador no es más que secuencias de instrucciones de lenguaje máquina. En principio, cualquier usuario podría escribir un programa que utilizara instrucciones del lenguaje máquina, que trabajen directamente con la máquina física e intentar ejecutarlo. Para poder neutralizar esta estrategia, el sistema operativo necesita un cierto apoyo por parte del hardware.
-
Dentro del repertorio de instrucciones del lenguaje máquina, la arquitectura del computador identifica un subconjunto de instrucciones privilegiadas que pueden poner en compromiso la estabilidad de la máquina o la confidencialidad de los datos, como por ejemplo la instrucción que permite detener el procesador, la que permite inhibir el tratamiento de las interrupciones o las que permiten leer/escribir los registros de control de los dispositivos de entrada/salida. Veremos que los programas de usuario no podrán utilizar directamente estas instrucciones privilegiadas. El resto de instrucciones del lenguaje máquina sí podrán ser utilizadas libremente por los programas de usuario.
-
El procesador ofrece dos (o más) modos de ejecución, que son el modo de ejecución privilegiado y el modo no privilegiado (usuario). En el modo privilegiado, el procesador podrá ejecutar cualquier instrucción de lenguaje máquina. En el modo usuario, el procesador únicamente podrá ejecutar instrucciones no privilegiadas; si intenta ejecutar una privilegiada, el procesador producirá una excepción.
-
El modo de ejecución usuario se utilizará para ejecutar el código de usuario y el modo de ejecución privilegiado se utilizará para ejecutar el código del sistema operativo. El procesador tendrá que controlar en cada momento en qué modo de ejecución se encuentra. Para hacerlo, sólo tendrá que ser consciente del momento en el que se producen los acontecimientos directos de entrada al sistema operativo (interrupciones, excepciones y llamadas al sistema) y del momento en el que se ejecuta la instrucción de lenguaje
Página 20
máquina que indica el retorno desde una rutina de atención (en la arquitectura IA-32 es la instrucción iret). La figura 6 muestra el diagrama de estados correspondiente.
-
El vector de interrupciones (VI) determina qué rutinas dan servicio a las interrupciones/excepciones/llamadas al sistema. Obviamente, hay que garantizar que un proceso de usuario no pueda modificarlo. Si el VI se puede leer/ modificar con instrucciones convencionales de acceso a la memoria, hay que garantizar que los procesos de usuario no puedan hacerlo. Es necesario que los procesadores dispongan de una unidad de gestión de la memoria (MMU, Memory Management Unit) que limite el rango o los rangos de direcciones de memoria que puede acceder cada proceso. Si un proceso intenta acceder fuera del rango o de los rangos que le corresponden, la MMU generará una excepción de acceso a la memoria inválido.
-
Con el fin de garantizar que el sistema operativo tome el control de la máquina periódicamente, es necesario un dispositivo temporizador que genere interrupciones periódicamente (por lo general, entre cien y mil veces por segundo).
Figura 7. Diagrama que muestra las transiciones entre el modo de ejecución privilegiado y el no privilegiado.
Observaciones:
-
El sistema operativo MS-DOS tenía graves problemas de estabilidad porque el procesador para el que se diseñó (el 8088/8086) tenía bastantes limitaciones (no disponía de varios modos de ejecución, no tenía instrucciones privilegiadas y no tenía MMU). Por lo tanto, cualquier programa en ejecución en la máquina tenía el control total de ésta.
-
Gracias a la MMU, las instrucciones de lenguaje máquina de acceso a la memoria (load/store) no son privilegiadas. La MMU es quien determina si los accesos a la memoria que establece un proceso son válidos o no; si no lo son, la MMU generará una excepción que, en la mayoría de los casos, provocará que el sistema operativo aborte la ejecución del proceso.
Notas y pies de figura de la fuente
Ved también En el módulo 3, "La gestión de la memoria", trataremos la cuestión del acceso a la memoria con más detalle.
Ver fragmento extraído sin normalizar
## Página 19
<!-- source-page: 19 -->
GNUFDL • PID_00214804 19 El sistema operativo: una máquina virtual
3.Apoyo del hardware para implementar el sistema
operativo
Hemos visto que el sistema operativo ofrece una máquina virtual a los usuarios
más sencilla de usar que la máquina física. Ahora bien, ¿qué pasaría si un
usuario insistiera en trabajar directamente con la máquina física ignorando el
sistema operativo? Si el sistema operativo quiere garantizar la fiabilidad de los
servicios que ofrece, no puede consentir esta situación. Un usuario que trabaje
directamente con la máquina física puede provocar errores irrecuperables o
puede acceder a recursos (como posiciones de memoria o sectores de disco)
que no le pertenecen y poner en compromiso la confidencialidad y integridad
de los datos de otros usuarios.
Ahora bien, al fin y al cabo, todo el código en ejecución en un procesador
no es más que secuencias de instrucciones de lenguaje máquina. En principio,
cualquier usuario podría escribir un programa que utilizara instrucciones del
lenguaje máquina, que trabajen directamente con la máquina física e intentar
ejecutarlo. Para poder neutralizar esta estrategia, el sistema operativo necesita
un cierto apoyo por parte del hardware.
1) Dentro del repertorio de instrucciones del lenguaje máquina, la arquitectu-
ra del computador identifica un subconjunto de instruccionesprivilegiadas
que pueden poner en compromiso la estabilidad de la máquina o la confiden-
cialidad de los datos, como por ejemplo la instrucción que permite detener el
procesador, la que permite inhibir el tratamiento de las interrupciones o las
que permiten leer/escribir los registros de control de los dispositivos de entra-
da/salida. Veremos que los programas de usuario no podrán utilizar directa-
mente estas instrucciones privilegiadas. El resto de instrucciones del lenguaje
máquina sí podrán ser utilizadas libremente por los programas de usuario.
2) El procesador ofrece dos (o más) modos de ejecución, que son elmodo
deejecuciónprivilegiadoyelmodonoprivilegiado (usuario). En el modo
privilegiado, el procesador podrá ejecutar cualquier instrucción de lenguaje
máquina. En el modo usuario, el procesador únicamente podrá ejecutar ins-
trucciones no privilegiadas; si intenta ejecutar una privilegiada, el procesador
producirá una excepción.
3)Elmododeejecuciónusuarioseutilizaráparaejecutarelcódigode
usuarioyelmododeejecuciónprivilegiadoseutilizaráparaejecutarel
códigodelsistemaoperativo. El procesador tendrá que controlar en cada
momento en qué modo de ejecución se encuentra. Para hacerlo, sólo tendrá
que ser consciente del momento en el que se producen los acontecimientos
directos de entrada al sistema operativo (interrupciones, excepciones y llama-
das al sistema) y del momento en el que se ejecuta la instrucción de lenguaje
## Página 20
<!-- source-page: 20 -->
GNUFDL • PID_00214804 20 El sistema operativo: una máquina virtual
máquina que indica el retorno desde una rutina de atención (en la arquitec-
tura IA-32 es la instrucción iret). La figura 6 muestra el diagrama de estados
correspondiente.
4)Elvectordeinterrupciones (VI) determina qué rutinas dan servicio a las
interrupciones/excepciones/llamadas al sistema. Obviamente, hay que garan-
tizar que un proceso de usuario no pueda modificarlo. Si el VI se puede leer/
modificar con instrucciones convencionales de acceso a la memoria, hay que
garantizar que los procesos de usuario no puedan hacerlo. Es necesario que
los procesadores dispongan de una unidad de gestión de la memoria (MMU,
Memory Management Unit) que limite el rango o los rangos de direcciones de
memoria que puede acceder cada proceso. Si un proceso intenta acceder fuera
del rango o de los rangos que le corresponden, la MMU generará una excep-
ción de acceso a la memoria inválido.
5) Con el fin de garantizar que el sistema operativo tome el control de la má-
quina periódicamente, es necesario un dispositivo temporizador que genere
interrupciones periódicamente (por lo general, entre cien y mil veces por se-
gundo).
Figura 7. Diagrama que muestra las transiciones entre el modo de ejecución privilegiado y el no privilegiado.
Observaciones:
• El sistema operativo MS-DOS tenía graves problemas de estabilidad porque
el procesador para el que se diseñó (el 8088/8086) tenía bastantes limita-
ciones (no disponía de varios modos de ejecución, no tenía instrucciones
privilegiadas y no tenía MMU). Por lo tanto, cualquier programa en ejecu-
ción en la máquina tenía el control total de ésta.
• Gracias a la MMU, las instrucciones de lenguaje máquina de acceso a la Ved también
memoria (load/store) no son privilegiadas. La MMU es quien determina si
los accesos a la memoria que establece un proceso son válidos o no; si no En el módulo 3, "La gestión
de la memoria", trataremos la
lo son, la MMU generará una excepción que, en la mayoría de los casos, cuestión del acceso a la me-
moria con más detalle.
provocará que el sistema operativo aborte la ejecución del proceso.