计算机操作系统——文件管理(1)

来源:互联网 发布:虎头软件是什么 编辑:程序博客网 时间:2024/05/16 15:19

文件和文件系统

文件系统的结构,是由文件管理部分和操作系统I/O部分组成的。
文件管理部分:操作系统内存中的文件对象,并按文件的逻辑格式将对文件对象的操作转化成对文件块的操作。
操作系统I/O部分:负责内存中的物理块与物理磁盘中的数据交换。

文件分类

通常,文件是由一系列的记录组成的。文件系统设计的关键要素,是指将这些记录构成一个文件的方法,以及将一个文件存储到外存上的方法

文件的逻辑结构

这是从用户观点出发所观察到的文件组织形式,是用户可以直接处理的数据及其结构,它独立于文件的物理特性,又称为文件组织(FileOrganization)。

例如,用户创建的txtcppwordexcelppt等,都属于文件的逻辑结构。

①无结构文件:字符流,又称流式文件。--源程序、可执行文件、库函数等

②有结构文件:由若干个相关记录组成,又称记录型文件,如下图。--数据结构、数据库等


文件的物理结构

又称文件的存储结构,指文件在外存上的存储组织形式。这不仅与存储介质的存储性能有关,而且与所采用的外存分配方式有关。

例如,采用FAT32NTFSEXT3EXT4Linux swap等,都属于文件的物理结构。


文件系统模型

文件系统管理的对象有:①文件;②目录;③磁盘空间;

模型层次图:



文件的逻辑结构

分类

1. 记录型文件,按记录的组织方式可分为:
①顺序文件

顺序文件中记录的排序方式:
1)串结构,各记录之间的顺序与关键字无关,通常由时间决定。----每次检索必须从头开始。
2)顺序结构,所有记录按关键字排序。----采用折半查找、插值查找、跳步查找等来提高检索效率。


②索引文件

定长记录文件----顺序存取方便、直接存取方便
变长记录文件----顺序存取方便、直接存取困难

为变长记录文件建立一张索引表,对主文件中的每个记录,在索引表中设有一个相应的表项,用于记录该记录的长度L及指向该记录的指针(指向该记录在逻辑地址空间的首址)。由于索引表是按记录键排序的,因此,索引表本身是一个定长记录的顺序文件,从而也就可以方便地实现直接存取。


③索引顺序文件
索引顺序文件(Index Sequential File)可能是最常见的一种逻辑文件形式。它有效地克服了变长记录文件不便于直接存取的缺点,而且所付出的代价也不算太大。它将顺序文件中的所有记录分为若干个组(例如,50 个记录为一个组);为顺序文件建立一张索引表,在索引表中为每组中的第一个记录建立一个索引项,其中含有该记录的键值和指向该记录的指针。


④直接文件
根据给定的记录键值,直接获得指定记录的物理地址。换言之,记录键值本身就决定了记录的物理地址。这种由记录键值到记录物理地址的转换被称为键值转换(Key to addresstransformation)。

⑤哈希文件
目前应用最广的一种直接文件。它利用Hash 函数(或称散列函数),可将记录键值转换为相应记录的地址。但为了能实现文件存储空间的动态分配,通常由Hash函数所求得的并非是相应记录的地址,而是指向一目录表相应表目的指针,该表目的内容指向相应记录所在的物理块,如下图所示。例如,若令K为记录键值,用A作为通过Hash函数H 的转换所形成的该记录在目录表中对应表目的位置,则有关系A=H(K)。通常,把Hash函数作为标准函数存于系统中,供存取文件时调用。


2. 流式文件

其长度以字节为单位。对流式文件的访问,则是采用读/写指针来指出下一个要访问的字符。可以把流式文件看做是记录式文件的一个特例。在UNIX 系统中,所有的文件都被看做是流式文件,即使是有结构文件,也被视为流式文件,系统不对文件进行格式处理。


文件的外存分配方式

对换空间的管理:具有对换功能的OS中,将外存分为文件区(用于存放文件)和对换区(用于存放从内存中换出的进程)。由于通常的文件都是较长久的驻留在外存上,故对文件区管理的主要目标,是提高文件存储空间的利用率。为此,对文件区采取离散分配方式。然而,进程在对换区中驻留的时间是短暂的,对换操作又较频繁,故对对换空间(swap分区)管理的主要目标,是提高进程换入和换出的速度。为此,采取的是连续分配方式,较少考虑外存中的碎片问题。

