理解文件系统中的inode与dentry。
inode
inode,全称为index node(索引节点)。它定义在include/linux/fs.h中:
1 | struct inode { |
1.umode_t i_mode;
中的类型umode_t
定义在include/linux/types.h:
1 | typedef unsigned short umode_t; |
在C语言中,short类型占用2个字节,共计16位。变量i_mode的内存布局如下图所示:
2.struct hlist_head
定义在include/linux/types.h中:
1 | struct hlist_head { |
dentry
dentry,全称为directory entry(目录项)。它定义在include/linux/dcache.h中:
1 | /* |
其中,struct list_head
定义在include/linux/types.h中:
1 | // 双向链表 |
super block
super block,超级块,定义在include/linux/fs.h中:
1 | struct super_block { |
file
file,文件,定义在include/linux/fs.h中:
1 | struct file { |
https://github.com/torvalds/linux/blob/master/include/linux/sched.h
1 | struct task_struct { |
https://github.com/torvalds/linux/blob/master/include/linux/fdtable.h
1 | /* |
使用Shell命令查看文件信息
ls
查看文件的相关属性ls -l
。
1 | hgs:storage-systems hegongshan$ ls -l |
解析:
1 | [file mode] [number of links] [owner name] [group name] [number of bytes in the file] [modify time] [path name] |
stat
查看文件的状态信息。
参考资料
- 《Linux内核设计与实现》,机械工业出版社
- Linux,https://github.com/torvalds/linux/