4 Current and future concerns and policy issues
Appendix 3. Description of selected ATSs
almacenada en el CMOS, el cual consiste de una pequeña área de memoria electrónica (64 bytes) donde se guarda información tal como la fecha y la hora, parámetros del disco duro,
etc. La corriente que alimenta al CMOS es enviada por una pequeña batería dentro de la computadora la cual, mantiene esta información. Las computadoras actuales usan una batería recargable con una vida media de cerca de diez años, mientras que computadoras más viejas usan baterías reemplazables con vida útil de aproximadamente dos años.
Las configuraciones en el CMOS son accedidas por medio de un programa de configuración del sistema incluido en el chip BIOS (el cual puede activarse por medio de alguna combinación especial de teclas durante el proceso de arranque.
Las direcciones de memoria son también inicializadas durante esta fase. Las direcciones de memoria baja son usadas para almacenar tanto la lista de equipo como la tabla del vector de interrupciones.
El BIOS y el sistema operativo
Con la creación del chip BIOS independiente, el SO dejó de ser el principal responsable de acceder el hardware de la computadora. En su lugar, el SO organizó los dispositivos conectados a la computadora, manejando tareas como asignar la memoria y ofrecer un conjunto de de rutinas estándar de software con las cuales los programadores podrían comunicarse con el BIOS y el hardware de la computadora. Estas rutinas, conocidas como interfaces de programación (Application Programming Interface) o APIs del SO, reducen al mínimo que un desarrollador necesite saber sobre el hardware específico para escribir una aplicación de software.
Sin embargo, el software se ha desviado de este modelo y se siguen desarrollando programas que hablen directamente con un dispositivo, a causa de la necesidad de velocidad en su acceso. Algunos ejemplos comunes incluyen a las aplicaciones que usan gráficos intensivos (juegos) que requieren acceso rápido a las capacidades del dispositivo de salida (monitor y tarjetas de gráficos).
Recientemente, con la aparición de sistemas operativos de 32-bits como Windows 95/98/2000, el SO de nuevo está tomando la responsabilidad de comunicarse directamente con los dispositivos. El BIOS provee las líneas básicas de comunicación que permiten cargar el sistema, pero las rutinas de 32 bits incrementan la velocidad de acceso a la que el SO puede leer o escribir a los dispositivos. Un número creciente de funciones en las APIs ignoran al BIOS para acceder al hardware directamente. El BIOS mantiene su importancia primaria de proveer compatibilidad con software más antiguo.
2.2.2 Cargador del sistema
Como se mencionó en la sección de "Funcionamiento del CPU", para que un programa se ejecute es necesario llevar sus instrucciones a la memoria, y un sistema operativo no es la excepción; el módulo de carga es esencial para que el sistema inicie su funcionamiento. En casi todos los casos, el SO es la primera pieza de software que comienza a ejecutarse después de que el hardware ha terminado el POST (Power On Self Test) o el BIST (Built In Self Test). Este software por lo general es colocado en una dirección predeterminada de memoria (que puede ser en RAM, ROM o disco) a la cual es transferido el control automáticamente.
Este procedimiento es llamado BootStrapping (o booting). El área donde se encuentra el código de inicio es muy pequeña (típicamente un sector de disco). La responsabilidad primaria del código en esta área es activar los servicios esenciales del sistema operativo. Este código es llamado cargador (loader), y su responsabilidad principal es cargar el núcleo del sistema operativo en memoria (lo que también implica transferirle el control).
Un ejemplo de este proceso es el sistema de arranque del JavaOS consiste de 128 KB de código (varia según la implementación), cuyo deber es cargar primero la imagen del núcleo del SO e informarle de la configuración de dispositivos de la plataforma.
Los detalles para instrumentar programas de carga desde un disco, se pueden consultar en el Apéndice A.
Carga desde un CD-ROM
⊕⊕⊕⊕Las unidades de CD-ROM IDE (compatibles con el estándar ATAPI) y las SCSI pueden opcionalmente proveer capacidades de arranque para los usuarios y fabricantes de computadoras personales. En el pasado las computadoras personales intentaban arrancar de una unidad de disco flexible o de un disco duro. La especificación El Torito explica como el procedimiento de arranque del BIOS puede ser mejorado para soportar un nuevo medio: el CD- ROM.
Manteniendo la compatibilidad con el software actual requiere de usar las convenciones de llamada de la interrupción 13 (INT 13) pero dando una nueva interfaz del dispositivo. La INT 13 tiene ciertas restricciones en la información que el CD-ROM contiene y también tiene varias nuevas opciones para arrancar un sistema. La siguiente es una lista de capacidades y restricciones de este sistema:
1. El CD-ROM puede arrancar como la unidad A o C.
2. Si el CD-ROM arranca como A, la unidad debe contener imágenes de floppies de 1.2M, 1.4M o 2.88M.
3. Si el CD-ROM arranca como la unidad A, la unidad del sistema A se convertirá en la unidad B. Si el sistema tiene una unidad B se volverá inaccesible.
4. Si el CD-ROM arranca como la unidad C, entonces reemplaza a la unidad C.
5. No se necesitan manejadores de dispositivos para aplicaciones que usen la interfaz INT 13. Esto significa que el software normal compatible con MS-DOS puede acceder al CD- ROM sin un manejador de dispositivo. Algunos sistemas como Windows, pueden ser configurados para usar la interrupción 13 dándole al usuario beneficios inmediatos de su CD.
6. Dar formato a una parte del CD ROM como disco duro protegido contra escritura es un método sencillo de protección contra copias.
7. Puede protegerse contra copia las porciones no formateadas del disco agregando algunos manejadores especiales de CD-ROM en el CD.
⊕
Carga por medio de conexión en red
⊕⊕⊕⊕Existen otro tipo de arrancadores, para máquinas sin disco (las alguna vez llamadas "terminales tontas"), que cargan los archivos necesarios por medio de una conexión en red. El arranque por red (network booting) es una idea vieja. La idea central es que la computadora tenga algún código de bootstrap en memoria no volátil (p.ej. un chip ROM), que le permita el contacto con un servidor y obtenga los archivos del sistema por medio de una conexión de red.
Uno de los objetivos es evitar el uso del disco duro para inicializar. Hay varias razones para hacer esto. Una es reducir el costo de mantener software en diferentes máquinas. Con el arranque por red los archivos son administrados en un servidor central y pueden ser actualizados en un solo sitio. Otro objetivo es usar computadoras en sitios donde los discos duros no son lo suficientemente robustos. Por ejemplo, esto podría ser una computadora en el piso de una fábrica donde el disco duro puede ser frágil o estar expuesto a golpes. Finalmente, otro objetivo es tener un sistema que pueda cambiar de sistemas operativos, sin tener que instalar el software.
Para poder arrancar sobre una red, la computadora necesita obtener: 1. una identidad
2. la imagen de un sistema operativo 3. un sistema de archivos activo.
Consideremos una computadora sin disco (diskless computer -DC) que tiene una ROM de arranque en red, y que puede ser una de varias computadoras idénticas. ¿Cómo podemos distinguir esta computadora de las otras? Hay una pieza de información que es única para esta computadora que es su dirección Ethernet (contenida en su adaptador de red). Cada adaptador Ethernet en el mundo tiene una dirección Ethernet única de 48 bits por que cada a constructor de hardware Ethernet le ha sido asignado un bloque de direcciones. Por convención estas direcciones están escritas en dígitos hexadecimales donde cada dos dígitos se separan mediante dos puntos (p.ej. 00:60:08:C7:A3:D8).
Los protocolos para obtener la dirección IP dada una dirección Ethernet, son llamados Boot Protocol (BOOTP) y Dynamic Host Configuration Protocol (DHCP). DHCP es la evolución del BOOTP (de hecho casi todo lo aplicable a BOOTP se aplica también en DHCP).
Después de obtener una dirección IP, la computadora debe descargar la imagen de un sistema operativo y ejecutarlo. Para ello se usa otro protocolo de Internet llamado Trivial File Transfer Protocol (TFTP). TFTP es como una versión recortada de FTP; no hay autentificación, y se ejecuta sobre UDP (User Datagram Protocol) en lugar de TCP (Transmission Control Protocol). UDP fue escogido en lugar de TCP por simplicidad. La implementación de UDP en la computadora puede ser pequeña, por lo que el código cabe en una ROM.
Cuando todos los bloques se han recibido, la ROM de arranque en red le cede el control al punto de inicio de la imagen del sistema operativo. Finalmente para ejecutar un SO, un sistema de archivos raíz debe proveerse. El protocolo usado por Linux y otros sistemas Unix es
⊕
normalmente el Network File System (NFS), aunque otras opciones son posibles. En este caso el código no tiene que residir en la ROM pero puede ser parte del sistema operativo que se descargó. Sin embargo el SO debe ser capaz de ejecutarse con un sistema de archivos raíz que es un NFS, en lugar de un disco verdadero. Linux tiene las variables de configuración requeridas para construir una versión que pueda hacerlo.
2.2.3 Inicio de la ejecución del sistema operativo
Para entender como funciona el SO, puede tomarse como punto de partida el análisis de su ejecución, la cual inicia al encender la computadora.