UNIX文件系统_第1页
UNIX文件系统_第2页
UNIX文件系统_第3页
UNIX文件系统_第4页
UNIX文件系统_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

1、UNIXUNIX文件系统文件系统 概述概述 文件是保存信息的基本结构。概念上,计算机中的文件类似于日文件是保存信息的基本结构。概念上,计算机中的文件类似于日 常使用的文件;技术上,文件是保存在某种介质上的字节序列。文件常使用的文件;技术上,文件是保存在某种介质上的字节序列。文件 可以包含任何可以表示为字节序列的信息。每个文件通过文件名进行可以包含任何可以表示为字节序列的信息。每个文件通过文件名进行 标识。用户对文件进行操作只需利用文件名。而操作系统负责定位文标识。用户对文件进行操作只需利用文件名。而操作系统负责定位文 件所作的位置并维护它的有关文件的信息。件所作的位置并维护它的有关文件的信息。

2、 提纲提纲 1 UNIX1 UNIX系统中的文件系统中的文件 (普通文件、目录文件、特殊文件、(普通文件、目录文件、特殊文件、UNIXUNIX文件的许可机制)文件的许可机制) 2 UNIX2 UNIX文件系统设计文件系统设计 (文件管理系统结构、文件系统维护、物理卷与逻辑卷定义、文件系统(文件管理系统结构、文件系统维护、物理卷与逻辑卷定义、文件系统 的存储结构、索引节点和目录文件的作用、文件的多重索引存储结构、的存储结构、索引节点和目录文件的作用、文件的多重索引存储结构、 可支持多种文件系统的机制)可支持多种文件系统的机制) 3 UNIX3 UNIX文件系统的动态管理方法文件系统的动态管理方法

3、 (文件系统的动态数据结构、文件的检索过程、文件共享的实现及应用)(文件系统的动态数据结构、文件的检索过程、文件共享的实现及应用) 4 4 用于文件管理的系统调用用于文件管理的系统调用 (文件描述符、用于文件创建和文件联接的系统调用、文件的打开与关(文件描述符、用于文件创建和文件联接的系统调用、文件的打开与关 闭系统调用、文件读和写系统调用、文件随机存取系统调用、文件记录闭系统调用、文件读和写系统调用、文件随机存取系统调用、文件记录 锁定系统调用)锁定系统调用) 5 5 文件备份与恢复文件备份与恢复 1 UNIX1 UNIX系统中的文件系统中的文件 (1)UNIX的文件系统是按照层次性结构建立

4、的的文件系统是按照层次性结构建立的。文件系统内部。文件系统内部 使用一个多级目录结构管理构件,控制着多级多层次的文件体系。使用一个多级目录结构管理构件,控制着多级多层次的文件体系。 文件系统从根目录开始向下延伸组成了文件系统从根目录开始向下延伸组成了文件系统的倒置树型的目录文件系统的倒置树型的目录 关系体系关系体系。 (2)UNIX文件就是一组字节序列文件就是一组字节序列。操作系统没有给文件强加任。操作系统没有给文件强加任 何的结构约束,也没有对文件的内容附加任何的特殊定义,对操作何的结构约束,也没有对文件的内容附加任何的特殊定义,对操作 系统而言,文件就是一组字节序列的数据而已。系统而言,文

5、件就是一组字节序列的数据而已。 (3)UNIX系统中每一个对象都表示为文件。系统中每一个对象都表示为文件。并不仅仅是通常并不仅仅是通常 的数据集合,为了便于管理和调度,的数据集合,为了便于管理和调度,UNIX将系统中的每个硬件设将系统中的每个硬件设 备表示为文件,并采用施加在一般文件上的调度和管理方法来解决备表示为文件,并采用施加在一般文件上的调度和管理方法来解决 系统中硬件设备问题。系统中硬件设备问题。 实现系统中所有对象统一调度和管理。实现系统中所有对象统一调度和管理。 1 UNIX1 UNIX系统中的文件系统中的文件 总结:在总结:在UNIX系统中,文件是一些字节序列,即系统中的所有系统

6、中,文件是一些字节序列,即系统中的所有 一切,包括键盘在内的一切,包括键盘在内的I/O设备都是一个文件,所有文件以倒置树设备都是一个文件,所有文件以倒置树 型层次结构进行组织。型层次结构进行组织。 / / etcusersbindevhomebin userdevsbinhomeuser1user2 prog.c ls.txt 1.1 1.1 文件的分类文件的分类 LINUX/UNIX支持五种文件类型:支持五种文件类型: (a)普通文件)普通文件 (b)目录文件)目录文件 (c)特殊)特殊/设备文件设备文件 (d)命名管道)命名管道 (e)符号链接)符号链接 1.1 1.1 文件的分类文件的分

7、类 (a)普通文件)普通文件 一般说来,一般说来,UNIX系统中的文件是以字节为单位的数据信息流系统中的文件是以字节为单位的数据信息流 集合,因此普通文件可以是包括文本文件,源程序文件,数据文件集合,因此普通文件可以是包括文本文件,源程序文件,数据文件 以及可执行的二进制文件等。这部分我们所说的文件和我们通常所以及可执行的二进制文件等。这部分我们所说的文件和我们通常所 建立和使用的文件是同种类型的。建立和使用的文件是同种类型的。 在管理中,操作系统会给文件设立各种属性信息,因为在在管理中,操作系统会给文件设立各种属性信息,因为在 UNIX系统内部,文件系统对文件的管理是通过对文件的属性信息系统

