linux中什么是块设备和字符设备

linux中什么是块设备和字符设备,第1张

| 字符设备

字符设备是能够像字节流一样被访问的设备,当对字符设备发出读写请求,相应的IO *** 作立即发生。Linux系统中很多设备都是字符设备,如字符终端、串口、键盘、鼠标等。在嵌入式Linux开发中,接触最多的就是字符设备以及驱动。

| 块设备

块设备是Linux系统中进行TO *** 作时必须以块为单位进行访问的设备,块设备能够安装文件系统。块设备驱动会利用一块系统内存作为缓冲区,因此对块设备发出读写访问,并不一定立即产生硬件I/O *** 作。Linux系统中常见的块设备有如硬盘、软驱等等。

| 网络设备

网络设备既可以是网卡这样的硬件设备,也可以是一个纯软件设备如回环设备。网络设备由Linux的网络子系统驱动,负责数据包的发送和接收,而不是面向流设备,因此在Linux系统文件系统中网络设备没有节点。对网络设备的访问是通过socket调用产生,而不是普通的文件 *** 作如

open/closc和 read/write等。

分类: 电脑/网络 >> *** 作系统/系统故障

解析:

所谓块设备是指对其信息的存取以“块”为单位,如通常的光盘、硬磁盘、软磁盘、磁带等,块长取512字节或1024字节或4096字节。块设备可以直接通过块设备特别文件来访问。为了提高数据传输效率,块设备驱动程序内部采用块缓冲技术。

盘、带设备既可采用块方式,又可采用字符方式访问,因此这类设备既是块设备又是字符设备。正因为如此,在上节的字符设备开关表中配备了一套用于盘、带的字符驱动程序。在概念上,我们倾向于一台设备以一种类型进行访问,例如对磁带机而言,采用块方式即把磁带机划入块设备类型 。如果对磁带机采用字符方式,尽管可行但存储等量的数据要比块方式占用更多的磁带空间,实际上是很不合算的。

首先要明白什么是设备文件,简单的我们说, *** 作系统与外部设备(入磁盘驱动器,打印机,modern,终端 等等)都是通过设备文件来进行通信的,在Unix/Linux系统与外部设备通讯之前,这个设备必须首先要有一个设备文件,设备文件均放在/dev目录下。

一般情况下在安装系统的时候系统自动创建了很多已检测到的设备的设备文件,但有时候我们也需要自己手动创建,命令行生成设备文件的方式有 insf,mksf,mknod等等

根据mknod命令的使用参数来看【mknod Name { b | c } Major Minor 】,使用mknod之前,至少要明白以下几点:

设备文件类型:分为块设备和字符设备。ls -l /dev 结果显示第一个字段有b*** 和 c****,这里即标识了块设备和字符设备。

字符设备文件----字符设备文件传送数据给设备的时候,一次传送一个字符,终端,打印机,绘图仪,modern等设备都经过字符设备文件传送数据

块设备---系统通过块设备文件存取一个设备的时候,先从内存中的buffer中读或写数据,而不是直接传送数据到物理磁盘,这种方式能有效的提高磁盘和CD-ROMS的I/O性能。磁盘和CD-ROMS即可以使用字符设备文件也可使用块设备文件。

主号和次号

主号:当在任意目录使用ls -l 时,结果的第5个字段就是主号,设备主号代表了这个设备使用的是哪个设备驱动程序

次号:次号是一个24位的十六进制数字,定义了设个设备在系统中的物理的位置

就拿我们常用的创建卷组来看:

先来看看mknod 命令,如果该设备文件你想放在一个特定的文件夹下当然就先创建文件夹

mknod 设备文件名[/dev/xyz] b/c 主号 次号

{ mkdir /dev/vg01

mknod /dev/vg01/group c 64 0X010000}

创建之后,就可以使用你想要创建的设备对于德创建命令了,如我现在的卷组的创建命令:

vgcreate /dev/vg01 /dev/dsk/c*t*d*

一直进行下去,之后的步骤根据不同的设备而不尽相同。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6061820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-13
下一篇 2023-03-13

发表评论

登录后才能评论

评论列表(0条)

保存