掌桥专利:专业的专利平台
掌桥专利
首页

文件管理方法、系统、电子设备及存储介质

文献发布时间:2024-04-18 19:54:45


文件管理方法、系统、电子设备及存储介质

技术领域

本申请涉及电子信息技术领域,具体而言,涉及文件管理方法、系统、电子设备及存储介质。

背景技术

用户空间文件系统(Filesystem in Userspace,Fuse)是运行在用户空间的文件系统,可针对接入电子设备的外部存储卡进行管理。目前Fuse不支持某些输入/输出(I/O)特性,比如无缓冲的输入、输出(O_DIRECT)特性和同步的输入、输出(例如O_SYNC、O_DSYNC或O_RSYNC等)特性,导致无法满足相应的行业定制类的用户需求。

举例而言,Fuse不支持O_DIRECT特性,使得Fuse在读写文件时有系统缓存。而随着电子设备的性能越来越高,用户隐私和权限成为了主要问题。如此,当电子设备上的应用程序(Application,APP)发送加密指令时,Fuse会缓存加密指令,使得加密指令不能实时地传输至存储卡(比如TF卡、SD卡等),进而导致APP访问存储卡失败,即存储卡获取来自于APP的信息时会失败。

发明内容

本申请提供文件管理方法、系统、电子设备及存储介质,以解决用户空间文件系统不支持某些输入/输出特性的问题。

本申请第一方面提供一种文件管理方法,应用于电子设备,电子设备设置有用户空间文件系统,用户空间文件系统包括虚拟文件系统、驱动模块、文件系统、应用程序及用户空间守护进程,文件管理方法包括:响应于打开第一文件的操作指令,通过应用程序调用open函数。通过虚拟文件系统从应用程序调用open函数。通过驱动模块从虚拟文件系统调用open函数。若open函数包括第一文件传输参数,通过用户空间守护进程从驱动模块调用open函数,并获取第一通道标识。其中,第一通道标识用以指向第一文件传输通道,第一文件传输通道用于传输驱动模块和文件系统之间的信息。根据open函数和第一通道标识建立第一文件传输通道,并通过文件系统向虚拟文件系统返回第一文件描述符。通过虚拟文件系统向用户空间守护进程返回第一文件描述符。通过用户空间守护进程向驱动模块返回第一文件描述符。通过驱动模块向虚拟文件系统返回打开所述第一文件的第一返回值。第一返回值用于指示第一文件打开成功或失败。通过虚拟文件系统向应用程序返回第一返回值。

采用该技术方案,当电子设备调用open函数打开存储卡里的第一文件时,首先通过驱动模块判断open函数是否包括第一文件传输参数。如果open函数包括第一文件传输参数,通过文件系统建立第一文件传输通道,并使用第一文件传输通道来传输驱动模块和文件系统之间的信息,可以支持第一文件传输参数对应的打开第一文件的I/O特性,从而满足行业定制类的用户需求,提升用户体验。

在其中一种实施方式中,在通过用户空间守护进程从驱动模块调用open函数,并获取第一通道标识之前,文件管理方法还包括:通过驱动模块存储open函数中的第一文件传输参数。其中,第一文件传输参数包括以下任一种参数:O_DIRECT参数、O_SYNC参数、O_DSYNC参数、O_RSYNC参数。

采用该技术方案,电子设备通过驱动模块存储open函数中的第一文件传输参数,从而可以在驱动模块中查询第一文件传输参数。第一文件传输参数包括O_DIRECT参数或O_SYNC参数或O_DSYNC参数或O_RSYNC参数,相应地可以支持O_DIRECT特性或O_SYNC特性或O_DSYNC特性或O_RSYNC特性,从而满足相应的行业定制类的用户需求,提升用户体验。

在另一种实施方式中,在通过用户空间守护进程从驱动模块调用open函数,并获取第一通道标识之后,文件管理方法还包括:通过用户空间守护进程存储open函数中的第一文件传输参数。

在另一种实施方式中,在通过用户空间守护进程向驱动模块返回第一文件描述符之后,文件管理方法还包括:通过驱动模块将第一文件描述符存储到第一文件传输参数所在的结构体中。或者,通过驱动模块以键值对的方式存储第一文件描述符和第一文件传输参数。

采用该技术方案,电子设备通过驱动模块将第一文件描述符存储到第一文件传输参数所在的结构体中,或者,以键值对的方式存储第一文件描述符和第一文件传输参数,可以将第一文件描述符关联到第一文件传输参数,从而可以通过第一文件描述符查询到第一文件传输参数。

在另一种实施方式中,在通过驱动模块向虚拟文件系统返回打开第一文件的第一返回值之前,文件管理方法还包括:若open函数不包括第一文件传输参数,通过用户空间守护进程从驱动模块调用open函数,并获取第二通道标识。其中,第二通道标识用以指向第二文件传输通道,第二文件传输通道用于通过虚拟文件系统转发驱动模块和文件系统之间的信息。通过虚拟文件系统从用户空间守护进程调用open函数,并获取第二通道标识。通过文件系统从虚拟文件系统调用open函数,并获取第二通道标识。根据open函数和第二通道标识建立第二文件传输通道,并通过文件系统向虚拟文件系统返回第二文件描述符。通过虚拟文件系统向用户空间守护进程返回第二文件描述符。通过用户空间守护进程向驱动模块返回第二文件描述符。

采用该技术方案,如果open函数不包括第一文件传输参数,则电子设备通过文件系统建立第二文件传输通道,并使用第二文件传输通道来传输驱动模块和文件系统之间的信息,可以支持第二文件传输参数对应的打开第一文件的I/O特性,从而满足行业定制类的用户需求,提升用户体验。

在另一种实施方式中,在通过用户空间守护进程从驱动模块调用open函数,并获取第二通道标识之前,文件管理方法还包括:通过驱动模块存储open函数中的第二文件传输参数。其中,第二文件传输参数不包括以下任一种参数:O_DIRECT参数、O_SYNC参数、O_DSYNC参数、O_RSYNC参数。

采用该技术方案,当open函数不包括第一文件传输参数时,open函数包括第二文件传输参数。电子设备通过驱动模块存储open函数中的第二文件传输参数,从而可以在驱动模块中查询第二文件传输参数。第二文件传输参数不包括O_DIRECT参数或O_SYNC参数或O_DSYNC参数或O_RSYNC参数,相应地可以支持非O_DIRECT特性或非O_SYNC特性或非O_DSYNC特性或非O_RSYNC特性,从而满足相应的行业定制类的用户需求,提升用户体验。

在另一种实施方式中,在通过用户空间守护进程从驱动模块调用open函数,并获取第二通道标识之后,文件管理方法还包括:通过用户空间守护进程存储open函数中的第二文件传输参数。

在另一种实施方式中,在通过用户空间守护进程向驱动模块返回第二文件描述符之后,文件管理方法还包括:通过驱动模块将第二文件描述符存储到第二文件传输参数所在的结构体中。或者,通过驱动模块以键值对的方式存储第二文件描述符和第二文件传输参数。

