【2017年整理】UNIX系统文件基础

上传人:豆浆 文档编号:994290 上传时间:2017-05-24 格式:DOC 页数:12 大小:118.50KB
返回 下载 相关 举报
【2017年整理】UNIX系统文件基础_第1页
第1页 / 共12页
【2017年整理】UNIX系统文件基础_第2页
第2页 / 共12页
【2017年整理】UNIX系统文件基础_第3页
第3页 / 共12页
【2017年整理】UNIX系统文件基础_第4页
第4页 / 共12页
【2017年整理】UNIX系统文件基础_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《【2017年整理】UNIX系统文件基础》由会员分享,可在线阅读,更多相关《【2017年整理】UNIX系统文件基础(12页珍藏版)》请在金锄头文库上搜索。

1、文件类型在 UNIX 系统中 , 文件分为三类: 即普通文件、目录文件和特殊文件.1. 普通文件也称正文文件,可以用来保存程序、数据等任何信息. 这是一种无结构的, 以 512 个字节为一块, 顺序存取的流式文件2. 目录文件用于检索文件的文件. 目录文件可能是系统文件, 也可能是用户文件. 3. 特殊文件即设备. 在 UNIX 系统中将设备也作为文件来处理 , 对于设备的所有操作都需要经过文件系统,这有如下两个优点: (1) 设备与文件界面统一:使用设备与使用文件没有差别. 具体地说, 打开一个设备文件相当于申请该设备, 关闭一个设备文件相当于释放该设备, 读写设备文件相当于对设备进行 I/

2、O 操作.(2) 设备可采用与文件相同的保护机制:文件可以访问权限等手段加以保护, 设备作为文件处理也可如同文件一样得到保护. 如对于打印机设备可规定为只“写”型设备, 对其实行“读”操作将被视为非法而加以拒绝.将设备作为特殊文件管理是 UNIX 系统的成功特点之一,并被后来其它一些操作系统所借鉴.12.5.2 文件体系UNIX 文件系统呈树形结构, 树的根结点为根目录 root, 树的叶结点可以为普通文件、特殊文件、或者目录文件. 其它既非根结点也非叶结点的结点为目录文件. 如图 128 所示. 图中虚线代表链接(link),通过链接可以给一个文件赋予多个符号名( 路径名),这是共享文件的一

3、种方法12.5.3 文件结构1. 文件的逻辑结构UNIX 普通文件的逻辑结构为流式的. 在用户看来, 一个文件是一个字节序列. 文件的读写操作命令包含传输字节的个数这种结构实现简单, 系统开销小当然, 如果需要, 用户可以利用流式文件来构造记录式文件, 因为对于文件内容的解释权完全留给了用户.2. 文件的物理结构UNIX 文件的物理结构为链接结构与索引结构的结合, 也可看成是多级索引结构. 其实现如图 12-9 所示. 12.5.4 文件目录与连接1. 目录项相当于 FCB 次部,包括两个内容: 即文件名和 inode 编号, 不同的文件名可能对应同一个 inode 编号, 这样便对应同一个

4、FCB 主部, 即一个文件可以有多个名字.2. inode相当于 FCB 主部, 包括文件主、共享说明、地址信息等, 称为 inode, inode 与文件具有一对一的关系. 在 UNIX 文件系统中, 有一个固定的区域, 用于保存所有文件的 inode. 如图 1210 所示. 每个 inode 有一个唯一的编号,称为 i_number. 将 FCB 分为两部分的目的之一是实现文件的连接,所谓连接实际是使多个目录项与同一个 inode 建立联系,从而可以通过不同的路径名查找到同一个文件,即使一个文件有多个符号名称. 例如对于图 12-11(a)所示的目录树,经过连接后文件 f 增加了路径名/

