VIE, 9 / ABR / 2010
La lucha por el Microkernel
En los sistemas operativos actuales, el kernel o núcleo del sistema, que constituye el puente entre el hardware y las aplicaciones que utilizamos en nuestras computadoras, suele incluir elementos que no son estrictamente necesarios para su funcionamiento. En otras palabras, los que usamos habitualmente no se corresponden con las pautas del diseño minimalista y son más bien un producto quimérico. Si bien es cierto que nuestras computadoras funcionan, y muy bien, muchos científicos de la computación piensan que los diseños utilizados no son los más eficientes ni seguros, y desde hace más de 20 años promueven una propuesta alternativa: el microkernel.
UNIX, SIEMPRE UNIX
Como suele suceder, para entender un tema complejo lo mejor es buscar en sus raíces, y en computación eso suele significar revisar la historia de UNIX. Entre los años ‘60 y hasta mediados de los ’70, las computadoras tenían recursos muy limitados, por lo que había una necesidad de que este operativo fuese particularmente pequeño y eficiente, y limitara su kernel a funciones básicas e indispensables.
Hasta ese entonces, las limitaciones del hardware mantenían la simplicidad en el diseño, pero pronto los equipos se volvieron más poderosos, y los desarrolladores aprovecharon la oportunidad para hacer crecer al kernel. Fue la variante de UNIX de Berkeley (más tarde conocida como BSD) la primera en implementar dentro del núcleo elementos como los sistemas de archivos, las redes TCP/IP, la comunicación entre los procesos y, en particular, los controladores para la gran variedad y cantidad de dispositivos que comenzaron a aparecer en aquella época. Con este acercamiento que mencionamos, la variante de Berkeley dio inicio a lo que hoy conocemos como kernels monolíticos.
Este diseño de kernel monolítico es útil por su sencillez: en tanto la computadora que lo corra tenga los recursos necesarios, la práctica más simple consiste en meter todo dentro del núcleo del sistema y que éste se haga cargo. De esta forma, la división que existe entre el espacio del kernel y el del usuario es difusa.
NO TODO BRILLA BAJO EL SOL
Durante los siguientes 20 años, el kernel monolítico fue el gran rey de la computación. No hubo sistema operativo importante que no contara con este tipo de núcleo: DOS en todas sus variantes, la serie 9x de Windows, Mac OS, Linux, toda la familia BSD –naturalmente- y varios otros menos conocidos.
Cuestionar esa forma de diseñar estos operativos era raro en esa época. Sin embargo, había científicos (encabezados por el alemán Jochen Liedtke) que le encontraban defectos. Para ponerlo en términos sencillos, el principal problema con un kernel es que corre en un modo privilegiado, ya que debe tener acceso irrestricto a todos los recursos del sistema. Por lo tanto, y siguiendo el adagio de que todo código nuevo introduce bugs nuevos, cuanto más código y servicios se incluyan en el kernel, más posibilidades se dan de que haya un fallo o de que se produzca la explotación de una vulnerabilidad por parte de un hacker.
La propuesta de los partidarios del microkernel consiste en que el núcleo vuelva a ser minimalista y se encargue de lo estrictamente necesario: asignación de los recursos de la computadora (memoria y CPU) y comunicación entre los procesos. Todo lo demás se encontraría dentro del territorio asignado al usuario, el cual estaría claramente dividido para evitar los problemas antes mencionados.
Además en la nota:
– El microkernel, en mayor profundidad
– A medio camino, el Kernel híbrido
– GNU/HURD: ¿gran sorpresa o vaporware?
– El debate Torvalds-Tanenbaum
¡Y mucho más!
[revista id=”pwr078″]
En los sistemas operativos actuales, el kernel o núcleo del sistema, que constituye el puente entre el hardware y las aplicaciones que utilizamos en nuestras computadoras, suele incluir elementos que no son estrictamente necesarios para su funcionamiento. En otras palabras, los que usamos habitualmente no se corresponden con las pautas del diseño minimalista y son más bien un producto quimérico. Si bien es cierto que nuestras computadoras funcionan, y muy bien, muchos científicos de la computación piensan que los diseños utilizados no son los más eficientes ni seguros, y desde hace más de 20 años promueven una propuesta alternativa: el microkernel.
UNIX, SIEMPRE UNIX
Como suele suceder, para entender un tema complejo lo mejor es buscar en sus raíces, y en computación eso suele significar revisar la historia de UNIX. Entre los años ‘60 y hasta mediados de los ’70, las computadoras tenían recursos muy limitados, por lo que había una necesidad de que este operativo fuese particularmente pequeño y eficiente, y limitara su kernel a funciones básicas e indispensables.
Hasta ese entonces, las limitaciones del hardware mantenían la simplicidad en el diseño, pero pronto los equipos se volvieron más poderosos, y los desarrolladores aprovecharon la oportunidad para hacer crecer al kernel. Fue la variante de UNIX de Berkeley (más tarde conocida como BSD) la primera en implementar dentro del núcleo elementos como los sistemas de archivos, las redes TCP/IP, la comunicación entre los procesos y, en particular, los controladores para la gran variedad y cantidad de dispositivos que comenzaron a aparecer en aquella época. Con este acercamiento que mencionamos, la variante de Berkeley dio inicio a lo que hoy conocemos como kernels monolíticos.
Este diseño de kernel monolítico es útil por su sencillez: en tanto la computadora que lo corra tenga los recursos necesarios, la práctica más simple consiste en meter todo dentro del núcleo del sistema y que éste se haga cargo. De esta forma, la división que existe entre el espacio del kernel y el del usuario es difusa.
NO TODO BRILLA BAJO EL SOL
Durante los siguientes 20 años, el kernel monolítico fue el gran rey de la computación. No hubo sistema operativo importante que no contara con este tipo de núcleo: DOS en todas sus variantes, la serie 9x de Windows, Mac OS, Linux, toda la familia BSD –naturalmente- y varios otros menos conocidos.
Cuestionar esa forma de diseñar estos operativos era raro en esa época. Sin embargo, había científicos (encabezados por el alemán Jochen Liedtke) que le encontraban defectos. Para ponerlo en términos sencillos, el principal problema con un kernel es que corre en un modo privilegiado, ya que debe tener acceso irrestricto a todos los recursos del sistema. Por lo tanto, y siguiendo el adagio de que todo código nuevo introduce bugs nuevos, cuanto más código y servicios se incluyan en el kernel, más posibilidades se dan de que haya un fallo o de que se produzca la explotación de una vulnerabilidad por parte de un hacker.
La propuesta de los partidarios del microkernel consiste en que el núcleo vuelva a ser minimalista y se encargue de lo estrictamente necesario: asignación de los recursos de la computadora (memoria y CPU) y comunicación entre los procesos. Todo lo demás se encontraría dentro del territorio asignado al usuario, el cual estaría claramente dividido para evitar los problemas antes mencionados.
Además en la nota:
– El microkernel, en mayor profundidad
– A medio camino, el Kernel híbrido
– GNU/HURD: ¿gran sorpresa o vaporware?
– El debate Torvalds-Tanenbaum
¡Y mucho más!
[revista id=”pwr078″]