a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 94|回复: 0

[综合辅导] Linux认证辅导之Linux中常见文件结构体(4)

[复制链接]
发表于 2012-8-4 12:07:07 | 显示全部楼层 |阅读模式
Linux认证辅导之Linux中常见文件结构体(4)" c+ a, A) V9 I9 @
1.4 struct fs_struct2 X) H' N  [8 ^. J
struct fs_struct {6 _2 K, O5 o& H$ v9 z
atomic_t count; 计数器
! f2 v: h7 p6 a4 k" Trwlock_t lock; 读写锁
7 l9 d6 Y; C, R. t3 b8 _int umask;7 d- i( h# N# ]- s
struct dentry * root, * pwd, * altroot;根目录(“/”),当前目录以及替换根目录
+ n- x- ?& i/ M# s, Cstruct vfsmount * rootmnt, * pwdmnt, * altrootmnt;
# Q* w) T, B/ T6 I8 I8 t8 A5 F};: F% z8 F+ Q7 T* r
1.5 struct inode
  {; M+ k6 P+ V8 P0 A" W  U. K索引节点对象由inode结构体表示,定义文件在linux/fs.h中。# g0 J2 b+ _( A- m" B6 t, o
struct inode {
7 w# C- E" W$ \( A, H) astruct hlist_node i_hash; 哈希表% a* f8 M( U5 M3 m7 f
struct list_head i_list; 索引节点链表
# [8 v5 y5 k( I+ {struct list_head i_dentry; 目录项链表
+ b; T, w& r; ]/ @: w2 Bunsigned long i_ino; 节点号
/ P5 c9 {4 G9 b6 p" patomic_t i_count; 引用记数' i* u+ u9 T! y* [' o
umode_t i_mode; 访问权限控制4 v# ]' C4 ?- B; [) y
unsigned int i_nlink; 硬链接数
0 X3 b" D; T, w; r: n. S; B. Auid_t i_uid; 使用者id
  O1 [, z! Z: Ygid_t i_gid; 使用者id组
3 z! j$ t* ~8 v; e; G! s, akdev_t i_rdev; 实设备标识符
2 H, g4 V# j: u- O: V1 Floff_t i_size; 以字节为单位的文件大小
( J4 r) q9 v) k: G, v' }0 v9 \struct timespec i_atime; 最后访问时间2 D9 l' S: k3 L; l4 i$ }% ?8 J
struct timespec i_mtime; 最后修改(modify)时间
5 k6 O# }5 T8 c- Kstruct timespec i_ctime; 最后改变(change)时间
. k( x- Q" _. G7 j4 \! kunsigned int i_blkbits; 以位为单位的块大小
$ J0 K9 P) U; o4 `& }unsigned long i_blksize; 以字节为单位的块大小' G* G/ J4 z' l3 E3 E* L/ d
unsigned long i_version; 版本号
3 v3 B1 a4 M; _, ounsigned long i_blocks; 文件的块数/ y. U4 M' n5 l, m- L) f) }3 e
unsigned short i_bytes; 使用的字节数
) S, q- y0 K+ zspinlock_t i_lock; 自旋锁( b# J2 S4 g# t0 M' O
struct rw_semaphore i_alloc_sem; 索引节点信号量
1 p2 p  Z" D3 w' j7 \7 I1 sstruct inode_operations *i_op; 索引节点操作表
5 _3 u3 e1 p/ V, \: vstruct file_operations *i_fop; 默认的索引节点操作: I8 |8 A9 W) G$ q
struct super_block *i_sb; 相关的超级块
# l9 J) _* P& f* A8 @$ Q9 l9 s" |. wstruct file_lock *i_flock; 文件锁链表$ ?" I& |2 N8 i& _- u- C
struct address_space *i_mapping; 相关的地址映射
9 l6 D2 r/ u, |+ G# d/ n2 rstruct address_space i_data; 设备地址映射6 ^' Y0 H1 Y# e7 s. D) \
struct dquot *i_dquot[MAXQUOTAS];节点的磁盘限额. g# [) P0 O$ q# u. |6 s4 Y* a& _
struct list_head i_devices; 块设备链表
+ Y: B( t9 M8 A, R; o. bstruct pipe_inode_info *i_pipe; 管道信息' I4 E6 T# v5 E3 K  l7 D3 o) q& n4 _
struct block_device *i_bdev; 块设备驱动
# |+ T2 k, a' x3 C( f+ d# F( d. Y$ K8 gunsigned long i_dnotify_mask;目录通知掩码
5 {4 G: K6 g2 F% p- u$ Mstruct dnotify_struct *i_dnotify; 目录通知
" I% [! i% u3 a* G- D) Lunsigned long i_state; 状态标志$ H: X* {' d# X. R/ C  _2 x
unsigned long dirtied_when;首次修改时间
  Q! A, M% l% F3 |4 C3 \/ @unsigned int i_flags; 文件系统标志
  T7 D) M2 ?: v) d! Z; D8 q* }& @2 tunsigned char i_sock; 套接字
) n, c% a0 |! v) gatomic_t i_writecount; 写者记数
* {- l7 v! G1 s8 xvoid *i_security; 安全模块
6 s" R" i! e- g9 S, f__u32 i_generation; 索引节点版本号
* g0 y! s' ~' {0 lunion {
/ p: k: j3 @1 Y; [6 _' wvoid *generic_ip;文件特殊信息
8 X6 E: u9 ], `0 `4 S} u;. m" i  z% S4 L
};
+ @/ F- |# S1 n( ]; ?我们在进程中打开一个文件F,实际上就是要在内存中建立F的dentry,和inode结构,并让它们与进程结构联系来,把VFS中定义的接口给接起来。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-4 21:49 , Processed in 0.202021 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表