CN105579977B - 访问文件的方法、装置及存储系统 - Google Patents

访问文件的方法、装置及存储系统 Download PDF

Info

Publication number
CN105579977B
CN105579977B CN201480036922.6A CN201480036922A CN105579977B CN 105579977 B CN105579977 B CN 105579977B CN 201480036922 A CN201480036922 A CN 201480036922A CN 105579977 B CN105579977 B CN 105579977B
Authority
CN
China
Prior art keywords
address space
file
virtual address
target file
space
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.)
Active
Application number
CN201480036922.6A
Other languages
English (en)
Other versions
CN105579977A (zh
Inventor
朱冠宇
徐君
于群
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN105579977A publication Critical patent/CN105579977A/zh
Application granted granted Critical
Publication of CN105579977B publication Critical patent/CN105579977B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种访问文件的方法、装置及存储系统,该方法包括:接收来自进程的文件访问请求,该文件访问请求包括文件标识;根据预设的第一虚拟地址空间和该第一虚拟地址空间与存储文件系统的第一物理地址空间之间的第一映射关系,访问第一物理地址空间;根据目标文件的文件标识,在第一物理地址空间中获取目标文件的索引节点;根据该索引节点中包含的目标文件的文件页表的信息,获取目标文件的文件页表,该文件页表中记录有在第一物理地址空间中存储的该目标文件的数据页的第二物理地址空间;根据第二物理地址空间,访问该目标文件。能够有效降低访问文件的软件运行开销,同时可以提高文件访问速率。

Description

访问文件的方法、装置及存储系统
技术领域
本发明实施例涉及计算机领域,并且更具体地,涉及一种访问文件的方法、装置及存储系统。
背景技术
传统技术中,只有在内核空间中才可以访问文件系统,当进程要访问文件系统中的目标文件时,需要执行系统调用,从用户空间切换到内核空间执行目标文件的访问,这种方式会影响访问文件的速度,同时会产生较大的软件运行开销。
因此需要提出一种可以实现直接在用户空间下访问文件的方法。
发明内容
本发明实施例提供了一种访问文件的方法、装置及存储系统,能够在产生较小软件运行开销的情况下,实现在用户空间访问文件。
第一方面,提供了一种访问文件的方法,该方法包括:
接收来自进程的文件访问请求,该文件访问请求包括文件标识,该文件标识用于指示要访问的目标文件;
根据预设的第一虚拟地址空间和该第一虚拟地址空间与存储文件系统的第一物理地址空间之间的第一映射关系,访问该第一物理地址空间,其中,该第一虚拟地址空间为操作系统的用户空间的一部分,该第一物理地址空间为内存空间的一部分;
根据该目标文件的文件标识,在该第一物理地址空间中获取该目标文件的索引节点,该索引节点中包含有该目标文件的文件页表的信息;
根据该索引节点中包含的该目标文件的文件页表的信息,获取该目标文件的文件页表,该文件页表中记录有在该第一物理地址空间中存储的该目标文件的数据页的第二物理地址空间,该目标文件的数据页用于存储文件数据;
根据该第二物理地址空间,访问该目标文件。
结合第一方面,在第一方面的第一种可能的实现方式中,根据该第二物理地址空间,访问该目标文件,包括:
为该目标文件分配第二虚拟地址空间,该第二虚拟地址空间为操作系统的用户空间中为该进程分配的私有空间的一部分,该第二虚拟地址空间为连续的地址空间;
建立该第二物理地址空间与该第二虚拟地址空间之间的第二映射关系;
根据该第二虚拟地址空间以及该第二映射关系,访问该第二物理地址空间中的该目标文件。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,建立该第二物理地址空间与该第二虚拟地址空间之间的第二映射关系,包括:
通过将该目标文件的文件页表链入该第二虚拟地址空间对应的进程页表的方式,建立该第二映射关系。
结合第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,该第二虚拟地址空间大于该第二物理地址空间;
根据该第二虚拟地址空间以及该第二映射关系,访问该第二物理地址空间中的该目标文件,包括:
根据该第二虚拟地址空间以及该第二映射关系,对该第二物理地址空间中的该目标文件进行读操作;
当该读操作待读取的数据所对应的虚拟地址超出该目标文件所对应的虚拟地址空间时,结束该读操作。
结合第一方面的第一种或第二种可能的实现方式,在第一方面的第四种可能的实现方式中,该第二虚拟地址空间大于该第二物理地址空间;
根据该第二虚拟地址空间以及该第二映射关系,访问该第二物理地址空间中的该目标文件,包括:
根据该第二虚拟地址空间以及该第二映射关系,对该第二物理地址空间中的该目标文件进行写操作;
当该写操作待写入的数据对应的虚拟地址超出该第二虚拟地址空间时,结束该写操作。
结合第一方面和第一方面的第一种至第四种可能的实现方式中的任一种可能的实现方式,在第一方面的第五种可能的实现方式中,该方法还包括:
在内核空间,建立该第一虚拟地址空间与该第一物理地址空间之间的该第一映射关系,并将该第一映射关系对应的映射页表存储在内核空间对应的进程页表中;
在接收到来自该进程的该文件访问请求后,该方法还包括:
确定该第一虚拟地址空间对应的进程页表中未记录有该第一映射关系;
将存储在内核空间的该第一映射关系对应的映射页表链入该第一虚拟地址空间对应的进程页表中。
第二方面,提供了一种访问文件的装置,该装置包括:
接收模块,用于接收来自进程的文件访问请求,该文件访问请求包括文件标识,该文件标识用于指示要访问的目标文件;
第一访问模块,用于根据预设的第一虚拟地址空间和该第一虚拟地址空间与存储文件系统的第一物理地址空间之间的第一映射关系,访问该第一物理地址空间,其中,该第一虚拟地址空间为操作系统的用户空间的一部分,该第一物理地址空间为内存空间的一部分;
获取模块,用于根据该接收模块接收的该目标文件的文件标识,在该第一物理地址空间中获取该目标文件的索引节点,该索引节点中包含有该目标文件的文件页表的信息;
该获取模块还用于,根据该索引节点中包含的该目标文件的文件页表的信息,获取该目标文件的文件页表,该文件页表中记录有在该第一物理地址空间中存储的该目标文件的数据页的第二物理地址空间,该目标文件的数据页用于存储文件数据;
第二访问模块,用于根据该第三获取模块获取的该文件页表所指示的该第二物理地址空间,访问该目标文件。
结合第二方面,在第二方面的第一种可能的实现方式中,该第二访问模块包括:
分配单元,用于为该目标文件分配第二虚拟地址空间,该第二虚拟地址空间为操作系统的用户空间中为该进程分配的私有空间的一部分,该第二虚拟地址空间为连续的地址空间;
建立单元,用于建立该第二物理地址空间与该分配单元分配的该第二虚拟地址空间之间的第二映射关系;
访问单元,用于根据该分配单元分配的该第二虚拟地址空间以及该建立单元建立的该第二映射关系,访问该第二物理地址空间中的该目标文件。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,该建立单元具体用于,通过将该目标文件的文件页表链入该第二虚拟地址空间对应的进程页表的方式,建立该第二映射关系。
结合第二方面的第一种或第二种可能的实现方式,在第二方面的第三种可能的实现方式中,该分配单元分配的该第二虚拟地址空间大于该第二物理地址空间;
该访问单元,具体用于:
根据该第二虚拟地址空间以及该第二映射关系,对该第二物理地址空间中的该目标文件进行读操作;
当该读操作待读取的数据所对应的虚拟地址超出该目标文件所对应的虚拟地址空间时,结束该读操作。
结合第二方面的第一种或第二种可能的实现方式,在第二方面的第四种可能的实现方式中,该分配单元分配的该第二虚拟地址空间大于该第二物理地址空间;
该访问单元,具体用于:
根据该第二虚拟地址空间以及该第二映射关系,对该第二物理地址空间中的该目标文件进行写操作;
当该写操作待写入的数据对应的虚拟地址超出该第二虚拟地址空间时,结束该写操作。
结合第二方面和第二方面的第一种至第四种可能的实现方式中的任一种可能的实现方式,在第二方面的第五种可能的实现方式中,该装置还包括:
建立模块,用于在内核空间,建立该第一虚拟地址空间与该第一物理地址空间之间的该第一映射关系,并将该第一映射关系对应的映射页表存储在内核空间对应的进程页表中;
确定模块,用于在该接收模块接收到来自该进程的该文件访问请求后,确定该第一虚拟地址空间对应的进程页表中未记录有该第一映射关系;
链入模块,用于将存储在内核空间的该建立模块建立的该第一映射关系对应的映射页表链入该第一虚拟地址空间对应的进程页表中。
第三方面,提供了一种存储系统,该存储系统包括:
存储器,用于存储文件和程序;
处理器,用于执行所述程序,以实现:
接收来自进程的文件访问请求,该文件访问请求包括文件标识,该文件标识用于指示要访问的目标文件;
根据预设的第一虚拟地址空间和该第一虚拟地址空间与存储文件系统的第一物理地址空间之间的第一映射关系,访问该第一物理地址空间,其中,该第一虚拟地址空间为操作系统的用户空间的一部分,该第一物理地址空间为内存空间的一部分;
根据该目标文件的文件标识,在该第一物理地址空间中获取该目标文件的索引节点,该索引节点中包含有该目标文件的文件页表的信息;
根据该索引节点中包含的该目标文件的文件页表的信息,获取该目标文件的文件页表,该文件页表中记录有在该第一物理地址空间中存储的该目标文件的数据页的第二物理地址空间,该目标文件的数据页用于存储文件数据;
根据该第二物理地址空间,访问该目标文件。
结合第三方面,在第三方面的第一种可能的实现方式中,该处理器具体用于:
为该目标文件分配第二虚拟地址空间,该第二虚拟地址空间为操作系统的用户空间中为该进程分配的私有空间的一部分,该第二虚拟地址空间为连续的地址空间;
建立该第二物理地址空间与该第二虚拟地址空间之间的第二映射关系;
根据该第二虚拟地址空间以及该第二映射关系,访问该第二物理地址空间中的该目标文件。
结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,该处理器具体用于:通过将该目标文件的文件页表链入该第二虚拟地址空间对应的进程页表的方式,建立该第二映射关系。
结合第三方面的第一种或第二种可能的实现方式,在第三方面的第三种可能的实现方式中,该第二虚拟地址空间大于该第二物理地址空间;
该处理器具体用于:
根据该第二虚拟地址空间以及该第二映射关系,对该第二物理地址空间中的该目标文件进行读操作;
当该读操作待读取的数据所对应的虚拟地址超出该目标文件所对应的虚拟地址空间时,结束该读操作。
结合第三方面的第一种或第二种可能的实现方式,在第三方面的第四种可能的实现方式中,该第二虚拟地址空间大于该第二物理地址空间;
该处理器具体用于:
根据该第二虚拟地址空间以及该第二映射关系,对该第二物理地址空间中的该目标文件进行写操作;
当该写操作待写入的数据对应的虚拟地址超出该第二虚拟地址空间时,结束该写操作。
结合第三方面和第三方面的第一种至第四种可能的实现方式中的任一种可能的实现方式,在第三方面的第五种可能的实现方式中,该处理器还用于:
在内核空间,建立该第一虚拟地址空间与该第一物理地址空间之间的该第一映射关系,并将该第一映射关系对应的映射页表存储在内核空间对应的进程页表中;
在该接收到来自该进程的该文件访问请求后,确定该第一虚拟地址空间对应的进程页表中未记录有该第一映射关系;
将存储在内核空间的该第一映射关系对应的映射页表链入该第一虚拟地址空间对应的进程页表中。
本发明实施例的访问文件的方法、装置及存储系统,根据用户空间中的第一虚拟地址空间与存储文件系统的第一物理地址空间之间的映射关系,可以通过该第一虚拟地址空间访问该第一物理地址空间,从而访问文件系统中的目标文件。本发明实施例提供的访问文件的方法实现了在用户空间直接访问文件,从而避免了现有技术在访问文件时存在的频繁的系统调用,能够有效降低访问文件时的软件运行开销,同时能够提高文件访问速率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1-a为本发明实施例提供的操作系统的虚拟地址空间的示意图。
图1-b为本发明实施例提供的操作系统的虚拟地址空间的另一示意图。
图2为本发明实施例提供的一种访问文件的方法的示意性流程图。
图3为本发明实施例提供的文件页表的示意图。
图4为本发明实施例提供的另一种访问文件的方法的示意性流程图。
图5为本发明实施例提供的又一种访问文件的方法的示意性流程图。
图6为本发明实施例提供的一种访问文件的装置的结构示意性框图。
图7为本发明实施例提供的另一种访问文件的装置的结构示意性框图。
图8为本发明实施例提供的又一种访问文件的装置的结构示意性框图。
图9为本发明实施例提供的一种存储系统的结构示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
为了方便理解本发明实施例,首先在此介绍几个相关的概念;
1)文件系统:
操作系统中用于存储和管理文件数据的软件叫做文件系统。文件系统用于存储、组织数据,并定义文件的访问策略。文件系统中的数据分为元数据和数据,其中数据是指普通文件中的实际数据,而元数据指用来描述一个文件的特征的系统数据。元数据可以包括例如访问权限,文件拥有者以及文件数据块的分布信息(inode)等等。用户需要操作一个文件,必要首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。元数据就是数据的数据,在文件系统领域每一个文件对应一个元数据结构体。这个结构体包括文件的属性,比如,文件创建、修改及访问的时间,文件拥有者、权限、映射信息等。
文件系统中有3个重要的数据结构:file,inode,dentry,下面将对这三个重要的数据结构进行简单说明:
①文件打开对象file
file结构表示一个打开的文件对象(系统中,每个打开的文件在内核空间都对应一个file结构),由内核在open时创建,由close释放;
②文件索引节点对象inode
内核用inode结构表示文件,和file结构不同,后者表示打开的文件描述符,对于一个文件,可能会有许多个表示打开的文件描述符的file结构,但他们都只向唯一的inode;
③文件目录对象dentry
对于进程查找的每个路径名的分量,内核都为其创建一个dentry结构、例如在查找路径名/dev/test时,内核为根目录“/”创建一个dentry结构,为dev创建二级dentry结构,为test创建三级dentry结构。
传统的文件系统在内核态运行,用户进程要想访问文件系统中的文件,需要通过系统调用,实现文件的访问。
2)系统调用:
系统调用是一种内核空间与用户空间之间通讯的普遍手段。系统调用可以看作是操作系统提供给用户程序调用的一组“特殊接口”,用户程序可以通过这组“特殊接口”来获取操作系统内核提供的系统服务,比如用户可以通过文件系统相关的系统调用来请求系统打开文件、关闭文件或读写文件。系统服务之所以需要通过系统调用来提供给用户空间的根本原因是为了对系统进行“保护”,因为Linux的运行空间分为内核空间与用户空间,内核空间与用户空间各自运行于不同的级别中,逻辑上相互隔离。进程(运行于用户空间)通常情况下不允许访问内核数据,也无法使用内核函数,只能操作用户数据或者调用用户函数。当进程需要访问内核数据(例如访问文件)时,利用系统提供给用户的“特殊接口”,即通过系统调用来访问内核数据,具体地,把进程的请求传达给内核,在内核空间把请求处理完毕后,再将处理结果返回用户空间(相当于返回给进程)。
3)用户空间和内核空间:
Linux的运行空间分为内核空间(也可称之为内核态)与用户空间(也可称之为用户态),内核空间与用户空间各自运行于不同的级别中,逻辑上相互隔离。
现有技术中,操作系统的虚拟地址空间划分为用户空间(其运行环境可称之为用户态)和内核空间(其运行环境可称之为内核态)两部分。其中,用户空间为进程私有的虚拟地址空间,进程运行于用户空间。内核空间专门用于管理系统资源,进程需要访问资源时(例如访问文件),需要通过系统调用,向内核申请资源。为了避免在进程请求访问文件时频繁产生系统调用,本发明提出一种访问文件的方法和装置,能够有效降低访问文件的软件运行开销。
为了便于理解本发明实施例提供的技术方案,下面结合图1-a和图1-b说明一下本发明实施例的应用场景。
如图1-a所示,操作系统的虚拟地址空间110包括内核空间120和用户空间130,其中,用户空间130具体包括进程共享的空间和进程私有的空间,图1-a中所示的第一虚拟地址空间140为用户空间130中为所有进程共享的空间,即所有进程在用户空间130中都有权限去访问第一虚拟地址空间140;图1-a中所示的进程私有空间150为用户空间130中为每个进程所私有的空间。如图1-a所示,该第一虚拟地址空间140与第一物理地址空间160具有第一映射关系(如图1-a中虚线所示),其中,第一物理地址空间160为物理内存空间中存储文件系统的存储区所对应的物理地址空间。,例如文件系统包括目标文件,则该第一物理地址空间160就包括用于存储该目标文件的第二物理地址空间170(如图1-a所示)
具体地,第一虚拟地址空间140对应的进程页表中记录有该第一映射关系。应理解,基于该第一映射关系,通过该第一虚拟地址空间可以访问到该第一物理地址空间,从而可以访问文件系统中的文件。例如,进程要访问图1-a中所示的目标文件,则可以根据该目标文件所对应的虚拟地址空间(即第二物理地址空间170在第一虚拟地址空间140中的映射地址空间),访问到第二物理地址空间170中的目标文件了。因此,任何一个进程要想访问文件系统中的目标文件,都可以通过访问第一虚拟地址空间来实现对目标文件的访问,可以避免现有技术中存在的频繁的系统调用。
可选地,图1-a中的进程私有空间150可以包括两部分空间,文件访问空间151和进程活动空间152,其中文件访问空间151用来映射待打开的目标文件(下文将详细说明);进程活动空间152为普通进程活动所在的空间。
可选地,第一虚拟地址空间140与第一物理地址空间160之间的第一映射关系可以为线性映射关系,能够方便对第一物理地址空间160的访问。
应理解,图1-a示意性给出的进程私有空间150可以表示任何一个进程的私有空间,图1-a所示示意性框图不对本发明实施例造成特定限定。
图1-a中的第一物理地址空间160为物理内存中用于存储文件系统的内存区所对应的物理地址空间。进一步地,如图1-b所示,用于存储文件系统的该第一物理地址空间160又可以分为用于存储文件系统的元数据和数据的第一物理内存区161和用于存储该文件系统在运行时产生的缓存数据的第二物理内存区162。其中,该文件系统在运行时产生的缓存数据具体指的是进程在访问文件过程中产生的数据,例如文件对象file、文件索引节点对象inode、文件目录对象dentry以及文件描述符(也可称之为句柄)等数据。应理解,第一物理地址空间160中用于存储目标文件的第二物理地址空间170在第一物理内存区161中(如图1-b所示)。可选地,第一物理内存区161和第二物理内存区162在物理地址上可以是不连续的。
如图1-b所示,由于第一虚拟地址空间140与第一物理地址空间160具有第一映射关系,因此针对第一物理地址空间160划分的两个区域,第一虚拟地址空间140也可以相应地包括两个区域:第一区域141和第二区域142。第一物理内存区161在第一虚拟地址空间140中的映射区域为第一区域141,第二物理内存区162在第一虚拟地址空间140中的映射区域为第二区域142。应理解,进程可以通过访问第一区域141和第二区域142分别访问到第一物理内存区161和第二物理内存区162,从而访问文件系统的元数据和数据以及文件运行时产生的缓存数据。应理解,存储目标文件的第二物理地址空间170在第一虚拟地址空间140中的映射地址空间在第一区域141中。
可以理解的是,上述将第一物理地址空间160划分为两个区域只是一种示例,在实际应用中还可以根据实际需要将第一物理地址空间160划分为多个区域。当然,在实际应用中也可以根据实际需要将第一虚拟地址空间140划分为多个区域。在此不做限定。
在本发明实施例中,在一种情形下,第一物理内存区161和第二物理内存区162均可采用非易失性固态存储(Non-Violate Memory,NVM)介质。例如:相变内存(Phase ChangeMemory,PCM)、可变电阻式随机存储器(Resistive RAM,ReRAM)、磁性随机存储器(MagneticRandom Access Memory,MRAM)等具有类似DRAM的读写特点、能够挂在内存总线上进行访问的非易失性存储介质。在又一种情形下,第一物理内存区161可以采用非易失性内存介质,具体地,例如耐磨损的动态随机存储(Dynamic Random Access Memory,DRAM)介质。第二物理内存区162可以采用易失性内存介质。
本发明实施例的访问文件的方法200的执行主体可以为控制器或中央处理器(Central Processing Unit,CPU)。
下面将结合附图2至图5对本发明实施例提供的访问文件的方法进行详细介绍。图2本发明实施例提供的一种访问文件的方法的示意性流程图。需要说明的是,图2是以一个进程的文件访问请求为例来描述的。可以理解的是,该方法200可以应用于任意的进程请求访问文件的场景中。如图2所示,该方法200包括:
S210,接收来自进程的文件访问请求,该文件访问请求包括文件标识,该文件标识用于指示要访问的目标文件;
具体的,该文件标识可以包括目标文件的存储路径、目标文件的文件类型(目录文件或数据文件)等。应理解,该文件访问请求具体地,可以是文件打开请求,文件读请求、或文件写请求等访问请求。
S220,根据预设的第一虚拟地址空间和该第一虚拟地址空间与存储文件系统的第一物理地址空间之间的第一映射关系,访问该第一物理地址空间,其中,该第一虚拟地址空间为操作系统的用户空间的一部分,该第一物理地址空间为内存空间的一部分;
可选地,在本发明实施例中,S220根据预设的第一虚拟地址空间和该第一虚拟地址空间与存储文件系统的第一物理地址空间之间的第一映射关系,访问该第一物理地址空间,包括:
S221,根据该文件访问请求,访问该第一虚拟地址空间;
S222,确定该第一虚拟地址空间对应的进程页表中记录有该第一虚拟地址空间与存储文件系统的该第一物理地址空间之间的该第一映射关系;
S223,根据该第一虚拟地址空间和该第一映射关系,访问该第一物理地址空间。
进一步地,该第一映射关系为线性映射关系,使得该第一物理地址空间的首地址对应于第一虚拟地址空间的首地址,后续地址以此类推,这样有利于对第一物理地址空间的访问。
S230,根据该目标文件的文件标识,在该第一物理地址空间中获取该目标文件的索引节点,该索引节点中包含有该目标文件的文件页表的信息;
可选地,在本发明实施例中,S230根据该目标文件的文件标识,在该第一物理地址空间中获取该目标文件的索引节点,包括:
S231,根据该目标文件的文件标识,确定该第一物理地址空间中是否存储有该文件标识所表示的要访问的目标文件;
S232,当确定该第一物理地址空间中存储有该文件标识所表示的要访问的目标文件时,获取该目标文件的索引节点;
S233,当确定该第一物理地址空间中未存储有该文件标识所表示的要访问的目标文件时,在该第一物理地址空间中创建该目标文件,并为该目标文件分配索引节点,为该目标文件分配的索引节点中包含有该目标文件的文件页表的信息,其中,该文件页表用于指向在该第一物理地址空间中创建该目标文件所在的第二物理地址空间。
应理解,文件系统中的每个文件都对应一个索引节点(inode),因此,确定文件系统所在的第一物理地址空间中存储有目标文件,就能获取对应于该目标文件的索引节点。还应理解,也可以默认该第一物理地址空间中存储有该目标文件,这种场景下,可以省略判断第一物理地址空间中是否存储该目标文件的相关步骤。
该索引节点中包含有该目标文件的文件页表的信息,具体地,该索引节点中可包含能够得出第一物理地址空间中存储该目标文件的内存页的第二物理地址空间的信息。例如,目标文件的索引节点中可记录目标文件的文件页表(File Page Table,简称为“FPT”)或用于指向目标文件的文件页表的指针。具体地,如图3中所示,目标文件的索引节点中包含用于指向文件页表的指针(Pointer),该指针具体存放目标文件的最高一级文件页表(PUD)。
S240,根据该索引节点中包含的该目标文件的文件页表的信息,获取该目标文件的文件页表,该文件页表中记录有在第一物理地址空间中存储的该目标文件的数据页的第二物理地址空间,该目标文件的数据页用于存储文件数据;
具体地,目标文件的文件页表用于指向第一物理地址空间中存储目标文件的内存页的物理地址。因此,根据目标文件的文件页表,可以定位到目标文件所在的第二物理地址空间。
可选地,在本发明实施例中,目标文件的文件页表与进程页表的数据结构类似或相同。
应理解,当前技术中,进程页表为处于保护模式下的操作系统里的进程使用,代表进程虚拟空间到物理空间的映射关系,对于给定待访问的虚拟地址,MMU根据虚拟地址,在当前进程页表中定位此虚拟地址对应的进程页表项,然后解析此页表项,获取实际的物理地址,从而实现访问。根据操作系统的寻址空间的不同,有32位寻址空间,空间大小232或64位寻址空间,空间大小264,常见的进程页表也分3级页表或4级页表。四级页表分别是PGD,PUD,PMD,PTE。三级页表采用与4级页表兼容的方式,名义上也是PGD,PUD,PMD,PTE,但PUD和PMD是同一级页表。其中,上一级页表中包含指向下一级页表的起始物理地址,最后一级页表PTE包含指向具体物理页的起始物理地址。
本发明实施例中的文件页表可以与进程页表具有相同或相似结构,具体地,文件页表可是一级或多级页表,非最低一级页表中的每一级页表的每个表项记录下一级的某页表的起始物理地址;而最低一级页表的每个表项记录存储了文件的内存页的起始物理地址。具体地,如图3所示,图3举例目标文件的文件页表为一个三级文件页表,分别是PUD、PMD和PTE三级,其中,PUD中的每一个表项都记录一个PMD的起始物理地址,而各个PMD的每个表项都记录一个PTE的起始物理地址,PTE的每一个表项都记录一个内存页(其中,内存页存储目标文件的文件内容)的起始物理地址。应理解,并不是每一个文件都需要使用三级文件页表,即便是使用三级页表,也不一定有固定的格式,例如不一定每个文件都需要使用1024个PTE,可以根据文件的大小变化动态调整文件页表组织架构。
图3以目标文件的索引节点中记录有指向三级文件页表的第一级文件页表PUD的指针(如PUD的起始物理地址)为例进行描述。还可以理解的是,目标文件的索引节点中也可能直接存储第一物理地址空间中存储目标文件的第二物理地址空间或第二物理地址空间的起始地址等。在此不对目标文件的索引节点中记录的信息做具体限定,只要能够根据目标文件的索引节点中记录的信息获得该目标文件的第二物理地址空间的相关信息即可。
应理解,图3所示的例子是为了帮助本领域技术人员更好地理解本发明实施例,而非要限制本发明实施例的范围。本领域技术人员根据所给出的图3的例子,显然可以进行各种等价的修改或变化,这样的修改或变化也落入本发明实施例的范围内。
S250,根据该第二物理地址空间,访问该目标文件。
具体地,在用户空间实现访问该第二物理地址空间中的目标文件的方法可以有两种。第一种方法:根据该第一映射关系,计算得到该第二物理地址空间映射到该第一虚拟地址空间中的目标虚拟地址空间,然后在用户空间,通过访问该目标虚拟地址空间进而访问到该第二物理地址空间,从而实现对目标文件的访问。第二种方法,为目标文件在用户空间分配一段连续的第二虚拟地址空间,建立该第二虚拟地址空间与目标文件的第二物理地址空间之间的第二映射关系,从而可以在用户空间,通过访问该第二虚拟地址空间进而访问该第二物理地址空间,实现对目标文件的连续访问。
本发明实施例的访问文件的方法,根据用户空间中的第一虚拟地址空间与存储文件系统的第一物理地址空间之间的映射关系,通过该第一虚拟地址空间访问该第一物理地址空间中的目标文件,从而在避免现有技术中访问文件时存在的频繁系统调用的前提下,实现在用户空间直接访问文件,能够有效降低访问文件时的软件运行开销,同时能够提高文件访问速率。
下面,参考图4详细描述在用户空间实现访问该第二物理地址空间中的目标文件的第二种方法。
如图4所示,可选地,在图2所示的访问文件的方法200中,S250根据该第二物理地址空间,访问该目标文件,包括:
S251,为该目标文件分配第二虚拟地址空间,该第二虚拟地址空间为操作系统的用户空间中为该进程分配的私有空间的一部分,该第二虚拟地址空间为连续的地址空间;
具体地,该第二虚拟地址空间可以为上文结合图1-a所描述的进程私有空间150中的文件访问空间151中的一段连续的虚拟地址空间。
S252,建立该第二物理地址空间与该第二虚拟地址空间之间的第二映射关系;
可选地,在本发明实施例中,S252建立该第二物理地址空间与该第二虚拟地址空间之间的第二映射关系,包括:
通过将该目标文件的文件页表链入该第二虚拟地址空间对应的进程页表的方式,建立该第二映射关系。
具体地,假设第二虚拟地址空间对应的进程页表为N级页表,而该目标文件的文件页表为M级页表,其中M<=N,并且该文件页表缺少0级到(N-M-1)级的页表。将该目标文件的文件页表链入该第二虚拟地址空间对应的进程页表,具体指的是:将文件页表的最高(N-M)级页表项复制到第二虚拟地址空间对应的进程页表的(N-M)级的页表项中。根据这种方式,就可以实现第二虚拟地址空间与目标文件所在的第二物理地址空间之间的第二映射关系了。上述可知,采用“链入”的方式建立第二映射关系,只需将目标文件的文件页表的最高级页表项复制到第二虚拟地址空间对应的进程页表的对应级别的页表项中,从而目标文件的文件页表的最高级(N-M级)以后的页表项自动会链接到第二虚拟地址空间对应的进程页表中。因此,采用这种“链入”的方式,可以有效减少页表的复制量,从而能够降低软件运行开销。
建立了目标文件所在的第二物理地址空间与该第二虚拟地址空间之间的第二映射关系,这样就可以通过该连续的第二虚拟地址空间访问到该第二物理地址空间了,从而可以实现对目标文件的连续访问。
S253,根据该第二虚拟地址空间以及该第二映射关系,访问该第二物理地址空间中的该目标文件。
具体地,只要在第二虚拟地址空间中的访问地址不超出目标文件所对应的虚拟地址空间,就不会出现数据缺页中断,也即可以在用户空间直接访问目标文件,相对于现有技术,大大降低了执行系统调用的次数,能够降低软件运行开销,同时也能提高文件访问速率。
上文提到的“目标文件所对应的虚拟地址空间”具体地指的是目标文件所在的第二物理地址空间映射到第二虚拟地址空间中的映射空间,换句话说,“目标文件所对应的虚拟地址空间”为第二虚拟地址空间中的一部分,且该“目标文件所对应的虚拟地址空间”中的每个虚拟地址都与特定的物理地址(目标文件的数据页的物理地址)具有映射关系。因此,通过访问该“目标文件所对应的虚拟地址空间”,就能访问到目标文件所在的第二物理地址空间了。在S253中根据该第二虚拟地址空间以及该第二映射关系,访问该第二物理地址空间中的该目标文件,也可以表述为:根据第二虚拟地址空间中的“目标文件所对应的虚拟地址空间”以及该第二映射关系,访问该第二物理地址空间中的该目标文件。
可选地,在本发明实施例中,为该目标文件分配第二虚拟地址空间等于或者大于该“目标文件所对应的虚拟地址空间”。换句话说,为目标文件分配的该第二虚拟地址空间可以等于或者大于目标文件所在的第二物理地址空间。
上文提到的“数据缺页中断”指的是当发生如下状况时,中断当前的访问操作:在第二虚拟地址空间对应的进程页表中未记录当前访问地址Address与特定物理地址之间的映射关系,换句话说,第二虚拟地址空间对应的进程页表缺少表示Address与特定物理地址之间的映射关系的表项,因此通过Address无法访问到物理地址,中断目标文件的本次访问。
具体地,1)在第二虚拟地址空间等于“目标文件所对应的虚拟地址空间”的情况下,通过第二虚拟地址空间访问目标文件时,由于访问地址必然不会超出“目标文件所对应的虚拟地址空间”,而“目标文件所对应的虚拟地址空间”中的每个虚拟地址都与特定的物理地址(目标文件的数据页的物理地址)具有映射关系,因此在上述情况下,不会发生上述“数据缺页中断”。2)在第二虚拟地址空间大于“目标文件所对应的虚拟地址空间”的情况下,通过第二虚拟地址空间访问目标文件时,当访问地址超出“目标文件所对应的虚拟地址空间”,则会发生上述“数据缺页中断”。
在第二虚拟地址空间大于“目标文件所对应的虚拟地址空间”的情况下,通过该第二虚拟地址对目标文件进行读和/或写操作时,可能会发生越界。为了减少读操作越界,导致读错误的情况,在本发明实施例中,S253根据该第二虚拟地址空间以及该第二映射关系,访问该第二物理地址空间中的该目标文件可以包括:
根据该第二虚拟地址空间以及该第二映射关系,对该第二物理地址空间中的该目标文件进行读操作;
当该读操作待读取的数据所对应的虚拟地址超出该目标文件所对应的虚拟地址空间时,结束该读操作。
应理解,本实施例中的“目标文件所对应的虚拟地址空间”即为上文提到的目标文件所在的第二物理地址空间映射到第二虚拟地址空间中的映射空间,为第二虚拟地址空间中的一部分。
具体地,接收来自该进程的用于请求读取该目标文件的文件数据的文件读指令;基于该第二映射关系,通过该第二虚拟地址空间访问该第二物理地址空间,以执行该目标文件的读操作;当该读操作待读取的数据所对应的虚拟地址超出该目标文件所对应的虚拟地址空间时,结束该读操作。具体地,当在该第二虚拟地址空间中的起始读地址偏移预定读字节长度后所得的结束读地址超出该“目标文件所对应的虚拟地址空间时”,结束该目标文件的读操作。
可选地,在本发明实施例中,还可以在第一物理地址空间160的第二物理内存区162(如图1-b所示)中创建该目标文件的文件描述符fd和该目标文件的文件对象file,并且创建文件描述符fd与该目标文件的文件对象file之间的关联关系,其中该文件对象file用于记录第二虚拟地址空间的大小、目标文件的第二物理地址空间映射到该第二虚拟地址空间的首地址、该目标文件的文件大小等信息。当接收到目标文件的读操作请求,可以通过目标文件的文件描述符fd在第一虚拟地址空间的第二区域142(如图1-b所示)所对应的虚拟地址(即第二物理内存区162中存储文件描述符fd的物理地址在第二区域142中的映射地址),访问第二物理内存区142中的该目标文件的文件描述符fd,从而获取到为目标文件分配的第二虚拟地址空间的空间大小、目标文件的第二物理地址空间映射到该第二虚拟地址空间的首地址以及该目标文件的文件大小等信息,进而可以通过该第二虚拟地址空间,执行目标文件的读操作。
因此,本发明实施例的访问文件的方法,能够解决读操作越界的问题,能够有效保证访问的安全性。
为了减少写操作越界,导致写错误的情况,在本发明实施例中,在第二虚拟地址空间大于第二物理地址空间的情况下,S253根据该第二虚拟地址空间以及该第二映射关系,访问该第二物理地址空间中的该目标文件,包括:
根据该第二虚拟地址空间以及该第二映射关系,对该第二物理地址空间中的该目标文件进行写操作;
当该写操作待写入的数据对应的虚拟地址超出该第二虚拟地址空间时,结束该写操作。
具体地,接收来自该进程的请求对该目标文件执行写操作的文件写入请求;基于该第二映射关系,通过该第二虚拟地址空间访问该第二物理地址空间,以执行该目标文件的写操作;当该写操作待写入的数据对应的虚拟地址超出该第二虚拟地址空间时,结束该写操作,具体地,当在该第二虚拟地址空间中的起始写地址偏移预定写字节长度后所得的结束写地址超出该第二虚拟地址空间时,结束该目标文件的写操作。
可选地,在本发明实施例中,还可以在第一物理地址空间160的第二物理内存区162(如图1-b所示)中创建该目标文件的文件描述符fd和该目标文件的文件对象file,并且创建文件描述符fd与该目标文件的文件对象file之间的关联关系,其中该文件对象file用于记录第二虚拟地址空间的大小、目标文件的第二物理地址空间映射到该第二虚拟地址空间的首地址、该目标文件的文件大小等信息。当接收到目标文件的写操作请求,可以通过目标文件的文件描述符fd在第一虚拟地址空间的第二区域142(如图1-b所示)所对应的虚拟地址(即第二物理内存区162中存储文件描述符fd的物理地址在第二区域142中的映射地址),访问第二物理内存区142中的该目标文件的文件描述符fd,从而获取到为目标文件分配的第二虚拟地址空间的空间大小、目标文件的第二物理地址空间映射到该第二虚拟地址空间的首地址以及该目标文件的文件大小等信息,进而可以通过该第二虚拟地址空间,执行目标文件的写操作。上文提到过,在第二虚拟地址空间大于“目标文件所对应的虚拟地址空间”的情况下,通过第二虚拟地址空间对目标文件执行写操作时,可能会发生“数据缺页中断”,中断处理完成后,可继续目标文件的写操作。
可选地,在本发明实施例中,在根据该第二虚拟地址空间以及该第二映射关系,对该第二物理地址空间中的该目标文件进行写操作的过程中:
当确定该第二虚拟地址空间对应的进程页表中缺少记录当前写地址在该第一物理地址空间中的映射物理地址的表项时,中断该目标文件的写操作,该当前写地址超出目标文件所对应的虚拟地址空间;
在该第一物理地址空间中为该目标文件分配第三物理地址,并在该第二虚拟地址空间对应的进程页表中增加用于记录该当前写地址与该第三物理地址之间的映射关系的表项;
基于该第二虚拟地址空间对应的进程页表中上述增加的表项所记录的映射关系,通过该当前写地址访问该第三物理地址,继续执行该目标文件的写操作。
本发明实施例的访问文件的方法,能够增加文件写操作的范围,同时也能够解决访问越界的问题,能够有效保证访问的安全性。在本发明实施例中,由于第二虚拟地址空间为连续的一段地址空间,有利于实现从要访问的目标文件所对应的虚拟地址的起始地址开始,一次性访问所需访问长度之内的物理内存页,而无需在软件层面多次查找不同物理内存页的对应虚拟地址,这样可以实现对文件的顺序访问,提高文件访问速度。进一步地,借助存储器管理单元(Memory Management Unit,简称为“MMU”)可透明地完成目标文件的虚拟地址和物理地址之间的转换,这有利于提高文件访问速度,还可以降低软件运行开销。应理解,还可以借助中央处理器(Central Processing Unit,简称为CPU)的读/写(Load/Store)指令,通过该第二虚拟地址空间,实现对目标文件的连续访问。
在本发明实施例中,通过将目标文件映射到用户空间中的一段连续的虚拟地址空间中,一方面可以实现在降低系统调用次数的前提下,在用户空间访问文件;另一方面能够有效提高文件访问速率和效率。
下面,结合图5描述根据本发明另一实施例提供的访问文件的方法300,需要说明的是,图5是以一个进程的文件访问请求为例来描述的。可以理解的是,该方法300可以应用于任意的进程请求访问文件的场景中。如图5所示,方法300包括:
S310,在内核空间,建立预设的第一虚拟地址空间与第一物理地址空间之间的第一映射关系,并将该第一映射关系对应的映射页表存储在内核空间对应的进程页表中,该第一虚拟地址空间为操作系统的用户空间的一部分,该第一物理地址空间为内存空间的一部分。
具体地,在系统初始化时,建立该第一虚拟地址空间与该第一物理地址空间之间的该第一映射关系(如图1-a和图1-b所示),并将该第一映射关系对应的映射页表存储在内核空间对应的进程页表中。例如,将该第一映射关系对应的映射页表存储在内核空间的公用页全局目录中。
应理解,在S310在内核空间建立该第一虚拟地址空间与该第一物理地址空间之间的该第一映射关系之前,需要初始化该第一物理地址空间。具体地,在系统启动后,如果该第一物理地址空间已经过预定义,则校验预定义的这片物理地址空间的头部位置存储的数据是否符合文件系统的物理结构组织方式,如果符合,则无需初始化;如果不符合,对其进行初始化。如果这段物理地址空间为空白的内存区域,则根据文件系统的物理结构组织方式,初始化这片空白的内存区域,例如根据该第一物理地址空间的大小、文件系统的数据组织结构等因素格式化这片物理内存区域,例如建立超级块、索引节点等数据结构来组织和管理这片物理内存区域(即该第一物理地址空间)。
S320,接收来自进程的文件访问请求,该文件访问请求包括文件标识,该文件标识用于指示要访问的目标文件。S320与图2中所示的S210相同,为了简洁,这里不再赘述。
S330,确定该第一虚拟地址空间对应的进程页表中未记录有该第一映射关系。
具体地,在接收到来自进程的文件访问请求后,在用户空间访问第一虚拟地址空间时,确定该第一虚拟地址空间对应的进程页表缺少记录该第一映射关系的表项。
S340,将存储在内核空间的该第一映射关系对应的映射页表链入该第一虚拟地址空间对应的进程页表中。
具体地,由用户空间切换到内核空间,将存储在内核空间的该第一映射关系对应的映射页表链入该第一虚拟地址空间对应的进程页表中,以便于后续根据第一虚拟地址空间以及该第一映射关系,实现在用户空间中访问文件。
S350,根据该第一虚拟地址空间和该第一映射关系,访问该第一物理地址空间。S350与图2中所示的S220相同,这里不再赘述。
S360,根据该目标文件的文件标识,在该第一物理地址空间中获取该目标文件的索引节点,该索引节点中包含有该目标文件的文件页表的信息。S360与图2中所示的S230相同,这里不再赘述。
S370,根据该索引节点中包含的该目标文件的文件页表的信息,获取该目标文件的文件页表,该文件页表中记录有在第一物理地址空间中存储的该目标文件的数据页的第二物理地址空间,该目标文件的数据页用于存储文件数据。S370与图2中所示的S240相同,这里不再赘述。
S380,根据该第二物理地址空间,访问该目标文件。S380与图2中所示的S250相同,这里不再赘述。
本发明实施例的访问文件的方法,在确定该第一虚拟地址空间对应的进程页表中未记录有该第一映射关系的情况下,需要执行一次缺页中断,即由用户空间切换到内核空间,将该第一映射关系对应的映射页表链入该第一虚拟地址空间对应的进程页表中。在确定该第一虚拟地址空间对应的进程页表中记录有该第一映射关系的情况下,根据该第一映射关系和该第一虚拟地址空间,访问存储文件系统的第一物理地址空间,进而访问该文件系统中的文件。需要说明的是,在本发明实施例中,该第一虚拟地址空间为用户空间中为所有进程所共享的空间。对于所有进程的文件访问请求,都可以实现在用户空间直接访问所请求的目标文件。
应理解,在本发明实施例中,将第一虚拟地址空间与第一物理地址空间之间的第一映射关系链入第一虚拟地址空间中之后,在系统不关闭的情况下,该第一虚拟地址空间对应的进程页表永久保存记录有该第一映射关系的表项,后续任何进程都可以基于该第一虚拟地址空间,实现在用户空间访问文件了。
本发明实施例的访问文件的方法,相对于现有技术,可以在较大程度地降低系统调用次数的前提下,实现在用户空间访问文件,能够有效降低访问文件时的软件运行开销,同时能够有效提高文件访问的速率和效率。
应理解,本发明实施例提供的技术方案,可以应用于Linux操作系统,也可以应用于其他的各个进程拥有自己专属空间的操作系统。
上文中结合图1至图5,详细描述了根据本发明实施例的访问文件的方法,下面将结合图6至图8,详细描述根据本发明实施例的访问文件的装置。
图6示出了根据本发明实施例的访问文件的装置400的示意性框图,该装置400包括:
接收模块410,用于接收来自进程的文件访问请求,该文件访问请求包括文件标识,该文件标识用于指示要访问的目标文件;
第一访问模块420,用于根据预设的第一虚拟地址空间和该第一虚拟地址空间与存储文件系统的第一物理地址空间之间的第一映射关系,访问该第一物理地址空间,其中,该第一虚拟地址空间为操作系统的用户空间的一部分,该第一物理地址空间为内存空间的一部分;
获取模块430,用于根据该接收模块接收的该目标文件的文件标识,在该第一物理地址空间中获取该目标文件的索引节点,该索引节点中包含有该目标文件的文件页表的信息;
该获取模块430还用于,根据该索引节点中包含的该目标文件的文件页表的信息,获取该目标文件的文件页表,该文件页表中记录有在该第一物理地址空间中存储的该目标文件的数据页的第二物理地址空间,该目标文件的数据页用于存储文件数据;
第二访问模块440,用于根据该获取模块获取的该文件页表所指示的该第二物理地址空间,访问该目标文件。
本发明实施例的访问文件的装置,根据用户空间中的第一虚拟地址空间与存储文件系统的第一物理地址空间之间的映射关系,通过该第一虚拟地址空间访问该第一物理地址空间中的目标文件,从而在避免现有技术中访问文件时存在的频繁系统调用的前提下,实现在用户空间直接访问文件,能够有效降低访问文件时的软件运行开销,同时能够提高文件访问速率。
可选地,如图7所示,作为一个实施例,该第二访问模块440包括:
分配单元441,用于为该目标文件分配第二虚拟地址空间,该第二虚拟地址空间为操作系统的用户空间中为该进程分配的私有空间的一部分,该第二虚拟地址空间为连续的地址空间;
建立单元442,用于建立该第二物理地址空间与该分配单元分配的该第二虚拟地址空间之间的第二映射关系;
访问单元443,用于根据该分配单元分配的该第二虚拟地址空间以及该建立单元建立的该第二映射关系,访问该第二物理地址空间中的该目标文件。
可选地,作为一个实施例,该建立单元442具体用于,通过将该目标文件的文件页表链入该第二虚拟地址空间对应的进程页表的方式,建立该第二映射关系。
可选地,作为一个实施例,该分配单元分配的该第二虚拟地址空间大于该第二物理地址空间;
该访问单元具体用于:
根据该第二虚拟地址空间以及该第二映射关系,对该第二物理地址空间中的该目标文件进行读操作;
当该读操作待读取的数据所对应的虚拟地址超出该目标文件所对应的虚拟地址空间时,结束该读操作。
可选地,作为一个实施例,该分配单元分配的该第二虚拟地址空间大于该第二物理地址空间;
该访问单元具体用于:
根据该第二虚拟地址空间以及该第二映射关系,对该第二物理地址空间中的该目标文件进行写操作;
当该写操作待写入的数据对应的虚拟地址超出该第二虚拟地址空间时,结束该写操作。
如图8所示,可选地,作为一个实施例,该装置400包括:
建立模块450,用于在内核空间,建立该第一虚拟地址空间与该第一物理地址空间之间的该第一映射关系,并将该第一映射关系对应的映射页表存储在内核空间对应的进程页表中;
接收模块410,用于接收来自进程的文件访问请求,该文件访问请求包括文件标识,该文件标识用于指示要访问的目标文件;
确定模块460,用于在该接收模块410接收到来自该进程的该文件访问请求后,确定该第一虚拟地址空间对应的进程页表中未记录有该第一映射关系;
链入模块470,用于将存储在内核空间的该建立模块建立的该第一映射关系对应的映射页表链入该第一虚拟地址空间对应的进程页表中。
第一访问模块420,用于根据预设的第一虚拟地址空间和该第一虚拟地址空间与存储文件系统的第一物理地址空间之间的第一映射关系,访问该第一物理地址空间,其中,该第一虚拟地址空间为操作系统的用户空间的一部分,该第一物理地址空间为内存空间的一部分;
获取模块430,用于根据该接收模块接收的该目标文件的文件标识,在该第一物理地址空间中获取该目标文件的索引节点,该索引节点中包含有该目标文件的文件页表的信息;
该获取模块430还用于,根据该索引节点中包含的该目标文件的文件页表的信息,获取该目标文件的文件页表,该文件页表中记录有在该第一物理地址空间中存储的该目标文件的数据页的第二物理地址空间,该目标文件的数据页用于存储文件数据;
第二访问模块440,用于根据该获取模块获取的该文件页表所指示的该第二物理地址空间,访问该目标文件;
应理解,建立模块450是在接收模块410接收文件访问请求之前,就在内核空间,建立该第一映射关系了。还应理解,第一访问模块420是在链入模块470将存储在内核空间的该建立模块建立的该第一映射关系对应的映射页表链入该第一虚拟地址空间对应的进程页表中的情况下,根据该第一虚拟地址空间和该第一映射关系,访问该第一物理地址空间的。
应理解,根据本发明实施例的访问文件的装置400中的各个模块的上述和其它操作和/或功能分别为了实现图2,图4和图5中的各个方法的相应流程,为了简洁,在此不再赘述。
本发明实施例的访问文件的装置,根据用户空间中的第一虚拟地址空间与存储文件系统的第一物理地址空间之间的映射关系,通过该第一虚拟地址空间访问该第一物理地址空间中的目标文件,从而在避免现有技术中访问文件时存在的频繁系统调用的前提下,实现在用户空间直接访问文件,能够有效降低访问文件时的软件运行开销,同时能够提高文件访问速率。
如图9所示,本发明实施例还提供了一种存储系统的结构示意图,该存储系统500包括处理器510、存储器520和总线系统530。其中,处理器510和存储器520通过总线系统530相连,存储器520用于存储文件和程序。处理器510用于执行该存储器520存储的程序。其中,该处理器510通过总线系统530调用存储器520中存储的代码以用于:接收来自进程的文件访问请求,该文件访问请求包括文件标识,该文件标识用于指示要访问的目标文件;根据预设的第一虚拟地址空间和该第一虚拟地址空间与存储文件系统的第一物理地址空间之间的第一映射关系,访问该第一物理地址空间,其中,该第一虚拟地址空间为操作系统的用户空间的一部分,该第一物理地址空间为内存空间的一部分;根据该目标文件的文件标识,在该第一物理地址空间中获取该目标文件的索引节点,该索引节点中包含有该目标文件的文件页表的信息;根据该索引节点中包含的该目标文件的文件页表的信息,获取该目标文件的文件页表,该文件页表中记录有在该第一物理地址空间中存储的该目标文件的数据页的第二物理地址空间,该目标文件的数据页用于存储文件数据;根据该第二物理地址空间,访问该目标文件。
本发明实施例的存储系统,根据用户空间中的第一虚拟地址空间与存储文件系统的第一物理地址空间之间的映射关系,通过该第一虚拟地址空间访问该第一物理地址空间中的目标文件,从而在避免现有技术中访问文件时存在的频繁系统调用的前提下,实现在用户空间直接访问文件,能够有效降低访问文件时的软件运行开销,同时能够提高文件访问速率。
可选地,该处理器510通过总线系统530调用存储器520中存储的代码以具体用于:为该目标文件分配第二虚拟地址空间,该第二虚拟地址空间为操作系统的用户空间中为该进程分配的私有空间的一部分,该第二虚拟地址空间为连续的地址空间;建立该第二物理地址空间与该第二虚拟地址空间之间的第二映射关系;根据该第二虚拟地址空间以及该第二映射关系,访问该第二物理地址空间中的该目标文件。
可选地,该处理器510通过总线系统530调用存储器520中存储的代码以具体用于:通过将该目标文件的文件页表链入该第二虚拟地址空间对应的进程页表的方式,建立该第二映射关系。
可选地,该第二虚拟地址空间大于该第二物理地址空间;该处理器510通过总线系统530调用存储器520中存储的代码以具体用于:根据该第二虚拟地址空间以及该第二映射关系,对该第二物理地址空间中的该目标文件进行读操作;当该读操作待读取的数据所对应的虚拟地址超出该目标文件所对应的虚拟地址空间时,结束该读操作。
可选地,该第二虚拟地址空间大于该第二物理地址空间;该处理器510通过总线系统530调用存储器520中存储的代码以具体用于:根据该第二虚拟地址空间以及该第二映射关系,对该第二物理地址空间中的该目标文件进行写操作;当该写操作待写入的数据对应的虚拟地址超出该第二虚拟地址空间时,结束该写操作。
可选地,该处理器510通过总线系统530调用存储器520中存储的代码以还用于:在内核空间,建立该第一虚拟地址空间与该第一物理地址空间之间的该第一映射关系,并将该第一映射关系对应的映射页表存储在内核空间对应的进程页表中;在接收到来自该进程的该文件访问请求后,确定该第一虚拟地址空间对应的进程页表中未记录有该第一映射关系;将存储在内核空间的该第一映射关系对应的映射页表链入该第一虚拟地址空间对应的进程页表中。
应理解,在本发明实施例中,该处理器510可以是中央处理单元(CentralProcessing Unit,简称为“CPU”),该处理器510还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、晶体管逻辑器件或者硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器520可以包括只读存储器和随机存取存储器,并向处理器410提供指令和数据。存储器520的一部分还可以包括非易失性随机存取存储器,用于存储文件。例如,存储器520还可以存储设备类型等信息。
该总线系统530除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统530。
本发明实施例中的存储系统500可以包括建立有文件系统的计算机、服务器、存储阵列等设备。需要说明的是,存储系统500中,NVM可以挂在内存总线上,文件系统建立在NVM中。
在实现过程中,上述方法的各步骤可以通过处理器510中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器520,处理器510读取存储器520中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
应理解,根据本发明实施例的存储系统500可对应于本发明实施例的访问文件的装置400,并且存储系统500可以实现图2、图4和图5中的方法,为了简洁,在此不再赘述。
本发明实施例的存储系统,根据用户空间中的第一虚拟地址空间与存储文件系统的第一物理地址空间之间的映射关系,通过该第一虚拟地址空间访问该第一物理地址空间中的目标文件,从而在避免现有技术中访问文件时存在的频繁系统调用的前提下,实现在用户空间直接访问文件,能够有效降低访问文件时的软件运行开销,同时能够提高文件访问速率。
应理解,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别不同的对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、系统、产品或装置没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块或者单元,或可选地还包括对于这些过程、方法、产品或装置固有的其它步骤或单元。
还应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。

Claims (18)

1.一种访问文件的方法,其特征在于,包括:
接收来自进程的文件访问请求,所述文件访问请求包括文件标识,所述文件标识用于指示要访问的目标文件;
根据第一虚拟地址空间与第一映射关系,访问存储文件系统的第一物理地址空间,其中,所述第一映射关系表示所述第一虚拟地址空间与所述第一物理地址空间之间的映射关系,所述第一映射关系记录在所述第一虚拟地址空间对应的进程页表中,所述第一虚拟地址空间为操作系统的用户空间中为所有进程所共享的空间,所述第一物理地址空间为内存空间的一部分;
根据所述目标文件的文件标识,在所述第一物理地址空间中获取所述目标文件的索引节点,所述索引节点中包含有所述目标文件的文件页表的信息;
根据所述索引节点中包含的所述目标文件的文件页表的信息,获取所述目标文件的文件页表,所述文件页表用于指示存储所述目标文件的数据页的第二物理地址空间,其中,所述第二物理地址空间为所述第一物理地址空间的一部分,所述目标文件的数据页用于存储文件数据;
根据所述第二物理地址空间,访问所述目标文件。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第二物理地址空间,访问所述目标文件,包括:
为所述目标文件分配第二虚拟地址空间,所述第二虚拟地址空间为操作系统的用户空间中为所述进程分配的私有空间的一部分,所述第二虚拟地址空间为连续的地址空间;
建立所述第二物理地址空间与所述第二虚拟地址空间之间的第二映射关系;
根据所述第二虚拟地址空间以及所述第二映射关系,访问所述第二物理地址空间中的所述目标文件。
3.根据权利要求2所述的方法,其特征在于,所述建立所述第二物理地址空间与所述第二虚拟地址空间之间的第二映射关系,包括:
通过将所述目标文件的文件页表链入所述第二虚拟地址空间对应的进程页表的方式,建立所述第二映射关系。
4.根据权利要求2或3所述的方法,其特征在于,所述第二虚拟地址空间大于所述第二物理地址空间;
所述根据所述第二虚拟地址空间以及所述第二映射关系,访问所述第二物理地址空间中的所述目标文件,包括:
根据所述第二虚拟地址空间以及所述第二映射关系,对所述第二物理地址空间中的所述目标文件进行读操作;
当所述读操作待读取的数据所对应的虚拟地址超出所述目标文件所对应的虚拟地址空间时,结束所述读操作。
5.根据权利要求2或3所述的方法,其特征在于,所述第二虚拟地址空间大于所述第二物理地址空间;
所述根据所述第二虚拟地址空间以及所述第二映射关系,访问所述第二物理地址空间中的所述目标文件,包括:
根据所述第二虚拟地址空间以及所述第二映射关系,对所述第二物理地址空间中的所述目标文件进行写操作;
当所述写操作待写入的数据对应的虚拟地址超出所述第二虚拟地址空间时,结束所述写操作。
6.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
在内核空间,建立所述第一虚拟地址空间与所述第一物理地址空间之间的所述第一映射关系,并将所述第一映射关系对应的映射页表存储在内核空间对应的进程页表中;
在接收到来自所述进程的所述文件访问请求后,所述方法还包括:
确定所述第一虚拟地址空间对应的进程页表中未记录有所述第一映射关系;
将存储在内核空间的所述第一映射关系对应的映射页表链入所述第一虚拟地址空间对应的进程页表中。
7.一种访问文件的装置,其特征在于,包括:
接收模块,用于接收来自进程的文件访问请求,所述文件访问请求包括文件标识,所述文件标识用于指示要访问的目标文件;
第一访问模块,用于根据第一虚拟地址空间与第一映射关系,访问存储文件系统的第一物理地址空间,其中,所述第一映射关系表示所述第一虚拟地址空间与所述第一物理地址空间之间的映射关系,所述第一映射关系记录在所述第一虚拟地址空间对应的进程页表中,所述第一虚拟地址空间为操作系统的用户空间中为所有进程所共享的空间,所述第一物理地址空间为内存空间的一部分;
获取模块,用于根据所述接收模块接收的所述目标文件的文件标识,在所述第一物理地址空间中获取所述目标文件的索引节点,所述索引节点中包含有所述目标文件的文件页表的信息;
所述获取模块,还用于根据所述索引节点中包含的所述目标文件的文件页表的信息,获取所述目标文件的文件页表,所述文件页表用于指示存储所述目标文件的数据页的第二物理地址空间,其中,所述第二物理地址空间为所述第一物理地址空间的一部分,所述目标文件的数据页用于存储文件数据;
第二访问模块,用于根据所述获取模块获取的所述文件页表所指示的所述第二物理地址空间,访问所述目标文件。
8.根据权利要求7所述的装置,其特征在于,所述第二访问模块包括:
分配单元,用于为所述目标文件分配第二虚拟地址空间,所述第二虚拟地址空间为操作系统的用户空间中为所述进程分配的私有空间的一部分,所述第二虚拟地址空间为连续的地址空间;
建立单元,用于建立所述第二物理地址空间与所述分配单元分配的所述第二虚拟地址空间之间的第二映射关系;
访问单元,用于根据所述分配单元分配的所述第二虚拟地址空间以及所述建立单元建立的所述第二映射关系,访问所述第二物理地址空间中的所述目标文件。
9.根据权利要求8所述的装置,其特征在于,所述建立单元具体用于:
通过将所述目标文件的文件页表链入所述第二虚拟地址空间对应的进程页表的方式,建立所述第二映射关系。
10.根据权利要求8或9所述的装置,其特征在于,所述分配单元分配的所述第二虚拟地址空间大于所述第二物理地址空间;
所述访问单元,具体用于:
根据所述第二虚拟地址空间以及所述第二映射关系,对所述第二物理地址空间中的所述目标文件进行读操作;
当所述读操作待读取的数据所对应的虚拟地址超出所述目标文件所对应的虚拟地址空间时,结束所述读操作。
11.根据权利要求8或9所述的装置,其特征在于,所述分配单元分配的所述第二虚拟地址空间大于所述第二物理地址空间;
所述访问单元,具体用于:
根据所述第二虚拟地址空间以及所述第二映射关系,对所述第二物理地址空间中的所述目标文件进行写操作;
当所述写操作待写入的数据对应的虚拟地址超出所述第二虚拟地址空间时,结束所述写操作。
12.根据权利要求7至9中任一项所述的装置,其特征在于,所述装置还包括:
建立模块,用于在内核空间,建立所述第一虚拟地址空间与所述第一物理地址空间之间的所述第一映射关系,并将所述第一映射关系对应的映射页表存储在内核空间对应的进程页表中;
确定模块,用于在所述接收模块接收到来自所述进程的所述文件访问请求后,确定所述第一虚拟地址空间对应的进程页表中未记录有所述第一映射关系;
链入模块,用于将存储在内核空间的所述建立模块建立的所述第一映射关系对应的映射页表链入所述第一虚拟地址空间对应的进程页表中。
13.一种存储系统,其特征在于,包括:
存储器,用于存储文件和程序;
处理器,用于执行所述程序,以实现:
接收来自进程的文件访问请求,所述文件访问请求包括文件标识,所述文件标识用于指示要访问的目标文件;
根据第一虚拟地址空间与第一映射关系,访问存储文件系统的第一物理地址空间,其中,所述第一映射关系表示所述第一虚拟地址空间与所述第一物理地址空间之间的映射关系,所述第一映射关系记录在所述第一虚拟地址空间对应的进程页表中,所述第一虚拟地址空间为操作系统的用户空间中为所有进程所共享的空间,所述第一物理地址空间为内存空间的一部分;
根据所述目标文件的文件标识,在所述第一物理地址空间中获取所述目标文件的索引节点,所述索引节点中包含有所述目标文件的文件页表的信息;
根据所述索引节点中包含的所述目标文件的文件页表的信息,获取所述目标文件的文件页表,所述文件页表中用于指示存储所述目标文件的数据页的第二物理地址空间,其中,所述第二物理地址空间为所述第一物理地址空间的一部分,所述目标文件的数据页用于存储文件数据;
根据所述第二物理地址空间,访问所述目标文件。
14.根据权利要求13所述的存储系统,其特征在于,所述处理器具体用于:
为所述目标文件分配第二虚拟地址空间,所述第二虚拟地址空间为操作系统的用户空间中为所述进程分配的私有空间的一部分,所述第二虚拟地址空间为连续的地址空间;
建立所述第二物理地址空间与所述第二虚拟地址空间之间的第二映射关系;
根据所述第二虚拟地址空间以及所述第二映射关系,访问所述第二物理地址空间中的所述目标文件。
15.根据权利要求14所述的存储系统,其特征在于,所述处理器具体用于:通过将所述目标文件的文件页表链入所述第二虚拟地址空间对应的进程页表的方式,建立所述第二映射关系。
16.根据权利要求14或15所述的存储系统,其特征在于,所述第二虚拟地址空间大于所述第二物理地址空间;
所述处理器具体用于:
根据所述第二虚拟地址空间以及所述第二映射关系,对所述第二物理地址空间中的所述目标文件进行读操作;
当所述读操作待读取的数据所对应的虚拟地址超出所述目标文件所对应的虚拟地址空间时,结束所述读操作。
17.根据权利要求14或15所述的存储系统,其特征在于,所述第二虚拟地址空间大于所述第二物理地址空间;
所述处理器具体用于:
根据所述第二虚拟地址空间以及所述第二映射关系,对所述第二物理地址空间中的所述目标文件进行写操作;
当所述写操作待写入的数据对应的虚拟地址超出所述第二虚拟地址空间时,结束所述写操作。
18.根据权利要求13至15中任一项所述的存储系统,其特征在于,所述处理器还用于:
在内核空间,建立所述第一虚拟地址空间与所述第一物理地址空间之间的所述第一映射关系,并将所述第一映射关系对应的映射页表存储在内核空间对应的进程页表中;
在所述接收到来自所述进程的所述文件访问请求后,确定所述第一虚拟地址空间对应的进程页表中未记录有所述第一映射关系;
将存储在内核空间的所述第一映射关系对应的映射页表链入所述第一虚拟地址空间对应的进程页表中。
CN201480036922.6A 2014-09-01 2014-09-01 访问文件的方法、装置及存储系统 Active CN105579977B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/085661 WO2016033719A1 (zh) 2014-09-01 2014-09-01 访问文件的方法、装置及存储系统

Publications (2)

Publication Number Publication Date
CN105579977A CN105579977A (zh) 2016-05-11
CN105579977B true CN105579977B (zh) 2020-04-14

Family

ID=55438969

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480036922.6A Active CN105579977B (zh) 2014-09-01 2014-09-01 访问文件的方法、装置及存储系统

Country Status (9)

Country Link
US (1) US10061711B2 (zh)
EP (2) EP3173931B1 (zh)
JP (1) JP6377257B2 (zh)
KR (1) KR101909966B1 (zh)
CN (1) CN105579977B (zh)
BR (1) BR112017002780B1 (zh)
PH (1) PH12017500241B1 (zh)
SG (1) SG11201701365XA (zh)
WO (1) WO2016033719A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104571934B (zh) * 2013-10-18 2018-02-06 华为技术有限公司 一种内存访问的方法、设备和系统
CN105830059B (zh) * 2014-11-28 2019-09-27 华为技术有限公司 文件访问方法、装置及存储设备
US10437735B2 (en) * 2017-12-13 2019-10-08 Red Hat, Inc. Process isolation for out of process page fault handling
GB2570691B (en) * 2018-02-02 2020-09-09 Advanced Risc Mach Ltd Controlling guard tag checking in memory accesses
KR20190106228A (ko) * 2018-03-08 2019-09-18 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN111414248B (zh) * 2019-01-04 2023-03-21 阿里巴巴集团控股有限公司 内存管理方法、装置及计算设备
CN110196757B (zh) * 2019-05-31 2021-08-03 龙芯中科技术股份有限公司 虚拟机的tlb填写方法、装置及存储介质
CN112148676A (zh) * 2019-06-26 2020-12-29 深圳市茁壮网络股份有限公司 一种文件访问请求处理方法、装置及服务器
CN110457261B (zh) * 2019-08-06 2023-11-10 深圳市腾讯计算机系统有限公司 数据访问方法、装置及服务器
CN111597124B (zh) * 2020-04-21 2023-05-05 重庆大学 持久化内存文件系统数据组织方法、系统及存储介质
CN116466876A (zh) * 2020-09-11 2023-07-21 华为技术有限公司 一种存储系统及数据处理方法
US11875152B2 (en) * 2020-10-30 2024-01-16 EMC IP Holding Company LLC Methods and systems for optimizing file system usage
CN112732269B (zh) * 2021-01-15 2024-05-24 北京博雅慧视智能技术研究院有限公司 一种应用于avs2硬件编码器的物理地址的访问方法及装置
CN112732198B (zh) * 2021-01-15 2023-11-14 广州Tcl互联网小额贷款有限公司 文件管理方法、装置、设备和存储介质
CN117093132A (zh) * 2022-05-12 2023-11-21 华为技术有限公司 数据处理方法、装置、处理器及计算机系统
CN117407326B (zh) * 2022-07-25 2024-07-23 华为技术有限公司 内存访问方法及装置
CN118444993A (zh) * 2023-09-19 2024-08-06 荣耀终端有限公司 多进程访问资源索引文件的方法、电子设备及芯片系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN86108127A (zh) * 1986-01-16 1987-07-29 国际商用机器公司 在多任务虚拟存储器虚拟计算机型数据处理系统中控制输入输出存取的方法
US4742450A (en) * 1986-01-16 1988-05-03 International Business Machines Corporation Method to share copy on write segment for mapped files
US5873120A (en) * 1996-05-03 1999-02-16 Digital Equipment Corporation Variable split virtual address space allocation with multi-system compatibility
CN101882132A (zh) * 2009-04-27 2010-11-10 深圳市闪联信息技术有限公司 虚拟fat文件系统的创建及读取方法以及装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6061773A (en) * 1996-05-03 2000-05-09 Digital Equipment Corporation Virtual memory system with page table space separating a private space and a shared space in a virtual memory
CN100504854C (zh) 2003-01-14 2009-06-24 联想(北京)有限公司 文件管理方法
US8069192B2 (en) 2004-03-22 2011-11-29 Microsoft Corporation Computing device with relatively limited storage space and operating / file system thereof
US7409494B2 (en) 2004-04-30 2008-08-05 Network Appliance, Inc. Extension of write anywhere file system layout
US8645665B1 (en) 2012-12-14 2014-02-04 Intel Corporation Virtualizing physical memory in a virtual machine system utilizing multilevel translation table base registers to map guest virtual addresses to guest physical addresses then to host physical addresses
CN100470506C (zh) 2007-06-08 2009-03-18 马彩艳 基于sector访问的flash存储器的存储管理方法
CN101382953B (zh) 2008-09-19 2013-03-20 中兴通讯股份有限公司 在用户空间访问文件系统的接口系统与文件读、写方法
TWI432959B (zh) 2009-01-23 2014-04-01 Infortrend Technology Inc 執行儲存虛擬化之儲存子系統及儲存系統架構及其方法
CN101901263A (zh) * 2010-07-22 2010-12-01 华为终端有限公司 文件系统的访问方法及装置
US8495750B2 (en) * 2010-08-31 2013-07-23 International Business Machines Corporation Filesystem management and security system
KR101925651B1 (ko) * 2011-01-21 2018-12-05 톰슨 라이센싱 이전 버전과 호환 가능한 종합 파일 시스템 동작 성능 향상을 위한 방법, 및 각각의 장치
CN102707966B (zh) * 2012-04-12 2014-09-03 腾讯科技(深圳)有限公司 加速操作系统启动的方法及装置、预取信息生成方法及装置和终端
CN103748565A (zh) * 2012-08-16 2014-04-23 华为终端有限公司 一种用于终端的文件访问方法及终端
CN103218312B (zh) * 2013-03-28 2017-07-11 中国科学院上海微系统与信息技术研究所 文件访问方法及系统
EP3115903B1 (en) * 2014-03-07 2020-04-15 Huawei Technologies Co., Ltd. File accessing method and related device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN86108127A (zh) * 1986-01-16 1987-07-29 国际商用机器公司 在多任务虚拟存储器虚拟计算机型数据处理系统中控制输入输出存取的方法
US4742450A (en) * 1986-01-16 1988-05-03 International Business Machines Corporation Method to share copy on write segment for mapped files
US5873120A (en) * 1996-05-03 1999-02-16 Digital Equipment Corporation Variable split virtual address space allocation with multi-system compatibility
CN101882132A (zh) * 2009-04-27 2010-11-10 深圳市闪联信息技术有限公司 虚拟fat文件系统的创建及读取方法以及装置

