Sistemas operativos modernos
Ahora el sistema inicia su autoconfiguración. Con la ayuda de archivos de configuración que indican los tipos de dispositivos de E/S que podrían estar presentes, comienza a sondear los dispositivos para ver cuáles están presentes en realidad. Si un dispositivo responde al sondeo, se le añade a una tabla de dispositivos conectados; si no responde, se supone que está ausente y no se toma más en cuenta. Una vez determinada la lista de dispositivos, deben localizarse los controladores de dispo sitivos. Ésta es un área en la que los sistemas UNIX presentan ciertas diferencias. En particu lar, 4.4BSD no puede cargar controladores de dispositivos en forma dinámica, por lo que no se podrá usar ningún dispositivo de E/S cuyo controlador no se haya enlazado de manera estática con el kernel. En contraste, otras versiones de UNIX, como Linux, pueden cargar controladores en forma dinámica (lo mismo que todas las versiones de MS-DOS y Windows, por cierto). Los argumentos en favor y en contra de cargar controladores en forma dinámica son intere santes y vale la pena plantearlos con brevedad. El principal argumento en favor de la carga di námica es que puede distribuirse un solo binario a clientes con configuraciones divergentes y hacer que cargue los controladores que necesita, quizá incluso a través de una red. El principal argumento en contra de la carga dinámica es la seguridad. Si se está operando un sitio seguro, como la base de datos de un banco o un servidor Web corporativo, de seguro se querrá impedir que alguien inserte código aleatorio en el kemel. El administrador del sistema podría conservar los archivos fuente y objeto del sistema operativo en una máquina segura, efectuar todas las pre paraciones de sistemas ahí, y enviar el binario del kemel a otras máquinas a través de una red local. Si los controladores no pueden cargarse en forma dinámica, esta situación impedirá que los operadores de máquinas y otros que conocen la contraseña de superusuario puedan inyectar código mal intencionado o defectuoso en el kemel. Además, en los sitios grandes, la configura ción de hardware se conoce con exactitud en el momento en que se compila y enlaza el sistema. Los cambios son tan poco frecuentes que no es muy problemático tener que volver a enlazar el sistema cuando se añade un nuevo dispositivo de hardware. Una vez configurado todo el hardware, lo siguiente es preparar con cuidado el proceso O, es tablecer su pila y ejecutarlo. El proceso Ocontinúa la inicialización con tareas como programar el reloj de tiempo real, montar el sistema de archivos raíz y crear init (proceso 1) y el demonio de páginas (proceso 2). Init examina sus indicadores para ver si debe trabajar en modo monousuario o multiusuario. En el primer caso, bifurcará un proceso que ejecuta el shell y esperará a que termine. En el se gundo caso, se bifurcará en un proceso que ejecuta el script de shell de inicialización, /etc/rc, el cual puede verificar la consistencia del sistema de archivos, montar sistemas de archivos adicio nales, iniciar procesos demonios, etc. Luego lee /etc/ttys, que enumera las terminales y algunas de sus propiedades. Para cada terminal habilitada, se bifurca en una copia de sí mismo, que rea liza algunas labores domésticas y luego ejecuta un programa llamado getty. Getty establece la velocidad de línea y otras propiedades para cada línea (algunas de las cua les podrían ser módems, por ejemplo), y luego muestra login: en la pantalla de la terminal y trata de leer del teclado el nombre del usuario. Cuando alguien se sienta firente a la terminal y proporciona un nombre de inicio de sesión, getty termina ejecutan
RkJQdWJsaXNoZXIy MjI4NDcx