文件管理

http://blog.csdn.net/niushuai666/article/details/8166554


1.文件、记录、数据项

数据项是文件的基本单位,记录是一个对象的所有属性的集合,而文件则是某一群体中记录的集合。


2.文件的逻辑结构和物理结构
物理结构就是文件在外存上的存储组织方式,而逻辑结构就是从用户角度出来看到的文件。物理结构是对系统而言,逻辑结构是为了使计算机对文件的管理对透明而言的 。


3.对逻辑结构而言,有两种文件形式:有结构的文件和无结构的文件(流式文件)。有结构就是指由一个以上的纪律构成的文件;无结构就是指源程序一类的字符串流文件。


4.对于有结构文件来说,常用的文件组织方式为:索引顺序文件。
将顺序文件中的所有记录分为n组,每个的容量为m,这样,在查找某一文件时,我们根据关键字从索引中查询,查找到关键字以后再顺序查找该索引下的文件即可。


5.外存分配方式有:连续分配、链接分配、索引分配三种。


连续分配:(不现实)
就是为每个文件申请一个连续的存储空间。
优点:查找迅速,因为不需要跳跃寻址。
缺点:须知道文件的大小,不能对动态文件做正确的处理,对系统而言,需要足够大的连续存储空间


链接分配:(windows的外存分配策略)
本质就是离散存储。又分为:隐式链接和显式链接
1)隐式链接
对每个文件分配的空间,都须含有一个指向链接文件的第一个盘块和最后一个盘块的指针。
隐式分配的问题在于对某一记录的访问需要O(n)的复杂度,效率太低。
2)显式链接
本质就是在内存中保存一个全磁盘空间的文件分配表(File Allocation Table)
优点:解决了系统没有足够连续空间的问题。
缺点:文件查找还是顺序查找,效率提高不多。需要将FAT存入内存,代价太大。


索引分配:
因为链接分配的FAT太大,所以我们可以使用索引块的方法解决。事实上,需要某个文件时,我们只需要将该文件占据的盘块号调入内存即可,所以,我们用一个索引块存储该文件的所有盘块号。然后在建立文件时,只需要在文件目录中加入一个指向该索引块的指针即可。
优点:解决了FAT太大无法调入内存的问题。加快了访问文件某个记录的速度(索引块中存储了该文件的所有盘块)。
缺点:需要额外的外存空间(索引块)。每当建立一个文件时,就需要为之分配一个索引块。但是实际应用中,总是中小型文件居多,他们通常只占据1-2个盘块,那么,索引块的作用几乎为0。
又分为单级索引分配、多级索引分配、混合索引分配三种,本质相同,只是后两种是对中型、大型文件而言的。
具体就是当文件太大时,分配的索引块太多,我们就必须处理海量的索引块,那么,我们同样利用索引块的方法,再弄一张索引块表,用来存索引块号即可。


6.FAT技术和NTFS技术
FAT技术和NTFS技术都是外存分配方式中的链接分配。
FAT技术:
FAT12是以盘块号为基本单位的,所以,在整个系统中有一张FAT,每个表项中存放的都是下一个盘块号,对于一个12位的FAT12技术而言,12位可存储4096个表项,假如每个盘块大小为512B,那么,容量为4096*512B=2MB,如果一个物理磁盘支持4个逻辑磁盘分区,那么,磁盘的最大容量为8MB。
为了适应磁盘容量的不断增大,在进行盘块分配时,我们采用“簇”作为新的基本单位。
簇是一组连续的扇区,大小一般为2n个盘块。例如,当一个簇含有一个扇区时,磁盘的最大容量为8MB,当一个簇包含2个扇区时,磁盘最大容量为16MB(表项存储的是簇号,4096簇*1KB*4)。
缺点:虽然可以通过增加簇的大小来提高允许的最大磁盘容量,但是簇内碎片将会增加剧烈。


NTFS技术(New Technology File System)
NTFS的基本单位也为簇,大小一般为4KB。
对于簇的定位,NTFS使用的是逻辑簇号和虚拟簇号结合。逻辑簇号以卷(C/D/E盘)为单位,将所有簇升序排号,在NTFS地址映射时,通过簇的大小与逻辑错号的成绩,就可以得到卷上的地址了。同时,使用虚拟簇号是对用户文件而言的,指对该文件使用的簇号进行编号,如果知道了文件的开始地址,就可以用虚拟簇号映射到逻辑簇号得到地址。
NTFS的核心结果是主控文件表MST(Master File Table),用来存放所有文件的各种信息以及未分配空间的信息。
每个MST表项大概1KB大小,对于元数据而言,如果能记录全部信息,就保存在MST中;如果不能,就保存在对应文件的簇中。
优点:因为表项为2的32次方,所以当容量扩大时,依然可以使用较小的簇(一般最佳为4KB)防止簇内碎片的增加。
缺点:兼容性较差,不能向下兼容




7.unix采用的混合索引分配方式
在unix system的索引节点中,共设置了13个地址项,即addr(0)~add(12)
1)直接地址
为了提高对文件的检索速度,索引节点中设置了10个直接地址项,存放的是该文件数据所在盘块的盘块号。假如每个盘块大小为4KB,当文件不大于40KB时,可以直接从索引节点中读出该文件的全部盘块号。
2)一次间接地址
对于中型或大型文件,可采用一次间接地址,本质就是一级索引分配方式。假如每个文件大小4KB,盘块号占据4个字节,那么,一级索引允许的文件长度为:4KB/4B=1024盘块,1024*4KB=4MB
3)二次间接地址
当文件长度大于4MB+40KB时,可以采用二次间接间接地址,本质就是二级索引分配方式。这时,允许最大文件长度为:4KB/4B=1024,1024*1024*4KB=4GB
4)三次间接地址
当文件更大时,可使用三级索引分配方式。此时最大长度为4TB。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值