操作系统之文件的基本操作

文件的基本操作

创建文件

使用create的系统调用,需要提供的主要参数:
1.所需的外村空间;
2.文件存放路径;
3.文件名;
操作系统之文件的基本操作_第1张图片
操作系统处理create系统调用时主要做的两件事:
1.在外存中找到文件所需的空间;
2.根据文件存放路径的信息找到该目录对应的目录文件,在目录中创建该文件对应的目录项;
目录项中包含了文件名,文件在外村中的存放位置等信息
操作系统之文件的基本操作_第2张图片

删除文件

使用了Delete的系统调用:需要的参数创建文件,但是没有“所需的外存空间大小”;
在这里插入图片描述
操作系统处理Delete系统调用时需要做的事情;
1.根据文件路径找到对应位置的目录文件;
从目录文件中找到文件名对应的目录项

2.根据目录项记录的文件在外存中的存放位置,文件大小等信息,回收文件占用的磁盘快
操作系统之文件的基本操作_第3张图片

打开文件

使用open系统调用;三个参数
操作系统之文件的基本操作_第4张图片
open系统调用处理的事情:
操作系统之文件的基本操作_第5张图片
在这里插入图片描述

用户和系统的打开文件表

1.系统有且仅有一张系统的打开文件表,返回的是对应文件的编号;
如图,编号就是文件的编号,打开计数器表示了该文件被几个用户进程打开;
2.用户进程表可以有多个,其中由于对文件读写指针和访问权限不同而被放在表项之中,另外有系统表索引号,用来指向系统的打开文件表中的某一个表项,表示用户对指向的文件进行某些操作;
3.用户进程的读写指针记录了该进程对用户的读写操作进行到的位置,不同用户的读写指针进行到的位置不一样,因此不同进程的读写指针也不一样;
4.访问权限则记录了该用户进程所能对该文件进行操作的权限,如果是只读,那么就不能进行写操作等等;
操作系统之文件的基本操作_第6张图片
我们可以通过打开文件表份方便的实现某些文件管理功能。如图:操作系统之文件的基本操作_第7张图片

关闭文件

操作系统之文件的基本操作_第8张图片

读文件

在正式开始读文件的时候,记事本进程已经有了该文件对应的表项,因此记事本进程只需要知道要读的文件对应的文件编号就可以了;
操作系统之文件的基本操作_第9张图片
操作系统之文件的基本操作_第10张图片

写文件

操作系统之文件的基本操作_第11张图片
读文件和写文件的区别:
读文件:从读指针指向的外存区域,将用户指定大小的数据读入用户指定的内存区域中;
需要明确的信息:指明是哪个文件(提供打开文件表中的文件索引号);指明要读入多少数据;指明要从外存读入的数据存放在内存中的什么位置;
写文件:从用户指定的内存区域中,将指定大小的数据写回写指针指向的外存;
需要明确的信息:指明是哪个文件(提供打开文件表中的文件索引号);指明要写出多少数据;指明要写回外存的数据存放在内存中的什么位置;

文件系统的层次结构

操作系统之文件的基本操作_第12张图片
用户接口:文件的基本操作;
文件目录系统:文件目录;
存取控制模块:文件保护;
逻辑文件系统与文件信息缓冲区:文件的逻辑结构;
物理文件系统:文件的物理结构;
辅助分配模块:文件存储空间分配管理; 设备管理模块:磁盘管理,和硬件交互;

举例子来进行说明:
操作系统之文件的基本操作_第13张图片
如图,用户给定文件路径,请求删除文件;
1.用户通过os提供的接口,发出请求删除文件的请求,操作系统执行删除的系统调用;
2.根据用户提供的文件的路径,os一层层的查找目录,找到文件对应的目录项;
3.不同的用户有着不同的操作权限,为了保证安全,检查用户是否具有访问权限;
4.验证了用户的访问权限之后,将用户提供的文件的记录号,转变为对应的逻辑地址;
5.将文件的逻辑地址转换成实际的物理地址;
6.向磁盘设备发出请求以删除这条记录;
7.删除记录后,会有磁盘空闲,将空闲磁盘回收;

你可能感兴趣的:(操作系统与Linux内核,操作系统,文件管理,文件的基本操作)