采用该技术方案,电子设备通过驱动模块将第二文件描述符存储到第二文件传输参数所在的结构体中,或者,以键值对的方式存储第二文件描述符和第二文件传输参数,可以将第二文件描述符关联到第二文件传输参数,从而可以通过第二文件描述符查询到第二文件传输参数。

在另一种实施方式中,文件管理方法还包括:响应于写入或读取第一文件的操作指令,通过应用程序调用write函数或read函数。通过虚拟文件系统从应用程序调用write函数或read函数。通过驱动模块从虚拟文件系统调用write函数或read函数,并查询第一文件对应的文件传输参数。若文件传输参数为第一文件传输参数,通过驱动模块调取第一文件描述符。通过第一文件传输通道从驱动模块调取第一文件描述符,并调用write函数或read函数,通过第一文件描述符查询第一文件,并对第一文件进行写入或读取操作,及向驱动模块返回写入或读取操作的第二返回值,第二返回值用于指示第一文件写入或读取成功或失败。通过驱动模块向虚拟文件系统返回第二返回值。通过虚拟文件系统向应用程序返回第二返回值。

采用该技术方案,当电子设备调用write函数或read函数写入或读取第一文件时,首先通过驱动模块判断第一文件对应的文件传输参数是否为第一文件传输参数。如果文件传输参数为第一文件传输参数,通过第一文件传输通道从驱动模块调取第一文件描述符,并调用write函数或read函数,通过第一文件描述符查询第一文件,并对第一文件进行写入或读取操作,可以支持第一文件传输参数对应的写入或读取第一文件的I/O特性,从而满足行业定制类的用户需求,提升用户体验。

在另一种实施方式中,在通过第一文件传输通道从驱动模块调取第一文件描述符之前,文件管理方法还包括:将写入或读取操作的接口转换成适配虚拟文件系统的接口,虚拟文件系统的接口用于为各种格式的第一文件提供统一的写入或读取操作的接口。

在另一种实施方式中,在通过驱动模块向虚拟文件系统返回第二返回值之前,文件管理方法还包括:若文件传输参数不是第一文件传输参数,通过驱动模块调取第二文件描述符。通过第二文件传输通道从驱动模块调取第二文件描述符,并调用write函数或read函数,通过第二文件描述符查询第一文件,并对第一文件进行写入或读取操作,及向驱动模块返回第二返回值。

采用该技术方案,如果文件传输参数不是第一文件传输参数,电子设备通过第二文件传输通道从驱动模块调取第二文件描述符,并调用write函数或read函数,通过第二文件描述符查询第一文件,并对第一文件进行写入或读取操作,可以支持第二文件传输参数对应的写入或读取第一文件的I/O特性,从而满足行业定制类的用户需求,提升用户体验。

在另一种实施方式中,文件管理方法还包括:响应于关闭第一文件的操作指令,通过应用程序调用close函数。通过虚拟文件系统从应用程序调用close函数。通过驱动模块从虚拟文件系统调用close函数,并确定驱动模块中缓存有第一文件对应的文件传输参数。通过用户空间守护进程从驱动模块调用close函数,并确定用户空间守护进程中缓存有文件传输参数。通过虚拟文件系统从用户空间守护进程调用close函数。通过文件系统从虚拟文件系统调用close函数,关闭文件传输通道,并向虚拟文件系统返回关闭第一文件的第三返回值,第三返回值用于指示第一文件关闭成功或失败。通过虚拟文件系统向用户空间守护进程返回第三返回值。通过用户空间守护进程清理缓存的文件传输参数和文件传输参数的相关信息。其中,文件传输参数的相关信息包括文件传输通道对应的通道标识和文件描述符。通过用户空间守护进程向驱动模块返回第三返回值。通过驱动模块清理缓存的文件传输参数和文件传输参数的相关信息。通过驱动模块向虚拟文件系统返回第三返回值。通过虚拟文件系统向应用程序返回第三返回值。

采用该技术方案,当电子设备调用close函数关闭第一文件时,首先确定驱动模块和用户空间守护进程中缓存有第一文件对应的文件传输参数,然后通过文件系统关闭文件传输通道,通过驱动模块和用户空间守护进程清理缓存的文件传输参数和文件传输参数的相关信息,可以拆除打开第一文件时建立的文件传输通道,并清理打开第一文件时缓存的数据,释放系统资源,从而满足行业定制类的用户需求,提升用户体验。

本申请第二方面提供一种文件管理系统,文件管理系统包括虚拟文件系统、驱动模块、文件系统、应用程序及用户空间守护进程。其中,应用程序用于响应于打开第一文件的操作指令,调用open函数。虚拟文件系统用于从应用程序调用open函数。驱动模块用于从虚拟文件系统调用open函数。若open函数包括第一文件传输参数,用户空间守护进程用于从驱动模块调用open函数,并获取第一通道标识。其中,第一通道标识用以指向第一文件传输通道,第一文件传输通道用于传输驱动模块和文件系统之间的信息。虚拟文件系统还用于从用户空间守护进程调用open函数,并获取第一通道标识。文件系统用于从虚拟文件系统调用open函数,并获取第一通道标识,根据open函数和第一通道标识建立第一文件传输通道,及向虚拟文件系统返回第一文件描述符。虚拟文件系统还用于向用户空间守护进程返回第一文件描述符。用户空间守护进程还用于向驱动模块返回第一文件描述符。驱动模块还用于向虚拟文件系统返回打开第一文件的第一返回值,第一返回值用于指示第一文件打开成功或失败。虚拟文件系统还用于向应用程序返回第一返回值。

本申请第三方面提供一种电子设备,电子设备包括处理器和存储器,处理器通过执行存储于存储器中的计算机程序,实现本申请第一方面提供的文件管理方法。

本申请第四方面提供一种存储介质,用于存储计算机程序,当计算机程序被处理器执行时,实现本申请第一方面提供的文件管理方法。

可以理解,本申请第二方面至第四方面的具体实施方式和有益效果与本申请第一方面提供的文件管理方法的具体实施方式和有益效果相同,此处不再赘述。

附图说明

图1是本申请提供的一种文件管理系统的架构示意图。

图2是本申请提供的一种文件管理方法的流程图。

图3是电子设备基于图1所示的文件管理系统打开存储卡里第一文件的原理示意图。

图4是电子设备基于图1所示的文件管理系统打开存储卡里第一文件的信息交互场景示意图。

图5是本申请提供的另一种文件管理方法的流程图。

图6是电子设备基于图1所示的文件管理系统写入存储卡里第一文件的原理示意图。

图7是电子设备基于图1所示的文件管理系统写入存储卡里第一文件的信息交互场景示意图。

图8是本申请提供的另一种文件管理方法的流程图。

图9是电子设备基于图1所示的文件管理系统关闭存储卡里第一文件的原理示意图。

图10是电子设备基于图1所示的文件管理系统关闭存储卡里第一文件的信息交互场景示意图。

图11是本申请提供的电子设备的结构示意图。

具体实施方式

需要说明的是,本申请实施例中“至少一个”是指一个或者多个,“多个”是指两个或多于两个。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。本申请的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不是用于描述特定的顺序或先后次序。

另外需要说明的是,本申请实施例中公开的方法或流程图所示出的方法,包括用于实现方法的一个或多个步骤,在不脱离权利要求的范围的情况下,多个步骤的执行顺序可以彼此互换,其中某些步骤也可以被删除。

下面对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。

1,通道(Channel)

通道能够通过执行通道指令实现输入/输出(I/O)控制。通道指令也称通道控制字CCW,它是通道用于执行I/O操作的指令。在采用通道的系统中,通道指令不直接控制I/O数据的传送,而是负责启动、停止I/O的过程、查询通道和I/O设备的状态、控制通道进行I/O操作。

在本文中,文件传输通道是可读、可写、可映射和操作文件的通道。利用open函数可以创建一个文件传输通道,通过该文件传输通道可以访问一个文件。

2,通道标识

每个通道均对应有一个通道标识,通道标识用以指向其对应的通道。例如,一个编号为a的通道对应的通道标识可为Channel a。

3,文件描述符(file descriptor)

内核(kernel)利用文件描述符来访问文件。文件描述符是非负整数。打开或新建一个文件时,内核会返回一个文件描述符。文件描述符是一个索引值,指向被打开的文件。

4,open函数

open函数中包括以下参数:文件传输路径(pathname)和文件打开标志(flag)。文件传输路径用以指向文件在存储卡或电子设备里的位置。文件打开标志用于指定打开文件的操作模式。文件打开标志包括主标志和副标志。其中,主标志包括以下参数:O_RDONLY、O_WRONLY和O_RDWR。O_RDONLY参数用于以只读的方式打开文件,O_WRONLY参数用于以只写的方式打开文件,O_RDWR参数用于以可读写的方式打开文件。主标志是互斥的,只能使用其中一种参数。

副标志包括以下参数:O_APPEND、O_CREAT、O_EXCL、O_TRUNC、O_SYNC、O_DSYNC、O_RSYNC和O_DIRECT。其中,O_APPEND参数用于以追加的方式打开文件,即读/写文件从文件尾部开始移动,所写入的数据追加到文件尾部。O_CREAT参数用于创建一个文件,若路径中的文件不存在则自动建立该文件。当同时使用O_EXCL参数与O_CREAT参数时,若路径中的文件已经存在则打开文件出现错误。O_TRUNC参数用于删除文件内容,如果路径中的文件已经存在则删除该文件中的内容。O_SYNC参数用于以同步I/O的方式打开文件,每次写操作都等待物理I/O完成,包括写操作引起的文件属性的更新。O_DSYNC参数与O_SYNC参数类似,每次写操作都等待物理I/O完成,但是如果写操作不影响读取刚写入的数据,则不等待文件属性更新。O_RSYNC参数用于在读操作时等待磁盘(disk)上的写操作完成。O_DIRECT参数用于以无缓冲I/O的方式打开文件,即读/写操作都不经过系统缓存(OS cache),直接在磁盘上读/写。副标志可与主标志配合使用,副标志可同时使用多个。

在本文中,open函数包括O_DIRECT参数是指open函数中的文件打开标志包括O_DIRECT参数。

5,结构体(Struct)

结构体是一种集合,它包含多个变量或数组,变量或数组的类型可以相同,也可以不同,每个变量或数组都称为结构体的成员(Member)。访问结构体的成员可以使用成员访问运算符(.),例如使用Book.title访问结构体Book中的成员title,其中,Book是结构体变量名,title是成员名。

用户空间文件系统(Filesystem in Userspace,Fuse)不支持某些输入/输出(I/O)特性,比如无缓冲的输入、输出(O_DIRECT)特性和同步的输入、输出(例如O_SYNC、O_DSYNC或O_RSYNC等)特性,导致无法满足相应的行业定制类的用户需求。以Fuse不支持O_DIRECT特性为例,Fuse在读写文件时有系统缓存。当电子设备上的应用程序(Application,APP)发送加密指令时,Fuse会缓存加密指令,导致加密指令不能实时地传输至存储卡(比如TF卡、SD卡等),从而导致APP访问存储卡失败,即存储卡获取来自于APP的信息时会失败。

基于上述问题,本申请提供文件管理方法、系统、电子设备及存储介质,可支持大部分I/O特性(例如O_DIRECT特性、O_SYNC特性、O_DSYNC特性或O_RSYNC特性等),满足行业定制类的用户需求,从而提升用户体验。

需要说明的是,在下文的描述中,以O_DIRECT特性为例介绍本申请实施例的技术方案。应该理解,对于其他I/O特性(例如O_SYNC特性、O_DSYNC特性或O_RSYNC特性等),本申请实施例的技术方案同样可以适用。

下面结合附图对本申请实施例的技术方案进行清楚、完整的说明。

可参阅图1,图1是本申请提供的一种文件管理系统10的架构示意图。文件管理系统10设置于电子设备中。在本申请实施例中,文件管理系统10为用户空间文件系统(Fuse),即运行在电子设备的用户空间的文件系统,可针对接入电子设备的外部存储卡进行管理。

如图1所示,文件管理系统10包括内核空间层100和用户空间层200。其中,内核空间层100用于管理存储卡的资源(例如CPU、内存、I/O等)。用户空间层200用于访问内核空间层100管理的存储卡资源。举例而言,用户空间层200可获取存储卡里某个文件的访问请求(例如需要打开文件、读/写文件、关闭文件等访问请求),并将访问请求发送至内核空间层100。内核空间层100获取来自于用户空间层200的访问请求,并对该访问请求进行处理。

内核空间层100包括虚拟文件系统110(Virtual File System,VFS)、驱动模块120(Fuse Driver)及文件系统130(File System,FS)。其中,虚拟文件系统110用于传输用户空间层200、驱动模块120及文件系统130的信息。

虚拟文件系统110还用于为各类文件系统提供一个统一的操作界面和应用编程接口。例如,不同类型的文件系统均可以在虚拟文件系统110中完成函数调用(比如调用open、read、write等函数)。

驱动模块120包括第一参数管理模块121。第一参数管理模块121用于存储文件传输参数。其中,文件传输参数可以包括文件传输路径和文件打开标志。

文件系统130是命名文件及放置文件的逻辑存储和恢复的系统。文件系统130可以包括以下文件系统类型:ext4、fat、f2fs等,在此不作具体限定。

用户空间层200包括应用程序210(APP)和用户空间守护进程220(Fuse Daemon)。应用程序210和用户空间守护进程220各自独立地与内核空间层100进行交互。

用户空间守护进程220包括第二参数管理模块221。可以理解,第二参数管理模块221的功能与第一参数管理模块121大致相同,在此不再赘述。

可以理解,用户空间层200存储有注册的函数,比如open、read、write、close等函数。可以理解,用户空间层200注册的函数可以是预先建立并存储于用户空间层200的函数。如此,当内核空间层100获取来自于用户空间层200的访问请求时,可通过调用注册的函数来对该访问请求进行处理。

举例而言,在本实施例中,当内核空间层100从用户空间层200调用open函数时,内核空间层100可通过判断open函数是否包括O_DIRECT参数来确定是否建立第一文件传输通道,以适配支持或不支持O_DIRECT特性这两种类型的业务。

具体地,当open函数包括O_DIRECT参数时,内核空间层100可建立第一文件传输通道,并使用第一文件传输通道来传输驱动模块120和文件系统130之间的信息。可以理解,第一文件传输通道用于直接传输驱动模块120和文件系统130之间的信息。即,驱动模块120和文件系统130之间直接进行信息传输,不需要通过虚拟文件系统110转发信息。此时,文件管理系统10可以支持O_DIRECT特性,屏蔽缓存。

当open函数不包括O_DIRECT参数时,内核空间层100可建立第二文件传输通道,并使用第二文件传输通道来传输驱动模块120和文件系统130之间的信息。可以理解,第二文件传输通道用于间接传输驱动模块120和文件系统130之间的信息。即,驱动模块120和文件系统130之间不能直接进行信息传输,而是需要通过虚拟文件系统110转发信息。此时,文件管理系统10不支持O_DIRECT特性。

可参阅图2,图2是本申请提供的一种文件管理方法的流程图。本实施例的文件管理方法应用于电子设备,电子设备设置有图1所示的文件管理系统10。下面以打开存储卡里的第一文件的场景为例,详细介绍本申请的文件管理方法。可以理解,第一文件可以是存储卡里的任意一个文件。如图2所示,文件管理方法可以包括如下步骤:

S201,响应于打开第一文件的操作指令,通过应用程序调用open函数。

其中,操作指令与业务类型相关。业务类型包括O_DIRECT业务和非O_DIRECT业务。O_DIRECT业务是指需要Fuse支持O_DIRECT特性的业务,例如打开、读/写或关闭加密存储卡里的第一文件。非O_DIRECT业务是指不需要Fuse支持O_DIRECT特性的业务,例如打开、读/写或关闭非加密存储卡里的第一文件。

当用户需要处理O_DIRECT业务时,可在应用程序210上触发O_DIRECT业务的控件,O_DIRECT业务被激活,产生第一操作指令。当用户需要处理非O_DIRECT业务时,可在应用程序210上触发非O_DIRECT业务的控件,非O_DIRECT业务被激活,产生第二操作指令。

可以理解,open函数用于打开第一文件。open函数包括第一文件传输参数,第一文件传输参数与业务类型相关。当应用程序210产生第一操作指令,即激活O_DIRECT业务时,第一文件传输参数包含O_DIRECT参数,即应用程序210调用包含O_DIRECT参数的open函数。当应用程序210产生第二操作指令,即激活非O_DIRECT业务时,第一文件传输参数不包含O_DIRECT参数,即应用程序210调用不包含O_DIRECT参数的open函数。

S202,通过虚拟文件系统110从应用程序210调用open函数。

S203,通过驱动模块120从虚拟文件系统110调用open函数。

S204,通过驱动模块120确定open函数是否包括O_DIRECT参数。

在本实施例中,电子设备通过驱动模块120判断open函数是否包括O_DIRECT参数来确定是否建立第一文件传输通道。

在步骤S204中,若确定open函数包括O_DIRECT参数,则依次执行步骤S205至S212。若否,则依次执行步骤S213至S220。

S205,通过驱动模块120存储open函数中的第一文件传输参数。

在本实施例中,当open函数中的文件打开标志包括O_DIRECT参数时,驱动模块120存储第一文件传输参数。

S206,通过用户空间守护进程220从驱动模块120调用open函数,并获取第一通道标识。

可以理解,由于open函数包括第一文件传输参数。因此,当用户空间守护进程220从驱动模块120调用open函数时,也会一并获取第一文件传输参数。

在本实施例中,第一通道标识用以指向第一文件传输通道。

在一些实施例中,驱动模块120可以从电子设备与存储卡之间的多个传输通道中选取一个处于空闲状态的传输通道,将其确定为待建立的第一文件传输通道,并向用户空间守护进程220发送第一通道标识。

在另一些实施例中,驱动模块120也可以从多个传输通道中选取任意一个传输通道,将其确定为待建立的第一文件传输通道,并向用户空间守护进程220发送第一通道标识。

S207,通过用户空间守护进程220存储第一文件传输参数。

可以理解,在一些实施例中,用户空间守护进程220可以一并存储第一文件传输参数和第一通道标识。

S208,通过虚拟文件系统110从用户空间守护进程220调用open函数,并获取第一通道标识。

S209,通过文件系统130从虚拟文件系统110调用open函数,并获取第一通道标识,根据第一通道标识和open函数中的第一文件传输参数建立第一文件传输通道。

其中,第一文件传输通道用以直接传输文件系统130与驱动模块120之间的信息。

S210,通过文件系统130向虚拟文件系统110返回第一文件描述符,通过虚拟文件系统110向用户空间守护进程220返回第一文件描述符。

S211,通过用户空间守护进程220向驱动模块120返回第一文件描述符。

可以理解,在其他实施例中,用户空间守护进程220可以存储第一文件描述符。

S212,通过驱动模块120将第一文件描述符存储到第一文件传输参数所在的结构体中,以将第一文件描述符关联到第一文件传输参数。

其中,将第一文件描述符关联到第一文件传输参数是指建立第一文件描述符与第一文件传输参数的对应关系。

在一些实施例中,电子设备通过驱动模块120将第一文件描述符与第一文件传输参数存储到同一个结构体中。访问该结构体,可以一并访问第一文件描述符与第一文件传输参数,从而将第一文件描述符关联到第一文件传输参数。

在另一些实施例中,电子设备通过驱动模块120以键值对的方式存储第一文件描述符和第一文件传输参数,使得每个第一文件传输参数均有对应的第一文件描述符,从而将第一文件描述符关联到第一文件传输参数。

可以理解,在步骤S212之后,驱动模块120确定第一文件打开完成,会等待后续的操作指令。后续的操作指令是来自于应用程序210的指令,操作指令可以包括读/写或关闭存储卡里第一文件的操作指令。通过将第一文件描述符关联到第一文件传输参数,可方便在接收到后续的操作指令之后,可以根据第一文件传输参数调取对应的第一文件描述符,从而根据第一文件描述符在驱动模块120中查询到第一文件。

S213,通过驱动模块120存储open函数中的第二文件传输参数。

在本实施例中,当open函数中的文件打开标志不包括O_DIRECT参数时,电子设备通过驱动模块120存储第二文件传输参数。

S214,通过用户空间守护进程220从驱动模块120调用open函数,并获取第二通道标识。

可以理解,open函数包括第二文件传输参数。调用open函数,也会一并获取open函数中的第二文件传输参数。

在本实施例中,第二通道标识用以指向第二文件传输通道。

在一些实施例中,驱动模块120可以从电子设备与存储卡之间的多个传输通道中选取一个处于空闲状态的传输通道,将其确定为待建立的第二文件传输通道,并向用户空间守护进程220发送第二通道标识。

