一、字符设备
字符设备就是在对某设备进行操作时,该设备的读取以字节为单位进行。字符设备的操作是通过linux系统直接调用驱动程序完成的,在驱动程序的上一层并没用文件系统。因此字符设备的特点如下:
1、以字节流的方式进行读写、一个字节一个字节的读写设备(有先后顺序)。
2、未经过文件系统,读取速度快。
3、每个字符设备都在 /dev 目录下存在一个设备文件。
二、块设备
块设备对于数据的操作是依靠数据块的形式进行的,在操作块设备时除了操作字符设备接口之外,还有专门用于操作块设备的接口。这些专门用于块设备的接口使得在块设备上可以构建文件系统,而应用程序在操作块设备时也往往通过文件系统。块设备的一些特点:
1、块设备以数据块形式进行操作。
2、块设备的数据能够随机存取。
3、操作块设备往往通过文件系统,而不是直接与设备进行通讯。
块设备的 I/O 操作方式与字符设备存在较大的不同,引入了 request_queue、request、bio等一系列数据结构。在整个块设备的I/O操作中,贯穿与始终的就是”请求“,字符设备的I/O操作则是直接进行不绕弯,而块设备的I/O操作会排队和整合。

个人的一些理解:
块设备上的文件系统进行挂载的时候:

mount -t ext4 /mnt /dev/mmcblk0p2

上面的指令,将mmcblk0的第二个分区 挂载到了 /mnt 目录下 并指定文件系统格式为 ext4。
mount的过程中,就已经将mmcblk0的块设备驱动的一系列操作和 /mnt的ext4文件操作相绑定。

Linux字符设备、块设备的区别相关推荐

  1. 十六、Linux驱动之块设备驱动

    1. 基本概念 块设备是Linux三大设备之一,其驱动模型主要针对磁盘,Flash等存储类设备,块设备(blockdevice)是一种具有一定结构的随机存取设备,对这种设备的读写是按块(所以叫块设备) ...

  2. Linux Shell 判断块设备节点是否存在

    /************************************************************************** Linux Shell 判断块设备节点是否存在* ...

  3. I/O输入输出——I/O设备(块设备与字符设备)

    无论是块设备还是字符设备,都是属于IO硬件,在整个硬件到软件层之前的了解,有助于我们理解. I/O设备 块设备 是一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来存放暂时的 ...

  4. Linux创建虚拟块设备并格式化为文件系统

    环境 为了方便学习文件系统的原理和原始数据的分析,需要创建虚拟块设备并格式化为ext4文件系统: Linux创建虚拟块设备 losetup命令     -a 显示所有已经使用的回环设备状态     - ...

  5. linux内核的块设备驱动框架详解

    1.块设备和字符设备的差异 (1)块设备只能以块为单位接受输入和返回输出,而字符设备则以字节为单位.大多数设备是字符设备,因为它们不需要缓冲而且不以固定块大小进行操作; (2)块设备对于 I/O 请求 ...

  6. Linux驱动开发---块设备驱动

    块设备驱动(Linux kernel 4.9.x) 主要结构 gendisk结构体:表示一个独立的磁盘设备(或分区) 1.1 定义如下: struct gendisk {/* major, first ...

  7. Linux驱动开发|块设备驱动

    块设备驱动 块设备驱动是 Linux 三大驱动类型之一,块设备驱动比字符设备驱动复杂得多,不同类型的存储设备又对应不同的驱动子系统,下面介绍块设备驱动框架及使用 一.块设备介绍 块设备是针对存储设备的 ...

  8. linux 网卡是块设备吗,什么是网络块设备(Network Block Device)?

    网络块设备(NBD)是一种用于Linux®和Unix®计算机系统的远程数据存储技术,它允许客户端计算机访问远程系统上的数据存储.一旦客户端计算机设置了NBD,它的使用就好像它实际上是客户端上的一个磁盘 ...

  9. linux 命令查看块设备,系统运维|用 Linux blkid 命令查找块设备详情

    今天我们将会向你展示如何使用 lsblk 和 blkid 工具来查找关于块设备的信息,我们使用的是一台安装了 CentOS 7.0 的机器. lsblk lsblk 是一个 Linux 工具,它会显示 ...

最新文章

  1. C++实现堆排序(附完整源码)
  2. 路由销毁上一页_路由器原理(数据通信)
  3. 分页设计 与 高级查询 的 结合设计
  4. Java命令运行没反应_cmd中执行java命令没有输出结果
  5. vuex模块化 怎么引用state_vue 组件如何调用 vuex 模块中的getters
  6. 推荐x61使用nhc软件控制风扇
  7. 比较完整的熊猫烧香解决方案
  8. IEEE Access投稿(Latex模板)——参考文献的生成
  9. cornerstone 加载dicom图像不同分辨率导致图像被截取的问题。
  10. 机器视觉技术在当前各行各业中的应用
  11. 【案例】CRM客户管理系统的登录模型
  12. 三星s8是否支持html,真正的全面屏!国行三星S8终于支持导航栏隐藏
  13. AntD的Table表头title加Icon图标和气泡提示Tooltip
  14. choco设置后续软件默认安装路径
  15. vue-admin-实现登出功能
  16. 无法访问此网站localhost 拒绝了我们的连接请求。请试试以下办法:检查网络连接检查代理服务器和防火墙ERR_CONNECTION_REFUSED
  17. 外星人跑深度学习_外星人带你搞基?这部12年的动画绝了
  18. 脑残式网络编程入门(五):每天都在用的Ping命令,它到底是什么?
  19. 分割(计数板)展示数字样式
  20. 网站HTTPS是有什么用吗

热门文章

  1. thymeleaf的th:if 及thymeleaf的三元运算使用方法
  2. Unity 初识:SkyBox(天空盒)
  3. 【每天更新】2022年最新WordPress主题下载,外贸独立站商城/企业网站/个人博客模板 2022年5月27日
  4. wordpress主题下载
  5. 心理学实验和报告的撰写方法
  6. 重庆理工计算机考研专业课,重庆理工大学(专业学位)计算机技术研究生考试科目和考研参考书目...
  7. 活动制作服务器,制作微信投票活动需要做哪些准备
  8. 基于NB-IoT的GPS定位系统(STM32、WH-NB73、U-BLOX NEO-7N )
  9. 郑州大学09年医学影像专业研究生招生情况
  10. c# jarray 长度_C# 数组(Array)