stringtranslate.com

Arranque

Un diagrama de flujo del arranque de una computadora.

En informática , el arranque es el proceso de iniciar una computadora iniciado mediante hardware , como un botón o mediante un comando de software . Una vez encendida, la unidad central de procesamiento (CPU) de una computadora no tiene software en su memoria principal , por lo que algún proceso debe cargar software en la memoria antes de poder ejecutarse. Esto se puede hacer mediante hardware o firmware en la CPU, o mediante un procesador separado en el sistema informático.

Reiniciar una computadora también se llama reinicio , que puede ser "duro", por ejemplo, después de que la energía eléctrica de la CPU se cambia de apagada a encendida, o "suave", cuando no se corta la energía. En algunos sistemas, un arranque suave puede opcionalmente borrar la RAM a cero. Tanto el arranque duro como el suave pueden iniciarse mediante hardware, como presionar un botón o mediante un comando de software. El arranque se completa cuando se alcanza el sistema operativo de ejecución , generalmente el sistema operativo y algunas aplicaciones, [nb 1] .

El proceso de devolver una computadora del estado de suspensión (suspensión) no implica arrancar; sin embargo, restaurarlo desde un estado de hibernación sí lo hace. Como mínimo, algunos sistemas integrados no requieren una secuencia de inicio notable para comenzar a funcionar y, cuando se encienden, pueden simplemente ejecutar programas operativos almacenados en la ROM. Todos los sistemas informáticos son máquinas de estados , y un reinicio puede ser el único método para regresar a un estado cero designado desde un estado bloqueado no deseado.

Además de cargar un sistema operativo o una utilidad independiente, el proceso de arranque también puede cargar un programa de volcado de almacenamiento para diagnosticar problemas en un sistema operativo.

Boot es la abreviatura de bootstrap [1] [2] o bootstrap load y deriva de la frase to pull oneself up by one's bootstraps . [3] [4] El uso llama la atención sobre el requisito de que, si la mayor parte del software se carga en una computadora mediante otro software que ya se ejecuta en la computadora, debe existir algún mecanismo para cargar el software inicial en la computadora. [5] Las primeras computadoras usaban una variedad de métodos ad-hoc para colocar un pequeño programa en la memoria para resolver este problema. La invención de la memoria de sólo lectura (ROM) de varios tipos resolvió esta paradoja al permitir que las computadoras se enviaran con un programa de inicio que no se podía borrar. El crecimiento de la capacidad de ROM ha permitido implementar procedimientos de puesta en marcha cada vez más elaborados.

Historia

Interruptores y cables utilizados para programar ENIAC (1946)

Hay muchos métodos diferentes disponibles para cargar un programa inicial corto en una computadora. Estos métodos van desde una entrada física simple hasta medios extraíbles que pueden contener programas más complejos.

Ejemplos de ROM de circuito preintegrado

Primeras computadoras

Las primeras computadoras de las décadas de 1940 y 1950 fueron esfuerzos de ingeniería únicos en su tipo que podían tardar semanas en programarse y la carga del programa era uno de los muchos problemas que debían resolverse. Una de las primeras computadoras, ENIAC , no tenía ningún programa almacenado en la memoria, pero estaba configurada para cada problema mediante una configuración de cables de interconexión. El bootstrapping no se aplicó a ENIAC, cuya configuración de hardware estaba lista para resolver problemas tan pronto como se aplicó energía.

El sistema EDSAC , la segunda computadora con programa almacenado que se construyó, usaba interruptores paso a paso para transferir un programa fijo a la memoria cuando se presionaba el botón de inicio. El programa almacenado en este dispositivo, que David Wheeler completó a finales de 1948, cargaba instrucciones adicionales a partir de una cinta perforada y luego las ejecutaba. [6] [7]

Primeras computadoras comerciales

Las primeras computadoras programables comercializadas, como la UNIVAC I y la IBM 701 [8], incluían características para simplificar su funcionamiento. Por lo general, incluían instrucciones que realizaban una operación completa de entrada o salida. La misma lógica de hardware podría usarse para cargar el contenido de una tarjeta perforada (las más típicas) u otros medios de entrada, como un tambor magnético o una cinta magnética , que contuvieran un programa de arranque presionando un solo botón. Este concepto de arranque recibió diversos nombres para las computadoras IBM de la década de 1950 y principios de la de 1960, pero IBM usó el término "carga de programa inicial" con el IBM 7030 Stretch [9] y luego lo usó para sus líneas de mainframe, comenzando con System. /360 en 1964.

Tarjeta perforada de carga inicial del programa para el IBM 1130 (1965)

La computadora IBM 701 (1952-1956) tenía un botón "Cargar" que iniciaba la lectura de la primera palabra de 36 bits en la memoria principal desde una tarjeta perforada en un lector de tarjetas , una cinta magnética en una unidad de cinta o una unidad de tambor magnético. , dependiendo de la posición del interruptor selector de carga. La media palabra izquierda de 18 bits se ejecutaba luego como una instrucción, que normalmente leía palabras adicionales en la memoria. [10] [11] Luego se ejecutó el programa de arranque cargado, lo que, a su vez, cargó un programa más grande desde ese medio en la memoria sin más ayuda del operador humano. El IBM 704 , [12] IBM 7090 , [13] y el IBM 7094 [14] tenían mecanismos similares, pero con diferentes botones de carga para diferentes dispositivos. El término "bota" se ha utilizado en este sentido desde al menos 1958. [15]

Consola IBM System/3 de los años 70. El interruptor selector de carga de programa está en la parte inferior izquierda; El interruptor de carga del programa está en la parte inferior derecha.

Otras computadoras IBM de esa época tenían características similares. Por ejemplo, el sistema IBM 1401 (c. 1958) utilizaba un lector de tarjetas para cargar un programa desde una tarjeta perforada. Los 80 caracteres almacenados en la tarjeta perforada se leyeron en las ubicaciones de memoria 001 a 080, luego la computadora se bifurcaba a la ubicación de memoria 001 para leer su primera instrucción almacenada. Esta instrucción era siempre la misma: mover la información de estas primeras 80 ubicaciones de memoria a un área de ensamblaje donde la información de las tarjetas perforadas 2, 3, 4, etc., podría combinarse para formar el programa almacenado. Una vez que esta información se movía al área de ensamblaje, la máquina pasaría a una instrucción en la ubicación 080 (leer una tarjeta) y se leería la siguiente tarjeta y se procesaría su información.

Otro ejemplo fue el IBM 650 (1953), una máquina decimal, que tenía un grupo de diez interruptores de 10 posiciones en su panel operador que eran direccionables como una palabra de memoria (dirección 8000) y podían ejecutarse como una instrucción. Por lo tanto, al configurar los interruptores en 7004000400 y presionar el botón apropiado se leería la primera tarjeta en el lector de tarjetas en la memoria (código de operación 70), comenzando en la dirección 400 y luego saltando a 400 para comenzar a ejecutar el programa en esa tarjeta. [16] Los IBM 7040 y 7044 tienen un mecanismo similar, en el que el botón Cargar hace que se ejecute la instrucción configurada en las teclas de entrada en el panel frontal, y el canal que configura la instrucción recibe un comando para transferir datos a la memoria. comenzando en la dirección 00100; cuando finaliza esa transferencia, la CPU salta a la dirección 00101. [17]

Los competidores de IBM también ofrecían carga de programas con un solo botón.

Una variación notable de esto se encuentra en el Burroughs B1700 , donde no hay una ROM de arranque ni una operación de IPL cableada. En cambio, después de reiniciar el sistema, lee y ejecuta microinstrucciones secuencialmente desde una unidad de cinta de casete montada en el panel frontal; esto configura un cargador de arranque en la RAM que luego se ejecuta. [21] Sin embargo, dado que esto hace pocas suposiciones sobre el sistema, puede usarse igualmente para cargar cintas de diagnóstico (Rutina de prueba de mantenimiento) que muestran un código inteligible en el panel frontal incluso en casos de falla grave de la CPU. [21]

IBM System/360 y sucesores

En IBM System/360 y sus sucesores, incluidas las máquinas z/Architecture actuales , el proceso de arranque se conoce como carga inicial del programa (IPL).

IBM acuñó este término para el 7030 (Stretch) , [9] lo revivió para el diseño del System/360 y continúa usándolo en esos entornos hoy. [22] En los procesadores System/360, el operador de la computadora inicia una IPL seleccionando la dirección del dispositivo de tres dígitos hexadecimales (CUU; C=dirección del canal de E/S, UU=unidad de control y dirección del dispositivo [nb 2] ) seguida presionando el botón CARGAR . En los modelos System/360 de gama alta , la mayoría de los [nb 3] System/370 y algunos sistemas posteriores, las funciones de los interruptores y el botón LOAD se simulan utilizando áreas seleccionables en la pantalla de una consola gráfica, a menudo [nb 4] un Dispositivo tipo IBM 2250 o dispositivo tipo IBM 3270 . Por ejemplo, en el System/370 Modelo 158, la secuencia del teclado 0-7-X (cero, siete y X, en ese orden) da como resultado una IPL desde la dirección del dispositivo que se introdujo en el área de entrada. El Amdahl 470V/6 y las CPU relacionadas admitían cuatro dígitos hexadecimales en aquellas CPU que tenían instalada la unidad de segundo canal opcional, para un total de 32 canales. Posteriormente, IBM también admitiría más de 16 canales.

