浅谈外存分配的几种方式

外存,指的是除了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.不能将整个索引表放在内存。

解决途径:采用多重索引表结构。

如图:

多重索引表结构图示:

暂时就简单介绍到这里,后续会为大家添加也一些样例,如有不对地方请指正,谢谢!

时间: 2024-07-28 15:50:16

浅谈外存分配的几种方式的相关文章

浅谈跨域的N种方式

奇葩方式:谷歌浏览器添加属性 --disable-web-security 邮件chrome浏览器,切换到快捷tab,在目标框追加--disable-web-security,如果目标URL带双引号,则追加--args --disable-web-security,重启浏览器会提示”不受支持的disable-web-security属性“,表示修改已生效. HTML5方式,后台设置相应头 Access-Control-Allow-Origin 常规方式:jsonp,代理proxy

[]转帖] 浅谈Linux下的五种I/O模型

浅谈Linux下的五种I/O模型 https://www.cnblogs.com/chy2055/p/5220793.html  一.关于I/O模型的引出 我们都知道,为了OS的安全性等的考虑,进程是无法直接操作I/O设备的,其必须通过系统调用请求内核来协助完成I/O动作,而内核会为每个I/O设备维护一个buffer.如下图所示: 整个请求过程为: 用户进程发起请求,内核接受到请求后,从I/O设备中获取数据到buffer中,再将buffer中的数据copy到用户进程的地址空间,该用户进程获取到数

搞懂分布式技术16:浅谈分布式锁的几种方案

搞懂分布式技术16:浅谈分布式锁的几种方案 前言 随着互联网技术的不断发展,数据量的不断增加,业务逻辑日趋复杂,在这种背景下,传统的集中式系统已经无法满足我们的业务需求,分布式系统被应用在更多的场景,而在分布式系统中访问共享资源就需要一种互斥机制,来防止彼此之间的互相干扰,以保证一致性,在这种情况下,我们就需要用到分布式锁. 分布式一致性问题 首先我们先来看一个小例子: 假设某商城有一个商品库存剩10个,用户A想要买6个,用户B想要买5个,在理想状态下,用户A先买走了6了,库存减少6个还剩4个,

浅谈单例的三种实现--C#

传统的double check : public sealed class Singleton { private static Singleton instance = null; private static readonly object padlock = new object(); Singleton() { } public static Singleton Instance { get { if (instance == null) { lock (padlock) { if (i

浅谈CSS3 Filter的10种特效

Filters主要是运用在图片上,以实现一些特效(尽管他们也能运用于video上).但是,我们主要讨论的是Filter图片上的运用. 再来,介绍一下Filters的语法:Filters使用时候的语法非常简单,例如: elm { filter: none | <filter-function > [ <filter-function> ]* } 它的默认值是none,且不具备继承性.其中filter-function具有以下可选值: 1.grayscale灰度 2.sepia褐色 3

浅谈企业建设邮件系统的各种方式

电子邮件已经成为各行各业办公沟通的重要工具,市面上的邮件系统软件琳琅满目,有商业自建邮件服务器软件.商业租用企业邮箱.开源自建邮件服务器软件.免费企业邮箱,且每种类型的品牌也是非常丰富.企业如何在如此众多的产品中选择适合于本企业的邮件服务器呢? 这就需要企业先自我认知,了解各种形式的不同之处,对需求进行定位,需求包含:功能性需求,数据安全性需求,价格预算等等:然后再确定是自建邮件系统还是租用企业邮箱? 若是选择自建,是购买商业的?还是开源的?若是选择企业邮箱,是租用企业邮箱?还是用免费企业邮箱?

浅谈 JS 创建对象的 8 种模式

Objct 模式 工厂模式 构造器模式 通过 Function 对象实现 prototype 模式 构造器与原型方式的混合模式 动态原型模式 混合工厂模式 1.Object 模式 var o1 = {};//字面量的表现形式 var o2 = new Object; var o3 = new Object(); var o4 = new Object(null); var o5 = new Object(undefined); var o6 = Object.create(Object.prot

内存分配的几种方式,以及动态内存传递的注意事项

一.内存的分配方式?静态存储区,栈,堆 静态存储区:内存在程序编译的时候已经分配好,这块内存在程序的整个运行期间都存在,比如说全局变量. 栈:在栈上创建,在函数执行期间,函数内部局部变量和形参可以在栈上创建,函数执行这些存储单元自动释放.所以我们不能返回在函数内部定义的变量(函数定义的指针可以返回),因为他们在函数执行结束时已经被销毁了,处理器的指令集有关于站内部的分配运算,因此效率很高,但是分配的内存资源有限. 堆:从堆上分配,也称为动态内存分配,使用new malloc等申请任意多内存,程序

shell实例浅谈之三产生随机数七种方法

一.问题 Shell下有时需要使用随机数,在此总结产生随机数的方法.计算机产生的的只是"伪随机数",不会产生绝对的随机数(是一种理想随机数).伪随机数在大量重现时也并不一定保持唯一,但一个好的伪随机产生算法将可以产生一个非常长的不重复的序列. 二.随机数 1.生成随机数的七种方法 (1)通过内部系统变量($RANDOM) echo $RANDOM 生成0-32767之间的整数随机数,若超过5位可以加个固定10位整数,然后进行求余. 生成400000~500000的随机数: #!/bin