外存,指的是除了cpu缓存和内存以外的存储器,硬盘、光盘、U盘都可以被称为外存。所有的数据,也都存在这里面,故他的分配方式变得极其重要,这直接影响到了计算机的运行速度。
外存分配方式主要有这几种:连续分配,链式分配,索引分配。
一. 连续分配
原理:创建文件时,分配一组连续的块;FAT(文档分配表)中每个文件只要一项,说明起始块和文件长度。对于顺序文件有利。
优点:1.简便。适用于一次性写入操作。2.支持顺序存取和随机存取,顺序存取速度快。3.所需的磁盘寻道次数和寻道时间最少。(因为空间的连续性,当访问下一个磁盘块时,一般无需移动磁头,当需要移动磁头时,只需要移动一个磁道。)
缺点:1.文件不能动态增长。(可能文件末尾处的空块已经分配给了别的文件。)2.不利于文件的插入和删除。3.外部碎片问题。(反复增删文件后,很难找到空间大小足够的连续块,需要进行紧缩。)4.在创建文件时需生命文件大小。
如图:
二. 链式分配
原理:一个文件的信息存放在若干个不连续的物理块中,各块之间通过指针连接,前一个物理块指向下一个物理块。fat中每个文件同样只需要一项,包括文件名、起始块号和最后块号。任何一个自由块都可以加入到链中。
优点:1.提高磁盘的空间利用率,不存在外部碎片问题。2.有利于文件的插入和删除。3.有利于文件的动态扩充。
缺点:1.存取速度慢,一般只适用于信息的顺序存取,不适于随机存取。2.查找某一块必须从头到尾沿着指针进行。3.可靠性问题,如指针出错。4.更多的寻道次数和寻道时间。5.链接指针占一定的空间,将多个块组成簇,按簇进行分配而不是按块进行分配。(增加了磁盘碎片)
如图:
使用FAT文件分配表法,链接分配的变种,如MS-DOS 和 OS/2.
三. 索引分配
原理:每个文件在FAT中有一个一级索引,索引包含分配给文件的每个分区的入口。文件的索引保存在单独的一个块中,FAT中该文件的入口指向这一块。
优点:1.保持了链接结构的优点,又解决了其缺点:按快分配可以消除外部碎片。按大小可改变的分区分配可以提高局部性。索引分配支持顺序访问文件和直接访问文件,是普遍采用的一种方式。2.满足了文件动态增长,插入删除的要求。(只要有空闲块)3.能充分利用外存空间。
缺点:1.较多的寻道次数和寻道空间。2.索引表本身带来了系统开销,如:内外存空间、存取时间。
如图:
四. 连续分配和索引分配相结合
原理:对于小文件(3、4块),采用连续分配;当文件大时,自动切换到索引分配。
文件的直接访问:使用连续分配方式。
文件的顺序访问:采用链接分配。
对于这些系统,所使用的访问类型,必须在文件创建时加以说明。
五. 多重索引
原理:首先,多重索引也是索引分配的一种,只不过它是将一个大文件的所有索引表(二级索引)的地址放在另一个索引表(一级索引)中。ps:跟数据库第四范式非常像。
大文件:设一个盘块大小为1kb,长度100kb的文件就需要100个盘块,索引表至少需要100项;若文件大小为1000kb,则索引表项就要有1000项。设盘块号用4个字节表示,则该索引表至少占用4000bye(约4k)。
当文件很大时,存在的问题:1.需要很多磁盘块。2.索引表很大。3.不能将整个索引表放在内存。
解决途径:采用多重索引表结构。
如图:
多重索引表结构图示:
暂时就简单介绍到这里,后续会为大家添加也一些样例,如有不对地方请指正,谢谢!