KR101944876B1 - 파일 액세스 방법 및 장치 및 스토리지 디바이스 - Google Patents

파일 액세스 방법 및 장치 및 스토리지 디바이스 Download PDF

Info

Publication number
KR101944876B1
KR101944876B1 KR1020177017200A KR20177017200A KR101944876B1 KR 101944876 B1 KR101944876 B1 KR 101944876B1 KR 1020177017200 A KR1020177017200 A KR 1020177017200A KR 20177017200 A KR20177017200 A KR 20177017200A KR 101944876 B1 KR101944876 B1 KR 101944876B1
Authority
KR
South Korea
Prior art keywords
file
address
virtual space
space
physical
Prior art date
Application number
KR1020177017200A
Other languages
English (en)
Other versions
KR20170088933A (ko
Inventor
준 수
광위 주
위안강 왕
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
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 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20170088933A publication Critical patent/KR20170088933A/ko
Application granted granted Critical
Publication of KR101944876B1 publication Critical patent/KR101944876B1/ko

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • 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
    • 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/18File system types
    • G06F16/188Virtual file systems
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/225Hybrid cache memory, e.g. having both volatile and non-volatile portions
    • 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/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

파일 액세스 방법 및 장치, 및 스토리지 디바이스가 개시되며, 여기서 파일 액세스 방법은 메모리에 기반하여 파일 시스템이 확립된 스토리지 디바이스에 적용된다. 스토리지 디바이스는 액세스될 제1 타겟 파일의 파일 식별자에 따라, 메타데이터 내의 제1 타겟 파일의 인덱스 노드를 획득하고, 여기서 제1 타겟 파일의 인덱스 노드는 글로벌 가상 스페이스 내의 제1 타겟 파일의 제1 가상 스페이스에 관한 정보를 저장한다(205). 스토리지 디바이스는 제1 가상 스페이스를 프로세스의 제2 가상 스페이스 상에 매핑하고, 추가된 파일 관리 레지스터(220)에 대한 어드레싱을 수행하여(220 및 225) 제1 가상 스페이스의 시작 어드레스 및 파일 관리 레지스터에 저장된 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스에 따라 제1 타겟 파일을 액세스한다.

Description

파일 액세스 방법 및 장치 및 스토리지 디바이스{FILE ACCESS METHOD AND APPARATUS AND STORAGE DEVICE}
본 개시는 스토리지 기술 분야에 관한 것으로, 특히, 파일 액세스 방법 및 장치, 및 스토리지 디바이스에 관한 것이다.
종래 기술에서, 파일 시스템은 일반적으로 디스크 내에서 확립된다. 액세스 속도를 높이기 위해, MMAP 방식이 파일 시스템에 액세스하는 데 일반적으로 사용된다. 특히, 파일은 프로세스의 가상 스페이스에 매핑될 수 있다. 그러면 데이터는 하드 디스크에서 캐시로 판독되고, 매핑 엔트리가 캐시 페이지에서 생성되어 프로세스 페이지 테이블에 추가된다. 따라서, 프로세스는 프로세스 페이지 테이블에 액세스하여 파일에 직접 액세스할 수 있다.
PCM(Phase Change Memory), RRAM(Resistive Random Access Memory), MRAM(Magnetic Random Access Memory), 및 FRAM(Ferroelectric Random Access Memory)으로 대표되는 새로운 비-휘발성 메모리(NVM: Non-Volatile Memory) 기술의 발전에 따라, 차세대 NVM의 액세스 속도가 크게 향상되었다. 또한, 새로운 NVM은 바이트(Byte)로 어드레싱될 수 있고, 데이터는 비트(bits) 단위로 비-휘발성 메모리에 기입된다. 따라서, 새로운 NVM은 메모리로서 사용될 수 있고, NVM 스토리지는 페이지-기반 방식으로 관리되며, NVM은 CPU에 의해 직접 액세스된다. 종래 기술에서, NVM-기반 메모리 파일 시스템이 또한 제공된다. 메모리가 NVM이고, 파일 시스템이 여전히 MMAP 방식으로 액세스되면, 액세스 프로세스는 복잡하고, 캐시된 페이지 테이블 엔트리는 프로세스 페이지 테이블에 추가되어야 한다. 따라서, 프로세스 페이지 테이블의 부하가 증가된다.
본 개시의 실시예는 프로세스 페이지 테이블에 대한 부하를 감소시키고 파일 시스템의 액세스 효율을 향상시킬 수 있는, 파일 액세스 방법 및 장치, 및 스토리지 디바이스를 제공한다.
제1 양태에 따르면, 본 개시의 일 실시예는 비-휘발성 메모리(NVM: non-volatile memory)인 메모리에 기반하여 파일 시스템이 확립된 스토리지 디바이스에 적용되는 파일 액세스 방법으로서, 액세스될 제1 타겟 파일을 지시하는 데 사용되는 제1 파일 식별자 및 제1 액세스 요청의 시작 어드레스를 포함하는 제1 액세스 요청을 수신하는 단계, 제1 타겟 파일을 관리하는 데 사용되는 제1 가상 스페이스에 대한 정보를 포함하는, 제1 타겟 파일의 인덱스 노드를 제1 파일 식별자에 따라 획득하는 단계, 제1 가상 스페이스 및 프로세스의 제2 가상 스페이스 사이의 제1 매핑 관계를 확립하는 단계, 다수로 배치된 레지스터로부터, 제2 가상 스페이스의 시작 어드레스에 따라 액세스될 레지스터를 파일 관리 레지스터로서 결정하는 단계, 제1 매핑 관계에 따라 제1 액세스 요청의 시작 어드레스를 제1 가상 스페이스의 액세스 어드레스로 변환하는 단계, 그리고 메모리 내의 제1 타겟 파일의 물리 어드레스를 획득하기 위해, 제1 가상 스페이스의 액세스 어드레스에 따라 파일 관리 레지스터를 액세스하는 단계를 포함하고, 제1 가상 스페이스는 메모리 내의 제1 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이고, 제1 물리 스페이스는 제1 타겟 파일을 저장하는 데 사용되며, 제1 가상 스페이스는 미리 설정된 글로벌 가상 스페이스의 일부이고, 글로벌 가상 스페이스는 메모리 내의 제2 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이며, 제1 물리 스페이스는 파일 시스템 내의 모든 데이터를 저장하는 데 사용되고, 제2 가상 스페이스는 프로세스의 사용자 스페이스 내의 연속적인 가상 어드레스 스페이스의 세그먼트이며, 파일 관리 레지스터는 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스를 저장하고, 글로벌 파일 페이지 테이블은 메모리 내의 제1 타겟 파일의 물리 어드레스를 지시하는 데 사용되며, 제1 액세스 요청의 시작 어드레스는 프로세스의 제2 가상 스페이스 내의 어드레스인, 파일 액세스 방법을 제공한다.
제1 양태를 참조하여, 제1 양태의 첫 번째 가능한 구현 방식으로, 방법은 액세스될 제2 타겟 파일을 지시하는 데 사용되는 제2 파일 식별자를 포함하는 제2 액세스 요청을 수신하는 단계, 제2 파일 식별자에 따라, 제2 타겟 파일의 인덱스 노드가 파일 시스템 내에 없다는 것을 결정하는 단계, 파일 시스템 내에서 제2 타겟 파일의 인덱스 노드를 생성하는 단계, 제2 타겟 파일에 제3 가상 스페이스를 할당하는 단계, 그리고 제2 타겟 파일의 인덱스 노드에서, 제3 가상 스페이스에 대한 정보를 기록하는 단계를 더 포함하고, 제3 가상 스페이스는 메모리 내의 제3 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이고, 제3 물리 스페이스는 제2 타겟 파일을 저장하는 데 사용되며, 제3 가상 스페이스는 미리 설정된 글로벌 가상 스페이스의 일부이고, 제3 가상 스페이스는 제1 가상 스페이스와 상이하며, 제3 물리 스페이스는 제1 물리 스페이스와 상이하며, 제3 가상 스페이스는 제2 타겟 파일을 관리하는 데 사용된다.
제1 양태 또는 제1 양태의 첫 번째 가능한 구현 방식을 참조하여, 제1 양태의 두 번째 가능한 구현 방식으로, 제1 액세스 요청은 기입 요청이고, 제1 액세스 요청은 기입될 데이터를 더 가지며, 메모리 내의 제1 타겟 파일의 물리 어드레스를 획득하기 위해, 제1 가상 스페이스의 액세스 어드레스에 따라 파일 관리 레지스터를 액세스하는 단계는, 제1 가상 스페이스의 액세스 어드레스가 지시하는 제4 물리 어드레스가 글로벌 파일 페이지 테이블에 따라 획득될 수 없음을 결정하는 단계, 제1 타겟 파일에 물리 페이지를 할당하는 단계, 그리고 할당된 물리 페이지에 제1 액세스 요청 내에 포함된 기입될 데이터를 기입하는 단계를 포함하고, 제4 물리 어드레스는 메모리 내의 물리 어드레스이다.
제1 양태의 두 번째 가능한 구현 방식을 참조하여, 제1 양태의 세 번째 가능한 구현 방식으로, 제1 타겟 파일에 물리 페이지를 할당하는 단계 후에, 글로벌 파일 페이지 테이블 내에, 할당된 물리 페이지의 물리 어드레스를 기록하는 단계를 더 포함한다.
제1 양태의 두 번째 또는 세 번째 가능한 구현 방식을 참조하여, 제1 양태의 네 번째 가능한 구현 방식으로, 제1 가상 스페이스에 대한 정보는 제1 가상 스페이스의 시작 어드레스 및 크기를 포함하고, 제1 액세스 요청은 기입될 데이터의 볼륨을 더 포함하며, 할당된 물리 페이지에 제1 액세스 요청 내에 포함된 기입될 데이터를 기입하는 단계 후에, 파일 액세스 방법은, 제1 가상 스페이스의 액세스 어드레스 및 기입될 데이터의 볼륨에 따라 제1 액세스 요청의 종료 어드레스를 계산하는 단계, 제1 가상 스페이스의 시작 어드레스 및 제1 액세스 요청의 종료 어드레스에 따라 갱신된 제1 가상 스페이스의 크기를 획득하는 단계, 그리고 제1 타겟 파일의 인덱스 노드 내에 갱신된 제1 가상 스페이스의 크기를 기록하는 단계를 더 포함하고, 제1 액세스 요청의 종료 어드레스는 제1 가상 스페이스 내의 어드레스이다.
제2 양태에 따르면, 본 개시의 실시예는 파일 시스템 및 파일을 저장하도록 구성된 메모리, 그리고 메모리 버스를 사용하여 메모리에 연결된 프로세서를 포함하고, 메모리는 비-휘발성 메모리(NVM: non-volatile memory)이고, 프로세서는: 액세스될 제1 타겟 파일을 지시하는 데 사용되는 제1 파일 식별자 및 제1 액세스 요청의 시작 어드레스를 포함하는 제1 액세스 요청을 수신하고, 제1 파일 식별자에 따라 제1 타겟 파일을 관리하는 데 사용되는 제1 가상 스페이스에 대한 정보를 포함하는, 제1 타겟 파일의 인덱스 노드를 획득하며, 제1 가상 스페이스 및 프로세스의 제2 가상 스페이스 사이의 제1 매핑 관계를 확립하고, 다수로 배치된 레지스터로부터, 제2 가상 스페이스의 시작 어드레스에 따라 파일 관리 레지스터로서 액세스될 레지스터를 결정하며, 제1 매핑 관계에 따라 제1 액세스 요청의 시작 어드레스를 제1 가상 스페이스의 액세스 어드레스로 변환하고, 메모리 내의 제1 타겟 파일의 물리 어드레스를 획득하기 위해, 제1 가상 스페이스의 액세스 어드레스에 따라 파일 관리 레지스터를 액세스하도록 구성되고, 제1 가상 스페이스는 메모리 내의 제1 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이고, 제1 물리 스페이스는 제1 타겟 파일을 저장하는 데 사용되며, 제1 가상 스페이스는 미리 설정된 글로벌 가상 스페이스의 일부이고, 글로벌 가상 스페이스는 메모리 내의 제2 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이며, 제1 물리 스페이스는 파일 시스템 내의 모든 데이터를 저장하는 데 사용되고, 제2 가상 스페이스는 프로세스의 사용자 스페이스 내의 연속적인 가상 어드레스 스페이스의 세그먼트이며, 파일 관리 레지스터는 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스를 저장하고, 글로벌 파일 페이지 테이블은 메모리 내의 제1 타겟 파일의 물리 어드레스를 지시하는 데 사용되며, 제1 액세스 요청의 시작 어드레스는 프로세스의 제2 가상 스페이스 내의 어드레스인, 스토리지 디바이스를 제공한다.
제2 양태를 참조하여, 제2 양태의 첫 번째 가능한 구현 방식으로, 프로세서는: 액세스될 제2 타겟 파일을 지시하는 데 사용되는 제2 파일 식별자를 포함하는 제2 액세스 요청을 수신하고, 제2 파일 식별자에 따라, 제2 타겟 파일의 인덱스 노드가 파일 시스템 내에 없다는 것을 결정하며, 파일 시스템 내에서 제2 타겟 파일의 인덱스 노드를 생성하고, 제2 타겟 파일에 제3 가상 스페이스를 할당하며, 제2 타겟 파일의 인덱스 노드에서, 제3 가상 스페이스에 대한 정보를 기록하도록 더 구성되고, 제3 가상 스페이스는 메모리 내의 제3 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이고, 제3 물리 스페이스는 제2 타겟 파일을 저장하는 데 사용되며, 제3 가상 스페이스는 미리 설정된 글로벌 가상 스페이스의 일부이고, 제3 가상 스페이스는 제1 가상 스페이스와 상이하며, 제3 물리 스페이스는 제1 물리 스페이스와 상이하며, 제3 가상 스페이스는 제2 타겟 파일을 관리하는 데 사용된다.
제2 양태 또는 제2 양태의 첫 번째 가능한 구현 방식을 참조하여, 제2 양태의 두 번째 가능한 구현 방식으로, 제1 액세스 요청이 기입 요청인 때, 제1 액세스 요청은 기입될 데이터를 더 포함하며, 프로세서는: 제1 가상 스페이스의 액세스 어드레스가 지시하는 제4 물리 어드레스가 글로벌 파일 페이지 테이블에 따라 획득될 수 없음을 결정하고, 제1 타겟 파일에 물리 페이지를 할당하며, 할당된 물리 페이지에 제1 액세스 요청 내에 포함된 기입될 데이터를 기입하도록 구성되고, 제4 물리 어드레스는 메모리 내의 물리 어드레스이다.
제2 양태의 두 번째 구현 방식을 참조하여, 제2 양태의 세 번째 구현 방식으로, 프로세서는 글로벌 파일 페이지 테이블 내에, 할당된 물리 페이지의 물리 어드레스를 기록하도록 더 구성된다.
제2 양태의 두 번째 또는 세 번째 가능한 구현 방식을 참조하여, 제2 양태의 네 번째 가능한 구현 방식으로, 제1 가상 스페이스에 대한 정보는 제1 가상 스페이스의 시작 어드레스 및 크기를 포함하고, 제1 액세스 요청은 기입될 데이터의 볼륨을 더 포함하며, 프로세서는: 제1 가상 스페이스의 액세스 어드레스 및 기입될 데이터의 볼륨에 따라 제1 액세스 요청의 종료 어드레스를 계산하고, 제1 가상 스페이스의 시작 어드레스 및 제1 액세스 요청의 종료 어드레스에 따라 갱신된 제1 가상 스페이스의 크기를 획득하며, 제1 타겟 파일의 인덱스 노드 내에 갱신된 제1 가상 스페이스의 크기를 기록하도록 더 구성되고, 제1 액세스 요청의 종료 어드레스는 제1 가상 스페이스 내의 어드레스이다.
제3 양태에 따르면, 본 개시의 일 실시예는 비-휘발성 메모리(NVM: non-volatile memory)인 메모리를 기반으로 확립된 파일 시스템을 액세스 하도록 구성된 파일 액세스 장치로서, 액세스될 제1 타겟 파일을 지시하는 데 사용되는 제1 파일 식별자 및 제1 액세스 요청의 시작 어드레스를 포함하는 제1 액세스 요청을 수신하도록 구성된 수신 모듈, 제1 타겟 파일을 관리하는 데 사용되는 제1 가상 스페이스에 대한 정보를 포함하는, 제1 타겟 파일의 인덱스 노드를 제1 파일 식별자에 따라 획득하도록 구성된 획득 모듈, 제1 가상 스페이스 및 프로세스의 제2 가상 스페이스 사이의 제1 매핑 관계를 확립하도록 구성된 매핑 모듈, 다수로 배치된 레지스터로부터, 제2 가상 스페이스의 시작 어드레스에 따라 파일 관리 레지스터로서 액세스될 레지스터를 결정하도록 구성된 결정 모듈, 제1 매핑 관계에 따라 제1 액세스 요청의 시작 어드레스를 제1 가상 스페이스의 액세스 어드레스로 변환하도록 구성된 변환 모듈, 그리고 메모리 내의 제1 타겟 파일의 물리 어드레스를 획득하도록, 제1 가상 스페이스의 액세스 어드레스에 따라 파일 관리 레지스터를 액세스하도록 구성된 액세스 모듈을 포함하고, 제1 가상 스페이스는 메모리 내의 제1 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이고, 제1 물리 스페이스는 제1 타겟 파일을 저장하는 데 사용되며, 제1 가상 스페이스는 미리 설정된 글로벌 가상 스페이스의 일부이고, 글로벌 가상 스페이스는 메모리 내의 제2 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이며, 제1 물리 스페이스는 파일 시스템 내의 모든 데이터를 저장하는 데 사용되고, 제2 가상 스페이스는 프로세스의 사용자 스페이스 내의 연속적인 가상 어드레스 스페이스의 세그먼트이며, 파일 관리 레지스터는 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스를 저장하고, 글로벌 파일 페이지 테이블은 메모리 내의 제1 타겟 파일의 물리 어드레스를 지시하는 데 사용되며, 제1 액세스 요청의 시작 어드레스는 프로세스의 제2 가상 스페이스 내의 어드레스인, 파일 액세스 장치를 제공한다.
제3 양태를 참조하여, 제3 양태의 첫 번째 가능한 구현 방식으로, 수신 모듈은 액세스될 제2 타겟 파일을 지시하는 데 사용되는 제2 파일 식별자를 포함하는 제2 액세스 요청을 수신하도록 더 구성되고, 파일 액세스 장치는: 제2 파일 식별자에 따라, 제2 타겟 파일의 인덱스 노드가 파일 시스템 내에 없다는 것을 결정하도록 구성된 판정 모듈, 파일 시스템 내에서 제2 타겟 파일의 인덱스 노드를 생성하도록 구성된 생성 모듈, 제2 타겟 파일에 제3 가상 스페이스를 할당하도록 구성된 할당 모듈, 그리고 제2 타겟 파일의 인덱스 노드에서, 제3 가상 스페이스에 대한 정보를 기록하도록 구성된 기록 모듈을 더 포함하고, 제3 가상 스페이스는 메모리 내의 제3 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이고, 제3 물리 스페이스는 제2 타겟 파일을 저장하는 데 사용되며, 제3 가상 스페이스는 미리 설정된 글로벌 가상 스페이스의 일부이고, 제3 가상 스페이스는 제1 가상 스페이스와 상이하며, 제3 물리 스페이스는 제1 물리 스페이스와 상이하며, 제3 가상 스페이스는 제2 타겟 파일을 관리하는 데 사용된다.
제3 양태 또는 제3 양태의 첫 번째 가능한 구현 방식을 참조하여, 제3 양태의 두 번째 가능한 구현 방식으로, 제1 액세스 요청은 기입 요청이고, 제1 액세스 요청은 기입될 데이터를 더 가지며, 액세스 모듈은: 제1 가상 스페이스의 액세스 어드레스가 지시하는 제4 물리 어드레스가 글로벌 파일 페이지 테이블에 따라 획득될 수 없음을 결정하고, 제1 타겟 파일에 물리 페이지를 할당하며, 할당된 물리 페이지에 제1 액세스 요청 내에 포함된 기입될 데이터를 기입하도록 구성되고, 제4 물리 어드레스는 메모리 내의 물리 어드레스이다.
제3 양태의 두 번째 가능한 구현 방식을 참조하여, 제3 양태의 세 번째 가능한 구현 방식으로, 기록 모듈은 글로벌 파일 페이지 테이블 내에, 할당된 물리 페이지의 물리 어드레스를 기록하도록 더 구성된다.
제3 양태의 두 번째 또는 세 번째 가능한 구현 방식을 참조하여, 제3 양태의 네 번째 구현 방식으로, 제1 가상 스페이스에 대한 정보는 제1 가상 스페이스의 시작 어드레스 및 크기를 포함하고, 제1 액세스 요청은 기입될 데이터의 볼륨을 더 포함하며, 파일 액세스 장치는: 제1 가상 스페이스의 액세스 어드레스 및 기입될 데이터의 볼륨에 따라 제1 액세스 요청의 종료 어드레스를 계산하고, 제1 가상 스페이스의 시작 어드레스 및 제1 액세스 요청의 종료 어드레스에 따라 갱신된 제1 가상 스페이스의 크기를 획득하며, 제1 타겟 파일의 인덱스 노드 내에 갱신된 제1 가상 스페이스의 크기를 기록하도록 구성된 업데이트 모듈을 더 포함하고, 제1 액세스 요청의 종료 어드레스는 제1 가상 스페이스 내의 어드레스이다.
제4 양태에 따르면, 본 개시의 일 실시예는 프로그램 코드를 저장하는 컴퓨터 판독가능한 스토리지 매체를 포함하는 컴퓨터 프로그램 제품을 제공하고, 프로그램 코드 내의 명령은 상기의 제1 양태의 방법을 수행하는 데 사용된다.
본 개시의 실시예들에서 제공되는 파일 액세스 방법은 메모리에 기반하여 파일 시스템이 확립된 스토리지 디바이스에 적용될 수 있다. 이 방법에 따르면, 스토리지 디바이스는 가상화된 글로벌 가상 스페이스를 사용하여 파일 시스템의 모든 파일을 중앙 집중식으로 관리할 수 있고, 지정된 글로벌 파일 페이지 테이블을 사용하여 파일 시스템에 액세스할 수 있다. 특정 액세스 중에, 스토리지 디바이스는 액세스될 제1 타겟 파일의 파일 식별자에 따라, 메타데이터 내의 제1 타겟 파일의 인덱스 노드를 획득할 수 있고, 스토리지 디바이스는 인덱스 노드 내에 기록된, 제1 가상 스페이스에 관한 정보에 따라 제1 가상 스페이스를 프로세스의 제2 가상 스페이스 상에 매핑할 수 있고, 추가된 파일 관리 레지스터 상에서 어드레싱을 수행할 수 있으며, 여기서 제1 타겟 파일의 인덱스 노드는 글로벌 가상 스페이스 내의 제1 타겟 파일의 제1 가상 스페이스에 관한 정보를 저장한다. 파일 관리 레지스터는 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스를 저장하므로, 제1 가상 스페이스의 시작 어드레스 및 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스에 따라 제1 타겟 파일이 액세스될 수 있다. 본 개시의 실시예들에서, 어드레싱은 새롭게 추가된 파일 관리 레지스터를 사용하여 글로벌 파일 페이지 테이블에 대해 수행된다. 따라서, 파일의 페이지 테이블 엔트리가 프로세스 페이지 테이블에 추가되거나 또는 링크되어야 할 필요가 없으므로, 시스템 오버헤드를 감소시키고 프로세스 페이지 테이블에 대한 부하를 감소시키며, 파일 액세스 효율성을 향상시킨다. 또한, 제1 가상 스페이스는 연속한 스페이스의 세그먼트이다. 따라서, 본 개시의 실시예들에서 설명된 방법에 따르면, 제1 가상 스페이스의 시작 어드레스 및 크기에 관한 정보만이 제1 타겟 파일의 인덱스 노드에 기록될 필요가 있고, 메모리에 저장된 제1 타겟 파일은 제1 가상 스페이스에 관한 기록 정보를 사용하여 계속 액세스될 수 있다.
본 개시의 실시예의 기술적 해결책을 보다 명확하게 설명하기 위해, 실시예를 설명하기 위해 요구되는 첨부 도면을 간단히 설명한다. 명백하게, 다음의 설명에서 첨부된 도면은 단지 본 개시의 일부 실시예를 나타낸다.
도 1은 본 개시의 일 실시예에 따른 응용 시나리오의 개략도이다.
도 2는 본 개시의 일 실시예에 따른 파일 액세스 방법의 순서도이다.
도 3은 본 개시의 일 실시예에 따른 파일 관리 스페이스 매핑의 개략도이다.
도 4는 본 개시의 일 실시예에 따른 페이지 테이블의 개략도이다.
도 5는 본 개시의 일 실시예에 따른 글로벌 파일 페이지 테이블에 액세스하는 개략도이다.
도 6은 본 개시의 일 실시예에 따른 파일 기입 방법의 순서도이다.
도 7은 본 개시의 일 실시예에 따른 다른 파일 액세스 방법의 순서도이다.
도 8은 본 개시의 일 실시예에 따른 파일 액세스 장치의 개략적인 구조도이다.
당업자가 본 개시의 기술적 해결책을 더 잘 이해할 수 있도록 하기 위해, 본 개시의 실시예에서 첨부된 도면을 참조하여 본 개시의 실시예에서 기술적 해결책을 명확하게 설명한다. 명백하게, 설명된 실시예는 본 개시의 실시예의 전부가 아닌 일부에 불과하다.
도 1은 본 개시의 일 실시예에 따른 새로운 비-휘발성 메모리(NVM: Non-Volatile Memory)의 응용 시나리오를 나타낸 도면이다. 도 1에서 설명한 응용 시나리오에서, NVM(200)은 메모리로서 사용된다. 도 1에 도시된 바와 같이, DRAM(Dynamic Random Access Memory)(300)은 메모리 버스를 사용하여 중앙 프로세싱 유닛(CPU: central processing unit)(100)에 연결된다. DRAM(300)은 높은 액세스 속도의 장점을 가진다. CPU(100)는 고속으로 DRAM(300)에 액세스하여 DRAM(300) 내의 임의의 스토리지 유닛에 대한 판독 또는 기입 동작을 수행할 수 있다. 따라서, DRAM은 주로 메인 메모리로서 사용된다. 일반적으로, DRAM(300)은 운영 체제에서 실행되는 다양한 소프트웨어, 입출력 데이터, 외부 스토리지와 교환되는 정보 등을 저장하는 데 사용된다. 그러나, DRAM(300)은 휘발성이다. 컴퓨터의 전원이 꺼지면, DRAM(300)의 정보는 더 이상 저장되지 않는다.
디스크(400)는 데이터를 저장하기 위한 외부 스토리지로서 사용될 수 있다. 물론, 외부 스토리지로서 사용되는 스토리지는 디스크(400)일 수 있거나, 또는 SSD(Solid State Disk)와 같은 비-휘발성 메모리일 수 있다는 것이 이해될 수 있다. 일반적으로, 외부 스토리지로서 사용되는 스토리지 매체는 비-휘발성 특징을 가질 필요가 있다. 컴퓨터의 전원이 꺼지면, 외부 스토리지에 저장된 데이터가 계속 저장된다. 또한, 외부 스토리지는 큰 스토리지 용량을 갖는다.
DRAM(300)과 마찬가지로, 새로운 비-휘발성 메모리(NVM)(200)는 메모리 버스에 직접 연결될 수 있다. CPU(100)는 MMU(memory management unit)(104)을 이용하여 NVM(200)을 액세스하고, NVM(200)으로 데이터를 신속하게 저장하거나 또는 NVM(200)으로부터 데이터를 판독할 수 있다. NVM(200)이 DRAM(300)과 같이, 사용을 위해 메모리 버스에 직접 연결되는 때, 데이터 액세스 레이턴시(latency)가 또한 감소될 수 있다는 것이 이해될 수 있다. 또한, DRAM(300)과 비교하면, NVM(200)은 비-휘발성이므로, 데이터를 더 잘 저장할 수 있다.
본 개시의 실시예에서 설명되는, 메모리 버스에 연결될 수 있는 비-휘발성 메모리는 PCM(Phase Change Memory), RRAM(Resistive Random Access Memory), MRAM(Magnetic Random Access Memory), 및 FRAM(Ferroelectric Random Access Memory)과 같은 새로운 비-휘발성 메모리를 포함할 수 있다는 것을 유의해야 한다. 이러한 모든 새로운 NVM은 높은 액세스 속도와 비-휘발성 특징을 가진다. 또한, 이러한 새로운 NVM은 바이트(Byte)로 어드레싱될 수 있고, 데이터는 비트(bits) 단위로 비-휘발성 메모리에 기입된다.
본 개시의 실시예는 메모리-기반 파일 시스템에 관한 것이다. 본 개시의 실시예에서, NVM(200)은 파일 시스템 및 파일을 저장한다. 당업자는 파일 시스템이 운영 체제에서, 파일 정보의 관리 및 저장을 담당하는, 소프트웨어 구조임을 알 수 있다. 시스템 관점에서, 파일 시스템은 파일 스토리지 디바이스의 스페이스를 구성 및 할당하고 파일의 저장 및 저장된 파일의 보호 및 검색을 담당하는 시스템이다. 파일 시스템은 파일 시스템 인터페이스, 파일을 제어하고 관리하는 데 사용되는 소프트웨어 세트, 및 파일의 데이터와 속성의 세 부분을 포함한다. 파일 시스템의 핵심 개념은 수퍼블록(superblock), 아이노드(inode), 데이터 블록(data block), 디렉토리 블록(directory block), 및 간접 블록(indirection block)을 포함한다. 수퍼블록은 파일 시스템의 전체 정보, 예를 들어, 파일 시스템의 크기를 포함한다. 아이노드는 파일 이름을 제외한 파일의 모든 정보를 포함한다. 파일 이름과 아이노드의 수량은 디렉토리 블록에 함께 저장된다. 디렉토리 엔트리는 파일 이름 및 파일의 아이노드의 수량을 포함한다. 아이노드는 단지 몇 개의 데이터 블록의 스페이스만을 가진다. 더 많은 스페이스가 요구되면, 데이터 블록을 지시하는 포인터 스페이스가 동적으로 할당된다. 이 동적으로 할당된 블록들은 간접 블록이다. 본 개시의 실시예에서, NVM(200)은 파일의 데이터 및 메타데이터를 더 저장할 수 있다.
운영 체제 및 다른 소프트웨어 프로그램이 CPU(100) 내에 설치되므로, CPU(100)는 DRAM(300), 디스크(400), 및 NVM(200)을 액세스할 수 있다. CPU(100)는 CPU 실행 유닛(102) 및 메모리 관리 유닛(MMU)(104)을 포함할 수 있다. CPU 실행 유닛(102)은 CPU(100)의 실행 컴포넌트이고, 구체적으로 프로그램을 실행하도록 구성된다. MMU(104)는 CPU의 메모리 액세스 요청의 처리를 담당하는 컴퓨터 하드웨어이다. MMU(104)는 CPU(100)에서 가상 메모리 및 물리 메모리를 관리하는 데 사용되는, 제어 라인이고, 가상 어드레스 및 물리 어드레스의 매핑 및 하드웨어 메커니즘에 기초한 메모리 액세스 허가의 제공을 담당한다.
본 개시의 본 실시예에서, CPU(100)는 단지 프로세서의 일례에 불과하다는 것이 이해될 수 있다. 프로세서는 CPU(100)일 수 있거나, 다른 ASIC(Application Specific Integrated Circuit)일 수 있거나, 또는 본 개시의 본 실시예를 구현하는 하나 이상의 집적 회로로서 구성될 수 있다.
본 개시의 본 실시예를 더 잘 이해하기 위해, 다음에서는 MMU가 어떻게 가상 어드레스를 메모리의 물리 어드레스 상으로 매핑하는지를 상세하게 설명한다. 먼저, 가상 메모리(virtual memory)의 개념을 간략하게 설명한다. 당업자는 프로그램이 실행을 위해 메모리 내에 설치되어야 한다는 것을 알 수 있다. 그러나, 프로그램 규모가 지속적으로 증가하면, 전체 프로그램을 메모리 내에 수용하기 어렵다. 따라서, 가상 메모리의 개념이 제안된다. 가상 메모리의 기초 아이디어는 프로그램, 데이터, 및 스택의 전체 크기가 물리 메모리의 크기보다 클 수 있고, 운영 체제는 현재 사용되는 프로그램, 데이터 및 스택의 일 부분을 메모리에 저장하며, 현재 사용되지 않는 프로그램, 데이터 및 스택의 다른 부분을 디스크에 저장한다. 예를 들어, 컴퓨터가 단지 4MB의 메모리를 가지면, 컴퓨터가 16MB의 프로그램을 실행해야 하는 때, 운영 체제는 실행을 위해 메모리에 4MB의 프로그램 컨텐츠를 버퍼링하도록, 선택을 통해, 결정할 수 있고, 필요한 경우 메모리 및 디스크 간에 프로그램 조각을 교환할 수 있다. 이런 방식으로, 16MB의 프로그램은 오직 4MB의 메모리를 가진 컴퓨터에서 동작할 수 있다.
당업자는 컴퓨터 시스템에서, 가상 어드레스 스페이스가 프로세스에 의해 액세스될 수 있는 가상 어드레스 범위라는 것을 알 수 있다. 가상 어드레스 스페이스의 크기는 일반적으로 컴퓨터의 명령 세트 아키텍처(명령 세트 아키텍처)에 따라 결정된다. 예를 들어, 32비트 CPU가 제공하는 가상 어드레스 스페이스의 범위는 0 내지 0xFFFFFFFF(4GB)이다. 가상 어드레스 스페이스의 어드레스는 가상 어드레스라고 지칭된다. 물리 어드레스 스페이스 및 물리 어드레스는 가상 어드레스 스페이스 및 가상 어드레스에 대응한다. 물리 어드레스 스페이스는 메모리의 물리 어드레스 범위를 나타낸다. 물리 어드레스 스페이스의 어드레스는 물리 어드레스라고된이다. 일반적으로, 물리 어드레스 스페이스는 가상 어드레스 스페이스보다 작고, 물리 어드레스 스페이스는 가상 어드레스 스페이스에 매핑될 수 있다. 예를 들어, 256M의 메모리를 갖는 32비트 x86 호스트의 경우, 호스트의 가상 어드레스 스페이스 범위는 0 내지 0xFFFFFFFF(4GB)이고 물리 어드레스 스페이스 범위는 0x000000000 내지 0x0FFFFFFF(256MB)이다.
종래 기술에서, 대부분의 기기는 가상 메모리를 사용한다. 가상 어드레스(또는 선형 어드레스로 지칭됨)는 어드레스 버스에 직접 전송되지 않지만, MMU(Memory Management Unit)에 전송되고, MMU는 가상 어드레스를 물리 어드레스로 변환한다. 즉, MMU는 프로그램의 가상 어드레스를 메모리의 물리 어드레스 상으로 매핑하도록 구성된다.
프로그램의 가상 어드레스로부터 메모리의 물리 어드레스 상으로의 매핑을 구현하기 위해, 페이징(paging) 메커니즘이 MMU에 도입된다. 구체적으로, 가상 어드레스 스페이스는 페이지(pages) 단위로 분할되고, 가상 어드레스 스페이스 내의 페이지는 가상 페이지라고 지칭될 수 있다. 따라서, 물리 어드레스 스페이스는 또한 페이지 단위로 분할되고, 물리 어드레스 스페이스 내의 페이지는 물리 페이지(또는 물리 페이지 프레임으로 지칭됨)로 지칭될 수 있다. 가상 페이지의 크기는 물리 페이지의 크기와 동일하다.
페이지 개념의 도입에 기초하여, MMU는 가상 어드레스를 다중 레벨 페이지 테이블 형식으로 메모리 내의 물리 어드레스 상에 매핑한다. 구체적으로, 제2 레벨 관리 모드에서, 매핑 방식은 페이지 디렉토리 및 페이지 테이블에 대한 순차적인 쿼리를 포함한다. 여러 페이지 테이블의 기본 어드레스가 페이지 디렉토리에 저장되고, 여러 페이지 테이블 엔트리가 각 페이지 테이블에 저장된다. 가상 어드레스에 대응하는 물리 페이지의 물리 기본 어드레스는 페이지 테이블 엔트리에 기록된다.
당업자는 가상 어드레스가 물리 어드레스를 찾는 데 사용되는 정보를 포함한다는 것을 알 수 있다. 가상 어드레스의 크기는 4바이트(32비트)이다. 일반적으로, 가상 어드레스는 세 부분으로 분할될 수 있다.
22번째 비트 내지 31번째 비트: 10비트(최상위 10비트)는 페이지 디렉토리 내의 인덱스이다.
12번째 비트 내지 21번째 비트: 10비트는 페이지 테이블 내의 인덱스이다.
0번째 비트 내지 11번째 비트: 12비트(최하위 12비트)는 페이지 내 오프셋이다.
당업자는 각 프로세스가 자신의 전용 가상 어드레스 스페이스 및 어드레싱을 위해 사용되는 전용 페이지 디렉토리를 가지며, 시스템 내의 모든 프로세스는 커널의 가상 어드레스 스페이스 및 커널의 페이지 디렉토리를 공유하고, 각 프로세스는 시스템 호출에 의해 커널 내에 트래핑(trap)될 수 있다. 페이지 디렉토리의 기본 어드레스를 저장하는 데 사용되는 레지스터(CR3)가 CPU 내에 존재한다. 프로세스 스케줄링 중에, 레지스터(CR3)는 현재 프로세스의 페이지 디렉토리의 기본 어드레스를 지시한다. 프로세스 스위칭 중에, 레지스터(CR3)는 현재 지시하는 페이지 디렉토리의 기본 어드레스를 스위칭한다. 물리 어드레스로 변환될 가상 어드레스에 대해, CPU는 먼저 레지스터(CR3) 내의 값에 따라 페이지 디렉토리가 위치하는 물리 페이지를 찾는다. 그러면, CPU는 가상 어드레스의 22번째 비트부터 31번째 비트까지의 10비트(최상위 10비트)의 값을 인덱스로서 사용하여, 대응하는 페이지 디렉토리 엔트리(PDE: page directory entry)를 찾고, 가상 어드레스의 12번째 비트부터 21번째 비트까지의 10비트의 값을 인덱스로서 사용하여, 페이지 테이블의 물리 어드레스에 따라 페이지 테이블에서 대응하는 페이지 테이블 엔트리(PTE: page table entry)를 찾으며, 여기서 가상 어드레스에 대응하는 페이지 테이블의 물리 어드레스는 PDE 내에 존재한다. 가상 어드레스에 대응하는 물리 페이지의 물리 어드레스가 페이지 테이블 엔트리 내에 존재한다. 마지막으로, CPU는 가상 어드레스의 최하위 12비트, 즉, 페이지 내 오프셋과 물리 페이지의 물리 어드레스, 즉 가상 어드레스에 대응하는 물리 어드레스를 사용하여 획득한다.
일반적으로, 하나의 페이지 디렉토리는 1024개의 엔트리를 가지며, 가상 어드레스의 최상위 10비트는 1024개의 엔트리(2의 10제곱은 1024와 동일)를 인덱싱하기 위해 정확하게 사용될 수 있다. 하나의 페이지 테이블은 또한 1024개의 엔트리를 가지며, 가상 어드레스의 중간 부분에 있는 10비트는 정확히 1024 개의 페이지 테이블 엔트리를 인덱싱하기 위해 사용된다. 페이지 내 오프셋으로서 사용되는, 가상 어드레스의 최하위 12비트(2의 12제곱은 4096과 동일함)는 4KB 물리 페이지, 즉, 하나의 물리 페이지 내의 각 바이트의 인덱싱을 위해 정확히 사용될 수 있다.
당업자는 32비트 포인터의 어드레싱 범위가 0x00000000에서 0xFFFFFFFF(4GB)까지임을 알 수 있다. 즉, 하나의 32비트 포인터는 전체 4GB 어드레스 스페이스 내의 각 바이트를 어드레싱하는 데 사용될 수 있다. 하나의 페이지 테이블 엔트리가 가상 페이지 및 물리 메모리 사이의 매핑을 담당할 수 있다. 하나의 페이지 테이블은 1024개의 엔트리를 가지며, 하나의 페이지 테이블은 1024*4kB = 4MB 어드레스 스페이스의 매핑을 담당할 수 있다. 하나의 페이지 디렉토리 엔트리는 하나의 페이지 테이블에 대응한다. 하나의 페이지 디렉토리는 1024개의 페이지 테이블에 대응하는 1024개의 엔트리를 가진다. 각 페이지 테이블은 4MB 어드레스 스페이스의 매핑을 담당하고, 1024개의 페이지 테이블은 1024*4MB = 4GB 어드레스 스페이스의 매핑을 담당한다. 하나의 프로세스는 하나의 페이지 디렉토리를 가진다. 따라서, 페이지 디렉토리 및 페이지 테이블은, 페이지 단위로, 4GB 어드레스 스페이스 내의 각 페이지와 물리 메모리 간의 매핑을 보장할 수 있다.
각 프로세스는 자신의 4GB 어드레스 스페이스, 즉, 0x00000000에서 0xFFFFFFFF까지를 가진다. 각 프로세스의 가상 어드레스로부터 메모리의 물리 어드레스로의 매핑은 프로세스의 페이지 디렉토리 및 페이지 테이블을 사용하여 구현된다. 각 프로세스는 자신의 페이지 디렉토리 및 페이지 테이블을 가지므로, 각 프로세스의 어드레스 스페이스 상으로 매핑된 물리 메모리가 상이하다. 서로 상이한 프로세스가 일반적으로 서로 상이한 물리 페이지에 대응하기 때문에, 동일한 가상 어드레스에서의 두 프로세스(두 프로세스 모두에 대한 가상 어드레스에 매핑된 물리 메모리가 존재하면)의 값은 일반적으로 상이하다.
상기에서는 MMU에 의해 프로그램의 가상 어드레스를 메모리 내의 물리 어드레스 상에 매핑하는 프로세스를 상세히 설명한다. 본 개시의 실시예에서, NVM(200)은 메모리로서 사용되고, NVM(200)은 영구적으로 데이터를 저장할 수 있기 때문에, 파일 시스템은 NVM(200)에 기반하여 확립될 수 있고, 파일 시스템 내의 메타데이터 및 파일 데이터는 메모리 NVM(200) 내에 직접 저장될 수 있다. MMU(104)가 가상 어드레스 및 NVM(200) 내의 물리 어드레스를 매핑할 수 있으므로, CPU(100)는 NVM(200) 내의 파일 시스템에 직접 액세스할 수 있다.
도 1에 도시된 적용 시나리오는, 파일 시스템이 메모리에 기반하여 확립된 스토리지 디바이스에 적용될 수 있다는 것이 이해될 수 있다. 본 개시의 실시예에서, 스토리지 디바이스는 파일 시스템이 컴퓨터, 서버, 또는 스토리지 어레이와 같은 메모리에 기반하여 확립되는 디바이스를 포함할 수 있다. 본 개시의 실시예의 응용 시나리오는 여기서 제한되지 않는다. 다음은 도 1에 도시된 응용 시나리오를 참조하여 본 개시의 실시예에서의 파일 액세스 방법을 상세하게 설명한다. 다르게 명시하지 않는 한, 본 개시의 본 실시예에서 기술된 메모리는 NVM이며, 구체적으로 도 1의 NVM(200)을 지칭할 수 있다.
도 2는 본 개시의 일 실시예에 따른 파일 액세스 방법의 순서도이다. 이 방법은 도 1에 도시된 적용 시나리오에 적용될 수 있다. 이 방법은 파일 시스템이 스토리지 디바이스, 컴퓨터, 또는 서버와 같은 메모리에 기초하여 확립되는 디바이스 내의 프로세서에 의해 수행될 수 있다. 예를 들어, 이 방법은 도 1에 도시된 CPU(100)에 의해 수행될 수 있다. 다음은 도 1을 참조하여 도 2의 방법을 상세히 설명한다. 도 2에 도시된 바와 같이, 방법은 다음의 단계들을 포함할 수 있다.
단계(201)에서, CPU(100)는 제1 액세스 요청을 수신하고, 여기서 제1 액세스 요청은 제1 파일 식별자 및 제1 액세스 요청의 시작 어드레스를 포함하고, 제1 파일 식별자는 액세스될 제1 타겟 파일을 지시하는 데 사용된다. 실제 응용에서, 파일 식별자는 예를 들어, File_1.doc와 같은 파일 이름일 수 있다. 파일 식별자는 파일 시스템 내에서 파일을 식별하기 위한 고유 식별자이다. 본 개시의 실시예에서 제공된 파일 시스템은 바이트 단위로 어드레싱될 수 있는 새로운 NVM에 기반하여 확립되기 때문에, CPU(100)는 메모리 버스를 사용하여 NVM에 직접 액세스할 수 있다. 제1 액세스 요청의 시작 어드레스는 액세스될 제1 타겟 파일의 데이터의 시작 위치를 결정하는 데 사용된다. 본 개시의 실시예에서, 제1 액세스 요청의 시작 어드레스는 프로세스의 가상 어드레스 스페이스 내의 가상 어드레스이다.
단계(205)에서, CPU(100)는 제1 타겟 파일을 관리하는 데 사용되는 제1 가상 스페이스에 대한 정보를 포함하는 제1 타겟 파일의 인덱스 노드를 제1 파일 식별자에 따라 획득한다. 제1 가상 스페이스는 메모리의 제1 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스고, 제1 물리 스페이스는 제1 타겟 파일을 저장하는 데 사용된다. 제1 가상 스페이스는 미리 설정된 글로벌 가상 스페이스의 일부이고, 글로벌 가상 스페이스는 메모리 내의 제2 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이며, 제2 물리 스페이스는 파일 시스템 내의 모든 데이터를 저장하는 데 사용된다.
본 개시의 실시예에서, 파일 시스템 내의 모든 데이터는 NVM(200)에 저장될 수 있다. CPU(100)가 메모리 버스를 이용하여 NVM(200)을 직접 액세스할 수 있기 때문에, NVM(200)의 스페이스가 물리 페이지의 형태로 관리될 수 있다. 파일 시스템은 다수의 파일을 포함한다. 따라서, 명확한 설명을 위해, 본 개시의 본 실시예에서, 전체 파일 시스템의 데이터를 저장하는 데 사용되는 메모리 스페이스가 제2 물리 스페이스로서 지칭되고, NVM(200) 내의 제1 타겟 파일을 저장하는 데 사용되는 스페이스가 제1 물리 스페이스로서 지칭된다. 제1 물리 스페이스는 비 연속적인 물리 스페이스일 수 있음이 이해될 수 있다. 실제 어플리케이션에서, 제1 물리 스페이스는 다수의 비 연속적인 물리 페이지를 포함할 수 있고, 제1 타겟 파일의 데이터는 다수의 물리 페이지에 저장된다. 본 개시의 본 실시예에서, 파일 액세스 효율을 향상시키기 위해, CPU(100)는 가상화된 글로벌 가상 스페이스에 따라 파일 시스템 전체를 관리할 수 있다. 글로벌 가상 스페이스는 제2 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스다. 따라서, 파일들을 저장하는 데 사용되는 NVM(200) 내의 물리 스페이스는 가상화된 연속적인 글로벌 가상 스페이스를 사용하여 연속적으로 액세스될 수 있다. 구체적으로, CPU(100)는 제1 파일 식별자에 따라 제1 타겟 파일의 인덱스 노드를 획득하도록, 제1 파일 식별자에 따라 파일 시스템의 메타데이터를 검색한다. 당업자는 메타데이터가 파일 데이터를 설명하는 데 사용되는 데이터를 참조한다는 것을 알 수 있다. 예를 들어, 메타데이터는 파일의 위치 및 크기를 설명하는 데 사용되는 정보를 포함한다. 본 개시의 실시예에서, 제1 타겟 파일의 인덱스 노드는 제1 타겟 파일을 관리하는 데 사용되는 제1 가상 스페이스에 관한 정보를 포함한다. 제1 가상 스페이스는 글로벌 가상 스페이스의 일부이고 제1 타겟 파일을 저장하는 데 사용되는 메모리 내의 제1 물리 스페이스에 따라 가상화된 연속 어드레스 스페이스이다. 제1 가상 스페이스에 관한 정보는 구체적으로 제1 가상 스페이스의 시작 어드레스와 제1 가상 스페이스의 크기(size)를 포함할 수 있다는 것이 이해될 수 있다. 제1 가상 스페이스의 시작 어드레스는 글로벌 가상 스페이스 내의 제1 타겟 파일의 시작 어드레스이다. 제1 가상 스페이스의 크기는 제1 타겟 파일의 가상 크기이고, 제1 가상 스페이스의 크기는 제1 타겟 파일의 크기보다 크거나 또는 동일할 수 있다.
해결책을 보다 명확하게 설명하기 위해, 다음은 도 3을 참조하여 본 개시의 실시예에 있어서의 제1 가상 스페이스 및 제1 물리 스페이스를 상세히 설명한다. 도 3은 본 개시의 일 실시예에 따른 파일 관리 스페이스 매핑의 개략도이다. 도 3에 도시된 바와 같이, 제1 타겟 파일은 NVM(200)에 네 개의 비 연속적인 물리 페이지(도 3에서 음영 부분으로서 도시된 네 개의 물리 페이지 참조)에 저장되고, 설명의 편의상, 제1 타겟 파일을 저장하는 데 사용되는 네 개의 물리 페이지는 네 개의 물리 스페이스(도 3에서는 도시되지 않음)로서 지칭된다. 제1 가상 스페이스는 제1 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스의 세그먼트이다. 제1 가상 스페이스의 크기는 제1 물리 스페이스의 크기보다 작지 않다는 것이 이해될 수 있다. 제1 가상 스페이스는 글로벌 가상 스페이스의 일부이다. 글로벌 가상 스페이스는 파일 시스템 내의 모든 파일을 관리하는 데 사용되는 가상 스페이스를 포함한다. 예를 들면, 글로벌 가상 스페이스는 제1 타겟 파일(File_1)을 관리하는 데 사용되는 제1 가상 스페이스를 포함하고, 제2 타겟 파일(File_2)을 관리하는 데 사용되는 제2 가상 스페이스 및 다른 파일을 관리하는 데 사용되는 다른 가상 스페이스(이 도면에서는 도시되지 않음)를 더 포함한다. 설명의 편의상, 다음은 설명을 위한 예로서 제1 가상 스페이스를 사용한다. 제1 타겟 파일(File_1)을 관리하려면 제1 가상 스페이스의 크기가 첫 번째 물리 스페이스의 크기와 같은 예가 사용된다. 제1 가상 스페이스에는 네 개의 가상 페이지가 있다. 각 가상 페이지의 크기는 메모리의 물리 페이지의 크기와 동일하다. 예를 들어, 가상 페이지의 크기 및 물리 페이지의 크기는 모두 4K일 수 있다. 제1 가상 스페이스의 네 개의 가상 페이지는 각각 제1 타겟 파일(File_1)의 데이터(예를 들어, File_1-1, File_1-2, File_1-3, 및 File_1-4)를 저장하는 데 사용되는 네 개의 물리 페이지를 가상화하는 데 사용되고, 메모리 내의 네 개의 물리 페이지 상에 각각 매핑된다. 본 개시의 본 실시예에서, 제1 가상 스페이스의 가상 페이지 및 메모리 내의 물리 페이지 간의 매핑은 글로벌 파일 페이지 테이블을 사용여 구현될 수 있다.
설명의 편의상, 본 개시의 본 실시예에서, 파일 시스템의 데이터를 저장하는 데 사용되는 메모리 내의 스페이스는 제2 물리 스페이스로서 지칭된다. 하나의 경우에, 메모리가 파일 시스템의 데이터만을 저장하는 데 사용될 수 있고, 파일 시스템에 속하지 않는 데이터가 도 1에 도시된 DRAM(300) 및 디스크(400)를 사용하여 액세스될 수 있다는 것이 이해될 수 있다. 이 경우에서, 제2 물리 스페이스는 NVM(200)의 전체 스페이스일 수 있다. 다른 경우에서, NVM(200)은 파일 시스템의 데이터를 저장하는 데 사용될 뿐만 아니라 파일 시스템에 속하지 않는 데이터를 저장하는 데에도 사용될 수 있다. 이 경우에서, 제2 물리 스페이스 이외에, 메모리는 파일 시스템에 속하지 않는 데이터를 저장하는 데 사용되는 물리 스페이스를 더 포함할 수 있다. 따라서, 여기에 제한이 없으며, 본 개시의 실시예에서, 파일 시스템의 데이터를 저장하는 데 사용되는 제2 물리 스페이스만이 기술된다.
단계(210)에서, CPU(100)는 프로세스의 제1 가상 스페이스 및 제2 가상 스페이스 간의 제1 매핑 관계를 확립한다. 당업자는 프로세스가 운영 체제의 구조적 기반이고, 프로세스가 독립 기능을 가진 프로그램의 실행중인 활동으로서, 데이터 세트에 관한 실행중인 활동이며, 일 회의 프로그램의 실행으로서 간주될 수 있다는 것을 알 수 있다. 커널은 운영 체제의 핵심이고, 운영 체제의 가장 기본적인 기능을 제공한다. 커널은 운영 체제 작업의 기초이고 시스템의 프로세스 및 메모리 관리를 담당한다. 각 프로세스는 자신의 가상 어드레스 스페이스 및 어드레싱에 사용되는 전용 페이지 디렉토리를 갖는다. 또한, 각 프로세스는 시스템 호출에 의해 커널 내에 트랩핑될 수 있다. 따라서, 시스템 내의 모든 프로세스는 커널의 가상 어드레스 스페이스 및 커널의 페이지 디렉토리를 공유한다. 임의의 프로세스가 커널의 가상 어드레스 스페이스를 액세스해야 하는 때, 커널의 페이지 디렉토리 내의 페이지 테이블의 기본 어드레스는 프로세스의 페이지 디렉토리 내로 복사되어야 한다. 설명의 편의상, 본 개시의 실시예에서 설명을 위해 하나의 프로세스가 예로서 사용된다.
CPU(100)가 메모리 버스를 사용하여 메모리 내의 제1 타겟 파일을 액세스 할 수 있게 하고, 운영 체제가 파일 시스템을 액세스하는 때 시스템 호출로 인한 파일 액세스 효율이 감소되는 것을 방지하며, 사용자 모드 내의 파일을 계속 액세스하기 위해, 본 개시의 본 실시예에서, 제1 가상 스페이스는 제1 타겟 파일을 액세스하는 프로세스의 제2 가상 스페이스 상으로 매핑될 수 있다. 제2 가상 스페이스는 프로세스의 사용자 스페이스 내의 연속적인 가상 어드레스 스페이스의 세그먼트이다. 당업자는 운영 체제에서 가상 메모리가 일반적으로 두 부분, 즉 사용자 스페이스와 커널 스페이스로 분할된다는 것을 알 수 있다. 커널 및 드라이버와 같은 핵심 소프트웨어가 커널 스페이스에서 실행되고, 일반 응용 프로그램이 사용자 스페이스에서 실행된다. 사용자 스페이스는 모든 프로세스가 액세스할 수 있는 스페이스다. 사용자 스페이스에서 실행되는 프로그램은 낮은 권한 레벨을 갖고, 프로그램에 의해 사용되도록 허용된 일부 시스템 리소스만 볼 수 있다. 커널 스페이스에서 실행되는 프로그램은 높은 권한 레벨을 갖고, 하드웨어 장치를 액세스할 수 있는 모든 권한을 가진다.
구체적으로, 도 3에 도시된 바와 같이, 제1 타겟 파일을 관리하는 데 사용된 제1 가상 스페이스는 프로세스의 사용자 스페이스 내의 제2 가상 스페이스 상으로 매핑될 수 있으며, 여기서 제2 가상 스페이스는 제1 가상 스페이스보다 크지 않다. 설명의 편의상, 본 개시의 실시예에서, 제1 가상 스페이스 및 제2 가상 스페이스 간의 매핑 관계는 제1 매핑 관계로서 지칭된다. 매핑 중에, 하나의 경우에서, 제1 가상 스페이스는 제1 가상 스페이스의 시작 어드레스와 크기 및 미리 설정된 매핑 오프셋에 따라 제2 가상 스페이스 상으로 매핑될 수 있다. 이 매핑 방식에서, 제1 가상 스페이스의 크기는 제2 가상 스페이스의 크기와 동일하지만, 제1 가상 스페이스의 시작 어드레스는 제2 가상 스페이스의 시작 어드레스와 상이하고, 시작 어드레스들 간의 차이는 매핑 오프셋이다. 이 경우에서, 제1 가상 스페이스의 시작 어드레스 및 미리 설정된 매핑 오프셋에 따라 제2 가상 스페이스의 시작 어드레스가 계산될 수 있다. 다른 경우에서, 제1 가상 스페이스는 제1 가상 스페이스의 시작 어드레스 및 크기에 따라 제2 가상 스페이스 상으로 직접 매핑될 수 있다. 이 매핑 방식에서, 제1 가상 스페이스의 시작 어드레스는 제2 가상 스페이스의 시작 어드레스와 동일하고, 제1 가상 스페이스의 크기는 제2 가상 스페이스의 크기와 동일하다. 즉, 이 매핑 방식에서, 매핑 오프셋은 0이라고 간주될 수 있다. 실제 응용에서, 제1 가상 스페이스 및 제2 가상 스페이스 간의 제1 매핑 관계가 확립된 후에, 제2 가상 스페이스의 시작 어드레스를 지시하는 포인터가 프로세스로 복귀될 수 있다.
단계(215)에서, CPU(100)는 다수로 배치된 레지스터로부터, 제2 가상 스페이스의 시작 어드레스에 따라 액세스될 파일 관리 레지스터를 결정하고, 여기서 파일 관리 레지스터는 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스를 저장하며, 글로벌 파일 페이지은 메모리 내의 제1 타겟 파일의 물리 어드레스를 지시하는 데 사용된다. 상기에서 설명된 바와 같이, 사용자 모드로 동작하는 프로세스가 메모리를 액세스해야 하면, 프로세스의 사용자 스페이스 내의 가상 어드레스는 MMU를 사용하여 메모리 내의 물리 어드레스로 변환되어야 한다. 본 개시의 본 실시예에서, 다수의 레지스터가 CPU(100) 내에 배치되어 프로세스 페이지 테이블의 부하를 감소시키고, 시스템 호출에 의해 야기되는 시스템 부하를 감소시킨다. 기존의 레지스터(CR0) 내지 레지스터(CR3) 이외에, CPU(100)는 파일 시스템을 관리하기 위해 특별히 사용되는 레지스터를 더 포함한다. 설명의 편의상, 본 개시의 본 실시예에서, 파일 시스템을 관리하기 위해 특별히 사용되는 레지스터는 파일 관리 레지스터로서 지칭된다. 본 개시의 본 실시예에서, 레지스터(CR3)는 프로세스 페이지 테이블의 페이지 디렉토리의 기본 어드레스를 저장한다. 파일 관리 레지스터는 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스를 저장한다. 프로세스 페이지 테이블의 페이지 디렉토리의 기본 어드레스는 프로세스 페이지 테이블의 페이지 디렉토리의 시작 물리 어드레스를 참조한다. 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스는 글로벌 파일 페이지 테이블의 페이지 디렉토리의 시작 물리 어드레스를 참조한다. 글로벌 파일 페이지 테이블은 메모리 내의, 파일 시스템 내의 모든 파일의 물리 어드레스를 지시하는 데 사용된다.
본 개시의 본 실시예에서, 파일 시스템에 액세스하는 모든 프로세스는 NVM(200) 내의 파일 시스템을 액세스하기 위해 배치된 파일 관리 레지스터를 사용해야 한다. 구체적으로, 파일 시스템을 액세스하는 모든 프로세스는 파일 관리 레지스터에 액세스하여 글로벌 가상 스페이스의 가상 어드레스를 NVM(200)의 스페이스 내의 물리 어드레스로 변환한다. 파일 시스템에 액세스하지 않는 프로세스는 파일 시스템의 데이터를 저장하는 데 사용되는 스페이스를 제외하고 DRAM(300) 또는 NVM(200) 내의 다른 스페이스에 대한 액세스를 구현하도록 기존 레지스터(CR3)를 사용해야 한다. 실제 응용에서, 액세스될 레지스터는 액세스될 사용자 스페이스의 시작 어드레스에 따라 결정될 수 있다. 예를 들면, 액세스될 사용자 스페이스의 시작 어드레스가 0x00000000에서 0xF0000000까지의 범위 내에 있으면, 액세스될 레지스터가 레지스터(CR3)인 것으로 결정되고, 액세스될 사용자 스페이스의 시작 어드레스가 0xF0000000에서 0xFFFFFFFF까지의 범위 내에 있으면, 액세스될 레지스터가 파일 관리 레지스터인 것으로 결정된다. 구체적으로, 이 단계에서, CPU(100) 내의 메모리 관리 유닛(MMU)(104)은 다수로 배치된 레지스터들로부터, 액세스될 레지스터를 제2 가상 스페이스의 시작 어드레스에 따라 파일 관리 레지스터로서 결정할 수 있다. 파일 관리 레지스터는 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스를 저장한다. 따라서, 이 단계에서, 글로벌 파일 페이지 테이블은 NVM(200) 내의 제1 타겟 파일의 물리 어드레스를 지시할 수 있다.
본 개시의 본 실시예를 보다 명확하게 설명하기 위해, 다음은 도 4를 참조하여 본 개시의 본 실시예에서의 글로벌 파일 페이지 테이블을 설명한다. 도 4는 본 개시의 일 실시예에 따른 페이지 테이블의 개략도이다. 도 4에 도시된 바와 같이, 본 개시의 본 실시예에서, 적어도 레지스터(CR3)(1042) 및 파일 관리 레지스터(1044)는 CPU(100) 내에 배치된다. MMU(104)는 레지스터(CR3)(1042)를 액세스하여 프로세스 페이지 테이블(1046)을 액세스할 수 있고, MMU(104)는 파일 관리 레지스터(1044)를 액세스하여 글로벌 파일 페이지 테이블(1048)을 액세스할 수 있다. 레지스터(CR3)(1042)는 프로세스 페이지 테이블(1046)의 페이지 디렉토리의 기본 어드레스를 저장하고, 파일 관리 레지스터(1044)는 글로벌 파일 페이지 테이블(1048)의 페이지 디렉토리의 기본 어드레스를 저장한다. 프로세스 페이지 테이블(1046)은 DRAM의 스페이스(1047) 내의 물리 페이지의 물리 어드레스를 지시하는 데 사용된다. 글로벌 파일 페이지 테이블(1048)은 NVM의 스페이스(1049) 내의 물리 페이지의 물리 어드레스를 지시하는 데 사용된다. 프로세스 페이지 테이블(1046) 및 글로벌 파일 페이지 테이블(1048)은 단일 레벨 페이지 테이블 또는 다중 레벨 페이지 테이블일 수 있다. 예를 들어, 도 4에 도시된 바와 같이, 프로세스 페이지 테이블(1046)은 페이지 디렉토리, 페이지 미들(middle) 디렉토리(PMD: page middle directory), 및 페이지 테이블(PT: page table)을 포함할 수 있고, 글로벌 파일 페이지 테이블(1048)은 페이지 디렉토리, 페이지 상위 디렉토리(PUD: page upper directory), 페이지 미들 디렉토리(PMD), 및 페이지 테이블을 포함할 수 있다. 프로세스 페이지 테이블(1046)의 페이지 테이블(PT) 내의 페이지 테이블 엔트리(PTE: page table entry)는 DRAM의 스페이스(1047) 내의 물리 페이지를 지시하는 물리 어드레스를 포함하고, 글로벌 파일 페이지 테이블(1048)의 페이지 테이블(PT) 내의 페이지 테이블 엔트리는 NVM의 스페이스(1049) 내의 물리 페이지를 지시하는 물리 어드레스를 포함한다.
단계(220)에서, CPU(100)는 제1 매핑 관계에 따라 제1 액세스 요청의 시작 어드레스를 제1 가상 스페이스의 액세스 어드레스로 변환한다. 상기에서 설명된 바와 같이, 본 개시의 본 실시예에서, 파일 액세스 효율을 향상시키기 위해, 파일 시스템의 모든 데이터를 저장하는 데 사용된 제2 물리 스페이스에 따라 가상화된 글로벌 가상 스페이스는 연속적인 어드레스 스페이스의 세그먼트이고, 지정된 글로벌 가상 스페이스를 사용하여 파일을 액세스하여 파일의 여러 개별 물리 페이지에 대해 연속적인 액세스 동작이 수행될 수 있다. 특정 액세스 중에, 제1 타겟 파일의 제1 가상 스페이스의 어드레스는 파일 관리 레지스터에 따라 NVM(200) 내의 제1 타겟 파일의 제1 물리 스페이스의 물리 어드레스로 변환될 수 있다. 실제 응용에서, 프로세스의 프로세싱 중에, 액세스될 레지스터는 프로세스의 가상 어드레스 스페이스에 따라 결정되어야 하고, 파일 관리 레지스터는 파일 시스템의 글로벌 가상 스페이스의 가상 어드레스를 NVM(200) 내의 파일 시스템의 물리 어드레스로 변환한다. 따라서, 이 단계에서, 제2 가상 스페이스의 어드레스는 제1 가상 스페이스의 어드레스로 변환되어야 한다. 특정 구현 예에서, 제1 액세스 요청의 시작 어드레스는 프로세스의 가상 스페이스 내의 어드레스이다. 따라서, 제1 액세스 요청의 시작 어드레스는 제2 가상 스페이스 내의 어드레스일 수 있다. 이 단계에서, 제1 가상 스페이스의 액세스 어드레스는 제1 액세스 요청의 시작 어드레스 및 지정된 매핑 오프셋에 따라 결정될 수 있다. 지정된 매핑 오프셋이 0이면, 제1 가상 스페이스의 시작 어드레스는 제2 가상 스페이스의 시작 어드레스와 동일하다는 것이 이해될 수 있다.
단계(225)에서, CPU(100)는 메모리 내의 제1 타겟 파일의 물리 어드레스를 획득하기 위해, 제1 가상 스페이스의 액세스 어드레스에 따라 파일 관리 레지스터를 액세스한다. 다음은 도 5을 참조하여 이 단계를 상세하게 설명한다. 도 5는 본 개시의 일 실시예에 따라 글로벌 파일 페이지 테이블을 액세스하는 개략도이다. 구체적으로, 도 5에 도시된 바와 같이, CPU(100) 내의 MMU(104)는 파일 관리 레지스터(1044)를 액세스하여 글로벌 파일 페이지 테이블(예를 들어, 도 4에 도시된 글로벌 파일 페이지 테이블(1048))을 액세스할 수 있다. 설명의 편의상, 제1 가상 스페이스의 액세스 어드레스가 32비트 가상 어드레스인 예가 도 5의 설명을 위해 사용된다.
도 5에 도시된 바와 같이, 글로벌 파일 페이지 테이블은 페이지 디렉토리(501) 및 페이지 테이블(502)을 포함할 수 있다. 특정 액세스 중에, MMU(104)는 파일 관리 레지스터를 액세스하여 글로벌 파일 페이지 테이블의 페이지 디렉토리(501)의 기본 어드레스를 획득할 수 있고, 페이지 디렉토리(501)의 기본 어드레스를 시작 어드레스로 사용하여 그리고 제1 가상 스페이스의 액세스 어드레스의 최상위 10비트(제22 비트에서 제31비트까지)를 오프셋으로서 사용하여 페이지 디렉토리(501) 내의 페이지 디렉토리 엔트리(5011)를 탐색할 수 있다. 페이지 디렉토리 엔트리(5011)는 페이지 테이블(502)의 시작 물리 어드레스를 포함하고, 제1 가상 스페이스의 액세스 어드레스의 중간 10비트(제12 비트에서 제21 비트까지)를 오프셋으로서 사용하여 페이지 테이블(502)의 시작 물리 어드레스에 따라 페이지 테이블(502)에서 페이지 테이블 엔트리(5021)가 발견된다. 페이지 테이블 엔트리(5021)는 메모리 내의 제1 타겟 파일의 물리 페이지(503)의 시작 물리 어드레스를 저장한다. 제1 가상 스페이스의 액세스 어드레스의 최하위 12비트(제0 비트에서 제11 비트까지)를 오프셋으로서 사용하여 물리 페이지(503)의 시작 물리 어드레스에 따라 물리 페이지(503)에서 액세스될 라인(line)(5031)이 발견된다. 라인(5031)의 어드레스는 메모리 내의 액세스될 제1 타겟 파일의 시작 물리 어드레스이다.
메모리 액세스 중에, 라인(line)을 입도(granularity)로서 사용하여 데이터 판독/기록이 수행될 수 있으므로, 액세스될 라인(line)(5031)이 결정된 후, 액세스의 시작 위치의 물리 어드레스에 따라 액세스 동작이 NVM(200)에 대해 수행될 수 있다. 예를 들어, 제1 액세스 요청이 판독 요청이면, 물리 페이지(503) 내의 라인(5031)의 위치가 판독될 데이터의 시작 위치로서 사용될 수 있고, 판독될 데이터의 시작 위치의 물리 어드레스에 따라 데이터 판독 명령이 메모리 컨트롤러에 전송되어, 메모리 컨트롤러가 제1 타겟 파일에 대한 판독 동작을 수행하도록 지시한다. 제1 액세스 요청이 기입 요청이면, 라인(5031)의 위치가 새롭게 기입될 새로운 데이터의 시작 위치로서 사용될 수 있고, 기입될 새로운 데이터의 시작 위치의 물리 어드레스에 따라 데이터 기입 명령이 메모리 컨트롤러에 전송되어, 메모리 컨트롤러가 제1 타겟 파일에 대한 기입 동작을 수행하도록 지시한다. CPU(100)는 제1 가상 스페이스의 액세스 어드레스에 따라 파일 관리 레지스터를 액세스하여 메모리 내의 제1 타겟 파일의 물리 어드레스를 획득할 수 있으므로, 제1 타겟 파일을 액세스하는 것의 목적을 달성한다는 것을 도 5에 도시된 실시예로부터 알 수 있다.
실제 응용에서, 메모리 스페이스를 유연하게 할당하기 위해, 메모리 내의 물리 페이지는 기입 동작 중에 제1 타겟 파일에 동적으로 할당될 수 있다. 다음은 도 6을 참조하여 상세히 참조하여, 도 2에 도시된 단계(225)에서 수행되는 기입 동작의 구체적인 프로세스를 설명한다. 도 6은 본 개시의 일 실시예에 따른 파일 기입 방법의 순서도이다. 다음은 제1 액세스 요청이 기입 요청인 예를 사용하여 도 6을 설명한다. 도 6에 도시된 바와 같이, 방법은 다음 단계들을 포함할 수 있다.
단계(605)에서, CPU (100)는 제1 가상 스페이스의 액세스 어드레스가 지시하는 제4 물리 어드레스가 글로벌 파일 페이지 테이블에 따라 획득될 수 없음을 결정하고, 여기서 제4 물리 어드레스는 메모리 내의 물리 어드레스이다. 실제 응용에서, 하나의 경우에서, 파일이 확장되는 때, 파일에 할당된 물리 메모리 스페이스가 부족해질 수 있고, 파일을 저장하기 위해 새로운 메모리 스페이스가 제공되어야 한다. 다른 경우에서, 물리 메모리 스페이스를 유연하게 할당하고, 사용 가능한 메모리를 절약하며, 시스템 처리량을 향상시키기 위해, 새로운 파일이 생성되는 때, 물리 메모리 스페이스가 파일에 미리 할당되지 않는 대신에, 파일로 기록될 데이터가 있는 때만, 물리 메모리 스페이스가 기록될 데이터의 볼륨에 따라 파일에 할당된다. 이들 두 가지 경우에서, 제1 매핑 관계에 따라 제1 액세스 요청의 시작 어드레스가 제1 가상 스페이스의 액세스 어드레스로 변환된 후, 제1 가상 스페이스의 액세스 어드레스에 따라 제1 타겟 파일이 액세스되는 때, 기입될 데이터에 물리 페이지가 할당되어 있지 않으면, 기입될 데이터에 대한 물리 페이지의 물리 어드레스가 글로벌 파일 페이지 테이블 내에 기록되어 있지 않다. 이 단계에서, CPU(100) 내의 MMU(104)는 제1 가상 스페이스의 액세스 어드레스 및 글로벌 파일 페이지 테이블에 따라, 메모리 내의 기록될 데이터에 대한 물리 페이지의 물리 어드레스를 획득할 수 없다. 설명의 편의상, 본 개시의 본 실시예에서, NVM(200) 내의 물리 페이지이고 제1 가상 스페이스의 액세스 어드레스가 지시하는 물리 어드레스는 제4 물리 어드레스로서 지칭된다.
단계(610)에서, CPU(100)는 제1 타겟 파일에 물리 페이지를 할당한다. 구체적으로, CPU(100) 내의 MMU(104)가 제1 가상 스페이스의 액세스 어드레스가 지시하는 제4 물리 어드레스가 글로벌 파일 페이지 테이블에 따라 획득될 수 없다고 결정하는 때, MMU(104)는 제1 타겟 파일을 액세스하는 프로세스에 NVM(200) 내의 물리적 페이지를 할당하도록 CPU(100) 상에서 동작하는 운영 체제의 커널에 요청하기 위해, 페이지 폴트 요청을 트리거링한다. 운영 체제의 커널은 페이지 폴트 요청에 따라 메모리 내의 유휴 물리 페이지로부터, 물리 페이지를 제1 타겟 파일에 할당할 수 있다. 제1 액세스 요청이 기입 요청인 때, 제1 액세스 요청은 제1 파일 식별자를 포함할 뿐만 아니라, 기입될 데이터의 볼륨을 포함할 수도 있으며, 물리 페이지를 할당하는 때, 운영 체제의 커널은 기록될 데이터의 볼륨에 따라 물리 페이지를 할당할 수 있다.
실제 응용에서, 물리 페이지를 제1 타겟 파일에 할당한 후, 운영 체제의 커널은 할당된 물리 페이지의 물리 어드레스를 글로벌 파일 페이지 테이블 내에 기록해야 한다. 구체적으로, 운영 체제의 커널은 할당된 물리 페이지에 대한 대응하는 페이지 테이블 엔트리를 글로벌 파일 페이지 테이블에 확립하고, 할당된 물리 페이지의 물리 어드레스를 확립된 페이지 테이블 엔트리에 기록하여, 후속 액세스 동작 중에 제1 액세스 요청의 시작 어드레스에 따라 할당된 물리 페이지의 물리 어드레스가 발견될 수 있다.
단계(615)에서, CPU(100)는 제1 액세스 요청 내에 포함된 기입될 데이터를 할당된 물리 페이지에 기입한다. 제1 액세스 요청이 기입 요청인 때, 제1 액세스 요청은 기입될 데이터를 포함해야 한다는 것이 이해될 수 있다. 구체적으로, 물리 페이지가 제1 타겟 파일에 할당된 후, MMU(104)는 할당된 물리 페이지의 물리 어드레스를 CPU(100)로 반환할 수 있다. CPU(100)는 할당된 물리 페이지의 물리 어드레스에 따라 메모리 컨트롤러에 데이터 기입 명령을 전송하여, 제1 액세스 요청 내에 포함된 기입될 데이터를 할당된 물리 페이지에 기입하도록 지시할 수 있다.
본 개시의 본 실시예에서, 새롭게 할당된 물리 페이지에 대해 수행된 기입 동작이 완료된 후에, 제1 타겟 파일의 메타데이터는 기입 동작의 결과에 따라 더 갱신될 수 있다. 구체적인 갱신 프로세스는 다음 단계를 포함할 수 있다.
단계(620)에서, CPU(100)는 제1 가상 스페이스의 액세스 어드레스 및 기입될 데이터의 볼륨에 따라 제1 액세스 요청의 종료 어드레스를 계산하고, 여기서 제1 액세스 요청의 종료 어드레스는 제1 가상 스페이스 내의 어드레스이다. 실제 응용에서, 할당된 물리 페이지에 제1 액세스 요청에 포함된 기입될 데이터가 기록된 후, CPU(100)는 제1 가상 스페이스의 액세스 어드레스 및 기록될 데이터의 볼륨에 따라 제1 액세스 요청의 종료 어드레스를 계산할 수 있다. 제1 가상 스페이스의 액세스 어드레스는 글로벌 가상 스페이스 내의 가상 어드레스이므로, 제1 액세스 요청의 종료 어드레스도 글로벌 가상 스페이스 내의 가상 어드레스임이 이해될 수 있다. 구체적으로, 제1 액세스 요청의 종료 어드레스는 제1 가상 스페이스의 어드레스이다. 예를 들어, 제1 액세스 요청의 시작 어드레스가 0x00000000이고, 기입될 데이터의 볼륨이 8k이면, 제1 액세스 요청의 종료 어드레스는 0x00002000이다.
단계(625)에서, CPU(100)는 제1 가상 스페이스의 시작 어드레스 및 제1 액세스 요청의 종료 어드레스에 따라 제1 가상 스페이스의 갱신된 사이즈를 획득한다. 제1 타겟 파일에 데이터를 기입한 후에, 제1 가상 스페이스의 시작 어드레스 및 단계(620)에서 획득된 제1 액세스 요청의 종료 어드레스에 따라 제1 타겟 파일의 갱신된 크기가 획득될 수 있다는 것이 이해될 수 있다. 제1 타겟 파일의 갱신된 크기는 제1 가상 스페이스의 갱신된 크기이다.
단계(630)에서, CPU(100)는 제1 타겟 파일의 인덱스 노드에 제1 가상 스페이스의 갱신된 크기를 기록한다. 제1 타겟 파일을 관리하는 데 사용되는 제1 가상 스페이스에 관한 정보는 제1 타겟 파일의 인덱스 노드에 기록된다. 따라서, 제1 타겟 파일에 대한 기입 동작이 수행된 후, 제1 타겟 파일의 메타데이터 정보는 기입 동작의 결과에 따라 갱신되어야 한다. 전술한 바와 같이, 제1 가상 스페이스에 관한 정보로서, 제1 타겟 파일의 인덱스 노드에 기록되는 정보는, 제1 가상 스페이스의 시작 어드레스 및 크기를 포함하고, 제1 타겟 파일의 크기는 제1 가상 스페이스의 시작 어드레스 및 크기에 따라 획득될 수 있다. 단계(625)에서 제1 가상 스페이스의 갱신된 크기가 획득된 후, 이 단계에서, 제1 가상 스페이스의 갱신된 크기가 제1 타겟 파일의 인덱스 노드에 기록되어, 제1 타겟 파일의 메타데이터를 갱신할 수 있다.
본 개시의 본 실시예에서 제공된 파일 액세스 방법에 따르면, CPU(100)는 가상화된 글로벌 가상 스페이스를 사용하여 파일 시스템 내의 모든 파일을 중앙 집중식으로 관리할 수 있고, 지정된 글로벌 파일 페이지 테이블을 사용하여 파일 시스템에 액세스할 수 있다. 특정 액세스 중에, CPU(100)는 액세스될 제1 타겟 파일의 파일 식별자에 따라, 메타데이터 내의 제1 타겟 파일의 인덱스 노드를 획득할 수 있고, 여기서 제1 타겟 파일의 인덱스 노드는 제1 글로벌 가상 스페이스에서의 제1 타겟 파일의 가상 스페이스에 관한 정보를 저장한다. CPU(100)는, 인덱스 노드에 기록된 정보로서, 제1 가상 스페이스에 관한 정보에 따라, 제1 가상 스페이스를 프로세스의 제2 가상 스페이스 상에 매핑할 수 있고, CPU(100) 내의 MMU(104)를 사용하여 추가된 파일 관리 레지스터에 대한 어드레싱을 수행할 수 있다. 파일 관리 레지스터는 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스를 저장하므로, MMU(104)는 제1 가상 스페이스의 시작 어드레스 및 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스에 따라 제1 타겟 파일을 액세스할 수 있다 제1 가상 스페이스는 연속적인 스페이스의 세그먼트이다. 따라서, 본 개시의 본 실시예에서 기술된 방법에 따라, 제1 가상 스페이스의 시작 어드레스 및 크기에 대한 정보만이 제1 타겟 파일의 인덱스 노드에 기록되어야 하고, 제1 가상 스페이스에 관한 기록 정보를 사용하여 메모리 내에 저장된 제1 타겟 파일이 연속적으로 액세스될 수 있다. 또한, 본 개시의 본 실시예에서, 새롭게 추가된 파일 관리 레지스터를 사용하여 글로벌 파일 페이지 테이블에 대해 어드레싱이 수행된다. 따라서, 파일의 페이지 테이블 엔트리가 프로세스 페이지 테이블에 추가되거나 또는 링크될 필요가 없으므로, 시스템 오버헤드를 감소시키고, 프로세스 페이지 테이블의 부하를 감소시키며, 파일 액세스 효율성을 향상시킨다.
도 7은 본 개시의 일 실시예에 따른 다른 파일 액세스 방법의 순서도이다. 이 방법은 도 1에 도시된 적용 시나리오에 적용될 수 있다. 다음은 도 1 및 도 2를 참조하여, 도 7의 방법을 설명한다. 도 7에 도시된 바와 같이, 방법은 다음의 단계들을 포함할 수 있다.
단계(701)에서, CPU(100)는 제2 액세스 요청을 수신하고, 여기서 제2 액세스 요청은 제2 파일 식별자 및 제2 액세스 요청의 시작 어드레스를 포함하고, 제2 파일 식별자는 액세스될 제2 타겟 파일을 지시하는 데 사용된다. 예를 들어, 제2 파일 식별자는 File_2.doc일 수 있다. 제2 타겟 파일 및 제1 타겟 파일은 파일 시스템 내의 상이한 파일들인 것을 유의해야 한다.
단계(705)에서, CPU(100)는 제2 파일 식별자에 따라, 제2 타겟 파일의 인덱스 노드가 파일 시스템에 존재하는지를 결정한다. 제2 파일 식별자에 따라 파일 시스템 내에 제2 타겟 파일의 인덱스 노드가 존재하지 않으면, 단계(710)를 수행한다. 그렇지 않으면, 단계(725)를 수행한다. 실제 응용에서, CPU(100)는 제2 파일 식별자에 따라 파일 시스템의 메타데이터를 검색하여 제2 타겟 파일의 인덱스 노드가 존재하는지를 결정할 수 있다. 당업자는 제2 타겟 파일의 인덱스 노드가 메타데이터 내에 존재하지 않으면, 이는 제2 타겟 파일이 파일 시스템 내에 존재하지 않음을 나타낸다는 것을 알 수 있다. 당업자는 제2 액세스 요청이 판독 요청이면, CPU(100) 상에서 동작하는 운영 체제는 제2 타겟 파일을 액세스하는 프로세스에 액세스 에러 응답을 반환할 수 있거나, 또는 제2 액세스 요청이 기입 요청이면, 시스템은 단계(710)을 수행할 수 있다는 것을 알 수 있다.
단계(710)에서, CPU(100)는 파일 시스템 내에서 제2 타겟 파일의 인덱스 노드를 생성한다. 특히, 제2 타겟 파일의 인덱스 노드는 제2 파일 식별자에 따라 파일 시스템의 메타데이터에 추가될 수 있다.
단계(715)에서, 제3 가상 스페이스는 제2 타겟 파일에 할당되고, 여기서 제3 가상 스페이스는 메모리 내의 제3 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이다. 제2 타겟 파일의 인덱스 노드가 생성된 후, 제2 타겟 파일의 관리를 용이하게 하기 위해, 제3 가상 스페이스가 미리 설정된 글로벌 가상 스페이스 내의 제2 타겟 파일에 할당되어야 한다. 제3 가상 스페이스는 미리 설정된 글로벌 가상 스페이스의 일부이고, 제3 가상 스페이스는 연속적인 가상 스페이스의 세그먼트이다. 특히, 제3 가상 스페이스는 메모리 내의 제3 물리 스페이스를 가상화하여 획득될 수 있다. 제3 물리 스페이스는 제2 타겟 파일을 저장하는 데 사용되는 메모리 내의 물리 스페이스다. 물론, 실제 적용에서, 제3 물리 스페이스는 제2 타겟 파일이 생성되는 때 메모리 내의 제2 타겟 파일에 미리 할당된 작은 물리 스페이스를 지칭할 수 있다. 제3 가상 스페이스는 제2 타겟 파일이 빈 파일인 때 메모리 내에서 점유된 스페이스를 지칭할 수도 있다. 본 개시의 본 실시예에서, 제3 가상 스페이스는 제1 가상 스페이스와 상이하고, 제3 물리 스페이스는 제1 물리 스페이스와 상이하다는 것이 이해될 수 있다.
단계(720)에서, CPU(100)는 제2 타겟 파일의 인덱스 노드 내에, 제3 가상 스페이스에 관한 정보를 기록하고, 여기서 제3 가상 스페이스는 제2 타겟 파일을 관리하는 데 사용된다. 실제 응용에서, 제2 타겟 파일의 인덱스 노드가 생성되고 제3 가상 스페이스가 제2 타겟 파일에 할당된 후, 제2 타겟 파일을 관리하기 용이하게 하기 위해, 제3 가상 스페이스에 관한 정보가 제2 타겟 파일의 인덱스 노드에 기록되어야 한다. 제3 가상 스페이스에 관한 정보는 제3 가상 스페이스의 시작 어드레스 및 크기를 포함한다. 단계(710), 단계(715), 및 단계(720)가 수행된 후, 생성된 제2 타겟 파일의 메타데이터 정보에 따라 제2 타겟 파일이 액세스될 수 있음이 이해될 수 있다. 예를 들어, 기입 동작은 단계(730) 내지 단계(745)에서 설명된 방법을 사용하여 제2 타겟 파일에 대해 구현될 수 있다.
단계(725)에서, CPU(100)는 제2 타겟 파일을 관리하는 데 사용된 제3 가상 스페이스에 관한 정보를 포함하는 제2 타겟 파일의 인덱스 노드를 제2 파일 식별자에 따라 획득하고, 제3 가상 스페이스는 메모리 내의 제3 물리 스페이스(도 3에 도시되지 않음)에 따라 가상화된 연속적인 어드레스 스페이스이며, 제3 물리 스페이스는 제2 타겟 파일을 저장하는 데 사용되고, 제3 가상 스페이스는 미리 설정된 글로벌 가상 공간의 일부이다.
단계(730)에서, CPU(100)는 프로세스의 제3 가상 스페이스 및 제4 가상 스페이스 사이의 제2 매핑 관계를 확립하고, 여기서 제4 가상 스페이스는 프로세스의 사용자 스페이스에서 연속적인 가상 어드레스 스페이스의 세그먼트이다.
단계(735)에서, CPU(100)는 제4 가상 스페이스의 시작 어드레스에 따라 파일 관리 레지스터로서 액세스될 레지스터를 다수로 배치된 레지스터들로부터 결정하고, 여기서 파일 관리 레지스터는 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스를 저장하고, 글로벌 파일 페이지 테이블은 메모리 내의 제2 타겟 파일의 물리적 어드레스를 지시하는 데 사용된다. 구체적으로, 글로벌 파일 페이지 테이블은 메모리 내의 제3 물리 스페이스 내의 제2 타겟 파일의 시작 어드레스를 지시하는 데 사용될 수 있다.
단계(740)에서, CPU(100)는 제2 매핑 관계에 따라 제2 액세스 요청의 시작 어드레스를 제3 가상 스페이스의 액세스 어드레스로 변환한다.
단계(745)에서, CPU(100)는 메모리 내의 제2 타겟 파일의 물리 어드레스를 획득하기 위해, 제3 가상 스페이스의 액세스 어드레스에 따라 파일 관리 레지스터에 액세스한다. 구체적으로, CPU(100) 내의 MMU(104)는, 메모리 내의 제3 물리 스페이스 내의 제2 타겟 파일의 물리 어드레스로의 어드레싱을 수행하도록, 제3 가상 스페이스의 액세스 어드레스에 따라서 파일 관리 레지스터를 액세스하여, 제2 타겟 파일을 액세스한다.
도 7의 단계(725) 내지 단계(745)는 각각 도 2에 도시된 단계(205) 내지 단계(225)와 유사하다는 것을 유의해야 한다. 자세한 내용에 대해서, 단계(205) 내지 단계(225)의 설명을 참조하고, 자세한 내용은 여기서 다시 설명하지 않는다.
도 8은 본 개시의 일 실시예에 따른 파일 액세스 장치의 개략적인 구조도이다. 장치는 메모리에 기초하여 확립된 파일 시스템을 액세스하도록 구성될 수 있으며, 여기서 메모리는 비-휘발성 메모리(NVM)이다. 도 8에 도시된 바와 같이, 파일 액세스 장치(80)는 다음의 모듈들: 액세스될 제1 타겟 파일을 지시하는 데 사용되는 제1 파일 식별자 및 제1 액세스 요청의 시작 어드레스를 포함하는 제1 액세스 요청을 수신하도록 구성된 수신 모듈(800), 제1 타겟 파일을 관리하는 데 사용되는 제1 가상 스페이스에 대한 정보를 포함하는, 제1 타겟 파일의 인덱스 노드를 제1 파일 식별자에 따라 획득하도록 구성된 획득 모듈(805), 제1 가상 스페이스 및 프로세스의 제2 가상 스페이스 사이의 제1 매핑 관계를 확립하도록 구성된 매핑 모듈(810), 다수로 배치된 레지스터로부터, 제2 가상 스페이스의 시작 어드레스에 따라 파일 관리 레지스터로서 액세스될 레지스터를 결정하도록 구성된 결정 모듈(815), 제1 매핑 관계에 따라 제1 액세스 요청의 시작 어드레스를 제1 가상 스페이스의 액세스 어드레스로 변환하도록 구성된 변환 모듈(820), 그리고 메모리 내의 제1 타겟 파일의 물리 어드레스를 획득하도록, 제1 가상 스페이스의 액세스 어드레스에 따라 파일 관리 레지스터를 액세스하도록 구성된 액세스 모듈(825)을 포함할 수 있고, 제1 가상 스페이스는 메모리 내의 제1 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이고, 제1 물리 스페이스는 제1 타겟 파일을 저장하는 데 사용되며, 제1 가상 스페이스는 미리 설정된 글로벌 가상 스페이스의 일부이고, 글로벌 가상 스페이스는 메모리 내의 제2 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이며, 제1 물리 스페이스는 파일 시스템 내의 모든 데이터를 저장하는 데 사용되고, 제2 가상 스페이스는 프로세스의 사용자 스페이스 내의 연속적인 가상 어드레스 스페이스의 세그먼트이며, 파일 관리 레지스터는 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스를 저장하고, 글로벌 파일 페이지 테이블은 메모리 내의 제1 타겟 파일의 물리 어드레스를 지시하는 데 사용되며, 제1 액세스 요청의 시작 어드레스는 프로세스의 제2 가상 스페이스 내의 어드레스이다.
하나의 경우에서, 본 개시의 실시예에 제공되는 파일 액세스 장치(80)의 수신 모듈(800)은 액세스될 제2 타겟 파일을 지시하는 데 사용되는 제2 파일 식별자를 포함하는 제2 액세스 요청을 수신하도록 더 구성된다. 본 개시의 본 실시예에 제공되는 파일 액세스 장치(80)는 판정 모듈(830), 생성 모듈(835), 할당 모듈(840), 및 기록 모듈(845)을 더 포함할 수 있다.
판정 모듈(830)은 제2 파일 식별자에 따라, 제2 타겟 파일의 인덱스 노드가 파일 시스템 내에 없다는 것을 결정하도록 구성된다.
생성 모듈(835)은 파일 시스템 내에서 제2 타겟 파일의 인덱스 노드를 생성하도록 구성된다.
할당 모듈(840)은 제2 타겟 파일에 제3 가상 스페이스를 할당하도록 구성되고, 여기서 제3 가상 스페이스는 메모리 내의 제3 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이고, 제3 물리 스페이스는 제2 타겟 파일을 저장하는 데 사용되며, 제3 가상 스페이스는 미리 설정된 글로벌 가상 스페이스의 일부이고, 제3 가상 스페이스는 제1 가상 스페이스와 상이하며, 제3 물리 스페이스는 제1 물리 스페이스와 상이하다.
기록 모듈(845)은 제2 타겟 파일의 인덱스 노드에서, 제3 가상 스페이스에 대한 정보를 기록하도록 구성되고, 여기서 제3 가상 스페이스는 제2 타겟 파일을 관리하는 데 사용된다.
실제 응용에서, 본 개시의 본 실시예에 제공되는 파일 액세스 장치(80)에서, 제1 가상 스페이스에 관한 정보는 제1 가상 스페이스의 시작 어드레스 및 크기를 포함할 수 있다. 제1 액세스 요청이 기입 요청인 때, 액세스 모듈(825)은 구체적으로 제1 가상 스페이스의 액세스 어드레스가 지시하는 제4 물리 어드레스가 글로벌 파일 페이지 테이블에 따라 획득될 수 없음을 결정하고, 제1 타겟 파일에 물리 페이지를 할당하며, 할당된 물리 페이지에 제1 액세스 요청 내에 포함된 기입될 데이터를 기입하도록 구성되고, 제4 물리 어드레스는 메모리 내의 물리 어드레스이다. 기록 모듈(845)은 글로벌 파일 페이지 테이블 내에, 할당된 물리 페이지의 물리 어드레스를 기록하도록 더 구성된다.
다른 경우에, 제1 가상 스페이스에 대한 정보는 제1 가상 스페이스의 시작 어드레스 및 크기를 포함하고, 제1 액세스 요청은 기입될 데이터의 볼륨을 더 포함할 수 있고, 파일 액세스 장치(80)는 제1 가상 스페이스의 액세스 어드레스 및 기입될 데이터의 볼륨에 따라 제1 액세스 요청의 종료 어드레스를 계산하고, 제1 가상 스페이스의 시작 어드레스 및 제1 액세스 요청의 종료 어드레스에 따라 갱신된 제1 가상 스페이스의 크기를 획득하며, 제1 타겟 파일의 인덱스 노드 내에 갱신된 제1 가상 스페이스의 크기를 기록하도록 구성된 업데이트 모듈(850)을 더 포함한다. 제1 액세스 요청의 종료 어드레스는 제1 가상 스페이스 내의 어드레스이다.
본 개시의 일 실시예에서 제공된 파일 액세스 장치(80)는 도 2 내지 도 7에서의 실시예에서 기술된 파일 액세스 방법을 수행할 수 있다. 모듈들의 기능에 대한 상세한 설명은 방법의 실시예에서의 설명을 참조하며, 상세한 설명은 여기서 다시 기술되지 않는다.
도 8에 도시된 실시예는 단지 예시적인 것이라고 이해될 수 있다. 예를 들어, 모듈 분할은 논리적인 단지 논리적 기능 분할이고, 실제 구현에서는 다른 분할일 수 있다. 예를 들어, 여러 모듈 또는 컴포넌트가 결합될 수 있거나 또는 다른 디바이스에 통합될 수 있거나, 또는 일부 기능이 무시될 수 있거나 또는 수행되지 않을 수 있다. 또한, 표시되거나 논의된 상호 커플링 또는 직접 커플링 또는 통신 연결은 일부 통신 인터페이스를 사용하여 구현될 수 있다. 모듈들 간의 간접적 커플링 또는 통신 연결은 전자적, 기계적, 또는 다른 형태로 구현될 수 있다.
별도의 부품으로 설명된 모듈은 물리적으로 분리되어 있거나 분리되어 있지 않을 수 있고, 모듈로 표시되는 부품은 물리적인 유닛일 수 있거나 아닐 수도 있으며, 하나의 위치에 위치할 수도 있거나, 또는 다수의 네트워크 장치에 분산되어 있을 수 있다. 모듈의 일부 또는 전부는 실시예들의 해결책의 목적을 달성하기 위해 실제 요구에 따라 선택될 수 있다.
본 개시의 실시예에 따른 파일 액세스 장치(80)에 따르면, 파일 시스템 내의 모든 파일은 가상화된 글로벌 가상 스페이스를 사용하여 중앙 집중식으로 관리될 수 있고, 지정된 글로벌 파일 페이지 테이블을 사용하여 파일 시스템이 액세스될 수 있다. 특정 액세스 중에, 새롭게 추가된 파일 관리 레지스터를 사용하여 글로벌 파일 페이지 테이블에 대해 어드레싱이 수행될 수 있다. 따라서, 파일의 페이지 테이블 엔트리가 프로세스 페이지 테이블로 복사될 필요가 없으므로, 프로세스 페이지 테이블 상의 로드를 감소시키고, 파일 액세스 효율성을 향상시킨다.
본 개시의 일 실시예는 프로그램 코드를 포함하는 컴퓨터 판독 가능 스토리지 매체를 포함하는 데이터 처리를 위한 컴퓨터 프로그램 제품을 더 제공하며, 여기서 프로그램 코드에 포함된 명령은 전술한 방법 실시예들 중 임의의 하나에서 설명된 방법 프로세스를 실행하는 데 사용된다. 당업자는 전술한 스토리지 매체가 USB 플래시 드라이브, 제거가능한 하드 디스크, 자기 디스크, 광 디스크, RAM(Random-Access Memory), SSD(Solid State Disk), 또는 비-휘발성 메모리(non-volatile memory)과 같은 프로그램 코드를 저장할 수 있는 임의의 비-일시적(non-transitory) 기기 판독 가능한 매체를 포함한다는 것을 이해할 수 있다.
본원에서 제공된 실시예들은 단지 예시적인 것임을 유의해야 한다. 당업자는 설명의 편의 및 간결성을 위해, 전술한 실시예에서, 실시예들이 상이한 양태를 강조한다는 것과 일 실시예에서 상세하게 설명되지 않은 부분에 대해서, 다른 실시예의 관련 설명을 참조할 수 있다는 것을 명확하게 알 수 있다. 첨부된 도면에 개시된 본 개시의 실시예들, 청구 범위, 및 특징은 독립적으로 존재할 수도 있거나, 또는 조합하여 존재할 수 있다. 본 개시의 실시예들에서 하드웨어 형태로 기술된 특징들은 소프트웨어에 의해 실행될 수 있으며, 그 반대도 가능하며, 여기에 제한되지 않는다.

Claims (15)

  1. 비-휘발성 메모리(NVM: non-volatile memory)인 메모리에 기반하여 파일 시스템이 확립된 스토리지 디바이스에 적용되는 파일 액세스 방법으로서,
    액세스될 제1 타겟 파일을 지시하는 데 사용되는 제1 파일 식별자 및 제1 액세스 요청의 시작 어드레스를 포함하는 상기 제1 액세스 요청을 수신하는 단계,
    상기 제1 타겟 파일을 관리하는 데 사용되는 제1 가상 스페이스에 대한 정보를 포함하는, 상기 제1 타겟 파일의 인덱스 노드를 상기 제1 파일 식별자에 따라 획득하는 단계,
    상기 제1 가상 스페이스 및 프로세스의 제2 가상 스페이스 사이의 제1 매핑 관계를 확립하는 단계,
    다수로 배치된 레지스터로부터, 상기 제2 가상 스페이스의 시작 어드레스에 따라 액세스될 레지스터를 파일 관리 레지스터로서 결정하는 단계,
    상기 제1 매핑 관계에 따라 상기 제1 액세스 요청의 시작 어드레스를 상기 제1 가상 스페이스의 액세스 어드레스로 변환하는 단계, 그리고
    상기 메모리 내의 상기 제1 타겟 파일의 물리 어드레스를 획득하기 위해, 상기 제1 가상 스페이스의 액세스 어드레스에 따라 상기 파일 관리 레지스터를 액세스하는 단계
    를 포함하고,
    상기 제1 가상 스페이스는 상기 메모리 내의 제1 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이고, 상기 제1 물리 스페이스는 상기 제1 타겟 파일을 저장하는 데 사용되며, 상기 제1 가상 스페이스는 미리 설정된 글로벌 가상 스페이스의 일부이고, 상기 글로벌 가상 스페이스는 상기 메모리 내의 제2 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이며, 상기 제2 물리 스페이스는 상기 파일 시스템 내의 모든 데이터를 저장하는 데 사용되고,
    상기 제2 가상 스페이스는 상기 프로세스의 사용자 스페이스 내의 연속적인 가상 어드레스 스페이스의 세그먼트이며,
    상기 파일 관리 레지스터는 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스를 저장하고, 상기 글로벌 파일 페이지 테이블은 상기 메모리 내의 상기 제1 타겟 파일의 물리 어드레스를 지시하는 데 사용되며,
    상기 제1 액세스 요청의 시작 어드레스는 상기 프로세스의 제2 가상 스페이스 내의 어드레스인,
    파일 액세스 방법.
  2. 제1항에 있어서,
    액세스될 제2 타겟 파일을 지시하는 데 사용되는 제2 파일 식별자를 포함하는 제2 액세스 요청을 수신하는 단계,
    상기 제2 파일 식별자에 따라, 상기 제2 타겟 파일의 인덱스 노드가 상기 파일 시스템 내에 없다는 것을 결정하는 단계,
    상기 파일 시스템 내에서 상기 제2 타겟 파일의 인덱스 노드를 생성하는 단계,
    상기 제2 타겟 파일에 제3 가상 스페이스를 할당하는 단계, 그리고
    상기 제2 타겟 파일의 인덱스 노드에서, 상기 제3 가상 스페이스에 대한 정보를 기록하는 단계
    를 더 포함하고,
    상기 제3 가상 스페이스는 상기 메모리 내의 제3 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이고, 상기 제3 물리 스페이스는 상기 제2 타겟 파일을 저장하는 데 사용되며, 상기 제3 가상 스페이스는 상기 미리 설정된 글로벌 가상 스페이스의 일부이고, 상기 제3 가상 스페이스는 상기 제1 가상 스페이스와 상이하며,
    상기 제3 물리 스페이스는 상기 제1 물리 스페이스와 상이하며, 상기 제3 가상 스페이스는 상기 제2 타겟 파일을 관리하는 데 사용되는,
    파일 액세스 방법.
  3. 제1항에 있어서,
    상기 제1 액세스 요청은 기입 요청이고, 상기 제1 액세스 요청은 기입될 데이터를 더 가지며,
    상기 메모리 내의 상기 제1 타겟 파일의 물리 어드레스를 획득하기 위해, 상기 제1 가상 스페이스의 액세스 어드레스에 따라 상기 파일 관리 레지스터를 액세스하는 단계는,
    상기 제1 가상 스페이스의 액세스 어드레스가 지시하는 제4 물리 어드레스가 상기 글로벌 파일 페이지 테이블에 따라 획득될 수 없음을 결정하는 단계,
    상기 제1 타겟 파일에 물리 페이지를 할당하는 단계, 그리고
    상기 할당된 물리 페이지에 상기 제1 액세스 요청 내에 포함된 상기 기입될 데이터를 기입하는 단계를 포함하고,
    상기 제4 물리 어드레스는 상기 메모리 내의 물리 어드레스인,
    파일 액세스 방법.
  4. 제3항에 있어서,
    상기 제1 타겟 파일에 물리 페이지를 할당하는 단계 후에,
    상기 글로벌 파일 페이지 테이블 내에, 상기 할당된 물리 페이지의 물리 어드레스를 기록하는 단계를 더 포함하는 파일 액세스 방법.
  5. 제3항에 있어서,
    상기 제1 가상 스페이스에 대한 정보는 상기 제1 가상 스페이스의 시작 어드레스 및 크기를 포함하고, 상기 제1 액세스 요청은 상기 기입될 데이터의 볼륨을 더 포함하며,
    상기 할당된 물리 페이지에 상기 제1 액세스 요청 내에 포함된 상기 기입될 데이터를 기입하는 단계 후에, 상기 파일 액세스 방법은,
    상기 제1 가상 스페이스의 액세스 어드레스 및 상기 기입될 데이터의 볼륨에 따라 상기 제1 액세스 요청의 종료 어드레스를 계산하는 단계,
    상기 제1 가상 스페이스의 시작 어드레스 및 상기 제1 액세스 요청의 종료 어드레스에 따라 갱신된 상기 제1 가상 스페이스의 크기를 획득하는 단계, 그리고
    상기 제1 타겟 파일의 인덱스 노드 내에 상기 갱신된 제1 가상 스페이스의 크기를 기록하는 단계
    를 더 포함하고,
    상기 제1 액세스 요청의 종료 어드레스는 상기 제1 가상 스페이스 내의 어드레스인,
    파일 액세스 방법.
  6. 파일 시스템 및 파일을 저장하도록 구성된 메모리, 그리고
    메모리 버스를 사용하여 상기 메모리에 연결된 프로세서
    를 포함하고,
    상기 메모리는 비-휘발성 메모리(NVM: non-volatile memory)이고,
    상기 프로세서는:
    액세스될 제1 타겟 파일을 지시하는 데 사용되는 제1 파일 식별자 및 제1 액세스 요청의 시작 어드레스를 포함하는 상기 제1 액세스 요청을 수신하고,
    상기 제1 파일 식별자에 따라 상기 제1 타겟 파일을 관리하는 데 사용되는 제1 가상 스페이스에 대한 정보를 포함하는, 상기 제1 타겟 파일의 인덱스 노드를 획득하며,
    상기 제1 가상 스페이스 및 프로세스의 제2 가상 스페이스 사이의 제1 매핑 관계를 확립하고,
    다수로 배치된 레지스터로부터, 상기 제2 가상 스페이스의 시작 어드레스에 따라 파일 관리 레지스터로서 액세스될 레지스터를 결정하며,
    상기 제1 매핑 관계에 따라 상기 제1 액세스 요청의 시작 어드레스를 상기 제1 가상 스페이스의 액세스 어드레스로 변환하고,
    상기 메모리 내의 상기 제1 타겟 파일의 물리 어드레스를 획득하기 위해, 상기 제1 가상 스페이스의 액세스 어드레스에 따라 상기 파일 관리 레지스터를 액세스하도록 구성되고,
    상기 제1 가상 스페이스는 상기 메모리 내의 제1 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이고, 상기 제1 물리 스페이스는 상기 제1 타겟 파일을 저장하는 데 사용되며, 상기 제1 가상 스페이스는 미리 설정된 글로벌 가상 스페이스의 일부이고, 상기 글로벌 가상 스페이스는 상기 메모리 내의 제2 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이며, 상기 제2 물리 스페이스는 상기 파일 시스템 내의 모든 데이터를 저장하는 데 사용되고,
    상기 제2 가상 스페이스는 상기 프로세스의 사용자 스페이스 내의 연속적인 가상 어드레스 스페이스의 세그먼트이며,
    상기 파일 관리 레지스터는 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스를 저장하고, 상기 글로벌 파일 페이지 테이블은 상기 메모리 내의 상기 제1 타겟 파일의 물리 어드레스를 지시하는 데 사용되며,
    상기 제1 액세스 요청의 시작 어드레스는 상기 프로세스의 제2 가상 스페이스 내의 어드레스인,
    스토리지 디바이스.
  7. 제6항에 있어서,
    상기 프로세서는:
    액세스될 제2 타겟 파일을 지시하는 데 사용되는 제2 파일 식별자를 포함하는 제2 액세스 요청을 수신하고,
    상기 제2 파일 식별자에 따라, 상기 제2 타겟 파일의 인덱스 노드가 상기 파일 시스템 내에 없다는 것을 결정하며,
    상기 파일 시스템 내에서 상기 제2 타겟 파일의 인덱스 노드를 생성하고,
    상기 제2 타겟 파일에 제3 가상 스페이스를 할당하며,
    상기 제2 타겟 파일의 인덱스 노드에서, 상기 제3 가상 스페이스에 대한 정보를 기록하도록 더 구성되고,
    상기 제3 가상 스페이스는 상기 메모리 내의 제3 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이고, 상기 제3 물리 스페이스는 상기 제2 타겟 파일을 저장하는 데 사용되며, 상기 제3 가상 스페이스는 상기 미리 설정된 글로벌 가상 스페이스의 일부이고, 상기 제3 가상 스페이스는 상기 제1 가상 스페이스와 상이하며, 상기 제3 물리 스페이스는 상기 제1 물리 스페이스와 상이하며,
    상기 제3 가상 스페이스는 상기 제2 타겟 파일을 관리하는 데 사용되는,
    스토리지 디바이스.
  8. 제6항에 있어서,
    상기 제1 액세스 요청이 기입 요청인 때, 상기 제1 액세스 요청은 기입될 데이터를 더 포함하며,
    상기 프로세서는:
    상기 제1 가상 스페이스의 액세스 어드레스가 지시하는 제4 물리 어드레스가 상기 글로벌 파일 페이지 테이블에 따라 획득될 수 없음을 결정하고,
    상기 제1 타겟 파일에 물리 페이지를 할당하며,
    상기 할당된 물리 페이지에 상기 제1 액세스 요청 내에 포함된 상기 기입될 데이터를 기입하도록 구성되고,
    상기 제4 물리 어드레스는 상기 메모리 내의 물리 어드레스인,
    스토리지 디바이스.
  9. 제8항에 있어서,
    상기 프로세서는 상기 글로벌 파일 페이지 테이블 내에, 상기 할당된 물리 페이지의 물리 어드레스를 기록하도록 더 구성된,
    스토리지 디바이스.
  10. 제8항에 있어서,
    상기 제1 가상 스페이스에 대한 정보는 상기 제1 가상 스페이스의 시작 어드레스 및 크기를 포함하고, 상기 제1 액세스 요청은 상기 기입될 데이터의 볼륨을 더 포함하며,
    상기 프로세서는:
    상기 제1 가상 스페이스의 액세스 어드레스 및 상기 기입될 데이터의 볼륨에 따라 상기 제1 액세스 요청의 종료 어드레스를 계산하고,
    상기 제1 가상 스페이스의 시작 어드레스 및 상기 제1 액세스 요청의 종료 어드레스에 따라 갱신된 상기 제1 가상 스페이스의 크기를 획득하며,
    상기 제1 타겟 파일의 인덱스 노드 내에 상기 갱신된 제1 가상 스페이스의 크기를 기록하도록 더 구성되고,
    상기 제1 액세스 요청의 종료 어드레스는 상기 제1 가상 스페이스 내의 어드레스인,
    스토리지 디바이스.
  11. 하나 이상의 컴퓨터 실행 가능한 명령을 포함하는, 컴퓨터 판독 가능한 스토리지 매체에 저장된 컴퓨터 프로그램으로서, 스토리지 시스템의 프로세서 상에서 실행되는 때, 상기 하나 이상의 컴퓨터 실행 가능한 명령은 상기 스토리지 시스템이:
    액세스될 제1 타겟 파일을 지시하는 데 사용되는 제1 파일 식별자 및 제1 액세스 요청의 시작 어드레스를 포함하는 상기 제1 액세스 요청을 수신하는 단계,
    상기 제1 타겟 파일을 관리하는 데 사용되는 제1 가상 스페이스에 대한 정보를 포함하는, 상기 제1 타겟 파일의 인덱스 노드를 상기 제1 파일 식별자에 따라 획득하는 단계,
    상기 제1 가상 스페이스 및 프로세스의 제2 가상 스페이스 사이의 제1 매핑 관계를 확립하는 단계,
    다수로 배치된 레지스터로부터, 상기 제2 가상 스페이스의 시작 어드레스에 따라 액세스될 레지스터를 파일 관리 레지스터로서 결정하는 단계,
    상기 제1 매핑 관계에 따라 상기 제1 액세스 요청의 시작 어드레스를 상기 제1 가상 스페이스의 액세스 어드레스로 변환하는 단계, 그리고
    메모리 내의 상기 제1 타겟 파일의 물리 어드레스를 획득하기 위해, 상기 제1 가상 스페이스의 액세스 어드레스에 따라 상기 파일 관리 레지스터를 액세스하는 단계
    를 수행하도록 야기하고,
    상기 제1 가상 스페이스는 상기 메모리 내의 제1 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이고, 상기 제1 물리 스페이스는 상기 제1 타겟 파일을 저장하는 데 사용되며, 상기 제1 가상 스페이스는 미리 설정된 글로벌 가상 스페이스의 일부이고, 상기 글로벌 가상 스페이스는 상기 메모리 내의 제2 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이며, 상기 제2 물리 스페이스는 파일 시스템 내의 모든 데이터를 저장하는 데 사용되고, 상기 메모리는 비-휘발성 메모리(NVM: non-volatile memory)이며, 상기 파일 시스템은 상기 메모리에 기반하여 확립되고,
    상기 제2 가상 스페이스는 상기 프로세스의 사용자 스페이스 내의 연속적인 가상 어드레스 스페이스의 세그먼트이며,
    상기 파일 관리 레지스터는 글로벌 파일 페이지 테이블의 페이지 디렉토리의 기본 어드레스를 저장하고, 상기 글로벌 파일 페이지 테이블은 상기 메모리 내의 상기 제1 타겟 파일의 물리 어드레스를 지시하는 데 사용되며,
    상기 제1 액세스 요청의 시작 어드레스는 상기 프로세스의 제2 가상 스페이스 내의 어드레스인,
    컴퓨터 판독 가능한 스토리지 매체에 저장된 컴퓨터 프로그램.
  12. 제11항에 있어서,
    상기 컴퓨터 실행 가능한 명령은 상기 스토리지 시스템이:
    액세스될 제2 타겟 파일을 지시하는 데 사용되는 제2 파일 식별자를 포함하는 제2 액세스 요청을 수신하는 단계,
    상기 제2 파일 식별자에 따라, 상기 제2 타겟 파일의 인덱스 노드가 상기 파일 시스템 내에 없다는 것을 결정하는 단계,
    상기 파일 시스템 내에서 상기 제2 타겟 파일의 인덱스 노드를 생성하는 단계,
    상기 제2 타겟 파일에 제3 가상 스페이스를 할당하는 단계, 그리고
    상기 제2 타겟 파일의 인덱스 노드에서, 상기 제3 가상 스페이스에 대한 정보를 기록하는 단계
    를 수행하도록 더 야기하고,
    상기 제3 가상 스페이스는 상기 메모리 내의 제3 물리 스페이스에 따라 가상화된 연속적인 어드레스 스페이스이고, 상기 제3 물리 스페이스는 상기 제2 타겟 파일을 저장하는 데 사용되며, 상기 제3 가상 스페이스는 상기 미리 설정된 글로벌 가상 스페이스의 일부이고, 상기 제3 가상 스페이스는 상기 제1 가상 스페이스와 상이하며,
    상기 제3 물리 스페이스는 상기 제1 물리 스페이스와 상이하며, 상기 제3 가상 스페이스는 상기 제2 타겟 파일을 관리하는 데 사용되는,
    컴퓨터 판독 가능한 스토리지 매체에 저장된 컴퓨터 프로그램.
  13. 제11항에 있어서,
    상기 제1 액세스 요청은 기입 요청이고, 상기 제1 액세스 요청은 기입될 데이터를 더 가지며,
    상기 컴퓨터 실행 가능한 명령은 상기 스토리지 시스템이:
    상기 제1 가상 스페이스의 액세스 어드레스가 지시하는 제4 물리 어드레스가 상기 글로벌 파일 페이지 테이블에 따라 획득될 수 없음을 결정하는 단계,
    상기 제1 타겟 파일에 물리 페이지를 할당하는 단계, 그리고
    상기 할당된 물리 페이지에 상기 제1 액세스 요청 내에 포함된 상기 기입될 데이터를 기입하는 단계를 수행하도록 야기하고,
    상기 제4 물리 어드레스는 상기 메모리 내의 물리 어드레스인,
    컴퓨터 판독 가능한 스토리지 매체에 저장된 컴퓨터 프로그램.
  14. 제13항에 있어서,
    상기 컴퓨터 실행 가능한 명령은 상기 스토리지 시스템이:
    상기 글로벌 파일 페이지 테이블 내에, 상기 할당된 물리 페이지의 물리 어드레스를 기록하는 단계를 수행하도록 더 야기하는,
    컴퓨터 판독 가능한 스토리지 매체에 저장된 컴퓨터 프로그램.
  15. 제13항에 있어서,
    상기 제1 가상 스페이스에 대한 정보는 상기 제1 가상 스페이스의 시작 어드레스 및 크기를 포함하고, 상기 제1 액세스 요청은 상기 기입될 데이터의 볼륨을 더 포함하며,
    상기 컴퓨터 실행 가능한 명령은 상기 스토리지 시스템이:
    상기 제1 가상 스페이스의 액세스 어드레스 및 상기 기입될 데이터의 볼륨에 따라 상기 제1 액세스 요청의 종료 어드레스를 계산하는 단계,
    상기 제1 가상 스페이스의 시작 어드레스 및 상기 제1 액세스 요청의 종료 어드레스에 따라 갱신된 상기 제1 가상 스페이스의 크기를 획득하는 단계, 그리고
    상기 제1 타겟 파일의 인덱스 노드 내에 상기 갱신된 제1 가상 스페이스의 크기를 기록하는 단계
    를 수행하도록 더 야기하고,
    상기 제1 액세스 요청의 종료 어드레스는 상기 제1 가상 스페이스 내의 어드레스인,
    컴퓨터 판독 가능한 스토리지 매체에 저장된 컴퓨터 프로그램.
KR1020177017200A 2014-11-28 2014-11-28 파일 액세스 방법 및 장치 및 스토리지 디바이스 KR101944876B1 (ko)

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
KR20170088933A KR20170088933A (ko) 2017-08-02
KR101944876B1 true KR101944876B1 (ko) 2019-02-01

Family

ID=56073390

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177017200A KR101944876B1 (ko) 2014-11-28 2014-11-28 파일 액세스 방법 및 장치 및 스토리지 디바이스

Country Status (6)

Country Link
US (1) US10067684B2 (ko)
EP (1) EP3217294B1 (ko)
JP (1) JP6460497B2 (ko)
KR (1) KR101944876B1 (ko)
CN (1) CN105830059B (ko)
WO (1) WO2016082196A1 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
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 北京忆芯科技有限公司 访问超过地址总线宽度的内存空间
CN109219804B (zh) * 2016-12-28 2023-12-29 华为技术有限公司 非易失内存访问方法、装置和***
CN110546620B (zh) * 2017-04-14 2022-05-17 华为技术有限公司 数据处理方法、存储***和交换设备
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 华为技术有限公司 文件页表管理技术
CN110709824B (zh) * 2018-02-05 2022-01-14 华为技术有限公司 一种数据查询方法及装置
KR102518095B1 (ko) * 2018-09-12 2023-04-04 삼성전자주식회사 스토리지 장치 및 시스템
CN111208933B (zh) * 2018-11-21 2023-06-30 昆仑芯(北京)科技有限公司 数据访问的方法、装置、设备和存储介质
CN113767376A (zh) * 2018-12-28 2021-12-07 北京航迹科技有限公司 用于在车辆部件之间传送信息的消息缓存器
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
US10747597B2 (en) * 2018-12-28 2020-08-18 Beijing Voyager Technology Co., Ltd. Message buffer for communicating information between vehicle components
WO2020139396A1 (en) * 2018-12-28 2020-07-02 Didi Research America, Llc Writing messages in a shared memory architecture for a vehicle
US10785170B2 (en) * 2018-12-28 2020-09-22 Beijing Voyager Technology Co., Ltd. Reading messages in a 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 广东中鹏热能科技有限公司 一种上位机软件作为下位机设备的协议实现方法
CN111930575B (zh) * 2020-07-01 2024-06-18 联想(北京)有限公司 一种固件获取方法、装置及电子设备
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101187901A (zh) 2007-12-20 2008-05-28 康佳集团股份有限公司 一种实现文件访问的高速缓存***和方法
US20090265780A1 (en) 2008-04-21 2009-10-22 Varonis Systems Inc. Access event collection

Family Cites Families (14)

* Cited by examiner, † Cited by third party
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 情報処理方法および情報処理装置、プログラム
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
US8838935B2 (en) * 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
CN103488578B (zh) * 2012-12-28 2016-05-25 晶天电子(深圳)有限公司 虚拟存储设备(vmd)应用/驱动器
CN103218312B (zh) * 2013-03-28 2017-07-11 中国科学院上海微***与信息技术研究所 文件访问方法及***
JP2014206884A (ja) * 2013-04-15 2014-10-30 株式会社フィックスターズ 情報処理装置、情報処理方法、およびプログラム
CN103246718B (zh) * 2013-04-27 2016-06-08 华为技术有限公司 文件访问方法、装置和设备
WO2016023166A1 (zh) * 2014-08-12 2016-02-18 华为技术有限公司 管理文件的方法、分布式存储***和管理节点
EP3190520B1 (en) * 2014-09-01 2019-08-07 Huawei Technologies Co. Ltd. File access method and apparatus, and storage system
BR112017002780B1 (pt) * 2014-09-01 2023-01-31 Huawei Technologies Co., Ltd Método e aparelho de acesso de arquivo, e sistema de armazenamento
KR101944757B1 (ko) * 2014-10-31 2019-02-01 후아웨이 테크놀러지 컴퍼니 리미티드 파일 액세스 방법, 시스템, 및 호스트

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101187901A (zh) 2007-12-20 2008-05-28 康佳集团股份有限公司 一种实现文件访问的高速缓存***和方法
US20090265780A1 (en) 2008-04-21 2009-10-22 Varonis Systems Inc. Access event collection

Also Published As

Publication number Publication date
CN105830059A (zh) 2016-08-03
JP2018502375A (ja) 2018-01-25
EP3217294B1 (en) 2018-11-28
JP6460497B2 (ja) 2019-01-30
EP3217294A1 (en) 2017-09-13
US20170262172A1 (en) 2017-09-14
US10067684B2 (en) 2018-09-04
WO2016082196A1 (zh) 2016-06-02
CN105830059B (zh) 2019-09-27
KR20170088933A (ko) 2017-08-02
EP3217294A4 (en) 2017-11-29

Similar Documents

Publication Publication Date Title
KR101944876B1 (ko) 파일 액세스 방법 및 장치 및 스토리지 디바이스
CN108804350B (zh) 一种内存访问方法及计算机***
WO2016082191A1 (zh) 访问文件的方法和装置
US11237980B2 (en) File page table management technology
TWI752619B (zh) 存取儲存的元資料以識別儲存資料的記憶體裝置
TWI752620B (zh) 與記憶體類型相關的頁表
CN108595349B (zh) 大容量存储设备的地址转换方法与装置
KR20220045216A (ko) 유형화된 메모리 액세스에 대한 유형화되지 않은 메모리 액세스의 맵핑
EP3489832A1 (en) File access method and apparatus, and storage system
TWI764265B (zh) 用於將資料連結至記憶體命名空間的記憶體系統
EP4105770A1 (en) B+ tree access method and apparatus, and computer-readable storage medium
KR20170038853A (ko) 호스트-관리 비휘발성 메모리
WO2022095346A1 (zh) 一种区块链数据存储方法、***、设备及可读存储介质
US20120216003A1 (en) Semiconductor device and memory protection method
CN110869916B (zh) 用于两层写时复制的方法和装置
CN115794669A (zh) 一种扩展内存的方法、装置及相关设备
CN115079957A (zh) 请求处理方法、装置、控制器、设备及存储介质
JPWO2021218038A5 (ko)
CN112748854B (zh) 对快速存储设备的优化访问
CN110362509B (zh) 统一地址转换方法与统一地址空间
JP7204020B2 (ja) 制御方法
Zhang et al. Research on persistent memory file system optimization
CN117093132A (zh) 数据处理方法、装置、处理器及计算机***
Oikawa Adapting byte addressable memory storage to user-level file system services
KR20210043001A (ko) 하이브리드 메모리 시스템 인터페이스

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant