操作系统引导探究
前言 一、计算机从加电开始都做了什么? 当机算机的电源键被按下时,同这个键相联的电信号线就会送出一个电信号给主板,主板将此电信号传给供电系统,供电系统开始工作,为整个系统供电,并送出一个电信号给BIOS,通知 BIOS 供电系统已经准备完毕.随后 BIOS启动一个程序,进行主机自检,主机 自检的主要工作是确保系统的每一个部分都得到了电源支持, 内存储器、 主板上的其它芯片、键盘、鼠标、磁盘控制器及一些 I/O 端口正常可用,此后,自检程序将控制权还给 BIOS.接下来 BIOS 读取 BIOS 设置,得到引导驱动器的顺序,然后依次检查,直到找到可以用来引导的驱动器(或说可以用来引导的磁盘,包括软盘、硬盘、光盘等) ,然后调用这个驱动器上磁盘的引导扇区进行引导.BIOS 是怎么知道或说分辨哪一个磁盘可以用来引导的呢? 二、认识引导程序 BIOS 将所检查磁盘的第一个扇区(512B)载入内存,放在 0x0000:0x7c00处(见图三) ,如果个扇区的两个字节是“55 AA” ,那么这就是一个引导扇区,这个磁盘也就是一块可引导盘. 通常这个大小为 512B 的程序就称为引导程序 (boot) . 如果两个字节不是 “55AA” ,那么 BIOS 就检查下一个磁盘驱动器.通过上面的表述我可可以总结出如下三点引导程序所具有的特点: 拥有帝国一切,皆有可能。欢迎访问phome.net 1. 它的大小是 512B,不能多一字节也不能少一字节, BIOS 只读 512B 到内存中去. 2. 它的结尾两字节是“55 AA” ,这是引导扇区的标志. 3. 它总是放在磁盘的第一个扇区上(0 磁头,0 磁道,1 扇区) , BIOS 只读 第一个扇区. 三、通过 BIOS读磁盘扇区 从上面的描述我们可以知道,引导程序需要将存在于磁盘上的操作系统读入内存,因此这里我们不得不再讲一讲,怎样不通过操作系统(现在还没有操作系统)去读磁盘磁区.一般说来这有两种方法可以实现,一种是直接读写磁盘的 I/O 端口,一种是通过 BIOS中断实现.前一种方法是最低层的方法(后一种方法也是在它的基础上实现的) ,具有极高的灵活性,可以将磁盘上的内容读到内存中的任意地方,但编程复杂.第二种方法是前一种方法稍微高层一点的实现,牺牲了一点灵活性,比如,它不能把磁盘上的内容读到0x0000:0x0000 ~ 0x0000:0x03FF 处.为什么不能读到此处呢?这里我们将不得不描述一下CPU在加电后的中断处理机制. 3.1 BIOS 的中断处理 中断是什么,相信学过计算机的人都不会陌生,如果你对中断一点都不了解建议你翻看一下《计算机组成原理》 ( |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |