操作系统学习笔记:文件系统接口

原创 2015年07月21日 22:46:25

计算机设备之间差异很大,所以操作系统需要提供一组功能以便于应用程序控制这些设备。操作系统的IO子系统的重要目的之一是为系统其它部分提供最简单的接口。文件接口是接口之一。

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

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

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

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

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

5)删除
6)截断

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

为提高性能,绝大多数OS要求使用文件的时候,显式打开。OS会维护一个全局的打开文件表,以满足各种文件操作需要用到的搜索、定位需求。每个打开文件还有一个文件计数器,以记录多少进程打开了该文件。总的来说,打开文件有:
文件指针,文件打开计数器,文件磁盘位置,访问权限

3、文件类型
实现文件类型的常用技术是在文件名称内包含类型,比如采用名称 + 扩展名的方式,后者像UNIX,采用幻数(magic number),保存在文件的开始部分,但这些都不是必须的。真正确定文件类型,或是否要使用该文件,由应用程序开发者决定。文件扩展名并非由操作系统所支持,只用于给操作它们的应用程序以提示。

不过,像Mac OS X,每个文件都有类型,创建时强制其创建者为相应的应用程序。

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

4、文件结构
磁盘系统通常具有明确的块大小,而逻辑记录则长度可变。常用解决办法是先将若干逻辑记录打包,再放入物理记录。文件可当做一系列块的组合。文件最后一块通常会有浪费,块越大,内部碎片就越大。

二、访问方法
1、顺序访问(磁带模型)
读操作自动前移文件指针,写操作在文件尾部增加内容,文件指针移到新增数据后。当然指针也可重置到开始位置,或者向前向后跳过N个记录。
顺序访问适用于顺序访问设备,也适用于随机访问设备。

2、直接访问(磁盘模型)
文件由固定长度的逻辑记录组成,按任意顺序进行快速读和写。
操作之时,块号作为参数传入,可以迅速定位。通常,这个由用户向操作系统提供的块号是相对块号,相对于文件开始的索引。文件系统由这个块号做一定的运算,比如哈希运算,得到绝对块号。
对支持直接访问的文件,当然也很容易实现顺序访问。

3、其他访问方式
其他访问方式可建立在直接访问方式之上,这些访问通常涉及创建文件索引。索引包括各块的指针。查找文件中的记录,首先搜索索引,再根据指针直接访问文件。
对于大文件,索引会分级。

三、目录结构
同一个操作系统可以存在若干个文件系统。这好理解,像我们的电脑中,一个盘是FAT32,另一个盘可能是NTFS。
1、存储结构

典型的文件系统组成

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

2、目录概述
目录可看做符号表,能将文件名称转换成目录条目。目录有多种操作:
搜索文件、创建文件、删除文件、遍历目录、重命名文件、跟踪文件系统。所谓跟踪文件是指掌握整个文件系统的细节,有哪些目录和文件,使用情况如何,等等。

3、单层结构目录
所有文件都在同一目录中,济济一堂,热闹。便于理解和支持。但多用户时,会有严格限制。比如文件名唯一问题。

4、双层结构目录
每个用户都有自己的用户文件目录。每个用户的文件目录结构都一样。当用户引用特定文件时,只需搜索他自己的目录。再也不用担心自己的文件名与其他用户的重名了。

这种结构,如果用户完全独立是优点,但如果之间需要合作交互就是缺点。这种情况下,文件路径需要带上用户名(感觉类似数据库里面的schema)。文件系统中的不同分区可看成是不同的用户。

有一个特例是系统文件。系统文件作为公用,如果只能在用户自己文件目录内搜索的话,那么每个用户目录都应该有一份,太浪费。解决办法是定义一个特殊用户目录,所有系统文件置于其中。当需要搜索时,先搜用户文件夹,找不到就搜这个特殊目录。

5、树状结构目录
二层结构扩展而来。允许用户创建自己的子目录。

6、无环图目录
树状结构目录扩展。允许共享目录和文件,即同一文件可分属多个不同的目录。
UNIX中,共享目录或文件处理为链接。

7.通用图目录
无环图目录有时容易出现环,比如链接中,出现了自我引用的情况。存在环可能会导致遍历目录时死循环。应避免出现环,或者出现之后要消除,比如增加垃圾回收,消除哪些没有引用或自引用的链接。或者改变遍历算法,遍历目录时避开链接。

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

五、文件共享
1、多用户

2、远程文件系统
NFS:网络文件系统
DFS:分布式文件系统
1)客户机-服务器模型

2)分布式信息系统
为了便于管理客户机-服务器服务,提供用于远程计算所需信息的统一访问