8、内部,文件系统对文件的管理是通过对文件的属性信息 的管理完成的。的管理完成的。 1.1 1.1 文件的分类文件的分类 在在UNIX系统中,普通文件的基本属性信息包括以下一些:系统中,普通文件的基本属性信息包括以下一些: 文件名文件名 文件的特征说明文件的特征说明 文件的索引号文件的索引号 文件在系统中的唯一表示,类似的,每个文件在系统中的唯一表示,类似的,每个UNIX 用户有一个唯一的用户有一个唯一的id 文件的字节数文件的字节数 表示文件大小的信息表示文件大小的信息 最后访问时间最后访问时间 表示文件上次被修改的时间表示文件上次被修改的时间 文件存取权限文件存取权限 描述系统中不同的用户对该

9、文件的读写和执行描述系统中不同的用户对该文件的读写和执行 的权限的权限 属主名属主名 标识该文件的主人标识该文件的主人 属组名属组名 标识该文件所属的用户组标识该文件所属的用户组 1.1 1.1 文件的分类文件的分类 Lisiredhat9$ ls -la total 44 drwx- 4 lisi lisi 4096 Oct 8 . drwxr-xr-x 4 root root 4096 Sep 12 . drwxrwxr-x 2 lisi lisi 4096 Oct 8 aa -rw-rw-r- 1 lisi lisi 38 Oct 8 aa.txt -rw- 1 lisi lisi 46

10、3 Oct 9 .bash_history -rw-r-r- 1 lisi lisi 24 Sep 12 .bash_logout -rw-r-r- 1 lisi lisi 191 Sep 12 .bash_profile -rw-r-r- 1 lisi lisi 124 Sep 12 .bashrc -rw-r-r- 1 lisi lisi 118 Sep 12 .gtkrc lisiredhat9$ 文件类型及文件类型及 用户访问权限用户访问权限 文件链接数文件链接数文件的属主名文件的属主名 文件的属组名文件的属组名文件的大小文件的大小 按字节计算按字节计算 文件的修改日期文件的修改日期文

11、件的文件名文件的文件名 1.1 1.1 文件的分类文件的分类 UNIXUNIX系统去掉了对文件格式和结构的约束,将系统去掉了对文件格式和结构的约束,将所有的文件都看成是所有的文件都看成是 无结构的字节序列无结构的字节序列。并且。并且在在UNIXUNIX中,根据用户的需要可以存在多种类中,根据用户的需要可以存在多种类 型的文件解释型的文件解释/ /处理程序,对每一个具体的程序而言,它们都会对文处理程序,对每一个具体的程序而言,它们都会对文 件中的内容进行字符的区分,含义的解释以及内容存放方式的描述等。件中的内容进行字符的区分,含义的解释以及内容存放方式的描述等。 因此不同的解释程序对同一文件的解

12、释操作会产生不同的效果。因此不同的解释程序对同一文件的解释操作会产生不同的效果。 对用户而言,对用户而言,文件可以有多种逻辑结构文件可以有多种逻辑结构,不同的逻辑结构可以适应,不同的逻辑结构可以适应 不同的应用程序的要求,比如记录式文件结构很适合用来存储数据库不同的应用程序的要求,比如记录式文件结构很适合用来存储数据库 信息,而可执行程序通常使用二进制的无结构文件。针对这些不同的信息,而可执行程序通常使用二进制的无结构文件。针对这些不同的 文件逻辑结构(虽然它们本质上都是字节序列),文件逻辑结构(虽然它们本质上都是字节序列),UNIXUNIX系统内部可以系统内部可以 采用不同的存储方式和查询方

13、法来完成对这些文件的处理。采用不同的存储方式和查询方法来完成对这些文件的处理。 常见的普通文件的逻辑结构有以下几种:常见的普通文件的逻辑结构有以下几种: 堆文件、顺序文件、索引顺序文件、索引文件、堆文件、顺序文件、索引顺序文件、索引文件、散列文件散列文件 1.1 1.1 文件的分类文件的分类 (b)目录文件)目录文件 目录文件是能够存放任何类型文件的容器,包括子目录。目录文件是能够存放任何类型文件的容器,包括子目录。 在在UNIX系统中,目录也是一种文件。在应用上与其他操作系统系统中,目录也是一种文件。在应用上与其他操作系统 如如windows中的目录定义相似。在文件管理中仍然作为一种文件来中

14、的目录定义相似。在文件管理中仍然作为一种文件来 对待。对待。 UNIX的目录结构与的目录结构与dos以及以及windows的目录结构很相似,是分层的目录结构很相似,是分层 次的树状结构,例如下图所示的一个次的树状结构,例如下图所示的一个UNIX系统的目录结构系统的目录结构 。 1.1 1.1 文件的分类文件的分类 这个目录结构的形状类似于一棵倒置的树,通常都称之为这个目录结构的形状类似于一棵倒置的树,通常都称之为“目录树目录树”, 它的顶端顶点它的顶端顶点 / 称为根目录称为根目录,根目录下还有各级子目录,椭圆形部分中的内根目录下还有各级子目录,椭圆形部分中的内 容表示目录树中的树叶节点(就是

15、不再产生新节点的单元)。容表示目录树中的树叶节点(就是不再产生新节点的单元)。UNIX系统的系统的 目录树结构和目录树结构和dos,windows下目录树结构最大的不同点就是,下目录树结构最大的不同点就是,UNIX系统的系统的 目录树只有一个根节点,而目录树只有一个根节点,而dos及及windows的目录树结构有多个根节点,通的目录树结构有多个根节点,通 常是一个磁盘分区就有一个对应的根结点。常是一个磁盘分区就有一个对应的根结点。 / / etcusersbindevhomebin userdevsbinhomeuser1user2 prog.c ls.txt 1.1 1.1 文件的分类文件的

16、分类 (c)特殊)特殊/设备文件设备文件 UNIX系统为了便于管理,将机器的硬件资源看作是文件,并且系统为了便于管理,将机器的硬件资源看作是文件,并且 以文件的形式进行调度和管理。为了和普通文件进行区别,以文件的形式进行调度和管理。为了和普通文件进行区别,UNIX 系统把这些涉及到系统硬件资源的内容定义为系统把这些涉及到系统硬件资源的内容定义为“特殊文件特殊文件”。这样。这样 一来,特殊文件所涉及到的机器硬件物理设备一来,特殊文件所涉及到的机器硬件物理设备,比如硬盘,软盘,打比如硬盘,软盘,打 印机,显示器等等,都被赋予了文件的属性如文件类型,属主,属印机,显示器等等,都被赋予了文件的属性如文

17、件类型,属主,属 组,访问权限。用户对这些物理设备进行操作时,就类似与在对文组,访问权限。用户对这些物理设备进行操作时,就类似与在对文 件进行读写一样。件进行读写一样。 设备分为两种类型:设备分为两种类型: 字符特殊设备文件字符特殊设备文件:对应于执行面向字符的:对应于执行面向字符的I/OI/O的设备。的设备。 块特殊设备文件块特殊设备文件:对应于以字节块进行:对应于以字节块进行I/OI/O操作的设备。操作的设备。 1.1 1.1 文件的分类文件的分类 (d)命名管道)命名管道 命名管道为同一个命名管道为同一个LINUX系统上的进程相互通信提供了一种机制。系统上的进程相互通信提供了一种机制。

18、(e) 符号链接文件符号链接文件 符号链接文件可以符号链接文件可以“指向指向”(即引用)一个文件。通过命令(即引用)一个文件。通过命令ln -s 创建一个符号链接并存放它所指的文件的路径名。创建一个符号链接并存放它所指的文件的路径名。 (f)套接字文件)套接字文件 套接字是两个进程间的通信端点;这些进程可以运行在相同的系套接字是两个进程间的通信端点;这些进程可以运行在相同的系 统上,也可运行在网络中的不同系统上。统上,也可运行在网络中的不同系统上。 1.2 1.2 文件的许可机制文件的许可机制 UNIX文件的许可机制主要体现在文件的访问权限上。假设执行命令文件的许可机制主要体现在文件的访问权限

19、上。假设执行命令 ls l,通常的显示结果会是这个样子:,通常的显示结果会是这个样子: lisiredhat9$ ls -l total 44 drwx- 4 lisi lisi 4096 Oct 8 . drwxr-xr-x 4 root root 4096 Sep 12 . drwxrwxr-x 2 lisi lisi 4096 Oct 8 aa -rw-rw-r- 1 lisi lisi 38 Oct 8 aa.txt -rw- 1 lisi lisi 463 Oct 9 .bash_history -rw-r-r- 1 lisi lisi 24 Sep 12 .bash_logout

20、-rw-r-r- 1 lisi lisi 191 Sep 12 .bash_profile -rw-r-r- 1 lisi lisi 124 Sep 12 .bashrc -rw-r-r- 1 lisi lisi 118 Sep 12 .gtkrc lisiredhat9$ 1.2 1.2 文件的许可机制文件的许可机制 每行的第一项是文件类型和许可机制信息,其中文件类型是第一个字每行的第一项是文件类型和许可机制信息,其中文件类型是第一个字 符。系统中设定的文件类型有以下一些符。系统中设定的文件类型有以下一些: “-” 一个减号,表示该文件为普通文件,如文本文件,可执行文件等一个减号,表示该文件

21、为普通文件,如文本文件,可执行文件等 等。等。 “d” 字符字符d,表示该文件类型为目录文件,表示该文件类型为目录文件 “b” 字符字符b,表示该文件类型为块设备文件,表示该文件类型为块设备文件 “c” 字符字符c,表示该文件类型为字符设备文件,表示该文件类型为字符设备文件 “l” 字符字符l,表示链接文件,表示链接文件 “p” 字符字符p,表示管道文件,表示管道文件 第一项的后面第一项的后面9个字母,表示的是文件的许可机制,也就是我们说的个字母,表示的是文件的许可机制,也就是我们说的 访问权限。访问权限。 2 UNIX2 UNIX文件系统设计文件系统设计 UNIX操作系统的文件管理系统在为用

22、户提供的文件调度和管理操作系统的文件管理系统在为用户提供的文件调度和管理 方面有许多特点,比如方面有许多特点,比如: : 1)文件被定义成无结构限制的字节序列或称为字节流。)文件被定义成无结构限制的字节序列或称为字节流。 2)文件系统的目录结构是分层次的树型结构并且只有唯一的根节)文件系统的目录结构是分层次的树型结构并且只有唯一的根节 点。点。 3)机器的硬件设备被赋予了一般性文件同样的调度和管理模式。)机器的硬件设备被赋予了一般性文件同样的调度和管理模式。 下面主要来了解下面主要来了解UNIX文件系统的内部结构和设计思想等内容文件系统的内部结构和设计思想等内容 。 2.1 2.1 文件管理系

23、统结构文件管理系统结构 1 文件系统主要功能文件系统主要功能 在所有操作系统中,文件系统的功能集中起来讲就是:按名存取。在所有操作系统中,文件系统的功能集中起来讲就是:按名存取。 在在UNIX系统中,文件系统对外表现的功能为:系统中,文件系统对外表现的功能为: 1)将用户的程序或数据按文件名方式存放在某种存储介质上)将用户的程序或数据按文件名方式存放在某种存储介质上 2)能完成快速方便的透明存取。)能完成快速方便的透明存取。 透明存取:透明存取:指的是当用户对文件或目录进行访问或处理时,不指的是当用户对文件或目录进行访问或处理时,不 需要了解文件到底以何种组织方式存放在哪个具体的物理结构上,需

24、要了解文件到底以何种组织方式存放在哪个具体的物理结构上, 用户只需要给出文件名和该文件所在的路径就可以快速方便地完成用户只需要给出文件名和该文件所在的路径就可以快速方便地完成 文件的访问和执行。所有对文件的内部操作,如对存储空间的管理,文件的访问和执行。所有对文件的内部操作,如对存储空间的管理, 文件查找,存储介质的读写都要由系统的文件管理系统自动来完成。文件查找,存储介质的读写都要由系统的文件管理系统自动来完成。 2.1 2.1 文件管理系统结构文件管理系统结构 文件管理系统需要完成以下几个部分:文件管理系统需要完成以下几个部分: 1)对磁盘和其他存储器(如光盘,对磁盘和其他存储器(如光盘,

25、USB存储盘等)的空间进行统一的管理。存储盘等)的空间进行统一的管理。 这个工作包括实现当用户创建文件时分配空闲区,用户删除文件时要回收存储这个工作包括实现当用户创建文件时分配空闲区,用户删除文件时要回收存储 空间,当用户修改文件时对存储空间进行调整。空间,当用户修改文件时对存储空间进行调整。 2)完成文件的按名存取管理。完成文件的按名存取管理。通过制定一些用户容易理解和识别的,独立于通过制定一些用户容易理解和识别的,独立于 物理存储介质的文件逻辑结构,如堆文件,顺序文件、索引文件等逻辑结构。物理存储介质的文件逻辑结构,如堆文件,顺序文件、索引文件等逻辑结构。 让用户使用这种逻辑结构完成他需要

26、的数据信息加工和存取。让用户使用这种逻辑结构完成他需要的数据信息加工和存取。 3)制定一个科学的,合理的文件存放结构。制定一个科学的,合理的文件存放结构。这说的是文件数据在物理设备上这说的是文件数据在物理设备上 的存放结构,和文件的逻辑结构无关。这种文件存放结构必须便于文件系统对的存放结构,和文件的逻辑结构无关。这种文件存放结构必须便于文件系统对 存放在物理存储介质上的文件进行存取操作。存放在物理存储介质上的文件进行存取操作。 4)完成物理存储设备上文件的查找,读、写等操作完成物理存储设备上文件的查找,读、写等操作 5)提供文件共享和文件保护的功能提供文件共享和文件保护的功能 堆文件堆文件 顺

27、序文件顺序文件 索引顺序文件索引顺序文件 索引文件索引文件 散列文件散列文件 逻辑输入逻辑输入/输出管理层输出管理层 基本输入基本输入/输出管理层输出管理层 基本文件系统基本文件系统 字符设备驱动字符设备驱动 块设备驱动块设备驱动 顶层顶层 二层二层 三层三层 四层四层 五层五层 第五层第五层 设备驱动程序,它直接与外部设备进行通讯,该层控制设备驱动程序,它直接与外部设备进行通讯,该层控制I/O设备的操设备的操 作,完成作,完成I/O的各种请求任务。的各种请求任务。 第四层第四层 基本文件系统基本文件系统 主要完成主存和辅助存储器的管理主要完成主存和辅助存储器的管理 第三层第三层 基本输入输出

28、管理层基本输入输出管理层 完成对文件的输入输出控制完成对文件的输入输出控制 第二层第二层 逻辑输入逻辑输入/输出管理层,输出管理层, 完成从文件到文件记录的访问的管理。完成从文件到文件记录的访问的管理。 第一层是文件的逻辑结构,它是用户可见的层次,描述了文件系统中可以第一层是文件的逻辑结构,它是用户可见的层次,描述了文件系统中可以 支持的文件组织方式。支持的文件组织方式。 2 文件系统体系结构文件系统体系结构 2.2 2.2 文件系统的维护文件系统的维护 1 文件系统中与维护有关的特殊目录和特殊文件文件系统中与维护有关的特殊目录和特殊文件 在在UNIX系统中,有些目录是具有特殊意义的,它们的安

29、装位置和安装内系统中,有些目录是具有特殊意义的,它们的安装位置和安装内 容是相对固定的,就象容是相对固定的,就象windows系统的系统目录通常设置为系统的系统目录通常设置为c:windows一样。一样。 这些目录的不允许普通用户进行修改。这些目录的不允许普通用户进行修改。 一般来说,在一般来说,在UNIX系统的安装过程中,系统将会把常用的目录自动建立系统的安装过程中,系统将会把常用的目录自动建立 起来。在绝大部分的起来。在绝大部分的UNIX系统中,都包括如下一些特殊的目录:系统中,都包括如下一些特殊的目录: 2.2 2.2 文件系统的维护文件系统的维护 / / etcusrsbindevho

