CN105830059B - 文件访问方法、装置及存储设备 - Google Patents
文件访问方法、装置及存储设备 Download PDFInfo
- Publication number
- CN105830059B CN105830059B CN201480037999.5A CN201480037999A CN105830059B CN 105830059 B CN105830059 B CN 105830059B CN 201480037999 A CN201480037999 A CN 201480037999A CN 105830059 B CN105830059 B CN 105830059B
- Authority
- CN
- China
- Prior art keywords
- file
- address
- virtual space
- space
- physical
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 143
- 230000015654 memory Effects 0.000 claims abstract description 176
- 230000008569 process Effects 0.000 claims abstract description 97
- 238000013507 mapping Methods 0.000 claims description 47
- 238000006243 chemical reaction Methods 0.000 claims description 9
- 230000001965 increasing effect Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 7
- 238000000151 deposition Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 239000011800 void material Substances 0.000 description 3
- 101000771640 Homo sapiens WD repeat and coiled-coil-containing protein Proteins 0.000 description 2
- 102100029476 WD repeat and coiled-coil-containing protein Human genes 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000005621 ferroelectricity Effects 0.000 description 1
- 210000000056 organ Anatomy 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007858 starting material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- 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/18—File system types
- G06F16/188—Virtual file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/217—Hybrid disk, e.g. using both magnetic and solid state storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/225—Hybrid cache memory, e.g. having both volatile and non-volatile portions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Abstract
一种应用于内存中建有文件系统的存储设备的文件访问方法、装置及存储设备。存储设备可以根据待访问的第一目标文件的文件标识获取元数据中的所述第一目标文件的索引节点。在所述第一目标文件的索引节点中保存有第一目标文件在全局虚拟空间中的第一虚拟空间的信息(205)。存储设备可以根据索引节点中记录的第一虚拟空间的信息将第一虚拟空间映射到进程的第二虚拟空间(210),并对增加的文件管理寄存器进行寻址(220,225)。由于文件管理寄存器中存储有全局文件页表的页目录的基地址,从而存储设备可以根据第一虚拟空间的起始地址以及所述全局文件页表的页目录的基地址对第一目标文件进行访问。该方法能够减轻进程页表的负担,减少系统开销。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种文件访问方法、装置及存储设备。
背景技术
现有技术中,文件系统通常构建在磁盘中。对文件系统进行访问时,为了提升访问速度,通常采用MMAP的方式对文件系统进行访问。具体的,可以将文件映射到进程的虚拟空间,然后将数据从硬盘读到高速缓存中,并将高速缓存页面生成映射表项添加到进程的页表中,从而使进程能够通过访问进程的页表直接访问文件。
随着相变存储器(Phase Change Memory,PCM)、阻变存储器(Resistive RandomAccess Memory,RRAM)、磁性随机存储器(Magnetic Random Access Memory,MRAM)和铁电式随机存储器(Ferroelectric Random Access Memory,FRAM)为代表的下一代非易失性存储器(Non-Volatile Memory,NVM)技术的发展,下一代NVM的访问速度得到了很大的提升。并且由于下一代NVM能够按字节(Byte)寻址,将数据以位(bit)为单位写入非易失性存储器中。因此,可以将下一代NVM作为内存使用,并采用基于页面的方式对NVM存储介质进行管理,由CPU直接访问NVM。现有技术中也提出了基于NVM的内存文件系统。在内存为NVM的情况下,如果继续采用MMAP的方式访问文件系统,访问过程比较复杂,并且需要将高速缓存的页表项添加到进程的页表中,增加了进程页表的负担。
发明内容
本发明实施例中提供的一种文件访问方法、装置及存储设备,能够减轻进程页表的负担,提高文件系统的访问效率。
第一方面,本发明实施例提供一种文件访问方法,所述方法应用于在内存中建立文件系统的存储设备,其中,所述内存为非易失性存储器NVM,该方法包括:
接收第一访问请求,所述第一访问请求中携带有第一文件标识和所述第一访问请求的起始地址,所述第一文件标识用于指示要访问的第一目标文件;
根据所述第一文件标识获取所述第一目标文件的索引节点,所述第一目标文件的索引节点中包含有用于管理所述第一目标文件的第一虚拟空间的信息,其中,所述第一虚拟空间为根据所述内存的第一物理空间虚拟的连续的地址空间,所述第一物理空间用于存储所述第一目标文件,所述第一虚拟空间为预设的全局虚拟空间的一部分,所述全局虚拟空间为根据所述内存的第二物理空间虚拟的连续的地址空间,所述第二物理空间用于存储所述文件系统的所有数据;
建立所述第一虚拟空间和进程的第二虚拟空间的第一映射关系,其中,所述第二虚拟空间为进程的用户空间的一段连续的虚拟地址空间;
根据所述第二虚拟空间的起始地址从设置的多个寄存器中确定待访问的寄存器为文件管理寄存器,所述文件管理寄存器中保存有全局文件页表的页目录基地址,所述全局文件页表用于指向所述第一目标文件在所述内存中的物理地址;
根据所述第一映射关系将所述第一访问请求的起始地址转换为所述第一虚拟空间的访问地址,其中,所述第一访问请求的起始地址为所述进程的第二虚拟空间中的地址;
根据所述第一虚拟空间的访问地址访问所述文件管理寄存器,以获取所述第一目标文件在所述内存中的物理地址。
结合第一方面,在第一方面的第一种实现方式中,所述方法还包括:
接收第二访问请求,所述第二访问请求中携带有第二目标文件标识,所述第二目标文件标识用于指示要访问的第二目标文件;
根据所述第二文件标识确定所述文件系统中不存在所述第二目标文件的索引节点;
在所述文件系统中创建所述第二目标文件的索引节点;
为所述第二目标文件分配第三虚拟空间,其中,所述第三虚拟空间为根据所述内存中的第三物理空间虚拟的连续的地址空间,所述第三物理空间用于存储所述第二目标文件,所述第三虚拟空间为预设的全局虚拟空间的一部分,所述第三虚拟空间不同于所述第一虚拟空间,所述第三物理空间不同于所述第一物理空间;
在所述第二目标文件的索引节点中记录所述第三虚拟空间的信息,所述第三虚拟空间用于管理所述第二目标文件。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述第一访问请求为写请求,所述第一访问请求中还携带有待写入的数据;所述根据所述第一虚拟空间的访问地址访问所述文件管理寄存器,以获取所述第一目标文件在所述内存中的物理地址包括:
确定根据所述全局文件页表无法获得所述第一虚拟空间的访问地址指向的第四物理地址,其中,所述第四物理地址为所述内存中的物理地址;
为所述第一目标文件分配物理页;
将所述第一访问请求中携带的待写入数据写入所述分配的物理页中。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述为所述第一目标文件分配物理页之后,该方法还包括:在所述全局文件页表中记录所述分配的物理页的物理地址。
结合第一方面的第二种或第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述第一虚拟空间的信息包括所述第一虚拟空间的起始地址以及大小,所述第一访问请求中还包括待写入数据量的大小,所述将所述第一访问请求中携带的待写入数据写入所述分配的物理页中之后,该方法还包括:
根据所述第一虚拟空间的访问地址以及所述待写入数据量的大小计算所述第一访问请求的结束地址,所述第一访问请求的结束地址为所述第一虚拟空间中的地址;
根据所述第一虚拟空间的起始地址以及所述第一访问请求的结束地址获得更新后的第一虚拟空间的大小;
在所述第一目标文件的索引节点中记录所述更新后的第一虚拟空间的大小、。
第二方面,本发明实施例提供了一种存储设备,包括:
内存,用于存储文件系统和文件,其中所述内存为非易失性存储器NVM;
处理器,通过内存总线与所述内存连接,所述处理器用于:
接收第一访问请求,所述第一访问请求中携带有第一文件标识和所述第一访问请求的起始地址,所述第一文件标识用于指示要访问的第一目标文件;
根据所述第一文件标识获取所述第一目标文件的索引节点,所述第一目标文件的索引节点中包含有用于管理所述第一目标文件的第一虚拟空间的信息,其中,所述第一虚拟空间为根据所述内存的第一物理空间虚拟的连续的地址空间,所述第一物理空间用于存储所述第一目标文件,所述第一虚拟空间为预设的全局虚拟空间的一部分,所述全局虚拟空间为根据所述内存的第二物理空间虚拟的连续的地址空间,所述第二物理空间用于存储所述文件系统的所有数据;
建立所述第一虚拟空间和进程的第二虚拟空间的第一映射关系,其中,所述第二虚拟空间为进程的用户空间的一段连续的虚拟地址空间;
根据所述第二虚拟空间的起始地址从设置的多个寄存器中确定待访问的寄存器为文件管理寄存器,所述文件管理寄存器中保存有全局文件页表的页目录基地址,所述全局文件页表用于指向所述第一目标文件在所述内存中的物理地址;
根据所述第一映射关系将所述第一访问请求的起始地址转换为所述第一虚拟空间的访问地址,其中,所述第一访问请求的起始地址为所述进程的第二虚拟空间中的地址;
根据所述第一虚拟空间的访问地址访问所述文件管理寄存器,以获取所述第一目标文件在所述内存中的物理地址。
结合第二方面,在第二方面的第一种可能的实现方式中,所述处理器还用于:
接收第二访问请求,所述第二访问请求中携带有第二目标文件标识,所述第二目标文件标识用于指示要访问的第二目标文件;
根据所述第二文件标识确定所述文件系统中不存在所述第二目标文件的索引节点;
在所述文件系统中创建所述第二目标文件的索引节点;
为所述第二目标文件分配第三虚拟空间,其中,所述第三虚拟空间为根据所述内存中的第三物理空间虚拟的连续的地址空间,所述第三物理空间用于存储所述第二目标文件,所述第三虚拟空间为预设的全局虚拟空间的一部分,所述第三虚拟空间不同于所述第一虚拟空间,所述第三物理空间不同于所述第一物理空间;
在所述第二目标文件的索引节点中记录所述第三虚拟空间的信息,所述第三虚拟空间用于管理所述第二目标文件。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,当所述第一访问请求为写请求时,所述第一访问请求中还携带有待写入的数据,所述处理器用于:
确定根据所述全局文件页表无法获得所述第一虚拟空间的访问地址指向的第四物理地址,其中,所述第四物理地址为所述内存中的物理地址;
为所述第一目标文件分配物理页;
将所述第一访问请求中携带的待写入数据写入所述分配的物理页中。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述处理器还用于:在为所述第一目标文件分配物理页之后,在所述全局文件页表中记录所述分配的物理页的物理地址。
结合第二方面的第二种或第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述第一虚拟空间的信息包括所述第一虚拟空间的起始地址以及大小,所述第一访问请求中还包括待写入数据量的大小,所述处理器还用于:
根据所述第一虚拟空间的访问地址以及所述待写入数据量的大小计算所述第一访问请求的结束地址,所述第一访问请求的结束地址为所述第一虚拟空间中的地址;
根据所述第一虚拟空间的起始地址以及所述第一访问请求的结束地址获得更新后的第一虚拟空间的大小;
在所述第一目标文件的索引节点中记录所述更新后的第一虚拟空间的大小、。
第三方面,本发明实施例提供了一种文件访问装置,所述装置用于访问基于内存建立的文件系统,其中,所述内存为非易失性存储器NVM,所述文件访问装置包括:
接收模块,用于接收第一访问请求,所述第一访问请求中携带有第一文件标识和所述第一访问请求的起始地址,所述第一文件标识用于指示要访问的第一目标文件;
获取模块,用于根据所述第一文件标识获取所述第一目标文件的索引节点,所述第一目标文件的索引节点中包含有用于管理所述第一目标文件的第一虚拟空间的信息,其中,所述第一虚拟空间为根据所述内存的第一物理空间虚拟的连续的地址空间,所述第一物理空间用于存储所述第一目标文件,所述第一虚拟空间为预设的全局虚拟空间的一部分,所述全局虚拟空间为根据所述内存的第二物理空间虚拟的连续的地址空间,所述第二物理空间用于存储所述文件系统的所有数据;
映射模块,用于建立所述第一虚拟空间和进程的第二虚拟空间的第一映射关系,其中,所述第二虚拟空间为进程的用户空间的一段连续的虚拟地址空间;
确定模块,用于根据所述第二虚拟空间的起始地址从设置的多个寄存器中确定待访问的寄存器为文件管理寄存器,所述文件管理寄存器中保存有全局文件页表的页目录基地址,所述全局文件页表用于指向所述第一目标文件在所述内存中的物理地址;
转换模块,用于根据所述第一映射关系将所述第一访问请求的起始地址转换为所述第一虚拟空间的访问地址,其中,所述第一访问请求的起始地址为所述进程的第二虚拟空间中的地址;
访问模块,用于根据所述第一虚拟空间的访问地址访问所述文件管理寄存器,以获取所述第一目标文件在所述内存中的物理地址。
结合第三方面,在第三方面的第一种可能的实现方式中,所述接收模块,还用于接收第二访问请求,所述第二访问请求中携带有第二目标文件标识,所述第二目标文件标识用于指示要访问的第二目标文件;所述文件访问装置还包括:
判断模块,用于根据所述第二文件标识确定所述文件系统中不存在所述第二目标文件的索引节点;
创建模块,用于在所述文件系统中创建所述第二目标文件的索引节点;
分配模块,用于为所述第二目标文件分配第三虚拟空间,其中,所述第三虚拟空间为根据所述内存中的第三物理空间虚拟的连续的地址空间,所述第三物理空间用于存储所述第二目标文件,所述第三虚拟空间为预设的全局虚拟空间的一部分,所述第三虚拟空间不同于所述第一虚拟空间,所述第三物理空间不同于所述第一物理空间;
记录模块,用于在所述第二目标文件的索引节点中记录所述第三虚拟空间的信息,所述第三虚拟空间用于管理所述第二目标文件。
结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,当所述第一访问请求为写请求时,所述第一访问请求中还携带有待写入的数据,所述访问模块用于:
确定根据所述全局文件页表无法获得所述第一虚拟空间的访问地址指向的第四物理地址,其中,所述第四物理地址为所述内存中的物理地址;
为所述第一目标文件分配物理页;
将所述第一访问请求中携带的待写入数据写入所述分配的物理页中。
结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述记录模块还用于在所述全局文件页表中记录所述分配的物理页的物理地址。
结合第三方面的第二种或第三种可能的实现方式,在第三方面的第四种可能的实现方式中,所述第一虚拟空间的信息包括所述第一虚拟空间的起始地址以及大小,所述第一访问请求中还包括待写入数据量的大小,所述文件访问装置还包括:
更新模块,用于根据所述第一虚拟空间的访问地址以及所述待写入数据量的大小计算所述第一访问请求的结束地址,所述第一访问请求的结束地址为所述第一虚拟空间中的地址;
根据所述第一虚拟空间的起始地址以及所述第一访问请求的结束地址获得更新后的第一虚拟空间的大小;
在所述第一目标文件的索引节点中记录所述更新后的第一虚拟空间的大小。
第四方面,本发明实施例提供了一种计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述第一方面中所述的方法。
本发明实施例中提供的文件访问方法可以应用于在内存中建立文件系统的存储设备。在该方法中,存储设备可以通过虚拟的全局虚拟空间来管理统一管理文件系统中的所有文件,并通过设立的全局文件页表来实现对文件系统的访问。具体访问时,存储设备可以根据待访问的第一目标文件的文件标识获取元数据中的所述第一目标文件的索引节点。在所述第一目标文件的索引节点中保存有第一目标文件在全局虚拟空间中的第一虚拟空间的信息。存储设备可以根据索引节点中记录的第一虚拟空间的信息将第一虚拟空间映射到进程的第二虚拟空间,并对增加的文件管理寄存器进行寻址。文件管理寄存器中存储有全局文件页表的页目录的基地址,从而可以根据第一虚拟空间的起始地址以及所述全局文件页表的页目录的基地址对第一目标文件进行访问。在本发明实施例中,由于全局文件页表通过新增的文件管理寄存器进行寻址,从而,无需将文件的页表项添加或链接到进程的页表中,减少了系统开销,减轻了进程页表的负担,提高了文件访问效率。并且,由于第一虚拟空间是一段连续的空间,因此通过本发明实施例描述的方法,在第一目标文件的索引节点中可以只需记录第一虚拟空间的起始地址和大小信息,通过记录的第一虚拟空间的信息能够实现对存储于内存中的第一目标文件的连续访问。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
图1为本发明实施例提供的一种应用场景示意图;
图2为本发明实施例提供的一种文件访问方法的流程图;
图3为本发明实施例提供的一种文件管理空间映射示意图;
图4为本发明实施例提供的一种页表示意图;
图5为本发明实施例提供的一种全局文件页表访问示意图;
图6为本发明实施例提供的一种文件写入方法流程图;
图7为本发明实施例提供的又一种文件访问方法的流程图;
图8为本发明实施例提供的文件访问装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。
图1为本发明实施例提供的下一代非易失存储器(NVM)的一种应用场景图。在图1所述的一种应用场景中,NVM 200作为内存使用。如图1所示,动态随机存储器(DynamicRandom Access Memory,DRAM)300通过内存总线与中央处理器(CPU)100连接。DRAM 300具有访问速度快的优点,CPU 100能够高速访问DRAM 300,对DRAM 300中的任一存储单元进行读或写操作,因此通常DRAM作为主内存使用。通常DRAM 300用来存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。然而,DRAM 300是易失性的,当计算机关闭电源后,DRAM 300中的信息将不再保存。
磁盘400可以作为外存,用于存储数据。当然,可以理解的是,作为外存的存储器除了可以是磁盘400外,还可以是固态硬盘(SSD)等非易失性存储器。通常,作为外存的存储介质需要具有非易失性的特点,当计算机关闭电源后,存储于外存的数据仍然会被保存。并且,外存的存储容量较大。
新型非易失性存储器(NVM)200可以同DRAM 300一样,直接挂在内存总线上。中央处理器(CPU)100可以通过内存管理单元(memory management unit,MMU)104访问NVM 200,向NVM 200中快速的存储数据或从NVM 200中读取数据。可以理解的是,当NVM 200直接挂在内存总线上使用时,能够与DRAM300一样,降低数据访问的等待时间(latency)。并且,与DRAM 300相比,由于NVM 200具有非易失性,从而能够更好的保存数据。
需要说明的是,本发明实施例中所描述的能够挂在内存总线上的非易失性存储器可以包括:相变存储器(Phase Change Memory,PCM)、阻变存储器(Resistive RandomAccess Memory,RRAM)、磁性存储器(Magnetic Random Access Memory,MRAM)或铁电式存储器(Ferroelectric Random Access Memory,FRAM)等新型非易失性存储器。这些新型NVM都具有访问速度快且具有非易失性的特点,并且,这些新型NVM能够按字节(Byte)寻址,将数据以位(bit)为单位写入非易失性存储器中。
本发明实施例涉及基于内存的文件系统。在本发明实施例中,NVM 200中存储有文件系统和文件。本领域技术人员可以知道,文件系统是操作系统中负责管理和存储文件信息的软件结构。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。文件系统由三部分组成:文件系统的接口、对文件操纵和管理的软件集合、文件数据和属性。文件系统的中心概念是超级块(superblock)、i节点(inode)、数据块(data block)、目录块(directory block)和间接块(indirection block)。超级块包括文件系统的总体信息,比如文件系统的大小。inode中包括除了文件名以外的一个文件的所有信息。文件名与inode数目一起存在目录块中,目录条目包括文件名和文件的inode数目。i节点中只有少量数据块的空间,如果需要更多,会动态分配指向数据块的指针空间,这些动态分配的块是间接块。在本发明实施例中,NVM 200中还可以存储文件的数据和元数据。
在中央处理器(CPU)100安装有操作系统和其他软件程序,从而中央处理器(CPU)100能够实现对DRAM300、磁盘400以及NVM 200的访问。CPU 100可以包括CPU执行单元102和内存管理单元MMU 104。其中,CPU执行单元102是CPU 100的执行器件,具体用于执行程序。MMU 104是一种负责处理CPU的内存访问请求的计算机硬件,是CPU 100中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址与物理地址的映射,提供硬件机制的内存访问授权。
可以理解的是,在本发明实施例中,中央处理器(CPU)100仅仅是处理器的一个示例。除了中央处理器(CPU)100外,处理器还可以是其他特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
为了能够更好的理解本发明实施例,下面将对MMU如何实现虚拟地址到内存的物理地址的映射做一个详细的介绍。先简单介绍一下虚拟存储器(virtual memory)的概念。本领域人员可以知道,程序要放到内存中运行。但随着程序规模的不断增大,内存容量很难容纳一个完整的程序,虚拟存储器的概念应运而生。虚拟存储器的基本思想是程序、数据和堆栈的总的大小可以超过物理存储器的大小,操作系统把当前使用的部分保留在内存中,而把其他未被使用的部分保存在磁盘上。例如,若一个计算机只有4M内存,当该计算机需要运行一个16MB的程序时,操作系统可以通过选择确定将4M的程序内容缓存在内存中运行,并在需要时在内存和磁盘之间交换程序片段,这样就可以在一个只具有4M内存的计算机上运行16M的程序了。
本领域人员可以知道,在计算机系统中,虚拟地址空间是进程能够访问的一段虚拟地址范围。虚拟地址空间的大小通常是由计算机的指令集体系结构(instruction setarchitecture)来确定的。例如,一个32位的CPU,提供的虚拟地址空间为0~0xFFFFFFFF(4G)。虚拟地址空间中的某一个地址我们称之为虚拟地址。与虚拟地址空间和虚拟地址相对应的则是物理地址空间和物理地址。物理地址空间是指内存的物理地址范围。物理地址空间中的某一个地址我们称之为物理地址。通常,物理地址空间小于虚拟地址空间,物理地址空间可以映射到虚拟地址空间中。例如,对于一台内存为256M的32bit x86主机来说,它的虚拟地址空间范围是0~0xFFFFFFFF(4G),而物理地址空间范围是0x000000000~0x0FFFFFFF(256M)。
现有技术中,大多数机器均使用虚拟存储器,虚拟地址(或称线性地址)不是被直接送到内存地址总线上,而是送到MMU(Memory Management Unit,内存管理单元),MMU把虚拟地址转换为物理地址。也就是说,MMU用于实现程序的虚拟地址到内存的物理地址的映射。
为了实现程序的虚拟地址到内存的物理地址的映射,MMU引入分页(paging)机制。具体地,虚拟地址空间以页(page)为单位被划分,可以将虚拟地址空间中的页称为虚拟页。相应的,物理地址空间也以页为单位被划分,可以将物理地址空间的页称为物理页(或称物理页框),其中,虚拟页和物理页的大小相同。
在引入页这个概念的基础上,MMU采用多级页表的形式实现虚拟地址到内存的物理地址的映射。具体的,在二级管理模式下,这种映射方式依次包括对页目录和页表的查询。其中,页目录中存储有多个页表的基地址,每个页表中存储有多个页表项。页表项中记录有这个虚拟地址所对应物理页的物理基地址。
本领域人员可以知道,一个虚拟地址中包含着找到物理地址的信息。一个虚拟地址的大小为4个字节(32bit),通常该虚拟地址可以被分为3个部分:
第22位到第31位:这10位(最高10位)是页目录中的索引;
第12位到第21位:这10位是页表中的索引;
第0位到第11位:这12位(低12位)是页内偏移。
本领域人员可以知道,每个进程都有其各自专用的虚拟地址空间以及用于寻址的页目录,系统内所有进程共享内核的虚拟地址空间以及内核的页目录,每个进程可以通过系统调用进入内核。在CPU中存在一个用于保存页目录基地址的寄存器CR3。在进程调度时,寄存器CR3指向当前进程的页目录基地址。在进程切换时,寄存器CR3切换当前所指向的页目录基地址。对于一个要转换成物理地址的虚拟地址,CPU首先根据寄存器CR3中的值找到页目录所在的物理页。然后根据虚拟地址的第22位到第31位这10位(最高的10bit)的值作为索引,找到相应的页目录项(page directory entry,PDE),PDE中有这个虚拟地址所对应页表的物理地址。有了页表的物理地址,根据虚拟地址的第12位到第21位这10位的值作为索引,找到该页表中相应的页表项(page table entry,PTE)。页表项中就有这个虚拟地址所对应物理页的物理地址。最后用虚拟地址的最低12位,也就是页内偏移,加上这个物理页的物理地址,就得到了该虚拟地址所对应的物理地址。
通常,一个页目录有1024项,虚拟地址最高的10bit刚好可以索引1024项(2的10次方等于1024)。一个页表也有1024项,虚拟地址中间部分的10bit,刚好用于索引这1024个页表项。虚拟地址最低的12bit(2的12次方等于4096),作为页内偏移,刚好可以索引4KB,也就是一个物理页中的每个字节。
本领域人员可以知道,32bit的指针的寻址范围为0x00000000-0xFFFFFFFF(4GB)。也就是说,一个32bit的指针可以寻址整个4GB地址空间的每一个字节。一个页表项可以负责4K的地址空间和物理内存的映射。一个页表1024项,则一个页表可以负责1024*4k=4M的地址空间的映射。一个页目录项,对应一个页表。一个页目录有1024项,也就对应着1024个页表,每个页表负责4M地址空间的映射,则1024个页表负责1024*4M=4G的地址空间映射。一个进程有一个页目录。所以以页为单位,页目录和页表可以保证4G的地址空间中的每页和物理内存的映射。
每个进程都有自己的4G地址空间,从0x00000000-0xFFFFFFFF。通过每个进程自己的一套页目录和页表来实现进程的虚拟地址到内存的物理地址的映射。由于每个进程有自己的页目录和页表,所以每个进程的地址空间映射的物理内存是不一样的。两个进程的同一个虚拟地址处(如果都有物理内存映射)的值一般是不同的,因为不同的进程往往对应不同的物理页。
以上详细描述了MMU从程序的虚拟地址到内存的物理地址的映射过程。在本发明实施例中,由于将NVM 200作为内存使用,且由于NVM 200能够长久的存储数据,因此,可以在NVM 200中建立文件系统,将文件系统中的元数据和文件数据直接存储在内存NVM 200中。MMU 104可以实现虚拟地址与NVM 200中的物理地址的映射,从而处理器100可以直接访问NVM 200中的文件系统。
可以理解的是,图1所示的应用场景可以应用于基于内存建立文件系统的存储设备中。在本发明实施例中,存储设备可以包括计算机、服务器、存储阵列等在内存中建立文件系统的设备。在此不对本发明实施例的应用场景进行限定。下面将结合图1所示的应用场景对本发明实施例中的文件访问方法进行详细描述。需要说明的是,在本发明实施例中,如无特别说明,所描述的内存均为NVM,具体的,可以指图1中的NVM 200。
图2为本发明实施例提供的一种文件访问方法的流程图,该方法可以应用于图1所示的应用场景中。该方法可以由基于内存建立文件系统的存储设备、计算机及服务器等设备中的处理器来执行,例如可以由图1中所示的CPU 100来执行。下面将结合图1对图2的方法进行详细描述。如图2所示,该方法可以包括下述步骤。
在步骤201中,CPU 100接收第一访问请求,该第一访问请求中携带有第一文件标识和所述第一访问请求的起始地址,所述第一文件标识用于指示要访问的第一目标文件。实际应用中,文件标识可以为文件名。例如,File_1.doc。文件标识为文件系统识别文件的唯一标识。由于本发明实施例提供的文件系统是建立在能够按字节寻址的新型NVM中,因此,CPU 100可以通过内存总线对NVM直接进行访问。第一访问请求的起始地址用于确定要访问的第一目标文件的数据的起始位置。在本发明实施例中,第一访问请求的起始地址为进程的虚拟地址空间中的虚拟地址。
在步骤205中,CPU 100根据所述第一文件标识获取所述第一目标文件的索引节点,所述第一目标文件的索引节点中包含有用于管理所述第一目标文件的第一虚拟空间的信息。其中,所述第一虚拟空间为根据内存的第一物理空间虚拟的连续的地址空间,所述第一物理空间用于存储所述第一目标文件。所述第一虚拟空间为预设的全局虚拟空间的一部分,所述全局虚拟空间为根据内存中第二物理空间虚拟的连续的地址空间,所述第二物理空间用于存储所述文件系统的所有数据。
在本发明实施例中,文件系统的所有数据可以存储在NVM200中。由于CPU 100可以通过内存总线直接访问NVM 200,因此,可以将NVM 200的空间以物理页的形式进行管理。由于文件系统中包括多个文件,为了描述清楚方便,在本发明实施例中,将存储整个文件系统的数据的内存空间称为第二物理空间,将NVM200中用于存储第一目标文件的空间称为第一物理空间。可以理解的是,第一物理空间可以是不连续的物理空间。实际应用中,第一物理空间可以包括多个不连续的物理页,所述第一目标文件的数据存储于所述多个物理页中。在本发明实施例中,为了提高文件的访问效率,CPU 100可以根据虚拟的全局虚拟空间来管理整个文件系统,其中,全局虚拟空间是根据第二物理空间虚拟的连续的地址空间,从而能够通过虚拟的连续的全局虚拟空间对存储文件的NVM200的物理空间进行连续访问。具体的,CPU 100可以根据第一文件标识查找文件系统的元数据,从而根据第一文件标识获得第一目标文件的索引节点。本领域人员可以知道,元数据是指用于描述文件数据的数据。例如,元数据包括用于描述文件位置和大小的信息。在本发明实施例中,在所述第一目标文件的索引节点中包含有用于管理所述第一目标文件的第一虚拟空间的信息。其中,第一虚拟空间是全局虚拟空间的一部分,是根据在所述内存用于存储所述第一目标文件的第一物理空间虚拟的连续的地址空间。可以理解的是,第一虚拟空间的信息具体可以包括第一虚拟空间的起始地址和所述第一虚拟空间的大小(size)。第一虚拟空间的起始地址就是第一目标文件在全局虚拟空间中的起始地址。第一虚拟空间的大小也是虚拟的第一目标文件的大小,第一虚拟空间的大小可以大于或等于第一目标文件的大小。
为了更清楚的描述本方案,下面将结合图3对本发明实施例中的第一虚拟空间和第一物理空间进行详细描述。图3为本发明实施例提供的一种文件管理空间映射示意图。如图3所示,第一目标文件被存储于内存200的4个不连续的物理页面中(见图3中阴影部分所示的4个物理页面),为了表述方便,将存储第一目标文件的4个物理页面称为第一物理空间(图中未示出)。第一虚拟空间是根据第一物理空间虚拟的一段连续的地址空间,可以理解的是,第一虚拟空间的大小不小于第一物理空间的大小。第一虚拟空间是全局虚拟空间的一部分,全局虚拟空间包括用于管理文件系统的所有文件的虚拟空间,例如,全局虚拟空间包括用于管理第一目标文件(File_1)的第一虚拟空间,还包括用于管理第二目标文件(File_2)的第三虚拟空间以及其他用于管理其他文件的虚拟空间(图中未示出)。为了描述方便,以下以第一虚拟空间为例进行描述。为了实现对第一目标文件(File_1)的管理,以第一虚拟空间的大小等于第一物理空间的大小为例。第一虚拟空间包括为4个虚拟页面,其中,每个虚拟页面的大小与内存中的物理页面的大小相同。例如,虚拟页面的大小和物理页面的大小均可以为4K。第一虚拟空间的4个虚拟页面分别用于虚拟存储第一目标文件File_1的数据(例如:File_1-1,File_1-2,File_1-3和File_1-4)的4个物理页面,并分别映射到内存中的4个物理页面。在本发明实施例中,第一虚拟空间的虚拟页面与所述内存的物理页面的映射可以通过全局文件页表来实现。
为了描述方便,在本发明实施例中将内存中用于存储文件系统数据的空间称为第二物理空间。可以理解的是,一种情形下,内存可以只用于存储文件系统的数据,非文件系统的数据可以通过如图1所示的DRAM 300和硬盘400来进行访问。在这种情形下,第二物理空间可以是NVM 200的整个空间。另一种情形下,NVM200中除了用于存储文件系统的数据外,还可以用于存储非文件系统系统的数据,则在这种情况看,内存中除了第二物理空间还可以包括用于存储其非文件系统的数据的物理空间。在此不做限定,在本发明实施例中,只对涉及用于存储文件系统的数据的第二物理空间进行描述。
在步骤210中,CPU 100建立所述第一虚拟空间和进程的第二虚拟空间的第一映射关系。本领域技术人员可以知道,进程是操作系统结构的基础,它是一个具有独立功能的程序关于某个数据集合的一次运行活动,可以认为是一次程序的执行。内核是操作系统的核心,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程和内存。每个进程都有其各自专用的虚拟地址空间以及用于寻址的页目录。同时,每个进程都可以通过系统调用进入内核。因此,系统内的所有进程共享内核的虚拟地址空间以及内核的页目录。当任意一个进程需要访问内核的虚拟地址空间时,需要将内核的页目录中页表的基地址拷贝到该进程的页目录下。为了描述方便,本发明实施例中以一个进程为例进行描述,
为了实现CPU 100通过内存总线访问内存中的第一目标文件,并且为了避免操作系统在访问文件系统时因为系统调用降低文件访问效率,实现在用户态对文件的连续访问,在本发明实施例中,可以将第一虚拟空间映射到访问所述第一目标文件的进程的第二虚拟空间中。其中,第二虚拟空间为所述进程的用户空间中的一段连续的虚拟地址空间。本领域技术人员可以知道,在操作系统中,虚拟内存通常会被分成用户空间和内核空间两个部分。其中,内核、驱动程序等核心软件运行在内核空间,普通应用程序运行在用户空间。用户空间为所有进程都有权限访问的空间,在用户空间运行的程序的权限级别较低,只能看到允许它们使用的部分系统资源。内核空间运行的程序的权限级别较高,拥有访问硬件设备的所有权限。
具体的,如图3所示,可以将用于管理第一目标文件的第一虚拟空间映射到进程的用户空间中的第二虚拟空间,其中,第二虚拟空间不大于第一虚拟空间。为了描述清楚,在本发明实施例中,将所述第一虚拟空间和所述第二虚拟空间的映射关系称为第一映射关系。在映射过程中,一种情形下,可以根据第一虚拟空间的起始地址和大小以及预设的映射偏移量将第一虚拟空间映射到第二虚拟空间。通过这种映射方式,虽然第一虚拟空间和第二虚拟空间的大小相同,但第一虚拟空间的起始地址与第二虚拟空间的起始地址不同,两者的差为映射偏移量。在这种情形下,可以根据第一虚拟空间的起始地址以及预设的映射偏移量计算第二虚拟空间的起始地址。另一种情形下,可以根据第一虚拟空间的起始地址和大小直接映射到第二虚拟空间。通过这种映射方式,第一虚拟空间和第二虚拟空间的起始地址相同,且第一虚拟空间和第二虚拟空间的大小相同。换一种表达方式,在这种映射方式下,也可以说映射偏移量为0。实际应用中,在建立第一虚拟空间和第二虚拟空间的第一映射关系之后,可以将指向第二虚拟空间的起始地址的指针返回给所述进程。
在步骤215中,CPU 100根据所述第二虚拟空间的起始地址从设置的多个寄存器中确定待访问的文件管理寄存器。其中,所述文件管理寄存器中保存有全局文件页表的页目录基地址,所述全局文件页表用于指向所述第一目标文件在所述内存中的物理地址。如前所述,在用户态运行的进程要实现对内存的访问需要通过MMU将进程的用户空间中的虚拟地址转换成内存的物理地址。在本发明实施例中,为了减轻进程页表的负担,减少系统调用带来的系统负担,在CPU 100中设置有多个寄存器。除了现有的CR0-CR3寄存器以外,CPU100中还包括专门用于管理文件系统的寄存器。为了描述方便,在本发明实施例中将该专门用于管理文件系统的寄存器称为文件管理寄存器。在本发明实施例中,在CR3寄存器中保存有进程页表的页目录基地址。在文件管理寄存器中保存有全局文件页表的页目录基地址。其中,进程页表的页目录基地址是指进程页表的页目录的起始物理地址。全局文件页表的页目录基地址是指该全局文件页表的页目录的起始物理地址。所述全局文件页表用于指向文件系统中的所有文件在内存中的物理地址。
在本发明实施例中,所有访问文件系统的进程均需要通过设置的文件管理寄存器实现对NVM200中的文件系统的访问。具体的,所有访问文件系统任务的进程都通过访问文件管理寄存器来实现全局虚拟空间的虚拟地址到NVM200空间的物理地址的转换。而不访问文件系统的进程则需要通过现有的CR3寄存器实现对DRAM300或NVM 200中除保存文件系统数据之外的其他空间的访问。实际应用中,可以根据待访问的用户空间的起始地址来确定要访问的寄存器。例如:若待访问的用户空间的起始地址在0x00000000-0xF0000000的范围内,则确定要访问的寄存器为CR3寄存器。若待访问的用户空间的起始地址在0xF0000000-0xFFFFFFFF的范围内,则确定要访问的寄存器为文件管理寄存器。具体的,在本步骤中,CPU100中的内存管理单元MMU 104可以根据所述第二虚拟空间的起始地址从设置的多个寄存器中确定待访问的寄存器为文件管理寄存器。由于文件管理寄存器中保存有全局文件页表的页目录基地址。因此,在本步骤中,所述全局文件页表可以指向所述第一目标文件在所述NVM 200中的物理地址。
为了更清楚的描述本发明实施例,下面将结合图4对本发明实施例中的全局文件页表进行描述。图4为本发明实施例提供的一种页表示意图。如图4所示。在本发明实施例中,CPU 100中至少设置有CR3寄存器1042以及文件管理寄存器1044。MMU 104可以通过访问CR3寄存器1042访问进程页表1046,并且,MMU 104可以通过访问文件管理寄存器1044访问全局文件页表1048。CR3寄存器1042中保存有进程页表1046的页目录基地址,文件管理寄存器1044中保存有全局文件页表1048的页目录基地址。进程页表1046用于指向DRAM的空间1047中的物理页的物理地址。全局文件页表1048用于指向NVM的空间1049中的物理页的物理地址。进程页表1046和全局文件页表1048均可以是单级或多级页表。例如,如图4所示,进程页表1046可以包括页目录、页中间目录(page middle directory,PMD)以及页表(pagetable,PT),全局文件页表1048可以包括页目录、页上级目录(page upper directory,PUD)、页中间目录(PMD)以及页表。其中,进程页表1046的页表(PT)中的页表项(page tableentry,PTE)中包含有指向DRAM的空间1047中的物理页的物理地址,全局文件页表1048的页表(PT)中的页表项中包含有指向NVM的空间1049中的物理页的物理地址。
在步骤220中,CPU 100根据所述第一映射关系将所述第一访问请求的起始地址转换为所述第一虚拟空间的访问地址。如前所述,为了提高文件访问效率,在本发明实施例中,根据存储文件系统的第二物理空间虚拟的全局虚拟空间是一段连续的地址空间,通过设置的全局虚拟空间对文件进行访问则可以对文件的多个离散的物理页面进行连续的访问操作。具体访问时,可以根据所述文件管理寄存器实现所述第一目标文件的第一虚拟空间的地址与所述第一目标文件在所述NVM200中的第一物理空间的物理地址的转换。实际应用中,由于进程处理过程中,需要根据进程的虚拟地址空间确定待访问的寄存器,而文件管理寄存器实现的是文件系统的全局虚拟空间的虚拟地址与文件系统在NVM 200的物理地址的转换,因此,在本步骤中,需要将第二虚拟空间的地址转换为第一虚拟空间的地址。具体实现时,由于第一访问请求的起始地址为所述进程的虚拟空间的地址,因此,第一访问请求的起始地址可以为所述第二虚拟空间中的地址。在本步骤中,可以根据第一访问请求的起始地址以及设置的映射偏移量来确定第一虚拟空间的访问地址。可以理解的是,在设置的映射偏移量为0的情况下,第一虚拟空间的起始地址与第二虚拟空间的起始地址相同。
在步骤225中,CPU 100根据所述第一虚拟空间的访问地址访问所述文件管理寄存器,以获取所述第一目标文件在所述内存中的物理地址。下面将结合图5对本步骤进行详细介绍。图5为本发明实施例提供的一种全局文件页表访问示意图。具体的,如图5所示,CPU100中的MMU 104可以通过访问文件管理寄存器1044访问全局文件页表(如图4中的全局文件页表1048)。为了描述简便,在图5中以第一虚拟空间的访问地址为32位的虚拟地址为例进行描述。
在图5所示的实施例中,全局文件页表可以包括页目录501、页表502。具体访问时,MMU104可以通过访问文件管理寄存器获得全局文件页表的页目录501的基地址,以页目录501的基地址为起始地址,根据所述第一虚拟空间的访问地址的高10位(第22位至第31位)作为偏移量在页目录501中找到页目录项5011。在页目录项5011中包含有页表502的起始物理地址,以所述第一虚拟空间的访问地址的中间10位(第12位至第21位)作为偏移量,根据页表502的起始物理地址在页表502中查找到页表项5021。在页表项5021中保存有第一目标文件在内存中的物理页503的起始物理地址。以所述第一虚拟空间的访问地址的低11位(第0位至第11位)作为偏移量根据物理页503的起始物理地址在物理页503中查找到要访问行(line)5031。其中,行5031的地址即为要访问的第一目标文件在内存中的起始物理地址。
可以理解的是,由于内存访问可以以行(line)为粒度实现数据的读写,因此当确定了要访问的行(line)5031之后,可以根据本次访问的起始位置的物理地址对NVM200执行访问操作。例如,如果所述第一访问请求是读请求,则可以根据物理页503中的行5031的位置作为读数据的起始位置,根据所述读数据的起始位置的物理地址向内存控制器发送读数据指令,指示内存控制器对所述第一目标文件执行读操作。如果所述第一访问请求是写请求,则可以根据行5031的位置获得写入新数据的起始位置,根据所述写入新数据的起始位置的物理地址向内存控制器发送写数据指令,指示所述内存控制器对所述第一目标文件执行写操作。由图5所示的实施例可以看出,CPU 100根据所述第一虚拟空间的访问地址访问所述文件管理寄存器则可以获取所述第一目标文件在所述内存中的物理地址,从而达到访问第一目标文件的目的。
实际应用中,为了灵活分配内存空间,可以在写操作过程中动态为第一目标文件分配内存的物理页。下面将结合图6对执行图2所示的步骤225中具体的写操作过程进行详细描述。图6为本发明实施例提供的一种文件写入方法流程图。下面以第一访问请求为写请求为例对图6进行描述,如图6所示,所述方法可以包括如下步骤。
在步骤605中,CPU 100确定根据所述全局文件页表无法获得所述第一虚拟空间的访问地址指向的第四物理地址。其中,所述第四物理地址为所述内存中的物理地址。在实际应用中,一种情况下,随着文件的扩展,可能会发生为该文件已分配的内存物理空间不够的情况,需要新增存储该文件的内存空间。在另一种情况下,为了灵活分配内存物理空间,节约空闲的内存,提高系统的吞吐率,在创建新文件时,并不为文件预分配内存物理空间,而只是在该文件有数据写入的过程中,按照待写入数据的大小为文件分配内存物理空间。在这两种情形下,在根据所述第一映射关系将所述第一访问请求的起始地址转换为所述第一虚拟空间的访问地址之后,根据第一虚拟空间的访问地址访问第一目标文件时,在待写入数据的物理页还未分配的情况下,全局文件页表中没有记录有待写入数据的物理页的物理地址。则在本步骤中,CPU 100中的MMU 104无法根据第一虚拟空间的访问地址以及所述全局文件页表获得内存中待写入数据的物理页的物理地址。为了描述清楚,在本发明实施例中,将所述第一虚拟空间的访问地址指向的NVM200中的物理页的物理地址称为第四物理地址。
在步骤610中,CPU 100为所述第一目标文件分配物理页。具体的,当CPU 100中的MMU 104确定根据所述全局文件页表无法获得所述第一虚拟空间的访问地址指向的第四物理地址时,MMU 104会引起缺页中断,请求运行于CPU 100上的操作系统内核为所述访问第一目标文件的进程分配NVM200的物理页面。操作系统内核可以根据缺页中断请求从内存的空闲物理页中为第一目标文件分配物理页。可以理解的是,当第一访问请求为写请求时,第一访问请求中除了携带第一文件标识,还可以携带待写入的数据量的大小,则操作系统内核分配物理页时,可以根据待写入数据量的大小来分配物理页。
实际应用中,在为第一目标文件分配物理页之后,操作系统内核需要在全局文件页表中记录所述分配的物理页的物理地址。具体的,操作系统内核需要在全局文件页表中为分配的物理页建立相应的页表项,并在建立的页表项中记录所述分配的物理页的物理地址。以便在后续的访问操作过程中可以根据所述第一访问请求的起始地址能够找到所述分配的物理页的物理地址。
在步骤615中,CPU 100将所述第一访问请求中携带的待写入数据写入所述分配的物理页中。可以理解的是,当第一访问请求为写请求时,第一访问请求中需携带待写入的数据。具体的,在为第一目标文件分配物理页之后,MMU 104可以将分配的物理页的物理地址返回给CPU 100。CPU 100可以根据该分配的物理页的物理地址向内存控制器发送写数据命令,用于指示将第一访问请求中携带的待写入数据写入分配的物理页中。
在本发明实施例中,在对新分配的物理页执行完写操作后,还可以根据写入结果对所述第一目标文件的元数据进行更新。具体的更新过程可以包括如下步骤。
在步骤620中,CPU 100根据所述第一虚拟空间的访问地址以及所述待写入数据量的大小计算所述第一访问请求的结束地址,其中,所述第一访问请求的结束地址为所述第一虚拟空间中的地址。实际应用中,在将所述第一访问请求中携带的待写入数据写入所述分配的物理页中之后,CPU 100可以根据所述第一虚拟空间的访问地址以及待写入的数据量的大小计算所述第一访问请求的结束地址。可以理解的是,由于所述第一虚拟空间的访问地址为全局虚拟空间的虚拟地址,因此,所述第一访问请求的结束地址也是全局虚拟空间的虚拟地址。具体的,第一访问请求的结束地址为第一虚拟空间中的地址。例如,若第一访问请求的起始地址为:0x00000000,待写入数据量的大小为8k,则所述第一访问请求的结束地址为:0x00002000。
在步骤625中,CPU 100根据所述第一虚拟空间的起始地址以及所述第一访问请求的结束地址获得更新后的第一虚拟空间的大小。可以理解的是,在将数据写入第一目标文件后,可以根据所述第一虚拟空间的起始地址以及步骤620中获得的所述第一访问请求的结束地址获得更新后的第一目标文件的大小。更新后的第一目标文件的大小就是更新后的第一虚拟空间的大小。
在步骤630中,CPU 100在所述第一目标文件的索引节点中记录所述更新后的第一虚拟空间的大小。由于第一目标文件的索引节点中记录有管理所述第一目标文件的第一虚拟空间的信息,因此,在对第一目标文件的进行写操作后,需要根据写操作的结果更新所述第一目标文件的元数据信息。如前所述,在第一目标文件的索引节点中记录的第一虚拟空间的信息包括第一虚拟空间的起始地址和大小,其中,通过第一虚拟空间的起始地址和大小可以获得第一目标文件的大小。在通过步骤625获得更新后的第一虚拟空间的大小后,在本步骤中,可以在所述第一目标文件的索引节点中记录所述更新后的第一虚拟空间的大小。以实现对第一目标文件的元数据的更新。
在本发明实施例提供的文件访问方法中,CPU 100可以通过虚拟的全局虚拟空间来管理统一管理文件系统中的所有文件,并通过设立的全局文件页表来实现对文件系统的访问。在具体访问时,CPU 100可以根据待访问的第一目标文件的文件标识获取元数据中的所述第一目标文件的索引节点。在所述第一目标文件的索引节点中保存有第一目标文件在全局虚拟空间中的第一虚拟空间的信息。CPU 100可以根据索引节点中记录的第一虚拟空间的信息将第一虚拟空间映射到进程的第二虚拟空间中,并通过CPU 100中的MMU 104对增加的文件管理寄存器进行寻址。文件管理寄存器中存储有全局文件页表的页目录的基地址,从而MMU 104可以根据第一虚拟空间的起始地址以及所述全局文件页表的页目录的基地址对第一目标文件进行访问。由于第一虚拟空间是一段连续的空间,因此通过本发明实施例描述的方法,在第一目标文件的索引节点中可以只需记录第一虚拟空间的起始地址和大小信息,通过记录的第一虚拟空间的信息能够实现对存储于内存中的第一目标文件的连续访问。并且,在本发明实施例中,由于全局文件页表通过新增的文件管理寄存器进行寻址,从而,无需将文件的页表项添加或链接到进程的页表中,减少了系统开销,减轻了进程页表的负担,提高了文件访问效率。
图7为本发明实施例描述的又一种文件访问方法的流程图。该方法可以应用于图1所示的应用场景中。下面将结合图1和图2对图7所示的方法进行介绍。如图7所示,该方法可以包括如下步骤。
在步骤701中,CPU 100接收第二访问请求,所述第二访问请求中携带有第二目标文件标识和所述第二访问请求的起始地址,所述第二目标文件标识用于指示要访问的第二目标文件。例如,第二目标文件标识可以为:File_2.doc。需要说明的是,第二目标文件与第一目标文件为所述文件系统中的不同文件。
在步骤705中,CPU 100根据所述第二文件标识判断所述文件系统中是否存在所述第二目标文件的索引节点,如果根据所述第二文件标识确定所述文件系统中不存在所述第二目标文件的索引节点,则执行步骤710,否则执行步骤725。实际应用中,CPU 100可以根据第二文件标识查找所述文件系统的元数据,判断是否存在所述第二目标文件的索引节点。本领域人员可以知道,如果元数据中没有存在第二目标文件的索引节点,则说明所述文件系统中不存在所述第二目标文件。本领域人员可以知道,若所述第二访问请求为读请求,则运行于CPU 100上的操作系统会向访问所述第二目标文件的进程返回一个访问错误的响应。若所述第二访问请求为写请求,则系统可以执行步骤710。
在步骤710中,CPU 100在所述文件系统中创建所述第二目标文件的索引节点。具体的,可以根据所述第二文件标识在文件系统的元数据中增加第二目标文件的索引节点。
步骤715,为所述第二目标文件分配第三虚拟空间,其中,所述第三虚拟空间为根据所述内存中的第三物理空间虚拟的连续的地址空间。在创建第二目标文件的索引节点后,为了管理所述第二目标文件,需要在预设的全局虚拟空间中为第二目标文件分配第三虚拟空间。所述第三虚拟空间为预设的全局虚拟空间的一部分,且第三虚拟空间为一段连续的虚拟空间。具体的,可以通过虚拟内存空间中的第三物理空间来获得所述第三虚拟空间。其中,第三物理空间是内存空间中用于存储第二目标文件的物理空间。当然,实际应用中,第三物理空间可以是指在创建第二目标文件时为第二目标文件在内存空间中预分配少量的物理空间,第三虚拟空间也可以是指第二目标文件为空文件时在内存中占用的空间。可以理解的是,在本发明实施例中,所述第三虚拟空间不同于所述第一虚拟空间,所述第三物理空间不同于所述第一物理空间。
在步骤720中,CPU 100在所述第二目标文件的索引节点中记录所述第三虚拟空间的信息,所述第三虚拟空间用于管理所述第二目标文件。实际应用中,在创建所述第二目标文件的索引节点,并为所述第二目标文件分配第三虚拟空间之后,为了管理所述第二目标文件,需要在所述第二目标文件的索引节点中记录所述第三虚拟空间的信息,其中,所述第三虚拟空间的信息包括所述第三虚拟空间的起始地址和大小。可以理解的是,在执行完步骤710、715和720之后,就可以根据创建的第二目标文件的元数据信息实现对第二目标文件的访问。例如,可以通过步骤730-步骤745描述的方法实现对第二目标文件的写操作。
在步骤725中,CPU 100根据所述第二文件标识获取所述第二目标文件的索引节点,所述第二目标文件的索引节点中包含有用于管理所述第二目标文件的第三虚拟空间的信息。其中,所述第三虚拟空间为根据所述内存的第三物理空间(图3中未示出)虚拟的连续的地址空间,所述第三物理空间用于存储所述第二目标文件,所述第三虚拟空间为预设的全局虚拟空间的一部分。
在步骤730中,CPU 100建立所述第三虚拟空间和进程的第四虚拟空间的第二映射关系,其中,所述第四虚拟空间为进程的用户空间的一段连续的虚拟地址空间。
在步骤735中,CPU 100根据所述第四虚拟空间的起始地址从设置的多个寄存器中确定待访问的寄存器为文件管理寄存器。其中,所述文件管理寄存器中保存有全局文件页表的页目录基地址,所述全局文件页表用于指向所述第二目标文件在所述内存中的物理地址。具体的,所述全局文件页表可以用于指向所述第二目标文件在所述内存中的第三物理空间的起始地址。
在步骤740中,CPU 100根据所述第二映射关系将所述第二访问请求的起始地址转换为所述第三虚拟空间的访问地址。
在步骤745中,CPU 100根据所述第三虚拟空间的访问地址访问所述文件管理寄存器,以获取所述第二目标文件在所述内存中的物理地址。具体的,CPU 100中的MMU 104可以根据所述第三虚拟空间的访问地址访问所述文件管理寄存器,以寻址到所述第二目标文件在所述内存中的第三物理空间的物理地址,实现对所述第二目标文件的访问。
需要说明的是,图7中步骤725-745分别与图2中描述的步骤205-225类似,具体可以分别参考步骤205-225的描述,在此不再赘述。
图8为本发明实施例提供的一种文件访问装置的结构示意图。该装置可以用于访问基于内存建立的文件系统,其中,内存为非易失性存储器NVM。如图8所示,该文件访问装置80可以包括下述模块。
接收模块800,用于接收第一访问请求,所述第一访问请求中携带有第一文件标识和所述第一访问请求的起始地址,所述第一文件标识用于指示要访问的第一目标文件。
获取模块805,用于根据所述第一文件标识获取所述第一目标文件的索引节点,所述第一目标文件的索引节点中包含有用于管理所述第一目标文件的第一虚拟空间的信息,其中,所述第一虚拟空间为根据所述内存的第一物理空间虚拟的连续的地址空间,所述第一物理空间用于存储所述第一目标文件,所述第一虚拟空间为预设的全局虚拟空间的一部分,所述全局虚拟空间为根据所述内存的第二物理空间虚拟的连续的地址空间,所述第二物理空间用于存储所述文件系统的所有数据。
映射模块810,用于建立所述第一虚拟空间和进程的第二虚拟空间的第一映射关系,其中,所述第二虚拟空间为进程的用户空间的一段连续的虚拟地址空间。
确定模块815,用于根据所述第二虚拟空间的起始地址从设置的多个寄存器中确定待访问的寄存器为文件管理寄存器,所述文件管理寄存器中保存有全局文件页表的页目录基地址,所述全局文件页表用于指向所述第一目标文件在所述内存中的物理地址。
转换模块820,用于根据所述第一映射关系将所述第一访问请求的起始地址转换为所述第一虚拟空间的访问地址,其中,所述第一访问请求的起始地址为所述进程的第二虚拟空间中的地址。
访问模块825,用于根据所述第一虚拟空间的访问地址访问所述文件管理寄存器,以获取所述第一目标文件在所述内存中的物理地址。
在又一种情形下,本发明实施例提供的文件访问装置中的接收模块800,还用于接收第二访问请求,所述第二访问请求中携带有第二目标文件标识,所述第二目标文件标识用于指示要访问的第二目标文件。本发明实施例提供的文件访问装置还可以包括判断模块830、创建模块835、分配模块840和记录模块845。其中:
判断模块830,用于根据所述第二文件标识确定所述文件系统中不存在所述第二目标文件的索引节点。
创建模块835,用于在所述文件系统中创建所述第二目标文件的索引节点。
分配模块840,用于为所述第二目标文件分配第三虚拟空间。其中,所述第三虚拟空间为根据所述内存空间中的第三物理空间虚拟的连续的地址空间,所述第三物理空间用于存储所述第二目标文件,所述第三虚拟空间为预设的全局虚拟空间的一部分,所述第三虚拟空间不同于所述第一虚拟空间,所述第三物理空间不同于所述第一物理空间。
记录模块845,用于在所述第二目标文件的索引节点中记录所述第三虚拟空间的信息,所述第三虚拟空间用于管理所述第二目标文件。
实际应用中,在本发明实施例提供的文件访问装置中,所述第一虚拟空间的信息可以包括所述第一虚拟空间的起始地址以及大小。当所述第一访问请求为写请求时,所述访问模块825具体用于:确定根据所述全局文件页表无法获得所述第一虚拟空间的访问地址指向的第四物理地址,其中,所述第四物理地址为所述内存中的物理地址,为所述第一目标文件分配物理页,并将所述第一访问请求中携带的待写入数据写入所述分配的物理页中。所述记录模块845,还用于在所述全局文件页表中记录所述分配的物理页的物理地址。
在另一种情形下,所述第一虚拟空间的信息包括所述第一虚拟空间的起始地址以及大小,所述第一访问请求中还可以包括待写入数据量的大小,文件访问装置80还可以包括:更新模块850,用于根据所述第一虚拟空间的访问地址以及所述待写入数据量的大小计算所述第一访问请求的结束地址,根据所述第一虚拟空间的起始地址以及所述第一访问请求的结束地址获得更新后的第一虚拟空间的大小,并在所述第一目标文件的索引节点中记录所述更新后的第一虚拟空间的大小。其中,所述第一访问请求的结束地址为所述第一虚拟空间中的地址。
本发明实施例所提供的文件访问装置80可以执行图2-图7所述实施例所描述的文件访问方法,各个模块功能的详细描述可参见方法实施例中的描述,在此不再赘述。
可以理解的是,图8所示的实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个设备中,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部,模块来实现本实施例方案的目的。
本发明实施例提供的文件访问装置,可以通过虚拟的全局虚拟空间来管理统一管理文件系统中的所有文件,并通过设立的全局文件页表来实现对文件系统的访问。在具体访问过程中,可以通过新增的文件管理寄存器对全局文件页表进行寻址,从而无需将文件的页表项拷贝到进程的页表中,减轻了进程页表的负担,提高了文件访问效率。
本发明实施例还提供一种数据处理的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory,RAM)、固态硬盘(Solid State Disk,SSD)或者非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
需要说明的是,本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。
Claims (15)
1.一种文件访问方法,所述方法应用于内存中建有文件系统的存储设备,其中,所述内存为非易失性存储器NVM,其特征在于,包括:
接收第一访问请求,所述第一访问请求中携带有第一文件标识和所述第一访问请求的起始地址,所述第一文件标识用于指示要访问的第一目标文件;
根据所述第一文件标识获取所述第一目标文件的索引节点,所述第一目标文件的索引节点中包含有用于管理所述第一目标文件的第一虚拟空间的信息,其中,所述第一虚拟空间为根据所述内存的第一物理空间虚拟的连续的地址空间,所述第一物理空间用于存储所述第一目标文件,所述第一虚拟空间为预设的全局虚拟空间的一部分,所述全局虚拟空间为根据所述内存的第二物理空间虚拟的连续的地址空间,所述第二物理空间用于存储所述文件系统的所有数据;
建立所述第一虚拟空间和进程的第二虚拟空间的第一映射关系,其中,所述第二虚拟空间为进程的用户空间中的一段连续的虚拟地址空间;
根据所述第二虚拟空间的起始地址从设置的多个寄存器中确定待访问的寄存器为文件管理寄存器,所述文件管理寄存器中保存有全局文件页表的页目录基地址,所述全局文件页表用于指向所述第一目标文件在所述内存中的物理地址;
根据所述第一映射关系将所述第一访问请求的起始地址转换为所述第一虚拟空间的访问地址,其中,所述第一访问请求的起始地址为所述进程的第二虚拟空间中的地址;
根据所述第一虚拟空间的访问地址访问所述文件管理寄存器,以获取所述第一目标文件在所述内存中的物理地址。
2.根据权利要求1所述的文件访问方法,其特征在于,还包括:
接收第二访问请求,所述第二访问请求中携带有第二目标文件标识,所述第二目标文件标识用于指示要访问的第二目标文件;
根据所述第二目标文件标识确定所述文件系统中不存在所述第二目标文件的索引节点;
在所述文件系统中创建所述第二目标文件的索引节点;
为所述第二目标文件分配第三虚拟空间,其中,所述第三虚拟空间为根据所述内存中的第三物理空间虚拟的连续的地址空间,所述第三物理空间用于存储所述第二目标文件,所述第三虚拟空间为预设的全局虚拟空间的一部分,所述第三虚拟空间不同于所述第一虚拟空间,所述第三物理空间不同于所述第一物理空间;
在所述第二目标文件的索引节点中记录所述第三虚拟空间的信息,所述第三虚拟空间用于管理所述第二目标文件。
3.根据权利要求1或2所述的文件访问方法,其特征在于,所述第一访问请求为写请求,所述第一访问请求中还携带有待写入的数据;
所述根据所述第一虚拟空间的访问地址访问所述文件管理寄存器,以获取所述第一目标文件在所述内存中的物理地址包括:
确定根据所述全局文件页表无法获得所述第一虚拟空间的访问地址指向的第四物理地址,其中,所述第四物理地址为所述内存中的物理地址;
为所述第一目标文件分配物理页;
将所述第一访问请求中携带的待写入数据写入所述分配的物理页中。
4.根据权利要求3所述的方法,其特征在于,所述为所述第一目标文件分配物理页之后,还包括:
在所述全局文件页表中记录所述分配的物理页的物理地址。
5.根据权利要求3所述的方法,其特征在于,所述第一虚拟空间的信息包括所述第一虚拟空间的起始地址以及大小,所述第一访问请求中还包括待写入数据量的大小,所述将所述第一访问请求中携带的待写入数据写入所述分配的物理页中之后,还包括:
根据所述第一虚拟空间的访问地址以及所述待写入数据量的大小计算所述第一访问请求的结束地址,所述第一访问请求的结束地址为所述第一虚拟空间中的地址;
根据所述第一虚拟空间的起始地址以及所述第一访问请求的结束地址获得更新后的第一虚拟空间的大小;
在所述第一目标文件的索引节点中记录所述更新后的第一虚拟空间的大小。
6.一种存储设备,其特征在于,包括:
内存,用于存储文件系统和文件,其中所述内存为非易失性存储器NVM;
处理器,通过内存总线与所述内存连接,所述处理器用于:
接收第一访问请求,所述第一访问请求中携带有第一文件标识和所述第一访问请求的起始地址,所述第一文件标识用于指示要访问的第一目标文件;
根据所述第一文件标识获取所述第一目标文件的索引节点,所述第一目标文件的索引节点中包含有用于管理所述第一目标文件的第一虚拟空间的信息,其中,所述第一虚拟空间为根据所述内存的第一物理空间虚拟的连续的地址空间,所述第一物理空间用于存储所述第一目标文件,所述第一虚拟空间为预设的全局虚拟空间的一部分,所述全局虚拟空间为根据所述内存的第二物理空间虚拟的连续的地址空间,所述第二物理空间用于存储所述文件系统的所有数据;
建立所述第一虚拟空间和进程的第二虚拟空间的第一映射关系,其中,所述第二虚拟空间为进程的用户空间的一段连续的虚拟地址空间;
根据所述第二虚拟空间的起始地址从设置的多个寄存器中确定待访问的寄存器为文件管理寄存器,所述文件管理寄存器中保存有全局文件页表的页目录基地址,所述全局文件页表用于指向所述第一目标文件在所述内存中的物理地址;
根据所述第一映射关系将所述第一访问请求的起始地址转换为所述第一虚拟空间的访问地址,其中,所述第一访问请求的起始地址为所述进程的第二虚拟空间中的地址;
根据所述第一虚拟空间的访问地址访问所述文件管理寄存器,以获取所述第一目标文件在所述内存中的物理地址。
7.根据权利要求6所述的存储设备,其特征在于,所述处理器还用于:
接收第二访问请求,所述第二访问请求中携带有第二目标文件标识,所述第二目标文件标识用于指示要访问的第二目标文件;
根据所述第二目标文件标识确定所述文件系统中不存在所述第二目标文件的索引节点;
在所述文件系统中创建所述第二目标文件的索引节点;
为所述第二目标文件分配第三虚拟空间,其中,所述第三虚拟空间为根据所述内存中的第三物理空间虚拟的连续的地址空间,所述第三物理空间用于存储所述第二目标文件,所述第三虚拟空间为预设的全局虚拟空间的一部分,所述第三虚拟空间不同于所述第一虚拟空间,所述第三物理空间不同于所述第一物理空间;
在所述第二目标文件的索引节点中记录所述第三虚拟空间的信息,所述第三虚拟空间用于管理所述第二目标文件。
8.根据权利要求6或7所述的存储设备,其特征在于,当所述第一访问请求为写请求时,所述第一访问请求中还携带有待写入的数据,所述处理器用于:
确定根据所述全局文件页表无法获得所述第一虚拟空间的访问地址指向的第四物理地址,其中,所述第四物理地址为所述内存中的物理地址;
为所述第一目标文件分配物理页;
将所述第一访问请求中携带的待写入数据写入所述分配的物理页中。
9.根据权利要求8所述的存储设备,其特征在于,所述处理器还用于:
在为所述第一目标文件分配物理页之后,在所述全局文件页表中记录所述分配的物理页的物理地址。
10.根据权利要求8所述的存储设备,其特征在于,所述第一虚拟空间的信息包括所述第一虚拟空间的起始地址以及大小,所述第一访问请求中还包括待写入数据量的大小,所述处理器还用于:
根据所述第一虚拟空间的访问地址以及所述待写入数据量的大小计算所述第一访问请求的结束地址,所述第一访问请求的结束地址为所述第一虚拟空间中的地址;
根据所述第一虚拟空间的起始地址以及所述第一访问请求的结束地址获得更新后的第一虚拟空间的大小;
在所述第一目标文件的索引节点中记录所述更新后的第一虚拟空间的大小。
11.一种文件访问装置,所述装置用于访问基于内存建立的文件系统,其中,所述内存为非易失性存储器NVM,其特征在于,包括:
接收模块,用于接收第一访问请求,所述第一访问请求中携带有第一文件标识和所述第一访问请求的起始地址,所述第一文件标识用于指示要访问的第一目标文件;
获取模块,用于根据所述第一文件标识获取所述第一目标文件的索引节点,所述第一目标文件的索引节点中包含有用于管理所述第一目标文件的第一虚拟空间的信息,其中,所述第一虚拟空间为根据所述内存的第一物理空间虚拟的连续的地址空间,所述第一物理空间用于存储所述第一目标文件,所述第一虚拟空间为预设的全局虚拟空间的一部分,所述全局虚拟空间为根据所述内存的第二物理空间虚拟的连续的地址空间,所述第二物理空间用于存储所述文件系统的所有数据;
映射模块,用于建立所述第一虚拟空间和进程的第二虚拟空间的第一映射关系,其中,所述第二虚拟空间为进程的用户空间的一段连续的虚拟地址空间;
确定模块,用于根据所述第二虚拟空间的起始地址从设置的多个寄存器中确定待访问的寄存器为文件管理寄存器,所述文件管理寄存器中保存有全局文件页表的页目录基地址,所述全局文件页表用于指向所述第一目标文件在所述内存中的物理地址;
转换模块,用于根据所述第一映射关系将所述第一访问请求的起始地址转换为所述第一虚拟空间的访问地址,其中,所述第一访问请求的起始地址为所述进程的第二虚拟空间中的地址;
访问模块,用于根据所述第一虚拟空间的访问地址访问所述文件管理寄存器,以获取所述第一目标文件在所述内存中的物理地址。
12.根据权利要求11所述的文件访问装置,其特征在于:
所述接收模块,还用于接收第二访问请求,所述第二访问请求中携带有第二目标文件标识,所述第二目标文件标识用于指示要访问的第二目标文件;
所述文件访问装置还包括:
判断模块,用于根据所述第二目标文件标识确定所述文件系统中不存在所述第二目标文件的索引节点;
创建模块,用于在所述文件系统中创建所述第二目标文件的索引节点;
分配模块,用于为所述第二目标文件分配第三虚拟空间,其中,所述第三虚拟空间为根据所述内存中的第三物理空间虚拟的连续的地址空间,所述第三物理空间用于存储所述第二目标文件,所述第三虚拟空间为预设的全局虚拟空间的一部分,所述第三虚拟空间不同于所述第一虚拟空间,所述第三物理空间不同于所述第一物理空间;
记录模块,用于在所述第二目标文件的索引节点中记录所述第三虚拟空间的信息,所述第三虚拟空间用于管理所述第二目标文件。
13.根据权利要求12所述的文件访问装置,其特征在于,所述第一访问请求为写请求,所述第一访问请求中还携带有待写入的数据,所述访问模块用于:
确定根据所述全局文件页表无法获得所述第一虚拟空间的访问地址指向的第四物理地址,其中,所述第四物理地址为所述内存中的物理地址;
为所述第一目标文件分配物理页;
将所述第一访问请求中携带的待写入数据写入所述分配的物理页中。
14.根据权利要求13所述的文件访问装置,其特征在于:
所述记录模块,还用于在所述全局文件页表中记录所述分配的物理页的物理地址。
15.根据权利要求13所述的文件访问装置,其特征在于,所述第一虚拟空间的信息包括所述第一虚拟空间的起始地址以及大小,所述第一访问请求中还包括待写入数据量的大小,所述文件访问装置还包括:
更新模块,用于根据所述第一虚拟空间的访问地址以及所述待写入数据量的大小计算所述第一访问请求的结束地址,所述第一访问请求的结束地址为所述第一虚拟空间中的地址;
根据所述第一虚拟空间的起始地址以及所述第一访问请求的结束地址获得更新后的第一虚拟空间的大小;
在所述第一目标文件的索引节点中记录所述更新后的第一虚拟空间的大小。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/092527 WO2016082196A1 (zh) | 2014-11-28 | 2014-11-28 | 文件访问方法、装置及存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105830059A CN105830059A (zh) | 2016-08-03 |
CN105830059B true CN105830059B (zh) | 2019-09-27 |
Family
ID=56073390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480037999.5A Active CN105830059B (zh) | 2014-11-28 | 2014-11-28 | 文件访问方法、装置及存储设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10067684B2 (zh) |
EP (1) | EP3217294B1 (zh) |
JP (1) | JP6460497B2 (zh) |
KR (1) | KR101944876B1 (zh) |
CN (1) | CN105830059B (zh) |
WO (1) | WO2016082196A1 (zh) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9003223B2 (en) * | 2012-09-27 | 2015-04-07 | International Business Machines Corporation | Physical memory fault mitigation in a computing environment |
US9720626B2 (en) * | 2014-09-19 | 2017-08-01 | Netapp Inc. | Cluster configuration information replication |
US20160246715A1 (en) * | 2015-02-23 | 2016-08-25 | Advanced Micro Devices, Inc. | Memory module with volatile and non-volatile storage arrays |
CN107870867B (zh) * | 2016-09-28 | 2021-12-14 | 北京忆芯科技有限公司 | 32位cpu访问大于4gb内存空间的方法与装置 |
CN107870870B (zh) * | 2016-09-28 | 2021-12-14 | 北京忆芯科技有限公司 | 访问超过地址总线宽度的内存空间 |
EP3553665A4 (en) * | 2016-12-28 | 2020-01-29 | Huawei Technologies Co., Ltd. | METHOD, DEVICE AND SYSTEM FOR ACCESSING A NON-VOLATILE MEMORY |
JP6724252B2 (ja) * | 2017-04-14 | 2020-07-15 | 華為技術有限公司Huawei Technologies Co.,Ltd. | データ処理方法、記憶システムおよび切り換え装置 |
GB201709499D0 (en) * | 2017-06-15 | 2017-08-02 | Microsoft Technology Licensing Llc | Memory management in non-volatile memory |
CN111512290B (zh) * | 2017-12-27 | 2023-09-22 | 华为技术有限公司 | 文件页表管理技术 |
US11507533B2 (en) * | 2018-02-05 | 2022-11-22 | Huawei Technologies Co., Ltd. | Data query method and apparatus |
KR102518095B1 (ko) * | 2018-09-12 | 2023-04-04 | 삼성전자주식회사 | 스토리지 장치 및 시스템 |
CN111208933B (zh) | 2018-11-21 | 2023-06-30 | 昆仑芯(北京)科技有限公司 | 数据访问的方法、装置、设备和存储介质 |
WO2020139396A1 (en) * | 2018-12-28 | 2020-07-02 | Didi Research America, Llc | Writing messages in a shared memory architecture for a vehicle |
WO2020139393A1 (en) * | 2018-12-28 | 2020-07-02 | Didi Research America, Llc | Message buffer for communicating information between vehicle components |
US10785170B2 (en) * | 2018-12-28 | 2020-09-22 | Beijing Voyager Technology Co., Ltd. | Reading messages in a shared memory architecture for a vehicle |
US10747597B2 (en) * | 2018-12-28 | 2020-08-18 | Beijing Voyager Technology Co., Ltd. | Message buffer for communicating information between vehicle components |
US10572405B1 (en) | 2018-12-28 | 2020-02-25 | Didi Research America, Llc | Writing messages in a shared memory architecture for a vehicle |
US11327489B2 (en) | 2018-12-28 | 2022-05-10 | Beijing Voyager Technology Co., Ltd. | Shared memory architecture for a vehicle |
WO2020139389A1 (en) * | 2018-12-28 | 2020-07-02 | Didi Research America, Llc | Shared memory architecture for a vehicle |
CN111414248B (zh) * | 2019-01-04 | 2023-03-21 | 阿里巴巴集团控股有限公司 | 内存管理方法、装置及计算设备 |
CN111522703B (zh) * | 2019-02-01 | 2023-08-11 | 伊姆西Ip控股有限责任公司 | 监控访问请求的方法、设备和计算机程序产品 |
CN110018998B (zh) * | 2019-04-12 | 2023-05-12 | 深信服科技股份有限公司 | 一种文件管理方法、系统及电子设备和存储介质 |
CN110287044B (zh) * | 2019-07-02 | 2021-08-03 | 广州虎牙科技有限公司 | 无锁共享内存处理方法、装置、电子设备及可读存储介质 |
CN110516465B (zh) * | 2019-07-11 | 2024-03-01 | 深圳市兴海物联科技有限公司 | 资源地址的管理方法、装置、设备及计算机可读存储介质 |
CN111124956B (zh) * | 2019-11-22 | 2023-03-07 | 海光信息技术股份有限公司 | 一种容器保护方法、处理器、操作系统及计算机设备 |
CN111125007B (zh) * | 2019-12-18 | 2023-06-20 | 鹏城实验室 | 应用封装方法、设备及可读存储介质 |
CN111143418B (zh) * | 2019-12-28 | 2023-09-08 | 浪潮商用机器有限公司 | 一种数据库读取数据方法、装置、设备及存储介质 |
CN111131291B (zh) * | 2019-12-30 | 2023-05-26 | 广东中鹏热能科技有限公司 | 一种上位机软件作为下位机设备的协议实现方法 |
CN111930575A (zh) * | 2020-07-01 | 2020-11-13 | 联想(北京)有限公司 | 一种固件获取方法、装置及电子设备 |
CN112241394B (zh) * | 2020-10-15 | 2022-08-02 | 浪潮商用机器有限公司 | 一种索引节点io的统计方法、工具、设备及存储介质 |
CN112527698B (zh) * | 2020-12-04 | 2024-03-22 | 联想(北京)有限公司 | 一种处理方法、装置及设备 |
CN113296703B (zh) * | 2021-05-27 | 2022-08-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种堆内存管理方法、装置、设备及介质 |
CN113360095B (zh) * | 2021-06-04 | 2023-02-17 | 重庆紫光华山智安科技有限公司 | 硬盘数据管理方法、装置、设备及介质 |
CN113625968B (zh) * | 2021-08-12 | 2024-03-01 | 网易(杭州)网络有限公司 | 文件权限的管理方法、装置、计算机设备及存储介质 |
CN113434371B (zh) * | 2021-08-26 | 2022-01-25 | 阿里云计算有限公司 | 内存访问信息的采集方法、计算设备及存储介质 |
US11922034B2 (en) | 2021-09-02 | 2024-03-05 | Samsung Electronics Co., Ltd. | Dual mode storage device |
CN114356793B (zh) * | 2021-11-25 | 2024-02-27 | 苏州浪潮智能科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN116830096A (zh) * | 2022-01-28 | 2023-09-29 | 华为技术有限公司 | 文件读取方法和装置 |
CN115481444B (zh) * | 2022-11-10 | 2023-03-31 | 荣耀终端有限公司 | 文件保护方法及电子设备 |
CN115934581B (zh) * | 2023-03-08 | 2023-05-05 | 北京微步在线科技有限公司 | 一种跨进程内存的处理方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103119570A (zh) * | 2010-09-24 | 2013-05-22 | 英特尔公司 | 用于实现微页表的装置、方法和系统 |
CN103488578A (zh) * | 2012-12-28 | 2014-01-01 | 晶天电子(深圳)有限公司 | 虚拟存储设备(vmd)应用/驱动器 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI359377B (en) * | 2005-04-05 | 2012-03-01 | Ibm | System and method for providing execute-in-place f |
JP2009069969A (ja) * | 2007-09-11 | 2009-04-02 | Canon Inc | 情報処理方法および情報処理装置、プログラム |
CN101187901B (zh) * | 2007-12-20 | 2012-07-18 | 康佳集团股份有限公司 | 一种实现文件访问的高速缓存系统和方法 |
US20090265780A1 (en) * | 2008-04-21 | 2009-10-22 | Varonis Systems Inc. | Access event collection |
JP5404798B2 (ja) * | 2009-09-21 | 2014-02-05 | 株式会社東芝 | 仮想記憶管理装置及び記憶管理装置 |
JP2011128792A (ja) * | 2009-12-16 | 2011-06-30 | Toshiba Corp | メモリ管理装置 |
US8478796B2 (en) * | 2010-03-23 | 2013-07-02 | Apple Inc. | Uncorrectable error handling schemes for non-volatile memories |
CN103218312B (zh) * | 2013-03-28 | 2017-07-11 | 中国科学院上海微系统与信息技术研究所 | 文件访问方法及系统 |
JP2014206884A (ja) * | 2013-04-15 | 2014-10-30 | 株式会社フィックスターズ | 情報処理装置、情報処理方法、およびプログラム |
CN103246718B (zh) * | 2013-04-27 | 2016-06-08 | 华为技术有限公司 | 文件访问方法、装置和设备 |
RU2658886C1 (ru) * | 2014-08-12 | 2018-06-25 | Хуавэй Текнолоджиз Ко., Лтд. | Способ управления файлами, распределенная система хранения и узел управления |
CN105579977B (zh) * | 2014-09-01 | 2020-04-14 | 华为技术有限公司 | 访问文件的方法、装置及存储系统 |
WO2016033718A1 (zh) * | 2014-09-01 | 2016-03-10 | 华为技术有限公司 | 访问文件的方法、装置和存储系统 |
KR101944757B1 (ko) * | 2014-10-31 | 2019-02-01 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 파일 액세스 방법, 시스템, 및 호스트 |
-
2014
- 2014-11-28 EP EP14906887.6A patent/EP3217294B1/en active Active
- 2014-11-28 KR KR1020177017200A patent/KR101944876B1/ko active IP Right Grant
- 2014-11-28 WO PCT/CN2014/092527 patent/WO2016082196A1/zh active Application Filing
- 2014-11-28 JP JP2017528500A patent/JP6460497B2/ja active Active
- 2014-11-28 CN CN201480037999.5A patent/CN105830059B/zh active Active
-
2017
- 2017-05-26 US US15/606,423 patent/US10067684B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103119570A (zh) * | 2010-09-24 | 2013-05-22 | 英特尔公司 | 用于实现微页表的装置、方法和系统 |
CN103488578A (zh) * | 2012-12-28 | 2014-01-01 | 晶天电子(深圳)有限公司 | 虚拟存储设备(vmd)应用/驱动器 |
Also Published As
Publication number | Publication date |
---|---|
EP3217294B1 (en) | 2018-11-28 |
CN105830059A (zh) | 2016-08-03 |
EP3217294A1 (en) | 2017-09-13 |
JP6460497B2 (ja) | 2019-01-30 |
WO2016082196A1 (zh) | 2016-06-02 |
EP3217294A4 (en) | 2017-11-29 |
KR101944876B1 (ko) | 2019-02-01 |
JP2018502375A (ja) | 2018-01-25 |
US20170262172A1 (en) | 2017-09-14 |
US10067684B2 (en) | 2018-09-04 |
KR20170088933A (ko) | 2017-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105830059B (zh) | 文件访问方法、装置及存储设备 | |
CN105830022B (zh) | 访问文件的方法和装置 | |
US9298384B2 (en) | Method and device for storing data in a flash memory using address mapping for supporting various block sizes | |
TWI704457B (zh) | 用以存取異質記憶體組件的記憶體虛擬化 | |
CN103518193B (zh) | 用于数据去重复的方法及装置 | |
CN108804350A (zh) | 一种内存访问方法及计算机系统 | |
CN105677879B (zh) | 内存关系数据库的数据组织及访问方法 | |
CN106104499B (zh) | 存储器设备及用于操作高速缓冲存储器的方法 | |
CN105283855B (zh) | 一种寻址方法及装置 | |
CN109240938A (zh) | 存储系统以及控制非易失性存储器的控制方法 | |
CN110362504A (zh) | 对一致性链路和多级存储器的管理 | |
CN111512290B (zh) | 文件页表管理技术 | |
CN108664523A (zh) | 一种虚拟磁盘文件格式转换方法和装置 | |
CN105579977A (zh) | 访问文件的方法、装置及存储系统 | |
CN105095113B (zh) | 一种缓存管理方法和系统 | |
US10366008B2 (en) | Tag and data organization in large memory caches | |
CN113010452A (zh) | 一种高效且支持QoS的虚拟内存架构 | |
CN107209720A (zh) | 持久存储器上的页面高速缓存 | |
CN115079957A (zh) | 请求处理方法、装置、控制器、设备及存储介质 | |
WO2016049893A1 (zh) | 文件页面管理单元、处理设备和文件页面管理方法 | |
US11835992B2 (en) | Hybrid memory system interface | |
JP7204020B2 (ja) | 制御方法 | |
US11188238B2 (en) | Information processing apparatus, memory control method, and computer program product |
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 |