- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统引导探究
Version 0.01
谢煜波
QQ
MSN :xieyuboemail@163.com
Email: xieyubo@126.com
网址:
2004.02
前言
本篇文章并不旨在完整的讨论一个多引导系统程序怎样去引导不同的操作系统,而只
打算从编写操作系统的角度出发,谈谈计算机怎样从加电开始,从无到有,将操作系统运行
起来,在其中将尽量详尽的描述从实模式到保护模式的过渡,目的只在于能将所学与广大爱
好者更享,为希望开发操作系统的朋友留下一点资料,也为自己留下一点心得。
本篇文章将以开发中的 pyos 系统引导程序为例,pyos 是一个正在开发中的实验型操作
系统,它并不打算以目前任何一种运行中的操作系统为模式,而只想通过自己编写一个从头
到尾的操作系统来学习知识,积累技术,如果你有兴趣,非常欢迎你的加入!
本篇纯属学习过程中的一点心得体会,如果你发现其中有错误或不当之处,非常希望
你来信指教。
一、计算机从加电开始都做了什么?
当机算机的电源键被按下时,同这个键相联的电信号线就会送出一个电信号给主板,
主板将此电信号传给供电系统,供电系统开始工作,为整个系统供电,并送出一个电信号给
BIOS ,通知BIOS 供电系统已经准备完毕。随后 BIOS 启动一个程序,进行主机自检,主机
自检的主要工作是确保系统的每一个部分都得到了电源支持,内存储器、主板上的其它芯片、
键盘、鼠标、磁盘控制器及一些 I/O 端口正常可用,此后,自检程序将控制权还给 BIOS 。
接下来 BIOS 读取 BIOS 设置,得到引导驱动器的顺序,然后依次检查,直到找到可以用来
引导的驱动器(或说可以用来引导的磁盘,包括软盘、硬盘、光盘等),然后调用这个驱动
器上磁盘的引导扇区进行引导。BIOS 是怎么知道或说分辨哪一个磁盘可以用来引导的呢?
二、认识引导程序
BIOS 将所检查磁盘的第一个扇区(512B )载入内存,放在0x0000:0x7c00 处(见图三),
如果个扇区的最后两个字节是“55 AA”,那么这就是一个引导扇区,这个磁盘也就是一块
可引导盘。通常这个大小为 512B 的程序就称为引导程序(boot )。如果最后两个字节不是“55
AA ”,那么BIOS 就检查下一个磁盘驱动器。
通过上面的表述我可可以总结出如下三点引导程序所具有的特点:
1. 它的大小是 512B,不能多一字节也不能少一字节,因为BIOS 只读 512B 到内
存中去。
2 . 它的结尾两字节必须是“55 AA”,这是引导扇区的标志。
3 . 它总是放在磁盘的第一个扇区上(0 磁头,0 磁道,1 扇区),因为 BIOS 只读
第一个扇区。
(图一)
因此,在我们编写引导程序的时候,我们也必须注意上面的三点原则,符合上面三点
原则的程序都可以看作是引导程序,至少 BIOS 是这样认为的,虽然它也许可能是你随意写
的一段并没有什么实际意义的代码。
因为BIOS 一次只读一个扇区也即 512 字节的数据到内存中,这显然是不够的,现在操
作系统都比较庞大,因此我们必须在引导扇区里将存在磁盘上的操作系统的核心部份读进内
存,然后再跳转到操作系统的核心部分去执行。
三、通过 BIOS 读磁盘扇区
从上面的描述我们可以知道,引导程序需要将存在于磁盘上的操作系统读入内存,因
此这里我们不得不再讲一讲,怎样不通过操作系统(因为现在还没有操作系统)去读磁盘磁
区。一般说来这有两种方法可以实现,一种是直接读写磁盘的 I/O 端口,一种是通过 BIOS
中断实现。前
原创力文档


文档评论(0)