La función IPL en System/360 y sus sucesores anteriores a IBM Z , y sus compatibles como el de Amdahl, lee 24 bytes de un dispositivo especificado por el operador en el almacenamiento principal comenzando en la dirección real cero. El segundo y tercer grupo de ocho bytes se tratan como palabras de comando de canal (CCW) para continuar cargando el programa de inicio (la CPU siempre simula el primer CCW y consiste en un comando de lectura de IPL, 02h , con encadenamiento de comandos y supresión de longitud incorrecta). indicación que se está aplicando). Cuando se completan los comandos del canal de E/S, el primer grupo de ocho bytes se carga en la palabra de estado del programa (PSW) del procesador y el programa de inicio comienza a ejecutarse en la ubicación designada por esa PSW. [22] El dispositivo IPL suele ser una unidad de disco, de ahí el significado especial del comando de tipo lectura 02h , pero también se utiliza exactamente el mismo procedimiento para realizar IPL desde otros dispositivos de tipo entrada, como unidades de cinta o incluso lectores de tarjetas. , de forma independiente del dispositivo, permitiendo, por ejemplo, la instalación de un sistema operativo en un ordenador nuevo a partir de una cinta magnética de distribución inicial del sistema operativo. Para los controladores de disco, el comando 02h también hace que el dispositivo seleccionado busque el cilindro 0000h , cabezal 0000h , simulando un comando de búsqueda de cilindro y cabezal, 07h , y que busque el registro 01h , simulando un comando de búsqueda de ID igual, 31h ; Los controladores de cintas y tarjetas no simulan las búsquedas, ya que para estas clases de dispositivos un comando de lectura IPL es simplemente un comando de lectura secuencial.

El disco, cinta o tarjetero debe contener un programa especial para cargar el sistema operativo real o la utilidad independiente en el almacenamiento principal y, para este propósito específico, el DASDI (dispositivo de almacenamiento de acceso directo) independiente coloca "Texto IPL" en el disco. Inicialización) o un programa equivalente que se ejecute bajo un sistema operativo, por ejemplo, ICKDSF, pero las cintas y tarjetas compatibles con IPL generalmente se distribuyen con este "Texto IPL" ya presente.

IBM introdujo algunos cambios evolutivos en el proceso de IPL, cambiando algunos detalles para System/370 Extended Architecture (S/370-XA) y posteriores, y agregando un nuevo tipo de IPL para z/Architecture.

Minicomputadoras

Panel frontal del PDP-8/E que muestra los interruptores utilizados para cargar el programa de arranque

Las minicomputadoras , comenzando con Digital Equipment Corporation (DEC) PDP-5 y PDP-8 (1965), simplificaron el diseño mediante el uso de la CPU para ayudar en las operaciones de entrada y salida. Esto ahorró costos pero hizo que el arranque fuera más complicado que presionar un solo botón. Las minicomputadoras generalmente tenían alguna forma de alternar programas cortos manipulando una serie de interruptores en el panel frontal . Dado que las primeras minicomputadoras usaban memoria de núcleo magnético , que no perdía su información cuando se cortaba la energía, estos cargadores de arranque permanecerían en su lugar a menos que se borraran. En ocasiones, el borrado se producía accidentalmente cuando un error del programa provocaba un bucle que sobrescribía toda la memoria.

Otras minicomputadoras con una forma de arranque tan simple incluyen la serie HP 2100 de Hewlett-Packard (mediados de la década de 1960), la Data General Nova original (1969) y las PDP-4 (1962) y PDP-11 (1970) de DEC.

Como las operaciones de E/S necesarias para provocar una operación de lectura en un dispositivo de E/S de minicomputadora generalmente eran diferentes para diferentes controladores de dispositivos, se necesitaban diferentes programas de arranque para diferentes dispositivos.

Posteriormente, DEC agregó, en 1971, una memoria de solo lectura de matriz de diodos opcional para el PDP-11 que almacenaba un programa de arranque de hasta 32 palabras (64 bytes). Consistía en una tarjeta de circuito impreso, la M792, que se conectaba al Unibus y contenía una serie de diodos semiconductores de 32 por 16. Con los 512 diodos en su lugar, la memoria contenía todos los bits "uno"; la tarjeta se programó cortando cada diodo cuyo bit debía ser "cero". DEC también vendió versiones de la tarjeta, la serie BM792-Yx, preprogramada para muchos dispositivos de entrada estándar simplemente omitiendo los diodos innecesarios. [23] [24]

Siguiendo el enfoque anterior, el PDP-1 anterior tiene un cargador de hardware, de modo que un operador solo necesita presionar el interruptor de "carga" para indicarle al lector de cintas de papel que cargue un programa directamente en la memoria central. Los PDP-7 , [25] PDP-9 , [26] y PDP-15 [27] sucesores del PDP-4 tienen un botón de lectura agregado para leer un programa desde una cinta de papel y saltar a él. Data General Supernova utilizó interruptores del panel frontal para hacer que la computadora cargara automáticamente instrucciones en la memoria desde un dispositivo especificado por los interruptores de datos del panel frontal y luego saltara al código cargado. [28]

Ejemplos de primeros cargadores de arranque de minicomputadoras

En una minicomputadora con un lector de cintas de papel, el primer programa que se ejecuta en el proceso de arranque, el cargador de arranque, leería en la memoria central el cargador de arranque de segunda etapa (a menudo llamado cargador binario ), que podría leer cintas de papel con suma de comprobación o el sistema operativo desde un medio de almacenamiento externo. El pseudocódigo para el gestor de arranque puede ser tan simple como las siguientes ocho instrucciones:

  1. Establezca el registro P en 9
  2. Verifique que el lector de cinta de papel esté listo
  3. Si no está listo, salte a 2
  4. Leer un byte del lector de cinta de papel al acumulador
  5. Almacenar el acumulador en la dirección del registro P.
  6. Si es el final de la cinta, salte al 9.
  7. Incrementar el registro P
  8. Saltar a 2

Un ejemplo relacionado se basa en un cargador para una minicomputadora Nicolet Instrument Corporation de la década de 1970, que utiliza la unidad lectora-perforadora de cinta de papel en una teleimpresora Teletype Modelo 33 ASR . Los bytes de su cargador de segunda etapa se leen de la cinta de papel en orden inverso.

  1. Establezca el registro P en 106
  2. Verifique que el lector de cinta de papel esté listo
  3. Si no está listo, salte a 2
  4. Leer un byte del lector de cinta de papel al acumulador
  5. Almacenar el acumulador en la dirección del registro P.
  6. Disminuir el registro P
  7. Saltar a 2

La longitud del cargador de segunda etapa es tal que el byte final sobrescribe la ubicación 7. Después de que se ejecuta la instrucción en la ubicación 6, la ubicación 7 inicia la ejecución del cargador de segunda etapa. Luego, el cargador de la segunda etapa espera a que la cinta mucho más larga que contiene el sistema operativo se coloque en el lector de cintas. La diferencia entre el cargador de arranque y el cargador de segunda etapa es la adición de código de verificación para detectar errores de lectura de cintas de papel, algo que ocurre frecuentemente con hardware de "servicio a tiempo parcial" de costo relativamente bajo, como el Teletipo Modelo 33 ASR. (Los Friden Flexowriters eran mucho más confiables, pero también comparativamente costosos).

Arrancando las primeras microcomputadoras

Las primeras microcomputadoras, como la Altair 8800 (lanzada por primera vez en 1975) y una máquina similar incluso anterior (basada en la CPU Intel 8008) no tenían hardware de arranque como tal. [29] Cuando se enciende, la CPU verá la memoria que contendrá datos aleatorios. Los paneles frontales de estas máquinas llevaban interruptores de palanca para ingresar direcciones y datos, un interruptor por bit de la palabra de memoria de la computadora y el bus de direcciones. Adiciones simples al hardware permitieron cargar una ubicación de memoria a la vez desde esos conmutadores para almacenar el código de arranque. Mientras tanto, se impidió que la CPU intentara ejecutar el contenido de la memoria. Una vez cargada correctamente, la CPU se habilitó para ejecutar el código de arranque. Este proceso, similar al utilizado para varias minicomputadoras anteriores, era tedioso y tenía que estar libre de errores. [30]

Era de la memoria de solo lectura del circuito integrado

Un "chip" EPROM Intel 2708 en una placa de circuito

La introducción de la memoria de sólo lectura (ROM) de circuito integrado, con sus numerosas variantes, incluidas las ROM programadas con máscara , las ROM programables (PROM), las ROM programables borrables (EPROM) y la memoria flash , redujo el tamaño físico y el costo de la ROM. Esto permitió incluir programas de arranque de firmware como parte de la computadora.

Minicomputadoras

Los Data General Nova 1200 (1970) y Nova 800 (1971) tenían un interruptor de carga de programa que, en combinación con opciones que proporcionaban dos chips ROM, cargaba un programa en la memoria principal desde esos chips ROM y saltaba a él. [28] Digital Equipment Corporation presentó el BM873 (1974) basado en ROM de circuito integrado, [31] M9301 (1977), [32] M9312 (1978), [33] REV11-A y REV11-C, [34] Memorias ROM MRV11-C, [35] y MRV11-D [36] , todas utilizables como ROM de arranque. El PDP-11/34 (1976), [37] PDP-11/60 (1977), [38] PDP-11/24 (1979), [39] y la mayoría de los modelos posteriores incluyen módulos ROM de arranque.

