目录
一、文件的操作
对文件的操作不是操作系统重点关心的问题,无须做深入研究。
【总结】:
1. 文件的基本操作
文件属于抽象数据类型。为了正确地定义文件,需要考虑可以对文件执行的操作。操作系统提供系统调用,它对文件进行创建、写、读、重定位、删除和截断等操作。
1)创建文件
创建文件有两个必要步骤:一是为新文件分配必要的外存空间;二是在目录中为之创建一个目录项,目录项记录了新文件名、在外存中的地址及其他可能的信息。
2)写文件
为了写文件,执行一个系统调用。对于给定文件名,搜索目录以查找文件位置。系统必须为该文件维护一个写位置的指针。每当发生写操作时,便更新写指针。
3)读文件
为了读文件,执行一个系统调用。同样需要搜索目录以找到相关目录项,系统维护一个读位置的指针。每当发生读操作时,更新读指针。一个进程通常只对一个文件读或写,因此当前操作位置可作为每个进程当前文件位置的指针。由于读和写操作都使用同一指针,因此节省了空间,也降低了系统复杂度。
4)重新定位文件
也称文件定位。搜索目录以找到适当的条目,并将当前文件位置指针重新定位到给定值。重新定位文件不涉及读、写文件。
5)删除文件
为了删除文件,先从目录中检索指定文件名的目录项,然后释放该文件所占的存储空间,以便可被其他文件重复使用,并删除目录条目。
6)截断文件
允许文件所有属性不变,并删除文件内容,将其长度置为 0 并释放其空间。
这 6 个基本操作可以组合起来执行其他文件操作。例如,一个文件的复制,可以创建新文件、从旧文件读出并写入新文件。
2. 文件的打开与关闭
当用户对一个文件实施操作时,每次都要从检索目录开始。为了避免多次重复地检索目录,大多数操作系统要求,在文件使用之前通过系统调用 open 被显式地打开。操作系统维护一个包含所有打开文件信息的表(打开文件表)。
所谓 “打开” ,是指调用 open 根据文件名搜索目录,将指明文件的属性(包括该文件在外存上的物理位置),从外存复制到内存打开文件表的一个表目中,并将该表目的编号(也称索引)返回给用户。