1.内存空间布局
windows内存的逻辑地址分为两部分:
X64的内存布局与X86的内存布局类似,X64下存在一些空洞,并且X64的最大寻址空间为2^64KB的寻址空间
但是实际上X64的空间太大,很多没有用到。X64下一般只支持到40多位
2.Windows与内核启动过程
windows启动步骤如下:
⑴启动自检阶段
⑵初始化启动阶段
作系统的启动工作(windows7是bootmgr)
⑶Boot加载阶段
这里启动分区加载ntldr,然后对ntldr进行如下设置
①设置内存模式,如果是32位操作系统,设置32-bit flat memory,64位反之
③读取boot.ini文件
⑷检测和配置硬件阶段
⑸内核加载阶段
ntldr将首先加载windows内核Ntoskrnl.exe和硬件抽象层(HAL).HAL会对硬件底层的特征进行隔离,为操作系统提供统一接口,接下来 ntldr从注册表读取驱动程序,
依次加载驱动,初始化底层设备驱动,在注册表中找start键的值为0和1的设备驱动 ,start键的值为0.1.2.3.4,数值越小,启动越早。0表示内核刚刚初始化,此时加载的都是与系统核心有关的重要驱动程序。1表示稍晚一些 ,2是从登录界面出现的时候,3表示需要手动加载,4表示禁止加载
⑹windows的会话管理启动
驱动程序记载完成,内核会启动会话管理器,这是smss.exe的程序,是windows系统中第一个创建的进程,作用:
1.创建系统环境变量
2.加载win32k.sys 它是windows子系统的内核模式部分
4.启动winlogon.exe(后面解释)
6.执行上次重启前未执行的重命名工作
⑺登陆阶段
1.启动服务子系统(services.exe) 也称服务控制管理器 SCM
2.启动本地安全授权(LSA)过程
3.显示登陆界面
win7和XP在启动过程中的区别
- BIOS通过自检后,将MBR载入内存并执行,引导代码找到管理器Bootmgr
- Bootmgr寻找活动分区Boot文件夹中的启动配置数据BCD文件,读取对应的语言启动菜单,然后再屏幕上显示多操作系统选择画面
- 选择win7后,Bootmgr就会读取系统文件 winload(在system文件夹中)
- 此时系统的执行权都交给winload, winload加载win7的内核,硬件,服务等等,然后加载桌面信息,从而启动系统
新一代的系统引导方式UEFI和GPT
上面说的系统引导与启动,主要借助BIOS和MBR完成系统的引导和启动,具有一定的局限性,局限性:磁盘逻辑块地址是32位,最多表示2^32个扇区,
而且每个扇区大小一般都是512字节,所以最多支持2^32*521=2*2^20字节(2TB)在BIOS中,启动操作系统之前必须从硬盘上读取扇区中读取启动代码,然后从分区中引导启动操作系统,对扇区的操作远不上分区中文件的操作那样简单
为了打破BIOS和MBR引导的局限,新的UEFI和GPT。