文件和文件系统
目录
参考资料:
文件系统的管理功能是将其管理的程序和数据通过组织为一系列文件的方式实现的。
文件是指具有文件名的若干相关元素的集合。元素通常是记录,而记录又是一组有意义的数据项的集合。
基于文件系统的概念,可以把数据组成分为数据项、记录和文件三级。
1 数据项、记录和文件
数据项:在文件系统中,数据项是最低级的数据组织形式,可分为基本数据项(字段)和组合数据项,基本数据项除了数据名外,还对应有数据类型。
类似于数据库的字段
记录:记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。通常使用关键字(key)唯一标识一个记录。
数据库中的主键,唯一标识一条记录
文件:指由创建者所定义的、具有文件名的一组相关元素的集合,可分为有结构文件和无结构文件两种。
有结构文件由若干条相关记录组成,无结构文件则是一个字符流。文件在文件系统中是一个最大的数据单位,它描述了一个对象集。例如,可以将一个班的学生记录作为一个文件。
相当于数据库中的表,表就是一个文件
文件属性可以包括:文件类型、文件长度、文件的物理位置、文件的建立时间等。
2 文件名和类型
文件名:用于标识不同的文件。
扩展名:添加在文件名后面的若干个附加字符,又称为后缀名,用于指示文件的类型。例如,myprog.bin 中的扩展名 bin,表示该文件是一个可执行的二进制文件。
文件的类型:按文件中数据的形式分类
- 源文件:这是指由源程序和数据构成的文件。通常,由终端或输入设备输入的源程序和数据所形成的文件都属于源文件。它通常是由 ASCII 码或汉字所组成的。
- 目标文件:这是指把源程序经过编译程序编译过,但尚未经过链接程序链接的目标代码所构成的文件。目标文件所使用的后缀名是“.obj”。
- 可执行文件:指把编译后所产生的目标代码经过链接程序链接后所形成的文件。其后缀名是 “.exe”。
文件的类型还可以按用途、控制属性、组织形式和处理方式等进行分类。
3 文件的层次结构
文件系统的模型可分为三个层次:最底层是对象及其属性,中间层是对对象进行操纵和管理的软件集合,最高层是文件系统提供给用户的接口。
对象及其属性:文件管理系统管理的对象有:文件、目录、磁盘存储空间。
对对象操纵和管理的软件集合:其中包括文件存储空间的管理,文件目录的管理,文件的逻辑地址转换为物理地址的机制,文件的读写管理,文件的共享与保护等功能。
文件系统的核心
一般地,把与文件系统有关的软件分为四个层次:
- I/O 控制层:是文件系统的最低层,主要由磁盘驱动程序等组成,也可称为设备驱动程序层。
- 基本文件系统层:主要用于处理内存与磁盘之间数据块的交换。
- 基本 I/O 管理程序:该层用于完成与磁盘 I/O 有关的事务,如将文件逻辑块号转换为物理块号,管理磁盘中的空闲盘块,I/O 缓冲的指定等。
- 逻辑文件系统:用于处理与记录和文件相关的操作,如允许用户和应用程序使用符号文件名访问文件及记录,实现对文件和记录的保护等。
文件系统的接口:包括命令接口(使用命令直接交互)和程序接口(通过程序交互),主要是为了方便用户的使用。
为方便用户使用,产品一般都会提供两种方式的交互,即命令行式和程序方式
4 文件的操作
用户可以通过文件系统提供的系统调用实施对文件的操作。最基本的文件操作包括创建、删除、读、写和设置文件的读/写位置等。
此外,一般的 OS 都提供了更多对文件的操作,如打开和关闭一个文件及改变文件名等操作。
文件的打开和关闭
"打开"是指系统将指名文件的属性(包括该文件在外存上的物理位置),从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(索引号)返回给用户。“打开”,就是在用户和指定文件之间建立起一个连接。用户可通过该连接直接得到文件信息,从而避免了再次通过目录检索文件。
如果用户已不再需要对该文件实施相应的操作,可利用"关闭"(close)系统调用来关闭此文件,即断开此连接,OS 将会把该文件从打开文件表中的表目上删除掉。
文件的打开和关闭就是建立连接和关闭连接的过程。
使用关闭文件可以即时释放内存,避免内存泄漏