在另一些实施例中,驱动模块120也可以从多个传输通道中选取任意一个传输通道,将其确定为待建立的第二文件传输通道,并向用户空间守护进程220发送第二通道标识。

S215,通过用户空间守护进程220存储第二文件传输参数。

可以理解,在一些实施例中,用户空间守护进程220可以一并存储第二文件传输参数和第二通道标识。

S216,通过虚拟文件系统110从用户空间守护进程220调用open函数,并获取第二通道标识。

S217,通过文件系统130从虚拟文件系统110调用open函数,并获取第二通道标识,根据第二通道标识和open函数中的第二文件传输参数建立第二文件传输通道。

其中,第二文件传输通道用以通过虚拟文件系统110转发文件系统130与驱动模块120之间的信息。

S218,通过文件系统130向虚拟文件系统110返回第二文件描述符,通过虚拟文件系统110向用户空间守护进程220返回第二文件描述符。

S219,通过用户空间守护进程220向驱动模块120返回第二文件描述符。

可以理解,在其他实施例中,用户空间守护进程220可以存储第二文件描述符。

S220,通过驱动模块120将第二文件描述符存储到第二文件传输参数所在的结构体中,以将第二文件描述符关联到第二文件传输参数。

其中,将第二文件描述符关联到第二文件传输参数是指建立第二文件描述符与第二文件传输参数的对应关系。

在一些实施例中,电子设备通过驱动模块120将第二文件描述符与第二文件传输参数存储到同一个结构体中。访问该结构体,可以一并访问第二文件描述符与第二文件传输参数,从而将第二文件描述符关联到第二文件传输参数。

在另一些实施例中,电子设备通过驱动模块120以键值对的方式存储第二文件描述符和第二文件传输参数,使得每个第二文件传输参数均有对应的第二文件描述符,从而将第二文件描述符关联到第二文件传输参数。

可以理解,在步骤S220之后,驱动模块120确定打开第一文件,会等待后续的操作指令。在接收到后续的操作指令之后,可以根据第二文件传输参数调取对应的第二文件描述符,从而根据第二文件描述符在驱动模块120中查询到第一文件。

可以理解,在步骤S213至S220的具体实施方式中,第二文件传输参数不包含O_DIRECT参数,且第二文件传输通道是通过虚拟文件系统110转发文件系统130与驱动模块120之间的信息。

在本实施例中,当电子设备需要调用open函数打开存储卡里的第一文件时,通过文件管理系统10可首先判断open函数是否包括O_DIRECT参数(参见步骤S204)。当open函数包括O_DIRECT参数时,文件管理系统10建立第一文件传输通道,并使用第一文件传输通道来传输驱动模块120和文件系统130之间的信息(参见步骤S205至S209)。当open函数不包括O_DIRECT参数时,文件管理系统10建立第二文件传输通道,并使用第二文件传输通道来传输驱动模块120和文件系统130之间的信息(参见步骤S213至S217)。也就是说,本申请实施例中的文件管理系统10可根据业务类型建立对应的文件传输通道,以传输O_DIRECT业务或非O_DIRECT业务的信息。即,电子设备基于文件管理系统10可以支持对O_DIRECT业务或非O_DIRECT业务的第一文件的打开操作,从而满足行业定制类的用户需求,提升用户体验。

下面结合图3,以open函数包括O_DIRECT参数的场景为例,对电子设备基于文件管理系统10打开加密的存储卡里的第一文件的原理进行说明。

如图3所示,当电子设备需要调用open函数打开加密的存储卡里的第一文件时,首先通过应用程序210调用包含O_DIRECT参数的open函数。接着,通过虚拟文件系统110从应用程序210调用open函数。然后,通过驱动模块120从虚拟文件系统110调用open函数,通过驱动模块120中的第一参数管理模块121存储open函数中的第一文件传输参数。接着,通过用户空间守护进程220从驱动模块120调用open函数,并获取第一通道标识。通过用户空间守护进程220中的第二参数管理模块221存储第一文件传输参数。然后,通过虚拟文件系统110从用户空间守护进程220调用open函数,并获取第一通道标识。通过文件系统130再从虚拟文件系统110调用open函数,并获取第一通道标识。由于open函数包括O_DIRECT参数,因此电子设备根据第一通道标识和open函数中的第一文件传输参数建立第一文件传输通道,并通过文件系统130向虚拟文件系统110返回第一文件描述符。通过虚拟文件系统110向用户空间守护进程220返回第一文件描述符。通过用户空间守护进程220向驱动模块120返回第一文件描述符。通过驱动模块120中的第一参数管理模块121存储第一文件描述符,并将第一文件描述符存储到第一文件传输参数所在的结构体中,以将第一文件描述符关联到第一文件传输参数,从而完成打开第一文件的操作。

可以理解,在本实施例中,以电子设备打开加密的存储卡里的第一文件为例,对电子设备通过文件管理系统10处理O_DIRECT业务进行说明。由上述工作原理可知,本申请实施例中的电子设备基于文件管理系统10可以支持对O_DIRECT业务的第一文件的打开操作,从而满足行业定制类的用户需求,提升用户体验。

请参阅图4,图4是电子设备基于文件管理系统10打开加密的存储卡里的第一文件的信息交互场景示意图。如图4所示,在本实施例中,继续以open函数包括O_DIRECT参数的场景为例,对电子设备基于文件管理系统10打开加密的存储卡里的第一文件的信息交互场景进行详细说明。

具体地,用户通过电子设备上的应用程序210对外部的加密存储卡进行管理。当加密的存储卡接入电子设备时,应用程序210提示“是否连接存储卡”,在用户点击确认按钮后,应用程序210与存储卡建立通信连接。当用户需要打开存储卡里的第一文件时,可以触发打开第一文件的控件(图未示)。然后,当电子设备获取到打开第一文件的操作指令时,响应于操作指令,通过应用程序210调用包含O_DIRECT参数的open函数(参见S401)。通过虚拟文件系统110从应用程序210调用open函数(参见S402)。通过驱动模块120从虚拟文件系统110调用open函数(参见S403)。通过驱动模块120存储open函数中的第一文件传输参数(参见S404)。通过用户空间守护进程220从驱动模块120调用open函数,并获取第一通道标识(参见S405)。通过用户空间守护进程220存储open函数中的第一文件传输参数(参见S406)。通过虚拟文件系统110从用户空间守护进程220调用open函数,并获取第一通道标识(参见S407)。通过文件系统130从虚拟文件系统110调用open函数,并获取第一通道标识(参见S408)。根据第一通道标识和open函数中的第一文件传输参数建立第一文件传输通道,并通过文件系统130打开第一文件(参见S409)。通过文件系统130向虚拟文件系统110返回第一文件描述符(参见S410)。通过虚拟文件系统110向用户空间守护进程220返回第一文件描述符(参见S411)。通过用户空间守护进程220向驱动模块120返回第一文件描述符(参见S412)。通过驱动模块120将第一文件描述符存储到第一文件传输参数所在的结构体中,以将第一文件描述符关联到第一文件传输参数(参见S413)。通过驱动模块120向虚拟文件系统110返回打开第一文件的第一返回值(参见S414),第一返回值用于指示第一文件打开成功或失败。若第一返回值是非负整数,指示第一文件打开成功;若否,指示第一文件打开失败。通过虚拟文件系统110向应用程序210返回第一返回值,从而通过应用程序210确定第一文件打开成功或失败(参见S415)。

