1,概述

  一直都搞不明白普通文件跟块文件的区别,总觉得一个普通的文件是存放在磁盘块上,那它既属于普通文件又属于块设备文件。刚好下午睡了一个大头觉,比较清醒,集中学习了下普通文件和块设备文件的区别和联系。

  本文从基本概念,寻址空间,内核读写几个方面介绍普通文件和块设备文件的辩证统一。

2,基本概念

  普通文件(Regular File)。指普通意义上的文件,如数据文件、可执行文件等。

  设备文件(Device File)。类unix操作系统都是基于文件概念的,文件是由字节序列而构成的信息载体。根据这一点,可以把IO设备当作设备文件这种所谓的特殊文件来处理;因此,与磁盘上的普通文件进行交互所用的同一系统调用可直接用于IO设备。根据设备驱动程序的基本特征,设备文件可以分为两种:块和字符。这两种硬件设备之间的差异并不容易划分,但我们至少可以假定以下的差异:[1]

  · 块设备的数据可以随机地被访问,而且从人类用户的观点看,传送任何数据块所需的时间都是较少而且是大致相同的。块设备的典型例子是硬盘、软盘[1]。块设备一般情况下是带缓冲区的。

  · 字符设备的数据或者不可以随机访问,或者可以被随机访问,但是访问随机数据所需的时间很大程度上依赖于数据在设备内的位置[1]

3, 寻址空间的区别

  块设备文件是块设备的物理寻址空间;普通文件是块设备的虚拟寻址空间。普通文件比块设备文件多一层文件系统的地址转换机构。

linux中普通文件和块设备文件的区别相关推荐

  1. 关于字符设备文件和块设备文件的区别

    本文转载自:http://www.cnblogs.com/qlee/archive/2011/07/27/2118406.html 近来想了解一下字符设备文件和块设备文件的区别,看到有篇文章写的很详细 ...

  2. linux 读写设备文件,linux-中块设备文件及字符设备文件的本质区别

    原标题:linux-中块设备文件及字符设备文件的本质区别 在LINUX系统文件类型分类的文章中我们提到了 块设备 和 字符设备文件,那么什么是块设备 字符设备文件呢?他们之间有什么本质上的区别呢? 设 ...

  3. 【Android 逆向】Linux 文件分类 ( 普通文件 | 目录文件 | 链接文件 | 字符设备文件 | 管道文件 | 块设备文件 )

    文章目录 一.Linux 文件分类 1.普通文件 2.链接文件 3.字符设备文件 4.管道文件 5.块设备文件 一.Linux 文件分类 Linux 文件分类 : " - " 表示 ...

  4. linux 中如何查看块设备,在linux中,如何确定使用块设备的进程?

    我在服务器中有一个磁盘,我正在迁移到LVM卷组.以前,它使用传统的DOS磁盘分区,hdb [1-5]. 我已经从hdb卸载了每个文件系统,使用hdb关闭交换,已经在设备上删除了一个较小的VG,然后使用 ...

  5. 块设备文件读取实验记录

    块设备文件读取实验记录 添加实验设备 简单分区测试 简单设备测试 设备偏移量测试 分区偏移量测试 结语 文件: 一个linux文件就是一个字节序列,所有的IO设备(例如网络,磁盘和终端)都被模型化为文 ...

  6. linux文件编程(2)——系统文件描述符、动静态文件、块设备介绍

    参考:linux文件编程(2)--文件操作原理简述之文件描述符.动静态文件.块设备 作者:丶PURSUING 发布时间: 2021-04-09 11:14:12 网址:https://blog.csd ...

  7. Linux中的进程、线程和文件描述符

    说到进程,恐怕面试中最常见的问题就是线程和进程的关系了,那么先说一下答案: 在 Linux 系统中,进程和线程几乎没有区别 . Linux 中的进程就是一个数据结构,看明白就可以理解文件描述符.重定向 ...

  8. 你知道什么是 块设备 和 字符设备 吗?以及如何查看 块设备文件 和 字符设备文件 ?

    关于块设备 和 字符设备 介绍: 系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备,这些数据片就称作块.                 最常见的块设备是硬盘,除此以 ...

  9. Linux文件系统(文件系统类型、设备文件、常用命令、U盘与光盘挂载)

    Linux文件系统(文件系统类型.设备文件.常用命令.U盘与光盘挂载)   本篇文章是Linux文件系统整块集合,包含了Linux文件系统介绍.设备文件介绍.常用文件系统命令(查看.修复与配置).挂载 ...

最新文章

  1. 涉及支付,资金方案的操作要考虑的问题
  2. lisp不是函授型语言_【神奇的函数式编程语言的独特功能】Lisp 的运行期修改、编译代码,并替换当前运行版本的试验...
  3. Linux SendMail服务启动慢总结
  4. 对java支持并发的理解_Java并发知识(1)
  5. STM32 ADC转换实验
  6. python是动态还是静态_python之静态方法和动态方法介绍
  7. 深入理解l内核v4l2框架之video for linux 2(转载)
  8. [转载] Java异常:选择Checked Exception还是Unchecked Exception?
  9. Virtualization API之libvirt
  10. [010]Try块和异常处理
  11. 倒立摆matlab仿真,PID控制仿真,simulink仿真最简单版本(保姆级),一阶倒立摆,附源码
  12. 文件共享锁溢出 请增加MaxLocksperFile注册表项值
  13. oeasy教您玩转python - 008 - # ascii码表
  14. Linux文件夹的介绍
  15. 电脑ctrl和ALT经常键自动按住--答案是QQ2012的Bug
  16. chia 免费软件快速p图 支持官方最新协议
  17. U盘禁止写入/SD卡被禁用怎么解除
  18. android 广告效果图,Android_Android实现加载广告图片和倒计时的开屏布局,这是一个android开屏布局的实例 - phpStudy...
  19. 关于yii2 treemanager插件中lft和rgt的说明
  20. Spring Security 入门 Remember-Me 记住我功能

热门文章

  1. SSH 组建轻量级架构 附录 -- 遇到的问题和解答
  2. Linux环境HBase安装配置及使用
  3. http协议进阶(三)http报文
  4. Centos配置国内yum源
  5. JavaScript对象,方括号和算法
  6. css菜单缓慢滑动_如何使用HTML,CSS和JavaScript构建滑动菜单栏
  7. 零基础参加Java培训班合适吗
  8. 软件测试技术篇:UI自动化到底是难是易?
  9. 流式大数据处理的三种框架:Storm,Spark和Samza
  10. C语言实现汉诺塔问题