操作系统之文件管理

文件管理,由于系统的内存有限并且不能长期保存,故平时总是把它们以文件的形式存放在外存中,需要时再将它们调入内存。

文件

数据项(最小数据组织形式):
	分为:
		基本数据项:
			描述一个对象某种属性的字符集,是数据组织中可以命名的最小逻辑数据单位,即原子数据,又称为数据元素或字段。
		组合数据项:
			由若干个基本数据项组成。


记录(一组描述对象某属性的相关数据项的集合):

	是一组有意义的数据项的集合,用于描述一个对象在某方面的属性。

	为了能够唯一标识一个记录,需要在一个记录的各个数据项中确定一个或几个数据项,把他们的集合称为关键字。
	关键字是能够唯一标识一个记录的数据项。


文件(一组相关记录的集合,最大数据单位):

	是具有文件名的一组相关记录的集合,分为:
		有结构文件(又称记录式文件:文件由一组相似记录组成)。
		无结构文件(又称流式文件:被看成是一个字符流。比如一个二进制文件或字符文件)。
	
	文件是文件系统的最大数据单位。文件应该具有自己的属性:
		包括文件类型(如源文件、目标文件、可执行文件等),
		文件长度(文件的当前长度,也可能是最大允许长度),
		文件的物理位置(指示文件在哪一个设备上及在该设备的哪个位置的指针),
		文件的建立时间(文件最后一次修改时间)。 

一个文件可对应若干个记录,一个记录可对应若干个数据项。

文件系统管理的对象

文件:
	作为文件管理的直接对象。

目录:
	为了方便用户对文件的存取和检索,在文件系统中配置目录。
	每个目录项中,必须含有文件名及该文件所在的物理地址,对目录的组织和管理是方便和提高对文件存取速度的关键。

磁盘:
	文件和目录必定占用存储空间,对这部分空间的有效管理,不仅能提高外存的利用率,而且能提高对文件的存取速度。

文件的基本操作

文件的基本橾作:

  ① 创建文件,在创建一个新文件时,系统首先要为新文件分配必要的外存空间,
	  并在文件系统的目录中,为之建立一个目录项,目录项中应该记录新文件的文件名及其在外存的地址等属性。

  ② 删除文件,当已不再需要某文件时,可将其从文件系统中删除,
	  在删除时,系统应先从目录中找到要删除文件的目录项,使之成为空项,然后回收该文件所占用的存储空间。

  ③ 读文件,读文件时,须在相应系统调用中给出文件名和应读入的内存目标地址。
	  此时,系统要查找目录,找到指定目录项,从中得到被读文件在外存中的位置。在目录项中,还有一个指针用于对文件进行读/写。

  ④ 写文件,写文件时,须在相应系统调用中给出文件名和其在内存源地址。
	  此时,系统要查找目录,找到指定目录项,从再利用目录中的写指针进行写操作。

文件结构

文件的逻辑结构:
	从用户角度看文件的组织形式

文件的物理结构:
	文件在外存上的存储组织形式

文件的逻辑结构类型(表示记录在文件中的位置)

文件的逻辑结构类型:指一个文件在用户面前所呈现的形式


无结构的字符流式文件:

	文件构成:由字符流构成。

	长度:字节为单位。

	访问:读写指针,通过穷举搜索的方式访问.

	由于无结构文件没有结构,因而对记录的访问只能通过穷举搜索的方式,故这种文件形式对大多数应用不适用。
	但字符流的无结构文件管理简单,用户可以方便地对其进行操作。
	所以,那些对基本信息单位操作不多的文件较适于釆用字符流的无结构方式,如源程序、可执行文件、库函数等。


有结构文件(记录式文件):

	文件构成:由一组相似记录构成。

	记录长度:分为定长和变长。

	分类(按记录的组织):
		顺序文件(适用定长记录)
		索引文件(变长,建立一张索引表)
		直接/哈希文件(键值确定物理地址)

有结构文件分类

按记录的组织形式:

	顺序文件(记录在文件中的位置由某种顺序决定):

		可以按照各种不同的顺序进行排列,一般地,可归纳为以下两种情况:
      		① 串结构,记录之间的顺序与关键字无关,
		 	  通常按照时间先后排序,最先存入的记录作为第一个记录,其次,为第二个记录,以此类推。
      		② 顺序结构,文件中所有记录按照关键字排列,可以按照关键词长度从大到小排列。

		优点:
			顺序存取速度较快(批量存取)。
			定长记录,还可方便实现直接存取。
		缺点:
			对变长记录,直接存取效率低,不利于文件的动态增长。

	索引文件(记录在文件中的位置由索引表来指向):

		引入:
			为解决变长记录文件的顺序存取低效问题。

		索引文件:
			为变长记录文件建立一张索引表。 
			分为单级目录,二级目录,树形目录。

		优点:
			通过索引表可方便地实现直接存取,具有较快的检索速度。
			易于进行文件的增删
		缺点:
			索引表的使用增加了存储开销
			索引表的查找策略对文件系统的效率影响很大
		注:
			若索引表很大,可建多级索引

	索引顺序文件:

		将顺序文件中的记录先分为组,为顺序文件建立一张索引表,
		在索引表里为每组中的第一个记录建立索引项,记录在文件中的位置由索引表和顺序来决定。


