首页 > 其他分享 >OS(十五):文件管理之文件存储空间管理

OS(十五):文件管理之文件存储空间管理

时间:2023-08-23 17:22:47浏览次数:37  
标签:文件 链表 分配 盘区 存储空间 OS 盘块 空闲 位示

  文件管理主要解决如何为新创建的文件分配存储空间。

  文件存储空间分配的基本单位是 磁盘块。

  内存分配方法:连续分配方式 和 离散分配方式。连续分配有较高的文件访问速度,会产生较多的外碎片;离散分配能有效的利用外存空间,但访问速度较慢。

1、空闲表法和空闲链表法

1.1、空闲表法

1.1.1、空闲表

  系统为外存上的所有空闲区建立一张空闲表,每个空闲区对应于一个空闲表项,其中包括表项序号、该空闲区的第一个盘块号、该区的空闲盘块数等。空闲盘块表如下:

 0

1.1.2、存储空间的分配与回收

  空闲盘区的分配与内存的动态分配类似,采用首次适应算法、循环首次适应算法等。

  在系统为某新创建的文件分配空闲盘块时,顺序的查找空闲表的各表项,直至找到第一个其大小能满足要求的空闲区,再将该盘区分配给用户,同时修改空闲表。

  系统对用户释放的存储空间做回收时,采取类似于内存回收的方法。

1.2、空闲链表法

  空闲链表法:将所有空闲盘区拉成一条空闲链,根据构成的链所用基本元素的不同,可以把链表分成两种形式:空闲盘块链 和 空闲盘区链。

  空闲盘块链:将磁盘上所有空闲空间,以盘块为单位拉成一条链。

  空闲盘区链:将磁盘上所有的空闲盘区(每个盘区包含若干个盘块)拉成一条链。在每个盘区上除含有用于指示下一个空闲盘区的指针外,还应能有指明本盘区大小信息(盘块数)。

2、位示图法

2.1、位示图

  位示图:利用二进制的以为来表示磁盘中一个盘块的使用情况,当值为0时,表示对应盘块空闲;为1时,表示已分配。

  所有盘块所对应的位构成一个集合,称为位示图。

  

  位示图可描述为一个二维数组。

2.2、盘块的分配

  1.顺序扫描位示图

  2、将所找到的一个或一组二进制位转换成与之相应的盘块号。

  3、修改位示图。

2.3、盘块的回收

  1、将回收盘块的盘块号转换成位示图的行号和列号;

  2、修改位示图。

2.4、优点

  容易找到空闲盘块,占用空间少,可保存在内存中,每次进行盘区分配时,无需把盘区分配表读入内存,节省很多磁盘启动操作。

3、成组链接法

  空闲表与空闲链表法不适用大型文件系统,会使表太长。

  成组链表法适用于大型文件系统。

3.1、空闲盘块的组织

  空闲盘块号栈:存放当前可用的一组空闲盘块的盘块号,以及栈中尚有的空闲盘块号数N。

  栈是临界资源,每次仅允许一个进程访问,系统为栈设置了锁。

 0

  文件区中的所有空闲盘块被分成若干个组;

  每一组含有的盘块总数N和该组所有的盘块号记入其前一组的第一个盘块的中S.free(0) ~ S.free(99)。如此,各组的第一个盘块可链成一条链。

  将第一组含有的盘块总数N和所有的盘块号记入空闲盘块栈中,作为当前可供分配的空闲盘块号。

3.2、空闲盘块的分配与回收

  分配:先检查空闲盘块号栈是否上锁,如未上锁,便从栈顶取出一空闲盘块号,将与之对应的盘块分配给用户,然后将栈顶指针下移一格。若该盘块号已栈底,即S.free(0),表示这是当前栈中最后一个可分配的盘块号。由于该盘块号所对应的盘块中记有下一组可用的盘块号,因此需要调用个磁盘读过程,将占地盘块号对应的盘块内存读入栈中,作为新的盘块号栈的内容,并把原栈底对应的盘块分配出去。然后在分配一相应的缓冲区(作为盘块的缓冲区),最后把栈中的空闲盘块数减1并返回。

  回收:将回收盘块的盘块号记录空闲盘块号栈的顶部,并执行空闲盘块数加1操作。当占中盘块数目达100,标识栈已满,将现有栈中的100个盘块号记入新回收的盘块中,再将其盘块号作为新栈底。

 

