前言
本篇文章并不旨在完整的讨论一个多引导系统程序怎样去引导不同的操作系统,而只打算从编写操作系统的角度出发,谈谈计算机怎样从加电开始,从无到有,将操作系统运行起来,在其中将尽量详尽的描述从实模式到保护模式的过渡,目的只在于能将所学与广大爱好者更享,为希望开发操作系统的朋友留下一点资料,也为自己留下一点心得。本篇文章将以开发中的 pyos 系统引导程序为例,pyos 是一个正在开发中的实验型操作系统,它并不打算以目前任何一种运行中的操作系统为模式,而只想通过自己编写一个从头到尾的操作系统来学习知识,积累技术,如果你有兴趣,非常欢迎你的加入!本篇纯属学习过程中的一点心得体会,如果你发现其中有错误或不当之处,非常希望你来信指教。
一、计算机从加电开始都做了什么?
当机算机的电源键被按下时,同这个键相联的电信号线就会送出一个电信号给主板,主板将此电信号传给供电系统,供电系统开始工作,为整个系统供电,并送出一个电信号给BIOS,通知 BIOS 供电系统已经准备完毕。随后 BIOS启动一个程序,进行主机自检,主机
自检的主要工作是确保系统的每一个部分都得到了电源支持, 内存储器、 主板上的其它芯片、键盘、鼠标、磁盘控制器及一些 I/O 端口正常可用,此后,自检程序将控制权还给 BIOS。接下来 BIOS 读取 BIOS 设置,得到引导驱动器的顺序,然后依次检查,直到找到可以用来引导的驱动器(或说可以用来引导的磁盘,包括软盘、硬盘、光盘等) ,然后调用这个驱动器上磁盘的引导扇区进行引导。BIOS 是怎么知道或说分辨哪一个磁盘可以用来引导的呢?
二、认识引导程序
BIOS 将所检查磁盘的第一个扇区(512B)载入内存,放在 0x0000:0x7c00处(见图三) ,如果个扇区的最后两个字节是“55 AA” ,那么这就是一个引导扇区,这个磁盘也就是一块可引导盘。 通常这个大小为 512B 的程序就称为引导程序 (boot) 。 如果最后两个字节不是 “55AA” ,那么 BIOS 就检查下一个磁盘驱动器。通过上面的表述我可可以总结出如下三点引导程序所具有的特点:
1. 它的大小是 512B,不能多一字节也不能少一字节,因为 BIOS 只读 512B 到内存中去。
2. 它的结尾两字节必须是“55 AA” ,这是引导扇区的标志。
3. 它总是放在磁盘的第一个扇区上(0 磁头,0 磁道,1 扇区) ,因为 BIOS 只读
第一个扇区。
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>