操作系统概念笔记——第十章:文件系统接口
Posted 叶卡捷琳堡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统概念笔记——第十章:文件系统接口相关的知识,希望对你有一定的参考价值。
文章目录
第十章:文件系统接口
文件系统由两个不同的部分构成
- 一组文件(文件用于储存相关数据)
- 目录结构(目录用于组织系统内的文件并提供有关文件的信息)
10.1 文件概念
文件是记录在外存上的相关信息的具有名称的集合。
从用户角度来说,文件是逻辑外存的最小分配单元。如果数据不在文件中,则不能被写入外存
数据文件的种类
- 数字
- 字符数字
- 二进制
通常,文件由位、字节、行或记录组成
10.1.1 文件属性
文件都有一定的属性,根据系统的不同而不同,通常包括以下属性
- 名称:文件名是唯一的,按照人熟悉的文字编写
- 标识符:标识文件系统内文件的唯一标签,通常为数字:对人而言这是不可读的文件名称
- 类型
- 位置
- 大小
- 保护:决定谁能读、写、执行等的访问控制信息
- 时间,日期和用户标识
所有文件信息都保存在目录结构中,而目录结构也保存在外存上。
10.1.2 文件操作
操作系统提供系统调用对文件进行创建、读、写、定位、删除和截短
1.创建文件
创建文件的两个步骤
- 在文件系统中为文件找到空间
- 在目录中为新文件创建一个条目
2.写文件
执行一个系统调用,指明文件名和要写入文件的内容。对于给定的文件名称,系统会搜索目录以查找该文件位置。
系统需要为这个文件维护一个写位置的指针。每当发生写操作时,必须更新写指针
3.删除文件
在目录中搜索给定名称的文件。找到后,释放其全部空间以便其它文件使用
4.截短文件
该函数不改变文件属性,只是将其长度设为0并释放其空间
上面这几种对文件的操作都需要给定文件并搜索相关目录条目,为了避免这种重复不断的搜索操作,许多系统要求在首次打开文件时,需要使用系统调用open()
操作系统维护一个包含所有打开文件的信息表(打开文件表),当一个文件需要操作时,可通过该表的一个索引指定文件,而不需要再次搜索。当文件不需要操作时,进程可以关闭它
每个打开的文件有如下信息
- 文件指针:跟踪上次读写位置作为当前文件位置指针
- 文件打开计数器:跟踪打开和关闭的数量,在最后关闭时计数器为0。这时,系统可删除此条目
- 文件磁盘位置
- 访问权限
文件锁
文件锁提供了类似之前的读者-写者锁
共享锁类似于读者锁,可以由多个进程并发获取
专用锁类似于写者锁,只有一个进程可获取此锁
课本上还有关于Java中文件加锁的例子
10.2 访问方法
文件用于存储信息,而在访问时,需要将这些信息写入计算机内存
文件信息可以按多种方式进行访问。有的系统只提供了一种访问方式,而有的系统则提供了多种访问方式
10.2.1 顺序访问
文件信息按顺序,一个记录接着一个记录地加以处理、
文件也可重新设置到开始位置,有的系统允许向前或向后跳过n个(n有时只能为1)记录
10.2.2 直接访问
文件由固定长度的逻辑记录组成,以允许程序按任意顺序进行快速的读和写
直接访问基于文件的磁盘模型,磁盘允许对任意文件块进行随机读和写
对于直接访问而言,文件可作为块或记录的编号序列。可先访问块14,再访问块53,再访问块7
对于直接访问文件,读写顺序没有限制
对于直接访问方式,文件操作必须经过修改从而能将块号作为其参数。因此,对于读n的操作,其中n是块号,而不是读下一个。对于写n的操作,不是写下一个。
当然,在有些直接访问中,也保留了读下一个和写下一个的操作
用户向操作系统所提供的块号通常为相对块号。相对块号是相对于文件开始的索引
有的系统块号从0开始,有的从1开始
10.2.3 其它访问方式
比如根据索引访问,等等。这一部分不太重要,不再赘述
10.3 目录结构
为了管理庞大的文件系统,需要组织这些文件,而这种管理涉及目录
10.3.1 存储结构
磁盘可以整体用于一个文件系统。当磁盘上需要装多个文件系统时,会将磁盘分成若干个部分,这些部分称为分区或片。每个磁盘分区可以创建一个文件系统
简单来说,可以将存储文件系统的一大块存储空间称为卷。设备目录记录卷上的所有文件的具体信息(名称,位置,大小,类型)
10.3.2 目录概述
目录可看作符号表,它能将文件名称转换成目录条目
关于目录的相关操作
- 搜索文件
- 创建文件
- 删除文件
- 遍历目录
- 重命名文件
- 跟踪文件系统
10.3.3 单层结构目录
单层结构目录,所有文件均在同一目录中
不足:当有多个用户时,由于单层目录要求有唯一名称,因此两个用户不能命名相同的文件名
10.3.4 双层结构目录
对于双层结构目录,每个用户都有自己的用户文件目录(UFD),每个UFD都有相似的结构,但只列出单个用户的文件
10.3.5 树状结构目录
用户可以创建自己的子目录,并组织文件
树状结构目录是最常用的目录结构,树有根目录,系统内每个文件都有唯一路径名
通常情况下,每个进程都有一个当前目录。当前目录包括这个进程可能需要用到的大多数文件。当需要文件时,就搜索当前目录。如果所需文件不在此目录中,那么用户必须指定路径名
其它部分不太重要,老师上课直接略去了,这里就不再赘述
以上是关于操作系统概念笔记——第十章:文件系统接口的主要内容,如果未能解决你的问题,请参考以下文章