文件的逻辑组织与物理组织
来源:互联网 发布:python idle 哪个好 编辑:程序博客网 时间:2024/05/20 02:29
用户对文件的观察和使用是从自身处理文件中数据时采用的组织方式来看待文件组织形式。这种从用户关点出发所见到的文件组织形式称为文件的逻辑组织。
系统设计人员看待文件时要考虑文件具体在存储设备中如何放置、如何组织如何实现存取等细节,这与存储介质的存储性能有关。文件在存储设备上的存储组织形式称为文件的物理组织。
1 文件的逻辑组织
文件的逻辑组织通常分为两种形式,即有结构文件和无结构文件。
1)有结构文件
又称作记录式文件,它在逻辑上可被看成一组连续记录的集合,即文件是由若干个相关的记录组成。每个记录是一组相关的数据集合,用于描述一个对象某个方面的属性。
记录式文件按其记录的长度是否相同又可分为:定长记录文件和变长记录文件两种。
(1)定长记录文件:指文件中所有记录的长度都相同。文件的长度可用记录的数目来表示。定长记录处理方便,开销小,被广泛用于数据处理中。
(2)变长记录文件:指文件中各记录的长度不相同。在处理之前每个记录的长度是已知的。
2)无结构文件
无结构文件是指文件内部不再划分记录,它是由一组相关信息组成的有序字符流,即流式文件,其长度直接按字节计算。如大量的源程序、可执行程序、库函数等采用的文件形式是无结构文件形式。在UNIX系统中,所有的普通文件都被看做是流式文件,系统不对文件进行格式处理。
2 文件的物理组织
几种基本的文件物理存储组织形式:
1)连续文件
连续文件(又称做顺序文件)是基于磁带设备的最简单的物理文件结构,它是把一个逻辑上连续的文件信息存放在连续编号的物理块(或物理记录)中。
连续文件的优点是在顺序存取时速度较快,常用于存放系统文件,如操作系统文件、编译程序文件和其它由系统提供的实用程序文件,因为这类文件往往被从头至尾依次存取。
但连续文件也存在如下缺点:
(1)要求建立文件时就确定它的长度,依此来分配相应的存储空间,这往往很难实现。
(2)不便于文件的动态扩充。
(3)可能出现外部碎片,就是在存储介质上存在很多空闲块,但它们都不连续,无法被连续的文件使用,从而造成浪费。
2)串连文件
为克服连续文件的缺点,可把一个逻辑上连续的文件分散存放在不同的物理块中,这些物理块不要求连续,也不必规则排列。为了使系统能找到下一个逻辑块所在的物理块,可在各物理块中设立一个指针(称为连接字),它指示该文件的下一个物理块。
串连文件克服了连续文件的缺点,但它又带来新的问题:
(1)一般仅适于对信息的顺序访问,而不利于对文件的随机存取。
(2)每个物理块上增加一个连接字,为信息管理添加了一些麻烦。
3)FAT文件
串连文件的缺点可通过把连接字放在一个内存表格中的方式加以克服。这种在内存中的表格就称为文件分配表(FAT,File Allocation Table)。
由于连接字保存在FAT表项中,因此整个盘块都可以用来存放数据。另外,也更容易实现随机存取了。与串连文件相似,在文件目录中要添加一个整数,标明该文件的起始盘块号。
这种方法的主要缺点是整个FAT必须在系统工作期间始终驻留在内存中,从而占用了较多内存空间。当然,可以把这个表移到分页内存中,采用调页方式进行管理。但是,仍然要占用大量的虚存空间和盘空间,同时也会产生额外缺页问题。
4)索引文件
索引文件是实现非连续分配的另一种方案:系统为每个文件建立一个索引表。其中的表项指出存放该文件的各个物理块号,而整个索引表由文件说明项指出。
这种结构除了具备串连文件的优点之外,还克服了它的缺点。它可以方便地进行随机存取。但是这种组织形式需要增加索引表带来的空间开销。如果这些表格仅放在盘上,那么在存取文件时首先得取出索引表,然后才能查表、得到物理块号。这样就至少增加了一次访盘操作,从而降低了存取文件的速度,加重了 I/O负担。一种改进办法是同时把索引表部分或全部地放人内存。这是以内存空间为代价来换取存取速度的改善。
5)多重索引文件
为了用户使用方便,系统一般不应限制文件的大小。如果文件很大,那么不仅存放文件信息需要大量盘块,而且相应的索引表也必然很大。在这种情况下把索引表整个放在内存是不合适的,为此引出多重索引结构(又称多级索引结构)。在这种结构中采用了间接索引方式,即由最初索引项中得到某一盘块号,该块中存放的信息是另一组盘块号;而后者每一块中又可存放下一组盘块号(或者是文件本身信息),这样间接几级(通常为1~3级),最末尾的盘块中存放的信息一定是文件内容。例如,UNIX文件系统就采用了多重索引的方式。
这种方法具有一般索引文件的优点,但也存在间接索引需要多次访盘而影响速度的缺点。由于UNIX分时环境中多数文件都较小,这就大大减弱了其缺点所造成的不利影响。
- 文件的逻辑组织与物理组织
- c/c++文件的物理组织
- 代码的物理组织
- 索引组织表中逻辑ROWID的物理猜
- 文件的组织方式
- 文件,工程的组织
- 粗大文件的组织
- myisam与innodb索引组织逻辑结构
- 索引物理组织
- RxJava 1.x 业务逻辑的组织
- 文件的逻辑与物理结构
- 组织域逻辑
- C++ 代码文件的组织
- Wave文件的组织结构
- C++头文件的组织
- 组织你的Sass文件
- 组织
- 组织
- java技术已经老去
- 内存管理
- ADC layout
- 硬盘接口类型
- CString 成员函数用法大全
- 文件的逻辑组织与物理组织
- asp.net html绑定显示后台变量 方法
- java连接oracle数据库
- C#发送Email邮件三种方法的总结
- SCSI硬盘
- C++语言中“_T”是什么意思
- Buri
- Counters的Set方法
- Seasar サイトマップ