Cómo iniciar rápidamente su computadora en el escritorio de Windows
El proceso de inicio de Windows incluye principalmente las siguientes partes:
1. Registro de arranque maestro (MBR)
2 Sector de arranque
3.Ntldr (Algunas personas pueden estar familiarizadas con esto. ¿Se encontró con que no se puede encontrar Ntldr al iniciar?
4. Ntoskrnl.exe
5.Smss
6. Winlogon
7. Administrador de control de servicios (SCM)
OK.
En esta publicación de blog, usaré el proceso de inicio anterior. Repasa estos componentes uno por uno. Por supuesto, la mayor parte proviene de los capítulos correspondientes (Inicio y Apagado) de los libros Inside Windows 2000 y Windows Internals. Básicamente, todo lo que puedo hacer es traducirlos, puede haber algunos que sean relevantes. comentarios como máximo.
Por supuesto, si ha leído el código fuente del proceso de inicio de Linux, es posible que no esté satisfecho con el siguiente contenido. Básicamente, no hablaré sobre hardware aquí (Parte I. Puede que solo agregue contenido relacionado con el hardware que conozco), quien nos dijo que no miráramos el código fuente, jaja
Bienvenido a discutir y agregar
p.d. Sólo estoy aquí para tomar asiento hoy, pero no sé de qué estoy hablando: Genial:
-------------------- ---. ---------------------------------------------- ---- ---------------------------------------------- -
1.MBR amp; sector de arranque
El disco duro físico se direcciona por sectores y el programa de instalación de Windows escribirá algo de contenido en el primer sector del disco duro, donde instalará el sistema. Esta parte se llama registro de inicio maestro (MBR).
El registro de inicio maestro consta de dos partes:
(1). p>
( 2). Tabla de particiones;
Código de inicio, es decir, código de inicio. Este código se ejecuta cuando se inicia el sistema y el BIOS completará la autoverificación y seleccionará el inicio. dispositivo (
Uno de los discos duros), luego lea el MBR del disco duro en la memoria y salte a la dirección del MBR para ejecutar el código de arranque
La tabla de particiones. sólo tiene 4 entradas porque MS OS permite dividir el disco en hasta 4.
El contenido de la tabla de particiones aquí es la información de estas 4 particiones, incluidos sus sectores iniciales,
indicadores correspondientes, etc.
Durante el proceso de inicio, el código de inicio del MBR busca en la tabla de particiones una partición con el indicador de inicio (también llamado Activo), luego lee en el primer sector de la partición ( el sector de arranque) y ejecuta el código que contiene.
Antes de que el instalador escriba el sector de arranque, necesita conocer el tipo de sistema de archivos de la partición (FAT, FAT32, NTFS) y luego escribir
un sector de arranque diferente.
¿Por qué diferentes sistemas de archivos requieren diferentes sectores de arranque? La razón es que la tarea del sector de arranque es cargar el archivo de arranque del sistema operativo y el proceso de carga del archivo requiere la participación del sistema de archivos. Por lo tanto, para diferentes sistemas de archivos, se requieren diferentes códigos de soporte del sistema de archivos en el. sector de arranque. para completar la carga de archivos del sistema. Para el arranque de Windows
, el archivo que debe cargarse es Ntldr.
Cabe añadir que el código de soporte del sistema de archivos en el sector de arranque está "minimizado".
Después de todo, un sector de arranque tiene sólo
512 bytes de tamaño como máximo y es poco probable que venga con un sistema de archivos completo. Además, nuestros requisitos son simples: solo queremos que comprenda el sistema de archivos y lea los archivos que contiene, sin escribir archivos.
Después de que el sector de arranque carga Ntldr, salta al punto de entrada de Ntldr y deja la tarea de toma de control a Ntldr. En este punto,
el sistema todavía se está ejecutando en modo real de 16 bits y Ntldr activará la paginación y entrará en modo protegido de 32 bits.
Durante este proceso, puede aparecer el siguiente mensaje de error:
Para sistemas de archivos NTFS, "BOOT: No se puede encontrar NTLDRP";
Para archivos FAT system, "NTLDR desaparecido";
Este error indica que el sector de arranque no encontró Ntldr en el directorio raíz de la partición.
------------------------------------------- ----- --------------------------------------------- ----- ------ ------------------
2. NTLDR
NTLDR es un " intermediario". Cuando el sector de arranque ingresa a NTLDR, el sistema está en modo real y cualquier dirección a la que accede el programa es una dirección real, es decir, una dirección física. Esta es la dirección física (y, por supuesto, las capacidades de segmentación básicas de 80x86, que debe conocer si ha estudiado este ensamblaje en modo real), y este rango de direcciones también está limitado a 1 M (dirección de 20 bits). Por lo tanto, lo primero que debe hacer después de ingresar a NTLDR es cambiar al modo protegido para tener acceso completo al rango de direcciones de 32 bits. Sin embargo, dado que la tabla de páginas correspondiente aún no se ha configurado en este momento, no hay traducción de direcciones reales a virtuales (es decir, aún no está paginada).
NTLDR necesita inicializar una tabla de páginas y luego activar la paginación. En este punto, el sistema ya se encuentra en el estado estándar de Windows (paginación en modo protegido). Una cosa que me perdí cuando hablé de ingresar al modo protegido es inicializar GDT e IDT. La clave aquí es que Windows usa el modo de memoria plana, lo que significa que en el modo protegido, la dirección base de todos los segmentos es la misma. Este punto está estrechamente relacionado con el mecanismo de gestión de la memoria, por lo que lo mencionaré aquí primero.
Cuando el sistema está en modo protegido, NTLDR todavía depende de algunas llamadas al BIOS para acceder al disco y mostrar el sistema. Si el disco es SCSI y las llamadas al BIOS no pueden acceder a él, NTLDR cargará Ntbootdd.sys en lugar del código de acceso al disco en el código de inicio. NTLDR es similar al sector de arranque y también contiene código de solo lectura para sistemas de archivos NTFS y FAT, pero se diferencia en que tiene un acceso ligeramente mejorado a los subdirectorios.
Desde Windows 2000, existe un método de "hibernación" para apagar el sistema. NTLDR necesita verificar si hay un archivo Hiberfil.sys válido en el sistema. Si existe, significa que el último apagado fue por hibernación. Entonces NTLDR toma un atajo: lee el archivo Hiberfil.sys y salta directamente al código del kernel que "despierta la hibernación" e inicia la computadora.
En condiciones de arranque normales, NTLDR lee el archivo boot.ini. Si el archivo parece tener varias opciones de inicio, se muestra un menú de inicio para que el usuario elija.
Aquí hay una posible excepción, aunque ahora es muy poco probable. La excepción a esto es la presencia de opciones de arranque de DOS (series Win9x y ME).
En este caso, NTLDR carga el archivo Bootsect.dos, vuelve al modo real y salta al código MBR del archivo. En este punto, NTLDR está en el mismo estado que al comienzo del proceso de inicio (leyendo el MBR) y se inicia el sistema operativo correspondiente.
Después de que el usuario selecciona el menú de inicio, NTLDR también necesita hacer algo según los parámetros del elemento. Estos parámetros no se explican aquí.
Luego continuamos...
NTLDR carga y ejecuta Ntdetect.com, un programa en modo protegido de 16 bits llamado por el BIOS para obtener información del hardware del sistema (como el tipo de bus, hora del sistema, unidades de disco, puertos serie y paralelo, etc.), y luego agregue esta información y devuélvala a NTLDR, guardándola en la etiqueta de registro en HKLM\HARDWARE\DESCRIPTION.
Todo el trabajo anterior parece realizarse en segundo plano y no es visible para el usuario excepto quizás el menú de inicio. Bien, a continuación es el momento de dar a los usuarios algunos comentarios.
NTLDR limpia la pantalla y muestra "Iniciando Windows" y una barra de progreso. La diferencia entre 2000 y XP/2003 es que la barra de progreso que se muestra en 2000 es en blanco y negro y no hay ningún logotipo de Windows en la pantalla, mientras que la barra de progreso que se muestra en XP/2003 está coloreada con el logotipo de Windows (jaja, las pantallas a color son populares ahora). Tenga en cuenta que la barra de progreso de NTLDR está vacía hasta que comience la carga del "controlador de arranque".
Otra cosa que puede notar es que cuando dice "Iniciando Windows" también dice "Para solución de problemas y opciones de inicio avanzadas para Windows, presione F8". (Para solución de problemas y opciones de inicio avanzadas, presione F8), luego, cuando aparece la barra de progreso y comienza a desplazarse (hacia adelante), no hay posibilidad de presionar F8 para ingresar al modo seguro o cualquier otra opción. De hecho, hay una razón para esto. Porque antes de que el sistema comience a cargar el controlador, lo principal que hace es cargar el archivo del kernel y la sección del sistema en el registro. Estas dos cosas no tienen nada que ver con otros métodos de inicio, como el modo seguro. Tanto el modo seguro como el inicio estándar necesitan cargar estas dos cosas. La diferencia entre el modo seguro y el modo estándar es que cargan controladores diferentes. Por lo tanto, una vez que Windows comienza a cargar estos controladores de arranque, no hay forma de cambiar los modos en ellos.
Para que NTLDR comience a mostrar "Iniciando Windows", se requieren los siguientes pasos:
1. Cargue el kernel y HAL correctos (el valor predeterminado es Ntoskrnl.exe y Hal.dll). Si NTLDR encuentra un error al cargar estos dos archivos y no puede completar la carga, se mostrará el siguiente mensaje de error: Windows no puede iniciarse porque faltan los siguientes archivos o están dañados y le indicará el nombre del archivo que no se puede cargar.
2. Lea la sección del sistema desde \Windows\System32\Config\System.
Nota: hive es un archivo que contiene algún tipo de subárbol en el registro.
3. Busque todos los controladores de inicio en la sección del sistema (el valor inicial de dichos controladores es 0, es decir, SERVICE_BOOT_START). Todos los controladores del sistema tienen las subclaves correspondientes en el registro en HKLM\SYSTEM\CurrentControlSet\Services.
4. Cargue el controlador del sistema de archivos de la partición donde se encuentra el controlador de arranque para poder cargarlo más tarde.
5. En este momento, la barra de progreso en la pantalla comienza a actualizarse. Para Windows 2000, se trata de una barra de progreso en blanco y negro.
6. Configure los registros de la CPU y salte a la entrada Ntoskrnl.exe.
Bueno, el trabajo de NTLDR finalmente se completa y todo se entrega a Ntoskrnl. Por supuesto, al transferir el control, la información que necesita la otra parte (incluido el diseño de la memoria, la información del hardware, el subárbol del sistema, etc.) también debe entregarse a Ntoskrnl, para que NTLDR pueda completar su misión
(Primero, observe el problema del hardware. Si la configuración no es alta, puede haber tales problemas, pero los modelos convencionales actuales generalmente no son tan malos, a menos que la computadora sea demasiado vieja. Si este es el caso, no hay nada que pueda hacer. puede hacer
En segundo lugar, es posible que su unidad C tenga demasiadas cosas instaladas, lo que afecta la velocidad de lectura del sistema. Se recomienda que solo mantenga el sistema XP en la unidad C. elimine todo lo demás. Configure la memoria virtual a un valor más alto. Es mejor no usar la unidad C, pero busque un disco de partición más grande y configure la memoria virtual. Instale un programa de optimización, limpie la basura del sistema y elimine lo innecesario. Elementos de inicio. También hay un programa llamado WINDOWS Accelerator que puede funcionar. Aumente la velocidad de inicio en 50.
Hay muchas razones por las que el sistema funciona lentamente. Puede estar envenenado, así que elimine el virus.
Si no puede hacerlo, debe reiniciar el sistema, volver a particionar el disco duro y agrandar la unidad C. La unidad C no debe usarse para ningún otro propósito que no sea el sistema. /p>
Las opiniones personales anteriores son útiles para todos y todos pueden discutirlas).