文件管理

来源:互联网 发布:北九州监禁杀人案知乎 编辑:程序博客网 时间:2024/06/05 00:53

文件管理的引入

  • 在现代计算机系统中,要用到大量的程序和数据,因内存容量有限,且不能长期保存,故而平时总是把它们以文件的形式存放在外存中,需要时再随时将它们调入内存。如果由用户直接管理外存上的文件,不仅要求用户熟悉外存特性,了解各种文件的属性,以及它们在外存上的位置,而且在多用户环境下,还必须能保持数据的安全性和一致性。显然,这是用户所不能胜任、也不愿意承担的工作。于是,取而代之的便是在操作系统中又增加了文件管理功能,即构成一个文件系统,负责管理在外存上的文件,并把对文件的存取、共享和保护等手段提供给用户。这不仅方便了用户,保证了文件的安全性,还可有效地提高系统资源的利用率。

有关文件的概念

  • 文件:具有符号名(文件名)的一组相关元素的有序序列,是一段程序或数据的集合。
  • 文件名:就是文件的符号名。
  • 文件系统:是操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用。 文件系统包含文件管理程序(文件与目录的集合)和所管理的全部文件 , 是用户与外存的接口 , 系统软件为用户提供统一方法(以数据记录的逻辑单位),访问存储在物理介质上的信息。

文件的分类

  • 按性质和用途分类:
    ①系统文件,由系统软件构成的文件,只允许用户通过系统调用或系 统提供的专用命今来执行它们,不允许对其进行读写和修改。主要有操作系统核心 和各种系统应用程序或实用工具程序和数据组成。
    ②库文件,文件允许用户对其进行读取和执行,但不允许对其进行 修改 。主要由各种标准子程序库组成。
    ③用户文件,是用户通过操作系统保存的用户文件,由文件的所有者 或所有者授权的用户才能使用 。主要由用户的源程序源代码、可执行目标程序的文件和 用户数据库数据等组成 。

  • 按操作保护分类:
    ①只读文件,只允许文件主及被核准的用户去读文件,而不允许写文件。标记为:-r—– 。
    ②可读可写文件,允许文件主及被核准的用户去读和写文件。标记为: -rw—-。
    ③可执行文件,允许文件主及被核准的用户去调用执行该文件而不允许读和写文件,标记为: —x—。

  • 按用户观点分类( UNIX系统文件分类):
    ①普通文件(常规文件),是指系统中最一般组织格式的文件,一般是字符流组成的无结构文件
    ②目录文件,是由文件的目录信息构成的特殊文件,操作系统将目录也做成文件,便于统一管理。
    ③特殊文件,设备驱动程序。

  • 按文件的逻辑结构分为:
    ①流式文件(无结构操作系统文件),这是直接由字符序列(字符流)所构成的文件,故又祢为流式文件。大量的源程序、可执行文件、库函数等,所采用的就是无结构的文件形式,即流式文件。其长度以字节为单位。对流式文件的访问,则是采用读/写指针来指出下一个要访问的字符。可以把流式文件看做是记录式文件的一个特例。在 UNIX 系统中,所有的文件都被看做是流式文件,即使是有结构文件,也被视为流式文件,系统不对文件进行格式处理。
    ②记录式文件,由若干个记录所构成的文件,故又称为记录式文件。也叫数据库文件。
    ③可采用多种方式组织记录,形成不同的文件。顺序文件,是由一系列记录按某种顺序排列所形成的文件;索引文件,当记录为可变长度时,通常为之建立一张索引表;索引顺序文件,它为文件建立一张索引表,为每一组记录中的第一个记录设置一个表项。

  • 按文件的物理结构分类:
    ①顺序文件(也叫串联文件,连续文件)
    ②链接文件
    ③索引文件
    ④HASH文件
    ⑤索引顺序文件

  • 按文件的存取方式:
    ①顺序存取文件
    ②随机存取文件

  • 在管理信息系统中,按文件的组织方式分类:
    ①顺序文件
    ②索引文件
    ③直接存取文件

  • 按文件中的数据形式分类:
    ①源文件 :由源程序和数据构成的文件 。
    ②目标文件 :由源程序经过相应的计算机语言编译程序编译,但尚未经过链接程序链接的目标代码所形成的文件。

