我有这些相关问题:
有谁知道操作系统如何了解主板上连接的所有硬件?(我想这被称为“硬件枚举”)。
它如何确定特定 IO 地址上驻留的硬件类型(即:串行或并行或任何控制器)?
如何编写一个系统模块来完成这项工作?(假设尚未加载操作系统,仅加载 BIOS)。
我知道 BIOS 只是一个验证和一个用户友好的界面,用于在启动时配置硬件,之后对于大多数现代操作系统(win、Linux 等)没有真正的用途。此外,我知道对于 BIOS,找到所有硬件应该不难,因为它是由主板制造商专门调整的(谁知道有关它的一切!)。但对于 BIOS 之上的操作系统或应用程序来说,情况就完全不同了。正确的?
当某些内核代码(Ring 0)对用户代码(Ring 3)例程进行"调用"时,我找不到任何关于标准CPU(即:x86)的真正含义的具体信息.
1)执行该例程时,CPU模式状态是否变为用户模式?
2)在用户级例程执行最后的'ret'指令后,由于尝试返回内核空间代码而引发异常?