现代操作系统如何使用BIOS?

com*_*pie 17 api operating-system bios

BIOS在现代操作系统中的作用是什么?它在启动后仍然使用吗?是否有某种BIOS API?

Joe*_*erg 18

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

内核加载后通常不使用BIOS,并且取决于16位执行环境,而不是现代内核运行的32位或64位保护模式环境.

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

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

任何关于MS-DOS汇编编程的好传统书籍都将包含有关BIOS编程接口的信息.查看汇编语言程序的艺术

  • 许多BIOS代码也在电源管理期间执行,在进出待机状态的过程中.(不是ACPI的明确部分,而是嵌入在ACPI事件期间调用的SMI处理程序中的代码.) (2认同)

小智 10

我为笔记本电脑写了几年BIOS.在操作系统运行时,BIOS会执行很多操作.

一个主要的任务是在许多事件发生时告知操作系统,这样操作系统看起来很聪明(就好像它以某种方式将这些东西自行解决).例如,BIOS在以下情况下通知操作系统:按下电源按钮,插入或取出电池,交流电源进入或离开,系统连接或断开对接站,硬盘驱动器和/或某些类型的光盘驱动器或删除.

大多数便携式计算机具有可以通过Fn键和制造商提供的OS级应用程序访问/控制的功能.BIOS响应这些热键,并具有与操作系统级应用程序接口的代码.像控制屏幕亮度(其某些操作系统要特征出现来控制)或控制叶环的LED属于这一类.

也许BIOS最重要的任务是在按住电源按钮4秒以上时关闭系统(从OS挂起恢复!).