CN115481444A - 文件保护方法及电子设备 - Google Patents
文件保护方法及电子设备 Download PDFInfo
- Publication number
- CN115481444A CN115481444A CN202211408528.3A CN202211408528A CN115481444A CN 115481444 A CN115481444 A CN 115481444A CN 202211408528 A CN202211408528 A CN 202211408528A CN 115481444 A CN115481444 A CN 115481444A
- Authority
- CN
- China
- Prior art keywords
- file
- protected
- memory
- protection
- kernel layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Automation & Control Theory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请适用于终端技术领域,提供了一种文件保护方法及电子设备,文件保护方法包括:应用程序框架层基于有权限访问的第一待保护文件的文件路径,获取第一待保护文件的文件描述符,并向内核层发送该文件描述符;内核层基于该文件描述符,为第一待保护文件设置文件保护标记;应用程序框架层向内核层发送无权限访问的第二待保护文件的文件路径;内核层接收到文件访问请求,并将文件访问请求指示的目标文件从磁盘添加至内存时,若确定目标文件与第二待保护文件相匹配,则为目标文件设置文件保护标记;内核层在执行内存回收操作时,不回收设置有文件保护标记的文件占用的内存空间资源,从而能够提高所有待保护文件的被访问速度。
Description
技术领域
本申请涉及终端技术领域,尤其涉及一种文件保护方法及电子设备。
背景技术
文件保护是指将磁盘中的一些关键文件缓存至内存后,对这些关键文件进行保护,使这些关键文件能够被长期存储在内存中不被换出,这样,进程每次可以直接从内存中访问这些关键文件,从而达到快速访问关键文件的目的,提高进程对用户操作的响应速度。
传统的文件保护方式是通过操作系统的应用程序框架层打开关键文件,从而获取到关键文件的文件描述符,并将关键文件的文件描述符传递给内核层,使内核层基于关键文件的文件描述符对关键文件进行文件保护。然而,该文件保护方式应用于Linux操作系统时,受限于Linux操作系统的文件权限管控,应用程序框架层无法打开某些需要保护的应用文件,从而无法获取到这些应用文件的文件描述符,导致内核层无法实现对这些应用文件的文件保护。
发明内容
本申请实施例提供一种文件保护方法及电子设备,通过将待保护文件划分为应用程序框架层有权限访问的第一待保护文件和无权限访问的第二待保护文件,对不同类型的待保护文件在内核层中采用不同的文件保护方式对其进行保护,从而实现了对应用程序框架层有权限访问和无权限访问的所有待保护文件的文件保护,提高了所有待保护文件的被访问速度。
第一方面,本申请实施例提供一种文件保护方法,包括:
应用程序框架层基于第一待保护文件的文件路径,获取所述第一待保护文件的文件描述符,并向内核层发送所述文件描述符;所述第一待保护文件为所述应用程序框架层有权限访问的待保护文件;
所述内核层基于所述文件描述符,为所述第一待保护文件设置文件保护标记;
所述应用程序框架层向所述内核层发送第二待保护文件的文件路径;所述第二待保护文件为所述应用程序框架层无权限访问的待保护文件;
所述内核层接收到文件访问请求,并将所述文件访问请求指示的目标文件从磁盘添加至内存时,若基于所述目标文件的文件路径与所述第二待保护文件的文件路径,确定所述目标文件与所述第二待保护文件相匹配,则为所述目标文件设置文件保护标记;
所述内核层在执行内存回收操作时,不回收设置有所述文件保护标记的文件占用的内存空间资源。
可选的,第一待保护文件可以是预设文件配置列表中记录的,应用程序框架层有权限访问的待保护文件。应用程序框架层有权限访问的待保护文件指,预设文件配置列表中记录的,应用程序框架层能够通过open()函数打开,并获取到文件描述符的待保护文件。
可选的,第二待保护文件可以是预设文件配置列表中记录的,应用程序框架层无权限访问的待保护文件。应用程序框架层无权限访问的待保护文件指,预设文件配置列表中记录的,应用程序框架层无法通过open()函数打开的待保护文件。
其中,预设文件配置列表用于记录预设的待保护文件的信息。待保护文件指需要被长时间缓存在内存中不被换出(即占用的内存空间资源不被回收)的文件。
待保护文件的类型例如可以包括系统文件或应用文件等。
示例性的,当待保护文件的类型为系统文件时,预设文件配置列表中记录的待保护文件的信息可以为待保护文件的文件路径。该文件路径指在操作系统全局下的文件路径。例如,预设文件配置列表中记录的某个系统文件的文件路径可以为</file>/system/xxxx</file>。
当待保护文件的类型为应用文件时,预设文件配置列表中记录的待保护文件的信息可以为待保护文件的应用程序安装包(android application package,APK)的包名。应用程序框架层可以通过应用文件的APK的包名查询到该包名下的所有应用文件。例如,假设预设文件配置列表中记录的某个应用文件的APK 的包名为</packagename>xxxx</packagename>,则应用程序框架层基于该包名,可以从磁盘中查询到该包名下的所有应用文件,包括/data/data目录下的应用文件、/data/user/0目录下的应用文件及/data/app目录下的应用文件等。
基于此,文件保护服务可以读取预设文件配置列表中记录的各个待保护文件的信息;针对预设文件配置列表中记录的任意一个待保护文件,在待保护文件的信息为文件路径的情况下,文件保护服务可以调用open()函数打开待保护文件的文件路径;在待保护文件的信息为APK的包名的情况下,文件保护服务可以基于待保护文件的APK的包名,从磁盘中查询该包名下的所有文件路径,并调用open()函数分别打开该包名下的各个文件路径。
需要说明的是,在文件保护服务有权限访问某个待保护文件的情况下,文件保护服务调用open()函数打开该待保护文件的文件路径后,open()函数会返回该待保护文件的文件描述符。在文件保护服务无权限访问某个待保护文件的情况下,文件保护服务调用open()函数打开该待保护文件的文件路径后,open()函数会返回错误提示,例如返回“error”。
基于此,文件保护服务在调用open()函数打开待保护文件的文件路径后,若open()函数返回待保护文件的文件描述符,则文件保护服务确定该待保护文件为第一待保护文件,并向内核层发送该第一待保护文件的文件描述符。若open()函数返回错误提示,则文件保护服务确定该待保护文件为第二待保护文件,并向内核层发送第二待保护文件的文件路径。
可选的,内核层接收到应用程序层发送的第二待保护文件的文件路径后,可以将第二待保护文件的文件路径记录在预设的无权限文件列表中。
在具体应用中,文件访问请求可以来自于任意一个进程。示例性的,文件访问请求中可以携带有待访问的目标文件的地址空间。内核层通过目标文件的地址空间可以查询到目标文件对应的第二索引节点结构体,进而可以查询到目标文件的文件路径。
根据本实施例提供的文件保护方法,通过将待保护文件划分为应用程序框架层有权限访问的第一待保护文件和应用程序框架层无权限访问的第二待保护文件;对于第一待保护文件,由应用程序框架层基于第一待保护文件的文件路径,获取第一待保护文件的文件描述符,并向内核层发送所述文件描述符,使得内核层可以基于第一待保护文件的文件描述符为第一待保护文件设置文件保护标记;对应第二待保护文件,应用程序框架层可以直接向内核层发送第二待保护文件的文件路径,由内核层基于第二待保护文件的文件路径,为与第二待保护文件相匹配的目标文件设置文件保护标记;由于内核层在执行内存回收操作时,不回收设置有文件保护标记的文件占用的内存空间资源,因此,不仅可以实现对应用程序框架层有权限访问的第一待保护文件的保护,而且可以实现对应用程序框架层无权限访问的第二待保护文件的保护,从而提高了所有待保护文件的被访问速。
在第一方面的一种可选的实现方式中,所述应用程序框架层基于第一待保护文件的文件路径,获取所述第一待保护文件的文件描述符,包括:
所述应用程序框架层将所述第一待保护文件的文件路径作为open()函数的输入参数,调用所述open()函数,得到所述第一待保护文件的文件描述符。
在第一方面的一种可选的实现方式中,所述内核层基于所述文件描述符,为所述第一待保护文件设置文件保护标记,包括:
所述内核层基于所述文件描述符,从内核空间中查询所述第一待保护文件对应的第一索引节点结构体,并将所述第一索引节点结构体中预设的保护标志位的值置为第一预设值;所述第一预设值用于指示对应的文件为预设的待保护文件。
在具体实现时,内核层可以基于第一待保护文件的文件描述符,从内核空间中的文件描述符表中查询第一待保护文件的文件描述符对应的文件指针,再从该文件指针所指向的打开文件结构体中查询第一待保护文件对应的第一inode指针,并将第一inode指针所指向的inode结构体中预设的保护标志位的值置为第一预设值。示例性的,第一预设值可以为1。
根据本实现方式提供的文件保护方法,通过在各个文件对应的索引节点结构体中预先配置保护标志位,并定义保护标志位的为第一预设值时表示对应的文件为预设的待保护文件,从而使内核层可以通过将第一待保护文件对应的第一索引节点结构体中预设的保护标志位的值置为第一预设值,来指示第一待保护文件为预设的待保护文件。
在第一方面的一种可选的实现方式中,所述内核层接收到文件访问请求,并将所述文件访问请求指示的目标文件从磁盘添加至内存时,若基于所述目标文件的文件路径与所述第二待保护文件的文件路径,确定所述目标文件与所述第二待保护文件相匹配,则为所述目标文件设置文件保护标记,包括:
所述内核层接收到文件访问请求时,基于所述文件访问请求中携带的目标文件的地址空间,从所述地址空间中查询所述目标文件对应的第二索引节点结构体;
所述内核层基于所述第二索引节点结构体,获取所述目标文件的文件路径;
所述内核层若基于所述目标文件的文件路径,确定所述内存中未缓存所述目标文件,则将所述目标文件从磁盘添加至所述内存;
所述内核层在将所述目标文件从所述磁盘添加至所述内存的过程中,若确定所述目标文件与所述第二待保护文件相匹配,则将所述第二索引节点结构体中预设的保护标志位的值置为第一预设值;所述第一预设值用于指示对应的文件为预设的待保护文件。
其中,目标文件与第二待保护文件相匹配指,目标文件的文件路径与第二待保护文件的文件路径相同,或者目标文件的文件路径为第二待保护文件的文件路径的子路径。
根据本实现方式提供的文件保护方法,通过在各个文件对应的索引节点结构体中预先配置保护标志位,并定义保护标志位的为第一预设值时表示对应的文件为预设的待保护文件,从而使内核层在将目标文件从磁盘添加至内存时,在确定目标文件属于第二待保护文件的情况下,通过将目标文件对应的第二索引节点结构体中预设的保护标志位的值置为第一预设值,来指示目标文件为预设的待保护文件。
在第一方面的一种可选的实现方式中,所述内核层在执行内存回收操作时,不回收设置有所述文件保护标记的文件占用的内存空间资源,包括:
所述内核层在执行内存回收操作时,若检测到待回收文件中包括设置有所述文件保护标记的文件,且所述内存中缓存的所有设置有所述文件保护标记的文件的总大小占所述内存的已占用空间容量的第一比例小于或等于预设比例阈值,则不回收所述待回收文件中设置有所述文件保护标记的文件占用的内存空间资源。
在第一方面的一种可选的实现方式中,所述文件保护方法还包括:
所述内核层在执行内存回收操作时,若检测到待回收文件中包括设置有所述文件保护标记的文件,且所述第一比例大于所述预设比例阈值,则回收所有所述待回收文件占用的内存空间资源。
内核层在执行内存回收操作时,可以先从内存中缓存的文件中确定待回收文件,再判断待回收文件中是否包括设置有文件保护标记的文件。待回收文件指需要被回收占用的内存空间资源的文件。
在一种情形下,在待回收文件中不包括设置有文件保护标记的文件时,内核层可以直接回收所有待回收文件占用的内存空间资源。
在另一种情形下,在待回收文件中包括设置有文件保护标记的文件时,内核层可以先计算内存中缓存的所有设置有文件保护标记的文件的总大小占内存的已占用空间容量的第一比例,并判断该第一比例是否小于或等于预设比例阈值。
可选的,在第一比例小于或等于预设比例阈值时,内核层可以不回收待回收文件中设置有文件保护标记的文件占用的内存空间资源;可选的,在第一比例大于预设比例阈值时,内核层可以回收所有待回收文件占用的内存空间资源。
根据本实现方式提供的文件保护方法,可以确保内存中缓存的所有待保护文件的总大小占内存的已占用空间容量的第一比例始终小于或等于预设比例阈值,这样可以避免内存中缓存的待保护文件占用过多的内存空间资源,导致内存无法缓存其他文件。
在第一方面的一种可选的实现方式中,所述内核层在执行内存回收操作时,不回收设置有所述文件保护标记的文件占用的内存空间资源,包括:
所述内核层在执行内存回收操作时,若检测到待回收文件中包括设置有所述文件保护标记的文件,且所述内存中缓存的所有设置有所述文件保护标记的文件的总大小未超过预设容量阈值,则不回收所述待回收文件中设置有所述文件保护标记的文件占用的内存空间资源。
在第一方面的一种可选的实现方式中,所述文件保护方法还包括:
所述内核层在执行内存回收操作时,若检测到待回收文件中包括设置有所述文件保护标记的文件,且所述内存中缓存的所有设置有所述文件保护标记的文件的总大小超过所述预设容量阈值,则回收所有所述待回收文件占用的内存空间资源。
其中,未超过预设容量阈值可以指小于或等于预设容量阈值;超过预设容量阈值可以指大于预设容量阈值。
本实现方式中,内核层在执行内存回收操作时,可以先基于目标文件的大小以及内存的剩余空间容量,从内存中缓存的所有文件中确定待回收文件,再判断待回收文件中是否包括设置有文件保护标记的文件。
在一种情形下,在待回收文件中不包括设置有文件保护标记的文件时,内核层可以直接回收所有待回收文件占用的内存空间资源。
在另一种情形下,在待回收文件中包括设置有文件保护标记的文件时,内核层可以先计算内存中缓存的所有设置有文件保护标记的文件的总大小,再判断内存中缓存的所有设置有文件保护标记的文件的总大小是否超过预设容量阈值。可选的,在内存中缓存的所有设置有文件保护标记的文件的总大小未超过预设容量阈值时,内核层可以不回收待回收文件中设置有文件保护标记的文件占用的内存空间资源;可选的,在内存中缓存的所有设置有文件保护标记的文件的总大小超过预设容量阈值时,内核层可以回收所有待回收文件占用的内存空间资源。其中,预设容量阈值可以根据实际需求设置,此处对其不做特别限定。
根据本实现方式提供的文件保护方法,可以确保内存中缓存的所有待保护文件的总大小不超过预设容量阈值,这样可以避免内存中缓存的待保护文件占用过多的内存空间资源,导致内存无法缓存其他文件。
在第一方面的一种可选的实现方式中,所述文件保护方法还包括:
所述内核层监控所述内存中缓存的各个文件的被访问频率;
在所述内存中缓存的第三文件的所述被访问频率大于或等于预设频率阈值时,所述内核层为所述第三文件设置文件保护标记。
其中,文件的被访问频率可以通过文件在单位时间内的被访问次数表示。
内核层为第三文件设置文件保护标记的方式可以为,将第三文件对应的第三索引结构体中预设的保护标志位的值置为第一预设值。
根据本实现方式提供的文件保护方法,通过为内存中缓存的热点文件设置文件保护标记,从而可以使得被访问频率多的热点文件能够被长期缓存在内存中不被换出,有利于提高进程访问热点文件的速度。
第二方面,本申请实施例提供一种电子设备,包括:一个或多个处理器;一个或多个存储器;所述一个或多个存储器存储有一个或多个计算机可执行程序,所述一个或多个计算机可执行程序包括指令,当所述指令被所述一个或多个处理器执行时,使得所述电子设备执行如上述第一方面或第二方面的任一实现方式所述的文件保护方法中的各步骤。
第三方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序在被计算机调用时使所述计算机执行如上述第一方面或第二方面的任一实现方式所述的文件保护方法中的各步骤。
第四方面,本申请实施例提供一种计算机可执行程序产品,当计算机可执行程序产品在电子设备上运行时,使得电子设备执行上述第一方面或第二方面的任一实现方式所述的文件保护方法中的各步骤。
第五方面,本申请实施例提供一种芯片系统,包括处理器,处理器与存储器耦合,处理器执行存储器中存储的计算机可执行程序,以实现如上述第一方面或第二方面的任一实现方式所述的文件保护方法中的各步骤。该芯片系统可以为单个芯片,或者多个芯片组成的芯片模组。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1为本申请实施例提供的一种文件描述符表、打开文件表及索引节点表之间的关系的示意图;
图2为一种传统的文件保护方法的实现过程示意图;
图3为本申请实施例提供的一种电子设备的结构示意图;
图4为本申请实施例提供的一种电子设备的软件架构示意图;
图5为本申请实施例提供的一种文件保护方法实现时涉及到的各服务之间的交互过程的示意图;
图6为本申请实施例提供的一种文件保护方法的时序图;
图7为本申请实施例提供的一种文件保护方法中S604的具体实现流程示意图;
图8为本申请另一实施例提供的一种文件保护方法的时序图;
图9为本申请又一实施例提供的一种文件保护方法的时序图。
具体实施方式
需要说明的是,本申请实施例的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联物的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,除非另有说明,“多个”是指两个或多于两个,“至少一个”、“一个或多个”是指一个、两个或两个以上。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”特征可以明示或者隐含地包括一个或者更多个该特征。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
为了便于理解,先对本申请实施例涉及到的术语进行解释。
1、虚拟文件系统(virtual file system, VFS)
Linux操作系统可以支持多种不同的底层文件系统(即物理文件系统),为了为操作系统的内核层与用户进程提供统一的文件系统视图,Linux操作系统在用户进程与底层文件系统之间(即内核空间中)加入了一个抽象的文件系统,即VFS,进程所有的文件操作都会通过VFS,由VFS来适配各种不同的底层文件系统,完成实际的文件操作。
Linux操作系统在VFS中为底层文件系统中存储的每个文件均分配了一个地址空间(address space),每个文件的地址空间中存储有该文件的索引节点(inode)结构体,inode结构体中记录了对应文件的元信息,包括但不限于文件的文件类型、文件大小、创建时间、更新时间、文件锁及块(block)指针。其中,文件的block指针用于指向底层文件系统(例如磁盘)中存储的该文件,即通过文件的block指针可以查询到该文件在磁盘中的位置,进而得到该文件的文件路径。
2、文件描述符(file descriptor,FD)
在Linux操作系统中,一切软件和硬件(例如源文件、视频文件、脚本文件、可执行文件、键盘、显示器及鼠标等)皆可以被当作文件。一个文件可以被Linux操作系统中的多个进程同时打开,也可以被一个进程打开多次,因此,为了实现对被打开的文件的高效管理,Linux操作系统中的内核层会在每个进程每打开一个文件时,为被打开的文件分配一个文件描述符,作为该被打开的文件的索引。文件描述符在形式上是一个非负整数。
3、文件描述符(file descriptor)表、打开文件(open file)表及索引节点(inode)表
Linux操作系统每启动一个进程,Linux操作系统的内核层便会在内核空间中为该进程维护一个文件描述符表,用于记录该进程打开的所有文件的文件描述符的信息,即,每个进程均会对应一个文件描述符表,文件描述符表中的每个句柄(也可以理解为每个条目或每个文件描述符结构体)均记录了相应进程打开的一个文件的文件描述符的信息。文件描述符的信息例如可以包括文件指针,文件指针用于指向对应的被打开的文件的状态信息。
此外,为了通过文件描述符查询到对应的被打开的文件,内核层还会在内核空间中维护一张系统级的打开文件表以及一张与文件系统对应的inode表。
打开文件表用于记录系统中所有被打开的文件的状态信息,即,打开文件表中的每个句柄(也可以理解为每个条目或每个打开文件结构体)均记录了一个被打开的文件的状态信息。状态信息例如可以包括被打开的文件的文件偏移量、访问模式及inode指针。其中,文件偏移量为文件内部的指针偏移量,用于描述被打开的文件当前被修改的次数;访问模式例如可以包括只读模式、读写模式或覆盖模式等;inode指针用于指向被打开的文件的元信息。
inode表用于记录存储在底层文件系统中的所有文件的元信息,即,inode表中的每个句柄(也可以理解为每个条目或每个inode结构体)均记录了存储在底层文件系统上的一个文件的元信息。文件的元信息具体可以参考上述实施例中的相关描述,此处不再赘述。
示例性的,上述三个表的具体结构以及上述三个表之间的关系可以参阅图1。
如图1所示,进程A中的文件描述符0和8均指向了打开文件表中的1号句柄,这种情况可能是进程A多次对打开文件表中的1号句柄对应的文件执行了打开操作。进程A中的文件描述符2和进程B中的文件描述符1均指向了打开文件表中的3号句柄,这种情况有以下几种可能:进程A与进程B为父子进程关系;进程A与进程B均打开了打开文件表中的3号句柄对应的文件。可见,不同进程可以拥有相同的文件描述符;同一个进程的不同文件描述符可以指向同一个被打开的文件;不同进程的不同文件描述符也可以指向同一个文件。
基于上述三个表,内核层可以通过任意一个被打开的文件的文件描述符查询到该被打开的文件。示例性的,假设内核层已知进程A打开的文件file1的文件描述符为8,那么,如图1所示,内核层可以在进程A对应的文件描述符表中查询到该文件描述符8对应的文件指针;由于该文件描述符8对应的文件指针指向打开文件表中的1号句柄,因此内核层可以从打开文件表中的1号句柄中查询到文件file1的inode指针;由于文件file1的inode指针指向inode表中的156号句柄,因此内核层可以从inode表中的156号句柄中查询到文件file1的block指针,从而可以根据文件file1的block指针在磁盘中查询到文件file1,进而得到文件file1的文件路径。
通常,当操作系统中的某个进程(例如进程C)需要访问某个文件(例如文件file2)时,内核层会先查询内存中是否已缓存文件file2。在内存中未缓存文件file2的情况下,内核层会从磁盘中查询到文件file2,并将文件file2加载至内存中,从而使进程可直接从内存中访问文件file2;在内存中已缓存文件file2的情况下,进程可直接从内存中访问文件file2。然而,随着内存中缓存的文件数量的不断增多,内存的剩余空间会越来越小,当内存的剩余空间小到无法缓存新文件时,内核层会将内存中缓存时间较早的一些旧文件(例如文件file2)占用的内存空间资源进行回收,之后,当有进程需要再次访问文件file2时,内核层需要重新从磁盘中查询该文件file2,这样会降低进程的文件访问速度。
然而,对于一些关键文件(例如应用文件),若其无法被相应的进程(例如应用程序(application,APP))快速访问,则可能会降低进程对用户操作的响应速度,从而降低用户的使用体验。因此,为了提高进程访问关键文件的速度,一种方式是,在将关键文件从磁盘加载至内存后,对内存中缓存的这些关键文件进行保护,使这些关键文件能够被长期存储在内存中不被换出,这样,进程每次便可直接从内存中访问这些关键文件,从而达到快速访问关键文件的目的。请参阅图2,为一种传统的文件保护方法的实现过程示意图。
如图2所示,为了实现对关键文件的保护,通常可以预先在系统中配置关键文件配置列表,并将待保护的关键文件的信息记录在该关键文件配置列表中;同时,还可以在Linux操作系统的应用程序框架(framework)层中配置文件保护服务,在Linux操作系统的内核层配置保护标记设置服务。基于此,在需要对关键文件进行保护时,应用程序框架层中的文件保护服务可以从关键文件配置列表中读取关键文件的信息,并基于关键文件的信息打开关键文件,从而获取到关键文件的文件描述符,且将关键文件的文件描述符发送给内核层,使得内核层中的保护标记设置服务可以基于关键文件的文件描述符为关键文件设置文件保护标记,这样,内核层中的内存管理服务在执行内存回收操作时,可以不回收设置有文件保护标记的关键文件占用的内存空间资源,从而可以将关键文件长期缓存在内存中。
然而,当关键文件中包括应用文件时,受限于Linux操作系统中的安全子系统(即安全增强型Linux(security-enhanced Linux,简称SELinux))的权限管控,应用程序框架层无法打开某些目录下的应用文件,例如,无法打开/data/data目录下的应用文件(即应用程序的数据文件),再例如,无法打开/data/user/0目录下的应用文件(即应用程序的用户文件)等,这样,应用程序框架层无法获取到这些应用文件的文件描述符,也就无法向内核层发送这些应用文件的文件描述符,从而导致内核层无法实现对这些应用文件的保护。
针对上述技术问题,本申请实施例提供了一种文件保护方法及电子设备,通过将待保护文件划分为应用程序框架层有权限访问的第一待保护文件和应用程序框架层无权限访问的第二待保护文件;对于第一待保护文件,由应用程序框架层基于第一待保护文件的文件路径,获取第一待保护文件的文件描述符,并向内核层发送所述文件描述符,使得内核层可以基于第一待保护文件的文件描述符为第一待保护文件设置文件保护标记;对应第二待保护文件,应用程序框架层可以直接向内核层发送第二待保护文件的文件路径,由内核层基于第二待保护文件的文件路径,为与第二待保护文件相匹配的目标文件设置文件保护标记;由于内核层在执行内存回收操作时,不回收设置有文件保护标记的文件占用的内存空间资源,因此,不仅可以实现对应用程序框架层有权限访问的第一待保护文件的保护,而且可以实现对应用程序框架层无权限访问的第二待保护文件的保护,从而提高了所有待保护文件的被访问速度。
本申请实施例提供的文件保护方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等电子设备上,本申请实施例对电子设备的具体类型不做任何限制。
以下以电子设备为手机为例,对本申请实施例提供的文件保护方法所适用的电子设备的结构进行说明。如图3所示,为本申请实施例提供的一种电子设备的结构示意图。
电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,受话器170A,麦克风170B,耳机接口170C,传感器模块180,按键190,显示屏191,以及用户标识模块(subscriberidentification module,SIM)卡接口192等。其中,传感器模块180可以包括压力传感器180A,指纹传感器180B,触摸传感器180C等。
处理器110可以包括一个或多个处理单元,例如,处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180C,充电器,闪光灯等。例如,处理器110可以通过I2C接口耦合触摸传感器180C,使处理器110与触摸传感器180C通过I2C总线接口通信,实现电子设备100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如,处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。
MIPI接口可以被用于连接处理器110与显示屏191等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(display serialinterface,DSI)等。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与显示屏191,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他终端,例如AR设备等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为终端供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏191,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于受话器170A)输出声音信号,或通过显示屏191显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,WIFI)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
电子设备100可以通过GPU,显示屏191,以及应用处理器等实现显示功能。
显示屏191包括显示面板。显示面板可以采用液晶显示屏(liquid crystaldisplay,LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot light emitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏191,N为大于1的正整数。在一些实施例中,显示屏191可以为触控屏。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。视频编解码器用于对数字视频压缩或解压缩。NPU为神经网络(neural-network ,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备200的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备100的各种功能应用以及数据处理。
电子设备100可以通过音频模块170,受话器170A,麦克风170B,耳机接口170C,以及应用处理器等实现音频功能。例如音乐播放,录音等。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏191。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏191,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如,当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
触摸传感器180C,也称“触控器件”。触摸传感器180C可以设置于显示屏191,由触摸传感器180C与显示屏191组成触摸屏,也称“触控屏”。触摸传感器180C用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏191提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180C也可以设置于电子设备100的表面,与显示屏191所处的位置不同。
按键190包括开机键(也称为电源键),音量键等。按键190可以是机械按键(也称为实体按键)。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请的另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现,本申请实施例对此不做限定。
示例性的,电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,或云架构等。本申请实施例以电子设备100采用分层架构的Android®系统为例,示例性说明电子设备100的软件架构。请参阅图4,为本申请实施例提供的一种电子设备100的软件架构示意图。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将电子设备100的操作系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统层,以及内核层。
应用程序层可以包括一系列应用程序包。示例性的,如图4所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用程序编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图4所示,应用程序框架层可以包括窗口管理器,内容提供器,通知管理器,视图系统,资源管理器,文件保护服务等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
需要说明的是,关于文件保护服务的具体功能可以参考后续图5对应的实施例中的相关描述,此处暂不详述。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如,表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如OpenGL ES),2D图形引擎(例如SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如,MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包括显示驱动,摄像头驱动,音频驱动,传感器驱动,保护标志设置服务,内存管理服务等。
其中,内存管理服务可以包括内存分配服务和内存回收服务。
需要说明的是,关于保护标志设置服务、内存分配服务及内存回收服务的具体功能可以参考后续图5对应的实施例中的相关描述,此处暂不详述。
本申请实施例提供的文件保护方法可以通过电子设备的操作系统中的多个服务(也可以理解为软件模块)实现。为了更清楚地理解本申请实施例提供的文件保护方法,下面结合附图,对实现文件保护方法时电子设备中相关服务之间的交互过程进行介绍。
示例性的,请参阅图5,为本申请实施例提供的一种文件保护方法实现时涉及到的各服务之间的交互过程的示意图。
如图5所示,电子设备的应用程序框架层中可以配置有文件保护服务51。电子设备的内核层中可以配置有保护标志设置服务52和内存管理服务53。其中,内存管理服务53可以包括内存分配服务531和内存回收服务532。
此外,电子设备的应用程序框架层中还可以预先配置有预设文件配置列表。
预设文件配置列表用于记录预设的待保护文件的信息。待保护文件指需要被长时间缓存在内存中不被换出(即占用的内存空间资源不被回收)的文件。待保护文件的类型例如可以包括系统文件或应用文件等,本申请实施例对待保护文件的类型不做特别限定。
示例性的,当待保护文件的类型为系统文件时,预设文件配置列表中记录的待保护文件的信息可以为待保护文件的文件路径。该文件路径指在操作系统全局下的文件路径。例如,预设文件配置列表中记录的某个系统文件的文件路径可以为</file>/system/xxxx</file>。
当待保护文件的类型为应用文件时,预设文件配置列表中记录的待保护文件的信息可以为待保护文件的应用程序安装包(android application package,APK)的包名。应用程序框架层可以通过应用文件的APK的包名查询到该包名下的所有应用文件。例如,假设预设文件配置列表中记录的某个应用文件的APK 的包名为</packagename>xxxx</packagename>,则应用程序框架层基于该包名,可以从磁盘中查询到该包名下的所有应用文件,包括/data/data目录下的应用文件、/data/user/0目录下的应用文件及/data/app目录下的应用文件等。
示例性的,预设文件配置列表可以是文本格式的文档,例如config.xml文档;或者可以是表格形式的文档,例如config.xls文档;或者还可以是其他表现形式,本申请实施例对预设文件配置列表的表现形式不做特别限定。
可以理解的是,预设文件配置列表中可以包括文件保护服务无权限访问的待保护文件,也可以包括文件保护服务有权限访问的待保护文件。为了便于描述,后续实施例将文件保护服务有权限访问的待保护文件统一描述为第一待保护文件,将文件保护服务无权限访问的待保护文件统一描述为第二待保护文件。即,第一待保护文件和第二待保护文件中的“第一”和“第二”用于描述不同类别的待保护文件,而并非特指某一个待保护文件。
基于此,应用程序框架层中的文件保护服务可以用于实现以下功能:
对于预设文件配置列表中的第一待保护文件,基于第一待保护文件的信息获取第一待保护文件的文件描述符,并向内核层发送第一待保护文件的文件描述符;对于预设文件配置列表中的第二待保护文件,向内核层发送第二待保护文件的文件路径。
在一种可选的实现方式中,文件保护服务具体可以通过以下步骤来实现上述功能:
步骤1,文件保护服务读取预设文件配置列表中记录的各个待保护文件的信息。
步骤2,针对预设文件配置列表中记录的任意一个待保护文件,在待保护文件的信息为文件路径的情况下,文件保护服务调用open()函数打开待保护文件的文件路径;在待保护文件的信息为APK的包名的情况下,文件保护服务基于待保护文件的APK的包名,从磁盘中查询该包名下的所有文件路径,并调用open()函数分别打开该包名下的各个文件路径。
需要说明的是,在文件保护服务有权限访问某个待保护文件的情况下,文件保护服务调用open()函数打开该待保护文件的文件路径后,open()函数会返回该待保护文件的文件描述符。在文件保护服务无权限访问某个待保护文件的情况下,文件保护服务调用open()函数打开该待保护文件的文件路径后,open()函数会返回错误提示,例如返回“error”。
基于此,文件保护服务在调用open()函数打开待保护文件的文件路径后,若open()函数返回待保护文件的文件描述符,则说明该待保护文件为第一待保护文件,此时文件保护服务可以执行步骤3;若open()函数返回错误提示,则说明该待保护文件为第二待保护文件,此时文件保护服务可以执行步骤4。
在具体应用中,文件保护服务调用open()函数打开待保护文件的文件路径的过程具体可以包括:将待保护文件的文件路径作为open()函数的输入参数,并调用open()函数。
例如,若预设文件配置列表中记录的某个待保护文件的信息为</file>/system/xxxx</file>,则文件保护服务可以将</file>/system/xxxx</file>作为open()函数的输入参数,并调用open()函数,即文件保护服务可以执行open(</file>/system/xxxx</file>)操作。
再例如,若预设文件配置列表中记录的某个待保护文件的信息为该待保护文件的APK的包名</packagename>xxxx</packagename>,则文件保护服务可以从磁盘中查询并获取该包名下所有的文件路径。假设文件保护服务从磁盘中查询到该包名下包括以下文件路径:/data/user/0/xxxx、/data/app/xxxx及/data/data/xxxx,则文件保护服务可以调用open()函数,并分别将/data/user/0/xxxx、/data/app/xxxx及/data/data/xxxx作为open()函数的输入参数,即分别执行open(/data/user/0/xxxx)操作、open(/data/app/xxxx)操作及open(/data/data/xxxx)操作。
步骤3,若open()函数返回待保护文件的文件描述符,则文件保护服务确定该待保护文件为第一待保护文件,并向内核层发送该第一待保护文件的文件描述符。
结合步骤2中的示例,若文件保护服务执行了open(/data/app/xxxx) 操作后,open()函数返回了文件路径/data/app/xxxx对应的待保护文件的文件描述符,则文件保护服务可以确定/data/app/xxxx对应的待保护文件为第一待保护文件,并向内核层发送文件路径/data/app/xxxx对应的待保护文件的文件描述符。
步骤4,若open()函数返回错误提示,则文件保护服务确定该待保护文件为第二待保护文件,并向内核层发送第二待保护文件的文件路径。
结合步骤2中的示例,若文件保护服务执行了open(/data/user/0/xxxx)操作后,open()函数返回了错误提示“error”,则文件保护服务可以确定/data/user/0/xxxx对应的待保护文件为第二待保护文件,并向内核层发送该第二待保护文件的文件路径/data/user/0/xxxx。
需要说明的是,上述步骤3和步骤4为并列步骤,文件保护服务在执行步骤3的情况下不执行步骤4,在执行步骤4的情况下不执行步骤3。
基于此,在一些实施例中,内核层接收到文件保护服务发送的第一待保护文件的文件描述符后,可以通过保护标志设置服务基于第一待保护文件的文件描述符,为第一待保护文件设置文件保护标记。
在一个具体的实现方式中,保护标志设置服务基于第一待保护文件的文件描述符,为第一待保护文件设置文件保护标记,具体可以包括以下步骤:
保护标志设置服务基于第一待保护文件的文件描述符,查询第一待保护文件对应的inode结构体,并在第一待保护文件对应的inode结构体中添加文件保护标记。
在具体实现时,示例性的,保护标志设置服务可以先基于第一待保护文件的文件描述符,从内核空间中的文件描述符表中查询第一待保护文件的文件描述符对应的文件指针,再从该文件指针所指向的打开文件结构体中查询第一待保护文件对应的inode指针,并在第一待保护文件对应的inode指针所指向的inode结构体中添加文件保护标记。
示例性的,如图1中的inode表所示,在一种可选的实现方式中,每个文件对应的inode结构体中还预先配置有保护标志位,保护标志位用于指示对应的文件是否为预设的待保护文件。示例性的,保护标志位的取值可以为0或1。保护标志位的值为1时,可以用于指示对应的文件为预设的待保护文件,即,对应的文件为需要长期缓存在内存中不被换出的文件;保护标志位的值为1时,可以用于指示对应的文件不是预设的待保护文件,即,对应的文件占用的内存空间资源可以被正常回收。可以理解的是,每个文件对应的inode结构体中的保护标志位的值可以默认为0。
基于此,保护标志设置服务在第一待保护文件对应的inode指针所指向的inode结构体中添加文件保护标记,具体可以包括:将第一待保护文件对应的inode指针所指向的inode结构体中预设的保护标志位的值置为1。
在另一些实施例中,内核层可以在内核空间中维护一个无权限文件列表,用于记录文件保护服务发送的第二待保护文件的文件路径。基于此,内核层接收到文件保护服务发送的第二待保护文件的文件路径后,可以将第二待保护文件的文件路径记录在无权限文件列表中。
基于此,内存管理服务中的内存分配服务在接收到来自任意一个进程的文件访问请求后,可以基于文件访问请求携带的待访问的目标文件的地址空间,查询目标文件的文件路径。
内存分配服务基于目标文件的地址空间,查询目标文件的文件路径,具体可以包括以下步骤:内存分配服务基于目标文件的地址空间,从目标文件的地址空间中查询目标文件对应的inode结构体,并基于inode结构体中记录的目标文件的block指针确定目标文件在磁盘中的位置,从而得到目标文件的文件路径。
内存分配服务查询到目标文件的文件路径后,可以检测内存中是否已缓存有该目标文件。
在内存中未缓存该目标文件的情况下,内存分配服务可以基于目标文件的文件路径,将目标文件从磁盘添加至内存中,且在将目标文件从磁盘添加至内存的过程中,将目标文件的文件路径与无权限文件列表中记录的各个第二待保护文件的文件路径进行匹配;若无权限文件列表中存在与目标文件相匹配的第二待保护文件,则内存分配服务可以基于目标文件的文件路径,为目标文件设置文件保护标记。
其中,目标文件与第二待保护文件相匹配可以包括:目标文件的文件路径与第二待保护文件的文件路径相同;或者,目标文件的文件路径属于第二待保护文件的文件路径的子路径。例如,假设目标文件的文件路径为/data/data/xxxx,第二待保护文件的文件路径为/data/data,由于目标文件的文件路径为第二待保护文件的文件路径的子路径,因此,目标文件与第二待保护文件相匹配。
在一个具体的实施例中,内存分配服务基于目标文件的文件路径,为目标文件设置文件保护标记,可以包括以下步骤:
内存分配服务将目标文件对应的inode结构体中预设的保护标志位的值置为1。
基于此,内存管理服务中的内存回收服务在执行内存回收操作时,可以检测各个待回收文件是否设置有文件保护标记。若某个待回收文件设置有文件保护标记,则说明该待回收文件为预设的待保护文件,此时,内存回收服务不回收该待回收文件占用的内存空间资源。其中,待回收文件指需要被回收占用的内存空间资源的文件。
由于内核层可以采用不同的方式为应用程序框架层有权限访问的第一待保护文件和无权限访问的第二待保护文件均设置文件保护标记,因此可以保证预设的所有待保护文件均可以被长期缓存在内存中不被换出,从而提高了预设的所有待保护文件的被访问速度。
示例性的,如图6所示,为本申请实施例提供的一种文件保护方法的时序图。该文件保护方法可以包括S601~S605,详述如下:
S601,应用程序框架层基于第一待保护文件的文件路径,获取第一待保护文件的文件描述符,并向内核层发送第一待保护文件的文件描述符。
其中,第一待保护文件为应用程序框架层有权限访问的待保护文件。
可选的,第一待保护文件可以是预设文件配置列表中记录的,应用程序框架层有权限访问的待保护文件。应用程序框架层有权限访问的待保护文件指,预设文件配置列表中记录的,应用程序框架层能够通过open()函数打开,并获取到文件描述符的待保护文件。
在一种可选的实现方式中,应用程序框架层基于第一待保护文件的文件路径,获取第一待保护文件的文件描述符,具体可以包括以下步骤:
应用程序框架层将第一待保护文件的文件路径作为open()函数的输入参数,调用open()函数,得到第一待保护文件的文件描述符。
需要说明的是,该步骤的具体实现过程可以参考图5对应的实施例中步骤1、步骤2及步骤3中的相关描述,此处不再对其进行赘述。
本申请实施例中,应用程序框架层得到第一待保护文件的文件描述符后,可以将第一待保护文件的文件描述符发送给内核层,以使内核层基于第一待保护文件的文件描述符,为第一待保护文件设置文件保护标记。
S602,内核层基于第一待保护文件的文件描述符,为第一待保护文件设置文件保护标记。
在一种可选的实现方式中,S602具体可以包括以下步骤:
内核层基于第一待保护文件的文件描述符,从内核空间中查询第一待保护文件对应的第一索引节点结构体,并将第一索引节点结构体中预设的保护标志位的值置为第一预设值;第一预设值用于指示对应的文件为预设的待保护文件。
在具体实现时,内核层可以基于第一待保护文件的文件描述符,从内核空间中的文件描述符表中查询第一待保护文件的文件描述符对应的文件指针,再从该文件指针所指向的打开文件结构体中查询第一待保护文件对应的第一inode指针,并将第一inode指针所指向的inode结构体中预设的保护标志位的值置为第一预设值。示例性的,第一预设值可以为1。
本实现方式通过在各个文件对应的索引节点结构体中预先配置保护标志位,并定义保护标志位的值为第一预设值时表示对应的文件为预设的待保护文件,从而使内核层可以通过将第一待保护文件对应的第一索引节点结构体中预设的保护标志位的值置为第一预设值,来指示第一待保护文件为预设的待保护文件。
S603,应用程序框架层向内核层发送第二待保护文件的文件路径。
其中,第二待保护文件为应用程序框架层无权限访问的待保护文件。
可选的,第二待保护文件可以是预设文件配置列表中记录的,应用程序框架层无权限访问的待保护文件。应用程序框架层无权限访问的待保护文件指,预设文件配置列表中记录的,应用程序框架层通过open()函数打开无法获取到对应的文件描述符的待保护文件。
需要说明的是,该步骤的具体实现过程可以参考图5对应的实施例中步骤1、步骤2及步骤4中的相关描述,此处不再进行赘述。
在一种可选的实现方式中,内核层接收到应用程序层发送的第二待保护文件的文件路径后,可以将第二待保护文件的文件路径记录在预设的无权限文件列表中。
S604,内核层接收到文件访问请求,并将文件访问请求指示的目标文件从磁盘添加至内存时,若基于目标文件的文件路径与第二待保护文件的文件路径,确定目标文件与第二待保护文件相匹配,则为目标文件设置文件保护标记。
在具体应用中,文件访问请求可以来自于任意一个进程。
示例性的,文件访问请求中可以携带有待访问的目标文件的地址空间。内核层通过目标文件的地址空间可以查询到目标文件对应的第二索引节点结构体,进而可以查询到目标文件的文件路径。基于此,在一种可选的实现方式中,S604具体可以包括如图7所示的S6041~S6044,详述如下:
S6041,内核层接收到文件访问请求时,基于文件访问请求中携带的目标文件的地址空间,从地址空间中查询目标文件对应的第二索引节点结构体。
S6042,内核层基于目标文件对应的第二索引节点结构体,获取目标文件的文件路径。
S6043,内核层若基于目标文件的文件路径,确定内存中未缓存目标文件,则将目标文件从磁盘添加至内存。
S6044,内核层在将目标文件从磁盘添加至内存的过程中,若确定目标文件与第二待保护文件相匹配,则将第二索引节点结构体中预设的保护标志位的值置为第一预设值;第一预设值用于指示对应的文件为预设的待保护文件。
其中,目标文件与第二待保护文件相匹配指,目标文件的文件路径与第二待保护文件的文件路径相同,或者目标文件的文件路径为第二待保护文件的文件路径的子路径。
在具体实现时,步骤b具体可以包括:内核层基于第二索引节点结构体中记录的目标文件的block指针确定目标文件在磁盘中的位置,从而得到目标文件的文件路径。
本实现方式中,内核层得到目标文件的文件路径后,可以基于目标文件的文件路径,判断内存中是否已缓存目标文件。
在内存中未缓存目标文件的情况下,内核层可以基于目标文件的文件路径,将目标文件从磁盘添加至内存,并在将目标文件从磁盘添加至内存的过程中,将目标文件的文件路径与无权限文件列表中记录的各个第二待保护文件的文件路径进行匹配;若无权限文件列表中存在与目标文件相匹配的第二待保护文件,则内核层可以通过内存分配服务将第二索引节点结构体中预设的保护标志位的值置为第一预设值。示例性的,第一预设值可以为1。
在内存中已缓存目标文件的情况下,内核层可以不为目标文件添加文件保护标记,待目标文件被从内存中换出,并再次被进程请求访问时,内核层可以在将目标文件从磁盘添加至内存的过程中,将第二索引节点结构体中预设的保护标志位的值置为第一预设值。
S605,内核层在执行内存回收操作时,不回收设置有文件保护标记的文件占用的内存空间资源。
示例性的,内核层执行内存回收操作的时机可以包括但不限于:1)内核层需要将文件访问请求指示的目标文件添加至内存,但内存的剩余空间不足以容纳目标文件,即内存的剩余空间容量小于目标文件的大小时;2)内存的剩余空间容量小于预设容量阈值时。
在一种可选的实现方式中,如图8所示,S605可以通过图8中的S6051实现,详述如下:
S6051,内核层在执行内存回收操作时,若检测到待回收文件中包括设置有文件保护标记的文件,且内存中缓存的所有设置有文件保护标记的文件的总大小占内存的已占用空间容量的第一比例小于或等于预设比例阈值,则不回收待回收文件中设置有文件保护标记的文件占用的内存空间资源。
其中,内存的已占用空间容量可以通过内存中缓存的所有文件的总大小描述。内存的已占用空间容量与剩余空间容量之和即为内存的总容量。
基于此,如图8所述,文件保护方法还可以包括S606,详述如下:
S606,内核层在执行内存回收操作时,若检测到待回收文件中包括设置有文件保护标记的文件,且内存中缓存的所有设置有文件保护标记的文件的总大小占内存的已占用空间容量的第一比例大于预设比例阈值,则回收所有待回收文件占用的内存空间资源。
本实现方式中,内核层在执行内存回收操作时,可以先基于目标文件的大小以及内存的剩余空间容量,从内存中缓存的所有文件中确定待回收文件,再判断待回收文件中是否包括设置有文件保护标记的文件。待回收文件指待被回收占用的内存空间资源的文件。
在一种情形下,在待回收文件中不包括设置有文件保护标记的文件时,内核层可以直接回收所有待回收文件占用的内存空间资源。
在另一种情形下,在待回收文件中包括设置有文件保护标记的文件时,内核层可以先计算内存中缓存的所有设置有文件保护标记的文件的总大小占内存的已占用空间容量的第一比例,并判断该第一比例是否小于或等于预设比例阈值。
可选的,在第一比例小于或等于预设比例阈值时,内核层可以不回收待回收文件中设置有文件保护标记的文件占用的内存空间资源;可选的,在第一比例大于预设比例阈值时,内核层可以回收所有待回收文件占用的内存空间资源。
其中,预设比例阈值可以根据实际需求设置,此处对其不做特别限定,例如,预设比例阈值可以为50%,即在内存中缓存的所有设置有文件保护标记的文件的总大小占内存的已占用空间容量的第一比例小于或等于50%时,内核层可以不回收待回收文件中设置有文件保护标记的文件占用的内存空间资源。
示例性的,假设内存中缓存的文件包括文件file1、文件file2、文件file3、文件file4、文件file5、文件file6、文件file7及文件file8,其中,file1、文件file2及文件file3为设置有文件保护标记的文件(即file1、文件file2及文件file3为预设的待保护文件),文件file4、文件file5、文件file6、文件file7及文件file8为未设置文件保护标记的文件,且内核层在执行内存回收操作时确定出的待回收文件包括文件file3、文件file7及文件file8;那么,内核层在执行内存回收操作时,需要先计算文件file1、文件file2及文件file3的总大小占文件file1、文件file2、文件file3、文件file4、文件file5、文件file6、文件file7及文件file8的总大小的第一比例,在第一比例小于或等于预设比例阈值的情况下,内核层不回收文件file3占用的内存空间资源,且内核层需从内存中缓存的未设置有文件保护标记的文件中重新确定待回收文件;在第一比例大于预设比例阈值的情况下,内核层回收文件file3、文件file7及文件file8各自占用的内存空间资源。
如此,可以确保内存中缓存的所有待保护文件的总大小占内存的已占用空间容量的第一比例始终小于或等于预设比例阈值,这样可以避免内存中缓存的待保护文件占用过多的内存空间资源,导致内存无法缓存其他文件。
需要说明的是,S6051与S606为并列步骤,内核层在执行S6051时不执行S606,在执行S606时不执行S6051。
在另一种可选的实现方式中,如图9所示,S605可以通过图9中的S6052实现,详述如下:
S6052,内核层在执行内存回收操作时,若检测到待回收文件中包括设置有文件保护标记的文件,且内存中缓存的所有设置有文件保护标记的文件的总大小未超过预设容量阈值,则不回收待回收文件中设置有文件保护标记的文件占用的内存空间资源。
基于此,如图9所示,文件保护方法还可以包括S607,详述如下:
S607,内核层在执行内存回收操作时,若检测到待回收文件中包括设置有文件保护标记的文件,且内存中缓存的所有设置有文件保护标记的文件的总大小超过预设容量阈值,则回收所有待回收文件占用的内存空间资源。
其中,未超过预设容量阈值可以指小于或等于预设容量阈值;超过预设容量阈值可以指大于预设容量阈值。
本实现方式中,内核层在执行内存回收操作时,可以先基于目标文件的大小以及内存的剩余空间容量,从内存中缓存的所有文件中确定待回收文件,再判断待回收文件中是否包括设置有文件保护标记的文件。
在一种情形下,在待回收文件中不包括设置有文件保护标记的文件时,内核层可以直接回收所有待回收文件占用的内存空间资源。
在另一种情形下,在待回收文件中包括设置有文件保护标记的文件时,内核层可以先计算内存中缓存的所有设置有文件保护标记的文件的总大小,再判断内存中缓存的所有设置有文件保护标记的文件的总大小是否超过预设容量阈值。可选的,在内存中缓存的所有设置有文件保护标记的文件的总大小未超过预设容量阈值时,内核层可以不回收待回收文件中设置有文件保护标记的文件占用的内存空间资源;可选的,在内存中缓存的所有设置有文件保护标记的文件的总大小超过预设容量阈值时,内核层可以回收所有待回收文件占用的内存空间资源。其中,预设容量阈值可以根据实际需求设置,此处对其不做特别限定。
示例性的,假设内存中缓存的文件包括文件file1、文件file2、文件file3、文件file4、文件file5、文件file6、文件file7及文件file8,其中,file1、文件file2及文件file3为设置有文件保护标记的文件(即file1、文件file2及文件file3为预设的待保护文件),文件file4、文件file5、文件file6、文件file7及文件file8为未设置文件保护标记的文件,且内核层在执行内存回收操作时确定出的待回收文件包括文件file3、文件file7及文件file8;那么,内核层在执行内存回收操作时,需要先计算文件file1、文件file2及文件file3的总大小,再判断文件file1、文件file2及文件file3的总大小是否超过预设容量阈值,文件file1、文件file2及文件file3的总大小未超过预设容量阈值的情况下,内核层不回收文件file3占用的内存空间资源,且内核层需从内存中缓存的未设置有文件保护标记的文件中重新确定待回收文件;在文件file1、文件file2及文件file3的总大小超过预设容量阈值的情况下,内核层回收文件file3、文件file7及文件file8各自占用的内存空间资源。
如此,可以确保内存中缓存的所有待保护文件的总大小不超过预设容量阈值,这样可以避免内存中缓存的待保护文件占用过多的内存空间资源,导致内存无法缓存其他文件。
需要说明的是,S6052与S607为并列步骤,内核层在执行S6052时不执行S607,在执行S607时不执行S6052。
在本申请的另一些实施例中,内核层还可以对内存中缓存的被访问频率较高的热点文件进行文件保护,基于此,文件保护方法还可以包括以下步骤:
内核层监控内存中缓存的各个文件的被访问频率;
在内存中缓存的第三文件的被访问频率大于或等于预设频率阈值时,内核层为第三文件设置文件保护标记。
其中,文件的被访问频率可以通过文件在单位时间内的被访问次数表示。
预设频率阈值可以根据实际需求设置,此处对其不做特别限定。
内核层为第三文件设置文件保护标记的方式可以为,将第三文件对应的第三索引结构体中预设的保护标志位的值置为第一预设值。从而可以使得被访问频率多的热点文件能够被长期缓存在内存中不被换出,有利于提高进程访问热点文件的速度。
基于同样的技术构思,本申请实施例还提供了一种电子设备,该电子设备可以包括:显示器;一个或多个处理器;一个或多个存储器;该一个或多个存储器存储有一个或多个计算机程序,该一个或多个计算机程序包括指令,当该指令被上述一个或多个处理器执行时,使得电子设备执行上述任意一个方法中的一个或多个步骤。
基于同样的技术构思,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行程序,该计算机可执行程序在被计算机调用时使计算机执行上述任意一个方法中的一个或多个步骤。
基于同样的技术构思,本申请实施例还提供了一种芯片系统,包括处理器,处理器与存储器耦合,该处理器执行存储器中存储的计算机可执行程序,以实现如上述任意一个方法中的一个或多个步骤。该芯片系统可以为单个芯片,或者多个芯片组成的芯片模组。
基于同样的技术构思,本申请实施例还提供了一种计算机可执行程序产品,当计算机可执行程序产品在电子设备上运行时,使得该电子设备执行上述任意一个方法中的一个或多个步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其他实施例的相关描述。应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
以上所述,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何在本申请实施例揭露的技术范围内的变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种文件保护方法,其特征在于,包括:
应用程序框架层基于第一待保护文件的文件路径,获取所述第一待保护文件的文件描述符,并向内核层发送所述文件描述符;所述第一待保护文件为所述应用程序框架层有权限访问的待保护文件;
所述内核层基于所述文件描述符,为所述第一待保护文件设置文件保护标记;
所述应用程序框架层向所述内核层发送第二待保护文件的文件路径;所述第二待保护文件为所述应用程序框架层无权限访问的待保护文件;
所述内核层接收到文件访问请求,并将所述文件访问请求指示的目标文件从磁盘添加至内存时,若基于所述目标文件的文件路径与所述第二待保护文件的文件路径,确定所述目标文件与所述第二待保护文件相匹配,则为所述目标文件设置文件保护标记;
所述内核层在执行内存回收操作时,不回收设置有所述文件保护标记的文件占用的内存空间资源。
2.根据权利要求1所述的文件保护方法,其特征在于,所述应用程序框架层基于第一待保护文件的文件路径,获取所述第一待保护文件的文件描述符,包括:
所述应用程序框架层将所述第一待保护文件的文件路径作为open()函数的输入参数,调用所述open()函数,得到所述第一待保护文件的文件描述符。
3.根据权利要求1所述的文件保护方法,其特征在于,所述内核层基于所述文件描述符,为所述第一待保护文件设置文件保护标记,包括:
所述内核层基于所述文件描述符,从内核空间中查询所述第一待保护文件对应的第一索引节点结构体,并将所述第一索引节点结构体中预设的保护标志位的值置为第一预设值;所述第一预设值用于指示对应的文件为预设的待保护文件。
4.根据权利要求1所述的文件保护方法,其特征在于,所述内核层接收到文件访问请求,并将所述文件访问请求指示的目标文件从磁盘添加至内存时,若基于所述目标文件的文件路径与所述第二待保护文件的文件路径,确定所述目标文件与所述第二待保护文件相匹配,则为所述目标文件设置文件保护标记,包括:
所述内核层接收到文件访问请求时,基于所述文件访问请求中携带的目标文件的地址空间,从所述地址空间中查询所述目标文件对应的第二索引节点结构体;
所述内核层基于所述第二索引节点结构体,获取所述目标文件的文件路径;
所述内核层若基于所述目标文件的文件路径,确定所述内存中未缓存所述目标文件,则将所述目标文件从磁盘添加至所述内存;
所述内核层在将所述目标文件从所述磁盘添加至所述内存的过程中,若确定所述目标文件与所述第二待保护文件相匹配,则将所述第二索引节点结构体中预设的保护标志位的值置为第一预设值;所述第一预设值用于指示对应的文件为预设的待保护文件。
5.根据权利要求1-4任一项所述的文件保护方法,其特征在于,所述内核层在执行内存回收操作时,不回收设置有所述文件保护标记的文件占用的内存空间资源,包括:
所述内核层在执行内存回收操作时,若检测到待回收文件中包括设置有所述文件保护标记的文件,且所述内存中缓存的所有设置有所述文件保护标记的文件的总大小占所述内存的已占用空间容量的第一比例小于或等于预设比例阈值,则不回收所述待回收文件中设置有所述文件保护标记的文件占用的内存空间资源。
6.根据权利要求5所述的文件保护方法,其特征在于,还包括:
所述内核层在执行内存回收操作时,若检测到待回收文件中包括设置有所述文件保护标记的文件,且所述第一比例大于所述预设比例阈值,则回收所有所述待回收文件占用的内存空间资源。
7.根据权利要求1-4任一项所述的文件保护方法,其特征在于,所述内核层在执行内存回收操作时,不回收设置有所述文件保护标记的文件占用的内存空间资源,包括:
所述内核层在执行内存回收操作时,若检测到待回收文件中包括设置有所述文件保护标记的文件,且所述内存中缓存的所有设置有所述文件保护标记的文件的总大小未超过预设容量阈值,则不回收所述待回收文件中设置有所述文件保护标记的文件占用的内存空间资源。
8.根据权利要求7所述的文件保护方法,其特征在于,还包括:
所述内核层在执行内存回收操作时,若检测到待回收文件中包括设置有所述文件保护标记的文件,且所述内存中缓存的所有设置有所述文件保护标记的文件的总大小超过所述预设容量阈值,则回收所有所述待回收文件占用的内存空间资源。
9.根据权利要求1-4任一项所述的文件保护方法,其特征在于,还包括:
所述内核层监控所述内存中缓存的各个文件的被访问频率;
在所述内存中缓存的第三文件的所述被访问频率大于或等于预设频率阈值时,所述内核层为所述第三文件设置文件保护标记。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;
一个或多个存储器;
所述一个或多个存储器存储有一个或多个计算机可执行程序,所述一个或多个计算机可执行程序包括指令,当所述指令被所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1-9任一项所述的文件保护方法中的各步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序在被计算机调用时,使所述计算机执行如权利要求1-9任一项所述的文件保护方法中的各步骤。
12.一种芯片系统,其特征在于,包括处理器,所述处理器与存储器耦合,所述存储器用于存储计算机程序指令,当所述处理器执行所述计算机程序指令时,使得所述芯片系统实现如权利要求1-9任一项所述的文件保护方法中的各步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211408528.3A CN115481444B (zh) | 2022-11-10 | 2022-11-10 | 文件保护方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211408528.3A CN115481444B (zh) | 2022-11-10 | 2022-11-10 | 文件保护方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115481444A true CN115481444A (zh) | 2022-12-16 |
CN115481444B CN115481444B (zh) | 2023-03-31 |
Family
ID=84396722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211408528.3A Active CN115481444B (zh) | 2022-11-10 | 2022-11-10 | 文件保护方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115481444B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117131497A (zh) * | 2023-02-28 | 2023-11-28 | 荣耀终端有限公司 | 一种软件检测方法及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8904137B1 (en) * | 2011-05-12 | 2014-12-02 | Symantec Corporation | Deduplication system space recycling through inode manipulation |
CN105830059A (zh) * | 2014-11-28 | 2016-08-03 | 华为技术有限公司 | 文件访问方法、装置及存储设备 |
CN107423369A (zh) * | 2017-07-01 | 2017-12-01 | 珠海格力电器股份有限公司 | 一种处理待删除文件的方法以及装置 |
CN110134652A (zh) * | 2019-05-10 | 2019-08-16 | Oppo广东移动通信有限公司 | 缓存文件的回收方法、装置、电子设备及存储介质 |
CN112783564A (zh) * | 2019-11-01 | 2021-05-11 | 华为技术有限公司 | 一种加速应用程序启动的方法及电子设备 |
WO2021227646A1 (zh) * | 2020-05-15 | 2021-11-18 | 华为技术有限公司 | 文件共享方法及终端设备 |
CN114116191A (zh) * | 2021-06-24 | 2022-03-01 | 荣耀终端有限公司 | 内存冷页的处理方法及电子设备 |
-
2022
- 2022-11-10 CN CN202211408528.3A patent/CN115481444B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8904137B1 (en) * | 2011-05-12 | 2014-12-02 | Symantec Corporation | Deduplication system space recycling through inode manipulation |
CN105830059A (zh) * | 2014-11-28 | 2016-08-03 | 华为技术有限公司 | 文件访问方法、装置及存储设备 |
CN107423369A (zh) * | 2017-07-01 | 2017-12-01 | 珠海格力电器股份有限公司 | 一种处理待删除文件的方法以及装置 |
CN110134652A (zh) * | 2019-05-10 | 2019-08-16 | Oppo广东移动通信有限公司 | 缓存文件的回收方法、装置、电子设备及存储介质 |
CN112783564A (zh) * | 2019-11-01 | 2021-05-11 | 华为技术有限公司 | 一种加速应用程序启动的方法及电子设备 |
WO2021227646A1 (zh) * | 2020-05-15 | 2021-11-18 | 华为技术有限公司 | 文件共享方法及终端设备 |
CN114116191A (zh) * | 2021-06-24 | 2022-03-01 | 荣耀终端有限公司 | 内存冷页的处理方法及电子设备 |
Non-Patent Citations (1)
Title |
---|
张荣亮等: "Linux文件系统内核机制分析与研究", 《计算机与现代化》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117131497A (zh) * | 2023-02-28 | 2023-11-28 | 荣耀终端有限公司 | 一种软件检测方法及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115481444B (zh) | 2023-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021083378A1 (zh) | 一种加速应用程序启动的方法及电子设备 | |
WO2022262530A1 (zh) | 内存管理的方法及电子设备 | |
CA2794715C (en) | Search extensibility to third party applications | |
US20150128079A1 (en) | Method for executing function in response to touch input and electronic device implementing the same | |
CN114816167B (zh) | 应用图标的显示方法、电子设备及可读存储介质 | |
CN113326498B (zh) | 权限复用方法、基于权限复用的资源访问方法及相关设备 | |
WO2023051355A1 (zh) | 权限检查的方法和电子设备 | |
CN109981881B (zh) | 一种图像分类的方法和电子设备 | |
CN115481444B (zh) | 文件保护方法及电子设备 | |
WO2020062192A1 (zh) | 一种操作控制方法及电子设备 | |
CN114610419B (zh) | 添加widget的方法、装置及计算机可读存储介质 | |
US20230350738A1 (en) | Method for Reusing Shared Library and Electronic Device | |
CN114048469A (zh) | 目录操作管理方法、电子设备及可读存储介质 | |
CN113934691A (zh) | 访问文件的方法、电子设备及可读存储介质 | |
US20150119008A1 (en) | Method of reproducing contents and electronic device thereof | |
CN115981573B (zh) | 数据管理方法、电子设备及计算机可读写存储介质 | |
WO2024067167A1 (zh) | 应用数据管理方法、设备、产品及介质 | |
CN116069723B (zh) | 文件迁移方法、电子设备及存储介质 | |
CN116701299B (zh) | 一种目录管理方法及相关装置 | |
CN117135729B (zh) | 多设备协同方法、系统及终端设备 | |
WO2024046184A1 (zh) | 一种文件管理、应用管理的方法和电子设备 | |
CN118170724A (zh) | 数据处理方法、电子设备及计算机可读存储介质 | |
CN117708072A (zh) | 文件复制方法、终端设备及芯片系统 | |
CN116069723A (zh) | 文件迁移方法、电子设备及存储介质 | |
CN117708055A (zh) | 文件挂载方法、介质、程序产品和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |