邮箱:www.jungshuodz@163.com
手机:18268652722
电话:18268652722
地址:宁波市北仑区大碶庙前山路45号
发布时间:2024-12-27 08:18:13 人气:
扩展的定义相当准确,但仍然不完整,因为某些驱动程序根本不与任何硬件设备关联。假设我们要实现一个核弹发射器的驱动(这里不得不佩服jyy的想象力,程序中定义的密码也可能是彩蛋2333)。幸运的是,之前有人遇到过类似的问题,安装了上面的触摸控制板驱动程序就消失了。在用户模式下运行的组件称为应用程序,在内核模式下运行的组件称为软件驱动程序。
应用程序调用操作系统实现的函数,操作系统调用驱动程序实现的函数。从最基本的意义上讲,驱动程序是一个软件组件,允许操作系统和设备相互通信。驱动程序(由设计和制造设备的同一家公司编写)知道如何与设备硬件通信以获取数据。当驱动程序从设备获取数据时,它会将数据返回给操作系统,操作系统将数据返回给应用程序。
在lx_init之前的code_init函数中,这个结构体会作为参数传入。这样,通过系统调用读写这个设备时,控制流程就会走到我们注册的函数中(可以使用strace命令来验证)。 lx_read中有一些错误检查以确保驱动程序安全。更多的函数会注册在业界真实驱动的file_operations结构体中:
它相当于一个硬件接口。操作系统只有通过这个接口才能控制硬件设备的工作。某个设备的驱动程序如果安装不正确,将无法正常工作。该段用于标记该驱动对应的模块在内核中的起点和终点。这与最初包含在Linux内核中的模块库有关。这个设备驱动程序编译完成后,会生成类似的东西。因此,驱动程序被比喻为硬件的灵魂、硬件的主人、硬件与系统之间的桥梁等。
我们可以扩展驱动程序的定义,说驱动程序是观察或参与操作系统和设备之间通信的任何软件组件。 Linux中的一切都是文件,所以只需要下面的file_operations结构来注册一个设备驱动程序。万能打印机驱动-打印机扫描仪驱动助手,自动识别打印机品牌型号,快速匹配对应的打印机扫描仪驱动。编写软件驱动程序的主要原因是访问仅在内核模式下可用的受保护数据。
烤面包机的功能驱动程序通过向USB 主控制器的功能驱动程序发送请求来与烤面包机间接通信。假设程序想要将1GB 的数据复制到磁盘上。与CPU相比,总线非常慢。如果我们想让程序循环地通过总线将数据一点点复制到磁盘上,那么开销会非常巨大。设备驱动程序存在的目的是提取所有I/O设备共有的功能,使应用程序可以使用相同的接口,屏蔽掉复杂的细节,从而完成对I/O设备的抽象。
相关推荐