注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

windows引导之执行体初始化,存储管理部分的简单分析  

2012-02-12 17:33:40|  分类: sr |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
windows引导之执行体初始化,存储管理部分的简单分析

        执行体初始化过程中,系统会处理最近一次正确的配置。这个是在KiThreadStartup中——>PspSystemThreadStartup——>Phase1Initialization——>IoInitSystem中完成的,可见,此时,PHase 0已经处理完成了。
        IoInitSystem检测是否是网络启动系统,随后检测最后一次正确的配置,再
调用PsLocateSystemDll加载本地系统dll(事实上是ntdll.dll),随后,CcPfBeginBootPhase。
        随后,由CcPfBeginBootPhase 调用 PsCreateSystemThread函数来创建一个新的线程。新的线程入口是CcPfBootWorker。
        
        
CcPfBootWorker。到目前为止,系统已经有了新的线程,CcPfBootWorker。然而,很奇怪的是,之前的线程不知道去了哪儿,似乎一直被挂起了。
        
CcPfBootWorker的主要工作就是存储管理。CcPfBootWorker先处理Prefetch预读取,文件\WINDOWS\Prefetch\NTOSBOOT-B00DFAAD.pf。随后处理CcPfPrefetchMetadata元数据信息,这里完成各种windows常用目录的初始化,包括Program Files、Documents and Settings等等。
        CcPfBootWorker 调用CcPfPrefetchSections对预读取的驱动进行处理。随后,这个线程调用KeSetEvent,于是,CPU切换到之前的线程,也就是创建
CcPfBootWorker 线程的线程。

        
IoInitSystem得以继续运行了,他再调用IopInitializeSystemDrivers。IopInitializeSystemDrivers的执行有点意思,他几乎扫描了所有的关键路径的dll和sys文件,——用意何在?
        IoInitSystem 调用IopCallDriverReinitializationRoutines来再次初始化调用驱动。

之后,经过这么几次折腾,smss进程得到运行,然后,csrss等等都相继运行了。

By:章永辉


  评论这张
 
阅读(723)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016