博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
操作系统学习笔记:文件系统接口
阅读量:5985 次
发布时间:2019-06-20

本文共 2945 字,大约阅读时间需要 9 分钟。

计算机设备之间差异非常大,所以操作系统须要提供一组功能以便于应用程序控制这些设备。

操作系统的IO子系统的重要目的之中的一个是为系统其它部分提供最简单的接口。文件接口是接口之中的一个。

一、文件概念

1、文件属性
名称、标识符(文件系统内文件的唯一标签)、类型、位置(指向设备和设备上文件位置的指针)、大小、保护、时间

2、文件操作

1)创建。有两个必要步骤:第一必须在文件系统中为文件找到空间,第二在文件夹中为新文件创建一个条目

2)写

系统要为该文件维护一个写位置的指针。每当有写操作必须更新写指针。

3)读

为了读文件,使用一个系统调用,并指明文件名称称和要读入文件块的内存位置。系统为该文件维护一个读位置指针。读和写使用同一指针。

4)文件内重定位

设置当前文件位置指针(读写指针)为给定值。不须要真正的IO,又称为文件寻址。

5)删除

6)截断

以上是文件的6个基本操作。

为提高性能。绝大多数OS要求使用文件的时候,显式打开。

OS会维护一个全局的打开文件表,以满足各种文件操作须要用到的搜索、定位需求。每一个打开文件另一个文件计数器。以记录多少进程打开了该文件。

总的来说。打开文件有:

文件指针。文件打开计数器,文件磁盘位置,訪问权限

3、文件类型

实现文件类型的经常使用技术是在文件名称称内包含类型。比方採用名称 + 扩展名的方式,后者像UNIX。採用幻数(magic number),保存在文件的開始部分,但这些都不是必须的。

真正确定文件类型,或是否要使用该文件,由应用程序开发人员决定。文件扩展名并不是由操作系统所支持。仅仅用于给操作它们的应用程序以提示。

只是,像Mac OS X。每一个文件都有类型,创建时强制其创建者为对应的应用程序。

操作系统是否支持文件类型是一件非常纠结的事情。支持的文件类型太少,会非常不方便;太多又会让操作系统过大。

4、文件结构

磁盘系统通常具有明白的块大小,而逻辑记录则长度可变。

经常使用解决的方法是先将若干逻辑记录打包,再放入物理记录。

文件可当做一系列块的组合。文件最后一块一般会有浪费,块越大。内部碎片就越大。

二、訪问方法

1、顺序訪问(磁带模型)
读操作自己主动前移文件指针,写操作在文件尾部添加内容,文件指针移到新增数据后。

当然指针也可重置到開始位置,或者向前向后跳过N个记录。

顺序訪问适用于顺序訪问设备,也适用于随机訪问设备。

2、直接訪问(磁盘模型)

文件由固定长度的逻辑记录组成,按随意顺序进行高速读和写。
操作之时,块号作为參数传入,能够迅速定位。通常,这个由用户向操作系统提供的块号是相对块号。相对于文件開始的索引。

文件系统由这个块号做一定的运算。比方哈希运算,得到绝对块号。

对支持直接訪问的文件。当然也非常easy实现顺序訪问。

3、其它訪问方式

其它訪问方式可建立在直接訪问方式之上。这些訪问通常涉及创建文件索引。索引包含各块的指针。查找文件里的记录,首先搜索索引,再依据指针直接訪问文件。
对于大文件,索引会分级。

三、文件夹结构

同一个操作系统能够存在若干个文件系统。

这好理解,像我们的电脑中。一个盘是FAT32。另一个盘可能是NTFS。

1、存储结构

典型的文件系统组成

卷:硬盘上的存储区域。驱动器使用一种文件系统(如 FAT 或 NTFS)格式化卷,并给它指派一个驱动器号。单击“Windows 资源管理器”或“我的电脑”中对应的图标能够查看驱动器的内容。一个硬盘包含好多卷。一卷也能够跨越很多磁盘

2、文件夹概述

文件夹可看做符号表,能将文件名称称转换成文件夹条目。

文件夹有多种操作:

搜索文件、创建文件、删除文件、遍历文件夹、重命名文件、跟踪文件系统。所谓跟踪文件是指掌握整个文件系统的细节,有哪些文件夹和文件。使用情况怎样。等等。

3、单层结构文件夹

全部文件都在同一文件夹中,济济一堂,热闹。

便于理解和支持。但多用户时,会有严格限制。

比方文件名称唯一问题。

