zoukankan      html  css  js  c++  java
  • 计算机专业课系列之五:漫谈文件系统

    一,机械硬盘

    二,文件和目录

    1,解释

    c:确定在哪个柱面

    h:确定在哪个磁头

    s:确定在哪个扇区

    先找到柱面,然后找到磁头(磁头决定哪个盘片),最后确定在哪个扇区。

    按照(C,H,S)将扇区形成一维扇区数组,数组索引就是扇区编号。

    2,用户是无法直接访问扇区的,操作系统把扇区抽象成文件。(文件是我们操作硬盘的最小单位)

    元数据:描述数据的数据

    3,文件系统的实现

    3.1,文件在内存中的结构

    每次打开一个文件,需要操作系统调用,系统调用需要查看一个表(系统范围的打开文件表 -- ->操作系统打开哪些文件,看一看有没有别的系统打开了)

    对于每个进程来说,它维护了一张表,里面记录了这个进程打开的文件。每个文件有一个索引号,索引号指向了系统范围打开的文件表。

    (每个进程打开的文件表中的索引号,在Linux中叫文件描述符(fd),在window中叫文件句柄)

    如果一个进程要打开的文件,在别的进程中没有被打开,就走上面的(a)过程。

    如果一个进程要打开的文件,在别的进程中已经被打开,就走上面的(b)过程。

    3.2,文件在磁盘中的结构

    4,文件的存储

    4.1,连续存储(想象成数组)

    优点:顺序访问速度非常快,

    缺点:出现内存碎片

    4.2,链式存储(想象成链表)

    缺点:随机访问慢

    4.3,索引存储

    如果文件比较大,一个节点就放不下了,引入间接块。

     

    5,目录

    5.1,

    5.2,例子

    5.3,文件系统(磁盘结构)

     5.4,空闲磁盘块管理

    三,页面缓存

  • 相关阅读:
    中台入门系列1
    微服务 2.0 技术栈选型手册
    mysql计划任务每天定时执行
    更高效地提高redis client多线程操作的并发吞吐设计
    azure之MSSQL服务性能测试
    .NET Socket服务编程之-高效连接接入编
    轻易实现基于linux或win运行的聊天服务端程序
    零配置Socket TCP消息通讯服务容器EC
    azure存储压测的问题(农码主观意识太强被坑了)
    业务逻辑层缓存应该设计
  • 原文地址:https://www.cnblogs.com/inspred/p/10806246.html
Copyright © 2011-2022 走看看