Práctico 1 - Ejercicio 16

Práctico 1 - Ejercicio 16

de Sebastian Daloia Servetti -
Número de respuestas: 1

Que tal, el ejercicio 16 pide presentar argumentos de si es posible o no construir un Sistema Operativo seguro, si el Sistema de Computación no cuenta con un modo de operación privilegiado.

Las consideraciones que hice giran alrededor del concepto de instrucciones privilegiadas.

Como no puedo ir a las clases prácticas, pues no estoy en Montevideo, comparto lo que pensé, que opinan del enfoque? Gracias.

  • El Sistema Operativo tiene una lista de instrucciones, de la arquitectura, que considera deben ser ejecutadas solas por él (instrucciones privilegiadas).

  • Si la instrucción privilegiada genera una interrupción el Sistema Operativo, cuando atiende la interrupción, puede fijarse si el PC del programa que lo generó es de un segmento destinado a los programas de usuario y no procesar el pedido en este caso.
  • Para el resto de las instrucciones privilegiadas si el hardware cuenta con MMU entonces estas serán usadas en el espacio destinado al programa y no en otro lado, por lo tanto afectan solo al programa que la ejecutó.
  • Si alguna instrucción privilegiada no genera interrupción y no usa parámetros que direccionen a memoria entonces no sería atajada su ejecución y el programa de usuario podría ejecutarla libremente.

Con estas consideraciones, si el hardware provee soporte MMU y las instrucciones que no tienen acceso a memoria y son consideradas críticas para cualquier Sistema Operativo generan interrupciones entonces se podría construir un Sistema Operativo seguro.

En respuesta a Sebastian Daloia Servetti

Re: Práctico 1 - Ejercicio 16

de Jorge Merlino -

Decir que las instrucciones críticas generan interrupciones es quivalente a decir que tenés un modo de operación privilegiado. Eso es de hecho lo que pasa cuando un código en modo usuario ejecuta una instrucción privilegiada. Lo que pide el ejercicio es asumir que esto no ocurre, que no hay instrucciones que generen interrupciones de por si.

Por otro lado si pasa esto que decís: "alguna instrucción privilegiada no genera interrupción y no usa parámetros que direccionen a memoria entonces no sería atajada su ejecución y el programa de usuario podría ejecutarla libremente" Esa instrucción podría por ejemplo deshabilitar la generación de interrupciones para las otras instrucciones que si la generan (eso es configuración de la CPU no de la memoria) y por lo tanto cambiar la CPU a modo monitor y deshabilitar el control para todas las instrucciones.