4、双层结构文件夹

每一个用户都有自己的用户文件文件夹。每一个用户的文件文件夹结构都一样。

当用户引用特定文件时。仅仅需搜索他自己的文件夹。再也不用操心自己的文件名称与其它用户的重名了。

这样的结构,假设用户全然独立是长处,但假设之间须要合作交互就是缺点。

这样的情况下。文件路径须要带上username(感觉相似数据库里面的schema)。

文件系统中的不同分区可看成是不同的用户。

有一个特例是系统文件。系统文件作为公用,假设仅仅能在用户自己文件文件夹内搜索的话。那么每一个用户文件夹都应该有一份,太浪费。解决的方法是定义一个特殊用户文件夹。全部系统文件置于当中。当须要搜索时。先搜用户文件夹,找不到就搜这个特殊文件夹。

5、树状结构文件夹

二层结构扩展而来。同意用户创建自己的子文件夹。

6、无环图文件夹

树状结构文件夹扩展。同意共享文件夹和文件,即同一文件可分属多个不同的文件夹。
UNIX中。共享文件夹或文件处理为链接。

7.通用图文件夹

无环图文件夹有时easy出现环。比方链接中,出现了自我引用的情况。

存在环可能会导致遍历文件夹时死循环。

应避免出现环,或者出现之后要消除,比方添加垃圾回收。消除哪些没有引用或自引用的链接。或者改变遍历算法,遍历文件夹时避开链接。

四、文件系统安装

文件系统要正确使用,必须安装

五、文件共享

1、多用户

2、远程文件系统

NFS:网络文件系统
DFS:分布式文件系统
1)客户机-server模型

2)分布式信息系统

为了便于管理客户机-server服务,提供用于远程计算所需信息的统一訪问

3)故障模式

远程文件系统非常easy出现各种故障,比方掉线等。

当故障出现时,客户机系统并不将此作为本地文件系统故障那样进行处理,但会终止对故障server的全部操作,或者等候直至server再次可用。

这样的故障语义由远程文件系统协议所定义和实现。通常,终止操作代价较大,绝大多数分布式文件系统在故障出现时,选择等候。

那么故障恢复时,客户机和server之间可能须要一定的状态信息。

NFS採用了一种简单的方法实现了无状态的DFS,但它不够安全。

3、一致性语义

多用户操作情况下。怎样保持文件一致性。

1)UNIX语义
用户的写操作,能够被其它所见
同意用户共享文件指针位置,移动文件指针会影响其它用户

採用UNIX语义,一个文件与单个物理映射关联。相互排斥訪问。

2)会话语义

用户写操作不能马上被打开同一文件的其它用户所见
文件关闭后,改动仅仅能被新打开的会话所见,已经打开的用户看不到

採用这样的语义。一个文件能够对多个物理映射进行关联,并发性非常好。

3)不可改动共享文件语义

既然是共享文件,就不能改动,仅仅读。

在分布式系统中实现这样的语义最简单。

六、保护

文件的保护包含可靠性保护和防止非法訪问。可靠性通常由文件备份提供;这里说的保护是指防止非法訪问。
1、訪问类型
通过限制可进行的文件訪问类型,比方说:
读、写、运行、加入、删除、列表清单

2、訪问控制

文件对应訪问控制列表。而此列表与全部者、组、其它成员组合使用。

3、其它保护方式

文件加password。

你可能感兴趣的文章
SDN in Action: Deploy VXLAN with MP-BGP EV_P_N
查看>>
Maven学习总结(八)——使用Maven构建多模块项目
查看>>
Docker镜像与容器命令
查看>>
Java培训-日期类
查看>>
项目范围管理论文提纲
查看>>
python给qq发邮件
查看>>
关于mysql的 qps tps
查看>>
bootstrap datetimepicker 添加清空按钮
查看>>
Json学习总结(1)——Java和JavaScript中使用Json方法大全
查看>>
Myeclipse优化配置
查看>>
四大Java EE容器之简单比较
查看>>
我的友情链接
查看>>
oracle 11gR2 RAC存储迁移
查看>>
<org manual>翻译--2.8 抽屉
查看>>
脚本部署lnmp环境
查看>>
swift--button的简单实用
查看>>
翻译:Fast dynamic extracted honeypots in cloud computing--4.DYNAMIC HONEYPOT SERVICE
查看>>
linux企业常用服务---nfs
查看>>
树莓派机器人(002)--机器人走动--电动
查看>>
HDFS数据更新到hbase表
查看>>