操作系统运行时,BIOS有什么功能?


78

我一直想知道,BIOS(除了执行POST,启动引导加载程序并在按下电源按钮后将控制权传递给OS)在操作系统运行时是否有任何用途或功能?

操作系统在运行时是否与BIOS通信,如果可以,该如何进行?


Answers:


72

对于现代操作系统,几乎没有。据报道,莱纳斯·托瓦尔兹(Linus Torvalds)表示,其任务是“仅加载操作系统并摆脱困境”。

诸如MS-DOS之类的较早的操作系统通过调用中断来依靠BIOS来执行许多任务(例如,磁盘访问)。

对于现代操作系统,引导加载程序可快速切换到32位或64位模式并执行OS内核。内核可以注册自己的中断处理程序,可由用户空间应用程序调用。内核的例程可以更可移植(因为它们不依赖于特定的硬件),更灵活(OS供应商可以根据需要更改它们,而不必使用硬件附带的任何东西),更复杂(可以执行任意复杂的操作)代码(而不是BIOS中编写的代码),并且更加安全(因为OS可以控制对共享资源的访问,并防止程序相互干扰,从而实现自己的任意权限方案)。

为了与特定的硬件交互,操作系统可以加载和使用其自己的设备驱动程序。因此,操作系统或应用程序根本不需要调用大多数BIOS例程。实际上,出于安全原因,BIOS中断甚至被禁用。由于BIOS处于16位实模式下,因此更难调用现代OS。

虽然在运行OS的过程中BIOS的使用非常有限,但其功能仍在外围使用。例如,当计算机进入睡眠状态时,操作系统未运行,并且最终落入固件中,以将硬件设置为正确的状态以暂停并恢复操作系统。这些用途通常仅限于ACPI调用,而不是对完整BIOS接口的调用。ACPI是BIOS扩展,它“在操作系统(OSPM)的控制下进行电源管理,这与以前的BIOS中央系统相反,后者依靠特定于平台的固件来确定电源管理和配置策略”

请注意,正式的“ BIOS”是指特定的固件接口,但该术语通常通常用于指代计算机固件。最近的一些计算机(尤其是Apple的计算机)已经用UEFI代替了BIOS(严格意义上的固件),这当然就是所谓的实现这些功能的方法。

有关BIOS的角色如何随着时间的推移而减少的更多信息,请参阅Wikipedia


15
通过系统时钟(一天中的时间)的交互最少。
MSalters 2012年

7
您真的确定吗?风扇控制,已经提到的系统管理模式,整个ACPI(例如控制处理器速度)如何?
亚历山大

32
我可以尝试一下,在机器运行时焊掉BIOS芯片。
JohnnyFromBF 2012年

5
@Ian为什么要为自己辛苦。找到带有插槽BIOS的旧板,然后拉出芯片。另外,IIRC上一些最近的超频器板仍然具有硬件开关,可让您在两个BIOS之间进行交换。引导B映像闪烁,启动至A,运行时切换至B。
丹·尼利

17
@Ian我已经做到了。我在刷新BIOS时断电,但之后没有启动。我们有20台机器,它们的硬件完全相同,而且它们已经老化了。.因此,我启动了其中一台,卸下了BOIS芯片,插入了拧紧的一台,然后闪烁了。在那之后,两个BOIS芯片都运行良好。当然,这是运行闪存软件的DOS。我认为仍然令人印象深刻。(据我所知,这些板都是技嘉品牌的,与Pentium 4兼容)
Ekin Koc 2012年

32

BIOS为操作系统提供了许多服务,其中大多数与电源管理有关:

  • 修改CPU和总线时钟
  • 启用/禁用主板设备
  • 扩展端口电源控制
  • 暂挂到磁盘和暂挂到RAM
  • 恢复事件设置

由于操作系统可以更快地恢复其状态(大多数情况下,只有在重新加载内核状态以及在需要时才交换程序状态,这比重新加载整个RAM的速度要快得多),因此大多数情况下都在操作系统中实现了“挂起磁盘”功能。该功能仍保留在规范中。

操作系统无法实现Suspend-to-RAM,因为它依赖于BIOS跳过RAM初始化和测试,因此OS需要一个API来告知BIOS,它打算使用当前RAM内容恢复。为了提供此服务,BIOS要求OS完整保留某个RAM区域。

用于所有BIOS服务的OS的接口是一段虚拟机代码,需要在仿真器上运行,并在硬件中生成必要的I / O操作。对于挂起,通常是这样实现的:执行硬件写操作之一然后触发中断,该中断将控制权转移到BIOS。


17

在现代系统中,操作系统使用BIOS分为三个主要领域,例如,使用UEFI标准的领域。首先是一系列服务,称为UEFI运行时服务。这些服务允许操作系统获取仅BIOS知道的信息,例如BIOS使用的时间,引导顺序,当前用户安全配置文件,有关主板,DIMM的信息等。

第二种是系统管理模式,它是内存的隐藏部分(SMRAM),可通过高优先级中断(SMM)访问。许多BIOS使用它来实现高安全性OEM功能或实现硬件变通方案。

第三是ACPI。ACPI提供操作系统使用的配置,电源管理以及硬件数据和代码,以增强操作系统驱动程序可以使用行业标准或设备驱动程序发现的内容。例如,是否有特殊的信号来控制硬盘驱动器的电源,或者有特殊的方式与标准不涵盖的电池进行通话。

提姆


9

现代操作系统主要将BIOS用于加载,但仍有一些用途,其中最值得注意的是:

  • 对电源按钮做出反应(
    包括4秒钟后关闭PC )。
  • 在笔记本电脑上更改屏幕亮度设置
  • 笔记本电脑上的电池事件
  • 悬挂

我认为亮度是通过在绘制之前更改颜色值来完成的。
科尔·约翰逊

3
@ColeJohnson:否:至少在Thinkpads上,它实际上会改变背光亮度。
机械蜗牛

1
亮度是硬件控制的脉宽调制信号,可在高频下打开或关闭亮白色LED。这个灯是一个主要的电池消耗者

1

除了上面提到的内容外,英特尔还开始采用另一种方式,并通过内置于BIOS和主板中的Active Management Technology提供带外访问硬件的功能,该功能可独立于操作系统进行控制,从而进一步扩展了硬件。有了这些板,您实际上可以做一些工作。无论您认为它是内置的还是第二个操作系统都是另一回事,但是由于它具有板载硬件和BIOS中的组件,因此我坚持使用内置。

英特尔营销手段

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.