使用create的系统调用,需要提供的主要参数:
1.所需的外村空间;
2.文件存放路径;
3.文件名;

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

使用了Delete的系统调用:需要的参数创建文件,但是没有“所需的外存空间大小”;

操作系统处理Delete系统调用时需要做的事情;
1.根据文件路径找到对应位置的目录文件;
从目录文件中找到文件名对应的目录项;
2.根据目录项记录的文件在外存中的存放位置,文件大小等信息,回收文件占用的磁盘快;

使用open系统调用;三个参数

open系统调用处理的事情:


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

我们可以通过打开文件表份方便的实现某些文件管理功能。如图:

在正式开始读文件的时候,记事本进程已经有了该文件对应的表项,因此记事本进程只需要知道要读的文件对应的文件编号就可以了;



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

用户接口:文件的基本操作;
文件目录系统:文件目录;
存取控制模块:文件保护;
逻辑文件系统与文件信息缓冲区:文件的逻辑结构;
物理文件系统:文件的物理结构;
辅助分配模块:文件存储空间分配管理; 设备管理模块:磁盘管理,和硬件交互;
举例子来进行说明:

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