5、usr/Xu/d2/g,如图 12-11(b)所示二者具有相同的i_number(15),因而对应同一个 inode.12.5.5 文件系统映射文件打开时,控制信息被移入内存相关表目中,并通过文件描述符建立与文件内容之间的联系图 1212 给出了进程空间与 u_ofile 表、file 表、inode 表之间的连接关系,其中文件描述符 4,6 对应两个不同的文件,描述符 10,2 对应同一文件但不共享读写指针,描述符 8,9 对应同一文件且共享读写指针 完整的 file 结构定义如下:5507 struct file5508 5509 char f_flag; /* FREAD=01, FWR

6、ITE=02, FPIPE=04 */5510 char f_count; /* reference count */5511 int f_inode; /* pointer to inode structure */5512 char *f_offset; /* read/write character pointer */5513 12.5.6 文件卷的安装用一个文件卷的根目录取代文件的一个普通文件. 这样一个文件卷可以动态地联结到文件系统中, 也可以动态地由文件系统中卸下. 文件卷的组织形式如图 1213 所示. 其中块#0 为引导块, 负责操作系统的装入; 块#1 为特殊块, 记载磁盘

7、块的分配状况; 由块#2 到块#k+1 为 inode 区域, 保存文件 FCB 主部, 其 k值在文件卷初始化时确定; 由块# k+2 到块#n-1 为一般块, 保存普通文件及目录文件的内容.其中引导块只对系统根文件卷才是有意义的,它负责在系统启动时在磁盘上找到 UNIX 系统并将其装入内存. 超级块(super block)是一个文件卷中最重要的数据结构,它记录本卷上 inode 块和一般块的分配状况,以及锁等标志信息文件的变化(建立、撤销、写入等)一般都需要访问超级块以实现对 inode 块和一般块的管理. 文件卷卸下(unmount)时,若超级块在内存期间被修改,则需要写回外存. 实际

