我目前正在操作系统课程中学习设备驱动程序,并且对“inode”结构和“cdev”结构之间的区别感到困惑。有人可以澄清这两种结构之间的差异以及它们要实现的目标吗?
答案1
您的问题没有提及任何具体上下文;这个答案描述了struct cdev
和struct inode
。
两者有着本质的不同。
struct cdev
代表一个字符设备,提供对驱动程序的访问;它指向字符设备支持的各种操作的实现。
struct inode
代表一个索引节点,以及内核使用它并跟踪它所需的所有信息。索引节点提供对文件的访问,并包含文件的元数据:其所有权、权限、ACL、时间戳、大小等。内核需要知道它绑定到哪个文件系统、它支持的操作的实现在哪里、它的功能是什么。状态是等
如果 inode 本身对应于字符设备,则a 的实例struct inode
可以包含指向 a 的指针(struct cdev
例如对应的 inode /dev/null
,一旦在内核中实例化,就由 表示,struct inode
并i_cdev
指向相关的字符设备)。