欢迎光临,嵌入式开源博客

嵌入式必备知识系列-Linux系统中有哪几种设备?

前言:

Linux操作系统对于一名嵌入式工程师来说,往往是最常用的操作系统,而无论是内核工作者还是驱动开发者都会和设备打交道,浏览/driver目录,你会发现有众多子文件夹,而每个子文件夹基本都对应一个设备驱动。今天要讲的就是Linux有哪几种设备?而这也是找工作中最常被问到的问题。

字符设备(char device)

字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。字符设备驱动程序通常至少要实现open,close,read和write系统调用。大多数字符设备是一个个只能顺序访问的数据通道。

字符设备提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,键盘、串口、调制解调器都是典型的字符设备。‍

块设备(block device)

顾名思义,块设备不同字符设备的是应用程序可以随机访问设备数据,应用程序可以自由定位数据的位置,硬盘、闪存、CD-ROM等都是典型的块设备。数据的读写是以块(512B)的倍数操作。而块设备不支持基于字符的寻址。

网络设备(net device)

网络设备在系统中的作用类似于一个已挂载的块设备。块设备将自己注册到blk_dev数据及其他内核结构中,然后通过自己的request函数在发生请求时传输和接收数据块,同样网络设备也必须在特定的数据结构中注册自己,以便与外界交换数据包时被调用。网络设备在Linux里做专门的处理。Linux的网络系统主要是基于BSD UNIX的Socket机制。在系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据的传递。系统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持。

以上是基本的三种设备类型,但其实在嵌入式系统内常用的还有一种设备类型,具体我们下个篇幅单独了解。

赞(0) 打赏
未经允许不得转载:Huangea Blog 嵌入式博客 » 嵌入式必备知识系列-Linux系统中有哪几种设备?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

一个很有意思的网站

留言板友链

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