• LDD3驱动设备分类


    字符设备
    一个字符( char ) 设备是一种可以当作一个字节流来存取的设备( 如同一个文件 ); 一个字符
    驱动负责实现这种行为. 这样的驱动常常至少实现 open, close, read, 和 write 系统调用. 文本控
    制台( /dev/console )和串口( /dev/ttyS0 及其友 )是字符设备的例子, 因为它们很好地展现了流
    的抽象. 字符设备通过文件系统结点来存取, 例如 /dev/tty1 和 /dev/lp0. 在一个字符设备和一
    个普通文件之间唯一有关的不同就是, 你经常可以在普通文件中移来移去, 但是大部分字符
    设备仅仅是数据通道, 你只能顺序存取.然而, 存在看起来象数据区的字符设备, 你可以在里
    面移来移去. 例如, frame grabber 经常这样, 应用程序可以使用 mmap 或者 lseek 存取整个要求
    的图像.
    块设备
    如同字符设备, 块设备通过位于 /dev 目录的文件系统结点来存取. 一个块设备(例如一个磁
    盘)应该是可以驻有一个文件系统的. 在大部分的 Unix 系统, 一个块设备只能处理这样的 I/
    O 操作, 传送一个或多个长度经常是 512 字节( 或一个更大的 2 的幂的数 )的整块. Linux, 相
    反, 允许应用程序读写一个块设备象一个字符设备一样 -- 它允许一次传送任意数目的字节.
    结果就是, 块和字符设备的区别仅仅在内核在内部管理数据的方式上, 并且因此在内核/驱动
    的软件接口上不同. 如同一个字符设备, 每个块设备都通过一个文件系统结点被存取的, 它们
    之间的区别对用户是透明的. 块驱动和字符驱动相比, 与内核的接口完全不同.
    网络接口
    任何网络事务都通过一个接口来进行, 就是说, 一个能够与其他主机交换数据的设备. 通常,
    一个接口是一个硬件设备, 但是它也可能是一个纯粹的软件设备, 比如环回接口. 一个网络接
    口负责发送和接收数据报文, 在内核网络子系统的驱动下, 不必知道单个事务是如何映射到
    实际的被发送的报文上的. 很多网络连接( 特别那些使用 TCP 的)是面向流的, 但是网络设备
    却常常设计成处理报文的发送和接收. 一个网络驱动对单个连接一无所知; 它只处理报文.

    既然不是一个面向流的设备, 一个网络接口就不象 /dev/tty1 那么容易映射到文件系统的一个结点

    上. Unix 提供的对接口的存取的方式仍然是通过分配一个名子给它们( 例如 eth0 ), 但是这个名子在
    文件系统中没有对应的入口. 内核与网络设备驱动间的通讯与字符和块设备驱动所用的完全不同.
    不用 read 和 write, 内核调用和报文传递相关的函数.

  • 相关阅读:
    Vue总结
    Android适配总结
    Java为什么需要四种引用?
    回溯递归:八皇后
    eclipse中的maven build 、maven clean 、 maven install作用
    JS时间格式CST转GMT
    什么是ECMAScript、什么又是ECMA?
    maven打包工程出现错误 Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test
    Vue三步完成跨域请求
    Eclipse导入别人项目爆红叉
  • 原文地址:https://www.cnblogs.com/michile/p/2907696.html
Copyright © 2020-2023  润新知