• 【linux】设备驱动程序、块设备和字符设备区别


    设备驱动程序

    设备驱动程序用于与系统连接的输入/输出装置通信,如硬盘、软驱、各种接口、声卡等。按照经典的UNIX箴言“万物皆文件”(everything is a file),对外设的访问可利用/dev目录下的设备文件来完成,程序对设备的处理完全类似于常规的文件。设备驱动程序的任务在于支持应用程序经由设备文件与设备通信。换言之,使得能够按适当的方式在设备上读取/写入数据。

    块设备和字符设备区别

    外设可分为以下两类。
    (1)字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,调制解调器是典型的字符设备。
    (2)块设备:应用程序可以随机访问设备数据,程序可自行确定读取数据的位置。硬盘是典型的块设备,应用程序可以寻址磁盘上的任何位置,并由此读取数据。此外,数据的读写只能以块(通常是512B)的倍数进行。与字符设备不同,块设备并不支持基于字符的寻址。
    编写块设备的驱动程序比字符设备要复杂得多,因为内核为提高系统性能广泛地使用了缓存机制。

    块设备字符设备
    支持随机读不支持随机读 ,支持顺序读
    硬盘调制解调器
    基于块倍数(512B)进行读写寻址基于字符

    区别划分点:块设备寻址基于块,字符设备基于字符,块设备代表有硬盘,字符设备代表调制解调器,块设备支持随机读,字符设备只支持顺序读。

    参考:《深入linux内核框架》

  • 相关阅读:
    【Redis】解决Redis并发竞争key问题
    MyBatis(三)
    【面试经典150 | 哈希表】有效的字母异位词
    最近两周出去面试遇到的面试题(前端)
    JDBC封装查询单个和查询多个
    115道高频Java面试题,
    JAVA基础(JAVA SE)学习笔记(四)IDEA安装、使用、设置、断点、乱码汇总
    深入探讨 Golang 中的追加操作
    并查集 rank 的优化
    事实表的分类
  • 原文地址:https://blog.csdn.net/qq_39965059/article/details/126846436