windows系统 ---启动篇

来源:互联网 发布:数据库概论百度云 编辑:程序博客网 时间:2024/05/16 10:07

学了两年的windows下的C/C++编程,感悟颇多!编程这种东西跟其他东西没啥两样,习惯成自然,你只有常年累月的练习,才能写出高质量的东西!在这里,我要记录我的程序员路。

工欲善其事必先利其器。既然学习编程,首先就必须对你所需要的工具了如指掌。编程的工具就是计算机。大家都知道,计算机并不单纯,它由计算机硬件和计算机软件构成。

现在想象一下,在你的面前就是一台没有启动的PC,你所能见到的部分是显示器,键盘,鼠标和机箱(当然笔记本内置了)。打开机箱,就能看到有很多插槽的主板还有连在主板上的一排排的总线。主板上是CPU(处理器)和各种接口卡(内存条,显卡,网卡等等)。这些就是硬件。

现在,按下启动键,显示器开始出现厂家标识了。按下F12(我的lenovo,其他机子可能不一样,F2,delete等),出现了蓝色屏幕,这就是BIOS(Basic Input Output System),这是计算机的硬件设置,计算机出厂前被写在了ROM中的一段代码。这是计算机系统启动前的硬件配置,对计算机输入输出进行设置,装系统时就能体现其重要性。按下F10后,开始进入计算机系统。计算机系统是软件,软件就是操作硬件的一段代码,那么,该如何执行这段代码呢?系统的启动分成4个部分。

1 预处理部分

主要是读取 BIOS (前面讲过),然后内存,CPU,硬盘,键盘等设备进行自检。这个阶段在屏幕上显示就是自检的那些打印信息。

然后根据 BIOS 指定的启动顺序,找到可以启动的优先启动设备,比如本地磁盘,CD Driver , USB 设备等等,然后准备从这些设备启动系统。

2 系统配置

从启动设备(最常见的是C盘)加载ntldr(ntloader 就是network system loader 系统加载器),开始配置系统

1.设置内存模式,如果是 x86 的处理器,并且操作系统是 32位,则设置为 32-bit flat memory mode,如果是 64 位操作系统 + 64位处理器,则设置为64位内存模式。

2.启动文件系统

3.读取 boot.ini 文件

然后,开始检测和配置硬件(键盘,鼠标,显示器等等)

3 加载系统(内核)

Ntldr 将首先加载Windows内核 Ntoskrnl.exe 和 硬件抽象层 (HAL). HAL 有点类似于嵌入式操作系统下的BSP(Borad support package),这个抽象层对硬件底层的特性进行隔离,对操作系统提供统一的调用接口,操作系统移植到不同硬件时只要改变相应的 HAL 就可以,其它的内核组件不需要修改,这个是操作系统通常的设计模式。

接下来Ntldr 从HKEY_LOCAL_ MACHINE\SYSTEM\CurrentControlSet 下读取这台机器安装的驱动程序,然后依次加载驱动程序。

驱动程序加载完成后,Windows做如下设置:

1. 创建系统环境变量

2. 启动 win32.sys ,这个是Windows子系统的内核模式部分。

3. 启动 csrss.exe,这个是Windows子系统的用户模式部分。

4. 启动 winlogon.exe

5. 创建虚拟内存页面文件

6. 对一些必要的文件进行改名,(主要是驱动文件,如果更新后,需要在下次重启前改名)

4 系统登录

1. 启动机器上安装的所有需要自动启动的Windows服务

2. 启动本地安全认证 Lsass.exe

3. 显示登录界面

输入用户名和密码后就进入系统了。好吧,面对着蓝天白云,我们能干什么呢?
0 0
原创粉丝点击