Sistema de arranque de Unix Alfaro Morales, Carlos. Pretell Vega, Colbert. Pérez Tranca, Cesar. Ticlia De La Cruz, Leandro. Trujillo 29 de mayo de 2009 1. Resumen: El siguiente informe consiste en brindar información al lector acerca de una de las primeras fases de cualquier sistema operativo. Si deseamos aprender acerca de los sistemas operativos, el sistema de arranque es un buen punto por el cual empezar, es por eso que más adelante se detallara de forma clara acerca de que es lo que ocurre internamente cuando ponemos en funcionamiento nuestras maquinas; es decir desde que prendemos nuestra computadora hasta que finalmente esta lista para ser usada. En esta oportunidad se ha creído conveniente estudiar el sistema de arranque del sistema operativo Unix, debido a que Unix es uno de los pilares en el área de sistemas operativos. 2. Introducción: El sistema operativo UNIX es un sistema complejo; los procesos de arranque y detención de una máquina UNIX implican muchas tareas; deben realizarse correctamente si se desea mantener el buen funcionamiento del sistema. Cuando un sistema Unix arranca una de las tareas que obligatoriamente ha de realizar es incorporar diferentes sistemas de ficheros - discos completos, una partición, una unidad de CD-ROM. A la jerarquía de directorios Unix; este proceso se llama montaje, y para realizarlo generalmente se utiliza la orden mount. Es obligatorio montar al menos un sistema de ficheros durante el arranque, el sistema raíz (`/'), del que colgarán todos los demás. Aunque lo dicho aquí es aplicable en general, el proceso de arranque es dependiente de hardware: puede haber diferencias para un equipo en particular. Ahora que ya tenemos una idea acerca del tema principal en el que nos introduciremos, pasaremos a estudiar en forma mas detallada el proceso de arranque del sistema operativo Unix. 3. 4. Terminos Claves : Master Boot Record: MBR casi siempre se refiere al sector de arranque de 512 bytes, o el partition sector de una partición para ordenadores compatibles con IBM. La estructura del MBR está definida por una convención independiente de los sistemas operativos. Los primeros 446 bytes están reservados para código de programas. Los próximos 64 bytes ofrecen espacio para una tabla de particiones con hasta 4 entradas y los últimos 2 bytes deben contener una “cifra mágica” (AA55): un MBR que tenga otra cifra será tratado como no válido por parte de la BIOS y de todos los sistemas operativos de PC. Bootstrapping: Proceso de levantarse asi iniciando todos sus servicios. Contenido: Para iniciar el sistema desde un estado inactivo, se realiza una secuencia de pasos conocido como bootstrap. El procedimiento de arranque varía según el tipo de máquina y nivel de ejecución pero el objetivo es el mismo en todos ellos: obtener una copia del sistema operativo en la memoria principal e iniciar su ejecución. Generalmente, cuando se enciende el ordenador, se instruye a la máquina a cargar un programa de bootstrap desde el microcódigo. El procedimiento de bootstrap lee el bloque 0 (boot block) del sistema de archivos principal y lo carga en memoria. El programa contenido en el boot block carga el kernel desde el sistema de archivos y después transfiere el control a la dirección de inicio del núcleo, para que el núcleo comience a ejecutarse. El kernel inicializa sus estructuras de datos internas, monta el sistema de archivos principal y prepara el entorno para el proceso 0. Una vez preparado el entorno, el sistema comienza a ejecutarse como el proceso 0; luego se bifurca (se desdobla con la llamada al sistema fork) creando un nuevo proceso, el proceso 1. El proceso 0 se convierte en el proceso swapper (intercambiador) que será el encargado de manejar la asignación de espacio de direccionamiento entre la memoria principal y los dispositivos de swap. El proceso 0 o proceso swapper se ejecutará en modo kernel. Por otra parte, el proceso 1 realiza varias inicializaciones y pasa a ejecutarse en modo usuario. Luego ejecuta el programa /usr/etc/init. Al proceso 1 se le llama normalmente como el proceso init porque es el responsable de la inicialización de nuevos procesos; o dicho de otra forma, todos los procesos en el sistema, excepto el proceso swapper, descienden del proceso init. El proceso init es un proceso dispatcher (despachador) y produce, entre otros, los procesos para que los usuarios puedan conectarse al sistema. Normalmente ejecuta la secuencia de órdenes del script /etc/rc.boot para comprobar los sistemas de archivos y posteriormente ejecuta las órdenes del etc/rc y /etc/rc.local para comenzar las operaciones de multiusuario; en otro caso, se comenzaría en modo monousuario. En operaciones de multiusuario, el papel de init es crear un proceso por cada puerto del terminal en el cuál un usuario pueda conectarse. Para iniciar estas operaciones, lee el archivo /etc/ttytab y ejecuta, normalmente, la orden /usr/etc/getty por cada terminal especificado en el archivo que tenga el campo de status a on. getty abre e inicializa la línea del terminal y ejecuta la orden login para permitir la conexión de usuarios. Básicamente, la orden login actualiza los archivos de accounting, imprime el mensaje del día, informa de la existencia de algún correo y muestra la fecha de la última conexión. Por último, login inicia un intérprete de órdenes basándose en las especificaciones encontradas en el archivo /etc/passwd. Cuando se abandona el shell, el proceso init elimina la entrada apropiada del archivo /etc/utmp, el cuál registra los usuarios actuales, y realiza una entrada en el archivo /etc/wtmp, el cuál contiene un histórico de las conexiones y desconexiones. Los procesos en un sistema UNIX pueden ser procesos de usuario, procesos daemon o procesos del kernel. Los procesos de usuarios, la mayoría, se asocian con usuarios de un terminal. Los procesos daemon no se asocian con ningún usuario pero hace funciones del sistema, tales como la administración y control de redes, ejecución de actividades dependientes del tiempo, spooling de impresión, etc... Los procesos daemon se ejecutan en modo usuario. Los procesos del kernel se ejecutan sólo en modo kernel. Son creados por el proceso 0 antes de que éste se convierta en el proceso swapper. Los procesos del kernel son similares a los procesos daemon (proporcionan servicios del sistema) pero ellos tienen un mayor control sobre las prioridades de ejecución ya que su código es parte del kernel. Ellos pueden acceder a algoritmos del kernel y a estructuras de datos directamente sin tener que usar llamadas al sistema; por ello son extremadamente potentes. Sin embargo no son tan flexibles como los procesos daemon, porque el núcleo del sistema operativo debe ser recompilado para poder cambiarlos. La siguiente imagen muestra un resumen de lo que se acaba de describir anteriormente. 5. Conclusiones: 6. El arranque de Unix por ser un sistema operativo complejo, necesita de que se realicen adecuadamente. El arranque de Unix es base para los diferentes sistemas operativos que son parecidos a Unix como Linux, Solaris, AIX , etc. El kernel en la mayoría de los sistemas Unix es llamado unix, y su ubicación depende de la versión. Estos dispositivos pueden cargarse automáticamente o pueden ser mostrados en una lista donde podemos escoger con cual comenzar Referencias Bibliográficas: La Wikipedia: http://www.wikipedia.org Información sobre BIOS: http://www.bioscentral.com Kernel Unix: http://www.kernel.org El sistema de arranque.htm Curso de Administración http://www.ArranqueyDetenciondelSistema.htm Unix: