字符设备和块设备的区别
一、字符设备
字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。
比如我们最常见的点灯、按键、串口、IIC、SPI,LCD等等都是字符设备,这些设备的驱动就叫做字符设备驱动。
二、块设备
系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备,这些数据片就称作块。
比如 SD 卡、EMMC、NAND Flash、Nor Flash、SPI Flash、机械硬盘、固态硬盘等。
三、字符设备与块设备的区别
1.最小访问大小:字符设备只能以字节为最小单位访问,而块设备以块为单位访问,例如512字节,1024字节等;
2.支持随机访问:块设备可以随机访问,但是字符设备不可以;
3.有无缓冲:字符设备通常是无缓冲的,即读取或写入的数据会直接传输到设备或从设备中获取,而不会进行额外的缓存操作。块设备使用缓冲区来暂时存放数据,等到条件成熟以后在一次性将缓冲区中的数据写入块设备中。
块设备引入缓冲去的目的:为了提高块设备寿命,大家如果仔细观察的话就会发现有些硬盘或者 NAND Flash就会标明擦除次数(flash 的特性,写之前要先擦除),比如擦除 100000 次等。因此,为了提高块设备寿命而引入了缓冲区,数据先写入到缓冲区中,等满足一定条件后再一次性写入到真正的物理存储设备中,这样就减少了对块设备的擦除次数,提高了块设备寿命。