文章目录
- 创建文件
- 删除文件
- 打开文件
- 关闭文件
- 读文件
- 写文件
这些基本功能都是操作系统提供给应用程序的系统调用
创建文件
- 提供的参数
- 所需的外存空间大小
- 文件的存放路径
- 文件名(操作系统会有对应的默认名)
- 操作系统做的工作
- 在外存中找文件所需的空间——空闲链表法,位示图,成组链接法等管理等方法找到空闲空间
- 根据文件的存放路径的信息找到对应的目录文件,然后在目录文件中创建对应的目录项
删除文件
- 提供的参数
- 文件的存放路径
- 文件名
- 操作系统做的事情
- 根据文件存放路径找到相应的目录文件,根据文件名到目录文件中找到对应的目录项
- 根据目录项中的信息找到在外存的存放位置,文件大小等信息,回收占用的磁盘块
- 从目录表中删除对应的目录项
打开文件
-
需要提供的参数
- 文件的存放路径
- 文件名
- 要对文件的操作类型(只读R,读写RW)
-
操作系统做的事情
- 根据我们的文件存放路径,找到对应的目录文件,从目标文件中根据文件名找到对应的目录项,并检查该用户是否有指定的操作权限
- 将目录项复制到内存中**“打开文件表”**中,并把对应的表目的编号返回给用户,之后操作系统要打开文件表的编号要指明要操作的文件
- 打开文件表的作用我们再操作文件,就不需要重新查目录了,可以加快文件的访问速度
两种文件打开表
- 会为每个用户进程分配一个进程打开文件表
- 记录了对应编号 ,文件名
- 读写指针(来记录每个进程在这个文件的读和写所到的位置)
- 访问权限(每个进程对文件的访问权限不一样)
- 系统表索引号——因为其他关于这个文件的信息在系统的打开文件表
- 系统有一个大的打开文件表——方便实现文件的共享
- 有着文件的对应的信息
- 打开计数器:表明现在有几个进程在访问
关闭文件
- 根据进程给文件对应的编号去进程的打开文件表去查询
- 删除进程打开文件表相应的表项
- 回收分配给该文件的内存空间等资源
- 系统打开文件表的打开计数器count-1,若count=0,删除对应的表项
读文件
- 比如我们双击打开一个txt文件,起始是记事本应用程序通过操作系统提供的读文件的系统调用功能,将文件从外存读入内存,并显式在屏幕上
- 提供的参数
- 在支持打开文件的操作系统中,只需要提供文件在打开文件表中的索引号即可(读文件之前已经进行打开操作)
- 要读入多少数据
- 读入的数据放到内存的什么地方
- 操作系统做的事情
- 根据打开文件表中的指针位置从外存中将需要的数据读入内存
写文件
- 提供的参数
- 在支持打开文件的操作系统中,只需要提供文件在打开文件表中的索引号即可(写文件之前已经进行打开操作)
- 要写多少数据
- 写回数据要放到外存的什么地方
- 操作系统做的事情
- 根据打开文件表中的指针位置从外存中将需要的数据读入内存