UNIX系统文件基础.doc_第1页
UNIX系统文件基础.doc_第2页
UNIX系统文件基础.doc_第3页
UNIX系统文件基础.doc_第4页
UNIX系统文件基础.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文件类型 在UNIX系统中, 文件分为三类: 即普通文件、目录文件和特殊文件. 1. 普通文件也称正文文件,可以用来保存程序、数据等任何信息. 这是一种无结构的, 以512个字节为一块, 顺序存取的流式文件 2. 目录文件用于检索文件的文件. 目录文件可能是系统文件, 也可能是用户文件. 3. 特殊文件即设备. 在UNIX系统中将设备也作为文件来处理, 对于设备的所有操作都需要经过文件系统,这有如下两个优点: (1) 设备与文件界面统一:使用设备与使用文件没有差别. 具体地说, 打开一个设备文件相当于申请该设备, 关闭一个设备文件相当于释放该设备, 读写设备文件相当于对设备进行I/O操作.(2) 设备可采用与文件相同的保护机制:文件可以访问权限等手段加以保护, 设备作为文件处理也可如同文件一样得到保护. 如对于打印机设备可规定为只“写”型设备, 对其实行“读”操作将被视为非法而加以拒绝.将设备作为特殊文件管理是UNIX系统的成功特点之一,并被后来其它一些操作系统所借鉴.12.5.2 文件体系UNIX文件系统呈树形结构, 树的根结点为根目录root, 树的叶结点可以为普通文件、特殊文件、或者目录文件. 其它既非根结点也非叶结点的结点为目录文件. 如图 128 所示.图中虚线代表链接(link),通过链接可以给一个文件赋予多个符号名(路径名),这是共享文件的一种方法12.5.3 文件结构 1. 文件的逻辑结构 UNIX普通文件的逻辑结构为流式的. 在用户看来, 一个文件是一个字节序列. 文件的读写操作命令包含传输字节的个数这种结构实现简单, 系统开销小当然, 如果需要, 用户可以利用流式文件来构造记录式文件, 因为对于文件内容的解释权完全留给了用户. 2. 文件的物理结构 UNIX文件的物理结构为链接结构与索引结构的结合, 也可看成是多级索引结构. 其实现如图12-9所示. 12.5.4 文件目录与连接1. 目录项 相当于FCB次部,包括两个内容: 即文件名和inode编号, 不同的文件名可能对应同一个inode编号, 这样便对应同一个FCB主部, 即一个文件可以有多个名字. 2. inode 相当于FCB主部, 包括文件主、共享说明、地址信息等, 称为inode, inode与文件具有一对一的关系. 在UNIX文件系统中, 有一个固定的区域, 用于保存所有文件的inode. 如图 1210 所示. 每个inode有一个唯一的编号,称为i_number.将FCB分为两部分的目的之一是实现文件的连接,所谓连接实际是使多个目录项与同一个inode建立联系,从而可以通过不同的路径名查找到同一个文件,即使一个文件有多个符号名称. 例如对于图12-11(a)所示的目录树,经过连接后文件f增加了路径名/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 file 5508 5509 char f_flag; /* FREAD=01, FWRITE=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为特殊块, 记载磁盘块的分配状况; 由块#2到块#k+1为inode区域, 保存文件FCB主部, 其k值在文件卷初始化时确定; 由块#k+2到块#n-1为一般块, 保存普通文件及目录文件的内容. 其中引导块只对系统根文件卷才是有意义的,它负责在系统启动时在磁盘上找到UNIX系统并将其装入内存. 超级块(super block)是一个文件卷中最重要的数据结构,它记录本卷上inode块和一般块的分配状况,以及锁等标志信息文件的变化(建立、撤销、写入等)一般都需要访问超级块以实现对inode块和一般块的管理. 文件卷卸下(unmount)时,若超级块在内存期间被修改,则需要写回外存. 实际上,这种回写每隔一段时间都需要执行一次,以防止意外,保证缓冲区内容与文件卷内容的一致性.12.5.7 磁盘空间管理 UNIX空闲磁盘空间的管理采用了成组连接方式,它可看成是空闲块链与空闲块表的结合,涉及超级块(块号#1)中s_nfree,s_free100和s_flock三个数据结构. s_free可记录多达100个空闲块号以及一个由连接块构成的成组连接链之链头, 而每个连接块中登记有多达100个空闲块号以及一个指向下一个连接块的指针;s_nfree是当前超级块中所记录的空闲块的个数;s_flock是互斥操作空闲块数据结构的锁标志. 如图 1214 所示. 12.5.8 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的编号. 申请时,取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 发生变化时应及时将其写回外存,具体回写时刻有三种情况:(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区与内容存储区相互分离,当查找一个较长的路径名时需要由inode区到内容存储区,再由内容存储区到inode区几次往复,对应磁头引臂在内外磁道的频繁运动.(2)其次长度为512字节的磁盘块尺寸过小,对于稍长的文件就意味着I/O块间址,I/O效率低.(3)另外长度为14字节的文件名分量也是一个苛刻的限制. 为克服经典UNIX文件系统的局限性,UC Berkeley提出了一种成为快速文件系统(Fast File System)的改进策略,这种改进使其效率提高一个数量级,目前已被用于大多数UNIX版本中,其中包括4.2BSD等. 首先, FFS将磁盘卷划分为若干个柱面组(cylinder group),每个柱面组占若干连续的柱面,作为相对独立的文件卷管理,其中包含各自独立的超级块、inode区和数据块,如图12-16所示. 文件路径名中所涉及的分量,以及一个文件的所有磁盘块都局部在同一柱面组内,大大减小了inode区与数据块区之间的物理距离. 其中数据块被分散在柱面组的两端,进一步减小由inode区到数据块区的磁头移动量. 在核心级别,系统通过二元组来识别一个文件.其次,FFS采用较大的磁盘块以减少I/O间址并提高I/O效率. 磁盘块的尺寸可达8k,这样对于长度为80k的文件不需间址,10次I/O传输即可全部读入内存. 对于没有间接块的文件,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体系结构每个服务员可输出(export)一个或多个目录以供远程客户共享,被共享目录所属的子树亦被共享. 服务员输出的共享目录记载在/etc/export文件中. 客户通过安装(mount)命令实现对目录的共享,被安装的目录成为其目录层次的组成部分. 12.5.10.2 协议由于NFS的目标是支持异构系统,客户和服务员可以处于不同操作系统平台和硬件环境中,定义两个协议,(1)远程安装协议,不透明的;(2)远程存取协议,透明的.远程安装协议用于建立客户与服务器之间的逻辑联系,服务器端export可以被远程安装的目录名以及允许安装的机器,需要给出:(a)远程待安装目录的路径命名;(b)远程机器名. 远程安装命令被NFS映射到对应的RPC调用,经过网络传输到服务器,客户可以向服务器发送一个请求,将服务器上某一目录安装到顾客端指定目录.返回描述符.安装协议是不透明的,需要给出机器名称,这使NFS不是真正的分布式文件系统.远程存取协议提供一套RPC调用,执行如下操作:(1)查找目录下的文件;(2)读取目录项目;(3)操作link与目录;(4)存取文件属性;(5)读写文件. 远程存取协议是透明的,与操作本地目录和文件相同.NFS是无状态的(stateless):文件服务端并不在内存打开文件表中保持文件控制信息,为此每个文件操作命令必须是自包含的(self contained),即必须提供完整的参数集合另外NFS不提供并发控制机制.12.5.10.3 NFS实现客户端VFS功能:(1)识别本地文件与远程文件,对于远程文件,调用NFS协议过程;(2)对于本地文件,区分本地文件系统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论