2.6文件管理文件的基本概念1文件的组织结构2文件的目录3文件的共享、保护和加密4文件存储空间的管理5文件的操作62.6.1文件的基本概念文件:具有文件名的一组相关信息的集合,是信息组织的一种通用形式。操作系统中管理文件的机构,提供文件存储和访问等功能。文件系统:文件名:由一串字符构成,用户利用文件名来访问文件。文件的属性除文件的具体内容外,还需关心:文件类型文件长度文件的物理位置文件的存取控制文件建立的时间文件的分类按用途:系统文件、用户文件、库文件按文件保护级别:不保护、执行权限、只读或只写权限按文件中的数据形式:文本文件、图像文件、音视频文件等按访问方式:顺序存取文件、随机存取文件按物理结构:连续式文件、链式文件、索引文件按逻辑结构:记录式文件、流式文件文件系统的功能文件的物理组织——(磁盘)存储空间管理文件的逻辑组织——文件信息的组织方式文件名到外存空间的映射——文件目录文件操作的实现文件的共享和保护2.6.2文件的组织逻辑组织物理组织一、文件的逻辑组织从用户的角度,研究文件的抽象形式从实现的角度,研究文件的存放形式无结构文件(字符流式)有结构文件(记录式)定长记录可变记录二、文件的物理组织文件在物理存储空间上的存放、分配和组织方式。连续结构链接结构索引结构要求连续的存放空间,适合顺序存取设备离散存放,逻辑上的先后关系在物理块上用链表实现,不能随机存取离散存放,逻辑上的先后关系通过另外建立的索引文件来实现,通过索引文件来访问文件的实际存取内容。可以随机访问。一、目录管理功能1、基本功能:按名存取提供文件名到文件在外存中物理位置的映射2、提高检索速度合理组织目录结构,加快检索速度3、文件共享和文件重名不同名字访问同一文件——共享相同名字访问不同文件——重名2.6.3文件目录二、文件控制块(FCB)FCB——用来描述一个文件的文件名、物理位置及其它说明与控制信息的数据结构。文件控制块(FCB)包含的内容:文件名、文件类型、物理位置、长度、逻辑结构、物理结构、存取权限、日期时间等相关信息。目录是以文件控制块为元素的数据结构,决定了文件控制块的组织方式。根据文件名与其存放地址的对照表进行文件的检索。三、目录结构目录的组织结构——设计目标是提高检索效率。一级目录:整个目录组织是一个线性结构,系统中的所有文件都建立在一张目录表中。它主要用于单用户操作系统。它具有如下的特点:–结构简单;–文件多时,目录检索时间长;–有命名冲突:如重名(多个文件有相同的文件名)或别名(一个文件有多个不同的文件名);–不便于文件共享。二级目录:在根目录下,每个用户对应一个目录(第二级目录);在用户目录下是该用户的文件,而不再有下级目录。适用于多用户系统,各用户可有自己的专用目录。多级目录:或称为树型目录在文件数较多时,便于系统和用户将文件分散管理。适用于较大的文件系统管理。但目录级别太多时,会增加路径检索时间。目录树:根结点——根目录、中间结点——各级子目录、叶子结点——文件。目录的上下级关系:当前目录(currentdirectory,workingdirectory)、父目录(parentdirectory)、子目录(subdirectory)、根目录(rootdirectory)等;路径(path):目录名的序列*绝对路径:从根目录开始,到达最终目的地所经过的目录名序列;*相对路径:从当前目录开始,到达最终目的地所经过的目录名序列文件重名*不同目录下的文件可以重名*文件路径+文件名可以唯一标识文件ABC根目录EPABDFEDBGAEHIJKABCDELMNA多级目录组织2.6.4文件的共享和保护共享的方式:利用索引结点指定路径方式:多个用户通过相同的路径访问同一文件;共享:一个文件可以让多个用户共同使用。符号链接方式:建立到另一个目录或文件路径的符号链文件。例如:快捷方式、URL超级链接等。一、文件的共享指定路径例:ABFCDE用户1在C目录下z.txt用户2在E目录下用户1访问z.txt文件使用..\..\F\z.txt路径用户2访问z.txt文件使用..\z.txt路径二、文件的保护存取控制表每个文件设置一张存取控制表,为每类用户规定存取权限口令–登陆口令–访问口令密码分级安全管理:网络级系统级用户级目录级文件级网络访问权限设置用户注册、登录控制用户对文件的访问权限每个目录允许用户的访问权限每个文件允许用户的操作权限windows用户级保护Windows网络级目录级保护三、文件的访问权限文件访问类型:–读read:可读出文件内容;–写write(修改update或添加append):可把数据写入文件;–执行execute:可由系统读出文件内容,作为代码执行;–删除delete:可删除文件;–修改访问权限:修改文件属主或访问权限。用户范围类型:–指定用户–用户组–任意用户访问类型和用户范围的组合:–访问矩阵–访问策略2.6.5文件存储空间的管理1.新创建文件的存储空间(文件长度)分配方式:-预分配:创建文件时一次分配指定的存储空间,如文件复制时的目标文件。-动态分配:需要存储空间时才分配(创建时无法确定文件长度),如写入数据到文件。2.文件存储单位:簇(cluster)文件的存储空间通常由多个簇(物理块)组成,每个簇包含若干个连续的扇区(sector)。3.磁盘分区(partition):通常把一个物理磁盘的存储空间划分为几个相互独立的部分,称为“分区”。4.文件卷(volume):或称为“逻辑驱动器”。在同一个文件卷中使用同一份管理数据进行文件分配和外存空闲空间管理,而在不同的文件卷中使用相互独立的管理数据。5.格式化(format):在一个文件卷上建立文件系统。6.外存空闲空间管理外存空闲空间管理的数据结构通常称为磁盘分配表(DAT),分配的基本单位是物理块。空闲空间的管理方法有:位图:每一位表示一个物理块,取值0和1分别表示空闲和占用。空闲块链接:每个空闲物理块中有指向下一个空闲物理块的指针,所有空闲块构成一个链表。不需要磁盘分配表,节省空间。每次申请空闲块只需取出链表开头的空闲块即可。空闲文件目录:建立一个空闲文件目录表,每个表项记录一个空闲文件的起始块号和大小。2.6.6文件的操作打开open:为文件读写所进行的准备。给出文件路径,获得文件句柄,或文件描述符。将该文件的目录项读入到内存中。关闭close:释放文件描述符,把该文件在内存缓冲区的内容更新到外存上。复制文件句柄dup:用于子进程与父进程间的文件共享,复制前后的文件句柄有相同的文件名、文件指针和访问权限。读read、写write和移动文件读写指针lseek:系统为每个打开文件维护一个读写指针,它是相对于文件开头的偏移地址。读写指针指向每次文件读写的开始位置,在每次读写完成后,读写指针按照读写的数据量自动后移相应数值。执行exec:执行一个可执行文件。创建(create):获得新文件的文件句柄。删除unlink:对于符号链接和硬链接,删除效果是不同的。获取文件属性(stat和fstat):参数为文件名或文件句柄。修改文件名rename;修改文件属主chown;修改访问权限chmod;文件别名控制:创建链接、读链接路径readlink等。作业文件目录的主要作用是什么?使用当前目录的好处是什么?MSDOS的FAT文件系统多级目录,不支持文件别名,无用户访问权限控制。磁盘文件卷结构FAT1FAT2RootDirectoryData(File&Directory)BootRecordVolumeStructureinMSDOSSector#0N12NFAT表:两个镜像,互为备份。文件卷中的每个簇均对应一个FAT表项,文件分配采用链式分配方法。每个FAT表项所占位数是簇编号的位数,其值(以FAT16为例):–0:表示该簇空闲–FF7h:物理坏扇区–FF8h-FFFh:表示该簇是文件的最后一个簇–其他值:表示该簇被文件占用,而且表项中的值是文件下一个簇的编号。目录:是目录项的顺序文件(即大小相同的排序记录序列),不对目录项排序。–每个目录项大小为32字节,其内容包括:文件名(8+3个字符),属性(包括文件、子目录和文件卷标识),最后一次修改时间和日期,文件长度,第一个簇的编号。–在目录项中,若第一个字节为E5h,则表示空目录项;若为05h,则表示文件名的第一个字符为E5h。–文件名不区分大小写823h800h...FAT850h823h...800hFF8h850h...DirEntryFile1...Windows2000的文件系统NTFS为改进的多级目录结构,支持文件别名(符号链接方式);NTFS文件由多个文件属性构成,每个属性由属性名和属性流组成;用户可自定义属性;NTFS支持用户权限管理:–有5种权限划分:读、写、运行、删除和修改权限;–支持按用户、用户组分配权限;NTFS文件支持数据压缩功能;NTFS卷结构支持容错功能;NTFS支持文件操作日志功能;NTFS支持文件加密功能;NTFS支持用户空间限制功能;Windows2000的文件系统结构与文件系统相关的数据结构NTFS卷结构NTFS的结构以卷为单位,卷与磁盘分区相关;卷由一组文件和未分配空间组成;NTFS以簇为基本硬盘分配单位,簇的大小为物理扇区的整数倍,通常为2K倍;NTFS卷上的所有数据(包括用于引导、定位、空间分配等文件系统管理数据)都以文件的形式保存;文件引用号:在主文件表中每个文件记录有一个64位的文件引用号;它由文件号和顺序号组成:–文件号(48位:47-0)是文件在主文件表中的位置序号–顺序号(16位:63-48)在每次重复使用该文件记录时加1NTFS的元文件主文件表($MFT):文件记录数组,每个记录为1KB;每个文件对应一个或多个文件记录;它是主文件表中的主文件表记录;主文件表副本($MFTMirr):是主文件表中前几项的副本,用于在主文件表不能读取时的元文件定位;卷结构日志($LogFile):记录所有影响NTFS卷结构的操作,用于系统失败后的卷恢复;空间分配位图($Bitmap):标识卷中每个簇的分配状态,即:空闲和已被分配;引导文件($Boot):引导程序代码;坏簇文件($BadClus):记录卷中据有损坏位置;卷文件($Volume):卷名、文件系统版本、卷状态(卷是否被损坏);属性定义表($AttrDef):卷中支持的属性类型列表;UNIX的文件系统改进的多级文件目录,可以建立文件别名(索引结点方式和符号链接方式),有用户访问权限控制(文件的读R、写W和执行X,相应于目录的检索文件、增删文件和进入目录);文件类型:常规文件(ordinaryfile)、目录文件(directory)、特殊文件(specialfile)如外设、先进先出文件(FIFO)如命名管道;磁盘空闲块采用成组链接法,把链表和索引相结合。每一组50块,用索引表表示;各组间通过链表指针串在一起,构成链表。磁盘文件卷结构超级块:描述文件系统的状态,包括磁盘空闲块栈,空闲i结点栈索引节点(inodelist):存放文件说明信息,每项64字节目录文件:每个目录项16字节。文件名区分大小写。文件分配:直接索引,一级、二级、三级间接索引inodeTableData(File&Directory)BootRecordVolumeStructureinUNIXSector#01SuperBlock41350187SuperBlockcount50040400351......049count50450401...049count460......045count#350#400LastOne...空闲块成组链接