在本实施例中,应用程序210在接收到第一返回值之后,确定第一文件打开成功或失败,可以发出提示消息,以提示用户第一文件已被打开或打开失败。

可参阅图5,图5是本申请提供的另一种文件管理方法的流程图。

可以理解,当电子设备通过图1所示的文件管理系统10打开存储卡里的第一文件后,通过本申请实施例的文件管理方法还可对打开的文件进行读取或写入操作。在本申请实施例中,电子设备基于文件管理系统10读取和写入存储卡里的第一文件的工作原理大致相同。如图5所示,以电子设备基于文件管理系统10写入存储卡里第一文件的场景为例,本申请实施例中的文件管理方法还可以包括如下步骤:

S501,响应于写入第一文件的操作指令,通过应用程序210调用write函数。

在本实施例中,write函数用以将存储卡里的第一文件写入电子设备。

S502,通过虚拟文件系统110从应用程序210调用write函数。

S503,通过驱动模块120从虚拟文件系统110调用write函数。

S504,通过驱动模块120查询第一文件对应的文件传输参数。

可以理解,电子设备基于文件传输系统10在打开第一文件时,通过驱动模块120已存储第一文件对应的文件传输参数。当电子设备基于文件传输系统10打开多个文件时,通过驱动模块120存储各个文件对应的文件传输参数。

S505,通过驱动模块120确定文件传输参数是否包含O_DIRECT参数。

在本实施例中,电子设备基于文件管理系统10中的驱动模块120判断第一文件对应的文件传输参数是否包含O_DIRECT参数,从而确定已存储的文件传输参数是否为第一文件传输参数。

可以理解,文件传输参数可以是第一文件传输参数或者第二文件传输参数。第一文件传输参数包含O_DIRECT参数,第二文件传输参数不包含O_DIRECT参数。

在步骤S505中,若确定文件传输参数包含O_DIRECT参数,则依次执行步骤S506至S511。若否,则依次执行步骤S512至S516。

S506,通过驱动模块120调取第一文件描述符。

在本实施例中,当文件传输参数包含O_DIRECT参数时,说明文件传输参数是第一文件传输参数,从而可以调取第一文件传输参数对应的第一文件描述符。电子设备可以利用第一文件描述符在驱动模块120中查询到第一文件。

可以理解,第一文件传输参数与第一文件描述符相关联。

S507,通过驱动模块120将写入操作的接口转换成适配虚拟文件系统110的接口,以针对各种格式的第一文件提供统一的写入操作接口。

其中,第一文件的格式与存储卡的文件系统类型相关。可以理解,第一文件的格式是存储卡的文件系统可以支持的文件格式。

可以理解,虚拟文件系统110具有为各种格式的第一文件提供统一的写入操作接口的功能。将写入操作的接口转换成适配虚拟文件系统的接口,可使写入操作的接口同样具备为各种格式的第一文件提供统一的写入操作接口的功能。

S508,通过第一文件传输通道从驱动模块120调用write函数,并调取第一文件描述符。

可以理解,第一文件传输通道用于直接传输驱动模块120和文件系统130之间的信息。

S509,通过第一文件描述符来查询第一文件,再对第一文件进行写入操作。

S510,通过第一文件传输通道向驱动模块120返回写入操作的第二返回值。

其中,第二返回值用于指示第一文件写入成功或失败。若第二返回值是非负整数,指示第一文件写入成功;若否,指示第一文件写入失败。

S511,通过驱动模块120向虚拟文件系统110返回第二返回值,通过虚拟文件系统110向应用程序210返回第二返回值。

可以理解,当第一文件写入成功时,应用程序210可以发出提示消息,以提示用户第一文件已写入成功。当第一文件写入失败时,应用程序210可以返回执行步骤S501,直至第一文件被成功写入。

S512,通过驱动模块120调取第二文件描述符。

在本实施例中,当电子设备确定文件传输参数不包含O_DIRECT参数时,说明文件传输参数是第二文件传输参数,从而可以调取第二文件传输参数对应的第二文件描述符。电子设备可以利用第二文件描述符在驱动模块120中查询到第一文件。

可以理解,第二文件传输参数与第二文件描述符相关联。

S513,通过第二文件传输通道从驱动模块120调用write函数,并调取第二文件描述符。

可以理解,第二文件传输通道用于通过虚拟文件系统110转发驱动模块120和文件系统130之间的信息。

S514,通过第二文件描述符来查询第一文件,再对第一文件进行写入操作。

S515,通过第二文件传输通道向驱动模块120返回写入操作的第二返回值。

在本实施例中,首先通过文件系统130向虚拟文件系统110返回第二返回值,再通过虚拟文件系统110向驱动模块120返回第二返回值。

S516,通过驱动模块120向虚拟文件系统110返回第二返回值,通过虚拟文件系统110向应用程序210返回第二返回值。

可以理解,在步骤S512至S516中,第二文件传输通道是通过虚拟文件系统110转发文件系统130与驱动模块120之间的信息,且虚拟文件系统110具有为各种格式的第一文件提供统一的写入操作接口的功能。

在本实施例中,电子设备基于文件管理系统10在写入存储卡里的第一文件时,判断第一文件对应的文件传输参数是否包含O_DIRECT参数(参见步骤S505)。当文件传输参数包含O_DIRECT参数时,电子设备通过第一文件描述符查询第一文件,并对第一文件进行写入操作(参见步骤S506至S509)。当文件传输参数不包含O_DIRECT参数时,电子设备通过第二文件描述符查询第一文件,并对第一文件进行写入操作(参见步骤S512至S514)。可以理解,本申请实施例的电子设备可根据第一文件对应的文件传输参数是否包含O_DIRECT参数来区分O_DIRECT业务和非O_DIRECT业务,并适配对应的文件描述符,以使用对应的文件传送通道传输O_DIRECT业务或非O_DIRECT业务的信息。即,电子设备基于文件管理系统10可以支持对O_DIRECT业务或非O_DIRECT业务的第一文件的写入操作,从而满足行业定制类的用户需求,提升用户体验。

下面结合图6,以文件传输参数包含O_DIRECT参数的场景为例,对电子设备基于文件管理系统10读取或写入加密的存储卡里的第一文件的原理进行说明。

如图6所示,当电子设备通过应用程序210接收到写入(或读取)第一文件的操作指令时,首先通过应用程序210调用write函数(或read函数)。接着,通过虚拟文件系统110从应用程序210调用write函数(或read函数)。然后,通过驱动模块120从虚拟文件系统110调用write函数(或read函数)。由于文件传输参数包含O_DIRECT参数,因此通过驱动模块120调取存储于第一参数管理模块121的第一文件描述符,以及将写入操作的接口转换成适配虚拟文件系统210的接口,以针对各种格式的第一文件提供统一的写入操作接口。接着,通过第一文件传输通道从驱动模块120调用write函数(或read函数),并调取第一文件描述符。通过第一文件描述符来查询第一文件,再对第一文件进行写入(或读取)操作。通过第一文件传输通道向驱动模块120返回写入(或读取)操作的第二返回值。通过驱动模块120向虚拟文件系统110返回第二返回值。通过虚拟文件系统110向应用程序210返回第二返回值,以指示应用程序210第一文件写入(或读取)成功或失败。

可以理解,在本实施例中,以电子设备读取或写入加密的存储卡里的第一文件为例,对电子设备基于文件管理系统10处理O_DIRECT业务进行说明。由上述工作原理可知,本申请实施例中的电子设备基于文件管理系统10可以支持对O_DIRECT业务的第一文件的读取或写入操作,从而满足行业定制类的用户需求,提升用户体验。

如图7所示,在本实施例中,继续以文件传输参数包含O_DIRECT参数的场景为例,对电子设备基于文件管理系统10写入加密的存储卡里的第一文件的信息交互场景进行详细说明。

具体地,用户通过电子设备上的应用程序210对外部的加密存储卡进行管理。当电子设备需要从存储卡里写入第一文件时,用户可以触发写入第一文件的控件(图未示)。然后,当电子设备获取到写入第一文件的操作指令时,响应于操作指令,通过应用程序210调用write函数(参见S701)。通过虚拟文件系统110从应用程序210调用write函数(参见S702)。通过驱动模块120从虚拟文件系统110调用write函数(参见S703)。根据文件传输参数中的O_DIRECT参数来调取第一文件描述符(参见S704)。通过驱动模块120将写入操作的接口转换成适配虚拟文件系统110的接口,以针对各种格式的第一文件提供统一的写入操作接口(参见S705)。通过第一文件传输通道从驱动模块120调用write函数,并调取第一文件描述符(参见S706)。通过第一文件描述符来查询第一文件,再对第一文件进行写入操作(参见S707)。通过第一文件传输通道向驱动模块120返回写入操作的第二返回值(参见S708)。通过驱动模块120向虚拟文件系统110返回第二返回值(参见S709)。通过虚拟文件系统110向应用程序210返回第二返回值,从而通过应用程序210确定第一文件写入成功或失败(参见S710)。

可以理解,在本实施例中,文件传输参数包含O_DIRECT参数,说明文件传输参数是第一文件传输参数,从而可以调取第一文件传输参数对应的第一文件描述符。此外,电子设备在通过文件系统130完成写入操作之后,可以通过第一文件传输通道向驱动模块120返回写入操作的第二返回值,通过驱动模块120向虚拟文件系统110返回第二返回值,再通过虚拟文件系统110向应用程序210返回第二返回值,并等待后续的操作指令。

可参阅图8,图8是本申请提供的另一种文件管理方法的流程图。

可以理解,当电子设备通过图1所示的文件管理系统10打开存储卡里的第一文件后,通过本申请实施例的文件管理方法还可对打开的文件进行关闭操作。如图8所示,文件管理方法还可以包括如下步骤:

S801,响应于关闭第一文件的操作指令,通过应用程序210调用close函数。

在本实施例中,close函数用以关闭存储卡里的第一文件,并清理第一文件对应的文件传输参数和文件传输通道的相关信息。其中,文件传输通道的相关信息可以包括文件传输通道对应的通道标识和文件描述符。

S802,通过虚拟文件系统110从应用程序210调用close函数。

S803,通过驱动模块120从虚拟文件系统110调用close函数。

S804,通过驱动模块120查询第一文件对应的文件传输参数,以确定是否缓存有文件传输参数。

在本实施例中,当第一文件已被打开时,驱动模块120缓存有第一文件对应的文件传输参数。也就是说,如果驱动模块120没有缓存第一文件对应的文件传输参数,则说明第一文件未被打开,此时关闭第一文件的操作指令是错误指令。

在步骤S804中,若确定缓存有文件传输参数,则依次执行步骤S805至S806。若否,则结束。

S805,通过用户空间守护进程220从驱动模块120调用close函数。

S806,通过用户空间守护进程220查询第一文件对应的文件传输参数,以确定是否缓存有文件传输参数。

在本实施例中,当第一文件已被打开时,用户空间守护进程220也缓存有第一文件对应的文件传输参数。同理,如果用户空间守护进程220没有缓存第一文件对应的文件传输参数,则说明第一文件未被打开,此时关闭第一文件的操作指令是错误指令。

在步骤S806中,若确定缓存有文件传输参数,则依次执行步骤S807至S813。若否,则结束。

S807,通过虚拟文件系统110从用户空间守护进程220调用close函数。

S808,通过文件系统130从虚拟文件系统110调用close函数。

S809,通过文件系统130关闭文件传输通道。

可以理解,当文件系统130是通过建立第一文件传输通道来打开第一文件时,电子设备通过文件系统130相应地关闭第一文件传输通道。当文件系统130是通过建立第二文件传输通道来打开第一文件时,电子设备通过文件系统130相应地关闭第二文件传输通道。

S810,通过文件系统130向虚拟文件系统110返回关闭第一文件的第三返回值,通过虚拟文件系统110向用户空间守护进程220返回第三返回值。

其中,第三返回值用于指示第一文件关闭成功或失败。若第三返回值是非负整数,指示第一文件关闭成功;若否,指示第一文件关闭失败。

S811,通过用户空间守护进程220清理缓存的第一文件对应的文件传输参数和文件传输通道的相关信息。

S812,通过用户空间守护进程220向驱动模块120返回第三返回值。

可以理解,电子设备在清理完用户空间守护进程220中缓存的第一文件对应的文件传输参数和文件传输通道的相关信息之后,可以向驱动模块120返回第三返回值。

S813,通过驱动模块120清理缓存的第一文件对应的文件传输参数和文件传输通道的相关信息。

S814,通过驱动模块120向虚拟文件系统100返回第三返回值,通过虚拟文件系统100向应用程序210返回第三返回值。

在本实施例中,应用程序210在接收到第三返回值之后,确定第一文件关闭成功或失败,可以发出提示消息,以提示用户第一文件已被关闭或关闭失败。

在本实施例中,当电子设备需要调用close函数关闭存储卡里的第一文件时,电子设备基于文件管理系统10首先判断驱动模块120是否缓存有文件传输参数(参见步骤S804)。当驱动模块120缓存有文件传输参数时,再判断用户空间守护进程220是否缓存有文件传输参数(参见步骤S806)。当用户空间守护进程220也缓存有文件传输参数时,通过文件管理系统10中的文件系统130关闭文件传输通道,并依次清理用户空间守护进程220和驱动模块120缓存的第一文件对应的文件传输参数和文件传输通道的相关信息(参见步骤S809至S813)。当驱动模块120和用户空间守护进程220中的任一个没有缓存文件传输参数时,说明第一文件未被打开,此时关闭第一文件的操作指令是错误指令。

