Download La arquitectura microkernel: futuro de los sistemas operativos

Document related concepts

MINIX wikipedia , lookup

QNX wikipedia , lookup

RC 4000 wikipedia , lookup

Historia de los sistemas operativos wikipedia , lookup

GNU Hurd wikipedia , lookup

Transcript
DAC/UPC Report No. RR-93/08
La arquitectura microkernel:
futuro de los sistemas operativos
Marisa Gil, Angel Toribio, Xavier Martorell
Departament d’Arquitectura de Computadors
Universitat Politècnica de Catalunya. Barcelona (Spain)
ABSTRACT
Con los avances tecnológicos y las nuevas necesidades que van teniendo los usuarios, los
sistemas operativos tradicionales, como UNIX, han ido aumentando en complejidad y tamaño.
En este caso, la tecnología de los microkernels aparece como solución para volver a la
sencillez y la simplicidad del UNIX1 original. Los microkernels ofrecen una plataforma software
donde poder desarrollar y transportar sistemas operativos, y entornos operativos en general, a
partir de aplicaciones que trabajen según el paradigma cliente-servidor.
En este informe, haremos un repaso desde los sistemas operativos tradicionales hasta la
aparición de los microkernels. Veremos la filosofía y características más relevantes que ofrece este
método de diseño de sistemas operativos, deteniéndonos en los ejemplos más importantes.
Desde los inicios de la Informática, paralelamente al desarrollo del hardware, surgió la
necesidad de suministrar un software de base que realizase las funciones de control del
ordenador. Al principio, este software estaba formado por un conjunto de rutinas que se
cargaban en la memoria del ordenador y proporcionaban, entre otras, operaciones de entrada/
salida de información desde o hacia los dispositivos.
Este conjunto de rutinas fue creciendo en complejidad a medida que se le fueron
asignando más funciones. Contribuyeron a ello, por un lado, nuevos componentes hardware
cada vez más modernos y complicados de manejar (cintas, discos y, más recientemente, la red
de comunicaciones); y, por otro lado, el cada vez mayor número de aplicaciones que se
ejecutaban sobre los ordenadores. Era necesario ofrecer un software de base que controlase su
ejecución.
Nacen, a partir de ese momento los sistemas operativos tradicionales. Entre ellos, UNIX
destaca pronto por su sencillez en el diseño y por su fácil portabilidad.
UNIX tradicional está formado por un núcleo (el sistema operativo propiamente dicho) y
por un conjunto de aplicaciones de sistema. El núcleo reside en memoria desde el “boot” del
ordenador. Se encarga, principalmente, de la gestión de procesos, del acceso a ficheros y
dispositivos, de la gestión de la memoria y de ciertos aspectos de la protección de la
información entre los usuarios.
1. UNIX es una marca registrada de Unix Systems Laboratories Inc. en los Estados Unidos de America y
otros paises.
-1-
DAC/UPC Report No. RR-93/08
Las aplicaciones de sistema son programas ejecutables que acompañan al núcleo del
sistema operativo. Van desde el sencillo comando “ls”, que permite obtener la lista de los
ficheros de un directorio hasta herramientas tan útiles como el compilador de C o los
formateadores de texto. Los usuarios del ordenador dialogan con él mediante el uso de estas
aplicaciones, solas o combinadas para obtener el resultado deseado.
Los sistemas operativos, no obstante, fueron creciendo, para incorporar nuevas
funciones. Con la aparición de los sistemas de ficheros en red fue necesario añadir el software
de control de la red de comunicaciones y ampliar la semántica de las llamadas al sistema
referentes a ficheros y dispositivos; todo ello para permitir el acceso a sistemas de ficheros
remotos. Algunas versiones reforzaron la protección en el acceso a la información por parte de
los usuarios; otras intentaron ofrecer procesamiento en tiempo real; gestión de los
procesadores, distribución, ...
Con todo ello el núcleo de los sistemas operativos (también el núcleo de UNIX) creció
desmesuradamente. Y, UNIX, en concreto, con ello, dejó a un lado la filosofía con la que había
nacido: la sencillez.
1.
MICROKERNELS COMO PLATAFORMAS PARA SISTEMAS OPERATIVOS
En los entornos distribuidos y en el diseño de aplicaciones había empezado a usarse el
modelo de programación llamado cliente-servidor. En este modelo las aplicaciones están
compuestas por diferentes procesos que colaboran para llevar a cabo su objetivo. De hecho, una
aplicación está formada por dos tipos de procesos: unos, los servidores, ofrecen un interfaz a
través del cual los otros, los clientes, piden su servicio, consiguiendo, en general, realizar un
trabajo de mayor complejidad. Un proceso cliente puede ser a la vez servidor de otro proceso.
Los procesos suelen comunicarse a través de paso de mensajes.
Se necesitaba una herramienta para cambiar la forma de diseñar sistemas operativos y el
modelo de programación cliente-servidor fue utilizado para encontrarla. Aplicando este
modelo al diseño de sistemas operativos, parte de los servicios que ofrecen éstos, si no todos,
pueden construirse como procesos servidores. De esta forma se ve un sistema operativo como
una aplicación. Al conjunto de servidores que proporcionan el interfaz de un sistema operativo
lo denominamos subsistema. Inicialmente los subsistemas se ejecutaban en modo privilegiado
como los sistemas operativos tradicionales. El siguiente paso es pensar que los subsistemas
puedan ejecutarse en modo usuario.
Podemos, pues, disponer de un servidor de ficheros, de un gestor de procesos, de un
gestor de memoria virtual, de un proceso encargado de verificar los accesos a la información,
etc. Todos ellos constituyen un subsistema y se ejecutan sobre un software de base que controla
el ordenador: el microkernel.
Los microkernels realizan la gestión básica del ordenador. Así, reciben las interrupciones
de los dispositivos y las excepciones (fallos de página, división por cero, ...) e invocan la rutina
que las gestiona o pasan un mensaje hacia el proceso encargado de resolverlas; llevan a cabo la
gestión de procesos, permitiendo, con frecuencia, ejecución en tiempo real; controlan las
comunicaciones entre procesos (la base del modelo cliente-servidor); reparten la memoria del
ordenador; en los multiprocesadores, permiten controlar el número de procesadores que están
ejecutando código de usuario. Con los microkernels se ha vuelto a la filosofía UNIX original: la
sencillez; y, con ella, la gestión del sistema realizada por el microkernel podrá ser más eficiente
y más fácil de diseñar, escribir y mantener.
-2-
DAC/UPC Report No. RR-93/08
2.
SERVICIOS OFRECIDOS POR LOS MICROKERNELS
Aunque, evidentemente, cada microkernel tiene sus peculiaridades, en general todos
ellos proporcionan un interfaz parecido. Entre las abstracciones, o entidades exportadas hacia
el nivel de los subsistemas, que componen el interfaz, están los procesos (denominados tasks o
actors), los flujos de ejecución (threads), los ports de comunicaciones, los mensajes, los
segmentos y las regiones de memoria. A continuación se exponen las características comunes
de estas abstracciones en la mayoría de microkernels.
Un proceso es una entidad a la cual se asocian recursos del sistema (memoria,
procesadores, ficheros, ...). Podemos verlo como la unidad de asignación de recursos. Véase la
similitud con un proceso UNIX, el cual tiene un espacio de direcciones delimitado, una tabla de
ficheros abiertos a los que puede acceder, etc.
Tradicionalmente, el sistema operativo asocia un procesador a los procesos para que se
ejecuten. Sin embargo, en un microkernel, para que un programa de usuario se ejecute es
necesario tener algo más que un proceso con el programa cargado en memoria: los procesos
han de contener, como mínimo, un flujo de ejecución (o thread). Los flujos son uno de los
recursos que se pueden asociar a los procesos y consiste en la representación de código
ejecutándose o, lo que es lo mismo, representa un procesador virtual. Dicha representación
contiene los registros del procesador físico asociado, así como la prioridad de ejecución, etc.
Memory
Object
Message
Task
Port
Region
Thread
Kernel
Abstracciones básicas
Es necesario observar que dentro de un proceso puede haber varios flujos ejecutándose
concurrentemente. Si consideramos que desde siempre un proceso ha representado una
máquina virtual que nos ofrece, entre otros recursos, un espacio de direcciones y un procesador,
ahora se ha ampliado esta idea añadiendo más procesadores; en estos momentos un proceso
ofrece un multiprocesador (cada flujo representa un procesador) y, si el ordenador dispone de
más de un procesador físico, será posible ejecutar más de un flujo en paralelo.
Un subsistema diseñado para ofrecer el interfaz UNIX a los usuarios tiene suficiente con
crear un proceso y asociarle un flujo para obtener un proceso UNIX tradicional.
-3-
DAC/UPC Report No. RR-93/08
Otras de las entidades que más destacan de las ofrecidas por los microkernels son, por los
enormes beneficios que aportan en la comunicación entre procesos, el port y el mensaje. Un
port suele representar una dirección donde enviar mensajes. Hace las veces, además, de buzón
ya que los mensajes recibidos se guardan en una cola asociada al port. Los procesos crean ports
y, a través de ellos, se intercambian información. Ésta viaja de un proceso a otro dentro de un
mensaje. Un mensaje es la estructura que se da a la información que se transmite junto con la
dirección (el port) desde donde se envía y la dirección donde se quiere hacer llegar.
El microkernel se ocupa de que todos los mensajes lleguen a su destino. Existe, incluso, la
posibilidad de que, de forma transparente al usuario, estas comunicaciones se lleven a cabo
entre procesos que residen en ordenadores diferentes. En este caso, el microkernel suele ser
cliente de un servidor de mensajes a través de la red. Este servidor tiene la misión de enviar
todos los mensajes destinados a ports remotos a través de la red y de recibir de ella los mensajes
enviados desde otros ordenadores hacia qualquiera de los ports locales.
Los microkernels han introducido, también, mejoras en la gestión de la memoria gracias a
la definición de segmentos y regiones. Un segmento es un objeto (cierta cantidad de
información) que puede ser representado en memoria. Ejemplos de segmentos pueden ser los
ficheros. Cuando un proceso quiere acceder a un segmento, lo hace mapeando parte de él en
una región de memoria. Una de estas regiones no es más que una parte del espacio de
direcciones del proceso donde éste puede leer y/o escribir.
El microkernel o alguno de los servidores se encargan de mantener la coherencia entre el
contenido de la memoria a la que está accediendo el proceso y el contenido del fichero. Así
mismo, aseguran que si dos procesos tienen los mismos datos (el mismo fichero) mapeados en
sus respectivos espacios de direcciones, las modificaciones que realiza uno de ellos son
inmediata y automáticamente vistas por el otro. Hay que observar aquí que, como en el paso de
mensajes, ambos procesos pueden estar en ordenadores distintos conectados en red.
3.
UNIX PUEDE VERSE COMO UNA APLICACIÓN
Una vez descritas las herramientas que ofrece un microkernel es posible pensar en UNIX
no como un sistema operativo sino como un programa de aplicación que se ejecuta sobre el
microkernel. Un servidor o un conjunto de servidores pueden proporcionar a los programas
clientes, programas usuarios de UNIX, las abstracciones adecuadas.
En este tipo de arquitectura de sistemas operativos, el microkernel proporciona una serie
de servicios genéricos. La combinación de este conjunto de servicios primitivos forma una
plataforma estándar para el desarrollo de las funciones específicas de un sistema operativo en
particular. Estas operaciones pueden configurarse, de manera adecuada, como servidores que
gestionan los recursos físicos y lógicos del sistema, tales como ficheros, dispositivos y servicios
de comunicación a alto nivel.
La idea de que UNIX puede implementarse como una aplicación es la culminación lógica
de una tendencia que ha terminado implantándose en el diseño de sistemas operativos: la
arquitectura cliente-servidor.
Durante los últimos años el aumento en funcionalidad de los entornos informáticos ha
ido acompañado por el desarrollo de aplicaciones y herramientas basadas en el modelo
anteriormente mencionado. Los servicios de ficheros a través la red (Network File System
“NFS”, Andrew File System “AFS”), servicios de nombres (Domain Name Service “DNS”) y
servicios de bases de datos (Yellow Pages o últimamente denominado Network Information
-4-
DAC/UPC Report No. RR-93/08
System “NIS”) son tan solo algunas de las aplicaciones basadas en ese modelo y que se han
añadido a los sistemas operativos tradicionales.
Usando este enfoque se consigue modularidad, flexibilidad y transparencia de la red.
Estas características resultan imprescindibles ante la serie de cambios tecnológicos que se han
producido desde la aparición de UNIX. La modularidad permite una fuerte estructuración de
las funcionalidades requeridas. Esta estructuración junto con la transparencia de la red
permiten una fácil distribución del sistema sobre máquinas conectadas mediante redes locales.
La arquitectura microkernel hace posible disponer de sistemas informáticos hechos a
medida, la denominada “tailorability”. Por ejemplo versiones de UNIX como System V, y BSD
pueden simplemente tratarse como diferentes aplicaciones que se adquieren por separado y,
potencialmente, pueden ejecutarse a la vez que los otros entornos. Y no sólo es posible mezclar
diferentes versiones de UNIX entre sí, sino también es factible tener sistemas operativos como
DOS coexistiendo con UNIX.
Console
Mach 3.0
DOS
Network
Xterm
Xterm
OSF/1
BSD
Coexistencia de subsistemas
Otro punto interesante a tener en cuenta es la portabilidad de los sistemas operativos.
Gran parte del código que constituye UNIX es independiente del repertorio de instrucciones de
la máquina, arquitectura y configuración. Por tanto si se identifica qué código es dependiente
de la arquitectura y cuál no, disponer de un sistema operativo como UNIX para una nueva
máquina requiere un menor esfuerzo que usando el tradicional enfoque monolítico de un
sistema operativo. La relativa estandarización y aislamiento que ofrece el interfaz del
microkernel permite aprovechar el mismo código para arquitecturas variopintas tales como
monoprocesadores o multiprocesadores, “embedded systems” y arquitecturas en red.
La portabilidad descrita hasta ahora se refiere estrictamente al código fuente del sistema
operativo. En general se ha de compilar y montar este código con el microkernel. Sin embargo
la industria informática necesita cada vez más una mayor portabilidad, estandarización y
compatibilidad en todos los ámbitos. Se necesitan interfaces compatibles no sólo a nivel de
programas de aplicación sino también a nivel de drivers de dispositivos y de otros
componentes. En muchos casos además se precisa compatibilidad binaria del código. Estos
aspectos afectan a la estructura y organización de los sistemas operativos. Con el estudio
-5-
DAC/UPC Report No. RR-93/08
detallado de algunos microkernels veremos como se han solucionado estos puntos: Mach
ofrece el mecanismo de transparent library de cara a ofrecer esta compatibilidad binaria.
Chorus, por otro lado, introduce los denominados “supervisor actors”, la adición de servidores
de manera dinámica, sin tener que parar la máquina, y el encadenamiento de manejadores de
interrupciones (“handlers”) para el servicio de los dispositivos periféricos.
La extensibilidad del propio sistema operativo así como el desarrollo de nuevas
versiones, e incluso de otros sistemas diferentes, se facilita de manera sustancial puesto que
éstas pueden construirse y depurarse junto con las versiones ya existentes. La nueva versión se
verá simplemente como un subsistema diferente. Los errores que se produzcan en la fase de
desarrollo no tienen por qué influir en el resto de programas que se ejecutan sobre la máquina.
Las barreras tradicionales al soporte de tiempo real desaparecen bajo el enfoque de los
microkernels puesto que el mismo kernel no precisa mantener bloqueos de las interrupciones
por tanto tiempo y porque los servicios de UNIX pueden desbancarse.
User
binary
UNIX
Debuger
User
binary
UNIX
SVR4 server
(secundario)
OSF/1 server
(principal)
Mach Kernel
Hardware
Extensibilidad y escalabilidad
Es posible obtener sistemas tolerantes a fallos de manera más sencilla. En la transmisión
de mensajes el microkernel permite duplicar servidores que residirán en máquinas diferentes,
de modo que la desaparición de algún servidor y la aparición de su relevo no tienen por qué ser
percibidos por los usuarios del sistema.
Una vez vistas todas estas características ventajosas, también debemos tener en cuenta
que los sistemas basados en la arquitectura microkernel se enfrentan a una serie de retos puesto
que deben competir con las versiones monolíticas de los sistemas operativos que ellos
soportan. Podríamos plantearnos si resulta posible que un sistema basado en la arquitectura
microkernel ofrezca el mismo rendimiento que un sistema monolítico. La elegancia y
flexibilidad del modelo cliente-servidor exige un coste en el manejo de los mensajes y en el
cambio de contexto. Si este coste es excesivamente alto limitará su aceptación por parte de la
industria informática.
-6-
DAC/UPC Report No. RR-93/08
4.
ARQUITECTURAS MICROKERNEL MAS IMPORTANTES
A continuación describiremos las principales características de los microkernels más
conocidos. Algunos de ellos son tan solo conocidos en el mundo académico, otros sin embargo,
están en plena fase de comercialización.
4.1. V KERNEL
V kernel, desarrollado en Stanford en 1985, puede considerarse el primero de los
microkernels actuales en cuanto a su filosofía de diseño: ofrecer una plataforma base
(“backplane software”, en palabras de sus diseñadores) sobre la cual poder desarrollar
diferentes sistemas según las diferentes necesidades de los usuarios.
Sobre él, V System es el sistema operativo realizado a base de servidores y librerías de
emulación de UNIX, para hacerlo compatible con el software existente.
Se pensó para distribución en redes locales (LAN) por lo que el mecanismo y los
protocolos de comunicación entre procesos están incluidos en el kernel, por cuestiones de
eficiencia. Las abstracciones que exporta el kernel están todavía a caballo entre las de los
sistemas operativos tradicionales y los microkernels; por eso tiene todavía procesos, pero habla
de “grupo de procesos”, o teams, cuando trabajan con memoria compartida, y les llama
“procesos ligeros” (threads, en definitiva).
4.2. MACH
Mach es un kernel multiprocesador desarrollado en la Carnegie Mellon University a
partir de 1986 y sobre el que se continúa investigando en la actualidad. Mach fue elegido hace
años por la Open Software Foundation como núcleo del sistema operativo OSF-1. Este
microkernel comenzó siendo una modificación de UNIX BSD, añadiéndole nuevas
funcionalidades. Hasta la versión 3.0, no incluida, Mach era un sistema operativo monolítico.
En esta última versión se ha seguido ya la tendencia a construir el sistema como un microkernel
y un servidor del subsistema UNIX.
Además de las abstracciones básicas de task, thread, port y mensaje, Mach ofrece objetos
de memoria (porciones de datos que pueden ser mapeadas en una task para su posterior
manipulación). Los ports de Mach representan objetos, de manera que acceder a un objeto es
enviar un mensaje al port que lo identifica. En Mach los mecanismos de comunicación entre
procesos y la gestión de memoria están fuertemente integrados, habiéndose optimizado el
envío de mensajes de gran tamaño, por una parte, y la gestión de la memoria virtual, por la
otra.
Para emular los sistemas operativos tradicionales como UNIX, DOS y Macintosh, entre
otros, Mach se ayuda de la transparent library y servidores.
La transparent library es un mecanismo que permite que una llamada al kernel pueda ser
redireccionada fuera de él y convertirse en una llamada a un servidor o, incluso, ser tratada por
la propia librería. El código de esta librería se va heredando entre tasks (procesos UNIX).
Un servidor, en Mach, consiste en una task con varios flujos de ejecución (threads), que
realiza las funcionalidades del sistema operativo al que emule. En versiones más recientes, el
sistema operativo está incluso formado por diferentes servidores, cada uno representando una
funcionalidad concreta (el gestor de memoria, el sistema de ficheros, el planificador de
procesos); así se consigue una mayor explotación del paralelismo proporcionado por el
-7-
DAC/UPC Report No. RR-93/08
microkernel y, en determinados casos, facilitan la distribución, aunque Mach no ha sido
diseñado como sistema distribuido.
Estos servidores pueden coexistir, de manera que estén ejecutándose a la vez aplicaciones
sobre diferentes sistemas operativos. En la actualidad, existen sobre Mach servidores de UNIX
4.3BSD, MS-DOS, Macintosh, OSF/1 y System V4.2, además de servidores generales como
gestores externos de memoria, planificadores de procesadores y servidores de red.
➂
Transparent
Library
➃
Unix server
BSD service threads
Inode pager
➄
User
binary
UNIX
Device threads
➁
➀
Mach Kernel
Hardware
Emulación de UNIX mediante el servidor y la Transparent Library
Tanto los fuentes del microkernel como toda la documentación asociada, incluidos
manuales y reports de investigación, pueden obtenerse a través de ftp anonymous a
mach.cs.cmu.edu.
4.3. CHORUS
Chorus1 es un microkernel desarrollado desde 1986, en el INRIA (Francia), pensado
inicialmente para sistemas de máquinas distribuidas. Uno de los objetivos primordiales de su
desarrollo fue el desplazar el mayor número posible de funciones fuera del núcleo, y demostrar
que UNIX podía construirse como un conjunto de módulos que no compartían memoria. La
versión actual mantiene muchos de los objetivos de las versiones iniciales y añade algunos más
como gestión de sistemas en tiempo real y la comercialización, ya que al poco tiempo el equipo
investigador se constituyó en su propia empresa Chorus Systèmes. El producto, que continúa
en evolución para adaptarse a las necesidades de los usuarios y en los últimos años Chorus ha
sido elegido por AT&T como núcleo para su versión microkernel de UNIX.
El concepto de task en Chorus se denomina actor, el resto de abstracciones fundamentales
tienen nombres idénticos. Sin embargo la semántica asociada a algunas de estas abstracciones
varía sustancialmente. Por ejemplo el concepto de port representa un servicio, identificado de
manera única en todo el sistema distribuido. De este modo, se facilita la migración de servicios
1. Chorus y Chorus-MiX son marcas registradas de Chorus Systèmes.
-8-
DAC/UPC Report No. RR-93/08
de una máquina a otra, la replicación de servicios en diferentes máquinas (mediante los
llamados grupos de ports) y la transparencia de localización de servicios por parte de los
usuarios.
Chorus/MiX, que es el subsistema UNIX compatible binario con Santa Cruz Operation,
está formado por cuatro tipos servidores, cada uno de ellos especializado en la gestión de
procesos, ficheros, dispositivos y “sockets”. Cada servidor se implementa como un actor con
varios threads, puesto que éste posee su propio contexto puede residir en cualquier máquina de
la red de comunicaciones y por el mismo motivo puede “debugarse” sin afectar al resto del
subsistema. La forma habitual de pedir un servicio a uno de estos servidores es mediante
mensaje con lo cual se obtiene transparencia de la red. Sin embargo, y de cara a soportar
compatibilidad binaria con UNIX, algunos de estos servidores (el gestor de procesos en
concreto) ofrecen un interfaz de traps.
Una última característica a resaltar es la posibilidad de configurar un sistema a medida,
de modo que se cargen solo los servidores necesarios en cada máquina. De todos modos, si
fuere necesaria una ampliación de funcionalidades, Chorus permite cargar cualquier servidor
sin tener que parar la máquina. Estos servidores se cargan en espacio de memoria privilegiado
y son capaces de conectar rutinas de atención a los eventos hardware del ordenador, rutinas
que se encadenan con las ya existentes. Mach por el contrario tiene todos los “drivers” de
dispositivos montados con el kernel y requiere recompilar para añadir la capacidad de manejar
nuevos dispositivos.
aplicaciones y utilidades UNIX
Unix System Calls
Device
Manager
File
Manager
Process
Manager
Socket
Manager
Chorus Nucleus Interface
Chorus Nucleus
Hardware
Estructura de Chorus/MiX V3
Puesto que Chorus Systèmes es una empresa privada, no es posible obtener el sistema si
no es pagando una licencia. Sin embargo es posible obtener información diversa, artículos
fundamentalmente, a través de ftp anonymous en opera.chorus.fr.
4.4. PAROS
Diseñado en la Universitat Politècnica de Catalunya, Paros difiere esencialmente de los
microkernels anteriores, porque se ha realizado para multiprocesadores de memoria
-9-
DAC/UPC Report No. RR-93/08
distribuida. En concreto, su desarrollo inicial ha sido sobre transputers, aunque es portable a
cualquier otro tipo de procesador que trabaje con el mismo paradigma de memoria.
El modelo de proceso, está dividido en tres niveles: Ptask (parallel task), que es la unidad
de contaje y de asignación de recursos de la aplicación; task, que es la unidad de asignación de
memoria (cada task representa un único espacio de direcciones), unidad también de
paralelismo; y el thread que es la unidad de ejecución, flujo de control que se ejecuta
secuencialmente y permite concurrencia. Una Ptask puede estar formada por varias tasks y
cada una de éstas, a su vez, puede contener varios threads.
El paradigma de comunicación también es original, realizando, a partir de canales, el
dual de la comunicación a través de memoria compartida; éstos permiten una comunicación
optimizada entre tasks pertenecientes a una misma Ptask. Entre Ptasks, la comunicación es por
ports.
El entorno operativo UNIX se consigue en Paros a partir de librerías, que permiten
trabajar en un medio compatible. No se puede decir propiamente que, de momento, tenga un
subsistema UNIX.
Paros es un software de libre distribución a través de ftp.ac.upc.es, de donde puede
obtenerse además toda la documentación necesaria.
Ptask
Task
Thread
Channel
Port
Parallel application
Parallel service
Paros abstractions.
5.
EL FUTURO DE LOS MICROKERNELS
Hemos visto que las arquitecturas microkernel proporcionan una sólida base para
solventar las necesidades actuales en la construcción de sistemas operativos, ofrecen un
“hardware virtual” o “backplane software”, que sirve como plataforma para el desarrollo y
transporte de sistemas operativos y de entornos de trabajo en general.
Esta arquitectura mantiene las mejores características de la herencia de UNIX
encuadradas en una nueva generación de entornos informáticos:
- 10 -
DAC/UPC Report No. RR-93/08
- reusabilidad de componentes del sistema.
- fuerte concepto de estructuración que favorece la distribución.
- transparencia de la red.
- soporte a la de escalabilidad de sistemas.
- posibilidad de ofrecer tolerancia a fallos.
- compatibilidad con interfaces estándar y sistemas abiertos.
Aunque durante una década se ha estado trabajando en la creación, definición y
refinamiento de los objetos que soportan los microkernels, así como las interfaces que ofrecen
para manejarlos, vemos que existen aún temas en los que se debe profundizar en los próximos
años.
Se ha llegado a un conjunto mínimo de abstracciones definidas de manera que, por un
lado permitieran máxima flexibilidad y adaptación a los niveles superiores, y por otro
ofrecieran la robustez adecuada. Esto ha llevado a códigos fuente del orden de casi dos
megabytes, en contra de la idea que podría suponer. Este crecimiento algo desmesurado podría
sugerir la necesidad de comenzar de nuevo para definir las operaciones y objetos de manera
más sencilla aún.
Por lo que respecta a las arquitecturas multiprocesador con memoria compartida,
podemos afirmar que se ha alcanzado un consenso mundial en cuanto a los conceptos básicos
que se han de ofrecer y gestionar; ahora la investigación ya puede ir más allá y plantearse
objetivos de eficiencia en la planificación de los recursos. Sin embargo la definición de la
arquitectura microkernel en el ámbito de los multiprocesadores con memoria distribuida
requiere aún seguir un proceso de maduración para alcanzar una solidez y estabilidad
comparables a la arquitectura hardware mencionada anteriormente.
Si bien una característica destacable de los microkernels es la portabilidad, existen
problemas relacionados con ésta que deben aún resolverse. En la actualidad es posible
transportar subsistemas a arquitecturas hardware dispares, sin embargo no resulta posible
transportar subsistemas entre arquitecturas microkernel diferentes. No está tan claro que un
subsistema UNIX construido para el microkernel Mach sea portable al microkernel Chorus, o
viceversa, con sólo unos pequeños retoques. Por tanto es necesario y deseable trabajar en la
estandarización de estas plataformas.
La última batalla por ganar es la de lograr la cooperación de los diseñadores de
microkernels con los programadores de aplicaciones paralelas; de forma que los primeros sean
capaces de ofrecer a los últimos todo el potencial que actualmente han de obtener directamente
del hardware, unido a la flexibilidad que ofrece la arquitectura microkernel.
6.
BIBLIOGRAFIA
[1]
Michel Gien, “Micro-kernel design “. Unix review, vol. 8 No. 11.
[2]
Marc Guillermont, et al. “A Second-Generation Micro-Kernel Based Unix; Lessons in
Performance and compatibility”. USENIX Winter’91. Dallas TX.
[3]
Mike Accetta, et al., “Mach: A New Kernel Foundation For Unix development“.Proc.
of USENIX Summer'86 Conference, Atlanta, GA (9-13 June 1.986). pp. 93-112.
[4]
Chorus Systèmes. “Overview of the Chorus Distributed Operating System”. Chorus
Systèmes Technical Report CS/TR-90-25.1.
- 11 -
DAC/UPC Report No. RR-93/08
[5]
Chorus Systèmes. “Chorus Kernel v3.3 Specification and Interface”. Chorus
Systèmes Technical Report CS/TR-90-58.
[6]
Jesús Labarta, Judit Jiménez, “BOS interface”. Esprit Project 2528, Supernode II.
Technical Report UPC-019-9103. Universitat Politécnica de Catalunya. Barcelona
(Spain) 1.991.
[7]
Jesús Labarta, et al. “Kernel Evaluation”. Esprit Project 2528, Supernode II.
Technical Report UPC-018-9101. Universitat Politécnica de Catalunya. Barcelona
(Spain) 1.991.
[8]
Marc Rozier et al. “Overview of the Chorus Distributed Operating Systems “.
Technical report CS/TR-90-25, Chorus systemes, April 1990.
[9]
Vadim Abrossimov, Marc Rozier and Michel Gien. “Virtual Memory
Management in Chorus”. Technical report CS/TR-89-30.1, Chorus Systèmes,
May 1989.
[10]
Vadim Abrossimov, Marc Rozier and Marc Shapiro. “Generic Virtual Memory
Management for operating systems kernels”. Technical report CS/TR-89-18,
Chorus Systèmes, September 1989.
[11]
Vadim Abrossimov, François Armand, Maria Inés Ortega. “A Distributed
Consistency server for the Chorus System”. Technical report CS/TR-91-91,
Chorus Systèmes, March 1992.
[12]
Gerald Malan, Richard Rashid, David Golub, Robert Baron. “DOS as a Mach 3.0
Application”.
[13]
José Rogado, Michael Condict, Philippe Bernadat, Simon Patience, François
Borbon del Places. “The OSF/1 server: implementing a UNIX server using
micro-kernel technology (Extended Abstract”.
[14]
David R. Cheriton. “The V distributed System”. Communications of the ACM,
vol. 31, num. 3, Marzo 1988.
- 12 -