Un ordenador de conmutación telefónica italiano, llamado "Gruppi Speciali", patentado en 1975 por Alberto Ciaramella , investigador del CSELT , [40] incluía una ROM (externa). Gruppi Speciali era, a partir de 1975, una máquina con un solo botón que arrancaba el sistema operativo desde una memoria ROM compuesta de semiconductores, no de núcleos de ferrita. Aunque el dispositivo ROM no estaba integrado de forma nativa en la computadora de Gruppi Speciali, debido al diseño de la máquina, también permitía el arranque de ROM con un solo botón en máquinas no diseñadas para eso (por lo tanto, este "dispositivo de arranque" era independiente de la arquitectura). ), por ejemplo el PDP-11. También se pudo almacenar el estado del aparato después de la desconexión, lo que fue otra característica fundamental en el concurso de conmutación telefónica. [41]

Algunas minicomputadoras y superminicomputadoras incluyen un procesador de consola independiente que arranca el procesador principal. El PDP-11/44 tenía un Intel 8085 como procesador de consola; [42] el VAX-11/780 , el primer miembro de la línea VAX de superminicomputadoras de 32 bits de Digital, tenía un procesador de consola basado en LSI-11 , [43] y el VAX-11/730 tenía un procesador de consola basado en 8085 . [44] Estos procesadores de consola podrían arrancar el procesador principal desde varios dispositivos de almacenamiento.

Algunas otras superminicomputadoras, como la VAX-11/750, implementan funciones de consola, incluida la primera etapa de arranque, en el microcódigo de la CPU. [45]

Microprocesadores y microcomputadoras.

Normalmente, un microprocesador, después de una condición de reinicio o encendido, realizará un proceso de inicio que generalmente toma la forma de "comenzar la ejecución del código que se encuentra comenzando en una dirección específica" o "buscar un código multibyte en una dirección específica y saltar a la ubicación indicada para comenzar la ejecución". Un sistema construido con ese microprocesador tendrá la ROM permanente ocupando estas ubicaciones especiales para que el sistema siempre comience a funcionar sin la ayuda del operador. Por ejemplo, los procesadores Intel x86 siempre comienzan ejecutando las instrucciones que comienzan en F000:FFF0, [46] [47] mientras que para el procesador MOS 6502 , la inicialización comienza leyendo una dirección vectorial de dos bytes en $FFFD (MS byte) y $ FFFC (byte LS) y saltar a esa ubicación para ejecutar el código de arranque. [48]

La primera computadora de Apple Computer , la Apple 1 presentada en 1976, incluía chips PROM que eliminaban la necesidad de un panel frontal para el proceso de arranque (como era el caso del Altair 8800) en una computadora comercial. Según el anuncio de Apple que lo anuncia "No más interruptores, no más luces... el firmware en PROMS le permite ingresar, mostrar y depurar programas (todos en hexadecimal) desde el teclado". [49]

Debido al gasto de la memoria de solo lectura en ese momento, la serie Apple II arrancó sus sistemas operativos de disco utilizando una serie de pasos incrementales muy pequeños, cada uno de los cuales pasaba el control a la siguiente fase del proceso de arranque gradualmente más complejo. (Ver Apple DOS: Cargador de arranque ). Debido a que tan poco del sistema operativo del disco dependía de la ROM, el hardware también era extremadamente flexible y admitía una amplia gama de mecanismos personalizados de protección de copia del disco . (Consulte Crackeo de software: historial ).

Algunos sistemas operativos, en particular los sistemas Macintosh de Apple anteriores a 1995 , están tan estrechamente entrelazados con su hardware que es imposible iniciar de forma nativa un sistema operativo que no sea el estándar. Este es el extremo opuesto del escenario que utiliza interruptores mencionado anteriormente; Es muy inflexible pero relativamente a prueba de errores e infalible siempre que todo el hardware funcione normalmente. Una solución común en tales situaciones es diseñar un cargador de arranque que funcione como un programa perteneciente al sistema operativo estándar que secuestra el sistema y carga el sistema operativo alternativo. Esta técnica fue utilizada por Apple para su implementación A/UX Unix y copiada por varios sistemas operativos gratuitos y BeOS Personal Edition 5 .

Algunas máquinas, como la microcomputadora Atari ST , eran de "encendido instantáneo", y el sistema operativo se ejecutaba desde una ROM . Por lo tanto, se eliminó la recuperación del sistema operativo del almacén secundario o terciario como una de las operaciones características del arranque. Para permitir que las personalizaciones del sistema, los accesorios y otro software de soporte se carguen automáticamente, se leyó la unidad de disquete de Atari en busca de componentes adicionales durante el proceso de arranque. Hubo un retraso en el tiempo de espera que dio tiempo para insertar manualmente un disquete mientras el sistema buscaba los componentes adicionales. Esto podría evitarse insertando un disco en blanco. El hardware Atari ST también fue diseñado para que la ranura del cartucho pudiera proporcionar ejecución de programas nativos para juegos como un vestigio del legado de Atari en la fabricación de juegos electrónicos; Al insertar el cartucho Spectre GCR con la ROM del sistema Macintosh en la ranura del juego y encender el Atari, podía "arrancar de forma nativa" el sistema operativo Macintosh en lugar del propio TOS de Atari .

La computadora personal IBM incluía firmware basado en ROM llamado BIOS ; Una de las funciones de ese firmware era realizar una autoprueba de encendido cuando la máquina estaba encendida y luego leer el software desde un dispositivo de arranque y ejecutarlo. El firmware compatible con el BIOS de la computadora personal IBM se utiliza en computadoras compatibles con PC IBM . UEFI fue desarrollado por Intel, originalmente para máquinas basadas en Itanium , y luego también se usó como alternativa al BIOS en máquinas basadas en x86 , incluidas las Mac de Apple que usan procesadores Intel .

Las estaciones de trabajo Unix originalmente tenían firmware basado en ROM específico del proveedor. Posteriormente , Sun Microsystems desarrolló OpenBoot , más tarde conocido como Open Firmware, que incorporaba un intérprete de Forth , y gran parte del firmware estaba escrito en Forth. Fue estandarizado por el IEEE como estándar IEEE 1275-1994; El firmware que implementa ese estándar se utilizó en Mac basadas en PowerPC y algunas otras máquinas basadas en PowerPC, así como en las computadoras basadas en SPARC de Sun. La especificación Advanced RISC Computing definió otro estándar de firmware, que se implementó en algunas máquinas basadas en MIPS y Alpha y en las estaciones de trabajo basadas en SGI Visual Workstation x86.

Cargadores de arranque modernos

Cuando una computadora se apaga, su software‍—‌incluidos los sistemas operativos, el código de aplicación y los datos‍—permanece almacenado en la memoria no volátil . Cuando la computadora está encendida, normalmente no tiene un sistema operativo ni su cargador en la memoria de acceso aleatorio (RAM). La computadora primero ejecuta un programa relativamente pequeño almacenado en una memoria de solo lectura (ROM y posteriormente EEPROM , NOR flash ) junto con algunos datos necesarios, para inicializar la CPU y la placa base, para inicializar la RAM (especialmente en sistemas x86), para acceder a la memoria no volátil. dispositivo (generalmente dispositivo de bloque , por ejemplo, flash NAND) o dispositivos desde los cuales los programas y datos del sistema operativo se pueden cargar en la RAM.

El pequeño programa que inicia esta secuencia se conoce como cargador de arranque , bootstrap o gestor de arranque . A menudo se utilizan cargadores de arranque de varias etapas, durante los cuales varios programas de complejidad creciente se cargan uno tras otro en un proceso de carga en cadena .

Algunos sistemas informáticos anteriores, al recibir una señal de arranque de un operador humano o de un dispositivo periférico, podían cargar una cantidad muy pequeña de instrucciones fijas en la memoria en una ubicación específica, inicializar al menos una CPU y luego apuntar la CPU a las instrucciones y iniciar su ejecución. Estas instrucciones generalmente inician una operación de entrada desde algún dispositivo periférico (que el operador puede seleccionar mediante un interruptor). Otros sistemas pueden enviar comandos de hardware directamente a dispositivos periféricos o controladores de E/S que provocan que se lleve a cabo una operación de entrada extremadamente simple (como "leer el sector cero del dispositivo del sistema en la memoria a partir de la ubicación 1000"), cargando efectivamente una pequeña número de instrucciones del cargador de arranque en la memoria; Luego se puede utilizar una señal de finalización del dispositivo de E/S para iniciar la ejecución de las instrucciones por parte de la CPU.

Las computadoras más pequeñas suelen utilizar mecanismos de cargador de arranque menos flexibles pero más automáticos para garantizar que la computadora se inicie rápidamente y con una configuración de software predeterminada. En muchas computadoras de escritorio, por ejemplo, el proceso de arranque comienza cuando la CPU ejecuta el software contenido en la ROM (por ejemplo, el BIOS de una PC IBM ) en una dirección predefinida (algunas CPU, incluida la serie Intel x86 , están diseñadas para ejecutar este software). después del reinicio sin ayuda externa). Este software contiene una funcionalidad rudimentaria para buscar dispositivos elegibles para participar en el arranque y cargar un pequeño programa desde una sección especial (más comúnmente el sector de arranque ) del dispositivo más prometedor, generalmente comenzando en un punto de entrada fijo , como el inicio del sector.