30、mebin libsbinbinuser1user2 prog.cls.txt /bin, /usr/bin 用户命令目录用户命令目录,存放普通用户存放普通用户 可以使用可以使用的的命令命令如如sh,tar,bc,tail等等 /sbin, /usr/sbin 系统命令目系统命令目 录,存放系统启动,关闭,网络管录,存放系统启动,关闭,网络管 理等命令理等命令 /usr/lib 存放用户使用的程序存放用户使用的程序 库(比如库(比如C,pascal的函数库)和的函数库)和 系统使用的信息库文件系统使用的信息库文件 /home 用户用户的的注册目录注册目录,通常用户通常用户 的的数据数据就就保存

31、保存在该在该目录目录下下 /dev 逻辑设备目录,存放设备逻辑设备目录,存放设备 驱动文件驱动文件,如如hda1,cdrom等等等等 2.2 2.2 文件系统的维护文件系统的维护 2 文件系统的安装和卸载文件系统的安装和卸载 UNIX系统的文件系统是通过安装和卸载进行维护的。系统的文件系统是通过安装和卸载进行维护的。 我们可以使用命令我们可以使用命令mount来将一个文件系统来将一个文件系统 安装到一个目录上,也安装到一个目录上,也 可以用可以用umount命令来将一个文件系统卸载下来。命令来将一个文件系统卸载下来。 mount 命令的常用格式命令的常用格式 mount -ht filesys

32、tem mountpoint filesystem 是文件系统名称,通常是磁盘或磁盘分区的名称。是文件系统名称,通常是磁盘或磁盘分区的名称。 mountpoint 是安装点的描述信息,它说明将该文件系统安装到哪个是安装点的描述信息,它说明将该文件系统安装到哪个 目录上,需要使用全路径名,而且该目录必须已经存在。目录上,需要使用全路径名,而且该目录必须已经存在。 在使用在使用mount命令将一个文件系统安装到某个目录后,如果该目录命令将一个文件系统安装到某个目录后,如果该目录 中原来有内容存在,则该部分内容将被屏蔽掉,直到文件系统被卸中原来有内容存在,则该部分内容将被屏蔽掉,直到文件系统被卸 载

33、后才能再次使用。载后才能再次使用。 -t 指定一个文件系统的类型指定一个文件系统的类型 2.2 2.2 文件系统的维护文件系统的维护 下面用例子来说明下面用例子来说明 $mount t msdos /dev/fd0 /mnt/floppy 将将dos格式的软磁盘文件系统安装到格式的软磁盘文件系统安装到/mnt/floppy目录下目录下 umount 命令的使用命令的使用 umount 命令是用来将上次命令是用来将上次mount上去的文件系统卸载下来,使用的上去的文件系统卸载下来,使用的 格式如下:格式如下: umount option filesystem $ umount /dev/fd0

34、umount 命令可以将暂时不用的文件系统从命令可以将暂时不用的文件系统从UNIX的文件系统管理中的文件系统管理中 卸载下来,这种裁剪方式使得卸载下来,这种裁剪方式使得UNIX的文件系统管理比较灵活。的文件系统管理比较灵活。 2.3 2.3 物理卷和逻辑卷物理卷和逻辑卷 1物理卷和物理分区物理卷和物理分区 物理卷(物理卷(physical volume)是指的一个独立的硬盘。每个物理卷在系统中)是指的一个独立的硬盘。每个物理卷在系统中 占有唯一的逻辑名称,这些名称的描述存放在占有唯一的逻辑名称,这些名称的描述存放在/dev目录下,比如:目录下,比如: /dev/hdisk0 系统中的第一个硬盘

35、系统中的第一个硬盘 /dev/hdisk1 系统中的第二个硬盘系统中的第二个硬盘 在物理卷中可以分出大小一致的物理分区(在物理卷中可以分出大小一致的物理分区(Physical Partition),也称为磁),也称为磁 盘块或者分页,容量可以在盘块或者分页,容量可以在512字节到字节到4k字节之间的任意。字节之间的任意。 2 逻辑卷:一个文件系统称为一个逻辑卷逻辑卷:一个文件系统称为一个逻辑卷 3 卷组:一个或多个物理卷为卷组卷组:一个或多个物理卷为卷组 2.4 2.4 文件系统存储结构文件系统存储结构 1 组成:组成: 1)引导块引导信息;)引导块引导信息; 2)超级块文件和目录在磁盘上静态

36、分布的描述信息(文件系统的状)超级块文件和目录在磁盘上静态分布的描述信息(文件系统的状 态、索引节点信息、存储块信息);态、索引节点信息、存储块信息); 3)索引节点表文件描述信息数据结构;)索引节点表文件描述信息数据结构; 4)数据区文件数据、目录文件数据、空闲块信息)数据区文件数据、目录文件数据、空闲块信息 2.4 2.4 文件系统存储结构文件系统存储结构 2 重要的数据结构重要的数据结构 在一般的操作系统(如在一般的操作系统(如DOS、Windows系统)中,将目录文件设计成为系统)中,将目录文件设计成为 文件的索引信息表,包括了文件的许多属性信息。文件的索引信息表,包括了文件的许多属性

37、信息。 目录文件的数据结构:目录文件的数据结构: 文件名文件名文件长度文件长度修改日期修改日期 UNIX系统中,分为目录文件、索引节点表两个数据结构系统中,分为目录文件、索引节点表两个数据结构 文件名文件名索引节点号索引节点号文件长度文件长度修改日期修改日期其他信息其他信息 目录文件数据结构目录文件数据结构 索引节点表索引节点表 优势:优势: 由于文件管理中目录的检索是系统最频繁的处理工作,因此由于文件管理中目录的检索是系统最频繁的处理工作,因此UNXI系统系统 采用最简单和最简洁的目录文件格式无疑会大大提高对目录检索的速度。采用最简单和最简洁的目录文件格式无疑会大大提高对目录检索的速度。 大

38、大提高用户使用文件系统的效率。大大提高用户使用文件系统的效率。 3 UNIX3 UNIX文件系统动态管理文件系统动态管理 以上用于文件存储的数据结构描述了文件的静态信息,除此之外,还以上用于文件存储的数据结构描述了文件的静态信息,除此之外,还 有一些辅助的数据信息,以便系统进行动态管理和提高系统的运行效率。有一些辅助的数据信息,以便系统进行动态管理和提高系统的运行效率。 UNIX文件系统设立的动态数据结构有:文件系统设立的动态数据结构有: (1)内存超级块)内存超级块 在内存中给每个已被加载的文件系统的超级块划出一个特定的内存超级在内存中给每个已被加载的文件系统的超级块划出一个特定的内存超级

39、块。块。 (2)活动索引节点表)活动索引节点表 将被访问文件在磁盘中的索引节点复制到内存,内存中这部分信息保存将被访问文件在磁盘中的索引节点复制到内存,内存中这部分信息保存 着当前所有活动文件的索引节点表。着当前所有活动文件的索引节点表。 (3)用户打开文件表)用户打开文件表 记录并控制用户或进程打开文件个数及使用共享文件的情况。记录并控制用户或进程打开文件个数及使用共享文件的情况。 (4)系统打开表)系统打开表 整个系统中打开文件的情况。整个系统中打开文件的情况。 (5)安装表)安装表 记录系统中各个文件卷的安装情况。记录系统中各个文件卷的安装情况。 3 UNIX3 UNIX文件系统动态管理

40、文件系统动态管理 举例:一个进程打开两个文件的内核数据结构举例:一个进程打开两个文件的内核数据结构 用户打开文件表用户打开文件表 文件描述符文件描述符ptr 文件描述符文件描述符ptr Fd0: Fd1: Fd2: 进程表项进程表项 系统打开文件表系统打开文件表 打开文件表项打开文件表项 文件标识文件标识 当前文件位置当前文件位置 i节点指针节点指针 打开文件表项打开文件表项 文件标识文件标识 当前文件位置当前文件位置 i节点指针节点指针 活动索引节点表活动索引节点表 i节点号节点号 属性信息属性信息 i节点号节点号 属性信息属性信息 4 UNIX4 UNIX文件系统访问文件系统访问 任何一种

41、操作系统中,程序在开始读写一个文件的内容之前,必任何一种操作系统中,程序在开始读写一个文件的内容之前,必 须首先在程序与文件之间建立连接或通信通道,这一过程称为打开须首先在程序与文件之间建立连接或通信通道,这一过程称为打开 文件。打开一个文件的目的可以是为了读或者为了写,也可以是即文件。打开一个文件的目的可以是为了读或者为了写,也可以是即 读又写。读又写。 UNIX系统中有两种机制用于描述程序与文件的这种连接:系统中有两种机制用于描述程序与文件的这种连接: (1)文件描述符)文件描述符 (2)流)流 4 UNIX4 UNIX文件系统访问文件系统访问 1. 都是用来表示用户程序与被操作的文件之间

42、的连都是用来表示用户程序与被操作的文件之间的连 接,并在此连接的接,并在此连接的 基础上对文件进行读写等访问。基础上对文件进行读写等访问。 文件描述符文件描述符 和和 流:流:相同点:相同点: 2. 都能表示与普通文件,与设备(如终端),与管道都能表示与普通文件,与设备(如终端),与管道 或者套接字的连接,用户打开一个文件,要么返回文或者套接字的连接,用户打开一个文件,要么返回文 件描述符,要么返回一个流。件描述符,要么返回一个流。 3. 都包含了一大类的都包含了一大类的I/O库函数库函数 4 UNIX4 UNIX文件系统访问文件系统访问 文件描述符表示为文件描述符表示为int类型的对象。例如

43、标准输入对应文件描述符类型的对象。例如标准输入对应文件描述符0, 标准输出对应文件描述符标准输出对应文件描述符1。 而流则表示为指向结构而流则表示为指向结构FILE的指针的指针FILE* ,因此流也称为,因此流也称为“文件指针文件指针” 文件描述符文件描述符 和和 流:流:不同点:不同点: 如果需要对特定设备进行控制操作,必须使用文件描述符方式,没如果需要对特定设备进行控制操作,必须使用文件描述符方式,没 有函数能对流进行这类操作。有函数能对流进行这类操作。 如果需要按照特殊的方式进行如果需要按照特殊的方式进行I/O操作(例如非阻塞的方式),必操作(例如非阻塞的方式),必 须使用文件描述符方式

