1. 创建文件(create系统调用)
- 在外存中找到文件所需的空间
- 在目录中为新文件创建目录项
2. 删除文件(delete系统调用)
- 从目录中找到文件名对应的目录项
- 回收文件占用的磁盘块
- 删除文件对应的目录项
3. 读文件(read系统调用)
- 打开文件
- 系统维护读指针,每当发生读操作,维护读指针;一个进程通过只对一个文件读或写,因此当前操作位置可作为每个进程当前文件位置的指针
- 关闭文件
4. 写文件(write系统调用)
- 打开文件
- 系统维护一个写位置的指针,每当发生写操作时,更新指针
- 关闭文件
5. 打开文件(open系统调用)
- 找到文件名对应的目录项,并检查该用户是否有指定的权限
- 将目录项复制到内存中的“打开文件表”中,并将对应表目的编号返回用户。之后用户使用打开文件表的编号操作文件
6. 关闭文件(close系统调用)
- 将进程打开的文件表相应表项删除
- 回收分配给该文件的内存空间等资源
- 系统打开文件表的打开计数器count减1,若count=0,则删除对应表项
7. 文件的打开和关闭
每个打开的文件都有如下关联信息:
- 文件指针。系统跟踪上次的读写位置作为当前文件位置的指针,这种指针对打开文件的进程是惟一的,因此必须与磁盘属性分开保存。
- 文件打开计数。多个进程可能同时打开一个文件,系统在删除文件条目之前,必须等待最后一个进程关闭文件。计数器跟踪打开和关闭的数量,计数为0时,系统关闭文件,删除该条目。
- 文件磁盘位置。
- 访问权限。每个进程打开文件都需要有一个访问模式(创建、只读、读写、添加等)。该信息保存在进程的打开文件表中,以便操作系统能够允许或拒绝之后的IO请求。
