您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 电子商务 > 文件系统模拟实验(C-实验教材)
文件系统实验1.1实验目的和要求11..11..11实验目的通常把文件与管理信息资源的管理程序的集合称为文件系统,它是操作系统中负责存取和管理信息资源的模块,采用统一的方法管理用户信息和系统信息的存储、检索、更新、共享和保护,并为用户提供一套行之有效的文件使用及操作方法。本实验利用高级语言编写程序模拟文件系统,了解文件系统的基本结构和文件的各种操作方法,加深理解文件系统的内部功能及内部实现,从而帮助学生对各种文件操作命令的实质内容和执行过程有比较深入的了解。11..11..22实验要求1.采用高级语言编写程序模拟文件系统,文件系统采用多级目录结构,实现对文件和目录的创建、删除、重命名、变更权限、显示文件内容、修改文件内容等操作。2.撰写实验报告,报告应包含以下内容:(1)实验目的;(2)实验内容;(3)设计思路;(4)程序流程图;(5)程序中主要数据结构和函数说明;(6)带注释的源程序代码;(7)程序运行结果及分析(8)实验收获与体会1.2预备知识11..22..11文件和文件系统1.文件概念现代计算机系统中都配置了外存,大量的程序和数据以文件的形式存放在外存。如果由用户直接管理文件,不仅要求用户熟悉外存特性,了解各种文件的属性,以及它们在外存上的位置,而且多用户环境下还必须能保持数据的安全性和一致性,这是用户不能胜任的。因而,现代操作系统中都配备文件系统,以适应系统资源管理和用户使用信息的需要。文件是指由创建者所定义的、具有文件名的一组相关元素的集合。用户通过文件名就可对文件进行访问,文件名是由字母或数字组成的字母或数字串,其格式和长度都因系统而异。操作系统提供文件系统的优点有:(1)便于用户使用。(2)文件安全可靠。(3)系统能有效利用存储空间,优化安排不同属主文件的位置。(4)文件系统还能提供文件共享功能。2.文件命名在不同的操作系统中对文件名的规定有所不同,文件名的格式和长度因系统而异。一般来说,文件名由文件名和扩展名两部分组成,前者用于标识文件,后者用于区分文件类型,中间用“.”分割开来,它们都是字母或数字所组成的字母数字串。早期文件名的长度仅限1~8个字符,现在文件名最长可达255个字符。扩展名是添加在文件名后面的若干个附加字符,又称为后缀名,用于只是文件类型。例如,.txt指明纯文本文件,.exe表示可执行二进制代码文件,.obj表示编译或汇编生成的目标文件。3.文件类型为便于管理和控制文件,将文件分为多种类型,下面是几种常用的文件分类方法。(1)按用途分类:系统文件,库文件,用户文件。(2)按存取控制属性分类:只读文件,读写文件,不保护文件。(3)按信息流向:输入文件,输出文件,输入输出文件。(4)按文件中数据的形式分类:源文件,目标文件,可执行文件。4.文件属性文件属性是指操作系统为文件配置的控制和管理信息,其目的是为方便系统和用户对文件的管理和使用,这组属性包括以下内容。(1)文件基本属性:文件名和扩展名、文件属性ID,文件所属组ID等。(2)文件类型属性:如普通文件、目录文件、系统文件、隐藏文件、设备文件等。也可按文件信息分为ASCII码文件、二进制码文件等。(3)文件保护属性:规定谁能够访问文件,以何种方式访问。常用的文件访问方式有可读、可写、可执行、可更新、可删除等;有的系统还为文件设置口令用作保护。(4)文件管理属性:如文件创建时间、最后访问时间、最后修改时间等。(5)文件控制属性:文件逻辑结构信息,如:记录键、记录类型、记录个数、记录长度、成组因子数等;文件物理结构信息,如:文件所在设备名、物理设备类型、记录存放的盘块号或文件信息首选盘块号,也可指出文件索引的位置等。5.文件存取方法存取方法是指读写文件存储器上的物理记录的方法,由于文件类型不同,用户使用的要求也不同,因而需要操作系统提供多种存取方法来满足用户要求。常用的存取方法如下:(1)顺序存取。无论是无结构字节流文件还是有结构记录式文件,存取操作都在上次操作的基础上进行。顺序存取主要用于磁带文件,但也适用于磁盘上的顺序文件。(2)直接存取。又称随机存取,可以非顺序的从文件中的任何位置存取文件内容。它通常用于磁盘文件。(3)索引存取。这是基于索引文件的存取方法,由于文件中的记录不按位置而是按其记录名或记录键来编址,所以用户提供记录名或记录键之后,先按名搜索,再查找所需要的记录。在实际系统中,大都采用多级索引以加速记录的查找过程。6.文件系统文件系统是操作系统中负责管理和存取文件的程序模块。它是由管理文件所需的数据结构和相应的管理软件以及访问文件的一组操作所组成。11..22..22文件目录为了对文件实施有效的管理,必须对它们加以妥善组织,这主要是通过文件目录实现的。对目录管理的要求如下:(1)实现“按名存取”(2)提高对目录的检索速度。(3)实现文件共享(4)允许文件重名1.文件控制块文件控制块(FileControlBlock,FCB)是操作系统为每个文件建立的唯一数据结构,其中包括了全部文件属性,其目的是为了方便操作系统对文件的管理、控制和存取。于是一个文件有两部分组成:FCB和文件体(文件信息)。有了FCB就可以方便的实现文件的按名存取。每当创建一个文件时,系统就要为其建立一个FCB,用来记录文件的属性信息;每当存取文件时,先找到其FCB,再找到文件信息盘块号、首块物理位置或索引表就能存取文件信息。2.一级目录结构目录结构的组织关系到文件系统的存取速度,也关系到文件的共享性和安全性。因此组织好文件的目录,是设计好文件系统的重要环节。最简单的文件目录是一级目录结构,所有FCB排列在一张线性表中。一级目录的优点是简单,但它只能实现目录管理中最基本的按名存取功能,文件重名和文件共享问题难以解决。3.两级目录结构两级目录结构将文件目录分成主文件目录和用户文件目录两级。系统为每个用户建立一个用户文件目录(UFD),每个用户的文件目录登记了该用户建立的所有文件名及其属性信息。主目录(MFD)则登记了进入系统的各个用户文件目录的情况,每个用户占一个表目,说明该用户目录的属性,包括用户名、目录大小、组织形式及其所在的位置等。两级目录结构提高了目录检索的速度;允许不同的用户目录中使用相同的文件名;不同用户也可以使用不同的文件名或相同的文件名来访问系统中的同一个共享文件。两级目录结构虽然比较简单实用,但缺乏灵活性,特别是难以反映现实世界的多层次关系。4.多级树形目录结构在现代操作系统中,所有文件系统都支持多级目录结构,根目录是唯一的,每一级目录可以是下一级目录的说明,也可以是文件的说明,从而形成树状目录结构。如图8.1是Linux目录层次结构,它是一棵倒置的有根树,树根是根目录,从根向下,每个树枝是子目录,而树叶是文件。树状多级目录结构有许多优点,可以较好地反映现实世界中具有层次关系的数据结合,确切地反映系统内部文件的分支结构;不同文件可以重名,只要它们不位于同一末端子目录中即可;易于规定不同层次或子目录中文件的不同存取权限,便于文件的保护、保密和共享等,有利于系统的维护和查找。图8.1Linux目录层次结构11..22..33文件结构在系统中的所有文件都存在着以下两种形式的文件结构:(1)文件的逻辑结构。这是从用户观点出发所观察到的文件组织形式,即文件是由一系列的逻辑记录组成的,是用户可以直接处理的数据及其结构,它独立于文件的物理特性。(2)文件的物理结构。这是指系统将文件存储在外存上所形成的一种存储组织形式,是用户不能看见的。文件的物理结构不仅与存储介质的存储性能有关,而且与所采用的外存分配方式有关。1.文件逻辑结构文件的逻辑结构分为两种形式:流式文件和记录式文件。(1)流式文件这是一种无结构的文件,文件内的数据不再组成纪录,只是一串顺序的信息集合,称为字节流文件。流式文件中的每个字节都有一个索引,第一个字节的索引为0,第二个字节的索引为1……打开文件的进程使用文件读写指针来访问文件中的特定字节。当文件打开时,文件读写指针指向首字节,每k个字节的读或写操作完成,则将文件读写指针加k。事实上,有许多应用不再要求文件内再区分记录,因而,为了简化系统,大多数现代操作系统如Linux系统只提供流式文件。(2)记录式文件这是一种有结构的文件,它包含若干逻辑记录,逻辑记录是文件中按信息在逻辑上的独立含义所划分的信息单位,记录在文件中的排列按其出现次序编号,记录0,记录1……。记录式文件中有两种常用的记录组织和使用方法:①记录式顺序文件:文件的记录顺序生成并被顺序访问。②记录式索引顺序文件:这种文件使用索引表,表项包含记录键和索引指针,记录键有应用程序确定,而索引指针便指向相应记录。这种文件可针对特定记录进行存取,它也保持着顺序访问记录的功能。2.文件物理结构(1)顺序文件将文件中逻辑上连续的信息存放到存储介质的相邻物理块上形成顺序结构,叫做顺序文件,又称连续文件。这种文件结构的优点是管理简单,存取速度快。主要缺点是建立文件之前需预先确定文件长度,以便分配存储空间;修改、插入和添加文件记录有一定的难度;对于变长记录的处理很困难;对磁盘做连续分配会造成空闲块的浪费。(2)连接文件。把逻辑文件中各个逻辑记录存放到一些磁盘块中,这些磁盘块可以是不连续的,用指针把这些磁盘块按逻辑记录的顺序连接起来,形成了文件的连接结构。文件信息存放在磁盘的若干物理块中,第一块文件信息的物理地址由FCB给出,而每块的连接字出文件的下一个物理块位置。通常,当连接字的内容为0时,表示文件至本块结束。连接文件结构的优点是易于文件扩充,不要求占用连续的外存空间,存储空间利用率高。由于连接文件只能按连接指针顺序搜索,因此存取速度慢。(3)索引文件索引结构是实现非连续存储的另一种方法,适用于数据记录保存在磁盘上的文件,系统为每个文件建立索引表(indextable),可以有不同的索引形式,一种是记录组成文件的磁盘块号,这种索引表只是磁盘块号的序列,适用于流式文件;另一种其索引表项包含记录键及其磁盘块号,适用于记录式文件。利用索引表来搜索记录的文件称为索引文件,索引表可存放在FCB中,打开文件时就可使用索引表访问文件信息,大文件的索引表很大。有些文件系统让索引表置于单独的物理块中且可驻留在磁盘上,FCB中仅包含索引表的地址。索引文件结构既可满足文件动态增、删的要求,存储空间的利用率也较高;索引结构既适用于顺序存取,也适用于随机存取,可以方便、较迅速地实现文件的存取。缺点是由于使用索引表而增加了存储空间的开销。11..22..44文件系统的接口文件系统作为一个高效管理文件的程序,其运行更多的是在系统内部运行,而用户所需要关心只是它的接口。文件系统通常向用户提供以下两类接口。第一类是与文件有关的操作命令或者作业控制语言中与文件有关的语句,构成文件系统命令接口;第二类是提供给用户程序使用的文件系统调用,构成了用户和文件系统的另一个接口,称为程序接口。文件系统提供给用户程序的一组系统调用,包括建立、打开、关闭、撤销、读、写和控制。通过这些系统调用,用户可以获得文件系统的各种服务。基本文件系统调用有建立文件、打开文件、读写文件、关闭文件等。1.3文件系统模拟实现11..33..11实验内容编写程序模拟一个简单的文件系统,具体实验内容如下:(1)实现多级目录结构,而非二级目录结构。(2)实现文件和目录的创建、删除、重命名和读写权限控制功能。(3)实现显示文件内容和更改文件内容的功能。(4)创建文件或目录时,采用动态申请的方式请求存储空间分配,在删除文件或目录时,还需对申请的空间进行释放。(5)为观察各种命令执行情况,要求以树形结构直观地显示命令执行后的目录结构。11..33..22实验指导1.主要数据结构说明(1)文件控制块(FCB)应包含:文件名、文件内容、父目录地址、同级目录文件地址、读写权限等信息。其数据结构及说明如下:typedefstructFILE{charname[256];//文件名charcontent[1000];//文件内容structFILE*frontFile;//同级目录上
本文标题:文件系统模拟实验(C-实验教材)
链接地址:https://www.777doc.com/doc-5686116 .html