gpt4 book ai didi

operating-system - 操作系统如何检测硬件?

转载 作者:行者123 更新时间:2023-12-04 01:56:55 26 4
gpt4 key购买 nike

操作系统是从 BIOS 获取此信息,还是自行扫描总线以检测系统上安装了哪些硬件。在网上环顾四周后,不同的来源说了不同的话。有人说 BIOS 检测到硬件,然后将其存储在内存中,然后操作系统读取,其他人说操作系统扫描总线(例如 pci)以了解硬件。

我会认为现代操作系统会忽略 BIOS 并自行完成。

任何帮助,将不胜感激。

谢谢。

最佳答案

一般来说,大多数现代操作系统(Windows 和 Linux)将重新扫描检测到的硬件作为引导序列的一部分。事实证明,相信 BIOS 来检测一切并正确设置它是不可靠的。

在典型的 x86 PC 中,有多种技术用于检测连接的硬件。

PCI 和 PCI Express 总线有一个称为 Configuration Space 的标准机制,您可以扫描它以获取连接设备的列表。这包括安装在 PCI/PCIe 插槽中的设备,以及芯片组中的 Controller (视频 Controller 、SATA 等)。

如果检测到 IDE 或 SATA Controller ,操作系统/BIOS 必须与 Controller 对话以获取连接驱动器的列表。

如果检测到 USB Controller ,OS/BIOS 会加载 USB 协议(protocol)栈,然后 enumerates 连接的集线器和设备。

对于“旧版”ISA 设备,情况要复杂一些。即使您的主板上没有 ISA 插槽,系统中通常仍然有许多“ISA”设备(串行端口、并行端口等)。这些设备通常缺乏真正标准化的自动检测方法。要检测这些设备,有 2 个选项:

  • 探测已知地址 - 串行端口通常位于 0x3F8、0x2F8、0x3E8、0x2E8,因此请从这些地址中读取,看看那里是否有看起来像串行端口 UART 的东西。这远非完美。您可能有一个未扫描的非标准地址的串行端口。您也可能在其中一个地址处有一个非串行端口设备,该设备对被探测响应不佳。还记得 Windows 95 和 98 在安装过程中检测硬件时如何锁定很多吗?
  • ISA Plug-n-Play - 由于 ISA 被淘汰以支持 PCI,因此该标准一度流行一时。您可能不会遇到很多支持此功能的设备。我相信在 Windows Vista 及更高版本中默认禁用 ISA PnP,但我现在正在努力寻找它的来源。
  • ACPI 枚举 - 操作系统可以依靠 BIOS 在 ASL 代码中描述这些设备。 (见下文。)

  • 此外,系统中可能有许多非 PnP 设备处于半固定地址,例如 TPM chipHPET 或笔记本电脑键盘上的那些“特殊”按钮。对于要向操作系统解释的这些设备,标准方法是使用 ACPI。

    BIOS ACPI 表应向操作系统提供主板上设备的列表。这些表是用一种叫做 ASL (or AML for the compiled form) 的语言编写的。在启动时,操作系统读取 ACPI 表并枚举任何描述的设备。请注意,要使其正常工作,主板制造商必须正确编写其 ASL 代码。 This is not always the case

    当然,如果所有自动检测方法都失败了,您可能会被迫手动安装驱动程序。您可以通过 Windows 中的添加新硬件向导来执行此操作。 (具体步骤因您安装的 Windows 版本而异。)

    关于operating-system - 操作系统如何检测硬件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18854931/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com