Also Published As

Publication number Publication date
BR112017002780B1 (pt) 2023-01-31
EP3489832B1 (en) 2021-06-30
PH12017500241A1 (en) 2017-07-03
JP6377257B2 (ja) 2018-08-22
SG11201701365XA (en) 2017-03-30
JP2017529612A (ja) 2017-10-05
EP3173931A4 (en) 2017-08-02
EP3173931A1 (en) 2017-05-31
KR101909966B1 (ko) 2018-10-19
WO2016033719A1 (zh) 2016-03-10
EP3173931B1 (en) 2018-08-29
EP3489832A1 (en) 2019-05-29
CN105579977A (zh) 2016-05-11
BR112017002780A2 (pt) 2017-12-19
US10061711B2 (en) 2018-08-28
US20170168952A1 (en) 2017-06-15
PH12017500241B1 (en) 2017-07-03
KR20170043593A (ko) 2017-04-21

Similar Documents

Publication Publication Date Title
CN105579977B (zh) 访问文件的方法、装置及存储系统
US10157143B2 (en) File access method and apparatus, and storage system
US10114749B2 (en) Cache memory system and method for accessing cache line
US10067684B2 (en) File access method and apparatus, and storage device
US10452562B2 (en) File access method and related device
WO2017028309A1 (zh) 文件数据访问方法和计算机系统
WO2016082191A1 (zh) 访问文件的方法和装置
US8402248B2 (en) Explicitly regioned memory organization in a network element
WO2020057394A1 (zh) 监控样本进程的内存访问行为的方法和装置
CN112241310B (zh) 页表管理、信息获取方法、处理器、芯片、设备及介质
US10606500B2 (en) Direct access to de-duplicated data units in memory-based file systems
WO2016000470A1 (zh) 一种内存控制方法和装置
KR20210043001A (ko) 하이브리드 메모리 시스템 인터페이스
CN112748854B (zh) 对快速存储设备的优化访问
CN107155306B (zh) 文件页面管理单元、处理设备和文件页面管理方法
WO2017020194A1 (zh) 一种文件系统保护方法、装置及存储设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant