最完整的Windows启动与关机过程_第1页
最完整的Windows启动与关机过程_第2页
最完整的Windows启动与关机过程_第3页
最完整的Windows启动与关机过程_第4页
最完整的Windows启动与关机过程_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

最完整的最完整的 Windows 启动与关机过程启动与关机过程 收藏收藏 最完整的最完整的 Windows 启动与关机过程启动与关机过程 最近在最近在 CSDNCSDN 上上传了上上传了 Microsoft Microsoft Windows Windows Internals Internals FourthFourth EdEd ition ition MicrosoftMicrosoft WindowsWindows Server Server 2003 2003 WindowsWindows XP XP andand WindowsWindows 2000 2000 此书是计算机学习的经典之作 本来说自己有空的话把该书翻译一遍 然后 此书是计算机学习的经典之作 本来说自己有空的话把该书翻译一遍 然后 供志同道合者参考 但一直没有足够的时间 现仅仅将第五章节供志同道合者参考 但一直没有足够的时间 现仅仅将第五章节 启动与关机启动与关机 的内容中文翻译版给朋友们贴出来 同时里面对在启动过程中遇到的常见的的内容中文翻译版给朋友们贴出来 同时里面对在启动过程中遇到的常见的 故障和问题 都做一个解答补充 希望这些内容能够帮助大家用好自己的故障和问题 都做一个解答补充 希望这些内容能够帮助大家用好自己的 二二 老婆老婆 和单位的和单位的 情人情人 内容有翻译不到之处 希望有朋友指出和修改补充 内容有翻译不到之处 希望有朋友指出和修改补充 目的是让我们的 目的是让我们的 PCPC 忠实良好的为我们服务 忠实良好的为我们服务 声明 本内容可在网络上随意转载 但请注明转载路径及作者 希望能够尊重声明 本内容可在网络上随意转载 但请注明转载路径及作者 希望能够尊重 作者的劳动成果 谢谢合作 作者的劳动成果 谢谢合作 文章方式 原创文章方式 原创 内容格局安排 前是中文 后面附对应篇章英文 原英文版内容格局安排 前是中文 后面附对应篇章英文 原英文版 chmchm 文件请到文件请到 CSDNCSDN 搜索下载 搜索下载 第五章第五章 启动与关机启动与关机 引导进程引导进程 在描述 windows 引导进程时 我们将从系统安装和处理引导支持文件开始 设备驱动是引导进程关键部分 所以我们会解释 在驱动被加载和初始化的 时候 引导进程是如何控制每一时间段的方法 然后我们描述执行子系统是如 何初始化的和内核是如何启动会话管理进程 smss exe Windows 子系统和登陆 进程 Winlogon exe 来载入用户模式的 在此过程中 我们将会重点讲述那 些在屏幕上出现各种文本提示的时间段 以帮助你把你看到的内部进程与你看 到的 Windows 引导过程联系起来 值得注意的是相对在 IA64 系统与 x86 和 x64 系统之间 引导进程早期阶段 会有所不同 下面一节将描述 x86 和 x64 系统引导进程细节部分 接着描述 IA 64 引导进程的细节部分 x86x86 和和 x64x64 系统的预启动 引导前的准备 系统的预启动 引导前的准备 当你按下计算机电源或者按下 reset 键时 WINDOWS 引导进程并不会开始 它是在你给你的计算机安装 WINDOWS 系统的时候开始的 在系统安装程序 Win dows Setup program 执行期间的某个点上 系统的主硬盘分区被准备了一些 参与引导进程的代码 在我们深入这些代码的作用之前 我们先看看 WINDOWS 是如何把这些代码放到磁盘上和放在磁盘的什么位置 从早期的 MS DOS 延续下来一个标准 就是在 x86 系统上把物理磁盘分割成 卷 微软操作系统把硬盘分割成称之为分区 Partitions 的离散区域 并且 用文件系统 即文件格式 FAT 和 NTFS 把每个分区格式化为一个卷 一个硬盘 能最多包含四个主分区 因为这种分配方式会限制一个磁盘只能划分成四个卷 所以一个特殊的分区类型产生了 称之为扩展分区 Extended partition 扩展分区允许每个主分区里包含最多四个额外的分区 扩展分区可以包含还 有扩展分区的扩展分区 并且这个分区在一个磁盘空间允许的情况下拥有无限 有效的卷标号码 图 5 1 显示一个硬盘规划的事例 表 5 1 总述了在 x86 和 x6 4 引导进程的相关文件 你可以在第十章存储管理了解更多的 windows 分区 知识 图 5 1 硬盘规划实例 表 5 1 总述在 x86 和 x64 引导进程的相关文件 组件组件 执行进程环执行进程环 境境 职责与作用职责与作用 1 主引导记录 代码 MBR 16 位实模式 读取并载入分区引导扇区 2 引导扇区 16 位实模式 读取根目录以载入 Ntldr 3 Ntldr 16 位实模式和 32 位或 64 位保 护模式 开启 内存分页 读取 Boot ini 提示引导菜单 并且载入 Ntoskrnl exe Bootvid dll Hal dll 和引导开始设备驱动 如果引导一个 32 位安装系统 那么切换到 32 位保护模式 如果一个引导 64 位安装系统 则切换到 64 位长模式 4 N 16 位实模式 完成硬盘检测以备 Ntldr 执行 5 Ntbootdd sys 保护模式 不可用时 加载该文件作为在 SCSI 和 ATA 磁盘上的 I O 设备驱动 6 Ntoskrnl exe 分页的保护 模式 初始化执行子系统 初始化引导 初始化系统开始设备 驱动 为系统运行原始应用程序做准备 然后运行 Smss exe Hal dll 分页的保护 模式 Ntoksnrl 设备驱动和硬件之间的接口的内核模式 DLL 文件 Smss exe 原始应用程 序 载入包含 Win32k sys 和 Csrss exe 的 Windows 子系统 然后开始 Winlogon 进程 Winlogon e xe 原始应用程 序 开始服务控制管理器 SCM 开始本地安全子系统 LSASS 然后弹出交互式登陆对话框 服务控 制管理 SCM 原始应用程 序 加载和初始化自动开始的设备驱动和 Windows 各种服务 物理硬盘是以扇区 Sector 为单位来寻址的 在一台 IBM 兼容 PC 上的一个硬盘扇 区是典型的 512 字节 用 MS DOS 的 Fdisk 应用程序或者 Windows 安装程序 把硬盘准备 成卷标定义形式的用途是为了在硬盘的第一个扇区写入有一个扇区数据的称为主引导记录 MBR 的数据代码 MBR 分区将在第十章进行描述 这个 MBR 包含 一个含有可执 行指令 称为引导代码 的固定数量空间 和一个带有四个定义为磁盘主分区位置入口的 表 称为分区表 当一个 IBM 兼容计算机引导时 它执行的第一个代码被称做 BIOS BI OS 是被编码到计算机的 ROM 里面的一段程序 BIOS 选择一个引导设备 读这个设备的 MBR 到内存 并且把控制权交给在 MBR 里的这个代码 MBR 通过 Microsoft 分区工具 像 Windows Setup 安装程序里集成的分区工具和磁盘 管理 MMC 加载件 写 MBR 到磁盘也经过了读取进程和传递控制的过程 首先 MBR 代 码扫描这主分区表 直到落到这样一个分区 这个分区包含一个表示可引导分区的标签 当这个 MBR 找到至少一个这样的标签 它会读这个被标记分区的第一个扇区到内存 并 且传输控制权给这个分区中的代码 这类分区被称为引导分区 boot partition 这样的分 区的第一个扇区被称为引导扇区 定义为引导分区的卷标被称为系统卷标 system volume 操作系统通常在没有用户干预下把引导扇区写入磁盘 例如 当 Windows 安装程序写 MBR 到一个硬盘时 它也写一个引导扇区到这个磁盘的第一个可 引导扇区 在安装 MS DOS Windows Me Windows 98 或者 Windows 95 时 你可能已经创建一个 MS DOS 引导扇区 Windows 安装程序检测这个引导 扇区 看这个将被 Windows 引导扇区重写的引导扇区是否是一个有效的 MS D OS 引导扇区 如果是 Windows 安装程序拷贝这个引导扇区的内容到一个存 在于分区根目录下称为 Bootsect dos 的文件中 在写入到一个分区的引导扇区之前 Windows 安装程序首先确保这个分区 是被你指定的一个 Windows 支持的 FAT FAT32 NTFS 文件系统格式化了 以及其他分区都要做类似格式化过程 如果分区已经被格式化 你可以指示 安装程序跳过这一步 否则 使用安装程序格式化了这个引导分区以后 安装 程序拷贝 Windows 用在引导分区的文件 系统卷标 到系统卷中 这些文件包 含两个参与引导序列的文件 Ntldr 和 N 安装程序的另一角色是创建一个引导菜单文件 Boot ini 它存在于系统卷 标的根目录 这个文件包含是从安装程序安装的这个版本的 windows 还是一些 先前已经安装的 Windows 选择引导的一个选项 如果 Bootsect dos 包含一个有 效的 MS DOS 引导扇区 Boot ini 创建的入口之一就是引导到该 MS DOS 下 下面输出的内容显示了一个在 Windows XP 之前安装了 MS DOS 双引导计算机 的 Boot ini 文件 boot ini 例子 boot loader timeout 30 default multi 0 disk 0 rdisk 0 partition 1 WINDOWS operating systems multi 0 disk 0 rdisk 0 partition 1 WINDOWS Microsoft Windows X P Professional fastdetect C Microsoft Windows 你会发现这个示例文件中 Windows 文件路径很特别 是使用一种 ARC 命名 规则的特殊语法 有三个变量被 Windows 用到这个语法中 第一 在前所述代 码中 multi 语法 指示 Windows 用 BIOS INT 13 函数来载入系统文件 因此 这个 multi 语法被介绍为 当定位于引导卷标的磁盘有一个支持 INT 13 的 控制器时使用 如下就是 multi 的语法 multi W disk X rdisk Y partition Z W 是这个磁盘控制器号 也称为磁盘序号 通常为 0 X 在 multi 语法 中一直是 0 Y 指定为附在控制器 W 的的具体物理硬盘 对于 ATA 控制器 这个 数字介于 0 3 之间 对于 SCSI 控制器 这个号码通常在 0 15 之间 Z 显示在 物理硬盘上相应引导卷标的分区号码 第一分区被指派为号码 1 Ntbootdd sys 提供支持 Windows 磁盘的 I O 服务 这 scsi ARC 语法依靠 Ntbootdd sys 来通知 windows 去访问在引导卷标的文件 该语法格式如下 scsi W disk X rdisk Y partition Z 此语法中 W 是控制器号 X 是附属到控制器的物理硬盘 也是介于 0 15 Y 指定了引导卷标磁盘的 SCSI 逻辑单元号 LUN 通常为 0 最后 Z 是相应 驱动卷标分区号 通常从 1 开始 这最后一种被 Windows 使用的语法是 signature 语法 它指示 Windows 定 位到括号中匹配第一个值的标号磁盘 不管与磁盘联合的控制器号 并且用 Nt bootdd sys 去访问引导卷标 一个磁盘签名就是一个全局唯一标识符 GUID Windows 安装程序从 MBR 中的信息中生成该签名 并且写到磁盘上 这个 sig nature 语法如下 signature V disk X rdisk Y partition Z V 是一个 32 位 16 进制用于表示该磁盘的磁盘签名 X 是带有特定签名的物 理硬盘 并且它在系统中能与任何控制器发生紧密联系 Y 一直是 0 Z 就是引 导卷标所在的分区号码 Windows 使用该语法于下面几种情况 1 引导卷标的大小高于 7 8GB 并且 BIOS 扩展的 INT 13 函数 用于访问 一个磁盘超过 7 8GB 的部分 不能访问整个卷标情况下 2 BIOS 不支持扩展的 INT 13 函数情况下 X86 x64 引导扇区和引导扇区和 Ntldr Windows Setup 安装程序在写入引导扇区前必须知道这个分区格式 因为引 导扇区内容非常依赖这个格式 例如 如果分区格式是 FAT Windows 写入可以 理解 FAT 文件系统的代码到引导扇区 但是如果分区是 NTFS 那么 Windows 就 会写入可以理解 NTFS 格式的代码到引导扇区 这个引导扇区代码的角色就是给 Windows 提供一个关于卷标结构和格式的信息 同时从该卷标的根目录读入 Ntl dr 文件 因此 引导扇区代码包含了足够的只读文件系统代码以便去完成这样 一个任务 引导扇区代码载入 Ntldr 到内存后 它传递控制给 Ntldr 的输入点 如果引导扇区在这个卷标根目录里面没有找到 Ntldr 文件 那么如果引导区 的文件系统是 FAT 时 它会显示这样的错误信息 BOOT Couldn t find NTLD RP 如果文件系统是 NTFS 显示错误信息 NTLDR is missing 当在一个存在于实模式 real mode 的 x86 操作模式的系统执行时 Ntld r 就开始执行 在实模式 不会出现从虚拟地址到物理地址的内存地址转译 这就意味着用于内存地址的程序会使用物理地址来解释他们 同时也意味着仅 有计算机物理内存的第一个 1MB 是可访问的 简单的 MS DOS 程序执行在一个实 模式环境 然而 Ntldr 做的第一个动作就是交换系统到保护模式 虽然仍然 没有虚拟物理内存在引导进程的这个点上发生转译 但是一个完整的 32 位的内 存已经变的可用了 系统进入保护模式以后 Ntldr 可以访问所有的物理内存 创建了足够的页表使低于 16MB 的内存被页可访问后 Ntldr 就打开分页机制 了 激活页的保护模式也就是一般正常情况下系统的执行环境 Ntldr 激活了页以后 它就完全可以操作了 然而 它仍然依赖引导代码的 函数支持 以访问基本 IDE 系统和引导磁盘 显示器 这个引导代码函数暂时 中断页 传递控制权返回给 BIOS 提供的一种服务模式的对应进程去执行 如果 包含引导卷标的磁盘是 SCSI 基础的 并且是用 BIOS 固件支持不可访问的 那 么 Ntldr 载入一个文件名为 Ntbootdd sys 的文件 和使用它来代替引导代码函 数来供磁盘访问 Ntbootdd sys 是 SCSI 微型端口驱动的拷贝 windows 用这个 驱动在它完全接手操作的时候去访问引导磁盘 在磁盘驱动的更多信息请查 看第十章 Ntldr 下来使用嵌入的系统代码从根目录读取 Boot ini 文件 跟引 导扇区的代码一样 Ntldr 包含只读 NTFS 和 FAT 代码 然而不同引导扇区代码 的是 Ntldr 的文件系统代码可以读取子目录 Ntldr 下来清理屏幕 如果有一个有效的 Hiberfil sys 文件在系统卷标的 根目录 它取这个引导进程的捷径以读取文件的内容到内存 并且传递控制到 内核代码以恢复中断中的系统 这个代码负责重新启动那些在系统关机时仍然 活动的驱动程序 仅仅当上次计算机关机时它被休眠了 Hiberfil sys 才会是 有效的 其他时间它是休眠的 更多关于休眠的信息看 11 章的电源管理章节 如果在 Boot ini 文件里面有多个引导选项 它会提供给用户一个引导选项 菜单 如果仅仅有一个 Ntldr 就会略过这个菜单 直接去显示开始进度条 在 Boot ini 里面的选项输入点指导 Ntldr 到被选择安装的系统目录的分区 这个分区可能和引导分区相同 也可能是别的主分区 如果 Boot ini 输入点指向一个 MS DOS 安装 换句话说 以 C 作为系统 分区 Ntldr 读取 Bootsect dos 文件的内容到内存 切换系统返回到 16 位 的实模式 同时在 Bootsect dos 里面呼叫 MBR 代码 这个动作引起 Bootsect dos 代码去执行 就像 MBR 已经从磁盘读取了代码 在 Bootsect dos 的代码继 续一个特别 MS DOS 引导 这通常被用于引导在计算机中已经安装了的 Microso ft Windows Me Windows 98 or Windows 95 的系统 Boot ini 里面的内容包含一些可选的参数 包括 Ntldr 和其他有关说明引 导进程的部件 表 5 2 包含了这些选项以及他们的影响的完整列表 工具 Boot cfg exe 工具 在 windowsXP 里面有介绍 提供了一个便利的接口以设置这些 参数开关 包含在 boot ini 的任何选项都被保存到注册表值 HKLM System Cur rentControlSet Control SystemStartOptions 里了 表 5 2 Boot ini 里面的引导选项 暂略 故障类型 电脑无法识别 SATA 硬盘 如果南桥主板提供的 SATA 控制器没有被设置为 RAID 或者在 BIOS 设置时屏 蔽了 RAID 是可以找到硬盘的 但是如果开启了 RAID 则无法找到硬盘 可在 BIOS 里面禁用 RAID 在安装 XP 系统的过程中 当屏幕下方显示 Press F6 if you need to install a third party SCSI or RAID driver 提示时 按 下 F6 键 然后按照系统提示将主板附带的 SATA 驱动程序光盘放入驱动器中 最后按下 S 载入必须的驱动程序即可 如果在 Boot ini 文件指定的超时时间期间 用户没有从选项菜单里面选择 一个进入点 那么 Ntldr 选择默认选项 默认选项在 Boot ini 文件的最顶点输 入点 它指定了一个匹配的路径位于 default 行 一旦这个引导选择被设 置 Ntldr 会载入并且执行 N 一个 16 位的实模式 用于系统 BIO S 去请求计算机以引导基本设备 和配置信息 这些信息包含 1 存储在系统 CMOS 里面的时间和日期信息 2 系统里的总线类型和依附在总线上的设备标识符 3 系统里磁盘驱动的号码 大小和驱动类型 4 连接到系统的接入鼠标设备类型 5 系统的并口配置的号码和类型 6 出现在系统中的视频适配器 这些聚集到内部数据结构的信息将被存贮在引导后的 HKLM HARDWARE DESC RIPTION 注册表值下 在 Windows2000 Ntldr 清理屏幕并显示 Starting Windows 进度条 这 个进度条保持留空以通知 Ntldr 开始载入引导驱动 查看下面列表的第五步 在进度条下是这样的信息 For troubleshooting and advanced startup o ptions for Windows press F8 如果用户按下 F8 这个高级引导菜单就会出 现 以允许用户选择这样一些更好的引导选项 safe mode debug mode and so on 在 Windows XP 和 Windows Server 2003 Ntldr 提供出一个登陆快闪屏 幕 logo splash screen 替代进度条 如果 Ntldr 运行在一个 X64 系统上 并且引导高级菜单中的选项指定的内 核是针对 x64 的 那么 Ntldr 将处理器切换到长模式 long mode 该模式 下 原始的字长是 64 位的 下来 Ntldr 开始加载来自引导卷标 boot volum e 所必需文件到启动内核初始化中 引导卷标是指被引导的系统的系统目录 通常是 Windows 所在分区的那个卷 这里包含了 Ntldr 执行的以下步骤 1 载入适当的内核和 HAL 映像 默认被 Ntoskrnl exe and Hal dll 如果 Ntldr 载如这些文件中的任一个失败 Windows 就会在屏幕上显示 Window s could not start because the followin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论