计算机基础实战课
彭东
网名 LMOS,Intel 傲腾项目关键开发者
19719 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 57 讲
计算机基础实战课
15
15
1.0x
00:00/00:00
登录|注册

32|IO管理:Linux如何管理多个外设?

你好,我是 LMOS。
在上一节课中,我们通过对 IO Cache 的学习,知道了 IO Cache 缓存了 IO 设备的数据,这些数据经过 IO 调度器送给块层,进而发送给 IO 设备。
今天我们再往下一层探索,以 Linux 为例,看看 Linux 是如何管理多个 IO 外设的。我们先从例子出发,了解一下设备在 Linux 中的与众不同,然后看看设备分类及接口,分析一下应用开发人员应该如何使用它们,最后我会带你一起实现一个设备加深理解。
这节课的配套代码,你可以从这里下载。话不多说,我们开始吧。

文件和外设的关系

用几十行代码在 Linux 上读写一个文件,我们都很熟悉吧。若是不熟悉,百度、谷歌都可以让我们熟悉。
我们今天要写的这个小例子就是从读取一个文件开始的。想要读取文件,首先得知道文件在哪里,也就是需要知道文件路径名,知道了文件路径名,再进行“三步走”就可以:打开它、读取它、关闭它。一句话,open、read、close 一气呵成。
那么这个文件是什么呢,路径名如下所示:
"/dev/input/event3"
看了路径名,我们知道 enent3 文件在根目录下 dev 目录的 input 目录之下。从名称上看,这好像与设备、输入、事件有关系,我这里先卖个关子,看完后面的讲解,你自然就知道答案了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了在Linux系统中管理多个IO外设的方法。首先通过一个例子展示了在Linux上读取文件的过程,以及文件与外设的关系。接着介绍了设备分类,包括网络设备、块设备、字符设备、杂项设备和伪设备。文章重点讲解了如何创建一个杂项设备,通过编写驱动程序和调用Linux内核的接口来实现设备的注册和管理。作者通过简单的代码示例展示了如何创建一个杂项设备,并解释了设备文件操作方法结构体中的回调函数的作用。最后,作者提到了Linux内核管理设备的核心机制,即将设备表示为特殊的文件节点,并通过文件操作转发给对应的设备驱动程序回调函数来处理。整体而言,本文通过实例和分类介绍了Linux IO管理的相关内容,为读者提供了对Linux多个外设管理的基本了解。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《计算机基础实战课》
新⼈⾸单¥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归属地:湖北
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部