5

鸿蒙内核源码分析(文件系统篇) | 用图书管理说文件系统 | 百篇博客分析OpenHarmony源...

 2 years ago
source link: https://my.oschina.net/weharmony/blog/5165752
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

小易的解决方案

有个叫小易的小伙子提出了一种解决方案:

全仓库建大小相同的格子,这种格子统一叫单元格.甭管是什么内容最后都是放到格子里,若每个格子按 0.25*0.25*0.25 米算, 整个场地可建设成 640万个单元格.单元格有唯一且统一的编号.从0一直编到640万-1.

因为单元格太多,管理非常复杂,所以将场地分成大A区,大B区,大C区,.....N区,比如分成8大区,每个区分配80万个单元格. 大A区编号[0 - 799999],...依次类推.

每个大区又划分成统计区,目录区,图书区.

  • 统计区是描述整个图书馆和各分区的信息数据,占用1000个单元格
  • 目录区是为管理图书区而产生的信息,占19000个单元格,分成三块:
    • 索引表块(占18900个单元格):小易规定后续将用一页纸来记录书的索引信息,并把这页纸叫索引页,将索引页装订成一本索引表书,这本书有连续的统一的页编号(也叫条形码). 像大英百科全书这样有几百万页的一本书,不管后续在图书区里占用多少单元格,但其在索引表书中就是一张纸,这张纸有固定格式,记录书的名称,权限,修改时间等等信息.
    • 索引页位图块(占10个单元格):记录索引页的使用情况,0|1代表未使用|已使用.
    • 图书区单元格位图块(:占90个单元格):记录图书区单元格的使用情况,0|1代表未使用|已使用.
  • 图书区里放的是真正要管理的书籍,按单元格的容量来放,大点的书会分成多个单元格来存放.共占78万个单元格.

将以上信息简化成树形图表示如下:

└─图书馆  => 共 640万个单元格,平均被分成八大战区
    ├─大A区 => 80万单元格
    │  ├─图书区 => 78万个单元格
    │  ├─目录区 => 19000个单元格
    │  │  ├─图书区单元格位图块 => 90个单元格
    │  │  ├─索引表块 => 18900 个单元格
    │  │  │  ├─A文件索引页 => 信息登记表,占一页纸,描述一本书的名称,权限,时间 ==
    │  │  │  ├─...    
    │  │  │  └─B目录索引页
    │  │  └─索引页位图块 => 10个单元格
    │  └─统计区 (1000) => 记录图书馆和各分区的全局信息,使用频率高
    └─大B区
        ├─图书区
        ├─目录区
        │  ├─图书区单元格位图块
        │  ├─索引表块
        │  │  ├─A文件索引页
        │  │  ├─...           
        │  │  └─B目录索引页
        │  └─索引页位图块
        └─统计区
    ...    

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK