文件系统将用户的逻辑文件按一定的组织方式,转换成物理文件存放到外存(如磁盘)上。也就是说,文件系统为每个文件与该文件在外存上的存放位置建立了对应关系。为了方便使用,文件系统通常向用户提供了各种调用接口,用户通过这些接口对文件进行各种操作。当用户使用文件时,文件系统通过用户给出的文件名查找出该文件在外存上的存放位置,并读出文件的内容。有的文件操作是对文件自身的操作,如建立文件、打开文件、关闭文件、读写文件及设置文件权限等,有的文件操作是对记录的操作(最简单的记录可以是一个字符),如查找文件中的字符串、插入和删除等。
在多用户环境下,为了文件安全和保护起见,操作系统为每个文件建立和维护关于文件访问权限等方面的信息。因此,文件系统提供了操作文件的命令接口、图形接口和程序接口(系统调用)。用户可以使用命令接口和图形接口直接进行文件操作,或者在程序中通过系统调用实现文件操作。
1.文件创建
当用户进程将信息存放到外存上时,需要向系统提供文件名、设备号、文件属性及存取控制信息(文件类型、记录大小、保护级别等),以便建立文件。因此,文件系统应完成以下5种功能。
(1)根据设备号在所选外存设备上建立一个文件目录(即文件控制块FCB),并返回用户一个文件标识,用户在此后的读写操作中可以使用此文件标识。
(2)将文件名及文件属性等信息填入文件目录。
(3)调用文件存储空间管理程序为文件分配物理块。
(4)需要时发出提示装卷信息(如可装卸磁盘、磁带)。
(5)在内存活动文件表中登记该文件的有关信息。
在某些文件系统中,可以隐含地执行文件建立操作,即系统发现有一批信息要写入一个尚未建立的文件时,就自动先建立一个临时文件,当用户进程真正写文件时,才将临时文件中的信息写入用户命名的文件中。
2.文件打开
使用已经存放在外存(如磁盘)上的文件之前,要通过打开文件操作建立起文件与用户之间的联系。打开文件应完成以下三种功能。
(1)在内存活动文件表中申请一个空表目,用来存放该文件的有关信息。
(2)根据文件名查找目录文件,将找到的文件目录信息送入内存的文件控制块(FCB)中保存,并在内存活动文件表中登记打开的文件名及其在内存中的FCB地址。若打开的是共享文件则应进行相应处理,比如将共享用户数加1。
(3)文件定位,卷标处理。
文件一旦打开就可以被反复地使用直至文件关闭。这样做的优点是每次访问该文件时,无须再查找外存中的目录文件,而直接根据内存中该文件的FCB进行访问,从而减少了查找目录的时间,加快了文件的存取速度。
3.文件读写(www.xing528.com)
文件读操作是通过读指针将位于外存文件中的数据读到内存缓冲区;文件写操作是通过写指针将内存缓冲区中的数据写到外存文件中。文件打开以后,就可以使用读写文件的系统调用访问文件,要进行文件读写则应给出文件名、内存地址、读写字节数等有关信息。读写文件应完成以下4种功能。
(1)根据文件名从内存活动文件表中找到该文件的文件名及FCB地址。
(2)按存取控制说明检查本次访问的合法性。
(3)根据FCB中的文件目录得到该文件的逻辑和物理组织方式、文件存放的外存地址以及文件长度等信息。
(4)向设备管理发出I/O请求,依据得到的有关信息控制完成数据的传送。
4.文件关闭
一旦文件使用完毕应当及时关闭文件,关闭文件操作就是切断该外存文件与内存之间的联系。关闭文件时系统要做的主要工作有以下两项。
(1)从内存活动文件表中找到该文件的文件名,将当前使用的用户数减1,若减为0则撤销该文件在内存中的FCB,同时撤销内存活动文件表中登记的该文件有关信息。
(2)若此次打开文件改变了该文件目录项基本信息(在FCB中),则关闭文件时应将改变的信息写回外存目录文件中该文件所对应的目录项(该文件的FCB),以保证及时更新目录文件。
文件关闭之后若要再次访问该文件,则必须将其重新打开。
5.文件删除
当一个文件不再使用时,可以向系统提出删除该文件的请求。删除文件时系统要做的工作主要有以下两项。
(1)从目录文件中找到待删文件的目录项,使之成为空目录项。
(2)释放文件所占用的外存存储空间。此时,待删文件就被删除。
除上述常用的文件操作外,为了方便用户使用文件,通常文件系统都提供了有关文件操作的系统调用。可将这些系统调用分成若干类,最常用的一类是有关文件属性操作的,即允许用户直接设置和获得文件的属性,如改变已有文件的文件名、改变文件的所有者(文件主)、改变文件的访问权限以及查询文件的状态(包括文件类型、大小和所有者以及对文件的访问权限)等;另一类是有关目录的,如创建一个目录、删除一个目录、改变当前目录和工作目录等。此外,还有用于实现文件共享的系统调用和用于对文件系统进行操作的系统调用等。
要说明的是,许多文件操作可以利用上述基本操作加以组合来实现。如创建一个文件副本的操作可利用两条基本操作来实现:第一步是利用创建文件的系统调用来创建一个新文件,第二步是将原有文件中的内容写入新文件。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。