【我的笔记】文件系统(二)文件系统、管理操作、存取方式

(一)文件系统

文件系统组成:驻留在外存中的数据管理结构(最基础);驻留在内存中的数据管理结构;文件系统的管理程序代码。

外存数据的损坏会导致文件系统的损坏。

1、外存数据结构

Linux称他的外存数据结构为超级块。

(1)EXT文件系统将分区划分成块组(Block Group)每个块组对应一组连续的存储块。

(2)FAT文件系统在外存的布局

FAT文件系统中,一个目录项就是一个文件控制块,目录是文件控制块的有序集合。一个文件只能有一个名字。

(3)NTFS在外存的布局

、主文件名、系统文件、文件区

(4)Ucore的SFS文件系统

2、内存数据结构

(1)内存数据结构是文件系统及其管理对象在内存的表示,其数据来源于外存数据结构。

内存中的数据结构是用户最近使用的文件系统在内存中的表示,包括:文件系统结构、FCB、目录项、打开的文件对象。(具体实现函数等见ppt)

(2)系统中可能同时存在多种文件系统,统一文件系统的一种方式是建立虚拟文件系统VFS(Virtual File System)略

3、管理程序

安装 eg:把bin下的安装到user中,则user跟bin中一样,原来的不在。 安装 --> 目录树直接拿过去。若再卸载一下,user中原来的内容又出现了。


(二)文件系统管理操作(结合Ucore)

略写,只记录有点知识点。

(1)128M的sts.img做SFS的磁盘,第0块为超级块 --> 根目录 --> 块位图 --> 文件。

磁盘文件sts.img的格式

连续存储(预先写入,也不允许新建)。

从“.”到“..”再往下找到目录项,看到名字是它,就看i节点的位置。

(2)安装

使用文件系统之前,必须先在内存中建立该文件系统的管理结构。建立文件系统管理结构的过程称为安装。

安装的目的--> 建立文件系统的超级结构块,并将其根目录嫁接在安装点目录之上,形成一个全局统一的文件视图。

ucore只有一种文件系统SFS。

mksfs(创建文件系统) --> sfs.img(即为disk0)。

安装(建立fs结构) --> 结构信息从disk0中来。

根据外存把内存文件系统管理结构建立起来。文件所有管理结构串成一个队列,同时存到hash表中方便查找。

多文件系统 --> 把这棵树 dsk1拼到 dsk0中,用其根目录覆盖安装点 --> 全部就一棵树

文件系统只能由超级用户安装。

最早的安装点是静态做的rootfs,仅有一个根目录,名为“/”,父目录是自己,其 inode 号是0。建立在内存块设备之上,设备号是0,块大小是4096.

(3)文件增长时,要为其分配逻辑块——ucroe 从低到高搜索文件系统的块位图

文件长度缩短或删除时,要释放逻辑块。

由于 indirect 块在内存中没有缓存,对它的修改要立刻写回磁盘。

逻辑块分配的原则 —— 尽力维持文件在块设备上的连续性。

SFS 没有考虑这个问题;

EXT 引入预分配机制——为每个文件建立一个预分配窗口(保证各文件的预分配窗口互不重叠,但不保证其中的逻辑快是空闲的)

这个窗口没有了就去下一个:

预分配窗口仅仅限定了搜索范围,其中的逻辑块并未真正分配给文件。动态创建,尺寸动态调整(8~1027)。

Lazy,第一次访问该文件时再创建根目录 inode。访问文件前,需解析路径名,找到与之对应的 FCB,并为其创建inode 结构。

(4)解析路径名

绝对路径名 & 相对路径名(上一讲)

路径名解析的开始位置就是参考点。整个路径名解析过程就是递归的。

如果某个目录项的名字与路径名相同,就可以获得其 ino 号(逻辑块号,对应的逻辑块中只有一个 sfs_disk_inode 结构),将sfs_disk_inode 结构读出,可以为其创建一个 inode 结构。

当 inode 的引用计数变成0时,说明文件已无用户,应释放掉它的 inode 结构。

(5)Linux 文件管理操作流程


(三)

1、文件逻辑结构

文件系统本身关心的是文件的属性及存储位置,用户关心的是文件的逻辑结构。

文件的物理结构描述文件在外存的存储方法;目录结构描述一组文件的组织方法;文件逻辑结构描述文件内容的组织方法。

(1)堆结构(pile)——数据顺序堆在一起,按序搜索、使用文件。

(2)顺序结构

若记录按键值排序,可用折半查找方法定位记录,搜索块。

(3)带索引顺序结构

顺序结构基础上:增加索引表(根据键值建索引);增加溢出文件(存储新增加的记录)

溢出文件中的记录定期合并到主文件上。

(4)多索引结构:根据不同域为一个文件建立多个索引,每个索引针对一个域。

(5)Hash结构

hash 结构的文件中,每个记录需要一个主键,记录存储的位置时由 hash 函数根据主键值计算得到的。可能有多个记录的 hash 值相同,所以用一个溢出文件保存 hash 值相同的记录。

2、文件存取方式

文件系统不关心文件的逻辑结构,通常将文件看成是一组连续的字节(字节流),或者一个字节数组。每个字节有自己的地址(相对文件开始地址的偏移量)。

连续是指下一字节的偏移量是上一字节的偏移量+1,不管物理上这些字节在什么位置。

文件存取方式:①顺序存取(缺省);②随机存取

文件存取方式与外存特性有关:磁带——顺序存取;磁盘——即可顺序存取,也可随机存取

文件存取方式与文件逻辑结构有关:堆和顺序结构——顺序存取;索引和 hash——课顺序也可随机

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容