目录

3.1文件系统结构

3.2文件系统布局

3.2.1文件系统在外存中的结构

3.2.2文件系统在内存中的结构

3.3外存空闲空间管理

3.3.1空闲表法

3.3.2空闲链表法

3.3.3位示图法

3.3.4成组链接法

3.4虚拟文件系统

3.5文件系统挂载(mounting)


3.1文件系统结构

从不同的角度出发有很多种文件层次结构图,但其基本功能基本一致。

3.2文件系统布局

3.2.1文件系统在外存中的结构

这部分内容与操作系统引导类似,文件系统也是操作系统的一部分。

  • 主引导记录(MBR),位于磁盘的0号扇区,操作系统的引导步骤为:主存的ROM中的BIOS→MBR→扫描分区表→PBR。
  • 引导块:每个分区都从一个引导块开始,负责启动该分区中的操作系统。
  • 超级块:包含文件系统的所有关键信息,计算机启动时读入内存。典型信息有分区的块数量及大小、空闲块的数量和指针、空闲的FCB数量和FCB指针。
  • 文件系统的空闲块信息可以使用位示图或空闲链表法等形式给出。可以使用索引结点进行优化。最后磁盘中还存放着所有目录和除目录之外的文件

3.2.2文件系统在内存中的结构

内存中的信息用于管理文件系统并通过缓存(cache)来提高性能。这些数据在安装文件系统时被加载,在文件系统操作期间被更新,在卸载时被丢弃。这些结构可能包括:

  • 内存中的安装表(mount table),包含每个已安装文件系统分区的有关信息。
  • 内存中的目录结构的缓存包含最近访问目录的信息。对安装分区的目录,它可以包括一个指向分区表的指针。
  • 整个系统的打开文件表,包含每个打开文件的FCB副本及其他信息。
  • 每个进程的打开文件表,包括一个指向整个系统的打开文件表中的适当条目的指针,以及其他信息。

进程的打开文件表的索引号也称“文件描述符”,“文件句柄”(对应UNIX和Windows)

3.3外存空闲空间管理

一个磁盘划分成多个文件卷(C盘、D盘)或多个磁盘组成一个文件卷(逻辑卷、逻辑盘)。文件卷包括目录区文件区

3.3.1空闲表法

适用连续分配方式,其基本思想和动态分区分配一致,相似问题也有空闲盘区的分配算法(首次适应算法、最佳适应算法、最坏适应算法等)、回收盘区后空闲盘块表的更改等问题。

3.3.2空闲链表法

  • 空闲盘块链:以盘块为单位,每一个空闲盘块记录下一个空闲盘块的指针
  • 空闲盘区链:以盘区(几个相邻的空闲盘块)为单位,每一个空闲盘区的首盘块记录下一个空闲盘区的指针和此盘区的长度

操作系统保存着链头链尾指针

3.3.3位示图法

 一个二进制位代表一个盘块(0为空闲)。

注意题中的字号与位号是不是从0开始编号。

3.3.4成组链接法

空闲表法和空闲链表法都不适用于大型文件系统,因为会使空闲表或空闲链表过大。UNIX中采用了成组链接法。

  • 超级块存在于文件卷目录区,在开机时读入内存。
  • 橙色部分表示下一组的空闲盘块数目。这一组的其中一个空闲盘块(如300)用来保存下下一组的空闲盘块信息。若没有下一组空闲盘块则盘块号设为-1。
  • 分配时如果出现当前组空闲盘块数不够的问题需要把下一个超级块复制到当前超级块,以此类推。
  • 回收时如果出现当前组空闲盘数量超出的问题需要把当前超级块复制到新回收的块,当前超级块更改内容。

3.4虚拟文件系统

操作系统中可能存在不同的文件系统,如Linux的ext3、ext2、vfat等。文件之间通过系统调用来实现跨文件系统操作。

虚拟文件系统(VFS,Virtual File System)为用户程序提供了文件系统操作的统一接口。严格说来,VFS并不是一种实际的文件系统。它只存在于内存中,不存在于任何外存空间。VFS在系统启动时建立,在系统关闭时消亡。 

为了实现VFS,Linus主要抽象了四种对象类型。

  • 在处理文件时,应用程序和内核空间使用的对象不同
  • 应用程序:打开文件时内核为其进程分配一个打开文件表的索引号(文件描述符),文件的读写等操作均通过该索引号进行。
  • 内核空间:一个索引结点对应一个文件,该inode可能对应应用程序的多个进程的多个文件描述符。

3.5文件系统挂载(mounting)

文件系统在进程使用前必须先安装,也称挂载

Window或MAC操作系统自动挂载创建的文件系统,Linux需要手动挂载,或者配置系统后自动挂载(编辑/etc/fstab文件)

mount:VFS的挂载描述符; umount:卸载文件系统操作,保存文件,退出挂载点/挂载目录后才可执行。

 