Los cargadores de botas pueden enfrentar limitaciones peculiares, especialmente en tamaño; por ejemplo, en IBM PC y compatibles, el código de arranque debe caber en el Master Boot Record (MBR) y en el Partition Boot Record (PBR), que a su vez están limitados a un solo sector; en IBM System/360 , el tamaño está limitado por el medio de IPL, por ejemplo, tamaño de tarjeta , tamaño de pista.

En sistemas con esas limitaciones, el primer programa cargado en la RAM puede no ser lo suficientemente grande para cargar el sistema operativo y, en su lugar, debe cargar otro programa más grande. El primer programa cargado en la RAM se denomina cargador de arranque de primera etapa y el programa que carga se denomina cargador de arranque de segunda etapa.

Cargador de arranque de primera etapa

Ejemplos de cargadores de arranque de primera etapa (etapa de inicialización de hardware) incluyen BIOS , UEFI , coreboot , Libreboot y Das U-Boot . En la PC IBM, el cargador de arranque en el Registro de arranque maestro (MBR) y el Registro de arranque de partición (PBR) se codificó para requerir al menos 32 KB [50] [51] (posteriormente ampliado a 64 KB [52] ) de sistema memoria y utilice únicamente instrucciones compatibles con los procesadores 8088/8086 originales .

Cargador de arranque de segunda etapa

Los cargadores de arranque de segunda etapa (etapa de inicialización del sistema operativo), como shim, [53] GNU GRUB , rEFInd , BOOTMGR , Syslinux , NTLDR e iBoot , no son sistemas operativos en sí mismos, pero pueden cargar un sistema operativo correctamente y transferir su ejecución a él; Posteriormente, el sistema operativo se inicializa y puede cargar controladores de dispositivo adicionales . El cargador de arranque de segunda etapa no necesita controladores para su propio funcionamiento, sino que puede utilizar métodos genéricos de acceso al almacenamiento proporcionados por el firmware del sistema, como BIOS, UEFI o Open Firmware , aunque normalmente con funcionalidad de hardware restringida y menor rendimiento. [54]

Muchos cargadores de arranque (como GNU GRUB, rEFInd, BOOTMGR de Windows, Syslinux y NTLDR de Windows NT/2000/XP) se pueden configurar para brindar al usuario múltiples opciones de arranque. Estas opciones pueden incluir diferentes sistemas operativos (para arranque dual o múltiple desde diferentes particiones o unidades), diferentes versiones del mismo sistema operativo (en caso de que una nueva versión tenga problemas inesperados), diferentes opciones de carga del sistema operativo (por ejemplo, arrancar en un rescate o modo seguro ), y algunos programas independientes que pueden funcionar sin un sistema operativo, como probadores de memoria (por ejemplo, memtest86+ ), un shell básico (como en GNU GRUB) o incluso juegos (consulte la Lista de juegos de arranque de PC ). [55] Algunos cargadores de arranque también pueden cargar otros cargadores de arranque; por ejemplo, GRUB carga BOOTMGR en lugar de cargar Windows directamente. Por lo general, una opción predeterminada se preselecciona con un retraso de tiempo durante el cual un usuario puede presionar una tecla para cambiar la opción; Después de este retraso, la opción predeterminada se ejecuta automáticamente para que el arranque normal pueda ocurrir sin interacción.

El proceso de inicio se puede considerar completo cuando la computadora está lista para interactuar con el usuario o el sistema operativo es capaz de ejecutar programas del sistema o programas de aplicación.

Cargadores de arranque integrados y de varias etapas

Muchos sistemas integrados deben iniciarse inmediatamente. Por ejemplo, esperar un minuto para que se encienda un televisor digital o un dispositivo de navegación GPS es generalmente inaceptable. Por lo tanto, dichos dispositivos cuentan con sistemas de software en ROM o memoria flash para que el dispositivo pueda comenzar a funcionar de inmediato; Se necesita poca o ninguna carga, porque la carga se puede precalcular y almacenar en la ROM cuando se crea el dispositivo. [ cita necesaria ]

Los sistemas grandes y complejos pueden tener procedimientos de arranque que se desarrollan en múltiples fases hasta que finalmente el sistema operativo y otros programas están cargados y listos para ejecutarse. Debido a que los sistemas operativos están diseñados como si nunca se iniciaran ni se detuvieran, un cargador de arranque podría cargar el sistema operativo, configurarse como un mero proceso dentro de ese sistema y luego transferir irrevocablemente el control al sistema operativo. El gestor de arranque finaliza normalmente como lo haría cualquier otro proceso.

Arranque de red

La mayoría de las computadoras también son capaces de arrancar a través de una red informática . En este escenario, el sistema operativo se almacena en el disco de un servidor y ciertas partes del mismo se transfieren al cliente mediante un protocolo simple como el Protocolo trivial de transferencia de archivos (TFTP). Una vez transferidas estas partes, el sistema operativo asume el control del proceso de arranque.

Al igual que con el cargador de arranque de segunda etapa, el arranque en red comienza utilizando métodos genéricos de acceso a la red proporcionados por la ROM de arranque de la interfaz de red, que normalmente contiene una imagen del entorno de ejecución previa al arranque (PXE). No se requieren controladores, pero la funcionalidad del sistema está limitada hasta que se transfieren e inician el kernel y los controladores del sistema operativo. Como resultado, una vez que se ha completado el arranque basado en ROM, es completamente posible arrancar en red en un sistema operativo que no tiene la capacidad de usar la interfaz de red.

Computadoras personales (PC)

Dispositivos de arranque

Unidad flash de arranque de Windows To Go , un ejemplo de Live USB

El dispositivo de arranque es el dispositivo de almacenamiento desde el que se carga el sistema operativo. El firmware UEFI o BIOS de una PC moderna admite el arranque desde varios dispositivos, generalmente una unidad de estado sólido local o una unidad de disco duro a través de GPT o Master Boot Record (MBR) en dicha unidad o disco, una unidad de disco óptico (usando El Torito ), un dispositivo de almacenamiento masivo USB ( unidad flash USB , lector de tarjetas de memoria , unidad de disco duro USB, unidad de disco óptico USB, unidad de estado sólido USB, etc.) o una tarjeta de interfaz de red (usando PXE ). Los dispositivos de arranque BIOS más antiguos y menos comunes incluyen unidades de disquete , unidades Zip y unidades LS-120 .

Normalmente, el firmware del sistema (UEFI o BIOS) permitirá al usuario configurar un orden de arranque . Si el orden de inicio está configurado en "primero, la unidad de DVD; segundo, la unidad de disco duro", entonces el firmware intentará iniciar desde la unidad de DVD y, si esto falla (por ejemplo, porque no hay ningún DVD en la unidad), Intentará arrancar desde el disco duro local.

Por ejemplo, en una PC con Windows instalado en el disco duro, el usuario puede configurar el orden de inicio según el indicado anteriormente y luego insertar un Live CD de Linux para probar Linux sin tener que instalar un sistema operativo en el disco duro. conducir. Este es un ejemplo de arranque dual , en el que el usuario elige qué sistema operativo iniciar después de que la computadora haya realizado su autoprueba de encendido (POST). En este ejemplo de arranque dual, el usuario elige insertando o quitando el DVD de la computadora, pero es más común elegir qué sistema operativo iniciar seleccionando desde un menú del administrador de arranque en el dispositivo seleccionado, usando el teclado de la computadora para seleccione desde un menú de inicio BIOS o UEFI , o ambos; normalmente se ingresa al menú de inicio presionando las teclas o durante la POST; La configuración del BIOS generalmente se ingresa presionando las teclas o durante la POST. [56] [57]F8F12F2DEL

Hay varios dispositivos disponibles que permiten al usuario iniciar rápidamente lo que suele ser una variante de Linux para diversas tareas sencillas, como el acceso a Internet; ejemplos son Splashtop y Latitude ON . [58] [59] [60]

Secuencia de inicio

Un volcado hexadecimal del MBR boot0 de FreeBSD
Award Software BIOS desde 2000 durante el arranque

Al iniciar, la CPU x86 de una computadora personal compatible con IBM ejecuta en modo real la instrucción ubicada en el vector de reinicio (la dirección de memoria física FFFF0h en procesadores x86 de 16 bits [61] y FFFFFFF0h en procesadores x86 de 32 y 64 bits [62] [63] ), generalmente apunta al punto de entrada del firmware ( UEFI o BIOS ) dentro de la ROM. Esta ubicación de memoria generalmente contiene una instrucción de salto que transfiere la ejecución a la ubicación del programa de inicio del firmware ( UEFI o BIOS ). Este programa ejecuta una autoprueba de encendido (POST) para verificar e inicializar los dispositivos necesarios, como la memoria principal ( DRAM ), el bus PCI y los dispositivos PCI (incluida la ejecución de ROM opcionales integradas ). Uno de los pasos más complicados es configurar DRAM sobre SPD , lo que se complica aún más por el hecho de que en este punto la memoria es muy limitada.

Después de inicializar el hardware requerido, el firmware ( UEFI o BIOS ) pasa por una lista preconfigurada de dispositivos de almacenamiento no volátiles ("secuencia de dispositivos de arranque") hasta que encuentra uno que sea de arranque. Un dispositivo MBR de arranque se define como uno desde el que se puede leer y donde los dos últimos bytes del primer sector contienen la palabra little-endian AA55h , [nb 5] que se encuentra como secuencia de bytes 55h , AAh en el disco (también conocido como Firma de arranque MBR ), o donde se establezca de otro modo que el código dentro del sector es ejecutable en PC x86.

