Estructura de MINIX
Para comprender un poco mejor la estructura Microkernel de MINIX se detallan a continuación las diferentes capas.
Capa 1: Esta es la capa que interactúa directamente con el hardware. Es la encargada de atrapar todas las interrupciones y trampas, de planificar y ofrecer a las capas superiores un modelo de procesos independientes y secuenciales para comunicarse mediante el uso de mensajes. En resumen cuenta con dos partes bien definidas: la primera trata todo lo referente a la programación de bajo nivel para brindar la abstracción de procesos a las capas superiores. La segunda parte se gestiona los aspectos más mecánicos de los mensajes, como lo son los buffers de envío y recepción de mensajes que se alojan en la memoria física, las verificaciones de destinos y todo lo referente al manejo físico de memoria en lo que respecta a los mensajes. La primera capa es la que está escrita en lenguaje ensamblador. El resto de las capas ya está escrito en lenguaje C.
Capa 2: Contiene todo lo concerniente a los procesos de E/S, uno por cada tipo de dispositivos (tareas). Como se ilustra en el gráfico, tenemos tareas para discos, impresoras, relojes, interfaces de red y tareas de sistema, que si bien no son dispositivos de sistema sí tienen por finalidad el servicio de copiado entre diferentes regiones de memoria para procesos que no cuentan con los privilegios para realizarlos ellos mismos. Todas las tareas de la capa 2 y el código de la capa 1 se combinan para formar un solo programa binario llamado kernel, aunque a pesar de que son compilados juntos cuando el kernel y los manejadores de interrupciones se están ejecutando estos tienen mayores privilegios que las tareas. De este modo se logra que el kernel pueda ejecutar todo tipo de instrucciones usando datos de cualquier parte del sistema, a fin de poder acceder a cualquier parte de la memoria y cualquier registro de procesador. Sin embargo, las tareas a pesar de no contar con los privilegios a nivel de kernel sí pueden acceder a cualquier región de memoria que pertenezca a un proceso menos privilegiado con el objetivo de realizar E/S para ellos.
Capa 3: Aglutina los procesos conocidos como procesos servidores. Se ejecutan en un nivel menos privilegiado que el kernel o las tareas, y no acceden directamente a los puertos de E/S. Tampoco pueden acceder a otra región de memoria que no sea la que le fue asignada. Para ello se vale de las llamadas al sistema (FORK, EXEC y BRK) las cuales son proporcionadas por el administrador de memoria (MM). El sistema de archivos (FS) realiza las llamadas al sistema para los archivos (READ, MOUNT y CHDIR). Cabe destacar que el sistema de archivos de MINIX está diseñado como “servidor de archivos” por lo que se podría mover a una máquina remota casi sin cambios. Otros servidores de esta capa son el servidor de reencarnación (RS), que permite reiniciar los drivers que se cierren por fallos u otras causas.
Capa 4: Finalmente aquí se alojan todos los procesos de usuario tales como shells, editores, compiladores, programas, etc.
Fuente: Sistemas Operativos: Diseño e Implementación, Andrew S. Tanenbaum
No hay comentarios:
Publicar un comentario