Sistema Operativo GNU/HURD
Total Page:16
File Type:pdf, Size:1020Kb
Sistema Operativo GNU/HURD Jose´ Mariscal Prieto http://www.uco.es/ i72maprj 14 de noviembre de 2003 Capıtulo´ 1 Introduccion´ 1.1. Historia La historia sobre Sistemas Operativos comienza entorno a los anos˜ 50 se desarrollan Sistemas Operativos Monol´ıticos. Se trata de un diseno˜ despreocupado sin estructura. Es- ta falta de estructura hace que necesiten hacerse mejores sistemas un poco mas complejos, necesitando una nueva estructura y organizacion.´ Sobre los anos˜ 70 se comienzan a desar- rollar los primeros sistemas operativos multiusuario como como Multics y despu´esUNIX, en esta epoca´ la mayor´ıa de programadores compart´ıan el codigo´ fuente, lo que hace que el desarrollo de una aplicacion´ mejore notablemente. Ademas´ surgen nuevas tecnicas´ de programacion´ como la modularidad. Por otra parte estos sistemas necesitaban grandes y costosas maquinas,´ con lo cual solo estaban accesibles a un numero reducido de empresas y alguna universidad. A finales de esta decada´ y durante la decada´ de los 80, cambia el modelo de mercado y las empresas empiezan a producir sistemas cerrados sin distribuir el codigo,´ como por ejemplo Digital en sus PDP, para impedir el uso de sus propias tecnolog´ıas en otros sis- temas. Las computadoras de esta epoca´ ten´ıan cada una su propio S.O. lo que imped´ıa el desarrollo de una tecnolog´ıa comun,´ as´ı como el desarrollo de drivers para una determina- da arquitectura 1. 1.1.1. Proyecto Mach Hace algunos anos,˜ entorno a 1.985 un grupo de personas de la Universidad de Carnegie Melon desarrollan un micronucleo´ al que denominan Mach. La idea es basicamente´ crear un nucleo´ de sistema operativo en el que partes que estan´ integradas en el nucleo,´ pasen a estar en el entorno de usuario, de esta forma se consigue un sistema con un mejor diseno˜ que los nucleos´ monol´ıticos. El proyecto acabo en 1994 al moverse las v´ıas de desarrollo de sistemas operativos en otras direcciones, de lo cual ha tenido una gran culpa que la mayor´ıa de los nucleos´ que se han desarrollado desde entonces sean monol´ıticos. 1Es curioso como actualmente esto ocurre con algunos fabricantes de Hardware y Microsoft. 1 CAPITULO´ 1. INTRODUCCION´ 2 1.1.2. Proyecto GNU Entre todo esto Richard Stallman un programador del MIT en el laboratorio de In- teligencia Artificial fue uno de los que trabajaron desarrollando aplicaciones y sistemas en los anos˜ 70. Al llegar la epoca´ de los 80 tubo un problema al querer imprimir en una impresora con drivers propietarios para cierto sistema, por lo que solicito´ que le facilitaran informacion´ para hacer drivers para otra plataforma software para hacerla funcionar, no pudo hacer nada. Enojado el 27 septiembre de 1983 decidio´ anunciar la creacion´ de un nue- vo sistema llamado GNU (libre), una alternativa a los sistemas UNIX de pago, bastante caros por esta epoca.´ Aun´ as´ı el concepto de Software Libre no quedo´ definido hasta enero del ano˜ siguiente: La libertad de usar el programa, con cualquier proposito´ (libertad 0). La libertad de estudiar como´ funciona el programa, y adaptarlo a tus necesidades (libertad 1). El acceso al codigo´ fuente es una condicion´ previa para esto. La libertad de distribuir copias, con lo que puedes ayudar a tu vecino (libertad 2). La libertad de mejorar el programa y hacer publicas´ las mejoras a los demas,´ de modo que toda la comunidad se beneficie. (libertad 3). El acceso al codigo´ fuente es un requisito previo para esto. Entiendase´ que es un asunto referido a la libertad en cuanto a los usuarios y desar- rolladores pueden hacer del codigo´ y no con su precio. Se confunde por el ingles´ (free) que significa tanto libre como gratis. Al tener este concepto mas claro Stallman funda la Fun- dacion´ para el Desarrollo de Software Libre 2 Mientras se comenzo´ a desarrollar software para este sistema GNU la parte del nucleo,´ que actualmente se conoce como GNU/HURD, se estaba retrasando por lo que decidio´ uti- lizarse un nucleo´ ya existente como Linux en el sistema GNU. 1.2. Breve historia de Hurd La historia de HURD es un poco enrevesada, al principio en el ano˜ 1986 el nucleo´ que se estaba desarrollando para GNU era el TRIX, que fue desarrollado en el MIT de donde proven´ıa Stallman. En diciembre de ese mismo ano˜ la FSF contacta con el profesor Rashid de la universidad de Carnegie-Mellon que estaba trabajando en el desarrollo del nucleo´ Mach. El trabajo consistir´ıa en usar procedimientos de Mach los cuales servir´ıan para ar- reglar o mejorar TRIX. Hasta 1990 no se hace desarrollo importante entorno al nucleo,´ por lo que se llega a adoptar el nucleo´ Mach para desarrollar lo que se conoce como HURD. GNU decide utilizar Linux como nucleo´ para funcionar sus aplicaciones, debido al invia- bilidad de utilizar HURD por se demasiado inestable. Desde entonces hasta ahora se ha 2Free Software Foundation, a la que nos referiremos como FSF CAPITULO´ 1. INTRODUCCION´ 3 trabajado en el desarrollo de HURD basandose´ en la version´ 3.0 de dicho nucleo,´ actual- mente se esta planteando mejoras de diseno˜ en la version´ 4.0 pero todav´ıa no esta bien definida. Capıtulo´ 2 Micronucleo´ 2.1. Micronucleo´ El micronucleo´ surge como una nueva forma de organizacion´ para un sistema operativo, es un termino algo tedioso de entender ya que puede no ser relativo a su tamano,˜ pero si a su diseno.˜ Alcanzo´ gran popularidad gracias a Mach, aunque existen otros como ,Minix, RC4000, Amoeba, Chorus y los basados en Windows NT (NT, 2000, XP y 2003). En los sistemas monol´ıticos la mayor´ıa de drivers se incluyen dentro de este 1, surge la idea de separar estas partes y ponerlas en el contexto de usuario mediante el uso de Servidores. De manera que las funciones basicas´ del nucleo´ son las que deben permanecer y las demas´ se implementan en el contexto de usuario. Esta implementacion´ de SO hace relativamente sencilla la portacion´ a diferentes arquitecturas como Alpha, X86 y otras. La principal diferencia es el sistema de ficheros que en Unix a permanecido dentro del nucleo,´ ahora esto cambia y se implementa como un servidor de ficheros que se ejecuta en el contexto de usuario como un proceso mas. 2.2. Comparativa Micronucleo - Nucleo´ Monolıtico´ En esta seccion´ examinaremos cuales son las partes principales de un sistema Monol´ıtico a un Micronucleo´ y como supera el Micronucleo´ algunas problematicas´ rela- tivas al diseno˜ de un sistema Monol´ıtico. Esta nueva arquitectura tiende a reemplaza los Sistemas Operativos en capas verti- cales por la horizontal en la que cada capa horizontal o algunas se implementan como servicios fuera del nucleo.´ 1Por ejemplo sistemas de ficheros como ext2 se incluyen dentro del nucleo´ 4 CAPITULO´ 2. MICRONUCLEO´ 5 2.2.1. Definiciones Antes de hacer la comparativa es necesario explicar dos terminos´ importantes: Ejecucion´ Modo Usuario Ejecucion´ Modo Nucleo´ La ejecucion´ en modo usuario no necesita funcionalidades del nucleo,´ por ejemplo los programas de usuario. Pero cuando un programa necesita acceder al hardware lo hace por medio de un mensaje o llamada al nucleo´ y este es quien se encarga de ejecutarla, a esto se denomina ejecucion´ en modo nucleo.´ CAPITULO´ 2. MICRONUCLEO´ 6 La imagen anterior muestra un nucleo´ monol´ıtico por capas, la representacion´ es muy basica,´ aunque vamos a comentar los aspectos que nos atanen.˜ Normalmente en Unix se diferencian dos capas principales las que dependen del Hardware las que no. Entre las que dependen del hardware se encuentran: CAPITULO´ 2. MICRONUCLEO´ 7 Memoria Virtual, se encarga de la gestion´ de la memoria a bajo nivel. Manejo de dispositivos, interrupciones. La parte que no es dependiente del Hardware es comun´ en casi todos los sistemas opera- tivos monol´ıticos y sus principales componentes o funciones son: Llamadas del sistema. Planificacion´ de procesos. Manejo de senales.˜ Sistema de archivos. Esta parte aunque existan modificaciones no supone un trauma para crear nuevas fun- cionalidades o adaptarlas, mientras que un cambio a nivel del Hardware es necesita cam- biar estructuras y empezar a reescribir codigo´ o empezar desde 0. Los sistemas Micronucleo´ por contra intentan que esto sea lo menos traumatico´ posible y hacer que se modifique lo menos posible el nucleo.´ Existen una serie de problemas que son inherentes al diseno˜ monol´ıtico: 1. Si se modifica el Hardware por lo general es necesario recompilar el nucleo´ para poder disponer de las funcionalidades, un ejemplo de esto podemos verlo en Linux. 2. Si se necesita alguna funcionalidad como un nuevo sistema de ficheros es necesario recompilar el nucleo´ para que lo soporte o en caso de que se puedan utilizar modulos,´ cargar el modulo´ 2. 2Esto tiene cierta similitud con los servicios en HURD y la posibilidad de usar o no usar por ejemplo un servidor de ficheros CAPITULO´ 2. MICRONUCLEO´ 8 Como se puede apreciar de la imagen anterior los componentes que estaban dentro del nucleo´ en los sistemas monol´ıticos estan´ ejecutandose´ como procesos en modo usuario. La comunicacion´ entre estos servidores es as´ıncrona y se realiza por medio de paso de mensajes. El micronucleo´ se encarga de gestionar la comunicacion´ entre los servidores y los programas que llamaremos cliente que serian los procesos de usuario tal y como los CAPITULO´ 2. MICRONUCLEO´ 9 conocemos en UNIX. 2.3. Implementacion´ El nucleo´ Mach se encarga tambien´ de gestionar los manejadores de dispositivos y la memoria virtual. Para poder hacer esto tenemos dos alternativas: 1. Implementar el manejador del dispositivo f´ısico fuera del nucleo.´ 2. Anadir˜ funcionalidades al nucleo´ para que provea de mecanismos para que los servi- dores puedan acceder.