目前,我的操作系统从软盘启动。由于软盘驱动是过时的,我计划改变引导媒体。
当我试图找出使用什么引导媒体时,我意识到无论我选择什么,我都需要为它编写设备驱动程序。虽然真正的模式BIOS可能会为我提供一些中断来与该设备交互,但一旦进入受保护模式,我将独自一人。因此,我开始阅读< Linux设备驱动程序第三版>以获得一些指导。但这本书是关于为Linux 编写设备驱动程序的。因此,这意味着设备驱动程序是特定于操作系统的。
现在我有了以下问题:
设备驱动程序在哪些方面依赖于操作系统?操作系统和设备驱动程序在内存中的布局如何?操作系统和设备驱动程序如何相互交互?如果我在设备中进行热插拔,操作系统如何知道在哪里找到合适的设备驱动程序?f 211
发布于 2011-05-01 15:30:25
设备驱动程序是一段实现设备与操作系统内核之间接口的代码。在这方面,它必须依赖于它所针对的操作系统--这是核心目的,使该操作系统了解设备并允许它使用其功能。
这并不是说设备驱动程序的代码不能在不同的OSes上共享。其中的某些部分可以是可移植的(设备端),但是接口端(与OS交互)依赖于OS定义/提供的API。
内存中的布局完全依赖于系统。不需要为驱动程序和其他内核服务制定任何特定的内存布局策略。设备本身很可能会施加内存布局限制,但这是另一个主题。
操作系统定义了它如何通过API与设备驱动程序交互。您已经在那本(很棒)的书中获得了Linux如何做到这一点的文档。其他OSes也可以采用不同的方式--操作系统设计人员设置规则。如果您是创建内核的人,则需要定义API。
热插拔不容易.进行映射的一种方法是使用某种形式的查找表,其中包含来自设备的信息作为“键”,合适的设备驱动程序结构/指针/任何作为值的或相反的方式(在驱动程序中有一个API,让您知道可以处理的设备in )。设备ID可以是PCI设备ID、USB标识符、.取决于总线和设备的类型。
https://stackoverflow.com/questions/5849207
复制相似问题