Secuencia de encendido y apagado del sistema Modos de funcionamiento En UNIX SVR4 existen varios modos o niveles de ejecución, cada uno de los cuales tiene unas características y funciones específicas. A continuación se nombran estos niveles de ejecución: Nivel 0 Estado de shutdown (apagado del sistema). Nivel 1 Estado de administración. Nivel 2 Modo monousuario. Nivel 3 Estado de red distribuida. Nivel 4 Usuario definible (no usado). Nivel 5 Estado de diagnósticos. Nivel 6 Estado de rearranque y/o shutdown. Secuencia de encendido: 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 1 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. Apagado del sistema Antes de efectuar el apagado físico del sistema es necesario efectuar el procedimiento shutdown, encargado de efectuar la parada del sistema en una secuencia lógica que evite la corrupción de los sistemas de archivos y la posible pérdida de información. La ejecución de este procedimiento puede variar ligeramente dependiendo de que el sistema esté en modo multiusuario o monousuario. En el primer caso es conveniente comprobar si hay algún usuario conectado al sistema. Si hay alguien trabajando deberá notificársele la situación y concederle un tiempo para que pueda cerrar sus archivos y hacer logoff. A continuación puede lanzarse el proceso shutdown. Para que se pueda ejecutar el proceso shutdown, es necesario tener privilegios de administrador y estar posicionado en el directorio raíz. Una vez ejecutado el proceso, aparecerá un mensaje indicando que ya se puede desconectar la máquina. 2