文件系统实现

结合Linux系统,果然理解更进一步。

  1. 文件系统层次结构
    现代操作系统由多种文件系统类型,层次结构也不尽相同,但是一种基本的层次结构如下:
  • 用户调用接口
    文件系统为用户提供与文件及目录有关的调用
  • 文件目录系统
    主要功能是管理文件目录
  • 存取控制验证
    用户的访问要求和FCB中指示的访问控制权限进行比较,确认访问的合法性
  • 逻辑文件系统和文件信息缓冲区
    根据文件的逻辑结构将用户要读写的逻辑记录转换成文件逻辑结构内的相应块号,得到相应文件内容的逻辑地址。
  • 物理文件系统
    将逻辑记录所在的相对块号转换成实际的物理地址
  • 分配模块
    管理辅存空间,分配辅存空闲空间和回收辅存空间,如果要释放这块空间,那么交给辅助分配模块,如果要把这块空间分配给设备用于输入输出,那么把任务交给设备管理程序模块。
  • 设备管理程序模块
    分配设备,分配设备读写用缓冲区,磁盘调度,启动设备,处理设备中断,释放设备读写缓冲区,释放设备等。
  1. 目录实现
    目录项中提供了查找文件磁盘块所需要的信息,目录实现的基本方法有线性列表和哈希表。目录的实现就是为了查找。线性列表对应线性查找,哈希表实现对应散列查找。
  • 线性列表
    最简单的目录实现方法为使用存储文件名和数据块指针的线性表。
  • 哈希表
    哈希表通过文件名得到一个值,并返回一个指向线性列表中元素的指针。最大困难是哈希表长度固定和哈希函数对表长的依赖性。
  1. 文件实现
    抽象数据类型,研究其逻辑结构,物理结构和一系列操作。
    文件的实现就是研究其物理结构,文件数据在物理存储设备上是如何分布以及组织起来的。
    第一个是文件的分配方式,是对磁盘非空闲块的管理。
    第二个是文件存储空间管理,是对磁盘空闲块的管理。
  • 文件分配方式
    文件分配对应于文件的物理结构,指如何为文件分配磁盘块。
    • 连续分配
      每个文件在磁盘上占有一组连续的块,文件的连续分配可以用第一块的磁盘地址和连续块的数量来定义。一个文件的目录条目包括开始块的地址和该文件所分配区域的长度。
      支持顺序访问和直接访问,但是文件长度不宜动态增加,容易产生外部碎片。
    • 链接分配
      离散分配,消除了外部碎片。
      • 隐式链接
        每个文件对应一个磁盘块的链表,磁盘块分布在磁盘的任何地方,除最后一个磁盘块外,每一个盘块都有指向下一个盘块的指针(隐式),目录包括文件第一块的指针和最后一块的指针。
        无法直接访问盘块,只能根据指针顺序访问文件,另外可能导致链表中的指针丢失或者损坏,文件数据丢失。
      • 显式链接
        将链接文件各物理块的指针,从物理块的块末尾中提取出来,显示的放在内存一张链接表中,每个表项中存放对应块的下一块链接指针,即下一个盘块号。第一个盘块号,链首指针对应的盘块号,作为文件地址填入文件FCB的物理地址字段中。分配给该文件的所有盘块号都在该表中,称为文件分配表。
    • 索引分配
      将每个文件的所有的盘块号都集中放在一起构成索引块(表),可以随机访问。
      每个文件都有索引块,磁盘块地址的数组,索引块的第i个条目指向文件的第i个块,目录条目包括索引块的地址。
      支持大文件:为了处理大文件,将多个索引块链接起来。或者多层索引。混合索引,直接地址,单级索引分配方式或者两级索引分配方式。
  • 文件存储空间管理
    一个文件存储在一个文件卷中,文件卷可以是物理盘的一部分,也可以是整个物理盘,支持超大型文件的文件卷也可以由多个物理盘组成。
    在一个文件卷中,文件数据信息的空间(文件区)和存放文件控制信息FCB的空间(目录区)是分离的。
    文件管理模块,通过这些模块访问不同格式的逻辑卷中的文件,逻辑卷在提供文件服务前,必须由对应的文件程序进行初始化,划分好目录区和文件区,建立空闲管理表格及存放逻辑卷信息的超级块。
    文件存储设备的管理实质上是对空闲块的组织和管理,包括空闲块的组织,分配与回收等问题。
    • 空闲表法
      连续分配方式,为每个文件分配一块连续的存储空间,所有空闲区建立一张空闲盘块表,每个空闲区对应一个空闲表项。
      空闲区分配同样有首次适应算法,循环首次适应算法。
      考虑回收的时候进行合并。
    • 空闲链表法
      所有空闲盘区拉成一条空闲链。
      • 空闲盘块链
        盘块为单位拉成一条链。
      • 空闲盘区链
        空闲盘区(可能包含多个盘块)拉成一条链,每个盘区上除了含有指示下一个空闲盘区的指针外,还有本盘区的大小信息,分配使用首次适应算法,回收时,要将回收区与相邻接的空闲盘区合并。
    • 位示图法
      由位置号码计算盘块号,b=n(i-1)+j n表示一行多少位
      由盘块号计算行号列号 i=(b-1) DIV n+1取商的整数和余数
    • 成组链接法
      把顺序的n个空闲扇区地址保存在第一个空闲扇区中,其后一个空闲扇区则保存另一顺序空闲扇区的地址,直到所有空闲扇区都有链接,系统只需要保存一个指向第一个空闲扇区的指针。
      第一个成组链块以及卷中的目录区,文件区划分信息都需要保存在辅存储器中,一般放在卷头位置,UNIX系统中称之为超级块。在对卷中的文件进行操作之前,超级块预先读入系统空闲的主存,并且保持主存超级块和卷中超级块的一致。

Tips:

  1. 直接地址索引指向数据块大小就是物理块的大小,一级间接地址索引指向的数据块大小,是物理块容纳的地址项数目乘以物理块大小,二级间接地址索引指向的数据块大小,是物理块容纳的地址项数目的平方乘以物理块大小。
  2. 文件存储空间管理即文件空闲空间管理,文件管理要解决的问题是,如何为创建文件分配存储空间,即如何找到空闲盘块,并对其进行管理。
  3. 理解盘块数,FCB(目录项),物理盘块的大小,容纳的地址项数目相关的计算。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容