文稿完整参考lec10文件管理.ppt

想预览更多内容,点击预览全文

申明敬告:

本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己完全接受本站规则且自行承担所有风险,本站不退款、不进行额外附加服务;如果您已付费下载过本站文档,您可以点击这里二次下载

文档介绍

* VFS的组成(主要数据结构) 文件对象 每个文件都用一个32位数字来表示下一个读写的字节位置,通常称它为文件位置或偏移量(offset),每当打开一个文件时,偏移量被置0,读写操作便从这里开始,允许通过系统调用lseek对文件位置作随机定位。 Linux建立文件对象(file)来保存打开文件的文件位置,file结构除保存文件当前位置外,还把指向该文件inode的目录项指针也放在其中,并形成一个双向链表,称系统打开文件表。 操作系统之所以不直接使用dentry结构是因为多个进程能够打开同一个文件,因为每一个file结构实际上对应了一个进程的一次打开过程。file结构中记录了文件访问模式,读写指针等信息。 * struct file { struct list_head f_list; //所有打开文件形成的链表 struct dentry *f_dentry; //指向相关目录项的指针 struct vfsmount *f_vfsmnt; //指向VFS安装点的指针 struct file_operation *f_op; //指向文件操作函数的指针 unsigned long f_reada; //预读标志 unsigned long f_ramax; //预读的最多页数 unsigned long f_raend; //上次预读后的指针 unsigned long f_ralen; //预读的字节数 unsigned long f_rawin; //预读的页数 mode_t f_mode; //文件访问模式 loff_t f_pos; //文件当前偏移量 unsigned short f_count; //使用该文件的进程数 unsigned int f_uid; //使用者的用户标识 unsigned int f_gid; //使用者的用户组标识 … }; 系统打开

最近下载