⑴ 在linux系统下,设备分那几种
字符设备:
字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序
来实现这种特性。字符设备驱动程序通常至少要实现open、close、read和write的系统调用。字符终端(/dev/console)和串口(/dev/ttyS0以及类似设备)就是两个字符设备,它们能很好的说明“流”这种抽象概念。字符设备可以通过FS节点来访问,比如/dev/tty1和/dev/lp0等。这些设备文件和普通文件之间的唯一差别在于对普通文件的访问可以前后 移动访问位置,而大多数字符设备是一个只能顺序访问的数据通道。然而,也存在具有数据区特性的字符设备,访问它们时可前后移动访问位置。例如framebuffer就是这样的一个设 备,app可以用mmap或lseek访问抓取的整个图像。
块设备:
和字符设备类似,块设备也是通过/dev目录下的文件系统节点来访问。块设备(例如磁盘)上能够容纳filesystem。在大多数的Unix系统中,进行I/O操作时块设备每次只能传输一个或多个完整的块,而每块包含512字节(或2的更高次幂字节的数据)。Linux可以让app像字符设备一样地读写块设备,允许一次传递任意多字节的数据。因此,块设备和字符设备的区别仅仅在于内核内部管理数据的方式,也就是内核及驱动程序之间的软件接口,而这些不同对用户来讲是透明的。在内核中,和字符驱动程序相比,块驱动程序具有完全不同的接口。
网络设备:
任何网络事物都需要经过一个网络接口形成,网络接口是一个能够和其他主机交换数据的设备。接口通常是一个硬件设备,但也可能是个纯软件设备,比如回环(loopback)接口。 网络接口由内核中的网络子系统驱动,负责发送和接收数据包。许多网络连接(尤其是使用TCP协议的连接)是面向流的,但网络设备却围绕数据包的传送和接收而设计。网络驱动程序不需要知道各个连接的相关信息,它只要处理数据包即可。 由于不是面向流的设备,因此将网络接口映射到filesystem中的节点(比如/dev/tty1)比较困难。Unix访问网络接口的方法仍然是给它们分配一个唯一的名字(比如eth0),但这个名字在filesystem中不存在对应的节点。内核和网络设备驱动程序间的通信,完全不同于内核和字符以及块驱动程序之间的通信,内核调用一套和数据包相关的函数而不是read、write等。
⑵ Linux中所有设备都是文件,设备类型有字符设备、块设备、网络设备,但是又说网络设备不是基于文件系统
网络设备就是硬件,你要说硬件的驱动是基于文件的还说的通,对不???
⑶ .常见的linux字符设备驱动程序由哪些组成 及其主要函数的作用
关于linux字符设备驱动涉及内容很多哈
具体设计时并不是单纯的字符设备,还得糅合其他版总线啊什么的权
主要的数据结构: cdev , inode, file_operation还有自己定义的描述设备的结构
主要的机制:各种锁,如自旋锁,互斥锁等等
模块初始化
添加设备
激活设备
实现file_operation中需要的几个函数(其中包括对中断的处理)
释放资源
有本书叫 linux设备驱动程序 ,里面有更详细更全面的介绍,可以看看哈
⑷ LINUX,下面设备文件中那些是字符设备文件
/dev/audio是字符设备文件,其他的是块设备文件
补充:对audio的存取是以字节流方式来回进行的。其它的设答备/dev/cdrom, /dev/fd0, /dev/had都是磁盘(光驱,软驱,主硬盘),它们的存取是通过数据块来进行的
⑸ unlx/linux操作系统中将设备分为字符设备和块设备进行管理,有什么特点
字符设备是一些串行端口的设备,比如键盘、鼠标等,它的特点是串行读专取,不能够截断输出属(也就是不能随机访问)。比如鼠标,它的移动是滑动而不是跳跃。
块设备一般是存储设备,比如硬盘、软盘等。它的特点是让系统随机访问,比如硬盘,你可以在硬盘的不同块读写,也可以随机访问硬盘的数据。
⑹ linux字符设备文件类型的标志
在Linux中使用ls -l 命令来列出文件时,b、c字母开头的文件,分别表示区块(block)设备和版字符(character)设备,权是特殊类型的文件。也就是说Linux字符设备文件以c字母做为开始标志 。
可以执行如下命令,查看到大量字符设备的文件:
ls -l /dev | more
执行结果如下图所示:

⑺ linux 字符设备文件有什么作用
/dev/audio是字符设备文件,其他的是块设备文件 补充:对audio的存取是以字节流方式来进行的。其它的设回备/dev/cdrom, /dev/fd0, /dev/had都是答磁盘(光驱,软驱,主硬盘),它们的存取是通过数据块来进行的
⑻ linux字符设备和块设备的区别
还是我来告诉你吧!字符设备驱动:一般也可以看做小数据量的模块,主要处理键盘,鼠内标,显示器,串口等一容些小数据的字节为单位的设备
块设备驱动:主要针对于大数据量的数据传输与接收。比如磁盘、cdrom、软盘、u盘等存储器和类似于存储器的设备。
网络驱动:主要针对于基于网络通信协议的设备。比如网卡、wifi、蓝牙等通信设备。
usb设备包含这三块的内容甚至更多,做usb驱动开发工资很高的。
想学习这方面的知识,建议看《设备驱动设计与开发》这本书。
⑼ Linux下字符设备文件的概念及举例
不是后缀,记住linux不使用后缀来识别文件类型
你使用 ls -al
drwxr-xr-x. 4 root root 100 Apr 26 15:05 cpu
lrwxrwxrwx. 1 root root 13 Apr 26 15:05 fd -> /proc/self/fd
brw-rw----. 1 root disk 7, 0 Apr 26 15:05 loop0
crw-rw----. 1 root lp 6, 2 Apr 26 15:05 lp2
你仔细看第一位 d代表文件目录文件,l代表链接文件,b代表块设备文件,c代表字符设备文件
`-'
regular file
`b'
block special file
`c'
character special file
`C'
high performance ("contiguous data") file
`d'
directory
`D'
door (Solaris 2.5 and up)
`l'
symbolic link
`M'
off-line ("migrated") file (Cray DMF)
`n'
network special file (HP-UX)
`p'
FIFO (named pipe)
`P'
port (Solaris 10 and up)
`s'
socket
`?'
some other file type
⑽ linux怎样查看字符设备249的物理地址
|1、查看抄cpu型号
# more /proc/cpuinfo |grep -i model
2、显袭示有几块物理网卡
# lspci | grep Eth | wc -l
3、显示主板序列号
# dmidecode | grep 'Serial Number'
4、查看硬盘型号
# more /proc/scsi/scsi |grep -i model
5、查看物理CPU的个数
#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
6、查看逻辑CPU的个数
#cat /proc/cpuinfo |grep "processor"|wc -l
7、查看CPU是几核
#cat /proc/cpuinfo |grep "cores"|uniq