Linux中各种设备及设备号

Linux中所有一切都是文件,Linux中的各种设备,分类来说,可分为物理设备及特殊设备。前者是客观存在的设备,而后者则未必能在系统找到,又可以称为伪设备,下面按物理设备和特殊设备,对其进行系统归纳总结。


备注:

1) 上面分别为设备及在Linux内的对应的文件名,其中U盘的与SCSI/SATA/USB硬盘文件名一致;

2)  每块硬盘只能有四个主分区和扩展分区(三个主分区+一个扩展分区,或者四个主分区)

3)  对应SCSI盘,/dev/sda为其中一块硬盘,/dev/sda1则为其中一个分区

4)  当前鼠标为/dev/mouse,如果接了USB鼠标,或者PS2鼠标,其设备文件不同



备注:

1) stdin,stdout,stderr 分别对应0,1,2


2)  /dev/null 空洞设备,可以丢弃任何文件,数据流。主要用于dd硬盘读写速度,或清空文件等


3)  /dev/zero 是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。其中的一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件


4)  /dev/full 是一个特殊设备文件,总是在向其写入时返回设备无剩余空间(错误码为ENOSPC),读取时则与/dev/zero相似,返回无限的空字符(NULL, ASCII NUL, 0x00)。


5)  /dev/fd  记录用户打开的文件描述符


6)  /dev/random和/dev/urandom是Linux系统中提供的随机伪设备,这两个设备的任务,是提供永不为空的随机字节数据流。很多解密程序与安全应用程序(如SSH Keys,SSL Keys等)需要它们提供的随机数据流。这两个设备的差异在于:/dev/random的random pool依赖于系统中断,因此在系统的中断数不足时,/dev/random设备会一直封锁,尝试读取的进程就会进入等待状态,直到系统的中断数充分够用, /dev/random设备可以保证数据的随机性。/dev/urandom不依赖系统的中断,也就不会造成进程忙等待,但是数据的随机性也不高。


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Linux设备是用于标识设备的唯一标识符。设备由主设备和次设备组成。主设备用于标识设备驱动程序,次设备用于标识同一驱动程序下的不同设备。下面是Linux申请设备的步骤: 1. 定义一个dev_t类型的变量mydev,用于存储申请到的设备。 2. 调用alloc_chrdev_region函数向内核申请一个可以使用设备,该函数的参数依次为:存储设备的变量、次设备的起始值、设备的数量、设备名称。 3. 判断设备申请是否成功,如果失败则返回错误码。 4. 打印申请到的设备、主设备和次设备。 5. 初始化Linux2.6的核心结构体,包括设置所有者、打开函数和关闭函数。 6. 向内核注册一个Linux2.6的核心结构体,包括核心结构体、设备设备数量。 下面是一个示例代码: ```c #include <linux/fs.h> #include <linux/cdev.h> dev_t mydev; struct cdev mycdev; struct file_operations myfops = { .owner = THIS_MODULE, .open = myopen, .release = myclose, }; int myinit(void) { int ret; // 申请设备 ret = alloc_chrdev_region(&mydev, 0, 1, "beep"); if (ret < 0) { printk("设备申请失败\n"); return -1; } printk("dev:%d\n", mydev); printk("主设备:%d\n", MAJOR(mydev)); printk("次设备:%d\n", MINOR(mydev)); // 初始化核心结构体 cdev_init(&mycdev, &myfops); // 注册核心结构体 cdev_add(&mycdev, mydev, 1); return 0; } void myexit(void) { // 注销设备 unregister_chrdev_region(mydev, 1); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值