UNIX系统文件基础.docVIP

  • 4
  • 0
  • 约5.23千字
  • 约 12页
  • 2016-02-25 发布于江苏
  • 举报
UNIX系统文件基础.doc

文件类型 ??? 在UNIX系统中, 文件分为三类: 即普通文件、目录文件和特殊文件. ??? 1.? 普通文件 也称正文文件,可以用来保存程序、数据等任何信息. 这是一种无结构的, 以512个字节为一块, 顺序存取的流式文件. ??? 2.? 目录文件 用于检索文件的文件. 目录文件可能是系统文件, 也可能是用户文件. 3. 特殊文件 即设备. 在UNIX系统中将设备也作为文件来处理, 对于设备的所有操作都需要经过文件系统, 这有如下两个优点: (1) 设备与文件界面统一:使用设备与使用文件没有差别. 具体地说, 打开一个设备文件相当于申请该设备, 关闭一个设备文件相当于释放该设备, 读写设备文件相当于对设备进行I/O操作. (2) 设备可采用与文件相同的保护机制:文件可以访问权限等手段加以保护, 设备作为文件处理也可如同文件一样得到保护. 如对于打印机设备可规定为只“写”型设备, 对其实行“读”操作将被视为非法而加以拒绝. 将设备作为特殊文件管理是UNIX系统的成功特点之一,并被后来其它一些操作系统所借鉴. ? 12.5.2? 文件体系 UNIX文件系统呈树形结构, 树的根结点为根目录root, 树的叶结点可以为普通文件、特殊文件、或者目录文件. 其它既非根结点也非叶结点的结点为目录文件. 如图 12-8 所示. ? ? ?   图中虚线代表链接(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. 如图 12-10 所示. 每个inode有一个唯一的编号,称为i_number. ? ? ? 将FCB分为两部分的目的之一是实现文件的连接,所谓连接实际是使多个目录项与同一个inode建立联系,从而可以通过不同的路径名查找到同一个文件,即使一个文件有多个符号名称. 例如对于图12-11(a)所示的目录树,经过连接后文件f增加了路径名/usr/Xu/d2/g,如图12-11(b)所示.二者具有相同的i_number(15),因而对应同一个inode. ? ? 12.5.5? 文件系统映射 文件打开时,控制信息被移入内存相关表目中,并通过文件描述符建立与文件内容之间的联系. 图 12-12给出了进程空间与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? 文件卷的安装 ??? 用一个文件卷的根目录取代文件的一个普通文件. 这样一个文件卷可以动态地联结到文件系统中, 也可以动态地由文件系统中卸下. 文件卷的组织形式如图 12-13 所示. 其中块#0为引导块, 负责操作系统的装入; 块#1为特殊块, 记载磁盘块的分配状况; 由块#2到块#k+1为inode区域, 保存文件FCB主部, 其k值在文件卷初始化时确定; 由块#k+2到

文档评论(0)

1亿VIP精品文档

相关文档