por
pobrecito hablador
el Martes, 02 Septiembre de 2003, 11:24h
(#212374)
Que usen L4, que además están desarrollando un sistema de ventanas, o el exokernel (no recuerdo el nombre) basado en L4 que va a crear un sistema de ventanas basado en Opengl
Exokernel no tiene nada que ver con L4. Mi proyecto de fin de carrera se basó en implementar un so sobre L4, así q aqui os saco mas o menos algunos parrafillos de mi PFC para aclarar las cosas ( o liarlas mas :):
Sobre exokernel:
"Este kernel desarrollado en el MIT, no es propiamente un microkernel, pues va más allá en la minimización de funciones, y sus desarrolladores propugnan incluso la eliminación del sistema operativo. La idea se basa en que el sistema operativo proporcione únicamente una multiplexación segura de los recursos (Bastante similar a la de L4). Su filosofía es que la aplicación es la que más conoce como va a necesitar los recursos y por ello debe gestionarla ella. Así. el sistema operativo como tal se implementa en forma de librería en modo usuario, que se enlaza con la aplicación. Con esto podemos tener una librería UNIX, otra WINDOWS, etc."
Sus caracteristicas principales son la de utilizar transferencias de control (algo más bajo de las llamadas ipc de L4, más todabia!) y útilizar downloading de código, es decir, bajar código de usuario a modo kernel y ejecutarlo como una especie de sandboxing (por explicarlo de una forma similar a unix :)
Sobre L4:
L4 es un microkernel de segunda generación desarrollado originalmente por Jochen Liedtke en colaboración con IBM. Sucesor de los sistemas Eumel (1979) y L3 (1987). Su filosofía es que la única función del sistema operativo es la de compartir los recursos de forma segura. Separa los mecanismos (forma de obtener los recursos) de la política (como distribuir estos recursos), que se ejecuta en modo usuario. Actualmente existen bastantes implementaciones de las APIs para diferentes arquitecturas.
Las dos ideas en las que se basa L4 son los hilos y los espacios de direcciones.
En L4 la optimización de las IPC es fundamental, es una comunicación entre espacios de direcciones con menor abstracción que los microkernels de primera generación como MACH. El paso de mensajes de más alto nivel, como por ejemplo las RPC, se implementan en modo usuario.
Otra de las características de L4 es la construcción recursiva del espacio de direcciones. Existe un espacio de direcciones inicial llamado sigma0 que contiene todas las páginas físicas de la máquina. Cuando se crea un espacio de direcciones nuevo, éste pide a sigma0 que le comparta una serie de páginas, a su vez otro espacio de direcciones puede hacer lo mismo con el anterior, etc. Así se construyen los espacios de direcciones. Cada espacio de direcciones puede compartir (map) o asignar (grant) una página a otro. También pueden desasignar una página (unmap) y recursivamente se desasigna de todos los que tuviesen esa página. Para que esto sea seguro y una tarea no pueda desasignar páginas que no posee, se usa la dirección virtual de la página y no la física, de manera que antes se la tienen que haber asignado.
Como L4 basa su filosofía en que todo lo que pueda estar fuera del kernel tiene que estar fuera, los drivers de los dispositivos están fuera del kernel. Para ello mapea los puertos de E/S en el espacio de direcciones (esto depende del arquitectura). Las interrupciones funcionan de forma similar a los fallos de página: Las aplicaciones en modo usuario se asocian a una interrupción (sólo puede haber una, y hasta que no la deje no puede asociarse otra), y cuando ocurre la interrupción el kernel la transforma en un mensaje al hilo que está escuchando la interrupción.
L4 solo tiene 7 llamadas al sistema (12 en la versión Pistachio).
Bueno, con esto espero haber aclarado algo a alguien :), tengo q subir el pfc a mi web algun dia :).
Teneis más información sobre L4 en www.k4ka.org y en http://os.inf.tu-dresden.de/L4/
Y si alguien está interesado en montar un so sobre L4 que me avise que yo tambien lo estoy :D
--
---------
Algún dia encontraré una frase interesante...
¡L4, L4, L4!
(Puntos:0)[OT]: Exokernel y L4
(Puntos:1)( http://barrapunto.com/index.pl?section=mbp-activez | Última bitácora: Martes, 13 Mayo de 2003, 00:42h )
Sobre exokernel:
"Este kernel desarrollado en el MIT, no es propiamente un microkernel, pues va más allá en la minimización de funciones, y sus desarrolladores propugnan incluso la eliminación del sistema operativo. La idea se basa en que el sistema operativo proporcione únicamente una multiplexación segura de los recursos (Bastante similar a la de L4). Su filosofía es que la aplicación es la que más conoce como va a necesitar los recursos y por ello debe gestionarla ella. Así. el sistema operativo como tal se implementa en forma de librería en modo usuario, que se enlaza con la aplicación. Con esto podemos tener una librería UNIX, otra WINDOWS, etc."
Sus caracteristicas principales son la de utilizar transferencias de control (algo más bajo de las llamadas ipc de L4, más todabia!) y útilizar downloading de código, es decir, bajar código de usuario a modo kernel y ejecutarlo como una especie de sandboxing (por explicarlo de una forma similar a unix :)
Sobre L4:
L4 es un microkernel de segunda generación desarrollado originalmente por Jochen Liedtke en colaboración con IBM. Sucesor de los sistemas Eumel (1979) y L3 (1987). Su filosofía es que la única función del sistema operativo es la de compartir los recursos de forma segura. Separa los mecanismos (forma de obtener los recursos) de la política (como distribuir estos recursos), que se ejecuta en modo usuario. Actualmente existen bastantes implementaciones de las APIs para diferentes arquitecturas.
Las dos ideas en las que se basa L4 son los hilos y los espacios de direcciones.
En L4 la optimización de las IPC es fundamental, es una comunicación entre espacios de direcciones con menor abstracción que los microkernels de primera generación como MACH. El paso de mensajes de más alto nivel, como por ejemplo las RPC, se implementan en modo usuario.
Otra de las características de L4 es la construcción recursiva del espacio de direcciones. Existe un espacio de direcciones inicial llamado sigma0 que contiene todas las páginas físicas de la máquina. Cuando se crea un espacio de direcciones nuevo, éste pide a sigma0 que le comparta una serie de páginas, a su vez otro espacio de direcciones puede hacer lo mismo con el anterior, etc. Así se construyen los espacios de direcciones. Cada espacio de direcciones puede compartir (map) o asignar (grant) una página a otro. También pueden desasignar una página (unmap) y recursivamente se desasigna de todos los que tuviesen esa página. Para que esto sea seguro y una tarea no pueda desasignar páginas que no posee, se usa la dirección virtual de la página y no la física, de manera que antes se la tienen que haber asignado.
Como L4 basa su filosofía en que todo lo que pueda estar fuera del kernel tiene que estar fuera, los drivers de los dispositivos están fuera del kernel. Para ello mapea los puertos de E/S en el espacio de direcciones (esto depende del arquitectura). Las interrupciones funcionan de forma similar a los fallos de página: Las aplicaciones en modo usuario se asocian a una interrupción (sólo puede haber una, y hasta que no la deje no puede asociarse otra), y cuando ocurre la interrupción el kernel la transforma en un mensaje al hilo que está escuchando la interrupción.
L4 solo tiene 7 llamadas al sistema (12 en la versión Pistachio).
Bueno, con esto espero haber aclarado algo a alguien :), tengo q subir el pfc a mi web algun dia :).
Teneis más información sobre L4 en www.k4ka.org y en http://os.inf.tu-dresden.de/L4/
Y si alguien está interesado en montar un so sobre L4 que me avise que yo tambien lo estoy :D
---------
Algún dia encontraré una frase interesante...