TA的每日心情 | 奋斗 昨天 10:07 |
---|
签到天数: 2385 天 [LV.Master]伴坛终老
|
Windows XP启动阶段概览
+ G+ X# ]8 @3 O3 A9 O8 Z+ V( o
1 F$ t/ [9 v% y' G从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段:
* X- Z: u v- N! N! Y- r9 _4 \9 h
1. 预引导(Pre-Boot)阶段;
8 Q8 Q1 k6 S: q3 Z% E" }
+ T8 m0 x! V4 L+ v2. 引导阶段; : u; R! W- S# L
: N5 b" ~7 X C* x
3. 加载内核阶段;
, f& C+ W1 [# h% g: {# U# ^1 @
, @. n* P" h& l9 {& D7 r4. 初始化内核阶段;
`) x+ L7 u; P# z
, d" _ }( a8 {2 v: b5. 登陆。 ! ~$ ]" n* M. Y4 L5 A, h
; Q* h5 ^& q: w0 h3 l9 ^-------------------------------------------------------------------------------- ^9 _3 g$ N3 i4 m
$ L; l: D9 k. w* S. C4 A9 ~
每个启动阶段的详细介绍
6 I6 u- T) y5 @& P0 D; e$ \1 t: H' p. H9 s9 s5 y$ q6 S
a) 预引导阶段 9 ^& r3 c4 |4 A# f" B! @3 f
& f' y8 ^8 j; ^* R/ y; W+ o( l
在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。 2 n6 g3 }4 t$ e0 @& E
, y2 V+ P% U2 s' ~+ ~% p
b) 引导阶段
5 S" B" \: J, f# J5 d. k- y. O- w; E2 @; V) H- L6 Z, h0 T5 _
Windows XP Professional引导阶段包含4个小的阶段。
6 ?# k5 d0 ~6 E# M0 i( ~3 Z$ f4 t, ?9 l: [* {
首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。 " A, h9 g7 K* Z: W
( I2 P) R4 @" b4 g& k1 f0 {
接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。(至于操作系统选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个,见图一。) ' C' `; K1 j+ T1 r# N
( }) \9 @/ J8 a( f: \, f0 z在boot.ini中,主要包含以下内容:
% r0 r; Y& M5 o( v! H* q& x$ n$ J% W- }. a' T
[boot loader]
7 C" ^2 z. y5 T4 j9 d1 h/ P/ c: ~/ g, g% I9 Y: _0 L# t
timeout=30
( u2 p5 [& o, R. }: y, E2 b+ c) E: j- X. A, g
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
9 a- v) X5 p9 a5 ?% y% N a) ]( X" J# |% j) g8 w0 N
[operating systems]
$ d/ y6 u# {! Z: F0 R2 F: D# n6 h7 z: p4 L$ E5 M
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
% C. t, p( I, B$ [7 R/ f* m$ a$ Q: J& W2 g
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional" ; ]( I$ p& [3 ]8 B5 z# G
# O( [; K0 V# e& B1 l
其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。 ! M3 z5 w I# v; m" N( s
. _; U* B" Z! _8 z在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。
& V' y5 y. m5 ~4 S) [8 V7 |& i8 f, T- ?$ R
硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。 6 d5 i; V6 |" \9 i5 R+ J
! _! H, u$ |9 b7 S! z
引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。 4 ~+ K( w5 V+ s. |0 Q
0 j+ `6 Z9 n& o3 d( dc) 加载内核阶段
# P4 N3 \, U: X% V% H
/ g' H4 V `5 @9 T9 B! Q在加载内核阶段,ntldr加载称为Windows XP内核的ntokrnl.exe。系统加载了Windows XP内核但是没有将它初始化。接着ntldr加载硬件抽象层(HAL,hal.dll),然后,系统继续加载HKEY_LOCAL_MACHINE\system键,NTLDR读取select键来决定哪一个Control Set将被加载。控制集中包含设备的驱动程序以及需要加载的服务。NTLDR加载HKEY_LOCAL_MACHINE\system\service\...下start键值为0的最底层设备驱动。当作为Control Set的镜像的Current Control Set被加载时,ntldr传递控制给内核,初始化内核阶段就开始了。 0 n! z( g# r$ g/ g/ {: |' I
4 E# J$ a ^0 f6 X& b) U
d) 初始化内核阶段 9 i# G" W$ c. ~& G$ S8 W
9 m- P: j' y3 U# k% N
在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务:
" S8 u. g5 \8 }2 j% l' |# G
2 B0 ^, j4 L9 |, `) v' z3 y t. m? 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。 ( B. i- i$ C4 ~: k, A s
& l4 r2 L$ r! H) O$ s
? 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。 ! d, W& A) l7 o% ~) k& V
4 U! ?1 r* J8 B( v: l, y? 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行
0 T9 j( S {' y% _# Z+ |8 J. J- t& ?) Q7 m) h1 t
? Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。 " K4 L$ N# Y' I
9 S ]* k& E9 ^" O
e) 登陆
1 R$ ~( E3 V' ^1 y' S# m
# h8 k- T. r% C* `? Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。 0 |7 [" h( b$ v7 k( {1 Q
8 K9 l4 W! s, ~0 x1 }3 y
? 提示输入有效的用户名或密码。 . \8 K9 R9 b) k) I
9 S. G+ s! X5 e4 j? Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。 Q1 P8 i& g2 u* _3 E" i
5 _1 A; H) J! C4 u/ q4 _只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。
# Y- b1 O. q0 n! d
8 ?; i; l! {/ u& c |
|