Una vez que el BIOS ha encontrado un dispositivo de arranque, carga el sector de arranque en la dirección lineal 7C00h (generalmente segmento : desplazamiento 0000h : 7C00h , [50] [52] : 29  pero algunos BIOS usan erróneamente 07C0h : 0000h [ cita necesaria ] ) y transfiere la ejecución al código de arranque. En el caso de un disco duro, esto se denomina Master Boot Record (MBR). El código MBR convencional verifica en la tabla de particiones del MBR una partición configurada como de arranque [nb 6] (la que tiene el indicador activo establecido). Si se encuentra una partición activa , el código MBR carga el código del sector de arranque de esa partición, conocido como Registro de arranque por volumen (VBR), y lo ejecuta. El código de arranque del MBR suele ser específico del sistema operativo.

El código del sector de arranque es el cargador de arranque de primera etapa. Se encuentra en discos fijos y unidades extraíbles y debe caber en los primeros 446 bytes del registro de arranque maestro para dejar espacio para la tabla de particiones predeterminada de 64 bytes con cuatro entradas de partición y la firma de arranque de dos bytes , que el El BIOS requiere un cargador de arranque adecuado, o incluso menos, cuando se incluyen características adicionales como más de cuatro entradas de partición (hasta 16 con 16 bytes cada una), una firma de disco (6 bytes), una marca de tiempo del disco (6 bytes), un activo avanzado En algunos entornos también se deben admitir particiones (18 bytes) o cargadores de arranque múltiple especiales. En los registros de arranque de volumen de disquete y superfloppy , se ocupan hasta 59 bytes para el bloque de parámetros BIOS extendido en los volúmenes FAT12 y FAT16 desde DOS 4.0, mientras que el EBPB FAT32 introducido con DOS 7.1 requiere incluso 87 bytes, dejando solo 423 bytes para el cargador de arranque. al asumir un tamaño de sector de 512 bytes. Por lo tanto, los sectores de arranque de Microsoft tradicionalmente imponían ciertas restricciones al proceso de arranque, por ejemplo, el archivo de arranque tenía que ubicarse en una posición fija en el directorio raíz del sistema de archivos y almacenarse como sectores consecutivos, [64] [ 65] condiciones cuidadas por comando y ligeramente relajado en versiones posteriores de DOS. [65] [nb 7] El cargador de arranque pudo luego cargar los primeros tres sectores del archivo en la memoria, que resultó contener otro cargador de arranque integrado capaz de cargar el resto del archivo en la memoria. [65] Cuando Microsoft agregó compatibilidad con LBA y FAT32, incluso cambiaron a un cargador de arranque que abarcaba más de dos sectores físicos y usaba 386 instrucciones por razones de tamaño. Al mismo tiempo, otros proveedores lograron incluir mucha más funcionalidad en un único sector de arranque sin relajar las limitaciones originales de una memoria mínima disponible (32 KB) y soporte de procesador (8088/8086). [nb 8] Por ejemplo, los sectores de arranque DR-DOS pueden ubicar el archivo de arranque en el sistema de archivos FAT12, FAT16 y FAT32, y cargarlo en la memoria como un todo a través de CHS o LBA, incluso si el archivo no está almacenado en una ubicación fija y en sectores consecutivos. [66] [50] [67] [68] [69] [nb 9] [nb 8]SYS

El VBR suele ser específico del sistema operativo; sin embargo, su función principal es cargar y ejecutar el archivo del cargador de arranque del sistema operativo (como bootmgro ntldr), que es el cargador de arranque de segunda etapa, desde una partición activa. Luego, el cargador de arranque carga el kernel del sistema operativo desde el dispositivo de almacenamiento.

Si no hay una partición activa, o el sector de arranque de la partición activa no es válido, el MBR puede cargar un cargador de arranque secundario que seleccionará una partición (a menudo a través de la entrada del usuario) y cargará su sector de arranque, que generalmente carga el kernel del sistema operativo correspondiente. En algunos casos, el MBR también puede intentar cargar cargadores de arranque secundarios antes de intentar arrancar la partición activa. Si todo lo demás falla, debería emitir una llamada de interrupción del BIOS INT 18h [52] [50] (seguida de un INT 19h en caso de que INT 18h regresara) para devolverle el control al BIOS, que luego intentaría arrancar. Apague otros dispositivos, intente un arranque remoto a través de la red. [50]

Muchos sistemas modernos ( Mac Intel y PC más nuevos ) utilizan UEFI . [70] [71]

A diferencia del BIOS, UEFI (no el arranque heredado a través de CSM) no depende de los sectores de arranque, el sistema UEFI carga el cargador de arranque ( archivo de aplicación EFI en el disco USB o en la partición del sistema EFI ) directamente, [72] y el kernel del sistema operativo se carga mediante el cargador de arranque.

Otros tipos de secuencias de arranque

Un gestor de arranque desbloqueado de un dispositivo Android , que muestra opciones adicionales disponibles

Muchas CPU, SoC y microcontroladores modernos (por ejemplo, TI OMAP ) o, a veces, incluso procesadores de señales digitales (DSP) pueden tener una ROM de arranque integrada directamente en su silicio, por lo que dicho procesador puede realizar una secuencia de arranque simple por sí solo y cargar programas de arranque. (firmware o software) desde fuentes de arranque como NAND flash o eMMC. Es difícil cablear toda la lógica necesaria para manejar dichos dispositivos, por lo que en tales escenarios se utiliza una ROM de arranque integrada. Además, una ROM de arranque puede cargar un cargador de arranque o un programa de diagnóstico a través de interfaces serie como UART , SPI , USB , etc. Esta característica se usa a menudo para propósitos de recuperación del sistema, o también podría usarse para la programación inicial de la memoria no volátil cuando todavía no hay ningún software disponible en la memoria no volátil. Muchos microcontroladores modernos (por ejemplo, controladores de memoria flash en unidades flash USB ) tienen firmware ROM integrado directamente en su silicio.

Algunos diseños de sistemas integrados también pueden incluir un paso de secuencia de inicio intermedio. Por ejemplo, Das U-Boot se puede dividir en dos etapas: la plataforma cargaría un pequeño SPL (cargador de programas secundario), que es una versión simplificada de U-Boot, y el SPL haría alguna configuración de hardware inicial (p. ej. Inicialización de DRAM usando el caché de la CPU como RAM) y cargue la versión más grande y con todas las funciones de U-Boot. [73] Es posible que algunas CPU y SoC no utilicen la memoria caché de la CPU como RAM en el proceso de arranque, sino que utilizan un procesador de arranque integrado para realizar algunas configuraciones de hardware y reducir costos. [74]

También es posible tomar el control de un sistema mediante el uso de una interfaz de depuración de hardware como JTAG . Una interfaz de este tipo se puede utilizar para escribir el programa del cargador de arranque en una memoria no volátil de arranque (por ejemplo, flash) ordenando al núcleo del procesador que realice las acciones necesarias para programar la memoria no volátil. Alternativamente, la interfaz de depuración se puede utilizar para cargar algún código de diagnóstico o de arranque en la RAM y luego iniciar el núcleo del procesador e indicarle que ejecute el código cargado. Esto permite, por ejemplo, la recuperación de sistemas integrados donde no queda ningún software en ningún dispositivo de arranque compatible y donde el procesador no tiene ninguna ROM de arranque integrada. JTAG es una interfaz estándar y popular; Muchas CPU, microcontroladores y otros dispositivos se fabrican con interfaces JTAG (a partir de 2009 ). [ cita necesaria ]

Algunos microcontroladores proporcionan interfaces de hardware especiales que no pueden usarse para tomar control arbitrario de un sistema o ejecutar código directamente, sino que permiten la inserción de código de inicio en una memoria no volátil de inicio (como la memoria flash) a través de protocolos simples. Luego, en la fase de fabricación, dichas interfaces se utilizan para inyectar código de arranque (y posiblemente otro código) en la memoria no volátil. Después de reiniciar el sistema, el microcontrolador comienza a ejecutar código programado en su memoria no volátil, tal como los procesadores habituales usan ROM para arrancar. En particular, esta técnica es utilizada por los microcontroladores Atmel AVR y también por otros. En muchos casos, estas interfaces se implementan mediante lógica cableada. En otros casos, dichas interfaces podrían crearse mediante software que se ejecute en una ROM de arranque integrada en el chip desde los pines GPIO .

La mayoría de los DSP tienen un arranque en modo serie y un arranque en modo paralelo, como la interfaz del puerto host (arranque HPI).

En el caso de los DSP, suele haber un segundo microprocesador o microcontrolador presente en el diseño del sistema, que es responsable del comportamiento general del sistema, el manejo de interrupciones, el manejo de eventos externos, la interfaz de usuario, etc., mientras que el DSP se dedica únicamente a tareas de procesamiento de señales. . En tales sistemas, el DSP podría iniciarse mediante otro procesador al que a veces se hace referencia como procesador host (que da nombre al puerto host). A este procesador también se lo denomina a veces maestro , ya que generalmente arranca primero desde sus propias memorias y luego controla el comportamiento general del sistema, incluido el arranque del DSP, y luego controla aún más el comportamiento del DSP. El DSP a menudo carece de sus propias memorias de arranque y, en su lugar, depende del procesador host para proporcionar el código requerido. Los sistemas más notables con este diseño son los teléfonos móviles, módems, reproductores de audio y vídeo, etc., en los que coexisten un DSP y una CPU/microcontrolador.

