前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >4.4 文件系统疑难点 3-4

4.4 文件系统疑难点 3-4

作者头像
week
发布2018-08-24 17:56:00
4980
发布2018-08-24 17:56:00
举报
文章被收录于专栏:用户画像用户画像

3、文件系统实现概述

(1)创建

为了创建一个文件,应用程序调用逻辑文件系统。逻辑文件系统知道目录结构形式。它将分配一个新的FCB给文件,把相应目录读入内存,用新的文件名更新该目录和FCB,并将结果写回到磁盘。

文件权限

文件日期(创建,访问,写)

文件所有者,组,ACL

文件大小

文件数据块

(2)打开

一旦文件备创建,它就能用于I/O,不过首先要打开文件。调用open将文件名传给文件系统,文件系统根据给定文件名搜索目录结构。部分目录结构通常缓存在内存中以加快目录操作。找到文件后,其FCB复制到系统范围的打开文件表。该表不但存储FCB,也有打开该文件的进程数量的条目。

然后,单个进程的打开文件表中会增加一个条目,并通过指针将系统范围的打开文件表的条目与其他域(文件当前位置的指针和文件打开模式等)相连。调用open返回的是一个指向单个进程的打开文件表中合适条目的指针,所以文件操作都是通过该指针进行的。

文件名中不必是打开文件表的一部分,因为一旦完成对FCB在磁盘上的定位,系统就不再使用文件名了。对于访问打开文件表的索引,UNIX称之为文件描述符;而Windows 2000称之为文件句柄。因此,只要文件没有被关闭,所有文件操作通过打开文件表来进行。

(3)当一个进程关闭文件,就删除一个相应的单个进行打开文件表的条目即目录项,系统范围内打开文件表的打开数也会递减。当打开文件的所有用户都关闭了一个文件时,更新的文件信息会复制到磁盘的目录结构中,系统范围的打开文件表的条目也将删除。

在实际中,系统调用open 会首先搜索系统范围的打开文件夹以确定某文件是否已被其他进程所使用。如果是,就在单个进程的打开文件表中创建一项,并指向现有系统范围的打开文件夹的相应条目。该算法在文件已打开时,能节省大量开销。

4、混合索引分配的实现

混合索引分配已在UNIX系统中采用。在UNIX SystemV的索引节点中,共设置了13个地址,即iaddr(0)~iaddr(12).在BSD Unix的索引结点中,共设置了13个地址项,它们都把所有的地址分为两类,即直接地址和间接地址。

(1)直接地址

为了提高对文件的检索速度,在索引结点中可以设置10个直接地址项,即用iaddr(0)~iaddr(9)来存放直接地址。换言之,在这里的每项中存放的是该文件数据所在盘块的盘块号。假如每个盘块的大小为4KB,当文件不大于40KB时,便可直接从索引结点中读出该文件的全部盘块号。

(2)一次间接地址

对于大、中型文件,只采用直接地址并不现实。可再利用索引结点的地址项iaddr(10)来提供一次间接地址。这种方式的实质就是一次索引分配方式。图中的一次间指块也就是索引块,系统将分配给文件的多个盘块号计入其中。在一次间址块中可存放1024个盘块号,因而允许文件长达4MB。

(3)多次间接地址

当文件长度大于4MB+40KB(一次间址与10个直接地址项)时,系统还须采用二次间址分配方式。这时,用地址iddr(11)提供二次间接地址。该方式的实质是二级索引分配方式。系统此时是在二次间址块中记入所有一次间址块的盘号。在采用二次间址方式时,文件最大长度可达4GB。同理,地址项iaddr(12)作为三次间接地址,其所允许的文件最大长度可达4TB.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年07月06日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档