【问题标题】:How is the BIOS used by a modern OS?现代操作系统如何使用 BIOS?
【发布时间】:2011-02-02 04:09:24
【问题描述】:

BIOS 在现代操作系统中的作用是什么?开机后还能用吗?是否有某种 BIOS API?

【问题讨论】:

    标签: api operating-system bios


    【解决方案1】:

    BIOS 仍然是在刚刚启动的 CPU 上运行的第一件事,负责启动主板硬件、设置基本芯片组模式和寄存器、初始化一些硬件以及运行加载内核的代码。

    一旦加载内核,BIOS 通常不会被使用,它依赖于 16 位执行环境,而不是现代内核运行的 32 位或 64 位保护模式环境。

    引导加载程序通常需要 BIOS IO 调用才能将内核放入内存。即使在这个角色中,BIOS 也被更新的引导时间软件(例如Coreboot)所取代,以提供更快的引导时间。 EFI 有朝一日会取代传统的 BIOS,并有望取代引导加载程序,在从存储加载内核后直接将控制权传递给内核。

    发现的硬件配置、内存范围设置和 ACPI 元数据表可能是加载内核后操作系统使用的唯一基于 BIOS 的数据。任何可运行的 ACPI 代码都被编码为 ACPI 机器语言并由操作系统解释。

    任何关于 MS-DOS 汇编编程的优秀传统书籍都将包含有关 BIOS 编程接口的信息。查看The Art of ASSEMBLY LANGUAGE PROGRAMMING

    【讨论】:

    • 在电源管理过程中,在进入和退出待机状态时,也会执行大量 BIOS 代码。 (不是 ACPI 的明确部分,而是嵌入在 ACPI 事件期间调用的 SMI 处理程序中的代码。)
    【解决方案2】:

    我为笔记本电脑编写 BIOS 已经好几年了。 BIOS 在操作系统运行时会做很多事情。

    一项主要任务是在发生许多事件时通知操作系统,以便操作系统看起来很聪明(好像它以某种方式自行解决了这些问题)。例如,BIOS 会在以下时间告诉操作系统:按下电源按钮、插入或取出电池、接通或断开交流电源、系统连接或断开扩展坞、插入硬盘驱动器和/或某些类型的光驱或删除。

    大多数便携式计算机都具有您可以通过 Fn 键和制造商提供的操作系统级应用程序访问/控制的功能。 BIOS 响应这些热键并具有与操作系统级应用程序交互的代码。控制屏幕亮度(某些操作系统希望显示控制)或控制闪烁的 LED 等功能属于此类。

    也许 BIOS 最重要的任务是在按住电源按钮超过 4 秒时关闭系统(从操作系统挂起中恢复!)。

    【讨论】:

    • 如果仍然使用这种做法,您能解释一下执行是如何进入 BIOS 开始的吗?在现代操作系统上,如果操作系统不特意费心调用 BIOS,这似乎是不可能的。
    • @R:通常使用 SMI 来完成此操作。查看系统管理模式 (en.wikipedia.org/wiki/System_Management_Mode) 了解更多信息。
    【解决方案3】:

    现在让操作系统控制 BIOS 的最大好处是控制硬件级别的变量,例如风扇速度、温度计等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-07
      • 2021-04-24
      • 1970-01-01
      • 2014-08-13
      • 1970-01-01
      • 2012-03-16
      • 2016-12-18
      • 2011-05-21
      相关资源
      最近更新 更多