文件系统提供对文件的操作

  • Open文件,准备访问。
  • Close文件,结束文件的使用。
  • Create文件,构造一个新文件。
  • Destroy文件,删除一个文件。
  • Copy文件,产生副本。
  • Rename文件,重命名。
  • List显示文件,目录文件的内容。

文件系统提供对文件中数据项的操作

  • Read操作,把文件中一个数据项输入给进程。
  • Write操作,进程输出一个数据项到文件中去。
  • Update操作,修改一个已经存在的数据项。
  • Insert操作,添加一个已经存在的数据项。
  • Delete操作,从文件中删除一个数据项。

目录的几个概念

  • 目录,文件系统层次结构的一个非终结节点,一个目录通常包含有许多目录项,每个目录项可以是一个文件或目录。而文件是文件系统层次结构的一个终结节点,即在文件下不可能再包含文件或目录。

  • 目录节点,是查询其子节点的路线,通过目录找到目标文件的物理位置等属性。

  • 目录的作用,按名存取文件。

  • 目录的操作,创建目录、删除目录、显示目录、修改目录。

文件系统

  • 基本概念:操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用。

  • 基本功能:
    ①统一管理文件的存储空间,实施存储空间的分配与回收。
    ②提供方便的文件访问机制,实现对文件的按名存取(将名字空间映射存储空间)。
    ③实现文件信息的共享,并提供文件的保护和保密措施。
    ④向用户提供一个方便使用的接口(提供对文件系统操作命令,以及提供对文件的操作命令:信息存取、加工等)。
    ⑤向下提供和I/O设备相一致的接口,向上提供用户需要的相关信息。
    ⑥文件系统在操作系统接口中占的比例最大,用户使用操作系统的感觉在很大程度上取决于对文件系统的使用效果。

  • 文件的逻辑结构:
    一、对任何的文件,都存在以下两种形式的结构:
    ① 文件的逻辑结构,这是从用户观点出发所观察到的文件组织形式,是用户可以直接处理的数据及其结构,独立于文件的物理特性,又称为文件组织。
    ② 文件的物理结构,又称为文件的存储结构,是指文件在外存上的存储组织形式,不仅与存储介质有关,还与外存分配方式有关。几种常见的文件物理结构:顺序文件(也叫串联文件,连续文件)、链接文件、索引文件、HASH文件、索引顺序文件。

    二、文件逻辑结构的类型:文件的逻辑结构可分为两大类,一类是有结构文件,这是指由一个以上的记录构成的文件,故把他称为记录式文件,另一类是无结构文件,这是指由字符流构成的文件,又称为流式文件。
    ① 有结构文件,每个记录都用于描述实体集中的一个实体,各记录有着相同或不同数目的数据项,记录分为定长记录(文件中所有记录的长度都是相同的,所有记录中的各数据项都处在记录中相同的位置,具有相同的顺序和长度)和变长记录(文件中个记录的长度不相同,可能由于一个记录中所包含的数据项目并不相同)。根据用户和系统的需要,可采用多种方式来组织这些记录,如顺序文件(记录按照某种顺序排列所形成的文件,记录通常是定长的,能较快查找到文件中的记录),索引文件(记录为可变长度时,通常建立一张索引表,并为每个记录设置一个表项,加快对记录检索的速度),索引顺序文件(为文件建立一张索引表,为每一组记录中的第一个记录设置一个表项)。

    三、顺序文件:是指文件中的物理记录按其在文件中的逻辑记录顺序依次存入存储介质而建立的。即顺序文件中物理记录的顺序和逻辑记录的顺序是一致的。文件是记录的集合,文件中的记录可以是任意顺序的,因此,它可以按照各种不同的顺序进行排列,一般地,可归纳为以下两种情况。
    ① 链结构,将逻辑上连续的文件信息分散存放在若干不连续的物理块中,其中每个物理块设有一个指针,指向其后续连接的另一个物理块。即物理记录的次序由指针相链表示。也称串联文件。使用链结构时,不必在文件说明信息中指明文件的长度,只要指明该文件的第一个块号就可以按链指针检索整个文件。链结构的另一个特点是文件长度可以动态地增长,只要调整链指针就可在任何一个信息块之间插入或删除一个信息块。
    链结构主要优点是:
    (1)提高了磁盘空间利用率,解决了磁盘碎片问题;
    (2)便于文件的插入和删除操作;
    (3)便于文件的动态增长。
    ② 连续结构,是一种最简单的物理文件结构,它把逻辑上连续的文件信息依次存放在连续编号的物理块中。即次序相继的两个物理记录在存储介质上的位置是相邻的。也称为连续文件;一旦知道了文件在文件存储设备上的起始地址(首块号)和连续结构文件的件长度(总块数),就能很快地进行存取。但是连续结构文件在建立文件时必须在文件说明信息中确定文件信息长度,且以后不能动态增长;而且在文件进行某些部分的删除后,又会留下无法使用的零头空间。因此,连续结构不宜用来存放用户文件、数据库文件等经常被修改的文件。
    连续结构的优点是:
    (1)结构简单;
    (2)顺序访问速度快,对于等长记录的连续文件可以进行顺序存取,也可以进行类似折半查找的随机存取,但是对于不等长记录的连续文件只能进行顺序存取;
    (3)因为数据集中存放在连续的盘块中,访问时所需的寻道次数和寻道时间少。
    连续结构存储的缺点:
    (1)由于插入和删除记录会引起其它记录的移动,在外存中执行此操作会引起磁头的频繁来回移动,因此连续结构只能在文件的末尾插入记录,删除记录时,只作标记进行逻辑删除,只有用户指定物理删除时才真正删除相应记录,进行记录的移动;
    (2)顺序文件需要连续的盘块存放数据,因此,在插入记录时如果原来分配的盘块已没有空闲空间,而与其邻接的盘块也不空闲时,需要重新在外存中查找新的较大的空闲空间,并将原有数据移动到新空间中,然后才能插入新的数据,因此,连续结构不易动态增长,而且外存容易存在碎片。
    顺序文件的最佳应用场合是在对诸记录进行批量存取时,即每次要读或写一大批记录时,此时,对顺序文件的存取效率是所有逻辑文件中最高的,此外,只有顺序文件才能存储在磁带上,并能有效工作。但是想要增加或删除一个文件比较困难。

    四、索引文件:建立一张逻辑记录和物理记录之间对应关系的索引表。这类包括数据去和索引表两大部分的文件称做索引文件。
    ①对于定长记录文件,可以方便的实现顺序存取和直接存取,然而,对于变长记录就很难实现。为了解决变长记录检索问题,可为变长记录文件建立一张索引表,对主文件中的每个记录,在索引表中设有一个相应的表项,用于记录该记录的长度L及指向该记录的指针(指向该记录在逻辑地址空间的首址),由于索引表示按记录键排序的,因此,索引表本身是一个定长记录的顺序文件。从而可以方便实现直接存取。
    ②在对索引文件进行检索时,首先根据用户(程序)提供的关键字,并利用折半查找检索索引表,从中找到相应的表项,再利用该表项给出的指向记录的指针值,去访问所需的记录。每当要向索引文件中增加一个新纪录时,便须对索引表进行修改。索引表的问题在于除了有主文件外,还需要配置一张索引表,每个记录需要有一个索引项,因此提高了存储费用。
    ③索引表组成,索引表由若干索引项组成。一般索引项由主关键字和该关键字所在记录的物理地址组成。
    ④索引顺序文件(Indexed Sequential File),主文件按主关键字有序的文件称索引顺序文件。在索引顺序文件中,可对一组记录建立一个索引项。这种索引表称为稀疏索引。
    ⑤索引非顺序文件(Indexed NonSequentail File):主文件按主关键字无序得文件称索引非顺序文件。在索引非顺序文件中,必须为每个记录建立一个索引项,这样建立的索引表称为稠密索引。
    ⑥通常将索引非顺序文件简称为索引文件。
    ⑦索引非顺序文件主文件无序,顺序存取将会频繁地引起磁头移动,适合于随机存取,不适合于顺序存取。
    ⑧索引顺序文件的主文件是有序的,适合于随机存取、顺序存取。
    ⑨索引顺序文件的索引是稀疏索引。索引占用空间较少,是最常用的一种文件组织。
    ⑩最常用的索引顺序文件:ISAM文件和VSAM文件。
    ⑪索引顺序文件,其有效克服了变长记录不便于直接存取的缺点,而且所付出的代价也不算太大,它是顺序文件和索引文件相结合的产物,它将顺序文件中的所有记录分为若干个组,为顺序文件建立一张索引表,在索引表中为每组中的第一个记录建立一个索引项,其中含有该记录的键值和指向记录的指针。

    五、Hash(直接文件)文件:哈希(Hash)文件又称散列文件或者直接存取文件,是利用哈希函数法组织的文件,它类似于哈希表,即根据文件记录的关键字的特点,设计一种哈希函数和处理冲突的方法,从而将记录散列到外存储器上。由于哈希文件中通过计算来确定一个记录在存储设备上的存储位置,因而逻辑顺序的记录在物理地址上是不相邻的,因此哈希文件不宜使用磁带存储,只适宜使用磁盘存储;并且哈希文件这种结构只适用于定长记录文件和按主键随机查找的访问方式。
    哈希文件的优点是:
    (1)文件随机存放,记录不需进行排序;
    (2)插入、删除方便;
    (3)存取速度快;
    (4)不需要索引区,节省存储空间。
    哈希文件的缺点是:
    (1)不能进行顺序存取,只能按关键字随机存取;
    (2)询问方式限于简单询问;
    (3)在经过多次插入、删除后,可能造成文件结构不合理,需要重新组织文件。

    六、多重文件
    ①多重表文件:多重表文件是一种将索引方法和链接方法相结合的组织方式,他对主关键字建立主索引,对每个需要查询的次关键字均建立一个索引,同时将具有相同次关键字的记录链接成一个链表,并将此链表的头指针、链表长度及次关键字,作为索引表的一个索引项。通常多重表文件的主文件是一个顺序文件。
    ②倒排文件:倒排文件和多重表文件构造相似,主要区别在于在次关键字索引中,具有相同次关键字的记录之间不设指针进行链接,而是在倒排表中列出具有该次关键字记录的所有物理记录号。 倒排文件中的次关键字索引称做倒排表。倒排表和主文件一起就构成了倒排文件。倒排文件应用非常广泛,例如在WEB或者其它文本搜索引擎的设计中,在搜索引擎收集完数据进行预处理时,搜索引擎往往需要一种高效的数据结构来对外提供检索服务,而现行最有效的数据结构就是倒排文件,他是搜索引擎的核心内容之一。

  • 文件的存取方式
    一、顺序存取,顺序存取是按照文件的逻辑地址顺序存取。
    ①固定长记录的顺序存取是十分简单的。读操作总是读出上一次读出的文件的下一个记录,同时,自动让文件记录读指针推进,以指向下一次要读出的记录位置。如果文件是可读可写的。再设置一个文件记录指针,它总指向下一次要写入记录的存放位置,执行写操作时,将一个记录写到文件 末端。允许对这种文件进行前跳或后退N(整数)个记录的操作。顺序存取主要用于磁带文件,但也适用于磁盘上的顺序文件。
    ②可变长记录的顺序文件,每个记录的长度信息存放于记录前面一个单元中,它的存取操作分两步进行。读出时,根据读指针值先读出存放记录长度的单元 。然后,得到当前记录长后再把当前记录一起写到指针指向的记录位置,同时,调整写指针值 。
    ③由于顺序文件是顺序存取的,可采用成组和分解操作来加速文件的输入输出。
    二、直接存取(随机存取法),很多应用场合要求以任意次序直接读写某个记录。例如,航空订票系统,把特定航班的所有信息用航班号作标识,存放在某物理块中,用户预订某航班时,需要直接将该航班的信息取出。直接存取方法便适合于这类应用,它通常用于磁盘文件。为了实现直接存取,一个文件可以看作由顺序编号的物理块组成的,这些块常常划成等长,作为定位和存取的一个最小单位,如一块为1024字节、4096字节,视系统和应用而定。于是用户可以请求读块22、然后,写块48,再读块9等等。直接存取文件对读或写块的次序没有限制。用户提供给操作系统的是相对块号,它是相对于文件开始位置的一个位移量,而绝对块号则由系统换算得到。
    三、索引存取,第三种类型的存取是基于索引文件的索引存取方法。由于文件中的记录不按它在文件中的位置,而按它的记录键来编址,所以,用户提供给操作系统记录键后就可查找到所需记录。常记录按记录键的某种顺序存放,例如,按代表健的字母先后次序来排序。对于这种文件,除可采用按键存取外,也可以采用顺序存取或直接存取的方法。信息块的地址都可以通过查找记录键而换算出。实际的系统中,大都采用多级索引,以加速记录查找过程。

原创粉丝点击