11.文件系统实现

  • 文件系统

    • 在存储设备上组织文件的方法和数据结构
    • 操作系统中负责管理和存储文件信息的模块
    • 系统角度
      • 对存储设备的空间进行组织和分配
      • 负责文件检索、读写等操作
      • 目标:存取速度和存储空间效率
    • 用户角度
      • 提供按名存取的文件访问机制
      • 文件的组织管理
      • 目标:方便的文件存取机制
  • 文件系统的层次架构

    • I/O控制
      • 设备驱动程序
      • 中断
    • 设备驱动程序
      • 控制I/O设备运行
      • 向硬件控制器发送专门控制命令
      • 操作系统通过设备驱动程序控制设备
    • 基本文件系统
      • 物理块读写
      • 向设备驱动程序发送控制命令,例如read drive 1
    • 文件组织模块
      • 管理文件、逻辑块和物理块
      • 把文件的逻辑地址转换为物理地址
      • 管理空闲空间
      • 为文件分配物理块
    • 逻辑文件系统
      • 管理文件系统中的元数据(除了文件数据外的所有结构数据)
      • 文件按名存取
      • 文件目录组织管理
      • 把文件名转换为文件ID,文件句柄
      • 管理FCB
      • 存储保护
  • 文件系统实现

    • 物理块:基本文件读写单位
    • 分区:磁盘分割成若干个独立的空间个空间称为分区
      • 两大类分区:主分区和扩展分区
      • 主分区:能够安装操作系统的启动分区
      • 扩展分区:不能直接使用,必须分成若干逻辑分区
    • 卷:磁盘上的逻辑分区,建立在物理分区上
      • 一般每个卷可以建立一个文件系统
    • 两种文件系统
      • 磁盘文件系统
      • 内存文件系统
    • 磁盘文件系统结构
      • 引导控制块:包含了系统引导操作系统的各种信息,只有安装操作系统的分区才有
        • UFS:引导块
        • NTFS:分区引导扇区
      • 分区控制块:包含分区信息
        • 总的块数、空闲块数、块大小等信息
        • UFS:超级块
        • NTFS:主控文件表
      • 目录和FCB
      • 用户文件
  • 磁盘文件系统

  • 内存文件系统

    • 包括:
      • 分区表:所有安装分区信息
      • 目录缓冲结构:保存最近访问的目录信息
      • 系统打开文件表
      • 进程打开文件表
    • 文件操作需要用到内存文件系统
    • 目的:通过缓冲技术提高文件系统性能、
  • 虚拟文件系统

    • 目的:
      • 支持多个文件系统
      • 把多个文件系统整合成一个目录结构
      • 为用户屏蔽各个文件系统的差异
    • 虚拟文件系统VFS:
      • 提供了一种面向对象的方法来实现文件系统
      • 为不同类型的文件系统提供了接入VFS的接口
      • 为用户提供了统一的系统调用接口
    • 文件系统接口
      • 统一的应用程序访问文件的接口
      • 如:open、close、read、write等
    • VFS接口
      • 为各类不同的文件系统定义VFS接口
      • 符合该接口的文件系统都可以接入VFS
  • 网络文件系统:NFS

    • 用于通过LAN(或WAN)访问远程文件系统的软件系统的实现或规范
    • 好处:节省存储空间,实现共享
  • CIFS

    • 通用Internet文件系统(Common Internet File System)
    • 在Windows主机之间进行网络文件共享
    • CIFS使用客户/服务器模式
  • 常用文件系统

    • Windows
      • FAT(File Allocation Table)
      • NTFS( New Technology File System )
      • ReFS (Resilient File System)
    • Linux
      • Ext
    • Mac OS
      • HFS
    • CD
      • CDFS
  • 物理块

    • 读写存储设备的基本单文
      • 文件读写操作时,以块为单位进行读写
      • 如:程序需要读1个字节,则OS把包含该字节的一块读入
      • 好处:减少读写次数,提高效率
    • 存储设备的基本分配单位
      • 以物理块为单位为文件分配存储空间
    • 和内存的页面大小相对应
      • 页面大小:4KB
      • 物理块大小:4KB的倍数
  • 逻辑块

    • 逻辑块:在文件空间中的块
      • 大小和物理块一致
      • 一个逻辑块存储在一个物理块中
  • 存储空间分配方式

    • 连续分配
  • 链接分配

  • 索引分配

  • 物理块块号

    • 一维空间
    • 从0开始编号
    • 可以根据物理设备的特性进行转换
  • 连续分配

    • 每个文件在磁盘上占用一组连续的物理块
    • FCB仅需给出:
      • 起始块号
      • 长度
    • 地址映射
      • 逻辑地址LA:文件内相对地址(一维)
      • 物理地址(B,D):存在在物理块中的地址(二维)
      • 物理块大小:S
      • 物理地址:
        • 访问块号B = Q + 起始块号
        • 块内偏移D
    • 性能分析
      • 优点
        • 支持随机访问
        • 存取速度快
        • 适用一次性写入操作
      • 例子:文件中偏移位12321位置的数据(块大小为4KB)
        • Q= [ 12321 / 4KB ] = 3 R=33
        • 读入块号b = Q + 起始块 = 3 + 6 = 9
      • 缺点
        • 浪费空间(小空间无法分配)
        • 文件不能动态增长(文件A)
        • 不利于文件的插入和删除(需要移动数据)
    • 连续分配的改进
      • 改进的连续分配方案
      • 基于扩展的文件系统(局部连续)
        • 扩展是一组连续的磁盘块集合
        • 扩展在文件分配时被分配
        • 一个文件可能包含一个或多个扩展
        • 需要一个指向下一个扩展的指针
  • 链接分配

    • 离散物理块分配方式
      • 连接分配
      • 索引分配
    • 链接分配
      • 文件信息存放在若干个不连续物理块中
      • 文件的所有物理块通过指针链接成链表结构
    • 分类
      • 显示链接
      • 隐式链接
  • 隐式链接

    • 链表的指针隐藏在物理块中
    • 每个物理块中的指针指向下一个物理块
    • FCB给出文件首块地址
    • 文件结束于空指针
    • 每个物理块用于存放文件信息的空间变小
      • 减去指针占据的空间
      • 4KB物理块,指针4Bytes:4092Bytes
    • 地址映射
      • 逻辑地址LA:文件内相对地址(一维)
      • 物理地址(B,D):存在在物理块中的地址(二维)
      • 物理块大小:S 指针大小:P
      • 物理地址
        • 访问块号B = 链表中第Q项对应的物理块块号
        • 块内偏移D = D
    • 性能分析
      • 优点
        • 可以离散存放,提高磁盘的利用率
        • 可以动态扩充文件大小
        • 便于文件的插入和删除操作
      • 缺点
        • 无法实现随机访问,访问文件慢(访问第i块,需要把0-(i-1)块都读入)
        • 可靠性差
      • 优化方法:多块集合成组
  • 显示链接

    • 隐式链接的问题
      • 指针分散存放
      • 为了读到一个指针而读入整个物理块
    • 显示链接
      • 指针集中存放
      • 把所有指针存放在一张链接表
    • 大大提高了检索速度
      • 先访问链接表,再访问物理块
    • 链接表一般在文件系统装载时装入内存
    • 链接表大小
      • 表项16位:最大2^16 * 2Bytes = 128KB
      • 表项32位:最大2^32 * 4Bytes = 16GB
    • 不适合大容量磁盘
      • 如4TB磁盘,物理块4KB
      • 链接表大小=(4TB/4KB)*4Bytes = 4GB
  • 显示链接例子:FAT

    • FAT文件系统是微软最早在MS-DOS开始使用的文件系统
    • FAT(File Allocation Table)
      • FAT12
      • FAT16
      • FAT32
      • FAT64(exFAT)
  • FAT32

    • 两份FAT表
    • 每个簇(物理块)固定为4KB~32KB
    • FAT表的表项占据32位
    • FAT表最大表项2^32项
    • 单个文件不能大于4GB
    • FAT32管理的单个最大磁盘空间:4KB*2^32 = 2TB

索引分配

  • 解决隐式链接分配的指针分配在各个块里的问题,解决方案是分散的FAT,为每个文件弄一个索引表
  • 多级索引
    • 大文件无法用单级索引实现
    • 访问块号B = Q1块索引的Q2项 块内偏移 D = R2

空闲空间管理

  • 空闲表适用连续分配
    • 空闲链表的分配是从连表头摘下适当的空闲块,回收就是空闲块加入尾部。
    • 优点:不需专用块存放管理信息,缺点:增加I/O操作,得到连续空间难
  • 位示图:利用二进制一位bit来表示一个块的使用情况
    • 1:盘块空闲,0:盘块已分配
    • 位示图需要额外的空间 n=230 / 212 =2 18
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容

  • Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。 内核、shell和文件系统一起形成了基本...
    请爱护小动物阅读 2,538评论 0 22
  • Linux系统一般有4个主要部分: 内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本...
    偷风筝的人_阅读 3,228评论 1 17
  • 以为自己能更好的生活,活的潇洒,随性,可是还是我以为的以为,你到底要折磨我到什么时候。 狠折磨,我想做回最真的我。
    酒青梅阅读 143评论 0 0
  • 一路绿灯,到站就来车。 公司前辈姐姐对我笑了,一下子所有之前的不顺被这一笑泯了恩仇。 换了宿舍这两天我才知道原来我...
    个己阅读 196评论 0 1
  • Day 74 愿实习顺利 11月幸运 烦恼通通远离你
    小懒说Yolo阅读 272评论 2 3