前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >操作系统从生磁盘到文件---19

操作系统从生磁盘到文件---19

作者头像
大忽悠爱学习
发布2022-08-23 10:51:28
2770
发布2022-08-23 10:51:28
举报
文章被收录于专栏:c++与qt学习

操作系统从生磁盘到文件---19


引入文件,对磁盘使用的第三层抽象

在这里插入图片描述
在这里插入图片描述

用户眼中的文件就是一串字符流,而站在磁盘角度来看,文件就是一堆盘块的集合。

因此,要将磁盘和文件联系起来,就需要将文件字符流和对应的盘块建立映射关系。


映射的作用

将一个文件映射到磁盘上的某个盘块上,常见思路就是建立对应的映射表。

在这里插入图片描述
在这里插入图片描述

假设这里文件在磁盘上都是连续存放的,此时有一个test.c文件,占据了6,7,8三个盘块的位置。

此时需要有一个映射表来记录当前文件对应盘块号的映射关系,这个表就是FCB,类比每个进程都有自己的PCB。

并且在test.c的FCB表中,因为是在磁盘中采用连续结构来实现文件存储的,因此映射表中只需要存放文件名,文件起始盘块号,和占用的盘块数即可。

当我们需要修改对应的文件时,首先需要计算出要修改文件的位置,具体属于哪个盘块号,然后发出读取对应盘块号的请求,就是将当前请求加入电梯队列中去,当磁盘中断发生并处理该请求后,对应的盘块数据被读入内存,然后在内存进行修改后,再重新放入磁盘中。


链式结构也可以实现文件

连续存储的结构适合读取和不适合动态增加,如果文件一直动态增大,那么就需要频繁的将文件整体进行copy,从而避免因为文件增大而覆盖掉其他盘块数据,这样显然是非常不方便的。

在这里插入图片描述
在这里插入图片描述

链表适合于动态变化的场景,而由此引出的弊端就是存取速度慢。


文件实现的第三种结构,索引结构

在这里插入图片描述
在这里插入图片描述

Linux 0.11采用的是索引结构,这里给出的是最简单的原型实现,此时FCB中存放的就是文件名和对应的索引块。

索引块就是每个文件在磁盘中都会分配一个盘块,该盘块中存放当前文件对应的盘块索引,这样印证了为什么linux 0.11源码出现的INODE的原因了,这里的I代表的就是index,对应存放的就是当前文件对应的索引相关信息。

当磁盘需要读写某个文件时,首先需要查询FCB读取中当前文件对应的索引块,然后再根据索引块中保存的索引信息,计算出当前要读取的数据位于哪个盘块号,然后再根据对应的盘块号去读取磁盘。


实际系统是多级索引

在这里插入图片描述
在这里插入图片描述

对于真实的操作系统而言,通常采用的多级索引,对于小文件来说,甚至不需要索引块,文件指针可以直接指向对应真实文件存放的盘块号,而对于中型文件来说,可能需要采用二级索引存储,而对应更大的文件则需要采用三级以上索引进行存储。

多级索引好处在于,可以存储很大的文件,并且访问速度也很快。

多级索引结构可以参考内存多级页表结构,采用章和小节的结构进行管理

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 操作系统从生磁盘到文件---19
  • 引入文件,对磁盘使用的第三层抽象
    • 映射的作用
      • 链式结构也可以实现文件
        • 文件实现的第三种结构,索引结构
          • 实际系统是多级索引
          相关产品与服务
          文件存储
          文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档