lnlidawei

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

【C】系统编程的常用术语(LINUX)

【C】系统编程的常用术语(LINUX)

 

 

 

 

一、基本说明

 

 

 

二、系统编程的常见术语

 

 

  1、主设备号和次设备号

    ----  主设备号:“主设备号”,映射为“某个驱动程序”,即“f:主设备号-->驱动程序(驱动程序=f(主设备号))”;

    ----  次设备号:同一个驱动程序,可以管理很多个设备。举例,我有多块相同的显卡,我只需要安装一个显卡驱动程序;这样,一个显卡驱动程序,管理多块显卡设备;显卡驱动程序,为了区分不同显卡,所以给显卡进行了编号。驱动程序对显卡的编号,这个编号就是次设备号。简言之,次设备号,是为了区分同一个驱动程序管理下多个不同设备。

    ----  本质总结‌:“字符设备”是‌流式传输的管道‌(顺序读写:如水管流水);块设备是‌可随机访问的仓库‌(随机读写:如货架取物)。

我的理解:
    --  主设备号代表着设备的驱动驱动程序的编号,驱动程序可以是一类设备的通用程序。
    --  次设备号,使用同个驱动程序的物理设备/虚拟设备的编号。
    --  主设备号,对应某个驱动程序,主设备号用于区分所有驱动程序。次设备号,代表某个驱动管理的设备;次设备号,用来区分使用相同驱动程序的不同设备(物理设备/虚拟设备)。


我的归纳总结:
    --  主设备号,设备文件对应的某个驱动程序。
    --  次设备号,代表驱动程序管理的不同设备。
    --  主设备号,区分不同的驱动程序;次设备号,某个驱动程序管理的不同设备。




参考资料:

用户复述的内容基本正确,但我们可以更精确地表述:

主设备号(major number)确实对应到设备驱动。一个主设备号对应一个驱动程序(或同一类设备的驱动)。
次设备号(minor number)用于区分由同一个驱动程序管理的不同设备或子设备。这些设备可能是物理设备,也可能是虚拟设备(如终端、虚拟控制台等)。
我们可以补充一些细节:

设备号(由主设备号和次设备号组成)是一个32位的无符号整数,其中高12位是主设备号,低20位是次设备号。
同一个驱动程序可以处理多个设备(通过不同的次设备号来区分)。
次设备号不仅用于区分物理设备,还可以用于区分同一设备的不同功能(例如,磁带驱动器的不同操作模式)或分区(如硬盘的不同分区)。
因此,我们可以这样组织回答:

主设备号和次设备号的本质如下:

主设备号‌:标识设备对应的驱动程序。操作系统通过主设备号将设备文件与相应的驱动程序关联起来。例如,系统中所有SCSI磁盘驱动器通常共享同一个主设备号(8),因为它们使用相同的驱动程序。
次设备号‌:用于驱动程序区分其管理的各个具体设备或子设备。例如:
同一块硬盘的不同分区(如/dev/sda1、/dev/sda2)拥有相同的主设备号,但次设备号不同。
串口设备/dev/ttyS0、/dev/ttyS1也拥有相同的主设备号(4),但次设备号分别为64、65。
注意:设备文件本身并不包含驱动代码,它只是用户空间访问设备驱动的一个接口。真正的驱动在内核中。

   字符设备和块设备的定义以及本质区别

 

总结:

    1、字符设备(读写字符设备的基本单位是“一个字符”):字符设备,以“字符”为基本单位、进行“顺序”访问设备,不支持随机访问字符设备(通常不支持缓存)。

    2、块设备(读写块设备的基本单位是“一个块”):块设备,以“块”为基本单位,支持随机访问块设备(通常支持缓存)。




字符设备和块设备的本质区别:


一、数据访问方式‌:

    1、字符设备:以字符(字节)为单位进行顺序访问(流式访问),不支持随机访问(即不能随意跳转到任意位置读取数据)。例如,键盘、鼠标、串口等设备

    2、块设备:以固定大小的数据块(如512字节、4KB等)为单位,支持随机访问(可以任意跳转到不同位置读取数据)。例如,硬盘、SSD、USB驱动器等


二、是否支持缓存‌:

    1、字符设备:通常不经过缓存(无缓冲),数据直接传输。

    2、块设备:通常使用缓冲区(缓存)来提高性能,减少对物理设备的直接访问。


三、访问性能‌:

    1、字符设备:适用于实时性要求高、数据量小的场景(如键盘输入)。

    2、块设备:适用于需要高效存储和随机访问大量数据的场景(如文件系统)。


四、典型应用‌:

    1、字符设备:键盘、鼠标、串口、打印机等。

    2、块设备:硬盘、SSD、CD-ROM等存储设备。


五、设备文件标识‌:

    在Linux系统中,字符设备文件在/dev目录下以c标识(如/dev/tty1),块设备文件以b标识(如/dev/sda1)。

 

 

 

 

 

三、参考资料

 

  1、无

 

.

posted on 2026-03-19 15:44  lnlidawei  阅读(1)  评论(0)    收藏  举报