关于Windows系统开机初始流程

作为一个底层开发人员来说,对OS部分的事情的研究不多,仅作了解。以方便分析问题和Debug。这里记录一下Window启动的初始流程,这些都是在阅读以前的笔记找到的资料。可能是综合网络上或者书上的资料总结的。

至于Linux下的开机流程,之前有看过Linux kernel,需要找笔记。


Windows系统开机流程简述:

1、Power On,BIOS跑起来。

2、BIOS中调用int 19h来读取HD中的MBR到内存段0:7c00处。(不讨论GPT方式)

3、主引导记录MBR被载入内存中,并该执行代码。

4、活动分区的引导扇区被载入内存中,比如C盘的引导扇区。(关于活动分区的概念请参考MBR分区的定义)

5、NTLDR从引导扇区中载入,并完成初始化。

6、在此部分需要设置好GDT、LDT等,进入memory的flat mode(protect mode),也即处理器从16位的实模式进入32位的平滑模式。

7、NTLDR开始加载一些小文件系统驱动程序,以便支持FAT或者NTFS等磁盘格式。这个是在NTLDR内部建立的环境。

8、NTLDR读取活动分区中的boot.ini文件,分析加载哪个系统。

9、如果是加载NT/XP系统,那么运行Ntdetect.com;

10、NTdetect.com会搜索系统的Hardware系统,并将列表传递给NTLDR,以便将这些信息导入注册表:HKE Y_LOCAL_MACHINEHARDWARE。

11、然后NTLDR装载Ntoskrnl.exe,Hal.dll和系统信息集合,完成硬件抽象层的设定,并加载kernel。

12、针对系统信息集合加载设备驱动程序。

13、NTLDR将控制权移交给NToskrnl.exe。开始kernel部分的加载和运行。此时启动程序结束。


所以在Windows系统加载的时候,NTLDR起到至关重要的作用。我们经常会遇到这种情况,在偶然性的一次开机后,提示:“NTLDR is MissING. PressCTRL+ALT+DEL to restart”,其实这时候很有可能是因为找不到NTLDR了。可以通过CD-rom的recovery mode 拷贝一个NTLDR到系统根目录中。


有空可以参考以下链接: http://www.chinaitlab.com/www/techspecial/star/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值