目前,我的操作系统从软盘启动。由于软盘驱动程序已经过时,我打算更改启动媒体。
当我试图找出要使用的启动媒体时,我意识到无论我选择什么,我都需要为它编写设备驱动程序。虽然实模式BIOS可能会为我提供一些与该设备交互的中断,但一旦进入保护模式,我就会独立完成。所以我开始阅读<
现在我收到了以下问题:
答案 0 :(得分:3)
设备驱动程序是一段代码,用于实现设备与(通常)操作系统内核之间的接口。在这方面,它必然依赖于它所针对的操作系统 - 这是核心目的,使操作系统了解设备并允许其使用其功能。
这并不是说不能在不同的操作系统上共享设备驱动程序的代码。它们的某些部分可以是可移植的(设备端),但接口端(与OS交互)依赖于OS定义/提供的API。
内存中的布局完全取决于系统。驱动程序与其他内核服务不必具有任何特定的内存布局策略。设备本身可能会很好地施加内存布局约束,但这是一个不同的主题。
操作系统定义了它如何通过API与设备驱动程序交互。你已经在这本(伟大的)书中获得了Linux如何做到这一点的文档。其他操作系统可以采用不同的方式 - 操作系统设计者设置规则。如果您是创建内核的人,则可以定义API。
热插拔并不容易。进行映射的一种方法是使用某种形式的查找表,其中来自设备的信息作为“键”,以及合适的设备驱动程序结构/指针/无论作为值,还是相反(在驱动程序中具有API)它可以让你知道可以处理的设备ID。设备ID可以是PCI设备ID,USB标识符......取决于总线和设备类型。