四、文件管理(三)文件系统相关推荐

  1. linux系统移植篇(四)—— 根文件系统使用介绍

    linux系列目录: linux基础篇(一)--GCC和Makefile编译过程 linux基础篇(二)--静态和动态链接 ARM裸机篇(一)--i.MX6ULL介绍 ARM裸机篇(二)--i.MX6 ...

  2. 数据恢复基础和进阶教程(四)---NTFS文件系统的特点及几种常用的数据恢复方法

    数据恢复基础和进阶教程(四)-NTFS文件系统的特点及几种常用的数据恢复方法 *在每逢年底必加班的大环境下,这两天单位比较忙,就连中午和晚上基本都不能按时休息,所以没及时更新最新的课程,抱歉.今天工作 ...

  3. 电赛经历--记难忘的四天三夜

    一个很菜很菜的菜鸡的电赛经历,但对于本人却意义深刻,对别人或许有启发,大佬勿喷 从大一起还没有参加过一个需要连续熬夜的比赛,记得第一次了解到电子设计大赛时,了解到他需要熬过四天三夜之后做出一个电子作品 ...

  4. html判断数字数据的大小写,大小写字母,特殊字符,数字,八位及以上四选三,全符合验证...

    大小写字母,特殊字符,数字至少八位以上验证 正则表达式:    ^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$ ...

  5. 四因素三水平正交表_做论文要用正交表?我打包送给你

    正交试验目前在国内的应用量仍然是比较高的,许多高校毕业生喜欢利用正交试验来获取研究数据,最终完成毕业论文的撰写或者期刊投稿.正交试验方案的设计,必然要用到(标准)正交表.那么大家都是从哪里获取正交表的 ...

  6. 谈谈四天三夜的感受【记录篇】

    四天三夜 对于参与全国大学生电子设计竞赛来说,是一种对意志的挑战: 对于陪媳妇生小孩来说,是一种对家庭的责任. 竞赛篇 相信关注我的朋友中,有一部分人参与过全国大学生电子设计竞赛. 全国大学生电子设计 ...

  7. 将连续生产参数与四班三运转班次对应起来的算法

    将连续生产参数与四班三运转班次对应起来的算法 背景介绍: 我们采用5分钟为采样周期,记录生产过程参数,数据记录是连续的,但生产工人是四班三运转轮流工作的.要想按生产稳定性指标对三班人员进行绩效考评,就 ...

  8. 深圳到武汉四天三夜计划安排

    武汉四天三夜计划安排表 提前准备: 1.订酒店 第一天 http://hotels.ctrip.com/hotel/6063199.html?isFull=F#ctm_ref=hod_sr_lst_d ...

  9. 简练软考知识点整理-四控三管一协调

    信息系统工程监理是指依法设立且具备相应资质的信息系统工程监理单位,受业主单位(建设单位)委托,依据国家有关法律法规.技术标准和信息系统工程监理合同,对信息系统工程项目实施的监督管理.      信息系 ...

  10. 京沪高铁四天三次事故有力地驳斥了“中国高铁侵犯日本高铁专利”的不实之词。...

    京沪高铁四天三次事故有力地驳斥了"中国高铁侵犯日本高铁专利"的不实之词,百分百地证明系我国自主研发.

最新文章

  1. XSKY发布两款存储产品 以Ceph为核心
  2. 通用权限管理系统组件 (GPM - General Permissions Manager)
  3. [剑指offer]面试题8:旋转数组的最小数字
  4. 数据开放平台的配置管理
  5. linux-shell入门-shell两种使用方式-shell的基本特性
  6. Day7--误差反向传播
  7. 蓝牙学习笔记(十)——BLE透传传输延迟分析
  8. Python 3.65 安装geopandas
  9. 域名卡密自助授权系统
  10. Directx8 学习笔记
  11. 关于设计行业的一些分类
  12. 2018蓝桥杯校选复现3
  13. jquery滚动条滚动事件_滚动条和jQuery –使用航点的事件处理
  14. 金仓数据库 KingbaseES Sys_repack 解决金仓数据库 KingbaseES 表膨胀的问题
  15. ”什么?穆冉不敢相信地看向穆大海
  16. Eureka-使用教程
  17. 获取浏览器中鼠标选中的文本内容
  18. php朋友圈九宫格怎么做,微信朋友圈九宫格视频怎么做 图片背景加九宫格视频随机播放的效果制作|微信九宫格视频...
  19. Leecode101_isSymmetric
  20. Undefined control sequence. 解决

热门文章

  1. 方舟手游服务器设置文件翻译,方舟生存进化手游界面中文翻译 语言不通不发愁...
  2. 美国大学计算机科学gpa,美国大学gpa计算
  3. android 给图片加文字、图片水印
  4. 利用 cv2 给图片添加文字
  5. Springboot中使用freemarker动态生成word文档
  6. 学习系列--最优学习内容选择
  7. ASAM XCP及驱动代码、ISO 11898+CANFD,ISO 14229,ISO 15031,ISO 15765相关标准文档
  8. PyScripter could not load a Python engine解决方案
  9. linux scp 排除文件夹,scp复制文件时排除指定文件
  10. Unbuntu环境编译 Android平台可用ffmpeg(带三方库fdk-aac和lame)