LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 13345|回复: 41

关于“从开机到内核开始引导”的一些个人理解

[复制链接]
发表于 2003-10-3 20:53:07 | 显示全部楼层 |阅读模式
下面是我看书后的理解,请大家批评指出。 本人对汇编还是很生疏的。  
     I386 PC开机后,CPU处于实地址模式(实地址模式下CPU只能存取20位地址),并置代码段寄存器CS的内容为0xffff0,取指令指针寄存器IP的内容为0,也就是说从线性地址0xffff0处开始取第一条指令。目前的ROM BIOS都有在启动时自动将自己以镜像形式复制到RAM中的功能,而其复制到的地址也正好是0xffff0,所以,很自然的CPU在PC机启动后读取的第一条指令就来自于ROM BIOS。
  那这第一条指令究竟是条什么指令呢?
ROM BIOS在0xffff0处的第一条指令为:“FFFF0:JMP START”,这是一条汇编指令,意思是说CPU要执行的下一条指令在“START”所指的地址处。如前所述,在实模式下的CPU只能存取1M的地址空间,而0xffff0已是顶端,所以只能跳到别处去(只能向低地址方向跳)。而“START”所指的这个地址是随BIOS厂商或BIOS版本的不同而不同的。
  一般情况下,从0xf0000到0xffff0的这64k的内存区域就是ROM BIOS的镜像区域,即“START”的值为“0xf0000”。紧接着,BIOS自检开始(BIOS的自检过程是严格按序的)在自检过程中的一些需显示的信息(即PC机开机信息)通过显卡显示在屏幕上,地址A0000到BFFFF为显示缓冲区。
   一旦BIOS完成自检和初始化工作后,BIOS便通过软中断INT19H引导系统。如果你的操作系统在软盘上,则INT19H读引导扇区到内存0x07C00处;如果操作系统在硬盘上,则也读引导扇区到内存0x07C00处;如果两者都没有引导扇区,则INT19H调用INT18H到ROM BASIC或显示无操作系统,BIOS进入死循环。

注:ROM是一种硬件,BIOS是指ROM中存储的程序(软件),ROM BIOS是指ROM中存储的BIOS程序。而CMOS是指调用BIOS的软件。


 楼主| 发表于 2003-10-4 13:43:03 | 显示全部楼层

怎么没人批评啊????

这里面不可能全对,肯定有错误。我把它贴出来的原因不是要班主说它精,而是要高手们批评指出问题的呀!

我希望大家都来,最后改到完美后使所有初学者都能收益。
发表于 2003-10-8 15:34:33 | 显示全部楼层
朋友我学的不精,看不出问题,如果地址没有错误。看起来也差不多是那么回事,好像没有问题。
你说引导扇区是由int19 放到内存的。我有一点不明白,是怎样判断引导扇区在什么硬件上的。现在bios 可引导的硬件很多,
usb 二种,zip, floppy, cd-rom,ide(硬盘)。
哦,想起来了,bios 由cmos 设置的,可进行设置三种,(现在的一般机器)。
 楼主| 发表于 2003-10-8 20:03:39 | 显示全部楼层
这只是一个次序的问题,也就是说,BIOS是挨个检查每一个硬件的。
谁先谁后由你自己的CMOS设置决定。
至于支持多硬件的问题,这只不过是BIOS的功能加强了。你也知道BIOS的基本功能就是在开机后的第一时间去收集各个硬件的中断、IO号等等。
希望我的回答能你满意。
发表于 2003-10-10 11:09:34 | 显示全部楼层
通过一起旨在将Windows操作系统与PC的基本组成部分——BIOS更紧密集成的交易,微软公司已经扩展了与BIOS厂商Phoenix科技公司之间的合作关系。

  二家公司称,本周公布的这一交易旨在使PC更简单和更可靠。由于微软和Phoenix计划  在操作系统和硬件层次集成数字化版权管理系统(DRM),它们的合作将引起消费者权益组织的警觉。DRM管理旨在使版权拥有者能够对用户使用内容和软件的方式有更多的控制,但被批评为侵犯了消费者的权益。

  BIOS将操作系统与硬件紧密地联系起来,传统上,它执行硬件和系统配置等基本任务,由于标准化程度较高和足够简单,使得PC能够安装包括Linux在内的其它操作系统。

  Phoenix公司的核心系统软件(CSS)是与操作系统更紧密集成的新一代BIOS,例如,它能够使系统管理员更方便地远程监控系统的硬件配置。CSS不仅适用于传统的台式机,也适用于刀片式服务器、嵌入式工业控制设备等非PC类装置。

  微软公司称,整合意味着更简单和更可靠的计算机。该公司Windows硬件业务部门的总经理菲利浦在一份声明中说,这是计算机产业的一个关健变化,它将极大地提高服务器、移 动装置、台式机的可用性、可部署性和可管理性。Phoenix公司正在开发一类全新的系统软件。

  微软公司表示,只要刀片式服务器与系统相连,即使没有开启,新一代的BIOS将使未来版本的Windows能够对它们进行管理。它还能够对连接到系统中未经认证的装置进行更好的控制。

  Phoenix公司是最大的BIOS提供商之一,它的客户包括五大PC厂商中的四家,它的产品也得到了先锋、松下、索尼、东芝等家电厂商的青睐。 (eNet硅谷动力  )

------------------------------
从上面看出,我们知道上面这些,现在看就够了,之后就是操作系统的事了。以后随着bios 的发展,可能会更有趣。
发表于 2003-10-19 00:49:13 | 显示全部楼层
既然此贴加精,那我就说两句,不一定对,请批评。
1.开机时代码段寄存器CS内容应为0xFFFF, IP寄存器为0x0000
2.系统BIOS并不是将自己复制到RAM中,而是本来就在那个地址空间中(机器设计时地址总线决定)
3.如果从硬盘引导,读的是硬盘的主引导扇区MBR,不是引导扇区
4.如果几种引导都不成功,并不进入死循环
5.CMOS的问题根本错了。CMOS是互补型金属氧化物半导体,存贮的是系统的一些信息,如时间,硬盘参数等。应该说是BIOS使用的可写的数据区。因为ROM不可写,RAM掉电后又失去信息,象系统时间、硬盘参数这些数据就写在CMOS里。
以上信息和linux内核其实没多大关系。
 楼主| 发表于 2003-10-26 19:43:35 | 显示全部楼层

感谢trinity

谢谢你帮我指出了问题,其实我在发这封帖子的时候也不敢肯定自己是对的。再次谢谢你的帮助。
发表于 2004-10-27 04:01:17 | 显示全部楼层
FFFF0:JMP START 就是为了引导失败后可以循环??
发表于 2004-12-6 10:36:25 | 显示全部楼层
有点不对的说。其实一开机的时候CS里是F000H,而他的base地址是FFFF0000H,ip是FFF0H,所以是FFFFFFF0H。
发表于 2004-12-7 13:18:32 | 显示全部楼层
最初由 trinity 发表
既然此贴加精,那我就说两句,不一定对,请批评。
1.开机时代码段寄存器CS内容应为0xFFFF, IP寄存器为0x0000
2.系统BIOS并不是将自己复制到RAM中,而是本来就在那个地址空间中(机器设计时地址总线决定)
3.如果从硬盘引导,读的是硬盘的主引导扇区MBR,不是引导扇区
4.如果几种引导都不成功,并不进入死循环
5.CMOS的问题根本错了。CMOS是互补型金属氧化物半导体,存贮的是系统的一些信息,如时间,硬盘参数等。应该说是BIOS使用的可写的数据区。因为ROM不可写,RAM掉电后又失去信息,象系统时间、硬盘参数这些数据就写在CMOS里。
以上信息和linux内核其实没多大关系。


第二点可能有点问题。

bios编译后的image文件一般是压缩的,所以先会执行它的自解压代码,把自己解压到ram区
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表