Windows NT引导过程源代码分析.docx

  1. 1、本文档共95页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Windows NT引导过程源代码分析.docx

Windows 引导过程Windows 内核中的各个组件和各种机制在起作用以前,必须首先被初始化。此初始化工作是在系统引导时完成的。当用户打开计算机的电源开关时,计算机便开始运行,但操作系统并不立即获得控制权,而是BIOS 代码首先获得控制,它执行必要的硬件检测工作,并允许用户通过一些功能键来配置当前系统中的硬件设置,甚至诊断硬件问题,然后才将控制权交给操作系统。1.1 内核加载在Intel x86 系统上,Windows 操作系统获得控制首先从硬盘的主引导记录(MBR,Master Boot Record)开始,Windows Setup 程序在安装Windows 时填充MBR(其他的磁盘管理程序也可能填充MBR)。MBR 包含代码和数据,其代码称为引导代码,在系统引导时首先获得控制;MBR 中的数据是一张分区表,指定了每个分区在磁盘上的位置和大小,以及分区的类型。当MBR 中的引导代码被执行时,它检查分区表中的每一个分区,若找到一个已被标记为可引导的分区(称为引导分区),则将该分区的第一个扇区(称为引导扇区)读到内存中。由于分区表包含了每一个分区的磁盘位置,所以,引导扇区的位置很容易被确定。然后MBR 的代码将控制权交给引导扇区中的代码。;此处代码摘自NT4代码的\private\ntos\boot\bootcode\x86mboot.asmrelocated_org equ 0600hbuildtime_org equ 0100horg_delta equ (relocated_org - buildtime_org)_data segment publicassume cs:_data,ds:_dataorg buildtime_org; 这段代码读出位于主引导记录末尾的分区表,找到标志为可引导的分区,把它的引导扇区拷贝到内存中并执行start: cli ;开始的时候并没有中断xor ax,axmov ss,ax mov sp,7c00h ;位于地址0:7c00处的新堆栈 mov si,sp ; 0:7c00为标准引导地址push axpop es push ax sti ;允许中断cldmov di,relocated_org mov cx,100hrep movsw ;重定位到地址 0000:0600,跳到这里从分区表中读取可引导分区的入口,把引导分区拷贝到内存的标准引导地址(0000:7C00); jmp entry2 + org_deltadb 0eahdw $+4+org_delta,0entry2: mov si,(offset tab) + org_delta ;表示分区表 mov bl,4 ;分区表项的个数next: cmp byte ptr[si],80h ;判断是否是可以引导的入口je boot ;yes cmp byte ptr[si],0 ;再次判断是否为0 jne bad ;不是,只有 x00 或者x80 是有效的 add si,16 ;执行到下一个入口点dec bljnz next int 18h ;未检测到可引导的入口,返回boot: mov dx,[si] ;引导开始处mov cx,[si+2] mov bp,si ;保存表入口地址并传给分区引导记录next1: add si,16 ;下一个表项 dec bl ;表项数目递减jz tabok cmp byte ptr[si],0 ;所有剩余的表入口都要从0开始 je next1 ;满足上述判断条件bad: mov si,(offset m1) + org_delta ;无法找到一个从0开始的表项入口,该表为坏表msg: lodsb ;获取显示信息的字符cmp al,0je holdpush simov bx,7mov ah,14 int 10h ;显示信息pop si jmp msg ;循环打印完整信息hold: jmp hold ;此处自旋,不做任何事

文档评论(0)

czy2014 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档