以上这些逻辑的组织方式,都形成一个文件,这个文件是具有一定的逻辑结构的,即每个记录在文件中都有其自己的位置

索引,顺序索引

索引

顺序索引

文件的物理结构类型

卷:
	一个硬盘分区

块:
	存储介质上连续信息所组成的一个区域,也叫做物理记录。
	块是主存储器和辅助存储设备进行信息交换的物理单位,每次总是交换一块或整数块信息。


磁盘块:
	磁盘的原理、物理实现,磁盘控制器是按照扇区这个单位完成数据读取操作的,故磁盘读写基本单位是扇区。
	扇区数目众多在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作。
	块是操作系统中最小的逻辑存储单元。文件系统就是操作系统的一部分,所以文件系统的最小单位也是块。
	一个块 = 单个扇区大小 * 2的n次方,其中n是可修改的。


物理结构是为逻辑结构服务的:
	从用户的角度看这个文件的逻辑的结构是这样的,这只是个虚拟中的概念,但是任何虚拟最终都要实体来体现。
	物理文件=逻辑文件+外存分配方式。


连续分配(为每个文件分配一组相邻的盘块):

	每个文件在磁盘上占用一组连续的物理块。磁盘地址构成一个线性空间,文件逻辑块顺序与文件物理块顺序相同。

	优点如下:
		顺序访问容易,对定长记录,可方便实现直接存取。
		顺序访问速度快,适合连续批量访问。
	缺点如下:
		要求有连续的存储空间,不利于文件动态增长。
		须事先知道文件的长度,寻找适当空间较费时。
		对变长记录,不能很好地支持直接存取。
		存在“碎片”问题。


链接分配:
	每个文件是一个磁盘块的链接列表:块可以分散在磁盘各处。
	按所需分配磁盘块,链接在一起。
	在每个块中有指向下一个块的指针。
	只需要起始地址。
	可以通过合并(consolidation)将一个文件的各个簇连续存放,以提高I/O访问性能。

	优点:
		1、无外部碎片,没有磁盘空间浪费
		2、无需事先知道文件大小。文件动态增长时,可动态分配空闲块。对文件的增、删、改十分方便。
		3、不需紧缩磁盘空间。
	缺点:
		1、不能支持高效随机/直接访问
		2、需为指针分配空间。
		3、可靠性较低(指针丢失/损害)


索引分配:
	为每一个文件分配一个索引块(表),再把分配给该文件的所有块号,都记录在该索引块中。
	故索引块就是一个含有许多块号地址的数组:
		该索引块的地址由该文件的目录项指出。
		支持随机/直接存取。
		不会产生外部碎片。
		适用于较大的文件。

	优点:
		不要求物理块连续,便于直接存取,便于文件的增、删、改。
	缺点:
		增加了索引表的空间开销和查找时间。

连续,链接,索引

连续

链接

索引

文件控制块(FCB)

目录结构:
	单级目录结构
	两级目录结构
	树形目录结构
	图形目录结构


为实现目录管理,操作系统中引入了文件控制块的数据结构。


为了便于对文件进行控制和管理,在文件系统内部,给每个文件唯一地设置一个文件控制块。
文件管理程序可借助于文件控制块中的信息,对文件施加各种操作。


文件与文件控制块一一对应,而人们把文件控制块的有序集合称为文件目录,一个文件控制块就是一个文件。
通常,一个文件目录也可被看成是一个文件,称为目录文件。 

   
文件控制块包含基本信息、存取控制信息、使用信息。 
     
  ① 基本信息:

		包括文件名。

		文件物理位置:
			指文件在外存上的存储位置。
			包括存放文件的设备名、文件在外存上的起始盘块号、指示文件所占用的盘块数或字节数的文件长度。

		文件逻辑结构:
			指示文件是流式文件还是记录式文件、记录数,文件是定长还是变长记录。

		文件物理结构:
			指示文件是顺序文件、链式文件还是索引文件。

  ② 存取控制信息,包括文件主的存取权限、核准用户的存取权限及一般用户的存取权限。

  ③ 使用信息:
		文件的建立日期和时间。
		文件上一次修改的日期和时间。
		当前使用信息(这项信息包括当前已打开该文件的进程数、是否被其他进程锁住、文件在内存中是否已被修改但尚未拷贝到盘上)

原文地址:https://www.cnblogs.com/loveer/p/11700402.html