8、上,这种回写每隔一段时间都需要执行一次,以防止意外,保证缓冲区内容与文件卷内容的一致性.12.5.7 磁盘空间管理UNIX 空闲磁盘空间的管理采用了成组连接方式,它可看成是空闲块链与空闲块表的结合,涉及超级块(块号 #1)中 s_nfree,s_free100 和 s_flock 三个数据结构. s_free 可记录多达 100 个空闲块号以及一个由连接块构成的成组连接链之链头, 而每个连接块中登记有多达 100 个空闲块号以及一个指向下一个连接块的指针;s_nfree 是当前超级块中所记录的空闲块的个数;s_flock 是互斥操作空闲块数据结构的锁标志. 如图 1214 所示. 12.5.8

9、 inode 区域管理inode 区中保持文件控制块的主部,对于第六版 UNIX,一个 inode 占 32 个字节,一个磁盘块长度为512 字节,这样一块中可以保存 16 个 inode. 将 inode 区中所有 inode 由 0 开始依次编号,称为i_number,i_number 是 inode 的唯一标识,也是文件的唯一标识. 在 inode 中包含 i_nlink,i_nlink=0 者为空闲 inode.filesys 中与 inode 管理相关数据结构包括 s_ninode, s_inode 和 s_ilock. 其中 s_inode 可记录多达 100 个空闲 inode

10、的编号. 申请时,取 s_inode-s_ninode,当 s_ninode=0 时缓冲区中记录的空闲 inode 已经全部用完,此时顺序扫描 inode 区寻找 100 个空闲 inode(i_nlink=0),并将其编号记录到 s_inode 中. 释放时,执行 s_inodes_ninode+=释放 inode 编号,当 s_ninode=100 时,丢弃该 inode 编号.文件的 inode 长期保存在磁盘上,当文件被打开时,inode 被缓冲到内存以提高存取速度 . 内存中的inode 与外存中的 inode 应当保持一致,当内存中 inode 发生变化时应及时将其写回外存,具体回

11、写时刻有三种情况:(1)文件关闭;(2)定时更新;(3)执行其中 i_mode 为各种标志信息,低 9 位为访问权限,其它各位含义如图 12-15 所示,其中置 uid 位若为 1且该文件为可执行文件,则执行该程序的进程其 uid 暂时改为文件主的 uid. 其中 i_flag 为标志位,内容包括互斥锁、修改位、访问位、安装标识、等待标志等,如图 12-16 所示12.5.9 快速文件系统(Fast File System)经典 UNIX 文件系统在设计方面是非常成功的,然而随着磁盘容量和文件长度的增加也显现出一些问题. (1)首先 UNIX 文件卷将 inode 区与内容存储区相互分离,当查

12、找一个较长的路径名时需要由 inode区到内容存储区,再由内容存储区到 inode 区几次往复,对应磁头引臂在内外磁道的频繁运动.(2)其次长度为 512 字节的磁盘块尺寸过小,对于稍长的文件就意味着 I/O 块间址,I/O 效率低.(3)另外长度为 14 字节的文件名分量也是一个苛刻的限制. 为克服经典 UNIX 文件系统的局限性, UC Berkeley 提出了一种成为快速文件系统( Fast File System)的改进策略,这种改进使其效率提高一个数量级,目前已被用于大多数 UNIX 版本中,其中包括 4.2BSD等. 首先, FFS 将磁盘卷划分为若干个柱面组(cylinder g

13、roup) ,每个柱面组占若干连续的柱面,作为相对独立的文件卷管理,其中包含各自独立的超级块、inode 区和数据块,如图 12-16 所示. 文件路径名中所涉及的分量,以及一个文件的所有磁盘块都局部在同一柱面组内,大大减小了 inode 区与数据块区之间的物理距离. 其中数据块被分散在柱面组的两端,进一步减小由 inode 区到数据块区的磁头移动量. 在核心级别,系统通过二元组 来识别一个文件.其次,FFS 采用较大的磁盘块以减少 I/O 间址并提高 I/O 效率. 磁盘块的尺寸可达 8k,这样对于长度为 80k 的文件不需间址,10 次 I/O 传输即可全部读入内存. 对于没有间接块的文件

14、,4.2BSD 采用大小两种块尺寸:除最后一块外,一个文件所有其它块均为大块( 如 8k),而最后一块为 1k 的整数倍,称为片(fragment).12.5.10 NFS 网络文件系统包括 SunOS(UNIX 4.2BSD ), NFS 已被所有现代 UNIX 系统所采用,成为目前最有影响的远程文件访问系统. 在逻辑结构上位于 NFS 之上的虚拟文件系统 VFS(Virtual File System)最初只是针对 NFS 而设置的,用于识别本地与远程文件访问,但现在 VFS 已支持多种不同的本地文件系统,成为 UNIX 文件系统的统一界面.12.5.10.1 NFS 体系结构每个服务员可

15、输出(export )一个或多个目录以供远程客户共享,被共享目录所属的子树亦被共享. 服务员输出的共享目录记载在 /etc/export 文件中. 客户通过安装( mount)命令实现对目录的共享,被安装的目录成为其目录层次的组成部分. 12.5.10.2 协议由于 NFS 的目标是支持异构系统,客户和服务员可以处于不同操作系统平台和硬件环境中,定义两个协议,(1)远程安装协议,不透明的;(2)远程存取协议,透明的.远程安装协议用于建立客户与服务器之间的逻辑联系,服务器端 export 可以被远程安装的目录名以及允许安装的机器,需要给出:(a)远程待安装目录的路径命名; (b)远程机器名. 远

16、程安装命令被 NFS 映射到对应的 RPC 调用,经过网络传输到服务器,客户可以向服务器发送一个请求,将服务器上某一目录安装到顾客端指定目录 .返回描述符 .安装协议是不透明的,需要给出机器名称,这使 NFS 不是真正的分布式文件系统.远程存取协议提供一套 RPC 调用,执行如下操作:(1)查找目录下的文件;(2)读取目录项目;(3)操作 link 与目录;(4)存取文件属性;(5)读写文件. 远程存取协议是透明的,与操作本地目录和文件相同.NFS 是无状态的 (stateless):文件服务端并不在内存打开文件表中保持文件控制信息,为此每个文件操作命令必须是自包含的(self contained ),即必须提供完整的参数集合另外 NFS 不提供并发控制机制.12.5.10.3 NFS 实现客户端 VFS 功能:(1)识别本地文件与远程文

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号