- 1、本文档共40页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Unix File System UNIX 文件系统 此讲义用于教学,任何人未经作者同意,不得用于商业行为或赢利性活动。 牛纪桢 大连理工大学计算机系 。 UNIX 文件分类 普通文件(文本,图像,代码,声音…) 目录文件 设备文件(字符设备,块设备) UNIX 文件逻辑结构 无结构的流式文件 — 由顺序的字节流构成 UNIX文件物理结构 多重索引结构 文件的目录结构 目录文件与索引节点(i节点) 目录文件与索引节点(续) 文件存储器管理—空白块成组链接法 磁盘文件索引节点(i_node) Struct dinode { i_mode; 权限(主人,组员,其它人) i_addr[13]; 物理地址 i_nlink; 共享计数 i_uid; 用户 i_gid; 组 i_size; 大小 i_atime; 访问时间 i_mtime; 修改时间 i_ctime; 建立时间 } 卷资源表(超级块) struct filsys { 文件卷总块数; i节点表块数; 空闲块总数 空闲块栈区; 空闲i节点总数; 空闲i节点数组指针; 修改,互斥标志等 } 磁盘结构 内存文件数据结构(1) 每个进程 user中: u_ofile[N ];用户打开文件表 u_cdir; 当前目录 u_base; 内存地址 u_count; 存取字节数 系统调用 u_offset; 文件指针 内存文件数据结构(2) 一个系统打开文件表file struct file { f_flag; 读写标志 f_count;共享该读写指针的进程数 f_inode; 活动i节点号 f_offset; 读写指针 } 内存文件数据结构(3) 每个打开文件一个活动i节点 struct inode { dinode; 磁盘i节点拷贝,去掉时间信息 i_dev; i节点所在设备号 i_number;磁盘i节点编号 i_count; file 中共享i节点的个数 i_flag; i节点在内存是否被修改 i_lastr; 最后一次读的磁盘块号 } 内存文件数据结构的关系 文件系统调用 建立文件:creat 删除文件:unlink 读文件:read 写文件: write 打开文件:open 关闭文件:close 文件指针定位:lseek 文件连结:link 设置文件权限:chmod 建立管道文件:pipe 复制文件fd:dup 建立文件creat fd=creat(filename,mode)= 打开文件open fd=open(filename,mode)= open示意图 读文件read read(fd,buf,count)= 写文件write write(fd,buf,count)= 关闭文件close close(fd) main() { … fd=open(file1,0); read(…); … close(fd); … 文件定位 lseek lseek(fd,offset,where) 0 file head where= 1 current
文档评论(0)