Skip to content

feat(fs): 添加多重间接块以支持大文件:增加软连接功能

zhangweijie requested to merge mit6.s081_fs into fs

fs

  1. 易混淆点
    1. 逻辑块号指的是addr中的下标号,通过逻辑号可以找到对应的物理块号
    2. 全局打开表和程级打开表,程级用来记录当前进程打开了哪些文件,而全局则是记录所有进程所打开的文件实例,当没有进程打开某个文件实例的时候,全局才会将其关闭。
    3. balloc分配了物理块过来,但实际上并没有清空,直接读会产生错误
    4. 软连接和硬链接的区别
      1. 软连接只是内容中存了目标文件的路径字符串
      2. 硬链接是共享inode,当目标文件被删除的时候,发现inode被其他文件引用,不会删除
  2. 软连接的实现原理
    1. 软连接实际就是一个分身,其核心还是指向某个文件,这里可以直接使用inode编号来指代(但是通用型不太好,如果源文件换了dev或者其他之类,可能失效)。(lab中的测试代码是在open的时候需要限制链接深度,所以换一种实现方式,将被连接文件路径保存起来)
    2. 文件名和其编号都是存在文件目录,所以新建软连接的时候,只需要对文件目录操作即可(或者直接将被连接文件的路径保存起来)
    3. 软连接文件可以软连接到某个软连接文件上,形成递归,为了防止无限制递归查找,或者软连接文件互相链接,需要作一个限制

Merge request reports

Loading