第八章 文件系统 (File System )
教学目的,
计算机系统中使用的大量程序和数据都以文件形式存放在外存。操作系统中增加了文件管理功能即构成文件系统,
它负责管理在外存上的文件,并把对文件的存取共享和保护等手段提供给操作系统和用户,这不仅方便了用户,保证了文件的安全性,还或的效地提高系统资源的利用率。
教学要求:
掌握 文件和文件系统的定义,了解文件系统的类型,文件系统模型 和操作系统 (Windows98/NT,Linux )对多种文件系统的支持。
掌握文件的逻辑结构,熟悉五种 记录文件。
掌握文件控制块和多级目录结构,掌握 UNIX树型带勾连的目录结构和 可装卸文件系统,了解 Windows98 VFAT目录结构。 熟悉 目录查询技术,掌握内存的目录管理表,掌握文件操作与目录管理关系。
掌握基于索引节点的共享方式和利用符号连接的 文件 共享。
掌握 文件的存取控制,熟悉 分级安全管理,了解 文件的转储和恢复,了解 WindowsNT安全性 。
8.1 文件系统 概述所有的计算机应用程序都要存储、检索信息。
3个基本要求:存储大量信息 /长期保存信息 /可以共享信息。
解决方法,把信息以一种单元,即文件的形式存储在 磁盘或其它介质 上。文件通过 OS管理。包括:文件的结构、命名、存取、使用、保护和实现方法等。
2种观点:用户观点 -----文件系统如何呈现在其面前,一个文件如何组成,如何命名,如何保护文件,可进行何种操作等。
OS观点 -------文件目录怎样实现,怎样管理存储空间,文件存储位置,
磁盘实际运作方式(与设备管理的接口)等。
8.1 文件系统 概述
( 1) 文件和文件系统
1。 文件:
计算机系统对系统中软件资源:无论是程序或数据、系统软件或应用软件都以文件方式来管理。 文件是存贮在某种介质上的(如磁盘、磁带等)并具有文件名的一组有序信息的集合。 文件名是由字符和数字组成的,例如 MS-DOS中文件名由三部分组成,格 式 如下,[<盘符 >] <文件名 > [.扩展名 ]。
格式 [ ] 中是可以省略,盘符为存放 文 件的磁盘驱动器号,
如用 A:和 C:分别 表示软盘和硬盘驱动器;文件名由 1∽8 个字符组成。扩展名为由,,” 开始的 1-3个字符组成,如,EXE表示可执行的浮动代码文件,.TXT表示 ASCⅡ 码文本文件,.LIB
表示库文件,.BAT表示批处理文件等。
文件名
根据文件的定义,每个文件必须有一个唯一的文件名,
不论是系统管理,还是用户使用文件都使用文件名 。
文件名是一个有限长度的字符串 。
DOS,WINDOWS系统中文件名:
文件名 ·[文件扩展名 ]
文件名是一个不大于 8个字符的字符串,但 WINDOWS系
统中允许超长文件名,最多可有 256个字符,不区分英文
字母的大小写 。
文件扩展名:
不大于 3个字符,一般用来表示文件的类型 。
例如:
C C语言源程序文件
COM 可执行文件 ( 小模式 )
EXE 可执行文件 ( 大模式 )
BAT 批处理文件
OBJ 目标文件
hust.txt ll.c ll.obj ll.com ll.exe
操作系统教学片 OS8.ppt
UNIX系统中的文件名:
文件名是一个不大于 14个字符的字符串 。 并且区分英文字母的大小写 。
例如,unix linux ll.c a,out aa AA
注意:在 UNIX系统中文件名就是一个字符串,没有文件名和文件扩展名之分,文件的类型由用户命名时确定 。
例如,li.c,UNIX系统认为这个文件名的长度是 4个字符 。
而在 DOS,WINDOWS系统中则解释这个文件名,li是文件名,c是文件扩展名,表示该文件是一个 C语言的源程序文件,而 ·是文件名和文件扩展名的分隔符 。
2.与文件相关的概念
数据项( field)
数据项是描述一个对象的某些属性的字符集,它是数据的基本单位,一个数据项有一个值。
记录( record)
记录是一组相关数据项的集合,用于描述一个对象某方面的属性
文件( file)
文件是具有文件名的一组相关记录的集合
数据库( database)
数据库是相关数据的集合。
文件记录 1 记录 N……
数据项 1 …… 数据项 M
文件的分类教材讲了几种文件分类的方法,P228
下面介绍 UNIX系统文件分类方法:
1,普通文件普通文件是无结构的字符的集合 。
2,目录文件目录文件是由文件的目录项组成的文件 。
3,特别文件特别文件就是设备 。 (练习 )
3。 文件系统:
文件的属性文件属性反映文件的类型,存取控制,等
UNIX系统中文件属性:
- 普通文件
d 目录文件
p 管道文件
c 字符型设备文件
b 块设备文件
文件系统是操作系统中负责管理和存取文件信息的软件
机构,它是由管理文件所需的数据结构和相应的管理软
件以及访问文件的一组操作组成 。
从系统的角度看,从系统角度来看,文件系统是对文件存储器的存储空间进行组织,分配和回收,负责文件的存储,检索,共享和保护 。
从用户的角度看,文件系统是用户在计算机上存储信息
,和使用信息的接口 。 文件系统主要是实现,按名取存,,文件系统的用户只要知道所需文件的文件名,就可存取文件中的信息,而无需知道这些文件究竟存放在什么地方 。
3 文件系统
通用文件系统应具有以下功能:
1,提供用户对文件操作的命令;
2,提供用户共享文件的机制;
3,管理文件的存储介质;
4,提供文件的存取控制的机制,保障文件及文件系统的安全性;
5,提供文件及文件系统的备份和恢复功能;
6,提供对文件的加密和解密功能 。
4 文件操作
1)面向键盘的命令 ---COPY,DEL
2) 面向用户编程的若干系统调用命令组成,
READ(),WRITE(),OPEN()
5 文件系统模型文件系统接口逻辑文件系统基本 I/O 管理 程序 (文件组织模块)
基本 文件系统 (物理 I/ O 层 )
对对象操纵和管理的 软件 集合
I/ O 控制层 ( 设备驱动程序 )
对象及其属性说明
File System Software Architecture
Logical I/O
Pile Sequential IndexedSequential Indexed Hashed
Basic I/O Supervisor
Basic (Physical) File System
Disk Device Driver Tape Device Driver
User Program
Logical I/O
File Organization File Logical Structure
8.2 文件的逻辑结构文件的组织有两种:
文件的逻辑结构,
文件的逻辑结构是指用户思维中文件的结构。
文件的物理结构,
文件的物理结构是指文件在存储介质上的结构 ( 或称组织 ) 。 在当代,文件的存储介质是磁盘,包括软盘,硬盘和光盘,磁带,早期还有磁鼓 。 由于目前的磁带是模拟磁盘的结构,所以文件的物理结构主要是指磁盘上文件的结构 。
一,文件的逻辑结构文件的逻辑结构:
结构文件--记录式文件 。
无结构文件--流式文件
1,流式文件无结构的流式文件是相关的有序字符的集合 。 文件的长度为所含字符数 。
UNIX,DOS,WINDOWS系统中的普通文件都是流式文件 。 语言编程,以字符形式 ----行 -----流式文件中 。
8.2 文件的逻辑结构
2、记录式文件
记录式文件是一种结构式文件,文件是记录的集合,
每个记录由彼此相关的域构成。记录可按顺序编号为记录 1,记录
2,…,记录 n。 如果文件中所有记录的长度都相同,则这种文件为定长记录文件。
定长记录文件的长度 = 记录个数 x记录长度 。
变长记录文件的长度为各记录长度之和。
例如,学生登记表文件 xsdjb.dbf
姓名 学号 籍贯 通信地址 邮政编码
李铭 925678 武昌 武昌关山街 125号 430074
司马乐 925679 北京 北京海军路 88号 100034
8.2 文件的逻辑结构
3,两种文件的比较流式文件就象给一张白纸给用户,用户可将他的信息任意地写到纸上,没有任何格式上的限制。
记录式文件就象给一张表格给用户,用户要按表规定的格式填信息。
记录文件有顺序、索引、索引顺序、直接、分区和堆文件几种。
8.2 文件的逻辑结构文件的 逻辑结构 -1
1,顺序文件 (Sequential File):
顺序文件的记录定长,记录中的数据项的类型长度与次序固定,一般还有一个可以唯一标识记录的数据项,称为键
( key),记录按键值的约定次序组织。顺序文件常用于批处理应用,对于查询或更新某个记录的请求的处理性能不佳。
2,索引文件 (Indexed File),索引文件对主文件中的记录按需要的数据项(一个或几个)建索引表。这时记录可为不定长的,它为每个记录设置一个表项。索引文件本身是顺序文件组织。
3,索引顺序文件 (Indexed Sequential File),索引顺序文件是基于键的约定次序组织的,为之建立一张索引表,为每个不同键值的记录组的第一个记录设置一个表项,为该组的其它记录设置了溢出区域,在溢出区域内记录按顺序文件方式组织。它是顺序文件和索引文件的结合。索引顺序文件既适用于交互方式应用,也适用于批处理方式应用。
(2)文件系统的类型
FAT文件系统( MS-DOS文件系统,msdos)
它是 MS-DOS操作系统使用的文件系统,它也能由
Windows98/NT,linux,SCO UNIX等操作系统访问。
文件地址以 FAT表结构存放,文件目录 32B,文件名为 8个基本名加上一个,,” 和 3个字符扩展名。
NTFS( NT文件系统)
它是 Windows NT操作系统使用的文件系统,它具有很强的安全特性和文件系统恢复功能,可以处理巨大的存储媒体,支持多种文件系统。
8.3文件的目录管理信息集合 ---------文件名,用户创建文件到外存“安营扎寨”
之后,如何满足用户“按名存取”,用户只提供文件名,
文件名文件 在外存的物理地址。
目录管理的目标 按名存取提高对文件的存取速度(合理安排目录)
文件共享允许文件重名文件目录完成
8.3文件的目录管理
8.3.1文件控制块 FCB和索引结点为了实现,按名存取,,系统必须为每个文件设置用于描述和控制文件的数据结构,它至少要包括文件名和存放文件的盘物理地址,这个数据结构称为 文件控制块 FCB,文件控制块的有序集合称为文件目录,即一个文件控制块 FCB就是一个文件目录项。 FCB是 OS为管理文件而设置的数据结构,存放了为管理文件所需的所有有关信息。是文件存在的标志,与文件一一对一,文件控制块 FCB
1、基本信息类
,文件名:标识一个文件的符号名,在每个系统中文件必须具有唯一的名字。
,文件的物理地址:这由于文件的物理结构不同 而 不同。对于连续文件就是文件的起始块号和文件总块数;对于 MS- DOS是文件的起始簇号和文件总字节数;对于 UNIX S V是文件所在设备的设备号,13个地址项、文件长度和文件块数等。
.文件逻辑结构
.文件物理结构文件控制块 FCB
2.存取控制信息类文件的存取权限,象 UNIX用户分成文件主、同组用户和一般用户三类,这三类用户的读写执行( RWX)
的权限。
3.使用信息类文件建立日期、最后一次修改日期、最后一次访问的日期;当前使用的信息:打开文件的进程数,
在文件上的等待队列等。
文件控制块的信息因 OS而不同,
二、索引结点如上所述,一个 FCB就是一个文件目录项,若外存中含有多个文件,多个文件又分别对应了不同的 FCB,即都有各自的目录项。这些目录项又组成了一个文件,称为 目录文件 。目录文件位于外存,文件多,目录项也多,所以目录文件很大,占用空间盘块( 521B-4KB) 大。由文件名 +文件描述信息一起构成目录项时,一个目录项占一定字节数。
文件控制块 FCB
查找目录过程:
( 1)存目录文件的第一个盘块的目录项 —内存。(每个盘块含若干个目录项)
( 2)用户给出文件名与目录项中文件名逐一比较,若未找到,再调下一个盘块中的目录项。
设一个 FCB为 64字节,一个盘块为 1KB,则每个盘块存放 16个 FCB,若一个目录文件含有 3200个 目录项( FCB),需占用 200个 盘块。因此,找一个文件平均启动磁盘( 200+1) /2次。效率低。
其实在查找目录 /文件过程中,只用到文件名,其它描述信息并不用到。所以在 UNIX中,把文件名和 文件描述信息 分开。
目录项 文件名
I 结点的对应指针一个目录项所占字节数大大减少,占 16字节 ( 14字节文件名,2字节指针),
1KB盘块可存 64个 FCB,3200个 FCB占 50个 盘块,平均启动磁盘 ( 50+1) /2次 。
文件控制块 FCB
索引结点,I 结点
1 磁盘索引结点(特指存放在外存上的索引结点)
文件控制块 FCB
UNIX系统中,一个文件存在要占用如下资源,至少占用一个文件目录项; 仅占用一磁盘 I节点; 占用一个或多个磁盘块 ( 物理块 ) 。
文件名 索引结点编号
file1
file2
……
……
2 内存索引结点(特指存放在内存上的索引结点)
UNIX把某个文件打开后,
找到目录项 —文件名 —索引结点 —COPY到内存的索引结点。
?对文件快速操作。
关闭时,再把内存索引结点 COPY到外存。
文件控制块 FCB
活动 I节点
i_flag打开文件的标志
ILOCK,锁位
IUPD,修改标志
IMOUNT,安装点
IWANT,有进程等待
ITEXT,纯正文段
i_count:访问计数
i_dev:文件所在设备号
i_number:I节点号
8.3.2 目录结构--多级目录目录结构的组织关系到文件系统的存取速度,关系到文件共享性和安全性,因此组织好文件的目录是设计文件系统的重要环节。
1。单级目录结构最简单的目录结构是在整个文件系统中只建立一张目录表,
每个文件占一个表目,这称为单级目录。单级目录结构简单,
能实现目录管理的基本功能 --按名存取,但存在查找速度慢,
不允许重名和不便于实现文件共享等缺点,因此它只适用于单用户环境。
8.3.2 目录结构--多级目录
2 两级目录结构主文件目录 MFD
用户文件目录 UFD
优点,( 1)提高检索速度,用户数 N+每个用户文件数 M。 而单级目录为 N*M。
( 2) 可重名。不同用户目录中,可使用相同文件名。如
Test,内容可以不一样,但名字相同。
( 3)对同一共享文件,不同用户可使用不同文件名访问。
缺点:多个用户被隔开,不利于协作开发。
用户名 指向字目录指针
Wang
Zhang
Gao
文件名 指针
Alpha,
Test,
Wang 用户目录
Report,
Test,
Zhang 用户目录
Alpha
Test
Test
Report
每个用户的文件各占一个目录项目录结构--多级目录 -1
2。 多级目录结构
重名问题,在多级目录中存取一个文件需要用文件全名,这就允许用户在自己的目录中使用与其它用户文件相同的文件名,由于各用户使用不同的目录,虽二者使用了相同的文件名,但它们的文件全名仍不相同,这就解决了重名问题。
目录文件:由文件的目录项组成的文件称为目录文件 。
系统中有一个根目录 ( 或根目录文件 ),在这个目录中可登记一般文件,也可以登记目录文件,在每个目录文件中可以登记一般文件,也可以登记目录文件 。
根据这个递归定义就形成了一个倒立的树的结构 。 对于一棵树,
它有一个树根 ( 只有一个,根目录 ),在树根上可以长树叶
( 一般文件 ),也可以长树枝 ( 子目录文件 ) ;对于每个树技又可以长树枝,也可以长树叶 。
路径名,
一个文件的路径名是由 根 目录到该文件的通路上所有目录文件名和该文件的符号名组成的 。
DOS WINDOWS系统中文件路径名
\A\R\T \B\IU\I
\D \B\P
UNIX系统中文件路径名
/A/R/T /B/IU/I
/D /B/P
目录结构--多级目录 -2
目录结构--多级目录 -3
bin usrr mnt etc tmp devboo
t
uni
x
ls who
hd
l
moun
t
Tmp00l
tty0lspoolinclude sys bin lib
dc
h io conf
dir.h libio.
h
Tab.c
ma
n
a.out.h
目录结构--多级目录 -4
采用多级目录结构也提高了检索目录的速度,如采用单级目录则查找一个文件最多需查遍系统所有文件名,平均也要查一半文件名。而多级目录查找一个文件最多只要查遍文件路径上各目录的子目录和文件,例如上图中要查找文件 man,
只要查遍 root目录,usr目录和 lib目录所在子目录和文件就可以。
相对路径,每访问一个文件都要使用从根目录开始搜索直到树叶的数据文件为止,包含各中间子目录的全路径名是相当麻烦的,同时由于一个进程运行时访问的文件大多局限在某个范围,基于这一点,可为每个用户(或每个进程)设置一个,当前目录,,又称,工作目录,。进程对各文件的访问都相对于,工作目录,而设置路径,这称为相对路径,用相对路径可缩短搜索路径,提高搜索速度。
(练习 )
8.3.4 目录管理
1,目录查询技术文件按名存取的步骤:
( 1)首先用户给系统提供文件名,对文件目录进行查询,找出该文件的文件控制块 FCB,对 UNIX系统 ---索引节点。一个表项不符合再找下一个表项直到找到为止。
( 2)由 FCB (对 UNIX系统即是索引节点 ) 中所记录的文件物理地址,并根据文件物理组织方式找出文件的盘块号?文件在磁盘上的物理位置(柱面号、磁头号、扇区号)。
( 3)最后启动磁盘驱动程序,将所需文件读入内存。
对目录查询的技术有两种:线性检索法和 Hash法。这里介绍
UNIX中使用的线性检索法,又称为顺序检索法。针对单级目录和 多级目录 。
目录查询技术下面以在 P243图 8-11所示 UNIX目录中查找用户给定文件路径 usr/ast/mbox为例介绍线性检索法。
1、首先系统读入根索引节点(其索引节点号为 1),从文件地址项查找根目录文件所在物理块号读入内存。同时从用户提供的文件名中读入第一个文件分量
usr,用它与根目录文件中各个目录项的文件名顺序地进行比较,从中找到匹配号,得到匹配项的索引节点号为 6。再从 6号结点知 usr目录文件放在第 132
号盘块中。将 132号盘块读入内存。
2、系统再把用户提供的第二个文件分量 ast读入,用它与放在第 132号盘块中第二级目录文件中各个目录项的文件名顺序地进行比较,从中找到匹配号,得到匹配项的索引节点号为 26。再从 26号结点知 usr/ast目录文件放在第 406号盘块中。将 406号盘块读入内存。
3、系统把用户提供的第三个文件分量名 mbox读入,用它与 406号盘块中第三级目录文件中各个目录项的文件名顺序地进行比较,从中找出匹配号?60号 I结点 。尔后,将磁盘第 60号节点读入内存,从中找出 mbox文件所在的物理块号。
目录查询操作到此结束,如果顺序查找过程中发现一个文件分量名未能找到,
则仃止查找并送回,文件未找到,信息。 (可画图 )
(练习 4)
目录管理
2。 内存的目录管理表目录查询必须通过在磁盘上反复搜索来完成,这要化费不少次的盘块 I/O,这样大大浪费了 CPU处理时间,降低了处理速度。为了减轻盘 I/O负担,采用把当前使用的文件目录表目复制到内存,这样只要第一次使用某个目录表目时需要盘 I/O来完成读入内存,以后使用该目录表目只要在内存中进行,不需再进行盘块 I/O,提高了处理速度,由于只把正在使用的目录复制到内存而不是全部目录读入内存,所以内存目录所占容量也不大。
目录管理
3。文件操作与目录管理关系为了让用户灵活方便和有效地使用文件,文件系统提供许多有关文件的系统调用,即文件操作供用户使用。文件系统提供的常用系统调用有,建立,
( create) 文件,,打开,( open),“写,
( write) 文件,,读,( read) 文件,,关闭,
( close) 文件,,删除,( delete) 文件等。
8.4文件共享
1 绕弯路法
2 连访法
3 利用基本文件目录实现共享
( 1)系统中设一个基本目录,每个文件在该目录中占一个目录项。
( 2)每个用户有一个符号文件目录。符号名不同,但 ID相同。
4 基于索引节点的共享方式( 文件硬连接 )
8.4文件共享树形结构中,在建立连接时,
A用户建立文件,B用户想共享该文件,必须把文件的物理地址等信息 COPY到
B的目录中,无法同时修改,增删 。 因此,引入索引结点,把文件名和文件描述信息分开 。 如右图所示 。
file1,
A用户目录
file1
.
B 用户目录
.
文件用户 A 用户 B
Owner=A
Count=2
文件物理地址索引结点
test
优点,file1的盘块,长度的增加变化,用户 A,B都可见 。
缺点,不利于文件主删除它拥有的文件 。
文件共享
5 利用符号链实现文件共享( UNIX中的链接 LINK)
采用二个文件目录表目指向同一个索引节点的连接称为 文件硬 链 接,文件硬连接不利于文件主删除它拥有的文件,因为文件主要删除它拥有的共享文件,必须首先删除
(关闭)所有的硬连接,否则就会造成共享该文件的用户的目录表目指针悬空。而且得付出不必要的花销。
为此又提出另一种 链 接方法-- 符号链接 。系统为共享的用户创建一个 link类型的新文件,将这新文件登录在该用户共享目录项中,这个 link型文件包含 链 接文件的路径名。例如:
用户 A创建文件 file1,为文件 file1的文件主;
用户 B欲共享,则系统创建一个 link类型的新文件 file2
( 其内容只包含共享 文件 file1 的路径名 )
符号链利用符号链接
file1,
A用户目录
file2
.
B 用户目录
.
Owner=A File1的内容
Owner=B File2的内容
Usr/A/file1
File1的索引结点
File2的索引结点
usr ……
B A
… file1
file2 file6…
link类型的新文件结果,A通过文件名 file1访问 file1;
B通过文件名 file2访问 file1;
利用符号链接符号链接的优点,
1) B通过文件路径名实现共享,不是通过指向索引结点的指针,所以不会造成 A删了 file1之后用户 B的索引指针悬空。 A删了
file1之后,因系统找不到该文件,则 A把符号链删掉。
2)采用符号 链 接可以跨越文件系统,甚至可以通过计算机网络 链接到世界上任何地方的机器中的文件,此时只需提供该文件所在的地址,以及在该机器中的文件路径。
符号链接的缺点:
1) 其它用户读取符号 链 接的共享文件比读取硬 链 接的共享文件需要增多读盘操作。因为其它用户去读符号 链 接的共享文件时,
系统中根据给定的文件路径名,逐个分量地去查找目录,通过多次读盘操作才能找到该文件的索引节点,而用硬 链 接的共享文件的目录文件表目中已包括了共享文件的索引节点号。
2)符号链 file2实际上是一个文件,亦有索引结点,系统开销增大。
3)每个共享文件具有 若干个文件名,换言之,每增加一条链路,
就增加一个文件名。遍历整个文件系统时,会多次遍历到该共享文件。