22、深入理解 Linux 设备与设备驱动

深入理解 Linux 设备与设备驱动

1. 设备驱动基础

在计算机系统中,每个应用程序在某些时刻都会与设备进行通信。即便你有意避免,也很难不与系统中的一个或多个设备产生接触。例如,你编写了一个完全在内存中运行的复杂建模算法,但如果要保存结果,就需将数据存储到文件系统中。而且,由于系统负载,代码可能会被交换到磁盘上,向控制台输出信息可能还需要伪终端驱动。所以,无论如何,进程都会调用设备驱动。

Linux 设备驱动 API 可追溯到 UNIX 早期,此后基本保持不变。POSIX 标准对该接口进行了规范化,成为 Linux 的基础。许多设备的打开方式与磁盘上的文件类似,与这些设备驱动的通信始于打开其中一个文件。应用程序使用 open 系统调用返回的文件描述符,并使用所有以文件描述符为参数的系统调用。这实际上是一个采用函数式编程的面向对象模型,尽管它诞生于 20 世纪 70 年代,远早于面向对象编程流行之时。通常,设备通过其文件描述符(类似于对象)进行访问,并且有一组有限的系统调用可用于访问设备(类似于方法)。

设备驱动可能仅实现其所需的系统调用,因此在一个设备上有效的系统调用在另一个设备上可能无效。例如,一个驱动可能只实现 open close 系统调用,但这样的驱动用处不大。当应用程序尝试使用驱动未实现的系统调用时,函数通常会返回错误指示,并根据具体的系统调用设置 errno

2. 设备驱动类型

设备驱动主要分为以下几类:
- 字符设备 :PC 上的串口或用于输入 s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值