Linux 内核是通过 BIOS 访问硬件,还是直接与硬件交互?

Linux 内核是通过 BIOS 访问硬件,还是直接与硬件交互?

根据我的理解,BIOS 1) 初始化硬件,2) 跳转到某个位置并将引导加载程序加载到 RAM 中。当 BIOS 进行硬件初始化时,它必须运行一些例程(即设置正确的寄存器位、延迟等)。我要问的问题是这些 BIOS 例程是否是:

  1. BIOS 例程是由 Linux 内核调用的还是 Linux 内核驱动程序重新实现了必要的例程?

  2. BIOS 是用汇编语言编写的还是某种硬件定义语言?

答案1

  1. 这取决于。大多数情况下,内核直接驱动硬件,而不经过系统固件;但在某些情况下它确实依赖于固件提供的功能(例如通过 ACPI)。

  2. 最初的PC BIOS是用汇编语言编写的(源代码包含在IBM的技术参考手册中)。目前的PC系统固件大多是用C编写的,参见天诺核心

相关内容