07第七章文件系统1.pptVIP

  • 3
  • 0
  • 约1.15万字
  • 约 88页
  • 2019-09-06 发布于广东
  • 举报
pipe(fd) int fd[2]; 1. 分配一个inode,(i_count=2); 2. 分配2个file表目(f_flag分别为PipeR和PipeW,读/写指针 offset为0) 3. 分配2个u_ofile表目, 分别指向2个file表目; 4. 返回2个文件描述符fd[0],fd[1], 分别为u_ofile中的2个入口。 pipe文件的使用 读(read):读指针追上写指针,读者等待; 写(write):写指针追上读指针,写者等待; 关闭:无读者,信号通知写者;无写者,唤醒等待读者; link(oldpathname, newpathname) oldpathname: 已存在文件名; newpathname: 待连接文件名; 1. 查目录找到oldpathname(inode); 2. 查目录找到newpathname的末级目录; 3. 检查操作合法性; 4. Inode的i_nlink++; 5. (name, i_number)?newpathname的末级目录。 例子: link(“d1/d2/f1”,“d1/d3/f2”) d1,d2,f1: 存在; d1,d3: 存在,f2: 不存在, 7.6.3 文件系统的安全 Backup 定期将磁盘上文件复制到磁带上 发生故障时由磁带恢复(limited recovery) 实现方法 海量转储 定期将磁盘上文件全部复制到磁带上 增量转储 每次只复制修改部分 磁盘整理 利用转储和恢复可以对磁盘进行整理(使文件物理块连续,空闲盘块连续) 7.7 文件系统的实现 7.7.1 内存所需表目 系统打开文件表(系统一个) FCB主部 文件号 共享计数 修改标志 7.7 文件系统的实现 7.7.1 内存所需表目 用户打开文件表(每个进程一个) 打开方式 读写指针 系统打开文件表入口 文件描述符 7.7 文件系统的实现 打开方式 读写指针 系统打开文件表入口 … … … … … … 打开方式 读写指针 系统打开文件表入口 … … … … … … FCB主部 文件号 共享计数 修改标志 系统打开文件表 2 … 文件描述符 文件描述符 用户打开文件表 15 … 外存空间的管理 空闲块表 空闲块链 字位映像图 UNIX:成组连接 空闲块管理(成组连接): 100个空闲块为一组,组之间相互链接,最前面的组缓冲到内存。 … s_nfree=66 s_free[0] s_free[1] ... s_free[65] ... Super block ... ... ... ... ... 特点:速度快,空间省。 空闲块管理: 申请时: (1) s_nfree1, 取s_free[--s_nfree]; (2) s_nfree=1, 将s_free[0]所指连接块读入内存,分配s_free[0]. 释放时: (1) s_nfree100, s_free[s_nfree++]=释放块号; (2) s_nfree=100, 将s_nfree和s_free拷贝到释放块中, 将该块号记录到s_free[0], 写回外存, s_nfree=1, 7.8 文件系统的界面 创建文件 命令形式:creat(path_name, fcb_args) 参数说明 Path_name: 文件路径名 Fcb_args: FCB参数 执行步骤: (1) 为此文件分配一个FCB主部,初始化 (2) 将文件名和文件号作为FCB次部填到末级目录中 (3) 以写方式打开 例如: creat(“/usr/li/d1/f1”, mode) 7.8 文件系统的界面 打开文件 命令形式: fd=open(path_name, mode) 参数说明 path_name: 文件路径名; mode: 打开方式. 执行步骤 (1) 根据文件路径名查目录找到FCB主部; (2) 合法性检查(根据打开方式、共享说明、用户身份); (3) 根据文件号查系统打开文件表看该文件是否已被打开, 如是共享计数加1; 否则取一个空闲的系统打开文件表项并将外存中 FCB主部等信息填入此表项, 共享计数置为1; (4) 在用户打开文件表中取一空表项, 填写打开方式和读写指针, 并指向系统打开文件表的对应表项. 返回信息: fd: 文件描述符(在用户打开文件表中的入口), 它是一个非负整数. 7.8 文件系统的界面 关闭文件 命令形式: close(fd) 参数说明 fd: 文件描述符. 执行步骤: (1) 由fd查用户打开文件表, 找到系统打开文件表入口; (

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档