44、,也没有函数能对流进行这类操作。须使用文件描述符方式,也没有函数能对流进行这类操作。 4 UNIX4 UNIX文件系统访问文件系统访问 流给用户程序提供了更高一级的流给用户程序提供了更高一级的(功能更强大,使用更简化功能更强大,使用更简化)的的I/O接接 口,它处在文件描述符方式的上层,也就是说,流函数是通过文件口,它处在文件描述符方式的上层,也就是说,流函数是通过文件 描述符函数来实现的。描述符函数来实现的。 文件描述符文件描述符 和和 流的关系流的关系: 4 UNIX4 UNIX文件系统访问文件系统访问 执行实际输入输出操作的流函数集合比文件描述符函数要丰富很多,执行实际输入输出操作的流函

45、数集合比文件描述符函数要丰富很多, 而功能也灵活,强大不少。而功能也灵活,强大不少。 流流 相对于相对于 文件描述符文件描述符 的的 优点优点: 流函数有利于程序的移植,任何基于流函数有利于程序的移植,任何基于ANSI C的系统都支持流,文的系统都支持流,文 件描述符的支持则较弱件描述符的支持则较弱 文件描述符函数只提供简文件描述符函数只提供简 单的传送字符块的函数单的传送字符块的函数 流函数提供格式化流函数提供格式化I/O,字符,字符 I/O,面向行的面向行的I/O等大量函数等大量函数 4.1 4.1 低级输入低级输入/ /输出输出 (1) 文件描述符文件描述符 (2)文件创建和文件链接文件

46、创建和文件链接 (3)文件的打开和关闭文件的打开和关闭 (4)文件的读和写文件的读和写 (5 5)文件随机存取)文件随机存取 (6 6)文件记录锁定)文件记录锁定 (7 7)重复描述字)重复描述字 (8 8)文件控制)文件控制 (9 9)非阻塞)非阻塞I/OI/O 4.1 4.1 低级输入低级输入/ /输出输出 (1)文件描述符)文件描述符 在进行输入输出系统调用时,可用一个整数代表正在打开的文在进行输入输出系统调用时,可用一个整数代表正在打开的文 件,称为文件描述符,文件描述符与文件之间有一一对应的关系,件,称为文件描述符,文件描述符与文件之间有一一对应的关系, 可通过它进行文件的操作。进行

47、文件读写时,系统会自动打开三个可通过它进行文件的操作。进行文件读写时,系统会自动打开三个 标准文件描述符是标准文件描述符是0、1、2,代表标准输入流、标准输出流,标准,代表标准输入流、标准输出流,标准 错误流。可直接进行使用,建立新文件时,不要混乱使用已有的文错误流。可直接进行使用,建立新文件时,不要混乱使用已有的文 件描述符。件描述符。 4.1 4.1 低级输入低级输入/ /输出输出 (2)文件创建和文件链接文件创建和文件链接 (1)fdcreat(name,pmode) fd=3 出错为出错为1 fd=creat(“abc”,0777) (2) status=link(name1,name

48、2) 建立文件之间的连接建立文件之间的连接 (3) status=unlink(name) 删除连接删除连接 4.1 4.1 低级输入低级输入/ /输出输出 (3)文件的打开文件的打开 # include # include # include int open(const char* filename,int flags,mode_t mode); filename:指明要打开或创建的文件路径名;指明要打开或创建的文件路径名; flag:指明打开文件采取的动作;:指明打开文件采取的动作; 取值:取值:O_RDONLY(为只读而打开文件为只读而打开文件) ,O_WRONLY,O_RDWR,O_

49、APPEND(文件位置文件位置 移至文件尾,所有移至文件尾,所有write操作写数据至文件尾部)操作写数据至文件尾部) mode:指打开文件所限定的许可机制:指打开文件所限定的许可机制 open的正常返回值是一个非负整数(的正常返回值是一个非负整数(=3),即文件描述符,即文件描述符 4.1 4.1 低级输入低级输入/ /输出输出 (3)文件的关闭文件的关闭 # include int close (int filedes); 关闭文件有下述一系列动作:关闭文件有下述一系列动作: 1.释放文件描述字释放文件描述字filedes,此描述字可被进程后继调用的,此描述字可被进程后继调用的open返回

50、而再次使用。返回而再次使用。 2.释放进程在此文件上所占有的任何记录锁。释放进程在此文件上所占有的任何记录锁。 3.当与管道或当与管道或FIFO相联的所有文件描述字均被关闭时,任何还在管道或相联的所有文件描述字均被关闭时,任何还在管道或FIFO中的数据被中的数据被 释放。释放。 4. close的正常还回值是的正常还回值是0,出错为,出错为-1 4.1 4.1 低级输入低级输入/ /输出输出 (4)文件的读和写文件的读和写 # include ssize_t read(int filedes,void* buffer,size_t nbytes); read函数从已打开的、与文件描述字函数从已

51、打开的、与文件描述字filedes相连的文件中读至多相连的文件中读至多nbytes个个 字节的数据放到字节的数据放到buffer所指缓冲区中所指缓冲区中 。它的正常返回值是实际读入的字。它的正常返回值是实际读入的字 节数;如在实际读入字节之前便遇到文件尾,返回值为节数;如在实际读入字节之前便遇到文件尾,返回值为0;出错的情况下,;出错的情况下, 返回值为返回值为-1,并设置,并设置errno错误条件。错误条件。 4.1 4.1 低级输入低级输入/ /输出输出 (4)文件的读和写文件的读和写 # include ssize_t write(int filedes,const void* buff

52、er,size_t nbytes); write函数从函数从buffer写前写前nbytes个字节到与描述字个字节到与描述字filedes相连的文件。相连的文件。 它的返回值是实际写出的字节数,正常情况下它它的返回值是实际写出的字节数,正常情况下它=nbytes. 出错的情况下,返回值为出错的情况下,返回值为-1,并置,并置errno错误条件。错误条件。 4.1 4.1 低级输入低级输入/ /输出输出 示例示例1: 当输入下列命令时当输入下列命令时 $cp file1 file2 表示将文件表示将文件file1拷贝成拷贝成file2. main(argc,argv) int argc; cha