可以理解,本申请实施例的电子设备可通过调用close函数关闭存储卡里的第一文件,拆除打开第一文件时建立的文件传输通道,并清理打开第一文件时缓存的数据。即,电子设备基于文件管理系统10可以支持对O_DIRECT业务或非O_DIRECT业务的第一文件的关闭操作,以释放系统资源,从而满足行业定制类的用户需求,提升用户体验。

下面结合图9,以驱动模块120和用户空间守护进程220都缓存有文件传输参数的场景为例,对电子设备基于文件管理系统10关闭存储卡里的第一文件的原理进行说明。

如图9所示,当电子设备通过应用程序210接收到关闭第一文件的操作指令时,首先通过应用程序210调用close函数。接着,通过虚拟文件系统110从应用程序210调用close函数。然后,通过驱动模块120从虚拟文件系统110调用close函数。由于驱动模块120中的第一参数管理模块121缓存有第一文件对应的文件传输参数,因此通过用户空间守护进程220从驱动模块120调用close函数。又由于用户空间守护进程220中的第二参数管理模块221缓存有第一文件对应的文件传输参数,因此通过虚拟文件系统110从用户空间守护进程220调用close函数。接着,通过文件系统130从虚拟文件系统110调用close函数。通过文件系统130关闭文件传输通道,并通过虚拟文件系统110向用户空间守护进程220返回关闭第一文件的第三返回值。用户空间守护进程220在接收到第三返回值之后,清理缓存的第一文件对应的文件传输参数和文件传输通道的相关信息,并向驱动模块120返回第三返回值。驱动模块120在接收到第三返回值之后,清理缓存的第一文件对应的文件传输参数和文件传输通道的相关信息,并向虚拟文件系统110返回第三返回值。通过虚拟文件系统110向应用程序210返回第三返回值,从而通过应用程序210确定第一文件关闭成功或失败。

可以理解,在本实施例中,以电子设备关闭存储卡里的第一文件为例,对电子设备基于文件管理系统10处理O_DIRECT业务或非O_DIRECT业务进行说明。由上述工作原理可知,本申请实施例中的电子设备基于文件管理系统10可以支持对O_DIRECT业务或非O_DIRECT业务的第一文件的关闭操作,从而满足行业定制类的用户需求,提升用户体验。

如图10所示,在本实施例中,继续以驱动模块120和用户空间守护进程220都缓存有文件传输参数的场景为例,对电子设备基于文件管理系统10关闭存储卡里的第一文件的信息交互场景进行详细说明。

具体地,用户通过电子设备上的应用程序210对外部的加密存储卡进行管理。当电子设备需要关闭存储卡里的第一文件时,用户可以触发关闭第一文件的控件(图未示)。然后,当电子设备获取到关闭第一文件的操作指令时,响应于操作指令,通过应用程序210调用close函数(参见S1001)。通过虚拟文件系统110从应用程序210调用close函数(参见S1002)。通过驱动模块120从虚拟文件系统110调用close函数(参见S1003)。通过用户空间守护进程220从驱动模块120调用close函数(参见S1004)。通过虚拟文件系统110从用户空间守护进程220调用close函数(参见S1005)。通过文件系统130从虚拟文件系统110调用close函数(参见S1006)。通过文件系统130关闭文件传输通道(参见S1007),并向虚拟文件系统110返回关闭第一文件的第三返回值(参见S1008)。通过虚拟文件系统110向用户空间守护进程220返回第三返回值(参见S1009)。通过用户空间守护进程220清理缓存的第一文件对应的文件传输参数和文件传输通道的相关信息(参见S1010)。通过用户空间守护进程220向驱动模块120返回第三返回值(参见S1011)。通过驱动模块120清理缓存的第一文件对应的文件传输参数和文件传输通道的相关信息(参见S1012)。通过驱动模块120向虚拟文件系统110返回第三返回值(参见S1013)。通过虚拟文件系统110向应用程序210返回第三返回值,从而通过应用程序210确定第一文件关闭成功或失败(参见S1014)。

在本实施例中,应用程序210在接收到第三返回值之后,确定第一文件关闭成功或失败,可以发出提示消息,以提示用户第一文件已被关闭或关闭失败。

可以理解,采用本申请实施例提供的文件管理方法,当调用open函数打开存储卡里的第一文件时,根据业务类型建立对应的文件传输通道,以传输O_DIRECT业务或非O_DIRECT业务的信息,可以支持对O_DIRECT业务或非O_DIRECT业务的第一文件的打开操作。当调用write函数(或read函数)写入(或读取)存储卡里的第一文件时,适配对应的文件描述符,以使用对应的文件传输通道传输O_DIRECT业务或非O_DIRECT业务的信息,可以支持对O_DIRECT业务或非O_DIRECT业务的第一文件的写入(或读取)操作。当调用close函数关闭存储卡里的第一文件时,拆除打开第一文件时建立的文件传输通道,并清理打开第一文件时缓存的数据,可以支持对O_DIRECT业务或非O_DIRECT业务的第一文件的关闭操作,以释放系统资源。结合上述三种场景,整个流程支持对第一文件进行打开、读/写或关闭操作,可以实现支持O_DIRECT业务和非O_DIRECT业务的完整生命周期,从而满足行业定制类的用户需求,提升用户体验。

需要说明的是,行业定制类的用户需求并不限于支持O_DIRECT特性。本申请实施例提供的文件管理方法可以应用于更广泛的用户需求。例如,对于需要支持O_SYNC(或O_DSYNC,或O_RSYNC)特性的用户需求,将上述方法实施例中的O_DIRECT参数替换成O_SYNC参数(或O_DSYNC参数,或O_RSYNC参数),可以支持以同步I/O的方式打开、读/写或关闭文件,从而满足支持O_SYNC(或O_DSYNC,或O_RSYNC)特性的用户需求。

图11是本申请提供的电子设备30的结构示意图。

可参阅图11,电子设备30包括处理器31和存储器32,存储器32用于存储计算机程序或代码,处理器31可以调用存储于存储器32中的计算机程序或代码,执行上述方法实施例的所有方法步骤。

可以理解,电子设备30能够实现上述方法实施例的所有方法步骤,在此不再对相同的方法步骤及有益效果进行赘述。

需要说明的是,本申请实施例示意的结构并不构成对电子设备的具体限定。在本申请另一些实施例中,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。

本申请还提供一种存储介质,用于存储计算机程序或代码,当计算机程序或代码被处理器执行时,实现上述方法实施例的所有方法步骤。

可以理解,存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。存储介质包括,但不限于,随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、带电可擦可编程只读存储器(Electrically ErasableProgrammable Read-Only Memory,EEPROM)、闪存或其它存储器、只读光盘(Compact DiscRead-Only Memory,CD-ROM)、数字通用光盘(Digital Versatile Disc,DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其它的介质。

上面结合附图对本申请实施例作了详细说明,但是本申请不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本申请宗旨的前提下做出各种变化。

相关技术
  • 一种海绵城市雨水收集系统
  • 一种海绵城市雨水分流系统
  • 一种用于海绵城市的坡屋顶雨水分流回收系统
技术分类

06120116379241