Sistema Operativo Minix


Contenido



1.   INTRODUCCIÓN



Los sistemas GNU/Linux [Joh98] ya no son una novedad; cuentan con una amplia variedad de usuarios y de ámbitos de trabajo donde son utilizados. Su origen se remonta al mes de agosto de 1991, cuando un estudiante finlandés llamado Linus Torvald anunció, en el newsgroup comp.os. minix que había creado su propio núcleo de sistema operativo y lo ofreció a la comunidad de desarrolladores para que lo probara y sugiriera mejoras para hacerlo más utilizable. Este sería el origen del núcleo (o kernel) del operativo que, más tarde, se llamaría Linux.



2.   OBJETIVO GENERAL


2.1   Objetivo general

Investigar sobre el sistema operativo Minix.

2.2   Objetivos específicos

·         Conocer el funcionamiento del sistema operativo Minix.
·         Explorar qué hardware se necesita para el funcionamiento de Minix.
·         Estudiar el manejo de listas, control de procesos minix/Linux.

3.   DESARROLLO CONCEPTUAL


3.1   ¿Qué es MINIX?

MINIX es un sistema operativo diseñado para ser altamente fiable, flexible y seguro. La versión más reciente está basada un poco en las versiones anteriores de MINIX, pero es diferente en varias áreas clave.

Este sistema operativo es extremadamente pequeño, la parte que se ejecuta en modo de kernel es menor a 4000 líneas de código ejecutable. Las partes que se ejecutan en modo de usuario están divididas en pequeños módulos aislados uno de otro. Por ejemplo, cada manejador de dispositivo se ejecuta como un proceso en modo de usuario separado, entonces un error en un manejador (la fuente más grande de errores en cualquier sistema operático), no puede detener el sistema operativo completo. De hecho, la mayor parte del tiempo cuando un manejador falla, este es reemplazado automáticamente sin necesidad de intervención del usuario. Estas características, la pequeña cantidad de código del kernel y otros aspectos mejoran en gran forma la fiabilidad del sistema.



3.2   Hardware que se necesita para su funcionamiento


Se necesita un Intel 386 o superior con 4 MB de RAM, un disco duro IDE con al menos 100 MB de espacio libre y un CD-ROM IDE para iniciar. No es posible (por ahora) iniciar desde un CD-ROM USB.



3.3   Funciones del núcleo (nivel 1)

El núcleo de MINIX, tal y como se dijo antes, tiene menos trabajo que los núcleos monolíticos arquetípicos de UNIX. Básicamente su trabajo es:
Recoger las interrupciones físicas de los dispositivos y las llamadas al sistema de los procesos Gestionar la CP Dar un modelo más abstracto a los procesos La primera función es necesaria para abstraer los detalles de las interrupciones, tanto físicas como lógicas. Para ello, el núcleo se encarga de convertir estas interrupciones en mensajes, para homogeneizar la comunicación entre procesos. Es decir, que los procesos ven las interrupciones como simples mensajes.

La   segunda   es   básica   en   cualquier   sistema   operativo   multiusuario   y   multitarea, y principalmente está para aprovechar al máximo la capacidad de procesamiento de la máquina. Esta gestión debe repartir lo más equitativamente posible el tiempo de CPU entre los procesos y evitar que alguno de ellos se quede sin tiempo de procesamiento.
La última simplemente   consiste en hacer el “trabajo sucio” del que alguien tiene que encargarse.  Principalmente consiste en que guardar y restaurar los registros en los cambios de contexto, y resuelve el envío de mensajes, comprobando que los destinos son correctos, copiando los mensajes, etc.


3.4   Funciones de la capa de controladores (nivel 2)

Esta capa comprende todas las llamadas “tareas”, que son lo que otros sistemas operativos llaman manejadores o controladores de dispositivo (drivers). Por cada dispositivo a controlar, es decir, por cada manejador, hay una tarea ejecutándose en este nivel. Por ejemplo, generalmente habrá una tarea para la impresora, otra para la terminal, otra para el disco, etc. en la mayoría de los sistemas.
Además de las tareas “normales” de control de dispositivos, hay una adicional, llamada “tarea del sistema”, que copia entre regiones de memoria. No es estrictamente una tarea de E/S, ya que trabaja exclusivamente con memoria, pero hace trabajos de copia entre regiones de memoria cuando otros procesos no pueden hacerlo, por ejemplo, al mandar mensajes.
Aunque las tareas tienen mayores privilegios que los procesos de usuario (para poder acceder a los dispositivos físicos, poder copiar a zonas de memoria de otros procesos, etc.), y tienen mayor prioridad a la hora de ejecutarse, a efectos de comunicación son igual que los procesos, es decir, mandan y reciben mensajes.  Esto hace el diseño del núcleo más limpio y homogéneo.

3.5   Funciones de la capa de servicios (nivel 3)

La capa de servicios la componen principalmente los servicios del sistema de ficheros (FS) y el manejo de memoria (MM). Además, se pueden añadir servicios de red, que no vienen compilados por defecto en MINIX, y uno puede crearse sus propios servicios.
El gestor de memoria sirve las peticiones como fork, exec, o brk, mientras que el sistema de ficheros responde a las llamadas como read, mount, o chdir.
Estos servicios tienen más prioridad que los procesos de usuario, pero no pueden realizar   la E/S directamente (tienen   los mismos privilegios).   Es decir, tienen   que hacer peticiones a las tareas del nivel 2. Tampoco pueden acceder a zonas de memoria que no se les hayan asignado, por lo que tienen que pedir servicios a la tarea del sistema.  Esto facilita la modificación de los servicios de este nivel por depender de llamadas al sistema del núcleo, que por una parte son de mayor nivel, y por otra parte hace que el nivel 3 no dependa de la configuración física del sistema informático en cuestión.
Los servicios, además, son ficheros ejecutables independientes del núcleo.  La ventaja más evidente es la rapidez y comodidad para cambiar la implementación del nivel 3, por no vernos obligados a cambiar todo el núcleo.


3.6   Funciones de la capa de nivel de usuario (nivel 4)

La capa superior comprende todos los procesos “normales” de nivel de usuario, es decir, los intérpretes de órdenes, como el bash o el ash; los compiladores, como el gcc o el g++; los servicios del sistema, como el lpd o el syslogd, etc. Como es lógico, es la capa que tiene menores privilegios y menor prioridad de ejecución de todas.
Ningún proceso de esta capa puede acceder a zonas de memoria de otros procesos, estén en la capa que estén. Si se tienen que comunicar, se mandan mensajes, y las copias en memoria las hace el núcleo mismo o el servicio del sistema.
Por otro lado, por tener los menores privilegios, si hay un solo proceso de otra capa intentando ejecutarse, obtendrá la CPU antes. Es decir, que no se ejecutará ningún proceso del nivel 4 mientras haya procesos de otras capas intentándolo.
Es importante   resaltar   que, aunque se carguen servicios como el lpd que estén ejecutándose todo el tiempo que esté la máquina encendida, éstos no tendrán los mismos privilegios que los procesos de otras capas.

3.7   Control de procesos en minix




3.8   Control de procesos en Linux







Comentarios

Entradas populares