Вы находитесь на странице: 1из 21

Microkernels - Introducción

Sistemas Operativos 2 – Usac 2009


Contenido

 Definición
 Características
 Primera generación
 Ventajas potenciales
 Problemas
 L4 - Segunda generación
 Conclusiones
Microkernel

 Un kernel que solo provee funciones básicas


para los demas servidores:
 Comunicación de procesos (IPC)
 Manejo de threads
 Espacios de direcciones
 Manejo de identificadores unicos

 Todo lo demas se gestiona


independientemente
Ejemplo

Administradores de
Drivers Programas de usuario
memoria

Manejo de hilos
Mapeo de espacios
E UID's
De direcciones
IPC
Espacios de direcciones

 Un mapeo que asocia una pagina virtual hacia


una pagina fisica (ver VAS arqui 1)
 Los microkernel proveen al menos
 Map
 Grant
 Flush
IPC

 Compartir datos entre dos procesos (duh!)


 IPC: Una via
 RCP (remote procedure call) logrando round trip

 Threads e IPC van de la mano


IPC Agreement

 El emisor decide si envia informacion y que


informacion enviar
 El receptor decide si recibir la información y
como la interpreta

Mensaje a hilo 2:
Enviar a hilo 2
Hola compa

Hilo 1 Hilo 2
Manejo de interrupciones

 En un microkernel las interrupciones son a


traves de mensajes e IPC
 El microkernel interrumpe con mensajes los
cuales no administra
 En lugar de eso se comunica con la capa de
usuario y el driver lo administra (he aqui donde
estan los mensajes)
Control de identificadores unicos

 El microkernel debe asignar identificadores


unicos para comunicaciones seguras.
 El emisor quiere siempre conocer si el receptor
adecuado capto el mensaje
 Y a su ves el receptor quiere saber si el mensaje
vino del emisor correcto
 Mucho mejor que la criptografia ;)
Primeros intentos

 Kernel Mach
 Carnegie Mellon – 1985
 Un creador termino en Microsoft y otro en nextstep
que seria posteriormente Mac OS
 Chorus Kernel
 Chorus Systems – 1987
 HURD (el kernel que jamas termina)
Ventajas

 Flexibilidad
 Muchas aplicaciones pueden ser implementadas
sobre el microkernel
Flexibilidad

 Flexibles
 Administradores de memoria
 Paginadores
 Drivers

 No flexibles
 Caches de primer nivel
 Codigo de procesador
Ventajas

 Flexibilidad
 Muchas aplicaciones pueden ser implementadas
sobre el microkernel
 Seguridad
 Procesos de usuario restringidos al acceso de
recursos del sistema
 Configurabilidad
 Teóricamente se pueden agregar funciones sin
reiniciar (sin embargo ver el caso windows U_U)
Desventajas

 Sobrecarga de intercambios
Sobrecargas

 Alrededor de 800 ciclos para cambiar de


espacio
 Con un costo tan bajo de Q por Flops ya no es tan
importante
Sobrecargas

 Kernel-Usuario: Alrededor de 800 ciclos para


cambiar de espacio
 Direcciones
 El cambio de paginas y segmentos al no estar
integrado suele ser sobrecargado derivando en un
mal funcionamiento
 IPC
 Los primeros microkernels y las llamadas
consumian 115 microsegundos y las llamadas de
Unix tan solo 18 microsegundos
Gasto de memoria

 Por ejemplo Mach utilizaba mayor carga por


instrucción que Unitrix (un kernel molotitico)
 Y esto es porque se necesita más cache para
comunicar servidores independientes
Un proyecto prometedor - L4

 Asume que los microkernel son dependientes


de procesador
 Introdujo abstracciones como:
 Paso de mensajes cortos
 Copia de mensajes largos
 Planificación perezosa (lazy scheduling)
Un proyecto prometedor - L4

 Seguridad mejorada
 Jefes y clanes
 Los hijos pueden enviar mensajes al jefe o
miembros del clan
 Si se necesitan procesos de otros clanes todo
es a traves del jefe
Un proyecto prometedor - L4
En resumen

 El microkernel supone buena flexibilidad,


seguridad y confianza
 Sin embargo en la practica es bastante
complicado, en especial con sistemas a gran
escala
 L4 es un caso de una buena implementación a
futuro
 Los microkernels aun necesitan investigación
(por favor solicitenlo a la DIGI y Murphy :D)