有关设备驱动程序和内核的问题

| 目前,我的操作系统是从软盘启动的。由于软盘驱动程序已过时,我打算更改启动媒体。 当我尝试找出要使用的启动媒体时,我意识到无论选择什么,都需要为其编写设备驱动程序。尽管实模式BIOS可能会为我提供一些与该设备进行交互的中断,但是一旦进入保护模式,我就自己一个人。因此,我开始阅读以获得一些指南。但是那本书是关于为Linux系统编写设备驱动程序的。因此,这意味着设备驱动程序特定于操作系统。 现在我有以下问题: 设备驱动程序在哪些方面取决于操作系统? 操作系统和设备驱动程序如何在内存中布置? 操作系统和设备驱动程序如何相互交互? 如果我热插拔设备,操作系统如何知道在哪里可以找到合适的设备驱动程序?     
已邀请:
设备驱动程序是一段代码,用于实现设备和(通常)操作系统内核之间的接口。在这方面,它必须取决于其目标操作系统-这是核心目的,从而使该操作系统知道该设备并允许其使用其功能。 这并不是说不能在不同的操作系统上共享设备驱动程序的代码。它们的某些部分可能是可移植的(设备端),但接口端(与OS交互)取决于OS定义/提供的API。 内存中的布局完全取决于系统。对于驱动程序和其他内核服务,没有任何特定的内存布局策略。设备本身可能会强加一些内存布局约束,但这是一个不同的主题。 操作系统定义了它如何通过API与设备驱动程序进行交互。在那本(很棒的)书中,您已经找到了有关Linux如何实现的文档。其他OS可能会做不同的事情-OS设计人员设置了规则。如果您是创建内核的人,请定义API。 热插拔并不容易。进行映射的一种方法是使用某种形式的查找表,将来自设备的信息作为\“ key \”,并将合适的设备驱动程序结构/指针/无论是什么作为值,或者另一种方式(在其中包含API您的驱动程序,使您知道可以处理的设备ID。设备ID可以是PCI设备ID,USB标识符……取决于设备的总线和类型。     

要回复问题请先登录注册