标签:文件,链表,分配,盘区,存储空间,OS,盘块,空闲,位示
From: https://www.cnblogs.com/RunningSnails/p/17652240.html

相关文章

  • iOS开发Swift-字符串与字符
    1.字符串的定义letsomeString="somestringvalue"2.多行字符串的定义(""")letquotation="""有一个人前来买瓜。"这瓜甜吗?"他问。""" 前一个"""前和后一个"""后无换行//前一个"""前和后一个......
  • OS(十六):文件管理之文件共享与保护
    文件共享:允许多个用户共享同一份文件,系统只需保留该共享文件的一份副本。1、基于索引节点的共享方式文件的物理地址及其它的文件属性属性,存放在索引节点中,文件目录中只设置文件名及指向相应索引节点的指针。 在索引节点中有一个链接计数count,表示链接到本索引结......
  • OS(十二):文件管理之文件的逻辑结构
    文件存在两种形式的结构:逻辑结构:又称为文件组织,用户角度的文件组织形式,用户可直接处理数据及其结构,独立于文件的物理特性。物理结构:又称为文件的存储结构,值文件在外存上的存储组织形式。1、文件逻辑结构的类型文件逻辑结构分为两大类:有结构文件,也被称为记录式文......
  • plutosdr通过uboot单独加载bit文件
    导出bit文件,修改uEnv.txt文件,修改bitstream_image为自己的bit文件,如system_top.bit,并增加两行:bitstream_image=system_top.bitmmc_loadbit_fat=echoLoadingbitstream${bitstream_image}fromSDtoRAM...&&mmcinfo&&fatloadmmc0${loadbit_addr}${bitstream_imag......
  • OS(十三):文件管理之外存分配方式
    文件分配外存空间时所要考虑的主要问题是:怎样才能有效地利用外存空间和如何提高对文件的访问速度。外存分配方式有连续分配、链接分配和索引分配。文件的物理结构直接与外存分配方式有关,采用不同的分配方式时,将形成不同的文件物理结构。1、连续分配1.1、连续分配......
  • 2、postgres数据导入
    目录postgres数据导入1、数据导入2、导入不存在数据库处理3、整库导入postgres数据导入1、数据导入psql-fuser_export.sql-hlocalhost-Umypguser-Wmypostgres参数说明:-f读取的sql文件-h导入的ip地址-U导入的用户-W导入指定的数据库2、导入不存在数据库处理......
  • 1、postgres数据导出
    目录postgres数据导出1、只导出所有对象的数据库结构2、只导出对应的数据库与数据3、只导出所有的表数据4、整个数据库导出postgres数据导出1、只导出所有对象的数据库结构pg_dump-fuser_export.sql-i-C-EUTF8-nmyschema-s-Umypguser-hlocalhost-Wmypostgres......
  • 1、postgres删除与创建schema
    目录postgres删除与创建schema1、删除schema语法2、创建schemapostgres删除与创建schema1、删除schema语法dropschema[schema_name];或者dropschema[ifexists][schema_name][cascade][restrict];参数说明:参数说明dropschema关键字,删除schema固定语法......
  • 利用 XGBoost 进行时间序列预测
    推荐:使用NSDT场景编辑器助你快速搭建3D应用场景XGBoost应用程序的常见情况是分类预测(如欺诈检测)或回归预测(如房价预测)。但是,也可以扩展XGBoost算法以预测时间序列数据。它是如何工作的?让我们进一步探讨这一点。时间序列预测数据科学和机器学习中的预测是一种技术,用于根据一......
  • Linux文件操作
    目录1.文件操作1.1创建文件1.2删除文件1.3压缩文件1.4解压文件2.0文件权限2.1查看文件权限2.2赋予文件可执行权限2.3去除文件可执行权限1.文件操作1.1创建文件#touch+文件名#例子:#创建一个文件touchhello.c#创建多个文件touchhello.chi.c1.2删除文件#......