欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

LINUX中块设备文件和字符设备文件的本质区别

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

 

设备文件分为 Block(块) Device Driver 和 Character(字符)Device Drive 两类。Character Device Drive又被称为字符设备或裸设备 raw  devices。 Block Device Driver称为块设备。

区别:

Block Device Driver 是以固定大小长度来传送转移资料,Character Device Driver是以不定长度的字元传送资料。且所连接的Devices也有所不同。

Block Device 大致是可以随机存取(Random Access)资料的设备,如硬碟机(硬盘)或光碟机;而Character  Device刚好相反,依循先後顺序存取资料的设备,如 印表机(激光打印机)、终端机(列如 电脑显示器)等皆是。

/dev/dsk 对应的为块设备,文件系统的操作用到它,如mount。

/dev/rdsk 对应的为字符设备(裸设备,rdsk的r即为 raw),fsck  newfs等会涉及到。一般我们的操作系统和各种软件都是以块方式读写硬盘,这里的块是逻辑块,创建文件系统时可以选择。

windows里叫簇。可看newfs or  mkfs的manual。oracle是比较常见的字符方式读写硬盘。

 

字符设备还是块设备的定义属于操作系统的设备访问层,与实际物理设备的特性无必然联系。设备访问层下面是驱动程序,所以只要驱动程序能够提供哪一种方式,都可以。也就是说驱动程序支持 stream 方式,那么就可以用这种方式访问,

驱动程序如果还支持block方式,那么你想用哪种方式访问都可以。

1:典型的比如硬盘式的裸设备(Block device),他两种访问方式都支持:他是一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使

用缓冲区来存放暂时的数据,待条件成熟后,从缓存一次性写入设备或从设备中一次性读出放入到缓冲区;

 

:2:磁盘和文件系统等字符设备(Character  device):这是一个顺序的数据流设备,对这种设备的读写是按字符进行的,

而且这些字符是连续地形成一个数据流。他不具备缓冲区,所以对这种设备的读写是实时的,如终端、磁带机等。

 

系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备。这些数据片就称作块。最常见的块设备是硬盘,除此以外,还有软盘驱动器、CD-ROM驱动器和闪存等等许多其他块设备。

注意,它们都是以安装文件系统的方式使用的——这也是块设备一般的访问方式。

 

来自  https://www.cnblogs.com/hu-xx/p/7219013.html


字符设备和块设备的区别    

 我来答        
举报浏览 2675 次    
最佳答案    
司马铸剑 
来自电脑网络类芝麻团 2017-11-03    
Linux中I/O设备分为两类:字符设备和块设备。两种设备本身没有严格限制,但是,基于不同的功能进行了分类。
(1)字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,键盘、串口、调制解调器都是典型的字符设备。
(2)块设备:应用程序可以随机访问设备数据,程序可自行确定读取数据的位置。硬盘、软盘、CD-ROM驱动器和闪存都是典型的块设备,应用程序可以寻址磁盘上的任何位置,并由此读取数据。此外,数据的读写只能以块(通常是512B)的倍数进行。与字符设备不同,块设备并不支持基于字符的寻址。
总结一下,这两种类型的设备的根本区别在于它们是否可以被随机访问。字符设备只能顺序读取,块设备可以随机读取。

来自  https://zhidao.baidu.com/question/2058003893169655747.html

普通分类: