Sistema operativo nachos
Enviado por christopherj043 • 29 de Julio de 2019 • Trabajo • 3.289 Palabras (14 Páginas) • 792 Visitas
INTRODUCION
Nachos es un software de instrucción que permite a los estudiantes estudiar y modificar un sistema operativo real. La única diferencia entre Nachos y un sistema operativo "real" es que Nachos se ejecuta como un solo proceso de Unix, mientras que los sistemas operativos reales se ejecutan en máquinas simples. Sin embargo, Nachos simula las instalaciones generales de bajo nivel de las máquinas típicas, incluidas las interrupciones, la memoria virtual y la E / S de dispositivos controlados por interrupciones.
¿Qué es nachOS?
Nachos simula una máquina que se aproxima aproximadamente a la arquitectura MIPS. La máquina tiene registros, memoria y un cpu. Además, un reloj simulado controlado por eventos proporciona un mecanismo para programar interrupciones y ejecutarlas posteriormente. La máquina MIPS simulada puede ejecutar programas arbitrarios. Uno simplemente carga las instrucciones en la memoria de la máquina, inicializa los registros (incluido el contador de programas PCReg) y luego le dice a la máquina que comience a ejecutar las instrucciones. La máquina obtiene la instrucción a la que PCReg apunta, la descodifica y la ejecuta. El proceso se repite indefinidamente, hasta que se realiza una operación ilegal o se genera una interrupción de hardware. Cuando se produce una captura o interrupción, la ejecución de las instrucciones MIPS se suspende y se invoca una rutina de servicio de interrupción de Nachos para tratar la condición.
Conceptualmente, Nachos tiene dos modos de ejecución, uno de los cuales es el simulador MIPS. Nachos ejecuta procesos de nivel de usuario al cargarlos en la memoria del simulador, inicializar los registros del simulador y luego ejecutar el simulador. Los programas de usuario solo pueden acceder a la memoria asociada con la máquina simulada. El segundo modo corresponde al "kernel" de Nachos. El núcleo se ejecuta cuando Nachos se inicia por primera vez, o cuando un programa de usuario ejecuta una instrucción que causa una captura de hardware (por ejemplo, instrucción ilegal, error de página, llamada al sistema, etc.) ). En `` modo kernel '', Nachos ejecuta la forma en que se ejecutan los procesos Unix normales. Es decir, las declaraciones correspondientes al código fuente de Nachos se ejecutan, y la memoria a la que se accede corresponde a la memoria asignada a las variables de Nachos.
Nachos no tiene que ejecutar programas de nivel de usuario para realizar cosas útiles. Nachos admite subprocesos del kernel, lo que permite que varios subprocesos se ejecuten simultáneamente. En este contexto, Nachos se comporta de manera análoga a otros paquetes de hilos. De hecho, los procesos de nivel de usuario se ejecutan haciendo que un subproceso del núcleo invoque el simulador. Así, la multiprogramación hace uso de múltiples hilos; cada proceso de nivel de usuario tiene un subproceso de núcleo de Nachos asociado para proporcionar un contexto para ejecutar el simulador MIPS.
Componentes de la máquina
La máquina Nachos / MIPS es implementada por el objeto Máquina , una instancia de la cual se crea cuando Nachos se inicia por primera vez. El objeto Máquina exporta una serie de operaciones y variables públicas a las que el núcleo de Nachos accede directamente. A continuación, describimos algunas de las variables importantes del objeto Máquina ; describir su rol ayuda a explicar lo que hace el hardware simulado.
El objeto de la máquina Nachos proporciona registros, memoria física, soporte de memoria virtual, así como operaciones para ejecutar la máquina o examinar su estado actual. Cuando Nachos se inicia por primera vez, crea una instancia del objeto Máquina y lo hace disponible a través de la máquina de variable global . Las siguientes variables públicas son accesibles al núcleo de Nachos:
registros:
Una matriz de 40 registros, que incluyen registros especiales como un puntero de pila, un registro doble para resultados de multiplicación, un contador de programa, un contador de programa siguiente (para demoras de ramificación), un objetivo de registro para cargas demoradas, un valor para cargar en una carga retrasada y la dirección virtual incorrecta después de un error de traducción. Los registros son el número 0-39; vea el archivo machine.h para obtener los nombres simbólicos de los registros que tienen un significado especial (p. ej., PCReg ).
Aunque se puede acceder a los registros directamente a través de machine-> registers [x] , el objeto Machine proporciona rutinas especiales ReadRegister () y WriteRegister () para este fin (que se describen con más detalle a continuación).
memoria principal:
La memoria es direccionable por bytes y organizada en páginas de 128 bytes, del mismo tamaño que los sectores de disco. Se puede acceder a la memoria correspondiente a la dirección física x en Nachos en machine-> mainMemory [x] . Por defecto, la máquina MIPS de Nachos tiene 31 páginas de memoria física. El número real de páginas utilizadas es controlado por el NumPhysPages variable en machine.h .
Memoria virtual
Nachos admite VM a través de una única tabla de páginas lineales o un TLB administrado por software (aunque no simultáneamente). La elección de lo que está en vigencia se controla al inicializar las variables tlb o pageTable de la clase de máquina . Al ejecutar las instrucciones, el objeto Máquina utiliza lo que esté definido, después de verificar que no están configurados simultáneamente.
En este punto, sabemos lo suficiente sobre el objeto Máquina para explicar cómo ejecuta programas de usuario arbitrarios. Primero, cargamos las instrucciones del programa en la memoria física de la máquina (por ejemplo, la variable máquina-> mainMemory ). A continuación, inicializamos las tablas de páginas de la máquina y los registros. Finalmente, invocamos machine-> Run () , que comienza el ciclo fetch-execute para la máquina.
El objeto Máquina proporciona las siguientes operaciones:
Máquina (depuración bool)
El constructor de la máquina toma un solo argumento de depuración . Cuando la depuración es VERDADERA, el simulador MIPS ejecuta las instrucciones en el modo de un solo paso, invocando al depurador después de que se ejecuta cada instrucción. El depurador le permite a uno examinar de forma interactiva el estado de la máquina para verificar (por ejemplo) que los registros o la memoria contienen valores esperados.
Por defecto, el paso a paso está deshabilitado. Se habilita especificando la opción de línea de comando `` -s '' al iniciar Nachos up.
...