- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
unix系统中的文件解析
unix系统中的文件解析(附:find命令的简单实现)小生想从源码的角度解释一下Unix的文件系统。(前天因为不能发在首页所以重发,为什么有3天的限制呢,真是的哦)首先一个文件在没有被打开的情况下,需要什么贮存在磁盘呢?一般而言,需要的是:1,一个目录项2,一个磁盘Inode项3,磁盘上的n块(n可为0)目录项是一个结构,最重要的元素一个为名字,一个为指向inode结构的指针。另外目录的执行权是为了把文件名转换为Inode而存在的,具体的操作函数为namei。(大家可参阅具体的源码)?Inode项也是一个结构,v7实现如下struct dinode{??? unsigned short? di_mode;???? ??? /* mode and type of file */??? short?? di_nlink;??? ??? /* number of links to file */??? short?? di_uid;????? ??? /* owners user id */??? short?? di_gid;????? ??? /* owners group id */??? off_t?? di_size;???? ??? /* number of bytes in file */??? char? ? di_addr[40];??? /* disk block addresses */??? time_t? di_atime;?? /* time last accessed */??? time_t? di_mtime;?? /* time last modified */??? time_t? di_ctime;?? /* time created */};元素所表示的内容相关的注释都已经说明了,不过小生还是介绍一下具体的内容di_mode说明文件的权限和类型di_nlink说明文件的链接数di_uid文件的用户,di_gid文件的组di_size逻辑上文件的大小(以字节计数)di_addr文件所占用的磁盘块的地址3个时间表示访问,修改和创建时间?磁盘块没什么好说的,具体实现可能512字节一块?当引用一个文件时(并非打开一个文件)可能需要的如下:1,? 一个内存Inode项?内存inode项的v7实现可能如下:?struct? inode{??? Char??? ??? i_flag;??? char ?? i_count;??? /* reference count */??? dev_t?? i_dev;????? /* device where inode resides */??? ino_t?? i_number;?? /* i number, 1-to-1 with device address */??? unsigned short? i_mode;??? short?? i_nlink;??? /* directory entries */??? short?? i_uid;????? /* owner */??? short?? i_gid;????? /* group of owner */??? off_t?? i_size;???? /* size of file */??? union {??????? struct {??????????? daddr_t i_addr[NADDR];? /* if normal file/directory */??????????? daddr_t i_lastr;??? /* last logical block read (for read-ahead) */??????? };??????? struct? {??????????? daddr_t i_rdev;???????? /* i_addr[0] */??????????? struct? group?? i_group;??? /*? multiplexor group file */??????? };??? } i_un;};基本的内容和磁盘的一样,多出了一些内容,最重要的是多出了i_count用以记录引用次数?当一个文件被打开时需要的内容如下:1,? 用户u区中的u_ofile数组中的一项2,? 文件表中的一项?u_ofile存放的是指向具体的file结构中的一项的指针,所谓的文件描述符就是u_ofile数组的下标?文件表v7的实现如下:struct? file{??? char??? f_flag;??? char ?? f_count;??? /* reference count */??? struct inode *f_inode;? /* pointer t
您可能关注的文档
最近下载
- 履带吊拆卸安装方案.doc
- 如何拍摄公务活动.ppt
- 2024届高三化学一轮复习 说题比赛—2023年高考化学全国新课标卷28题 课件.pptx VIP
- 某医院电动自行车消防安全综合治理工作实施方案.docx VIP
- 探究计算机中的数据表示.docx VIP
- 安全文明工地创优计划(1).doc
- 比亚迪s6维修维修手册(近光灯不亮).pdf VIP
- “线上+线下”混合教学模式在小学心育课中的应用-来源:基础教育参考(第2020011期)-教育部教育管理信息中心.pdf VIP
- SYT 7412-2018-油气长输管道突发事件应急预案编制规范.pdf
- 马克思主义基本原理-华东师范大学-中国大学MOOC慕课答案.pdf
文档评论(0)