3)故障模式
远程文件系统很容易出现各种故障,比如掉线等。当故障出现时,客户机系统并不将此作为本地文件系统故障那样进行处理,但会终止对故障服务器的所有操作,或者等候直至服务器再次可用。这种故障语义由远程文件系统协议所定义和实现。通常,终止操作代价较大,绝大多数分布式文件系统在故障出现时,选择等候。

那么故障恢复时,客户机和服务器之间可能需要一定的状态信息。NFS采用了一种简单的方法实现了无状态的DFS,但它不够安全。

3、一致性语义
多用户操作情况下,如何保持文件一致性。
1)UNIX语义
用户的写操作,可以被其他所见
允许用户共享文件指针位置,移动文件指针会影响其他用户

采用UNIX语义,一个文件与单个物理映射关联,互斥访问。

2)会话语义
用户写操作不能立即被打开同一文件的其他用户所见
文件关闭后,修改只能被新打开的会话所见,已经打开的用户看不到

采用这种语义,一个文件可以对多个物理映射进行关联,并发性很好。

3)不可修改共享文件语义
既然是共享文件,就不能修改,只读。

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

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

2、访问控制
文件对应访问控制列表,而此列表与所有者、组、其他成员组合使用。

3、其他保护方式
文件加密码。

版权声明:本文为博主原屙文章,喜欢你就担走。

相关文章推荐

操作系统总结之文件系统接口

文件在用户看来是再熟悉不过的名字了。因为能够创建文件,把一些数据放在文件中。文件系统包含了文件和目录。目录用以组织文件,包含了文件的简要信息。放在外存。在计算机中有许多不同的介质,而计算机把这些抽象成...

操作系统概念(第十章) 文件系统接口

文件概念文件是记录在外存上得相关信息的具有名称的集合。其具有连续的逻辑地址空间通常,文件表示数据和程序。数据文件可以包括,数字、字符、字符串或二进制。文件可以是自由形式,如文本文件,也可以具有严格的格...

windows:icacls命令行修改文件使用默认继承的ACL及ant脚本实现

windows下修改文件或文件夹的权限是使用icacls命令,关于使用icals的详细说明参见icacls的命令行帮助。 如果你只是简单的想让文件继承来自文件夹默认ACL,就很方便 ,执行下面的命令...
  • 10km
  • 10km
  • 2016年08月04日 11:43
  • 1154

操作系统学习笔记:分布式文件系统

分布式系统是一组不共享内存和时钟的处理器的集合,即每个处理器都有它自己的内存,处理器之间的通信可通过各种通信网络加以实现。...

STM32学习笔记之fatfs文件系统接口函数使用

FatFS文件系统包含了文件 ff.h         :文件系统实现头文件,定义有文件系统所需的数据结构 diskio.h  :底层驱动头文件,就一些状态宏的定义和底层驱动函数的申明 ...

操作系统概念--读书笔记之第十章文件系统接口

1 文件概念 概念 文件是记录在外存上的相关信息的具有名称的集合。 文件是逻辑外存的最小单元。 文件外部结构 因为文件类型过多,所以一般操作系统只支持少数几种必须的文件结构(避免操作系统过大)。...

操作系统概念(高等教育出版社,第七版)复习——第十章:文件系统接口

第十章 文件系统接口 基础知识 文件属性 名称,标识符,类型,位置,大小,保护,时间、日期和用户标志。 文件操作 创建文件、写文件、读文件、在文件内重定位、删除文件、截短文件。 每个打开文...

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之根文件系统挂载

经过前面的移植,新版BSP的uboot和kernel已经能够在tqimx6q开发板上运行了,接下来我们来挂载文件系统。 DTB整理 前面的文章中提到,新版BSP的DTB管理感觉不是太好,在之前移植的B...
  • girlkoo
  • girlkoo
  • 2015年05月04日 00:03
  • 8394

S5PV210(TQ210)学习笔记——内核移植与文件系统构建

由于之前做过2440和6410,鉴于时间原因,这里暂时跨过其他模块的裸机驱动和uboot移植,直接进入内核移植及驱动开发方面的学习。 内核移植其实很简单,因为内核是linus率领的linux内核开发团...
  • girlkoo
  • girlkoo
  • 2013年03月26日 09:45
  • 13887

EasyARM i.mx287学习笔记——根文件系统rootfs修改和烧写

本文详细说明如何修改和制作根文件系统,包括修改根文件系统中的配置文件;在根文件系统中加入可执行文件,最后通过uboot tftp方式烧录根文件系统和镜像。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:操作系统学习笔记:文件系统接口
举报原因:
原因补充:

(最多只允许输入30个字)