连续分配

1、连续分配(Continuous Allocation)要求为每一个文件分配一组相邻接的盘块。一组盘块的地址定义了磁盘上的一段线性地址。
2、物理结构:顺序式。
3、如同内存的动态分区分配一样,随着文件建立时空间的分配和文件删除时空间的回收,将使磁盘空间被分割成许多小块,这些较小的连续区已难于用来存储文件,此即外存的碎片。同样,我们也可以利用紧凑的方法,将盘上所有的文件紧靠在一起,把所有的碎片拼接成一大片连续的存储空间。

链接分配

1、分类:
①隐式链接
在采用隐式链接分配方式时,在文件目录的每个目录项中,都须含有指向链接文件第一个盘块和最后一个盘块的指针。
隐式链接分配方式的主要问题在于:它只适合于顺序访问,它对随机访问是极其低效的。

②显式链接----FAT/NTFS
把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中。该表在整个磁盘仅设置一张。表的序号是物理盘块号,从0 开始,直至N-1;N为盘块总数。在每个表项中存放链接指针,即下一个盘块号。在该表中,凡是属于某一文件的第一个盘块号,或者说是每一条链的链首指针所对应的盘块号,均作为文件地址被填入相应文件的FCB 的“物理地址”字段中。由于查找记录的过程是在内存中进行的,因而不仅显著地提高了检索速度,而且大大减少了访问磁盘的次数。由于分配给文件的所有盘块号都放在该表中,故把该表称为文件分配表FAT(File Allocation Table)。

2、物理结构:链接式。

扇区(盘块):512B
簇:2n个连续的扇区

【FAT12】
特点:FAT每个表项宽度为12位,最多允许有4096个表项,以扇区为基本分配单位。因此在以扇区为基本分配单位时,每个磁盘分区的最大容量仅为8MB(4096 × 512B)。
缺陷:容量有限,只能支持8+3格式的文件名。要增大容量,就得以簇为基本分配单位,但又会增大簇内碎片,降低空间利用率。



【FAT16】
特点:FAT每个表项宽度为16位,最多允许有65536个表项,以簇为基本分配单位,每个簇中可以有的扇区数为4、8、16、32、64。因此在以有64个扇区的簇为基本分配单位时,每个磁盘分区的最大容量为2048MB(2^16 × 64 × 512B)。
缺陷:容量有限,只能支持8+3格式的文件名。要增大容量,就增大簇内的扇区数,但又会增大簇内碎片,降低空间利用率。

【FAT32】
特点:FAT每个表项宽度为32位,最多允许有4 294 967 296个表项,以簇为基本分配单位,每个簇中的扇区数为8,簇的大小为4KB。每个磁盘分区的最大容量为4 KB × 2^32 = 2 TB(这个地方纠结了很久,应该是书上写错了,理论上说,FAT32如果以4KB大小的簇为基本分配单位,那么每个磁盘分区的最大容量应该为4KB× 2^32 = 16TB;但是如果以512B的扇区作为基本分配单位,那么每个磁盘分区的最大容量应该为512B × 2^32 = 2TB;但实际Windows XP将FAT32的最大分区限制在了32GB,为什么?
缺陷:
①由于文件分配表的扩大,运行速度比FAT16格式要慢;
②FAT32 有最小管理空间的限制,FAT32 卷必须至少有65 537 个簇,所以FAT32 不支持容量小于512 MB的分区(为什么,不是2^16 × 4KB = 256 MB吗?);
③FAT32 的单个文件的长度也不能大于4 GB(FAT32文件系统寻址单位为32位,即根目录中每个文件(目录)所占32字节,根据规定,文件长度一项属性:占4个字节
④FAT32 最大的限制在于兼容性方面,FAT32 不能保持向下兼容;

【NTFS】

索引分配

为每个文件分配一个索引块(表),再把分配给该文件的所有盘块号都记录在该索引块中,因而该索引块就是一个含有许多盘块号的数组。在建立一个文件时,只需在为之建立的目录项中填上指向该索引块的指针。
1、分类:
①单级索引分配;

②多级索引分配;

③混合索引分配;

2、物理结构:索引式。

总结









0 0
原创粉丝点击