Chapter 11 文件系统
11.1 文件系统
文件(file): 数据的有名集合,用于组织二级存储设备
文件系统(file system): 操作系统为它管理的文件提供的逻辑视图
目录(directory): 文件的有名分组
A. 文本文件和二进制文件
所有文件都可以被归类为文本文件或二进制文件
文本文件(text file): 包含字符的文件,数据字节是ASCII 或 Unicode字符集中的字符
二进制文件(binary file): 包含特定格式的数据的文件,要求给位串一个特定的解释 -- 位图\GIF\JPEG ..
注! 它们都是以二进制数据形式存储,只是格式化位数的方式不同。
高级语言编写的程序被存储为文本文件,称为源文件
要查看或修改一种特定类型的二进制文件,必须编写专用的程序。
B. 文件类型
文件类型(file type): 文件(如Java程序或Microsoft文档)中存放的关于类型的信息
文件扩展名(file extension): 文件名中说明文件类型的那部分
图形用户界面(GUI)
*如何将文件扩展名和应用程序关联起来是由所采用的操作系统决定
C. 文件操作
创建/删除文件:
操作系统用两种方式跟踪二级存储设备。它维护一个表以说明哪些内存块是空的,还为每个目录维护一个表,
以记录下该目录下文件的信息。要创建一个文件,操作系统需要先在文件系统中为文件内容找到一块可用空间
然后把该文件的条目加入正确的目录表中,记录文件的名字和位置。要删除一个文件,操作系统要声明该文件
使用的空间现在是空的,并要删除目录表中相应条目
打开/关闭文件:
大多数操作系统要求,在对文件执行读写操作前先打开该文件。操作系统维护一个记录当前打开的文件的小表,
以避免每次执行一项操作都在大的文件系统中检索文件。当文件不在使用的时候,要关闭它,操作系统删除打开
的文件表中的相应条目。
从文件中读取数据/把数据附加到文件结尾:
无论何时,一个打开的文件都有一个当前文件指针(一个地址),说明下一次读写操作要发生在什么位置.
有些系统还为文件分别设置读指针和写指针.所谓读文件,是操作系统提交文件中从当前文件指针开始的信息的副本
发生读操作后,文件指针将被更新.写信息是把指定的信息记录到由当前文件指针所指的文件空间中,
然后更新文件指针.通常,操作系统允许用户打开文件以便进行写操作或读操作,但不允许同时进行这两项操作
重定位文件中的当前文件指针/把数据附加到文件结尾:
打开的文件的当前指针可以被重定位到文件中的其他位置,以备下一次读或写操作.在文件结尾附加信息要求把
文件指针重定位到文件的结尾,然后再写入相应的数据
删除文件的内容:
有时删除文件中的信息是很有用的.所谓删除文件,是删除文件的内容,但不删除文件表中的管理条目.
提供这项操作是为了避免删除一个文件,然后又重新创建它.有时,删减操作非常复杂,可以删除从当前
文件指针到文件结尾的文件内容.
重命名文件:
操作系统还提供了更改文件名的操作,叫做重命名文件.此外,操作系统还提供了创建一个文件内容的完整副本
并给该副本一个新名字的功能
D. 文件访问
顺序文件访问法(sequential file access): 以线性方式访问文件的数据的方法
直接文件访问法(direct file access): 通过指定记录编号直接访问文件中的数据的方法
E. 文件保护
对于多系统,文件保护重要性首要。无论哪种情况,文件保护机制都决定了谁可以使用文件,以及为
什么目的的而使用文件
UNIX操作系统中的文件保护设置有三类,即Owner、Gruop、World
11.2 目录
目录是文件的有名集合,是一种按逻辑方式对文件分组的方法。
大多数操作系统都用文件表示目录。目录文件存放的是关于目录中的其他文件的数据。
对于任何指定的文件,目录中存放的有文件名、文件类型、文件存储在硬盘上的地址和文件当前的大小
此外,目录还存放文件的保护设置的信息,以及文件是何时创建的,何时被最后修改的。
A. 目录树
一个目录可以包含另一个目录。构成父子关系。于是文件系统形成一种分级结构,因此文件系统常常被看作
目录树,展示每个目录中的目录和文件。最高层的目录叫做根目录。
目录树(directory tree): 展示文件系统的嵌套目录组织结构
根目录(root directory): 包含其他所有目录的最高层目录
无论何时,都可以认为自己在在文件系统的某个特定位置(即特定的子目录)工作。
这个子目录叫做工作目录。只要在文件系统中移动,当前工作目录就会改变。
工作目录(working directory): 当前活动的子目录
B. 路径名
要用文本指定一个特定的文件,必须说明该文件的路径,即找到这个文件必须经历的一系列目录。
路径可以是绝对的,也可以是相对的。
绝对路径(absolute path): 从根目录开始,包括所有后继子目录的路径
相对路径(relative path): 从当前工作目录开始的路径
11.3 磁盘调度
实践表明,把数据传入传出二级存储设备是一般的计算机系统的首要瓶颈
在计算机同时处理多个进程的时候,将建立一个访问磁盘的请求列表。操作系统用于决定先满足
哪个请求的方法叫做磁盘调度。
磁盘调度(disk scheduling): 决定先满足哪个磁盘I/O的请求
A. 先到先服务磁盘调度法
FCFS算法按照请求到达的顺序处理它们,而不考虑读写头的当前位置
B. 最短寻道时间优先磁盘调度法
SSTF算法将通过尽可能少的读写头移动满足所有未解决的请求。
这种方法可能会在满足一个请求后改变读写头的移动方向
会出现"饿死",早期的请求可能一直未被响应 -- 柱面离当前较远
C. SCAN磁盘调度法
SCAN在磁盘调度时,读写头想轴心移动,然后在向盘片边缘移动,就这样在
轴心和盘片边缘来回移动