• No se han encontrado resultados

Figura 3.5 Forma en que los diferentes componentes de Nachos están ligados durante la ejecución

El lapso de tiempo para la ejecución de cada proceso es determinado por el componente Temer, que causa una interrupción cuando el lapso de tiempo para un proceso en ejecución expira.

El componente Interrupt maneja todas las interrupciones generadas por el componente Timer. La causa de las interrupciones pueden ser la E/S de algún dispositivo (p.ej. la escritura a un archivo por parte de un proceso, una señal del planificador para cambiar a otro proceso, etc.). Todos los sistemas operativos necesitan al hardware para ejecutar sus procesos. El componente Machine provee dicha funcionalidad, al simular la arquitectura MIPS. El componente FileSystem administra todas las operaciones de archivos. SynchDisk provee acceso sincronizado al disco. Para conectar una maquina con otras, se tiene el componente PostOffice que administra la recepción y envió de mensajes a través de una red. Stats es un componente que mantiene ciertas estadísticas sobre la ejecución y eficiencia del sistema. Por ejemplo, puede mantener el rastro de cuantos caracteres han sido escritos en la pantalla, cuantos errores de paginación han ocurrido, cuantos paquetes han sido recibidos por medio de la red, etc.



La máquina Nachos

Nachos simula una máquina parecida a la arquitectura MIPS. La máquina tiene registros, memoria y CPU. Además, un reloj simulado manejado por eventos provee un mecanismo para planificar las interrupciones y ejecutarlas posteriormente. La simulación de la máquina MIPS puede ejecutar cualquier programa. Solo hay que cargar las instrucciones en la memoria de la

4

máquina, inicializar los registros (incluyendo el contador de programa PCReg) y entonces decirle a la máquina que empiece a ejecutar las instrucciones. La máquina obtiene entonces la instrucción a la que apunta el PCReg, la decodifica y ejecuta. El proceso es repetido indefinidamente, hasta que una operación ilegal es realizada o una interrupción de hardware es generada. Cuando ocurre una trampa o interrupción, la ejecución de las instrucciones MIPS es suspendida, y una rutina de servicio de interrupción es invocada para atender la petición. Conceptualmente, Nachos tiene 2 modos de ejecución:

Nachos ejecuta procesos a nivel de usuario cargándolos en la memoria del simulador, inicializando los registros del simulador y luego ejecutando el simulador. Los programas de usuario solo pueden accesar la memoria asociada con la máquina simulada.

El segundo modo corresponde al kernel de Nachos. El kernel se ejecuta cuando Nachos se inicia, o cuando un programa de usuario ejecuta una instrucción que causa una trampa de hardware (p.ej. una instrucción ilegal, falló de paginación, llamada al sistema, etc.). En modo de kernel, Nachos se ejecuta igual que un proceso normal de Unix. Es decir, las declaraciones correspondientes al código fuente de Nachos son ejecutadas, y la memoria accesada corresponde a la memoria asignada a las variables de Nachos.

3.4.3 RCOS

⊕⊕⊕⊕

RCOS esta implementado en Java (aunque la distribución original está en C++), y pertenece a la categoría de sistemas operativos basados en kernels.

RCOS.java esta dividido en las siguientes secciones: 1. Hardware

CPU. Hasta el momento está basado en el código de la máquina P. La intención es reutilizar el compilador RCOS PLL/2 y el intérprete de C++ existentes.

Disco. Se usa una estructura pequeña para producir una representación gráfica de la asignación/desasignación de los bloques del disco por medio del sistema de archivos.

Terminal y Memoria (RAM). La Terminal provee la interfaz física con el usuario, incluyendo el teclado y monitor. La Memoria consiste de 2 secciones. La primera es el cache del CPU, la cual es ajustada dinámicamente para almacenar programas en ella. Esto incrementa la velocidad y reduce la complejidad principalmente. La memoria RAM secundaria contiene todos los programas cargados y los almacena en dos secciones: código de proceso y pila (stack).

2. Sistema operativo

- Kernel. RCOS usa un micro-kernel basado en una estructura de paso de mensajes. El kernel es responsable de varias funciones específicas de la plataforma incluyendo:

a. manejo de interrupciones

b. salvado/restauración del contexto (saving/retrieving context)

c. generación de mensajes al componente apropiado del SO como resultado de una llamada al sistema

- Paso de mensajes (Message passing). Las funciones estándar del sistema operativo están divididas en diversos componentes. Toda la comunicación entre ellos debe ser en forma de mensajes. Todos los mensajes pasan por el componente Post Office que es responsable de entregar los mensajes a los destinos correctos. La intención es que componentes diferentes puedan ser localizados en computadoras diferentes.

- Funciones del SO. Las responsabilidades restantes de SO están divididas en los siguientes componentes:

a. Planificador de disco. Responsable de administrar las peticiones de planificación al disco, traducir los números de bloque lógico a sectores específicos del disco, cilindro y superficie. Hay un planificador de disco para cada disco.

b. Sistema de archivos. Responsable de implementar un sistema de archivos particular (MS-DOS, CP/M, UNIX, NTFS, etc.). Maneja mensajes estándar como abrir archivo, cerrar, leer, escribir, abrir directorio, obtener atributos del archivo, etc. Es posible para una instancia del RCOStener varios objetos FileSystem, dando la habilidad para soportar más de un sistema de archivos a la vez.

c. Planificador de procesos. Responsable de administrar la creación de procesos, terminación y planificación. Maneja mensajes como dividir un proceso (fork), ejecutar proceso, matar un proceso, planificar un nuevo proceso, bloquear proceso, etc. Mantiene todas las colas de discos e incluye métodos como runningToReady, runningToBlocked, getNextRunningProcess.

d. Administrador de memoria. Responsable de administrar la memoria, asignar y desasignar memoria para los procesos, lectura y escritura de memoria para otros componentes.

e. Terminales. Proveen el mecanismo para escribir/leer a/de una terminal. 3. Animación

El sistema de Animación esta oculto del resto del sistema por la clase Post Office Animator. Sus responsabilidades incluyen:

- dibujar la pantalla de perspectiva principal

- manejar eventos de entrada e inicializar nuevos hilos para manipular la animación de varios componentes del SO.

- decidir que mensajes son interesantes para el sistema de animación y distribuirlos en los hilos apropiados (si existen).