Muchos chips FPGA cargan su configuración desde una EEPROM serial externa ("ROM de configuración") al encenderse.

Seguridad

Se han implementado varias medidas que mejoran la seguridad del proceso de arranque. Algunos de ellos son obligatorios, otros pueden ser deshabilitados o habilitados por el usuario final . Tradicionalmente, el arranque no implicaba el uso de criptografía . La seguridad se puede eludir desbloqueando el gestor de arranque , que puede o no estar aprobado por el fabricante.

Matthew Garrett argumentó que el arranque seguro tiene un objetivo legítimo, pero al hacerlo elige valores predeterminados que son hostiles para los usuarios. [75]

Medidas

Ver también

Notas

  1. ^ Incluyendo demonios .
  2. ^ UU a menudo tenía la forma Uu, U=Dirección de la unidad de control, u=Dirección del dispositivo, pero algunas unidades de control conectaban solo 8 dispositivos; algunos conectaron más de 16. De hecho, el controlador DASD 3830 ofrecía direccionamiento de 32 unidades como opción.
  3. ^ Excluyendo el 370/145 y el 370/155, que usaban una máquina de escribir de consola 3210 o 3215.
  4. ^ Sólo el S/360 utilizó el 2250; los 360/85 , 370/165 y 370/168 usaban un teclado/dispositivo de visualización compatible con nada más.
  5. ^ La firma en el desplazamiento +1FEhen los sectores de arranque es 55h AAh, es decir, 55hen el desplazamiento +1FEhy AAhen el desplazamiento +1FFh. Dado que se debe asumir la representación little-endian en el contexto de máquinas compatibles con IBM PC , esto se puede escribir como palabra de 16 bits AA55hen programas para procesadores x86 (tenga en cuenta el orden intercambiado), mientras que tendría que escribirse como 55AAhen programas para otros Arquitecturas de CPU que utilizan una representación big-endian . Dado que esto se ha mezclado numerosas veces en libros e incluso en documentos de referencia originales de Microsoft, este artículo utiliza la representación en disco de bytes basada en desplazamiento para evitar cualquier posible mala interpretación.
  6. ^ La partición activa puede contener un cargador de arranque de segunda etapa , por ejemplo, OS/2 Boot Manager, en lugar de un sistema operativo.
  7. ^ El manual de PC DOS 5.0 indica incorrectamente que los archivos del sistema ya no necesitan ser contiguos. Sin embargo, para que el proceso de arranque funcione, los archivos del sistema aún deben ocupar las dos primeras entradas del directorio y los primeros tres sectores de IBMBIO.COM aún deben almacenarse de forma contigua. SYS continúa ocupándose de estos requisitos.
  8. ^ ab Como ejemplo, si bien la funcionalidad extendida de los MBR y los sectores de arranque de DR-DOS en comparación con sus contrapartes de MS-DOS / PC DOS aún se podría lograr utilizando técnicas de optimización de código convencionales en lenguaje ensamblador hasta 7.05 , para la adición de LBA , FAT32 y LOADER soportan los sectores 7.07 tuvieron que recurrir a código automodificable , programación a nivel de código de operación en lenguaje de máquina , utilización controlada de efectos secundarios (documentados), superposición de datos/códigos multinivel y técnicas de plegado algorítmico para comprimir todo en un solo sector físico, ya que era un requisito para la retrocompatibilidad y la compatibilidad cruzada con otros sistemas operativos en escenarios de arranque múltiple y carga en cadena .
  9. ^ Hay una excepción a la regla de que los VBR DR-DOS cargarán todo el archivo IBMBIO.COM en la memoria: si el archivo IBMBIO.COM tiene más de 29 KB, intentar cargar el archivo completo en la memoria provocaría el arranque. cargador para sobrescribir la pila y reubicar la tabla de parámetros de disco (DPT/FDPB). [A] Por lo tanto, un VBR DR-DOS 7.07 solo cargaría los primeros 29 KB del archivo en la memoria, confiando en otro cargador integrado en la primera parte de IBMBIO.COM para verificar esta condición y cargar el resto del archivo en memoria por sí sola si es necesario. Esto no causa problemas de compatibilidad, ya que el tamaño de IBMBIO.COM nunca superó este límite en versiones anteriores sin este cargador. [A] Combinado con una estructura de entrada dual, esto también permite que el sistema se cargue mediante una PC DOS VBR, lo que cargaría solo los primeros tres sectores del archivo en la memoria.

