32|IO管理:Linux如何管理多个外设?
LMOS
你好,我是 LMOS。
在上一节课中,我们通过对 IO Cache 的学习,知道了 IO Cache 缓存了 IO 设备的数据,这些数据经过 IO 调度器送给块层,进而发送给 IO 设备。
今天我们再往下一层探索,以 Linux 为例,看看 Linux 是如何管理多个 IO 外设的。我们先从例子出发,了解一下设备在 Linux 中的与众不同,然后看看设备分类及接口,分析一下应用开发人员应该如何使用它们,最后我会带你一起实现一个设备加深理解。
文件和外设的关系
用几十行代码在 Linux 上读写一个文件,我们都很熟悉吧。若是不熟悉,百度、谷歌都可以让我们熟悉。
我们今天要写的这个小例子就是从读取一个文件开始的。想要读取文件,首先得知道文件在哪里,也就是需要知道文件路径名,知道了文件路径名,再进行“三步走”就可以:打开它、读取它、关闭它。一句话,open、read、close 一气呵成。
那么这个文件是什么呢,路径名如下所示:
看了路径名,我们知道 enent3 文件在根目录下 dev 目录的 input 目录之下。从名称上看,这好像与设备、输入、事件有关系,我这里先卖个关子,看完后面的讲解,你自然就知道答案了。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了在Linux系统中管理多个IO外设的方法。首先通过一个例子展示了在Linux上读取文件的过程,以及文件与外设的关系。接着介绍了设备分类,包括网络设备、块设备、字符设备、杂项设备和伪设备。文章重点讲解了如何创建一个杂项设备,通过编写驱动程序和调用Linux内核的接口来实现设备的注册和管理。作者通过简单的代码示例展示了如何创建一个杂项设备,并解释了设备文件操作方法结构体中的回调函数的作用。最后,作者提到了Linux内核管理设备的核心机制,即将设备表示为特殊的文件节点,并通过文件操作转发给对应的设备驱动程序回调函数来处理。整体而言,本文通过实例和分类介绍了Linux IO管理的相关内容,为读者提供了对Linux多个外设管理的基本了解。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《计算机基础实战课》,新⼈⾸单¥68
《计算机基础实战课》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(3)
- 最新
- 精选
- 极客酱酱读写一个设备文件,运行不起来,一直阻塞在这行:ret = read(fd, &in, sizeof(struct input_event));
作者回复: 你要将键盘按下
2022-10-20归属地:湖北2 - peter请问:对于一个驱动程序,Linux是在/dev目录下面创建一个文件来与之对应吗?
作者回复: 不是
2022-10-16归属地:湖北 - 苏流郁宓dev下面有net文件夹和network_latency和network_throughput字符设备 预估网络文件信息存储在内存上,上述文件构成设备登记函数!
作者回复: 嗯嗯
2022-10-15归属地:湖北
收起评论