系统启动步骤

在xp系统下,系统引导过程中涉及到的组件.


主要过程:

打开电源

---->通电自检(Power-On Self Test,POST)[这一步主要会对计算机中安装的处理器、内存等硬件进行检测]。

---->BIOS读取硬盘中的0道0面0区(MBR主引导区)的内容,执行前446字节程序代码,分析并检测当前分区表的完好性和可用性,再根据MBR中的分区表信息内容,寻找到当前可引导活动分区。

---->加载主活动分区的引导扇区内容(Dos Boot Record,DBR),DBR从磁盘根目录中读取Ntldr文件。 [Setup程序在写一个引导扇区之前,会根据不同分区格式,往引导扇区中写入不同的内容。例如,如果引导分区是一个FAT分区,那么,Windows把能理解FAT文件系统的代码写到引导扇区中。引导扇区代码职责是,给Windows提供有关卷的结构和格式方面的信息,并且从该卷的根目录中读入Ntldr文件。在引导扇区的代码将Ntldr加载到内存中以后,它把控制权交给Ntldr的入口点。]

---->Ntldr根据内建的文件系统代码进行初始化,然后从根目录读取boot.ini文件。

---->Ntldr清除屏幕,如果boot.ini中有多种引导选项,则显示引导选择菜单;如果在boot.ini制定的超时范围内未有任何动作的话,Ntldr会根据默认选项启动电脑。

---->Ntldr加载并执行Ntdetect.com(这是一个使用系统bios进行查询计算机基本设备和设置信息的16位实模式程序,比如查询存储在系统CMOS中的时间和日期信息)。[细节:Ntdetect.com首先要将当前计算机中安装的所有硬件信息收集起来,并列成一个表,接着将该表交给Ntldr(这个表的信息稍后会被用来创建注册表中有关硬件的键)。这里需要被收集信息的硬件类型包括:总线/适配器类型、显卡、通讯端口、串口、浮点运算器(CPU)、可移动存储器、键盘、指示装置(鼠标)。至此,硬件检测操作已经成功完成。]

---->接着Ntldr清屏并显示"Starting Windows……"进度条。这个进度条保持空白直到Ntldr开始加载引导驱动程序(假如有100个引导驱动程序,则每加载一个文件,进度条增加1%)。

---->Ntldr加载合适的内核和HAL映像文件(默认为Ntoskrnl.exe和HAL.dll),读入SYSTEM注册表hive文件(hive文件是一种包含注册表子树的文件)以确定该加载哪些引导驱动程序,加载引导驱动程序,准备CPU寄存器以便执行Ntoskrnl.exe。

---->Ntldr调用Ntoskrnl.exe,为它传递一大堆的数据信息[包含Boot.ini中代表本次引导的菜单选择项所在的字符串;还包括3个指针,一个是指向那些由Ntldr生成的,用来描述系统中物理内存的内存表,第二个指向HARDWARE和SYSTEM注册表HIVE在内存中的拷贝,第三个指向Ntldr加载的引导驱动程序列表]。然后,Ntoskrnl.exe开始分两阶段初始化,在一系列的初始化工作完成后Ntoskrnl.exe为系统本机应用程序作准备并运行smss.exe。

初始化时函数调用如下:


--->Smss开始执行。它的首要任务是启动Windows子系统,然后初始化注册表,创建系统环境变量,加载Win32子系统(Win32k.sys)的内核模式部分,启动子系统进程Csrss,启动登陆进程Winlogon。

Smss具体要做的事很多(此处未列全,具体参看《Windows Internals》):

①运行在HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\Session Manager \BootExecute中定义的任何程序。在通常情况下,这个值包含了一条命令,来运行Autochk.exe进行自检。

② 根据HKLM\SYS-TEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations 和 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations2的指示,执行延迟的文件重命名和删除操作。

③打开已知的DLL, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs在对象管理器的名字空间的\Knowndlls目录里为这些DLL创建section object。

④创建虚拟内存,即 c:\pagefile.sys,对应注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PagingFiles

⑤将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment中定义的系统环境变量建立起来。

PS:在执行了这些初始化步骤以后,Smss中的主线程进入无限等待,它等待Csrss和Winlogon的进程句柄。如果这两个进程中的任何一个非正常终止了,Smss就会让系统崩溃,因为Windows依赖于这两个进程的存在(在Windows xp及以后的版本中,如果Csrss出于任何一个理由退出了,那么,是内核使系统崩溃,而不是Smss。

--->然后Winlogon开始执行其启动步骤,如创建初始的窗口和桌面对象等,并加载设备驱动程序和本机安全验证子系统进程Lsass.exe。

(如果HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL中指定一个DLL,那么,Winlogon使用该DLL作为Windows登录对话框)。

----->接着Winlogon创建服务控制管理器(SCM)进程(Winnt\System32\Services.exe),它加载所有的标记为自动启动(auto-start)的服务程序和设备驱动程序。

---->当一切加载成功且用户在控制台成功登陆后,SCM则认为系统引导成功,便放弃注册表中已知最近正确配置(HKLM\SYSTEM\select\LastKnownGood),而改由\CurrentControlSet替代。

---->Winlogon激发了SCM之后,它便等待来自GINA的交互式登录通知。当它接收到一个登录,并且验证该登录确实有效以后,Winlogon从登录用户的轮廓中加载HIVE,并且将它映射到HKCU。然后设置该用户的环境变量。

----> 启动完成。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值