在设备驱动程序编程中,结构“cdev”和“inode”之间有什么区别?

在设备驱动程序编程中,结构“cdev”和“inode”之间有什么区别?

我目前正在操作系统课程中学习设备驱动程序,并且对“inode”结构和“cdev”结构之间的区别感到困惑。有人可以澄清这两种结构之间的差异以及它们要实现的目标吗?

答案1

您的问题没有提及任何具体上下文;这个答案描述了struct cdevstruct inode

两者有着本质的不同。

struct cdev代表一个字符设备,提​​供对驱动程序的访问;它指向字符设备支持的各种操作的实现。

struct inode代表一个索引节点,以及内核使用它并跟踪它所需的所有信息。索引节点提供对文件的访问,并包含文件的元数据:其所有权、权限、ACL、时间戳、大小等。内核需要知道它绑定到哪个文件系统、它支持的操作的实现在哪里、它的功能是什么。状态是等

如果 inode 本身对应于字符设备,则a 的实例struct inode可以包含指向 a 的指针(struct cdev例如对应的 inode /dev/null,一旦在内核中实例化,就由 表示,struct inodei_cdev指向相关的字符设备)。

相关内容