在没有任何形式的驱动程序的情况下,BIOS 如何在控制 I/O 设备?
例如,如果 BIOS 没有任何显卡驱动程序,计算机启动时如何显示图像。
是否存在某种通用驱动程序,它是所有 BIOS 和硬件的标准,允许 BIOS 无论安装什么硬件都能执行基本功能。
任何帮助,将不胜感激。
谢谢。
答案1
BIOS 是否有某种通用的“驱动程序”
在没有任何形式的驱动程序的情况下,BIOS 如何在控制 I/O 设备?
标准。所有组件都实现一个基本接口,BIOS 被编程为使用该接口。当然,因为它是一个基本的接口(这就是 BIOS 中的“B”所代表的意思),它不能充分利用硬件的全部功能;这留给软件通过可以直接访问硬件的驱动程序来实现。
最初,BIOS 制造商创建了一套蜜蜂设备如果想要兼容,就需要使用这些功能。他们通过“中断”这是设备的一种方式,打断程序让它知道某事发生了,反之亦然。
例如,如果 BIOS 没有任何显卡驱动程序,计算机启动时如何显示图像。
在预启动显示的情况下,视频适配器的固件实现电子视频标准协会(视频电子标准协会)是为简化对显示硬件的访问而制定的标准。BIOS 知道如何使用提供的标准函数访问视频硬件。这有点类似于 DirectX 作为硬件的高级 API 实现的方式,这样程序员就不必考虑每一个硬件配置。
是否存在某种通用驱动程序,它是所有 BIOS 和硬件的标准,允许 BIOS 执行基本功能,无论安装了什么硬件。
有点。它不是驱动程序,而是标准 API;一组编程函数,可用于执行诸如初始化设备或输入和输出数据之类的基本操作。
如果制造商想要销售其产品,他们必须确保至少实现标准 API,以便产品兼容。这样,系统才能检测到硬件,并且对于启动关键设备,制造商可以在基本级别访问这些设备,直到能够加载知道如何完全访问这些设备的软件驱动程序。
答案2
PC 中的 BIOS 旨在实现与 8 位 CP/M 系统中的 BIOS 类似的功能,该系统在 80 年代中期 PC 占据主导地位之前非常流行。BIOS 旨在包含一个最小的引导加载程序和依赖于硬件的低级例程,用于对一些设备(屏幕、磁盘、磁带、COM 端口)进行输入和输出。执行此操作的知识内置在 ROM 中 - 无需驱动程序,当然,此 ROM 也无需支持其他硬件。(电源管理和 ACPI 等功能出现得晚得多,是在 90 年代,当时 PC 已经确立了自己作为无处不在的平台的地位。)
(CP/M“文件系统”位于一个称为 BDOS 的从磁盘加载的组件中 - 同样,FAT 文件系统及其接口的知识位于两个隐藏文件 MSDOS.SYS 或 IO.SYS(至少一个)中 - 而不是 BIOS ROM 的一部分。)
但是... PC BIOS 与 CP/M 不同,它支持“Option ROM”的概念,它可以包含在扩展卡中。因此至少存在一种最小机制来扩展 BIOS。以 CGA 开头的视频卡(CGA 的前身 MDA 可能也这样做了)将有一个可选 ROM,可以扩展或添加 BIOS 接口的 I/O 功能。(这就是为什么您在 BIOS 启动之前会看到 NVidia 消息。)硬控制器和 SCSI 卡也是如此。所有这些现在仍然如此。许多较旧的网卡都有一个用于启动 ROM 的插槽。
还要记住,80 年代出现的 PC 克隆制造商很快决定不提供兼容的 BIOS 接口,但最终不得不复制整个 PC 平台,包括所有低级硬件,如定时器芯片、中断控制器等。(这相对容易,因为其中很少是 IBM 专有的。)这是因为 BIOS 运行速度很慢,程序员直接访问硬件,尤其是对于游戏而言。
因此,在可选 ROM 和构成 PC 平台的标准硬件共识之间,以及在 PC 的整个发展过程中一直保持向后兼容的事实之间,希望使用无需驱动程序的显示器的设备可以:
- 使用标准 BIOS 接口,可以通过视频硬件中的选项 ROM 进行“挂钩”
- 或者假设系统中有什么硬件并直接访问基本硬件
所有 PC 显示硬件在启动时仍以“VGA 兼容”模式工作。原始 IBM VGA 适配器具有与早期 EGA、CGA 和 MDA 卡兼容的模式。所有这一切意味着从 BIOS 或操作系统外部运行的程序可以假定它现在仍然可以按照惯例读取和写入连接到显示器的相同内存,就像 1985 年一样。