zoukankan      html  css  js  c++  java
  • 操作系统学习笔记(十一)-- 文件系统管理(下)

    最近开始学习操作系统原理这门课程,特将学习笔记整理成技术博客的形式发表,希望能给大家的操作系统学习带来帮助。同时盼望大家能对文章评论,大家一起多多交流,共同进步!

    本文主要分以下几个方面:

    • 文件系统结构 File-System Structure
    • 分配方法 Allocation Methods
    • 空闲空间分配 Free-Space Management
    • 目录实现 Directory Implementation

    文件系统结构:相关信息的集合

    • 文件系统在二级存储空间内
    • 文件系统以分层方式构建
    • 文件控制块(File control block) --> 包含目录的内容

    Application programs 应用程序 --> logical file system 逻辑文件结构 --> File organization module --> I/O control --> Devices

    组织结构:

    1. 连续分配 Contiguous Allocation -- 应用于记录型文件

    • 每个文件在磁盘上占据连续的物理块,假设每个块保存一个记录,则该文件有50个记录 --> 占据50个连续物理块
    • 简单-- 只需要开始地址与长度
    • 支持随机访问:可以任意的访问某个记录
    • 浪费空间(动态存储分配问题)
    • 文件长度不能增加
    • 从逻辑地址到物理地址的映射较简单

    2. 链接式分配:每一个块中有一个指针项,用于指明下一个块的块号

    • 每一个文件都是以链表形式连接的结构;块可以随意散列在磁盘中
    • 按需分配,按link方式连接

      优点: 简单,只需要起始地址; 空闲空间管理系统-没有浪费空间。

      缺点: 无法随机访问,访问效率低; 映射结构复杂

    如何使用一个指针实现双向链表的访问:将指针指设为该块上下块号的异或。

    3. 索引分配 Indexed Allocation

    把所有指针都装入一个专门的索引块。

    • 需要索引表(至少一级)
    • 支持随机访问
    • 动态访问没有外碎片,但会有索引块消耗
    • 从逻辑地址到物理地址的映射信息保存在索引块中

    组合机制 Combined Scheme:用于UNIX(每块4K)

    • 直接分配保存不超过12个块的值
    • 直接分配+索引分配

    空闲空间管理 Free-Space Management

    1. 位示图 Bit vector 一个大小为n的数组 bit[i] = 0=>block[i] free; 1=>block[i] occupied

      块号计算:

      从索引表中取实际物理块号:(number of bits per word) * (number of 0-value words) + offset of first 1 bit

      回收:物理块号以每个字的比特数为商取整取余。

      位示图会占据额外空间,假设块大小为212bytes=4KB,磁盘大小230bytes=1GB,则n=230/212=32KB.

      优点:

        1. 由于占用空间小,可以常驻内存,分配和回收速度相对磁盘较快

        2. 支持连续内存分配

        3. 支持链接分配和索引分配

      2. 空白块链 Linked List:不支持连续文件;没有空间浪费

      3. 空白文件目录 Counting: 类似于内存的分段式管理,支持连续空间分配

    性能和效率:

      效率取决于:

      • 磁盘分配和目录查找的方法
      • 文件的数据类型

      性能取决于:

      • 磁盘缓冲 disk cache
      • 延后释放 free-behind 和 提前读取 read-ahead
      • 在内存中开辟虚拟磁盘

    恢复 Recovery:对备份和当前磁盘内容进行一致性检查(Consistency Checher)

  • 相关阅读:
    Convert to a source folder or rename it.
    git revert 后悔了 还原修改前的版本 + git 常用命令
    android switch语句报错:case expressions must be constant expressions
    解读ContentResolver和ContentProvider
    sdk命令
    向Android模拟器中批量导入通讯录联系人
    Rational Rose2007下载安装教程以及问题处理
    java代码打包成jar以及转换为exe
    Timusoj 1982. Electrification Plan
    poj 3254 Corn Fields
  • 原文地址:https://www.cnblogs.com/PaulingZhou/p/5396761.html
Copyright © 2011-2022 走看看