Referencias

  1. ^ "arranque". Diccionario informático de tecnologías de la información . Archivado desde el original el 5 de agosto de 2019 . Consultado el 5 de agosto de 2019 .
  2. ^ "Bootstrap". El diccionario gratuito . Archivado desde el original el 27 de agosto de 2006 . Consultado el 27 de agosto de 2008 .
  3. ^ "Levantarse por sí solo". Modismos del diccionario gratuito . Archivado desde el original el 5 de octubre de 2018 . Consultado el 7 de octubre de 2019 .
  4. ^ "Definición de Bootstrap". Términos técnicos . Archivado desde el original el 10 de mayo de 2020 . Consultado el 2 de octubre de 2019 .
  5. ^ "Levántate con tus propios medios". El buscador de frases . Archivado desde el original el 17 de abril de 2012 . Consultado el 15 de julio de 2010 .
  6. ^ Campbell-Kelly, Martín (1980). "Programación del EDSAC". Anales IEEE de la historia de la informática . 2 (1): 7–36. doi :10.1109/mahc.1980.10009.
  7. ^ Wilkes, Mauricio V .; Wheeler, David J .; Gill, Stanley (1951). La preparación de programas para una computadora digital electrónica. Addison-Wesley . Archivado desde el original el 2023-02-20 . Consultado el 25 de septiembre de 2020 .
  8. ^ Buchholz, Werner (1953). "El diseño del sistema de la computadora IBM tipo 701" (PDF) . Actas del IRE . 41 (10): 1273. Archivado (PDF) desde el original el 9 de octubre de 2022.
  9. ^ ab "Intercambio IBM 7619". Manual de referencia Sistema de procesamiento de datos 7030 (PDF) . IBM. Agosto de 1961. págs. 125-127. A22-6530-2. Archivado (PDF) desde el original el 9 de octubre de 2022.
  10. ^ Principios de funcionamiento tipo 701 y equipos asociados (PDF) . IBM. 1953. pág. 26. Archivado (PDF) desde el original el 9 de octubre de 2022 . Consultado el 9 de noviembre de 2012 .
  11. ^ De Gutenberg a Internet , Jeremy M. Norman, 2005, página 436, ISBN 0-930405-87-0 
  12. ^ Manual de funcionamiento de la máquina de procesamiento de datos electrónicos 704 (PDF) . IBM . págs. 14-15. Archivado (PDF) desde el original el 9 de octubre de 2022.
  13. ^ Guía del operador del sistema de procesamiento de datos IBM 7090 (PDF) . IBM . pag. 34. Archivado (PDF) desde el original el 9 de octubre de 2022.
  14. ^ Principios de funcionamiento de IBM 7094 (PDF) . IBM . pag. 146. Archivado (PDF) desde el original el 9 de octubre de 2022.
  15. ^ Diccionario de inglés Oxford. Universidad de Oxford . 1939.
  16. ^ Manual de funcionamiento de la máquina de procesamiento de datos de tambor magnético 650 (PDF) . IBM. 1955. págs. 49, 53–54. Archivado (PDF) desde el original el 9 de octubre de 2022.
  17. ^ Guía del operador para sistemas IBM 7040-7044 (PDF) . IBM . pag. 10. A22-6741-1. Archivado (PDF) desde el original el 9 de octubre de 2022.
  18. ^ Manual de referencia del sistema informático CONTROL DATA 6600 (PDF) (Segunda ed.). Corporación de Datos de Control . Agosto de 1963. p. 53. Archivado (PDF) desde el original el 9 de octubre de 2022.
  19. ^ Manual del sistema GE-645 (PDF) . Energia General . Enero de 1968. Archivado (PDF) desde el original el 9 de octubre de 2022 . Consultado el 30 de octubre de 2019 .
  20. ^ Manual de referencia del sistema PDP-10, parte 1 (PDF) . Corporación de equipos digitales . 1969, págs. 2–72. Archivado (PDF) desde el original el 9 de octubre de 2022 . Consultado el 9 de noviembre de 2012 .
  21. ^ ab Manual de referencia de los sistemas Burroughs B 1700 (PDF) . Corporación Burroughs . Noviembre de 1973. p. 1-14. Archivado (PDF) desde el original el 9 de octubre de 2022.
  22. ^ ab z / Principios de funcionamiento de la arquitectura (PDF) . IBM . Septiembre de 2005. págs. Capítulo 17. Archivado (PDF) desde el original el 9 de octubre de 2022 . Consultado el 14 de abril de 2007 .
  23. ^ Memoria de solo lectura BM792 y cargador de arranque MR11 ~ DB (PDF) . Corporación de equipos digitales . Enero de 1974. DIC-II-HBMAA-ED. Archivado (PDF) desde el original el 9 de octubre de 2022.
  24. ^ Manual de periféricos PDP-11 (PDF) . Corporación de equipos digitales . 1976. pág. 4-25. Archivado (PDF) desde el original el 9 de octubre de 2022.
  25. ^ Manual del usuario del procesador de datos programado-7 (PDF) . Corporación de equipos digitales . 1965. pág. 143. Archivado (PDF) desde el original el 9 de octubre de 2022.
  26. ^ Manual del usuario de PDP-9 (PDF) . Corporación de equipos digitales . Enero de 1968. p. 10-3. Archivado (PDF) desde el original el 9 de octubre de 2022.
  27. ^ Manual de referencia de sistemas PDP-15 (PDF) . Corporación de equipos digitales . Agosto de 1969. p. 10-3. Archivado (PDF) desde el original el 9 de octubre de 2022.
  28. ^ ab Cómo utilizar las computadoras Nova (PDF) . Datos generales . Abril de 1971. p. 2-30. Archivado (PDF) desde el original el 9 de octubre de 2022.
  29. ^ "Computadoras antiguas: Altair 8800b". Archivado desde el original el 3 de enero de 2020 . Consultado el 10 de diciembre de 2019 .
  30. ^ Holmer, Glenn. Altair 8800 carga 4K BASIC desde cinta de papel. Archivado desde el original el 30 de julio de 2019 . Consultado el 2 de mayo de 2016 .
  31. ^ Reinicio/cargador de BM873 (PDF) . Corporación de equipos digitales . Abril de 1974. 11 DE DICIEMBRE-H873A-BD. Archivado (PDF) desde el original el 9 de octubre de 2022.
  32. ^ Manual del operador y mantenimiento del módulo terminador/bootstrap M9301 (PDF) . Corporación de equipos digitales . Junio ​​de 1977. EK-M9301-TM-OO1. Archivado (PDF) desde el original el 9 de octubre de 2022.
  33. ^ Manual técnico del módulo terminador/bootstrap M9312 (PDF) . Corporación de equipos digitales . Marzo de 1981. EK-M9312-TM-OO3. Archivado (PDF) desde el original el 9 de octubre de 2022.
  34. ^ Manual de interfaces de microcomputadoras (PDF) . Corporación de equipos digitales . 1981. pág. 17. Archivado (PDF) desde el original el 9 de octubre de 2022.
  35. ^ "Módulo de memoria de sólo lectura 10 MRV11-C". Manual de productos de microcomputadoras (PDF) . Corporación de equipos digitales . 1985. Archivado (PDF) desde el original el 24 de octubre de 2022 . Consultado el 12 de junio de 2022 .
  36. ^ "11 Memoria de sólo lectura programable universal MRVll·D". Manual de productos de microcomputadoras (PDF) . Corporación de equipos digitales . 1985. Archivado (PDF) desde el original el 24 de octubre de 2022 . Consultado el 12 de junio de 2022 .
  37. ^ Manual de usuario del sistema PDP-11/34 (PDF) . Corporación de equipos digitales . Julio de 1977. págs. 1–5, 2-1–2-12. EK-11034-UG-001. Archivado (PDF) desde el original el 9 de octubre de 2022.
  38. ^ Manual de instalación y funcionamiento del PDP-11/60 (PDF) . Corporación de equipos digitales . Febrero de 1979. págs. 1-10, 2-29-2-34, 3-1-3-6. EK-11060-OP-003. Archivado (PDF) desde el original el 9 de octubre de 2022.
  39. ^ Manual técnico del sistema PDP-11/24 (PDF) . Corporación de equipos digitales . Junio ​​de 1981. pág. 1-6. EK-11024-TM-001. Archivado (PDF) desde el original el 9 de octubre de 2022.
  40. ^ Ciaramella, Alberto . Dispositivo para cargar automáticamente la memoria central de procesadores electrónicos Patente estadounidense nº 4.117.974. 1978-10-03. (presentado en 1975)
  41. ^ Alberto Ciaramella racconta il brevetto del boostrap dei computer concepito en CSELT [ Alberto Ciaramella analiza la patente para computadoras de arranque concebidas en CSELT ] (en italiano). Archivado desde el original el 13 de noviembre de 2021.
  42. ^ Manual técnico del sistema PDP-11/44 (PDF) . Corporación de equipos digitales . Febrero de 1979. p. 6-57. EK-KD11Z-TM-001. Archivado (PDF) desde el original el 9 de octubre de 2022.
  43. ^ Guía del usuario del hardware VAX-11/780 (PDF) . Corporación de equipos digitales . Febrero de 1979. 2.3 BOOTSTRAPPING y 3.6.1 Comando de arranque (B). EK-11780-UG-001. Archivado (PDF) desde el original el 9 de octubre de 2022.
  44. ^ Descripción técnica de la unidad central de procesamiento VAX-11/730 (PDF) . Corporación de equipos digitales . Mayo de 1982. pág. 1-9. EK-KA730-TD-001. Archivado (PDF) desde el original el 9 de octubre de 2022.
  45. ^ Guía de instalación del software VAX-11/750 (PDF) . Corporación de equipos digitales . Diciembre de 1982. págs. 1-2–1-4, B-1–B-8, C-1–C-2. AA-K410C-TE. Archivado (PDF) desde el original el 9 de octubre de 2022.
  46. ^ Osborne, Adán ; Kane, Gerry (1981). Manual del microprocesador Osborne de 16 bits (PDF) . OSBORNE/McGraw-Hill. págs. 5–27. ISBN 0-931988-43-8. Archivado (PDF) desde el original el 9 de octubre de 2022 . Consultado el 23 de agosto de 2019 .
  47. ^ Manual del desarrollador de software de arquitecturas Intel 64 e IA-32, volumen 3 (3A, 3B, 3C y 3D): Guía de programación del sistema (PDF) . Archivado (PDF) desde el original el 9 de octubre de 2022.
  48. ^ Osborne, Adán ; Kane, Gerry (1981). Manual del microprocesador Osborne de 4 y 8 bits . Osborne/McGraw-Hill. págs. 10-20. ISBN 0-931988-42-X.
  49. ^ Anuncio de Apple, Interface Age, octubre de 1976
  50. ^ abcde Paul, Matías R. (29 de septiembre de 1997) [29 de septiembre de 1997]. "Caldera OpenDOS 7.01/7.02 Actualización Alpha 3 IBMBIO.COM - README.TXT y BOOT.TXT - Una breve descripción de cómo se inicia OpenDOS". Archivado desde el original el 4 de octubre de 2003 . Consultado el 29 de marzo de 2009 .[1]
  51. ^ Sakamoto, Masahiko (13 de mayo de 2010). "¿Por qué BIOS carga MBR en 7C00h en x86?". Glamenv-Septzen.net . Archivado desde el original el 24 de agosto de 2017 . Consultado el 22 de agosto de 2012 .
  52. ^ a b C Compaq Computer Corporation; Phoenix Technologies Ltd; Corporación Intel (11 de enero de 1996). "Especificación de arranque del BIOS 1.01" (PDF) . Archivado (PDF) desde el original el 9 de octubre de 2022 . Consultado el 21 de diciembre de 2017 .
  53. ^ Equipo de cargador de arranque de Red Hat. "Cargador de cuñas UEFI". GitHub . Consultado el 28 de octubre de 2023 .
  54. ^ "Capítulo 6: Solución de problemas de inicio y de disco". Kit de recursos de Windows NT Server . Microsoft. Archivado desde el original el 15 de mayo de 2007.
  55. ^ "Tinte". arranque central. Archivado desde el original el 28 de diciembre de 2010 . Consultado el 20 de noviembre de 2010 .
  56. ^ "Lista de marcas de PC con sus correspondientes teclas de acceso rápido". www.disk-image.com . Archivado desde el original el 11 de noviembre de 2020 . Consultado el 26 de septiembre de 2020 .
  57. ^ "Cómo ingresar al BIOS en cualquier PC: claves de acceso por fabricante | Hardware de Tom". www.tomshardware.com . Archivado desde el original el 2023-02-20 . Consultado el 26 de septiembre de 2020 .
  58. ^ Marrón, Eric (2 de octubre de 2008). "MontaVista Linux impulsa la función de inicio rápido de Dell". linuxdevices.com . Consultado el 20 de noviembre de 2010 .
  59. ^ Larabel, Michael (14 de junio de 2008). "¿SplashTop Linux en portátiles HP y Dell?". Forónix . Archivado desde el original el 5 de octubre de 2016 . Consultado el 20 de noviembre de 2010 .
  60. ^ "IOS Instant-On de Voodoo Envy (con tecnología Splashtop)". YouTube. Archivado desde el original el 13 de noviembre de 2021 . Consultado el 20 de noviembre de 2010 .
  61. ^ "Manual de referencia del programador iAPX 286" (PDF) . Intel . 1983. Sección 5.3 INICIALIZACIÓN DEL SISTEMA, p. 5-7. Archivado (PDF) desde el original el 9 de octubre de 2022 . Consultado el 23 de agosto de 2019 . Dado que el registro CS contiene F000 (especificando así un segmento de código que comienza en la dirección física F0000) y el puntero de instrucción contiene FFF0, el procesador ejecutará su primera instrucción en la dirección física FFFF0H.
  62. ^ "Manual de referencia del programador 80386" (PDF) . Intel. 1986. Sección 10.2.3 Primeras instrucciones, pág. 10-3. Archivado (PDF) desde el original el 9 de octubre de 2022 . Consultado el 3 de noviembre de 2013 . Después de RESET, las líneas de dirección A31 a 20 se afirman automáticamente para la recuperación de instrucciones. Este hecho, junto con los valores iniciales de CS:IP, hace que la ejecución de la instrucción comience en la dirección física FFFFFFF0H.
  63. ^ "Manual del desarrollador de software de arquitecturas Intel 64 e IA-32" (PDF) . Corporación Intel . Mayo de 2012. Sección 9.1.4 Primera instrucción ejecutada, p. 2611. Archivado (PDF) desde el original el 9 de octubre de 2022 . Consultado el 23 de agosto de 2012 . La primera instrucción que se recupera y ejecuta después de un reinicio del hardware se encuentra en la dirección física FFFFFFF0h. Esta dirección está 16 bytes por debajo de la dirección física superior del procesador. La EPROM que contiene el código de inicialización del software debe estar ubicada en esta dirección.
  64. ^ Zbikowski, Marcos ; Allen, Pablo ; Ballmer, Steve ; Borman, Rubén; Borman, Rob; Mayordomo, John; Carroll, tirada; Chambelán, Marcos; Chell, David; Colee, Mike; Courtney, Mike; Dryfoos, Mike; Duncan, Raquel; Eckhardt, Kurt; Evans, Eric; Granjero, Rick; Puertas, Bill ; Geary, Michael; Grifo, Bob; Hogarth, Doug; Johnson, James W.; Kermaani, Kaamel; Rey, Adrián; Koch, caña; Landowski, James; Larson, Chris; Lennon, Thomas; Lipkie, Dan; McDonald, Marc ; McKinney, Bruce; Martín, Pascal; Mathers, Estelle; Mateos, Bob; Melín, David; Mergentime, Charles; Nevin, Randy; Newell, Dan; Newell, Tani; Norris, David; O'Leary, Mike; O'Rear, Bob ; Olsson, Mike; Osterman, Larry; Ostling, cresta; Pai, Sunil; Paterson, Tim ; Pérez, Gary; Peters, Chris; Petzold, Carlos ; Pollock, Juan; Reynolds, Aarón ; Rubin, Darryl; Ryan, Ralph; Schulmeisters, Karl; Shah, Rajen; Shaw, Barry; Breve, Antonio; Slivka, Ben; Sonríe, Jon; Fabricante de alambiques, Betty; Stoddard, Juan; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck, Steve (1988). "Asesores técnicos". La enciclopedia MS-DOS: versiones 1.0 a 3.2 . Por Duncan, Ray; Bostwick, Steve; Burgoyne, Keith; Byers, Robert A.; Hogan, Thom; Kyle, Jim; Letwin, Gordon ; Petzold, Carlos ; Rabinowitz, Chip; Tomlin, Jim; Wilton, Richard; Wolverton, furgoneta; Wong, William; Woodcock, JoAnne (edición completamente reelaborada). Redmond, Washington, Estados Unidos: Microsoft Press . ISBN 1-55615-049-0. LCCN  87-21452. OCLC  16581341.(xix + 1570 páginas; 26 cm) (NB. Esta edición se publicó en 1988 después de una extensa revisión de la primera edición retirada de 1986 por parte de un equipo diferente de autores: "The MS-DOS Encyclopedia (1988)". PCjs Machines . Archivado desde el original el 2018-10-14.)
  65. ^ abc Chappell, Geoff (enero de 1994). "Capítulo 2: La huella del sistema". En Schulman, Andrés; Pedersen, Amorette (eds.). Partes internas de DOS . Serie de programación de Andrew Schulman (primera impresión, primera edición). Compañía editorial Addison Wesley . ISBN 978-0-201-60835-9.(xxvi+738+iv páginas, disquete de 3,5" [2][3]) Erratas: [4][5][6]
  66. ^ Rosch, Winn L. (12 de febrero de 1991). "DR DOS 5.0 - ¿El mejor sistema operativo?". Revista PC . vol. 10, núm. 3. pág. 241–246, 257, 264, 266. Archivado desde el original el 25 de julio de 2019 . Consultado el 26 de julio de 2019 . […] SYS se ha mejorado en DR DOS 5.0 para que no tenga que preocuparse por dejar libre el primer clúster en un disco que desea que sea de arranque. Los archivos del sistema DR DOS se pueden ubicar en cualquier lugar del disco, por lo que se puede configurar cualquier disco con suficiente espacio libre para iniciar su sistema. […](NB. La fuente atribuye esto a la utilidad SYS, mientras que en realidad es una característica del cargador de arranque avanzado en el sector de arranque. SYS simplemente coloca este sector en el disco).
  67. ^ Paul, Matías R. (17 de enero de 2001). "FAT32 en DR-DOS". opendos@delorie . Archivado desde el original el 6 de octubre de 2017 . Consultado el 6 de octubre de 2017 . […] El sector de arranque DR-DOS […] busca el archivo IBMBIO.COM ( DRBIOS.SYS ) y luego carga el archivo *completo* en la memoria antes de pasarle el control. […]
  68. ^ Paul, Matías R. (20 de febrero de 2002). "No puedo copiar". opendos@delorie . Archivado desde el original el 6 de octubre de 2017 . Consultado el 6 de octubre de 2017 . […] El sector de arranque DR-DOS carga todo el archivo IBMBIO.COM en la memoria antes de ejecutarlo. No le importa en absoluto el archivo IBMDOS.COM , que carga IBMBIO.COM. […] El sector de arranque DR-DOS […] encontrará los […] archivos del kernel siempre que estén almacenados lógicamente en el directorio raíz. Su ubicación física en el disco, y si están fragmentados o no, no importa el sector de arranque DR-DOS. Por lo tanto, puede simplemente copiar los archivos del kernel al disco (incluso con un simple COPY ), y tan pronto como el sector de arranque sea un sector DR-DOS, los encontrará y los cargará. Por supuesto, es difícil poner todo esto en sólo 512 bytes, el tamaño de un solo sector, pero esto es una gran mejora en términos de conveniencia si tiene que configurar un sistema DR-DOS, y también es la clave para el DR. -Utilidad DOS multi-OS LOADER para funcionar. Los archivos del kernel de MS-DOS deben residir en ubicaciones específicas, pero los archivos DR-DOS pueden estar en cualquier lugar, por lo que no es necesario intercambiarlos físicamente cada vez que inicia el otro sistema operativo. Además, permite actualizar un sistema DR-DOS simplemente copiando los archivos del kernel sobre los antiguos, sin necesidad de SYS , ni procedimientos de configuración difíciles como los requeridos para MS-DOS/ PC DOS . Incluso puede tener varios archivos del kernel DR-DOS con diferentes nombres de archivo almacenados en la misma unidad, y LOADER cambiará entre ellos de acuerdo con los nombres de archivo enumerados en el archivo BOOT.LST . […]
  69. ^ Paul, Matías R. (14 de agosto de 2017) [7 de agosto de 2017]. "La continuación de la saga de Windows 3.1 en modo mejorado en OmniBook 300". MoHPC: el museo de las calculadoras HP . Archivado desde el original el 6 de octubre de 2017 . Consultado el 6 de octubre de 2017 . […] DR-DOS FDISK no solo particiona un disco, sino que también puede formatear los volúmenes recién creados e inicializar sus sectores de arranque de una sola vez, por lo que no hay riesgo de estropear accidentalmente el volumen incorrecto y no es necesario FORMATEAR /S o SYS . Luego, puede simplemente copiar los archivos DR-DOS restantes, incluidos los archivos del sistema. Es importante saber que, a diferencia de MS-DOS / PC DOS , DR-DOS tiene sectores de arranque "inteligentes" que en realidad "montarán" el sistema de archivos para buscar y cargar los archivos del sistema en el directorio raíz en lugar de esperando que se coloquen en un lugar determinado. Físicamente, los archivos del sistema pueden ubicarse en cualquier lugar y también pueden fragmentarse. […]
  70. ^ "Marco de innovación de la plataforma Intel para EFI". Intel. Archivado desde el original el 21 de agosto de 2011 . Consultado el 7 de enero de 2008 .
  71. ^ "OpenBIOS - arranque central". coreboot.org. Archivado desde el original el 18 de marzo de 2013 . Consultado el 20 de marzo de 2013 .
  72. ^ "UEFI - Wiki OSDev". wiki.osdev.org . Archivado desde el original el 12 de noviembre de 2020 . Consultado el 26 de septiembre de 2020 .
  73. ^ "Descripción general: las cuatro etapas del gestor de arranque". ti.com . Instrumentos Texas . 2013-12-05. Archivado desde el original el 23 de diciembre de 2014 . Consultado el 25 de enero de 2015 .
  74. ^ "Documentación del proceso de arranque rxos ​​1.0rc1" . Consultado el 25 de octubre de 2015 .
  75. ^ "mjg59 | Boot Guard y PSB tienen valores predeterminados hostiles al usuario". mjg59.dreamwidth.org . Consultado el 30 de noviembre de 2022 .
  76. ^ "Microsoft bloquea los cargadores de arranque UEFI que permiten la omisión del arranque seguro de Windows". Computadora que suena . Consultado el 11 de diciembre de 2022 .