53、r *argv; int fd1,fd2,n; char buf512,ch=n; f(argc0) /*完成文件的拷贝过程完成文件的拷贝过程*/ write(fd2,buf,n); close(fd1); /*文件使用完毕要进行关闭文件使用完毕要进行关闭*/ close(fd2); 4.1 4.1 低级输入低级输入/ /输出输出 (5 5)文件随机存取)文件随机存取 # include # include off_t lseek(int filedes,off_t offset,int origin); long int tell(int fd) lseek函数:函数:filedes 已打开

54、的文件描述字已打开的文件描述字 offset 指明从指定位置开始的位移量指明从指定位置开始的位移量 origin 确定文件指针新位置的基准点。确定文件指针新位置的基准点。 取值可为取值可为SEEK_SET、 SEEK_CUR、SEEK_END。 lseek返回文件指针新位置相对文件开始的字节数。出错返回返回文件指针新位置相对文件开始的字节数。出错返回-1并并 设置设置errno。 tell函数:函数: 报告当前文件的指针位置报告当前文件的指针位置 4.1 4.1 低级输入低级输入/ /输出输出 示例示例2 2:下面用一个例子说明动态修改文件指针系统调用的方法:下面用一个例子说明动态修改文件指针

55、系统调用的方法 # #includestdioinclude.h #includeunistd#include.h char buf1=“the is test text”;char buf1=“the is test text”; char buf2=“12345”;char buf2=“12345”; main()main() int int fid;fid; if(fid=creat if(fid=creat(“Test”,0644)0) /(“Test”,0644)0) /* *创建一个文件创建一个文件* */ / printf(“creat printf(“creat file er

56、rorn”); file errorn”); exit(1); exit(1); else else if(write(fid,buf1,16)=-1) / if(write(fid,buf1,16)=-1) /* *向创建的文件中写信息,写入的信息是向创建的文件中写信息,写入的信息是 buf1 buf1中的随机值中的随机值* */ / printf printf(“buf1 write errorn”);(“buf1 write errorn”); exit(1); exit(1); 4.1 4.1 低级输入低级输入/ /输出输出 pose=tell(fid); / pose=tell(fi

57、d); /* *查询写操作后文件的指针位置查询写操作后文件的指针位置* */ / printf(“file postis printf(“file postis_1:%d”,post);_1:%d”,post); / /* *offset now=16offset now=16* */ / if(lseek if(lseek(fid,30,0)=-1) /(fid,30,0)=-1) /* *强行改变指针位置强行改变指针位置* */ / printf(“lseek printf(“lseek errorn”); errorn”); exit(2); exit(2); if(write(fid,

58、buf2,5)!=5) / if(write(fid,buf2,5)!=5) /* *再键入再键入5 5个字节个字节* */ / printf printf(“buf2 write errorn”);(“buf2 write errorn”); exit(3); exit(3); post=tell(fid); / post=tell(fid); /* *报告当前的文件指针位置报告当前的文件指针位置* */ / printf(“file postis printf(“file postis_2:%d”,post”);_2:%d”,post”); close(fid); close(fid);

59、exit(0); exit(0); 4.1 4.1 低级输入低级输入/ /输出输出 (6 6)文件记录锁定)文件记录锁定 # include # include int lockf(int filedes,int func,off_t size); filedes: 是将要锁定记录的文件描述符是将要锁定记录的文件描述符 size: 指将要锁定的字节数,从当前文件的指针位置算起指将要锁定的字节数,从当前文件的指针位置算起 func: 是规定进行锁定的类型,其定义如下:是规定进行锁定的类型,其定义如下: define F-uLock 0 /*开锁开锁*/ #define F-Lock 1 /*锁定

60、,若锁定了则进入睡眠锁定,若锁定了则进入睡眠*/ #define F-TLock 2 /*测试是否锁定,若已锁定返回测试是否锁定,若已锁定返回-1,若未锁定则锁定它,若未锁定则锁定它*/ #define F-TEST 3 /*测试是否锁定,若已锁定返回测试是否锁定,若已锁定返回-1,若未锁定返回,若未锁定返回0*/ 4.1 4.1 低级输入低级输入/ /输出输出 示例示例3:下面使用一个编程实例来说明记录锁定技术的使用方式,此程序的执行中,:下面使用一个编程实例来说明记录锁定技术的使用方式,此程序的执行中, 父子进程对同一文件进行记录锁定的操作。父子进程对同一文件进行记录锁定的操作。 #inc

温馨提示

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

评论

0/150

提交评论