免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5352 | 回复: 8
打印 上一主题 下一主题

请教一个bios与操作系统的问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-12 13:34 |只看该作者 |正序浏览
bios也可以看做一个操作系统,它提供了API(bios中断),对于现在主流操作系统来讲,除了启动早期的MBR和操作系统分区的引导代码等少数地方需要
使用BIOS中断外(主要是INT 13H读磁盘),实际上它就跟BIOS没任何关系了,它用自己的驱动程序,自己的中断机制来访问硬件。
那么我想知道,BIOS设置中遮蔽磁盘,遮蔽内置网卡,设置USB的工作模式等是怎么做到的,操作系统是不是也要去读CMOS,是不是BIOS设置中遮蔽了磁盘,
操作系统做适当的处理也可以识别到? 等等,我就想知道现在主流操作系统和BIOS还有什么关系?

[ 本帖最后由 cainiao911 于 2008-1-12 13:48 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2014-10-04 16:10 |只看该作者
我认为是的,操作系统的核心工作就是管理硬件资源,为应用程序做一层封装(系统调用)。而BIOS也是对硬件访问的底层封装,并提供中断调用。只是这个操作系统比较基本和简陋。

论坛徽章:
0
8 [报告]
发表于 2008-01-17 15:59 |只看该作者
原帖由 zx_wing 于 2008-1-12 15:22 发表
我来回答这个问题有点班门弄斧了,其实 albcamus更合适一点。不管怎样,还是说一点我的认识。
BIOS主要作用是在引导系统前探测平台的硬件并为它分配资源,并提供一些系统引导必要的驱动供OS的bootloader使用(例如磁盘的驱动)。OS 是通过BIOS获得系统资源状况的,所以对于屏蔽某一个设备,只要在向OS报告平台资源的时候忽略掉它就好了。例如这里你说的屏蔽磁盘,或许BIOS可以通过ACPI中的DSDT表(是不是这个哦,可能记错了,albcamus指正)隐藏它。具体细节应该是不把磁盘IDE控制器的寄存器(以及控制数据结构)映射到地址空间中的地址报告给OS,OS就认为它不存在。
当然,或许屏蔽IDE设备不是用的我上面说的ACPI的方法,但原理上是类似的。
至于BIOS中断,那是早期BIOS提供给OS调用它的一种手段,类似于API。也不仅仅只有INT 13这样的磁盘中断常用,还有例如显卡切换模式的INT 10中断,OS用来获得内存布局的INT 15中断等等~~~这张实模式下的IDT表在INTEL的手册中称为IVT表(Interrupt Vetor Table),BIOS是通过修改表中对应的vector来添加自己的handler的,这张表位于地址0处。
后来Intel和几家公司一起推UEFI(全称不记得了,albcamus帮忙补充一下)。这玩意就超复杂了,真不亚于一个操作系统。它提供API的方式是通过一个RuntimeSevice table提供一组函数指针给OS调用,还有其他的类似内存布局了Memorydescriptor table之类的全通过一个结构体封装好提交给OS,就不在需要BIOS中断这种调用方式了 ~~~~ 不多说了,多说献丑,这部分是albcamus强项,他帮你解释吧

论坛徽章:
0
7 [报告]
发表于 2008-01-17 14:05 |只看该作者
原帖由 qiuhanty 于 2008-1-13 23:01 发表
曾经调试过磁盘驱动引起的中断风暴,看过一点这方面的东西。
当时的场景是,在bios中设置磁盘为legacy模式,bios会在pci总线上的ide控制器的pci寄存器中设置相应的标识,然后os在设备枚举时会读该pci寄存器的值 ...


这里指的是SATA host controller的工作模式吗?

论坛徽章:
0
6 [报告]
发表于 2008-01-13 23:01 |只看该作者
曾经调试过磁盘驱动引起的中断风暴,看过一点这方面的东西。
当时的场景是,在bios中设置磁盘为legacy模式,bios会在pci总线上的ide控制器的pci寄存器中设置相应的标识,然后os在设备枚举时会读该pci寄存器的值来判断磁盘的模式。

论坛徽章:
0
5 [报告]
发表于 2008-01-13 00:24 |只看该作者
BIOS 也就是一段代码,与普通的代码没什么特别之处,只是用于控制及初始化硬件的代码。但是要受数据总线规范的制约。现在PC机的总线系统还是PCI。
BIOS 和数据总线是相辅相成的,总线系统决定如何映射BIOS代码,BIOS代码又反过来来总线系统的一些必要的初始化及控制工作。而总线系统又受到整个计算机架构的制约。

论坛徽章:
0
4 [报告]
发表于 2008-01-12 15:22 |只看该作者
原帖由 cainiao911 于 2008-1-12 13:34 发表
bios也可以看做一个操作系统,它提供了API(bios中断),对于现在主流操作系统来讲,除了启动早期的MBR和操作系统分区的引导代码等少数地方需要
使用BIOS中断外(主要是INT 13H读磁盘),实际上它就跟BIOS没任何关 ...

我来回答这个问题有点班门弄斧了,其实 albcamus更合适一点。不管怎样,还是说一点我的认识。
BIOS主要作用是在引导系统前探测平台的硬件并为它分配资源,并提供一些系统引导必要的驱动供OS的bootloader使用(例如磁盘的驱动)。OS是通过BIOS获得系统资源状况的,所以对于屏蔽某一个设备,只要在向OS报告平台资源的时候忽略掉它就好了。例如这里你说的屏蔽磁盘,或许BIOS可以通过ACPI中的DSDT表(是不是这个哦,可能记错了,albcamus指正)隐藏它。具体细节应该是不把磁盘IDE控制器的寄存器(以及控制数据结构)映射到地址空间中的地址报告给OS,OS就认为它不存在。
当然,或许屏蔽IDE设备不是用的我上面说的ACPI的方法,但原理上是类似的。
至于BIOS中断,那是早期BIOS提供给OS调用它的一种手段,类似于API。也不仅仅只有INT 13这样的磁盘中断常用,还有例如显卡切换模式的INT 10中断,OS用来获得内存布局的INT 15中断等等~~~这张实模式下的IDT表在INTEL的手册中称为IVT表(Interrupt Vetor Table),BIOS是通过修改表中对应的vector来添加自己的handler的,这张表位于地址0处。
后来Intel和几家公司一起推UEFI(全称不记得了,albcamus帮忙补充一下)。这玩意就超复杂了,真不亚于一个操作系统。它提供API的方式是通过一个RuntimeSevice table提供一组函数指针给OS调用,还有其他的类似内存布局了Memorydescriptor table之类的全通过一个结构体封装好提交给OS,就不在需要BIOS中断这种调用方式了 ~~~~ 不多说了,多说献丑,这部分是albcamus强项,他帮你解释吧

论坛徽章:
0
3 [报告]
发表于 2008-01-12 13:48 |只看该作者
就是在BIOS SETUP中将Primary IDE Master设置为Not Installed.

论坛徽章:
0
2 [报告]
发表于 2008-01-12 13:42 |只看该作者
没注意遮蔽磁盘是什么意思,是不是关中断
BIOS也是一些指令和数据,只是它最早得到处理器的控制权
操作系统得到控制权之后,能做任何BIOS能做的事情
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP