KR101534540B1 - 메모리 이동을 실행하는 방법 및 장치 - Google Patents

메모리 이동을 실행하는 방법 및 장치 Download PDF

Info

Publication number
KR101534540B1
KR101534540B1 KR1020137024310A KR20137024310A KR101534540B1 KR 101534540 B1 KR101534540 B1 KR 101534540B1 KR 1020137024310 A KR1020137024310 A KR 1020137024310A KR 20137024310 A KR20137024310 A KR 20137024310A KR 101534540 B1 KR101534540 B1 KR 101534540B1
Authority
KR
South Korea
Prior art keywords
memory
physical address
operating system
computer
moved
Prior art date
Application number
KR1020137024310A
Other languages
English (en)
Other versions
KR20130127511A (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 KR20130127511A publication Critical patent/KR20130127511A/ko
Application granted granted Critical
Publication of KR101534540B1 publication Critical patent/KR101534540B1/ko

Links

Images

Classifications

    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

메모리 이동을 실행하는 방법 및 장치에 대해 설명하며, 이는 컴퓨터 기술과 관련되어 있고 메모리 이동에 대한 기존의 동작 프로세스가 비교적 복잡하다는 문제를 해결하기 위해 발명되었다. 본 발명의 실시예에서 제공하는 기술적 솔루션은: 컴퓨터의 기본 입출력 시스템은, 이동될 메모리가 이동될 때, 이동될 메모리 내의 데이터를 컴퓨터의 운영체제 내의 제1 사용 불능 메모리로 이동시키는 것과, 기본 입출력 시스템은 이동될 메모리와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장하는 것을 포함한다. 본 발명의 실시예는 일반적인 컴퓨터 시스템 및 NUMA 아키텍처 하의 컴퓨터 시스템에 적용될 수 있다.

Description

메모리 이동을 실행하는 방법 및 장치{METHOD AND DEVICE FOR IMPLEMENTING MEMORY MIGRATION}
본 발명은 컴퓨터 기술에 관한 것이며, 구체적으로는 메모리 이동을 실행하는 방법 및 장치에 관한 것이다.
컴퓨터의 중요한 구성 부품 중 하나로서, 메모리는 컴퓨터의 성능에 큰 영향을 미친다. 서버 메모리의 용량이 급속히 늘어남에 따라, 메모리의 오류율도 상당히 높아지고 있다. 메모리에서 오류가 발생하면, 서비스가 중단되거나 시스템의 전원이 차단되어, 사용자에게 불가피하게 손실을 끼친다. 시스템의 오류허용률(error-tolerant rate)를 높이기 위해, 오류가 반복적으로 발생하는 메모리 영역을 이동시켜 분리하는 것이 가능하고, 이 경우는 통상적으로 하나 또는 수 개의 메모리 페이지의 입도 크기(granular size)의 이동이다. 메모리 이동은 또한 시스템의 전력 소모를 감소시킬 수 있으며, 이 경우는 통상적으로 듀얼 인라인 메모리 모듈(dual-inline-memory-modules: DIMM)의 수준에 대체로 미치는 큰 입도의 이동이다.
종래기술에서, 메모리 이동을 실현하는 특정한 프로세스는 이하의 단계를 포함한다: 운영체제(OS)의 관리 프로그램이 송신한 메모리 이동 명령을 수신하면, 시스템의 관련 제어기는 백업 메모리를 초기화하여 백업 메모리의 어드레스 공간 및 이동될 메모리의 어드레스 공간을 다시 어드레싱하고 이에 따라 백업 메모리 및 이동될 메모리가 동일한 어드레스 버스를 사용하며; 기본 입출력 시스템(BIOS)은 이동될 메모리 내의 데이터를 백업 메모리에 복사하며; 복사를 완료하면, 이동될 메모리는 사용이 중지되고 백업 메모리가 초기화되어 사용되며, 이에 따라 OS가 그 이동될 메모리에 다시 액세스하면, 이동될 원래의 메모리의 물리 어드레스를 통해 백업 메모리에 저장되어 있는 데이터에 직접 액세스할 수 있다.
종래기술에서는 메모리가 이동될 때마다 백업 메모리를 초기화해야 하며, 따라서 메모리 이동을 위한 동작 프로세스가 비교적 복잡하다.
본 발명의 실시예는 메모리 이동을 실행하는 방법 및 장치를 제공하며, 이에 따라 간단한 동작 프로세스를 통해 메모리 이동을 실현한다.
한 관점에 따르면, 메모리 이동을 실행하는 방법이 제공되며, 상기 방법은,
이동될 메모리가 이동될 때, 컴퓨터의 기본 입출력 시스템(basic input-output system)이, 상기 이동될 메모리 내의 데이터를 상기 컴퓨터의 운영체제의 제1 사용 불능 메모리로 이동시키는 단계; 및 상기 기본 입출력 시스템이, 상기 이동될 메모리의 물리 어드레스와 상기 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장하는 단계를 포함하며, 상기 제1 사용 불능 메모리는 상기 운영체제의 원래의 사용 가능 메모리로부터 미리 변환되어 있으며, 상기 운영체제에 보류로 설정되어 있고, 상기 운영체제에 의해 변경될 수 없고 상기 운영체제에 액세스될 수 없는 메모리이다.
다른 관점에 따르면, 메모리 이동을 실현하는 장치가 제공되며, 상기 장치는,
이동될 메모리가 이동될 때, 컴퓨터의 기본 입출력 시스템이, 상기 이동될 메모리 내의 데이터를 상기 컴퓨터의 운영체제의 제1 사용 불능 메모리로 이동시키도록 구성되어 있는 제1 이동 모듈; 및 상기 기본 입출력 시스템이, 상기 이동될 메모리의 물리 어드레스와 상기 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장하도록 구성되어 있는 저장 모듈을 포함하며, 상기 제1 사용 불능 메모리는 상기 운영체제의 원래의 사용 가능 메모리로부터 미리 변환되어 있으며, 상기 운영체제에 보류로 설정되어 있고, 상기 운영체제에 의해 변경될 수 없고 상기 운영체제에 액세스될 수 없는 메모리이다.
본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 방법 및 장치에 의하면, 이동될 메모리가 이동될 때, 그 이동될 메모리 내의 데이터가 기본 입출력 시스템에 의해 제1 사용 불능 메모리에 이동되고, 그 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계가 저장되며, 이에 의해 메모리 이동이 실행된다. 본 발명의 실시예에서 제공하는 기술적 솔루션에서 메모리 이동이 수행될 때는, 제1 사용 불능 메모리가 미리 변환되어 있기 때문에, 제1 사용 불능 메모리를 초기화하는 프로세스가 생략되며, 따라서 메모리 이동 동작 프로세스가 비교적 복잡한 종래기술에서의 문제를 해결한다.
본 발명의 실시예의 기술적 솔루션 및 종래기술에 대한 설명을 더 명확하게 하기 위해, 실시예 또는 종래기술에 대한 설명에서 사용되는 데 필요한 첨부된 도면에 대해 이하에 간략히 설명한다. 당연히, 이하에 설명되는 첨부된 도면은 본 발명의 일부의 실시예에 관한 것일 뿐이며, 당업자가 창조적 노력 없이 이러한 도면으로부터 다른 도면을 도출해내는 것이 가능하다.
도 1은 본 발명의 실시예 1에서 제공하는 메모리 이동을 실행하는 방법에 대한 흐름도이다.
도 2는 본 발명의 실시예 2에서 제공하는 메모리 이동을 실행하는 방법에 대한 흐름도이다.
도 3은 본 발명의 실시예 3에서 제공하는 메모리 이동을 실행하는 방법에 대한 흐름도이다.
도 4는 본 발명의 실시예 4에서 제공하는 메모리 이동을 실행하는 방법에 대한 흐름도이다.
도 5는 본 발명의 실시예 1에서 제공하는 메모리 이동을 실행하는 방법에 대한 흐름도이다.
도 6은 본 발명의 실시예 6에서 제공하는 메모리 이동을 실행하는 방법에 대한 흐름도이다.
도 7은 본 발명의 실시예 7에서 제공하는 메모리 이동을 실행하는 방법에 대한 제1 흐름도이다.
도 8은 본 발명의 실시예 7에서 제공하는 메모리 이동을 실행하는 방법에 대한 제2 흐름도이다.
도 9는 본 발명의 실시예 8에서 제공하는 메모리 이동을 실행하는 방법에 대한 흐름도이다.
도 10은 본 발명의 실시예 9에서 제공하는 메모리 이동을 실행하는 방법에 대한 흐름도이다.
도 11은 본 발명의 실시예 10에서 제공하는 메모리 이동을 실행하는 방법에 대한 제1 흐름도이다.
도 12는 본 발명의 실시예 10에서 제공하는 4개의 노드를 가지는 NUMA 아키텍처 시스템의 구조를 도시하는 개략도이다.
도 13은 본 발명의 실시예 10에서 제공하는 메모리 이동을 실행하는 방법에 대한 제2 흐름도이다.
도 14는 본 발명의 실시예 10에서 제공하는 메모리 이동을 실행하는 방법에 대한 제3 흐름도이다.
도 15는 본 발명의 실시예 11에서 제공하는 메모리 이동을 실현하는 장치의 구조를 도시하는 제1 개략도이다.
도 16은 본 발명의 실시예 11에서 제공하는 메모리 이동을 실현하는 장치의 구조를 도시하는 제2 개략도이다.
도 17은 도 15에 도시된 메모리 이동을 실현하는 장치 내의 제1 이동 모듈의 구조를 도시하는 개략도이다.
도 18은 도 15에 도시된 메모리 이동을 실현하는 장치 내의 저장 모듈의 구조를 도시하는 개략도이다.
도 19는 본 발명의 실시예 11에서 제공하는 메모리 이동을 실현하는 장치의 구조를 도시하는 제3 개략도이다.
도 20은 도 19에 도시된 메모리 이동을 실현하는 장치 내의 제2 이동 모듈의 구조를 도시하는 개략도이다.
도 21은 본 발명의 실시예 11에서 제공하는 메모리 이동을 실현하는 장치의 구조를 도시하는 제4 개략도이다.
도 22는 본 발명의 실시예 11에서 제공하는 메모리 이동을 실현하는 장치의 구조를 도시하는 제5 개략도이다.
도 23은 도 21에 도시된 메모리 이동을 실현하는 장치 내의 액세싱 모듈의 구조를 도시하는 개략도이다.
도 23은 본 발명의 실시예 11에서 제공하는 메모리 이동을 실현하는 장치의 구조를 도시하는 제6 개략도이다.
본 발명의 실시예에 따른 기술적 솔루션에 대해 본 발명의 실시예에 첨부된 도면을 참조하여 이하에 명확하게 완전하게 설명한다. 당연히, 이하에 설명되는 실시예는 본 발명의 실시예의 전부가 아닌 일부에 지나지 않는다. 본 발명의 실시예를 기반으로, 당업자가 창조적 노력 없이 획득할 수 있는 모든 다른 실시예는 모두 본 발명의 보호 범위 내에 있게 된다.
종래기술의 문제, 즉 메모리 이동 동작 프로세스가 비교적 복잡한 문제를 해결하기 위해, 본 발명의 실시예는 메모리 이동을 실행하는 방법 및 장치를 제공한다.
도 1에 도시된 바와 같이, 본 발명의 실시예 1에서 제공하는 메모리 이동을 실행하는 방법은 이하의 단계를 포함한다.
단계 101: 이동될 메모리가 이동될 때, 컴퓨터의 기본 입출력 시스템(basic input-output system)이, 상기 이동될 메모리 내의 데이터를 컴퓨터의 운영체제의 제1 사용 불능 메모리로 이동시킨다.
본 실시예에서, 단계 101을 통해 이동될 메모리 내의 데이터를 컴퓨터의 운영체제(OS)의 제1 사용 불능 메모리로 이동시키는 프로세스에서, 이동될 메모리 내의 데이터는 제1 사용 불능 메모리 등에 복사될 수 있으며, 이에 대한 제약은 없다. 제1 사용 불능 메모리는 OS의 원래의 사용 가능 메모리로부터 미리 변환되어 있으며, OS에 대해 보류로 설정되어 있고, 운영체제에 의해 변경될 수 없고 운영체제에 액세스될 수 없는 메모리일 수 있다. 시스템이 메모리를 어드레싱을 개시하여 e820 맵(e820 map)을 생성하면, BIOS는 메모리를 규칙적으로 어드레싱하여 메모리의 일부를 OS에 대해 사용 가능으로 하고 메모리의 다른 일부를 OS에 대해 사용 불능으로 한다.
본 실시예에서, 컴퓨터의 OS의 원래의 사용 불능 메모리는 통상적으로 컴퓨터의 원래의 프로세스에 의해 점유되어 있으므로, 단계 101에서의 OS의 제1 사용 불능 메모리는 OS의 원래의 사용 불능 메모리로부터 미리 변환된 메모리의 일부일 수 있으며, 다른 수단에 의해 OS에 의해 새로 구성된 메모리의 일부일 수도 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다. 즉, 이동될 메모리 내의 데이터를 OS의 제1 사용 불능 메모리로 이동시키는 것은, 이동될 메모리 내의 데이터를, 원래의 사용 가능 메모리로부터 미리 변환된 메모리 내의 임의의 위치로 이동시킬 수 있는 것이며, 나머지 메모리 내의 데이터를, 원래의 사용 가능 메모리로부터 미리 변환된 메모리의 물리 어드레스의 순서에 따라, 원래의 사용 가능 메모리로부터 미리 변환된 메모리로 순차적으로 이동될 수도 있는 것이며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 실시예에서, 단계 101에서 이동될 메모리는 OS의 관리 프로그램에 의해 소정의 메모리에서 반복적인 오류가 발생하는 것이 발견된 작은 입도 메모리일 수 있으며, 이에 따라 이동 및 격리의 필요성이 있으며, 불균일 메모리 액세스(non uniform memory access: NUMA) 아키텍처에서 시스템의 열 소모를 절감하기 위해 열 제거(hot removal)의 필요성이 있는 노드 메모리일 수도 있다. 마찬가지로 다른 환경 하에서는 이동되어야 하는 메모리일 수도 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
단계 102: 기본 입출력 시스템이, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장한다.
본 실시예에서, 단계 102에서, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계는, 메모리 페이지 얼라인먼트 후의 이동될 메모리의 물리 어드레스와 메모리 페이지 얼라인먼트 후의 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계 등일 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다. 매핑 관계는 컴퓨터의 임의의 위치에 저장될 수 있으며, 매핑 관계를 위해 별도로 제공되는 플래시 메모리와 같은 저장 장치에 저장될 수도 있다. 다른 수단에 의해 매핑 관계를 저장할 수도 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 실시예에서 제공하는 메모리 이동을 실행하는 방법은 기본 입출력 시스템(BIOS)와 대응하는 컴퓨터 하드웨어를 결합하여 실현될 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 방법에서, 이동될 메모리가 이동될 때, 이동될 메모리 내의 데이터는 기본 입출력 시스템에 의해 제1 사용 불능 메모리로 이동되고, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계가 저장되며, 이에 의해 메모리 이동이 실행된다. 제1 사용 불능 메모리는 미리 변환되어 있기 때문에, 메모리 이동이 본 발명의 실시예에서 제공하는 기술적 솔루션에서 수행될 때, 제1 사용 불능 메모리를 초기화하는 프로세스는 생략되며, 따라서 종래기술의 문제, 즉 메모리 이동 동작 프로세스가 비교적 복잡한 문제가 해결된다.
도 2에 도시된 바와 같이, 본 발명의 실시예 2에서 제공하는 메모리 이동을 실행하는 방법은 이하의 단계를 포함한다.
단계 201: 기본 입출력 시스템이, 컴퓨터의 메모리를 초기화하고, 이에 따라 컴퓨터의 원래의 사용 가능 메모리 중 일부 메모리가 운영체제의 사용 불능 메모리로 변환된다.
본 실시예에서는, 메모리 이동 동작 프로세스를 간단히 하기 위해, 단계 201을 통해 컴퓨터의 메모리를 초기화하는 프로세스를 컴퓨터 시스템의 기동 시에 수행할 수 있다. 단계 201을 통해 컴퓨터의 메모리를 초기화하는 프로세스는 e820 맵을 생성하도록 메모리를 어드레싱함으로써 실행될 수 있으며, 다른 방법에 의해 실행될 수도 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다. 단계 201에서 컴퓨터의 메모리를 초기화하는 단계는, 컴퓨터의 원래의 사용 가능 메모리 중 일부 메모리를 OS에 대해 사용 불능인 메모리로 변환하는 단계를 포함할 뿐만 아니라, OS의 사용 불능 메모리의 크기를 설정하는 단계 등을 포함할 수 있으며, 이에 대한 제약은 없다. OS의 사용 불능 메모리의 크기를 설정하는 단계는 OS의 사용 불능 메모리를 고정 크기의 메모리로 설정할 수 있는 단계일 수도 있고, OS의 사용 불능 메모리를 조정 가능한 크기의 메모리로 설정할 수도 있는 단계일 수도 있으며 - 즉, OS의 사용 불능 메모리의 크기는 시스템 메모리의 크기에 따라 BIOS에 설정된다.
단계 202 - 단계 203: 컴퓨터의 기본 입출력 시스템이, 이동될 메모리를 이동시키고, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장한다.
본 실시예에서, 단계 202 내지 단계 203에서의 제1 사용 불능 메모리는 단계 201에서 변환에 의해 획득된 사용 불능 메모리의 일부일 수 있으며, 이에 대해서는 여기서 장황하게 설명하지 않는다. 단계 202 내지 단계 203의 특정한 프로세스는 도 1에 도시된 단계 101 내지 단계 102를 참조하여 알 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 실시예에서 제공하는 메모리 이동을 실행하는 방법은 BIOS와 대응하는 컴퓨터 하드웨어를 결합하여 실현될 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 방법에서, 이동될 메모리가 이동될 때, 이동될 메모리 내의 데이터는 기본 입출력 시스템에 의해 제1 사용 불능 메모리로 이동되고, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계가 저장되며, 이에 의해 메모리 이동이 실행된다. 제1 사용 불능 메모리는 미리 변환되어 있기 때문에, 메모리 이동이 본 발명의 실시예에서 제공하는 기술적 솔루션에서 수행될 때, 제1 사용 불능 메모리를 초기화하는 프로세스는 생략되며, 따라서 종래기술의 문제, 즉 메모리 이동 동작 프로세스가 비교적 복잡한 문제가 해결된다.
도 3에 도시된 바와 같이, 본 발명의 실시예 3에서 제공하는 메모리 이동을 실행하는 방법은 이하의 단계를 포함한다.
단계 301: 기본 입출력 시스템이, 컴퓨터의 메모리를 초기화한다. 이 단계의 특정한 프로세스는 도 2에 도시된 단계 201을 참조하면 알 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
단계 302: 기본 입출력 시스템이, 운영체제의 사용 불능 메모리로부터 제1 사용 불능 메모리를 획득한다.
본 실시예에서, 단계 302를 통해 사용 불능 메모리로부터 제1 사용 불능 메모리를 획득하는 단계는, BIOS가 사용 불능 메모리의 물리 어드레스의 순서에 따라 사용 불능 메모리로부터 순차적으로 이동될 메모리와 동일한 크기의 제1 사용 불능 메모리를 획득하는 단계일 수 있다.
단계 303: 기본 입출력 시스템이, 이동될 메모리 내의 데이터를 제1 사용 불능 메모리로 이동시킨다.
본 실시예에서, 단계 303을 통해 이동될 메모리 내의 데이터를 제1 사용 불능 메모리로 이동시키는 프로세스는 이동될 메모리 내의 데이터를 제1 사용 불능 메모리에 복사하는 프로세스 등이 될 수 있으며, 이에 대한 제약은 없다.
단계 304: 기본 입출력 시스템이, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장한다. 이 단계의 특정 프로세스는 도 1에 도시된 단계 102를 참조하면 알 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 실시예에서 제공하는 메모리 이동을 실행하는 방법은 BIOS와 대응하는 컴퓨터 하드웨어를 결합하여 실현될 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 방법에서, 이동될 메모리가 이동될 때, 이동될 메모리 내의 데이터는 기본 입출력 시스템에 의해 제1 사용 불능 메모리로 이동되고, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계가 저장되며, 이에 의해 메모리 이동이 실행된다. 제1 사용 불능 메모리는 미리 변환되어 있기 때문에, 메모리 이동이 본 발명의 실시예에서 제공하는 기술적 솔루션에서 수행될 때, 제1 사용 불능 메모리를 초기화하는 프로세스는 생략되며, 따라서 종래기술의 문제, 즉 메모리 이동 동작 프로세스가 비교적 복잡한 문제가 해결된다.
도 4에 도시된 바와 같이, 본 발명의 실시예 4에서 제공하는 메모리 이동을 실행하는 방법은 이하의 단계를 포함한다.
단계 401: 컴퓨터의 기본 입출력 시스템이, 이동될 메모리 내의 데이터를 제1 사용 불능 메모리로 이동시킨다. 이 단계의 특정 프로세스는 도 1에 도시된 단계 101을 참조하면 알 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
단계 402: 기본 입출력 시스템이, 이동될 메모리의 물리 어드레스에 대한 메모리 페이지 얼라인먼트(memory page alignment)를 수행하여 제1 물리 어드레스를 획득한다.
단계 403: 기본 입출력 시스템이, 제1 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장한다.
본 실시예에서, 남아 있는 메모리 내의 데이터를 OS가 이어서 용이하게 사용하도록 하기 위해, 단계 402를 통해 이동될 메모리의 물리 어드레스를 먼저 정렬하고, 그런 다음 단계 403을 통해 정렬된 남아 있는 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장하는 것이 가능하다.
본 실시예에서 제공하는 메모리 이동을 실행하는 방법은 BIOS와 대응하는 컴퓨터 하드웨어를 결합하여 실현될 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 방법에서, 이동될 메모리가 이동될 때, 이동될 메모리 내의 데이터는 기본 입출력 시스템에 의해 제1 사용 불능 메모리로 이동되고, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계가 저장되며, 이에 의해 메모리 이동이 실행된다. 제1 사용 불능 메모리는 미리 변환되어 있기 때문에, 메모리 이동이 본 발명의 실시예에서 제공하는 기술적 솔루션에서 수행될 때, 제1 사용 불능 메모리를 초기화하는 프로세스는 생략되며, 따라서 종래기술의 문제, 즉 메모리 이동 동작 프로세스가 비교적 복잡한 문제가 해결된다.
도 5에 도시된 바와 같이, 본 발명의 실시예 5에서 제공하는 메모리 이동을 실행하는 방법은 이하의 단계를 포함한다.
단계 501: 컴퓨터의 기본 입출력 시스템이, 이동될 메모리 내의 운영체제에 의해 이동 가능한 메모리 내의 데이터를 컴퓨터의 제1 유휴 메모리로 이동시킨다.
본 실시예에서, OS는 일부의 메모리의 이동을 실현할 수 있지만, 대부분의 커널 모드 메모리의 이동은 실현할 수 없기 때문에, 단계 501에서 운영체제에 의해 이동 가능한 메모리는 대량의 사용자 모드 메모리 및/또는 소량의 커널 모드 메모리를 포함할 수 있다.
본 실시예에서, 단계 501에서의 제1 유휴 메모리는 컴퓨터가 현재 점유하고 있지 않은 메모리의 일부일 수 있으며; 즉, OS에 의해 이동 가능한 메모리 내의 데이터를 제1 유휴 메모리로 이동시키는 단계는, OS에 의해 이동 가능한 메모리 내의 데이터를 컴퓨터가 현재 점유하고 있지 않은 메모리 내의 임의의 위치로 이동시키는 단계일 수 있으며, 컴퓨터가 현재 점유하고 있지 않은 메모리의 물리 어드레스의 순서에 따라, OS에 의해 이동될 수 있는 메모리 내의 데이터를 컴퓨터가 현재 점유하고 있지 않은 메모리로 순차적으로 이동시키는 단계일 수도 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 실시예에서, 단계 501에서 OS에 의해 이동 가능한 메모리 내의 데이터를 제1 유휴 메모리로 이동시키는 단계는, OS가 먼저, OS에 의해 이동 가능한 메모리를 인용하는 모든 프로세스에 대해 수면 동작(sleeping operation)을 수행하는 단계, 둘째, 메모리의 일부, 즉 제1 유휴 메모리를 컴퓨터가 현재 점유하고 있지 않은 메모리에 할당하는 단계, OS에 의해 이동 가능한 메모리 내의 데이터를 제1 유휴 메모리로 이동시키는 단계, 뒤이어 OS가, OS에 의해 이동 가능한 메모리에 대응하는 페이지 테이블 엔트리를 삭제하는 단계, 및 OS에 의해 이동 가능한 메모리를 인용하는 모든 프로세스에서의 페이지 테이블 엔트리가 제1 유휴 메모리로 지향되도록 상기 페이지 테이블 엔트리를 갱신하는 단계, 및 마지막으로 OS가 수면 프로세스를 깨우는 단계를 포함할 수 있다. 단계 501에서 OS에 의해 이동 가능한 메모리 내의 데이터는 또한 다른 수단에 의해 제1 유휴 메모리로 이동될 수 있으며, 이에 대한 제한은 없다. 컴퓨터가 현재 점유하고 있지 않은 메모리 내의 OS에 의해 할당된 메모리는 고정 크기의 사전설정된 메모리일 수도 있고, OS에 의해 이동 가능한 메모리의 크기에 따라 할당된 메모리일 수도 있고, 또는 다른 수단에 의해 할당된 메모리일 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 발명의 실시예에서, 단계 501에서 OS에 의해 이동 가능한 메모리 내의 데이터를 제1 유휴 메모리로 이동시키는 단계에서는, OS에 의해 이동 가능한 메모리 내의 데이터를 제1 유휴 메모리로 직접 이동시킬 수 있을 뿐만 아니라, 먼저 OS에 의해 이동 가능한 메모리가 현재 사용 중인지를 질의할 수도 있으며, 현재 사용 중이면, OS에 의해 이동 가능한 메모리 내의 데이터를 제1 유휴 메모리로 이동시킨다. OS에 의해 이동 가능한 메모리 내의 데이터를 다른 수단에 의해 제1 유휴 메모리로 이동시키는 것도 가능하며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 실시예에서, 단계 501에서 이동될 메모리는 OS의 관리 프로그램에 의해 소정의 메모리에서 반복적인 오류가 발생하는 것이 발견된 작은 입도 메모리일 수 있으며, 그러므로 이동 및 격리의 필요성이 있으며, NUMA 아키텍처에서 시스템의 열 소모를 절감하기 위해 열 제거의 필요성이 있는 노드 메모리일 수도 있다. 마찬가지로 다른 환경 하에서는 이동되어야 하는 메모리일 수도 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
단계 502: 컴퓨터의 기본 입출력 시스템이, 남아 있는 메모리 내의 데이터를 제2 사용 불능 메모리로 이동시킨다.
본 발명의 실시예에서, 단계 501에서 OS에 의해 이동 가능한 메모리 내의 데이터를 제1 유휴 메모리로 이동시키는 단계는 OS에 의해 실현되는 반면, 단계 502에서 OS에 의해 이동 가능한 메모리 내의 데이터를 제2 유휴 메모리로 이동시키는 단계는 BIOS에 의해 실현된다. 컴퓨터 시스템의 제어 권한(control right)을 OS로부터 BIOS로 전달하기 위해, OS를 수면 상태로 놔두고, 또는 다른 수단에 의해 상기 전달을 수행하는 것이 가능하며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다. 단계 502에서 남아 있는 메모리는, OS에 의해 이동 가능한 메모리를 제외한, 이동될 메모리 내의 메모리일 수 있다.
본 실시예에서, 단계 501에서 남아 있는 메모리 내의 데이터를 제2 사용 불능 메모리로 이동시키는 프로세스는 남아 있는 메모리 내의 데이터를 제2 사용 불능 메모리에 복사하는 프로세스 등이 될 수 있으며, 이에 대한 제약은 없다. 제2 사용 불능 메모리는 제1 사용 불능 메모리의 일부일 수 있다.
단계 503: 기본 입출력 시스템이, 남아 있는 메모리의 물리 어드레스와 제2 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장한다.
본 실시예에서, 단계 503을 통해 남아 있는 메모리의 물리 어드레스와 제2 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장하는 프로세스는 도 1에 도시된 단계 102를 참조하면 알 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 실시예에서 제공하는 메모리 이동을 실행하는 방법은 BIOS와 대응하는 컴퓨터 하드웨어를 결합하여 실현될 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 방법은 컴퓨터의 BIOS와의 결합으로 OS를 통해 메모리 이동을 실행하고, 메모리 이동의 융통성을 향상시킨다.
본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 방법에서, 이동될 메모리가 이동될 때, 이동될 메모리 내의 데이터는 기본 입출력 시스템에 의해 제1 사용 불능 메모리로 이동되고, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계가 저장되며, 이에 의해 메모리 이동이 실행된다. 제1 사용 불능 메모리는 미리 변환되어 있기 때문에, 메모리 이동이 본 발명의 실시예에서 제공하는 기술적 솔루션에서 수행될 때 생략되며, 따라서 종래기술의 문제, 즉 메모리 이동 동작 프로세스가 비교적 복잡한 문제가 해결된다.
도 6에 도시된 바와 같이, 본 발명의 실시예 6에서 제공하는 메모리 이동을 실행하는 방법은 이하의 단계를 포함한다.
단계 601: 이동될 메모리가 이동될 때, 이동될 메모리로부터 운영체제에 의해 이동 가능한 메모리를 획득하며, 메모리의 이동은 운영체제에 의해 지원된다.
본 실시예에서, OS는 일부 메모리의 이동을 실행할 수 있으나, 대부분의 커널 모드 메모리의 이동을 실행할 수는 없기 때문에, 단계 601에서의 OS에 의해 이동 가능한 메모리는 주로 사용자 모드 메모리를 포함할 수 있으며, 수 개의 커널 모드 메모리도 포함할 수 있다.
본 실시예에서, 이동될 메모리로부터 운영체제에 의해 이동 가능한 메모리를 획득하며, 데이터의 이동이 운영체제에 의해 지원되는 단계에서는, OS가 이동될 메모리로부터 OS에 의해 이동 가능한 메모리를 직접 획득할 수 있을 뿐만 아니라, OS가 이동될 메모리를 먼저 확정한 다음, 확정 결과에 따라 이동될 메모리로부터 OS에 의해 이동 가능한 메모리를 획득할 수 있다. OS가 다른 수단에 의해 이동될 메모리로부터 OS에 의해 이동 가능한 메모리를 획득하는 것이 가능하며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
단계 602: 운영체제가, 운영체제에 의해 이동 가능한 메모리를 인용하는 모든 프로세스에 대해 수면 동작을 수행한다.
단계 603: 운영체제가, 컴퓨터의 비점유 메모리에 제1 유휴 메모리를 할당한다.
본 실시예에서, 단계 603에서 컴퓨터의 비점유 메모리에 제1 유휴 메모리를 할당하는 단계에서는, 컴퓨터의 비점유 메모리의 임의의 위치에 제1 유휴 메모리를 할당할 수 있을 뿐만 아니라, 컴퓨터의 비점유 메모리의 물리 어드레스의 순서에 따라 제1 유휴 메모리를 순차적으로 할당할 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
단계 604: 운영체제가, 이동 메모리 내의 모든 페이지를 제1 유휴 메모리에 복사한다.
단계 605: 운영체제가, 운영체제에 의해 이동 가능한 메모리가 대응하는 모든 페이지 테이블 엔트리를 삭제한다.
단계 606: 운영체제가, 운영체제에 의해 이동 가능한 메모리를 인용하는 모든 프로세스의 페이지 테이블 엔트리를 갱신하고, 이에 따라 그 갱신된 페이지 테이블 엔트리가 제1 유휴 메모리로 지향한다.
단계 607: 운영체제가, 수면 동작이 진행된 프로세스를 깨운다.
본 실시예에서, 단계 602에서 수면 동작이 진행된 프로세스는 단계 607을 통해 깨워질 있으며, 이에 따라 이러한 프로세스는 계속해서 관련 동작을 수행할 수 있다.
단계 608 내지 단계 609: 기본 입출력 시스템에서, 남아 있는 메모리 내의 데이터를 제1 사용 불능 메모리로 이동시키고, 남아 있는 메모리의 물리 어드레스 및 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장한다. 이의 특정 프로세스는 도 5에 도시된 단계 502 내지 단계 503을 참조하면 알 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 실시예에서 제공하는 메모리 이동을 실행하는 방법은 기본 입출력 시스템(BIOS)와 대응하는 컴퓨터 하드웨어를 결합하여 실현될 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 방법에서, 이동될 메모리가 이동될 때, 이동될 메모리 내의 데이터는 기본 입출력 시스템에 의해 제1 사용 불능 메모리로 이동되고, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계가 저장되며, 이에 의해 메모리 이동이 실행된다. 제1 사용 불능 메모리는 미리 변환되어 있기 때문에, 메모리 이동이 본 발명의 실시예에서 제공하는 기술적 솔루션에서 수행될 때, 제1 사용 불능 메모리를 초기화하는 프로세스는 생략되며, 따라서 종래기술의 문제, 즉 메모리 이동 동작 프로세스가 비교적 복잡한 문제가 해결된다.
도 7에 도시된 바와 같이, 본 발명의 실시예 7에서 제공하는 메모리 이동을 실행하는 방법은 이하의 단계를 포함한다.
단계 701 내지 단계 702: 이동될 메모리가 이동될 때, 기본 입출력 시스템이, 이동될 메모리 내의 데이터를 제1 사용 불능 메모리로 이동시키고, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장한다. 이의 특정 프로세스는 도 1에 도시된 단계 101 내지 단계 102를 참조하여 알 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
단계 703: 운영체제가 목표 물리 어드레스를 액세스할 때, 컴퓨터에 저장되어 있는 매핑 관계에 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단한다.
본 실시예에서, 단계 702를 통해 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장할 때, 컴퓨터에 저장되어 있는 콘텐츠가 이동될 메모리의 원래의 물리 어드레스와 제1 사용 불능 메모리의 원래의 물리 어드레스 간의 매핑 관계이면, 단계 703을 통해 컴퓨터에 저장되어 있는 매핑 관계에 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하는 단계에서는 먼저 컴퓨터에 저장되어 있는 매핑 관계에 대해 메모리 페이지 얼라인먼트를 각각 수행하고, 후속으로 제1 사용 불능 메모리의 물리 어드레스에 대한 메모리 페이지 얼라인먼트를 수행하며, 최종적으로 컴퓨터에 저장되어 있는 매핑 관계에 대해 메모리 페이지 얼라인먼트를 수행함으로써 획득된 매핑 관계에, 제1 사용 불능 메모리의 물리 어드레스에 대해 메모리 페이지 얼라인먼트를 수행함으로써 획득된 물리 어드레스가 존재하는지를 판단한다. 컴퓨터에 저장되어 있는 콘텐츠가, 메모리 페이지 얼라인먼트 후의 이동될 메모리의 물리 어드레스와 메모리 페이지 얼라인먼트 후의 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계이면, 단계 703을 통해 컴퓨터에 저장되어 있는 매핑 관계에 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하는 프로세스는, 먼저 목표 물리 어드레스에 대한 메모리 페이지 얼라인먼트를 수행하는 단계, 및 후속으로 컴퓨터에 저장되어 있는 매핑 관계에, 목표 물리 어드레스에 대한 메모리 페이지 얼라인먼트를 수행한 후에 획득된 목표 물리 어드레스가 존재하는지를 판단하는 단계를 포함한다. 단계 703에서 컴퓨터에 저장되어 있는 매핑 관계에, 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하는 단계는 또한 다른 수단에 의해서도 수행될 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 실시예에서, 단계 703을 통해, 컴퓨터에 저장되어 있는 매핑 관계에, 목표 물리 어드레스가 대응하는 매핑 관계가 존재하지 않는 것으로 판단되면, 즉 어드레스 변환을 수행할 필요가 없는 것으로 판단되면, OS는 물리 어드레스가 속하는 메모리에 직접 액세스할 수 있으며; 컴퓨터에 저장되어 있는 매핑 관계에, 목표 물리 어드레스가 대응하는 매핑 관계가 존재하면, OS는 단계 704를 통해 목표 물리 어드레스의 변환 후에 메모리에 액세스할 수 있다.
단계 704: 목표 물리 어드레스가 대응하는 매핑 관계가 존재할 때, 운영체제는, 목표 물리 어드레스가 대응하는 매핑 관계에 따라 제1 사용 불능 메모리 내의 데이터를 액세스한다.
본 실시예에서, 단계 703을 통해 컴퓨터에 저장되어 있는 매핑 관계에 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단할 때, 컴퓨터에 저장되어 있는 매핑 관계가 남아 있는 메모리의 원래의 물리 어드레스와 제1 사용 불능 메모리의 원래의 물리 어드레스 간의 매핑 관계이면, 단계 704를 통해 목표 물리 어드레스가 대응하는 매핑 관계에 따라 제1 사용 불능 메모리 내의 데이터에 액세스하는 특정 프로세스는, 먼저 이동될 메모리의 원래의 물리 어드레스에 대해 메모리 페이지 얼라인먼트를 수행하여 이동될 메모리의 편이량(offset)을 획득하는 단계, 후속으로 목표 물리 어드레스가 대응하는 매핑 관계에 따라 목표 물리 어드레스에 대응하는 제1 사용 불능 메모리의 제2 물리 어드레스를 획득하는 단계, 및 운영체제가 오프셋과 제2 물리 어드레스와의 합에 따라 제1 사용 불능 메모리 내의 데이터에 액세스하는 단계를 포함할 수 있다. 컴퓨터에 저장되어 있는 매핑 관계가 물리 어드레스 간의 매핑 관계이면, 메모리 페이지 얼라인먼트 후의 남아 있는 물리 어드레스와 메모리 페이지 얼라인먼트 후의 제1 사용 불능 메모리 간의 매핑 관계이면, 단계 704를 통해 목표 물리 어드레스가 대응하는 매핑 관계에 따라 제1 사용 불능 메모리 내의 데이터에 액세스하는 특정 프로세스는, 먼저 OS가 목표 물리 어드레스의 오프셋을 획득하는 단계, 후속으로 OS가 목표 물리 어드레스가 대응하는 매핑 관계에 따라 제1 사용 불능 메모리에 대응하는 제1 사용 불능 메모리의 제2 물리 어드레스를 획득하는 단계; 및 OS가 오프셋과 제2 물리 어드레스와의 합에 따라 제1 사용 불능 메모리 내의 데이터에 액세스하는 단계를 포함할 수 있다.
또한, 단계 703에서 컴퓨터 내에 저장되어 있는 매핑 관계에, 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하는 프로세스를 최적화하기 위해, 본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 방법은 도 8에 도시된 바와 같이, 이하의 단계를 더 포함할 수 있다.
단계 705: 목표 물리 어드레스가 속하는 메모리가 사용자 모드 메모리인지 커널 모드 메모리(kernel mode memory)인지를 판단한다.
본 실시예에서, 사용자 모드 메모리는 OS에 의해 이동 가능한 반면, 커널 모드 메모리는 OS에 의해 이동 가능하지 않기 때문에, 커널 모드 메모리는 BIOS에 의해서만 이동될 수 있으며, 커널 모드 메모리가 BIOS에 의해 이동된 후 커널 모드 메모리가 다시 액세스될 때, 매핑 관계 테이블 내의 매핑 관계를 통해 그 이동된 커널 모드 메모리의 메모리 위치를 획득할 필요가 있을 수 있는 반면, OS에 의해 이동된 사용자 모드 메모리에 있어서는, 갱신된 페이지 테이블 엔트리를 통해 직접 액세스될 수 있다. 그러므로 단계 703에서의 판단 프로세스를 간단하게 하기 위해, 먼저 단계 705를 통해 목표 물리 어드레스가 속하는 메모리가 사용자 모드 메모리인지 커널 모드 메모리인지를 판단할 수 있고, 목표 물리 어드레스가 속하는 메모리가 사용자 모드 메모리이면 페이지 테이블 엔트리를 통해 직접 액세스할 수 있는 반면; 목표 물리 어드레스가 속하는 메모리가 커널 모드 메모리이면, 단계 703을 통해 목표 물리 어드레스가 매핑 관계 테이블 내의 메모리 페이지 얼라인먼트를 이미 진행한 후의 어드레스에 대한 매핑 관계가 존재하는지를 다시 판단한다.
이 경우, 목표 물리 어드레스가 속하는 메모리가 커널 모드 메모리이면, 단계 703은 컴퓨터에 저장되어 있는 매핑 관계에, 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하는 단계가 될 수 있을 것이다.
본 실시예에서 제공하는 메모리 이동을 실행하는 방법은 기본 입출력 시스템(BIOS)와 대응하는 컴퓨터 하드웨어를 결합하여 실현될 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 방법에서, 이동될 메모리가 이동될 때, 이동될 메모리 내의 데이터는 기본 입출력 시스템에 의해 제1 사용 불능 메모리로 이동되고, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계가 저장되며, 이에 의해 메모리 이동이 실행된다. 제1 사용 불능 메모리는 미리 변환되어 있기 때문에, 메모리 이동이 본 발명의 실시예에서 제공하는 기술적 솔루션에서 수행될 때, 제1 사용 불능 메모리를 초기화하는 프로세스는 생략되며, 따라서 종래기술의 문제, 즉 메모리 이동 동작 프로세스가 비교적 복잡한 문제가 해결된다.
도 9에 도시된 바와 같이, 본 발명의 실시예 8에서 제공하는 메모리 이동을 실행하는 방법은 이하의 단계를 포함한다.
단계 901 내지 단계 902: 이동될 메모리가 이동될 때, 기본 입출력 시스템이, 이동될 메모리 내의 데이터를 제1 사용 불능 메모리로 이동시키고, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장한다. 이의 특정 프로세스는 도 1에 도시된 단계 101 내지 단계 102를 참조하여 알 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
단계 903: 목표 노드가 열 첨가되면(hot-added), 기본 입출력 시스템이, 목표 노드에 대해 메모리 어드레싱을 수행하여 목표 노드가 대응하는 물리 어드레스를 획득한다.
본 실시예에서는, 단계 903에서 목표 노드에 대해 메모리 어드레싱을 수행하면, 목표 노드가 원래 열 첨가된 노드일 때, 목표 노드에 대응하는 물리 어드레스는 불변으로 유지하는 것이 가능하고; 목표 노드가 원래 열 첨가된 노드가 아니면, 목표 노드의 물리 어드레스는 각각의 원래의 노드의 어드레스 공간 뒤에 위치할 수 있다.
단계 904: 기본 입출력 시스템이, 컴퓨터에 저장되어 있는 매핑 관계에 목표 노드가 대응하는 물리 어드레스가 존재하는지를 검사한다.
본 실시예에서는, 단계 904에서 컴퓨터에 저장되어 있는 매핑 관계에 목표 노드가 대응하는 물리 어드레스가 존재하는지를 검사함으로써, 컴퓨터에 저장되어 있는 매핑 관계에 목표 노드가 대응하는 물리 어드레스가 존재하지 않으면, 목표 노드를 직접 열 첨가하는 것이 가능하고; 컴퓨터에 저장되어 있는 매핑 관계에 목표 노드가 대응하는 물리 어드레스가 존재하면, 단계 905를 통해 목표 노드가 열 첨가된다.
단계 905: 기본 입출력 시스템이, 컴퓨터에 저장되어 있는 매핑 관계에 목표 노드가 대응하는 물리 어드레스가 존재하면, 그 매핑 관계에 따라 목표 노드가 대응하는 물리 어드레스에 대응하는 제1 사용 불능 메모리의 제3 물리 어드레스를 획득한다.
단계 906: 기본 입출력 시스템이, 제3 물리 어드레스가 속하는 메모리 내의 데이터를, 목표 노드에 대응하는 물리 어드레스가 속하는 메모리로 이동시킨다.
단계 907: 기본 입출력 시스템이, 컴퓨터에 저장되어 있는 매핑 관계로부터, 목표 노드가 대응하는 물리 어드레스의 매핑 관계를 삭제한다.
본 실시예에서 제공하는 메모리 이동을 실행하는 방법은 기본 입출력 시스템(BIOS)와 대응하는 컴퓨터 하드웨어를 결합하여 실현될 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 방법에서, 이동될 메모리가 이동될 때, 이동될 메모리 내의 데이터는 기본 입출력 시스템에 의해 제1 사용 불능 메모리로 이동되고, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계가 저장되며, 이에 의해 메모리 이동이 실행된다. 제1 사용 불능 메모리는 미리 변환되어 있기 때문에, 메모리 이동이 본 발명의 실시예에서 제공하는 기술적 솔루션에서 수행될 때, 제1 사용 불능 메모리를 초기화하는 프로세스는 생략되며, 따라서 종래기술의 문제, 즉 메모리 이동 동작 프로세스가 비교적 복잡한 문제가 해결된다.
당업자가 본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 방법 및 장치를 실행할 수 있도록 하기 위해, 본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 방법 및 장치를 구체적인 예를 들어 이하에 구체적으로 설명한다.
도 10에 도시된 바와 같이, 본 발명의 실시예 9에서 제공하는 메모리 이동을 실행하는 방법은 이하의 단계를 포함한다.
이하, OS의 관리 프로그램에 의해 소정의 메모리에서 반복적인 오류가 발생하는 것이 발견되고 이에 따라 이동 및 격리가 필요한 작은 입도 메모리를 예로 해서 설명한다.
본 실시예에서, 메모리 이동 동작 프로세스를 간단히 하기 위해, 단계 1001을 통해 컴퓨터의 메모리를 초기화하는 프로세스를 컴퓨터 시스템의 기동 시에 수행할 수 있다. 단계 1001을 통해 컴퓨터의 메모리를 초기화하는 프로세스는 e820 맵을 생성하도록 메모리를 어드레싱함으로써 실행될 수 있으며, 다른 방법에 의해 실행될 수도 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다. 단계 1001에서 컴퓨터의 메모리를 초기화하는 단계는, 컴퓨터의 원래의 사용 가능 메모리 중 일부 메모리를 OS에 대해 사용 불능인 메모리로 변환하는 단계를 포함할 뿐만 아니라, OS의 사용 불능 메모리의 크기를 설정하는 단계 등을 포함할 수 있으며, 이에 대한 제약은 없다. OS의 사용 불능 메모리의 크기를 설정하는 단계는 OS의 사용 불능 메모리를 고정 크기의 메모리로 설정하는 단계일 수도 있고, OS의 사용 불능 메모리를 조정 가능한 크기의 메모리로 설정할 수 있는 단계일 수도 있으며 - 즉, OS의 사용 불능 메모리의 크기는 시스템 메모리의 크기에 따라 BIOS에 설정된다.
본 실시예에서, OS는 메모리를 메모리 페이지의 단위로 관리하기 때문에, OS의 사용 불능 메모리의 크기를 복수의 메모리 페이지가 되어야 하고, 그 메모리는 메모리 이동 동안 메모리 페이지의 단위로 이동되어야 한다.
단계 1002: 이동될 메모리가 이동될 때, OS가 이동될 메모리가 유휴 상태인지를 판단한다.
본 실시예에서, 단계 1002를 통해 이동될 메모리가 유휴 상태인 것으로 판단되면, 시스템은 직접 복귀할 수 있고, 즉 이동될 메모리를 이동시킬 필요가 없고; 단계 1002를 통해 이동될 메모리가 사용 중인 것으로 판단되면, 이동될 메모리는 단계 1003을 통해 프로세스될 수 있다.
단계 1003: 이동될 메모리가 사용 중이면, 운영체제는, 운영체제가 이동될 메모리의 유형의 메모리의 이동을 지원하는지를 판단한다.
본 실시예에서, 단계 1003을 통해 운영체제가 이동될 메모리의 유형의 메모리의 이동을 지원하는지가 판단되며, 지원하지 않으면, 시스템은 직접 복귀할 수 있고; 지원하면, 단계 1004를 통해 OS에 의해 이동 가능한 메모리를 획득할 수 있다.
단계 1004: 운영체제가 이동될 메모리의 유형의 메모리의 이동을 지원하면, 이동될 메모리로부터 운영체제에 의해 이동 가능한 메모리를 획득하고, 메모리의 이동은 운영체제에 의해 지원된다.
본 실시예에서, OS는 일부의 메모리의 이동을 실현할 수 있지만, 대부분의 커널 모드 메모리의 이동은 실현할 수 없기 때문에, 단계 1004에서 OS에 의해 이동 가능한 메모리는 주로 사용자 모드 메모리를 포함할 수 있으며, 소량의 커널 모드 메모리를 포함할 수도 있다.
본 실시예에서, 단계 1004를 통해, 메모리의 이동이 OS에 의해 지원되고 이동될 메모리로부터 OS에 의해 이동 가능한 메모리를 획득하는 단계에서는, OS가 이동될 메모리로부터 OS에 의해 이동 가능한 메모리를 직접 획득할 수 있을 뿐만 아니라, OS가 먼저 이동될 메모리를 판단한 다음, 판단 결과에 따라 이동될 메모리로부터 OS에 의해 이동 가능한 메모리를 획득할 수 있다. OS가 다른 수단에 의해 이동될 메모리로부터, OS에 의해 이동 가능한 메모리를 획득하는 것도 가능하며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
단계 1005: 운영체제가, 운영체제에 의해 이동 가능한 메모리를 인용하는 모든 프로세스에 대해 수면 동작을 수행한다.
단계 1006: 운영체제가, 제1 유휴 메모리를 컴퓨터의 비점유 메모리에 할당한다.
본 실시예에서, 단계 1006에서 컴퓨터의 비점유 메모리에 제1 유휴 메모리를 할당하는 단계에서는, 컴퓨터의 비점유 메모리의 임의의 위치에 제1 유휴 메모리를 할당할 수 있을 뿐만 아니라, 컴퓨터의 비점유 메모리의 물리 어드레스의 순서에 따라 제1 유휴 메모리를 순차적으로 할당할 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
단계 1007: 운영체제가, 이동 가능한 메모리 내의 데이터를 제1 유휴 메모리에 복사한다.
단계 1008: 운영체제가, 운영체제에 의해 이동 가능한 메모리가 대응하는 모든 페이지 테이블 엔트리(page table entry)를 삭제한다.
단계 1009: 운영체제가, 운영체제에 의해 이동 가능한 메모리를 인용하는 모든 프로세스의 페이지 테이블 엔트리를 갱신하고, 이에 따라 그 갱신된 페이지 테이블 엔트리는 제1 유휴 메모리로 지향한다.
단계 1010: 운영체제가, 수면 동작이 진행된 프로세스를 깨운다.
단계 1011: 운영체제가, 이동될 메모리의 이동이 성공인지를 판단한다.
본 실시예에서, 단계 1011에서 이동될 메모리의 성공적인 이동은 이동될 메모리가 시스템의 다른 메모리에 전체적으로 복사된다는 것을 의미한다. 일부의 메모리만이 복사되면, 이것은 이동될 메모리의 이동이 실패임을 나타낸다. 단계 1011을 통해, 이동될 메모리의 이동이 성공인 것으로 판단되면, 시스템은 직접 복귀하고; 실패이면, 컴퓨터 시스템의 제어 권한이 단계 1012를 통해 OS로부터 BIOS로 위임된다.
단계 1012: 운영체제를 수면 상태로 놔두고, 제어 권한을 BIOS로 전달한다.
단계 1013: 기본 입출력 시스템이, 사용 불능 메모리로부터 제1 사용 불능 메모리를 획득한다.
본 실시예에서, 단계 1013을 통해 OS의 사용 불능 메모리로부터 제1 사용 불능 메모리를 획득하는 단계에서는, BIOS가 OS의 사용 불능 메모리의 물리 어드레스의 순서에 따라, OS의 사용 불능 메모리로부터, 이동될 메모리의 크기와 동일한 제1 사용 불능 메모리를 순차적으로 획득할 수 있다.
본 실시예에서, 제1 사용 불능 메모리는 단계 1013을 통해 OS의 사용 불능 메모리로부터 획득되며; 획득이 실패이면, 즉, OS의 사용 불능 메모리가 사용되어 버렸으면, BIOS는 메모리의 이동이 실패임을 사용자에 알리고; 획득이 성공이면, 이동될 메모리 내의 데이터는 단계 1014를 통해 제1 사용 가능한 메모리로 이동된다.
단계 1014: 기본 입출력 시스템이, 이동될 메모리 내의 데이터를 제1 사용 불능 메모리로 이동시킨다.
본 실시예에서, 단계 1014를 통해, 기본 입출력 시스템이, 이동될 메모리 내의 데이터를 제1 사용 불능 메모리로 이동시키는 프로세스에서는 이동될 메모리 내의 데이터를 제1 사용 불능 메모리로 복사하는 프로세스 등이 될 수 있으며, 이에 대한 제한은 없다.
단계 1015: 기본 입출력 시스템이, 이동될 메모리의 물리 어드레스에 대한 메모리 페이지 얼라인먼트를 수행하여 제1 물리 어드레스를 획득한다.
본 실시예에서, 단계 1015에서 이동될 메모리의 물리 어드레스는 컴퓨터의 저장 장치에 기록될 수 있으며, 컴퓨터의 다른 위치에도 기록될 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
단계 1016: 기본 입출력 시스템이, 제1 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장한다.
본 실시예에서는, OS가 남아 있는 메모리 내의 데이터를 후속으로 용이하게 사용할 수 있도록 하기 위해, 먼저 단계 1015를 통해 이동될 메모리의 물리 어드레스를 정렬한 다음, 단계 1016을 통해, 그 정렬된 남아 있는 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장하는 것이 가능하다.
단계 1017: 이동될 메모리의 이동이 종료되면, 기본 입출력 시스템이, 시스템의 제어 권한을 운영체제로 다시 전달한다.
단계 1018: 운영체제가, 물리 어드레스를 액세스하는 동안, 컴퓨터에 저장되어 있는 매핑 관계에, 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단한다.
본 실시예에서, 단계 1018을 통해, 컴퓨터에 저장되어 있는 매핑 관계에, 목표 물리 어드레스가 대응하는 매핑 관계가 존재하지 않는 것으로 판단되면, 시스템은 어드레스 변환을 수행하지 않고 목표 물리 어드레스가 속하는 메모리의 콘텐츠를 직접 어드레스할 수 있고; 존재하면, 단계 1019를 통해 목표 물리 어드레스의 편이량을 획득할 수 있다.
단계 1019: 운영체제가, 목표 물리 어드레스의 편이량을 획득한다.
단계 1020: 운영체제가, 목표 물리 어드레스가 대응하는 매핑 관계에 따라, 목표 물리 어드레스가 대응하는 제1 사용 불능 메모리의 제2 물리 어드레스를 획득한다.
단계 1021: 운영체제가, 편이량과 제2 물리 어드레스와의 합에 따라 제1 사용 불능 메모리 내의 데이터를 액세스한다.
본 실시예에서, 이동될 메모리는 OS의 관리 프로그램에 의해 송신된 커맨드에서 목표 물리 어드레스가 속하는 이동될 메모리일 수 있으며, 사용자가 수동으로 입력한 가상 어드레스에 따라 획득되는 이동될 메모리일 수도 있다. 통상적으로 메모리는 하나의 메모리 페이지를 단위로 해서 이동된다.
본 실시예에서 제공하는 메모리 이동을 실행하는 방법은 기본 입출력 시스템(BIOS)와 대응하는 컴퓨터 하드웨어를 결합하여 실현될 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 방법에서, 이동될 메모리가 이동될 때, 이동될 메모리 내의 데이터는 기본 입출력 시스템에 의해 제1 사용 불능 메모리로 이동되고, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계가 저장되며, 이에 의해 메모리 이동이 실행된다. 제1 사용 불능 메모리는 미리 변환되어 있기 때문에, 메모리 이동이 본 발명의 실시예에서 제공하는 기술적 솔루션에서 수행될 때, 제1 사용 불능 메모리를 초기화하는 프로세스는 생략되며, 따라서 종래기술의 문제, 즉 메모리 이동 동작 프로세스가 비교적 복잡한 문제가 해결된다.
도 11에 도시된 바와 같이, 본 발명의 실시예 10에서 제공하는 메모리 이동을 실행하는 방법은 이하의 단계를 포함한다.
이하, 이동될 메모리가 NUMA 아키텍처로 되어 있는 경우 노드 메모리가 열 첨가를 제거하여 시스템의 열 소모를 절감하는 예와 관련해서 설명한다.
단계 1101: 기본 입출력 시스템이, 컴퓨터의 메모리를 초기화하고, 이에 따라 컴퓨터의 운영체제의 원래의 사용 가능 메모리 중 일부 메모리가 운영체제의 사용 불능 메모리로 변환된다.
본 실시예에서는, 도 12에 도시된 바와 같이, 4개의 노드를 가지는 NUMA 아키텍처를 예로 해서 설명한다. NUMA 아키텍처에서의 각각의 노드는 중앙처리장치, 입출력 장치 및 메모리를 포함한다. 노드 0은 통상적으로 메인 노드로 설정되어 전체 시스템의 OS를 운용하고, 열 첨가되지 않는다. 단계 1101을 통해 원래의 사용 가능 메모리를 운영체제의 사용 불능 메모리로 변환하는 단계에서는, 노드 1의 메모리를 OS의 사용 불능 메모리로서 설정할 수 있다. 다른 노드들이 노드 1로 이동될 데이터를 쉽게 검색할 수 있도록 하기 위해, 노드 1의 메모리를, 노드 2 및 노드 3의 OS에 의해 이동될 수 없는 메모리에 각각 대응하는 2 부분으로 분할될 수 있다.
단계 1102: 운영체제는, 이동될 메모리에서의 운영체제에 의해 이동 가능한 메모리 내의 데이터를 컴퓨터의 제1 유휴 메모리로 이동시킨다.
본 실시예에서, 단계 1102에서의 제1 유휴 메모리는 열 첨가된 노드를 제외한 상대적으로 경부하의 임의의 다른 노드가 될 수 있다. 단계 1102에서 OS에 의해 이동 가능한 메모리 내의 데이터를 제1 유휴 메모리로 이동시키는 프로세스는 도 5의 단계 501을 참조하면 알 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
단계 1103: BIOS는, 남아 있는 메모리 내의 데이터를 제2 사용 불능 메모리로 이동시킨다. 이의 특정 프로세스는 도 5의 단계 502를 참조하면 알 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
단계 1104: 남아 있는 메모리의 물리 어드레스와 제2 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장한다. 이의 특정 프로세스는 도 5의 단계 503을 참조하면 알 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
단계 1105: 이동될 메모리의 이동을 완료하면, 이동될 메모리가 속하는 노드 내의 다른 장치를 열 제거한다.
또한, 본 실시예에서 제공하는 메모리 이동을 실행하는 방법은 도 13에 도시된 바와 같이, 노드들을 열 첨가할 수 있으며, 이하의 단계를 포함한다.
단계 1301: 목표 노드가 열 첨가되면, 기본 입출력 시스템은, 목표 노드에 대해 메모리 어드레싱을 수행하여 목표 노드가 대응하는 물리 어드레스를 획득한다.
본 실시예에서는, 단계 1301에서 목표 노드에 대해 메모리 어드레싱을 수행하면, 목표 어드레스가 열 제거된 원래의 노드일 때, 목표 노드에 대응하는 물리 어드레스가 불변으로 유지하는 것이 가능하고; 목표 노드가 원래 열 제거된 노드가 아니면, 목표 노드에 대응하는 물리 어드레스는 각각의 원래의 노드의 어드레스 공간 뒤에 위치할 수 있다.
단계 1302: 기본 입출력 시스템이, 컴퓨터에 저장되어 있는 매핑 관계에, 목표 노드가 대응하는 물리 어드레스가 존재하는지를 검사한다.
본 실시예에서, 단계 1302를 통해, 컴퓨터에 저장되어 있는 매핑 관계에 목표 노드가 대응하는 물리 어드레스가 존재하는지를 검사함으로써, 컴퓨터에 저장되어 있는 매핑 관계에 목표 노드가 대응하는 물리 어드레스가 존재하지 않으면, 목표 노드를 직접 열 첨가하는 것이 가능하고; 컴퓨터에 저장되어 있는 매핑 관계에 목표 노드가 대응하는 물리 어드레스가 존재하면, 단계 905를 통해 목표 노드가 열 첨가된다.
단계 1303: 기본 입출력 시스템이, 컴퓨터에 저장되어 있는 매핑 관계에 목표 노드가 대응하는 물리 어드레스가 존재하면, 그 매핑 관계에 따라 목표 노드가 대응하는 물리 어드레스에 대응하는 제1 사용 불능 메모리의 제3 물리 어드레스를 획득한다.
단계 1304: 기본 입출력 시스템이, 제3 물리 어드레스가 속하는 메모리 내의 데이터를, 목표 노드에 대응하는 물리 어드레스가 속하는 메모리로 이동시킨다.
단계 1305: 기본 입출력 시스템이, 컴퓨터에 저장되어 있는 매핑 관계로부터, 목표 노드가 대응하는 물리 어드레스의 매핑 관계를 삭제한다.
또한, 본 실시예에서 제공하는 메모리 이동을 실행하는 방법은 도 14에 도시된 바와 같이, 교차 노드 액세스를 더 수행할 수 있으며, 이하의 단계를 포함한다.
이하, 노드 0 내의 중앙처리장치가 노드 2 내의 메모리에 액세스하는 예에 관련해서 설명하되, 다른 교차 노드가 프로세스들에 액세스하는 것은 이하의 프로세스와 유사하므로, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
단계 1401: 노드 0이, 노드 2에의 액세스를 요구하는 어드레스 신호를 노드 2에 송신한다.
단계 1402: 노드 2가 그 어드레스 신호에 따라 열 제거되었는지를 판단한다.
본 실시예에서, 단계 1402를 통해, 노드 2가 열 제거되지 않은 것으로 판단되면, 노드 0은 노드 2의 메모리에 직접 액세스할 수 있으며, 노드 2가 열 제거된 것으로 판단되면, 컴퓨터에 저장되어 있는 매핑 관계는 단계 1403을 통해 획득된다.
단계 1403: 컴퓨터에 저장되어 있는 매핑 관계를 획득한다.
단계 1404: 컴퓨터에 저장되어 있는 매핑 관계에 따라 어드레스 신호의 어드레스 변환 후 노드 2 내의 메모리에 액세스한다.
본 실시예에서, 현재 노드의 중앙처리장치가 현재 노드의 메모리에 액세스해야 하면, 시스템은 직접 액세스할 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 실시예에서 제공하는 메모리 이동을 실행하는 방법은 BIOS와 대응하는 컴퓨터 하드웨어를 결합하여 실현될 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 방법에서, 이동될 메모리가 이동될 때, 이동될 메모리 내의 데이터는 기본 입출력 시스템에 의해 제1 사용 불능 메모리로 이동되고, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계가 저장되며, 이에 의해 메모리 이동이 실행된다. 제1 사용 불능 메모리는 미리 변환되어 있기 때문에, 메모리 이동이 본 발명의 실시예에서 제공하는 기술적 솔루션에서 수행될 때, 제1 사용 불능 메모리를 초기화하는 프로세스는 생략되며, 따라서 종래기술의 문제, 즉 메모리 이동 동작 프로세스가 비교적 복잡한 문제가 해결된다.
도 15에 도시된 바와 같이, 본 발명의 실시예 11에서 제공하는 메모리 이동을 실행하는 장치는 이하의 단계를 포함한다.
제1 이동 모듈(1501)은, 이동될 메모리가 이동될 때, 컴퓨터의 기본 입출력 시스템이, 이동될 메모리 내의 데이터를 컴퓨터의 운영체제의 제1 사용 불능 메모리로 이동시키도록 구성되어 있고, 제1 사용 불능 메모리는 운영체제의 원래의 사용 가능 메모리로부터 미리 변환되어 있으며, 운영체제에 보류로 설정되어 있고, 운영체제에 의해 변경될 수 없고 운영체제에 액세스될 수 없는 메모리이다.
제1 이동 모듈(1501)을 통해, 이동될 메모리 내의 데이터를, 컴퓨터의 OS의 제1 사용 불능 메모리에 이동하는 프로세스는 이동될 메모리 내의 데이터를 제1 사용 불능 메모리에 복사하는 등의 프로세스일 수 있으며, 이에 대한 제한은 없다. 제1 사용 불능 메모리는 원래의 사용 불능 메모리로부터 미리 변환될 수 있다. BIOS는 메모리에 불규칙하게 어드레싱할 수 있고 메모리에 어드레싱하면서 시스템 기동 시에 e820 맵을 생성하여, 메모리 중 일부를 OS에 대해 사용 가능하게 하고 메모리 중 다른 일부를 OS에 대해 사용 불능으로 한다.
본 실시예에서, 컴퓨터의 원래의 프로세스는 통상적으로 컴퓨터의 원래의 사용 불능 메모리를 점유하고 있으므로, 제1 이동 모듈(1501) 내의 제1 사용 불능 메모리는 원래의 사용 불능 메모리로부터 미리 변환된 메모리의 일부가 될 수 있으며, 다른 수단에 의해 OS에 의해 새로 변환된 메모리의 일부가 될 수도 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다. 바꾸어 말하면, 이동될 메모리 내의 데이터를 제1 사용 불능 메모리로 이동시키는 단계는, 이동될 메모리 내의 데이터를 원래의 사용 가능 메모리로부터 미리 변환된 메모리 내의 임의의 위치로 이동시키는 단계가 될 수 있으며, 원래의 사용 가능 메모리로부터 미리 변환된 메모리의 물리 어드레스의 순서에 따라, 남아 있는 메모리 내의 데이터를, 원래의 사용 가능 메모리로부터 미리 변환된 메모리로 순차적으로 이동시키는 단계도 될 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 실시예에서, 제1 이동 모듈(1501)에서 이동될 메모리는 OS의 관리 프로그램에 의해 소정의 메모리에서 반복적인 오류가 발생하는 것이 발견된 작은 입도 메모리일 수 있으며, 이에 따라 이동 및 격리의 필요성이 있으며, NUMA 아키텍처에서 시스템의 열 소모를 절감하기 위해 열 제거의 필요성이 있는 노드 메모리일 수도 있다. 마찬가지로 다른 환경 하에서는 이동되어야 하는 메모리일 수도 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
저장 모듈(1502)은 기본 입출력 시스템이, 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장하도록 구성되어 있다.
본 실시예에서, 이동된 메모리의 물리 어드레스와 저장 모듈(1502) 내의 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계는 메모리 페이지 얼라인먼트 후의 이동될 메모리의 물리 어드레스와 메모리 페이지 얼라인먼트 후의 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계 등일 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다. 매핑 관계는 컴퓨터의 임의의 위치에 저장될 수 있고, 매핑 관계를 위해 별도로 제공된 플래시 메모리와 같은 저장 매체에 저장될 수도 있다. 다른 수단에 의해 매핑 관계를 저장하는 것도 가능하며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
또한, 도 16에 도시된 바와 같이, 본 실시예에서 메모리 이동을 실행하는 장치는 또한 이하를 포함할 수 있다.
초기화 모듈(1500)은, 기본 입출력 시스템이 컴퓨터의 메모리를 초기화하도록 구성되어 있고, 이에 따라 컴퓨터의 원래의 사용 불능 메모리 중 일부 메모리가 운영체제의 사용 불능 메모리로 변환된다.
본 실시예에서는, 메모리 이동 동작 프로세스를 간단히 하기 위해, 초기화 모듈(1500)을 통해 컴퓨터의 메모리를 초기화하는 프로세스를 컴퓨터 시스템의 기동 시에 수행할 수 있다. 초기화 모듈(1500)을 통해 컴퓨터의 메모리를 초기화하는 프로세스는 e820 맵을 생성하도록 메모리를 어드레싱함으로써 실행될 수 있으며, 다른 방법에 의해 실행될 수도 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다. 초기화 모듈(1500)에서 컴퓨터의 메모리를 초기화하는 단계는, 컴퓨터의 원래의 사용 가능 메모리 중 일부 메모리를 OS에 대해 사용 불능인 메모리로 변환하는 단계를 포함할 뿐만 아니라, OS의 사용 불능 메모리의 크기를 설정하는 단계 등을 포함할 수 있으며, 이에 대한 제약은 없다. OS의 사용 불능 메모리의 크기를 설정하는 단계는 OS의 사용 불능 메모리를 고정 크기의 메모리로 설정할 수 있는 단계일 수도 있고, OS의 사용 불능 메모리를 조정 가능한 크기의 메모리로 설정할 수도 있는 단계일 수도 있으며 - 즉, OS의 사용 불능 메모리의 크기는 시스템 메모리의 크기에 따라 BIOS에 설정된다.
이 경우, 도 17에 도시된 바와 같이, 본 실시예에서의 제1 이동 모듈(1501)은 이하를 포함한다.
제1 메모리 획득 서브모듈(15011)은 기본 입출력 시스템이, 운영체제의 사용 불능 메모리로부터 제1 사용 불능 메모리를 획득하도록 구성되어 있다.
본 실시예에서, 제1 메모리 획득 서브모듈(15011)을 통해 OS의 사용 불능 메모리로부터 제1 사용 불능 메모리를 획득하는 단계는, BIOS가 OS의 사용 불능 메모리의 물리 어드레스의 순서에 따라, OS의 사용 불능 메모리로부터 순차적으로 이동될 메모리와 같은 크기의 제1 사용 불능 메모리를 획득하는 단계가 될 수 있다.
이동 서브모듈(15012)은 기본 입출력 시스템이, 이동될 메모리 내의 데이터를 제1 사용 불능 메모리로 이동시키도록 구성되어 있다.
본 실시예에서, 이동 서브모듈(15012)을 통해 이동될 메모리 내의 데이터를 제1 사용 불능 메모리로 이동시키는 프로세스는 이동될 메모리 내의 데이터를 제1 사용 불능 메모리에 복사하는 프로세스 등이 될 수 있으며, 이에 대한 제한은 없다.
또한, 도 18에 도시된 바와 같이, 본 실시예에서의 저장 모듈(1502)은 이하를 포함할 수 있다.
메모리 페이지 얼라이닝 서브모듈(memory page aligning sub-module)(15021)은 기본 입출력 시스템이, 이동될 메모리의 물리 어드레스에 대한 메모리 페이지 얼라인먼트를 수행하여 제1 물리 어드레스를 획득하도록 구성되어 있다.
저장 서브모듈(15022)은 기본 입출력 시스템이, 제1 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장하도록 구성되어 있다.
본 실시예에서는, OS가 남아 있는 메모리 내의 데이터를 후속으로 용이하게 사용할 수 있도록 하기 위해, 먼저 메모리 페이지 얼라이닝 서브모듈(15021)을 통해 이동될 메모리의 물리 어드레스를 정렬한 다음, 저장 모듈(15022)을 통해, 그 정렬된 남아 있는 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장하는 것이 가능하다.
또한, 도 19에 도시된 바와 같이, 본 실시예에서 메모리 이동을 실행하는 장치는 또한 이하를 포함할 수 있다.
제2 이동 모듈(1503)은 컴퓨터의 운영체제가, 이동될 메모리 내의 운영체제에 의해 이동 가능한 메모리 내의 데이터를 컴퓨터의 제1 유휴 메모리로 이동시키도록 구성되어 있다.
본 실시예에서, OS는 일부 메모리의 이동을 실행할 수 있으나, 대부분의 커널 모드 메모리의 이동을 실행할 수는 없기 때문에, 제2 이동 모듈(1503)에서의 OS에 의해 이동 가능한 메모리는 대량의 사용자 모드 메모리 및/또는 소량의 커널 모드 메모리를 포함할 수 있다.
본 실시예에서, 제2 이동 모듈(1503) 내의 제1 유휴 메모리는 컴퓨터가 현재 점유하고 있지 않은 메모리의 일부일 수 있으며; 바꾸어 말하면, OS에 의해 이동 가능한 메모리 내의 데이터를 제1 유휴 메모리로 이동시키는 단계는 OS에 의해 이동 가능한 메모리 내의 데이터를 컴퓨터가 현재 점유하고 있지 않은 메모리 내의 임의의 위치로 이동시키는 단계가 될 수 있으며, 컴퓨터가 현재 점유하고 있지 않은 메모리의 물리 어드레스의 순서에 따라, OS에 의해 이동 가능한 메모리 내의 데이터를 컴퓨터가 현재 점유하고 있지 않은 메모리로 순차적으로 이동시키는 단계도 될 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 실시예에서, 제2 이동 모듈(1503)에서 OS에 의해 이동 가능한 메모리 내의 데이터를 제1 유휴 메모리로 이동시키는 단계는, OS가 먼저, OS에 의해 이동 가능한 메모리를 인용하는 모든 프로세스에 대해 수면 동작을 수행하는 단계, 둘째, 메모리의 일부, 즉 제1 유휴 메모리를 컴퓨터가 현재 점유하고 있지 않은 메모리에 할당하는 단계, OS에 의해 이동 가능한 메모리 내의 데이터를 제1 유휴 메모리로 이동시키는 단계, 뒤이어 OS가, OS에 의해 이동 가능한 메모리에 대응하는 페이지 테이블 엔트리를 삭제하는 단계, 및 OS에 의해 이동 가능한 메모리를 인용하는 모든 프로세스에서의 페이지 테이블 엔트리가 제1 유휴 메모리로 지향되도록 상기 페이지 테이블 엔트리를 갱신하는 단계, 및 마지막으로 OS가 수면 프로세스를 깨우는 단계를 포함할 수 있다. 제2 이동 모듈(1503)은 또한 OS에 의해 이동 가능한 메모리 내의 데이터를 다른 수단에 의해 제1 유휴 메모리로 이동시킬 수 있으며, 이에 대한 제한은 없다. 컴퓨터가 현재 점유하고 있지 않은 메모리 내의 OS에 의해 할당된 메모리는 고정 크기의 사전설정된 메모리일 수도 있고, OS에 의해 이동 가능한 메모리의 크기에 따라 할당된 메모리일 수도 있고, 또는 다른 수단에 의해 할당된 메모리일 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 발명의 실시예에서, 제2 이동 모듈(1503)을 통해 OS에 의해 이동 가능한 메모리 내의 데이터를 제1 유휴 메모리로 이동시키는 단계에서는, OS에 의해 이동 가능한 메모리 내의 데이터를 제1 유휴 메모리로 직접 이동시킬 수 있을 뿐만 아니라, 먼저 OS에 의해 이동 가능한 메모리가 현재 사용 중인지를 질의할 수도 있으며, 현재 사용 중이면, OS에 의해 이동 가능한 메모리 내의 데이터를 제1 유휴 메모리로 이동시킨다. OS에 의해 이동 가능한 메모리 내의 데이터를 다른 수단에 의해 제1 유휴 메모리로 이동시키는 것도 가능하며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
이 경우, 제1 이동 모듈(1501)은, 컴퓨터의 기본 입출력 시스템이, 남아 있는 메모리 내의 데이터를 제1 사용 불능 메모리로 이동시키도록 구성되어 있으며, 남아 있는 메모리는, 운영체제에 의해 이동 가능한 메모리를 제외한, 이동될 메모리 내의 메모리일 수 있고, 제2 사용 불능 메모리는 제1 사용 불능 메모리의 일부이다.
도 20에 도시된 바와 같이, 제2 이동 모듈(1503)은 이하를 포함한다.
제2 메모리 획득 서브모듈(15031)은, 운영체제가, 상기 이동될 메모리로부터 상기 운영체제에 의해 이동 가능한 메모리를 획득하도록 구성되어 있고, 메모리의 이동은 상기 운영체제에 의해 지원된다.
본 실시예에서, OS는 일부 메모리의 이동을 실행할 수 있으나, 대부분의 커널 모드 메모리의 이동을 실행할 수는 없기 때문에, 제2 메모리 획득 서브모듈(15031)에서의 OS에 의해 이동 가능한 메모리는 주로 사용자 모드 메모리를 포함할 수 있으며, 수 개의 커널 모드 메모리도 포함할 수 있다.
본 실시예에서, 이동될 메모리로부터 OS에 의해 이동 가능한 메모리를 획득하고, 제2 메모리 획득 서브모듈(15031)을 통해 OS에 의해 지원되는 것은, OS가 이동될 메모리로부터 OS에 의해 이동 가능한 메모리를 직접 획득하는 것일 뿐만 아니라, 먼저 OS가 이동될 메모리를 판단한 다음, 판단 결과에 따라 이동될 메모리로부터 OS에 의해 이동 가능한 메모리를 획득하는 것일 수도 있다. OS가 다른 수단에 의해 이동될 메모리로부터 OS에 의해 이동 가능한 메모리를 획득하는 것도 가능하며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
수면 동작 서브모듈(15032)은, 운영체제가, 상기 운영체제에 의해 이동 가능한 메모리를 인용하는 모든 프로세스에 대해 수면 동작을 수행하도록 구성되어 있다.
메모리 할당 서브모듈(15033)은, 운영체제가, 제1 유휴 메모리를 컴퓨터의 비점유 메모리에 할당하도록 구성되어 있다.
본 실시예에서, 메모리 할당 서브모듈(15033)을 통해 컴퓨터의 비점유 메모리에 제1 유휴 메모리를 할당하는 단계에서는, 컴퓨터의 비점유 메모리의 임의의 위치에 제1 유휴 메모리를 할당할 수 있을 뿐만 아니라, 컴퓨터의 비점유 메모리의 물리 어드레스의 순서에 따라 제1 유휴 메모리를 순차적으로 할당할 수 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
메모리 복사 서브모듈(15034)은, 운영체제가, 상기 운영체제에 의해 이동 가능한 메모리 내의 데이터를 제1 유휴 메모리에 복사하도록 구성되어 있다.
페이지 테이블 엔트리 삭제 서브모듈(15035)은 운영체제가, 상기 운영체제에 의해 이동 가능한 메모리가 대응하는 모든 페이지 테이블 엔트리를 삭제하도록 구성되어 있다.
페이지 테이블 엔트리 갱신 서브모듈(15036)은 운영체제가, 상기 운영체제에 의해 이동 가능한 메모리를 인용하는 모든 프로세스의 페이지 테이블 엔트리를 갱신하도록 구성되어 있고, 이에 따라 상기 갱신된 페이지 테이블 엔트리는 제1 유휴 메모리로 지향한다.
각성 서브모듈(waking sub-module)(15037)은 운영체제가, 수면 동작이 진행된 프로세스를 깨우도록 구성되어 있다.
또한, 도 21에 도시된 바와 같이, 본 실시예에서 메모리 이동을 실행하는 장치는 이하를 포함한다.
제어 모듈(1504)은 운영체제가 목표 물리 어드레스를 액세스할 때, 컴퓨터에 저장되어 있는 매핑 관계에 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하도록 구성되어 있다.
본 실시예에서, 저장 모듈(1502)을 통해 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장할 때, 컴퓨터에 저장되어 있는 콘텐츠가 이동될 메모리의 원래의 물리 어드레스와 제1 사용 불능 메모리의 원래의 물리 어드레스 간의 매핑 관계이면, 제어 모듈(1504)을 통해 컴퓨터에 저장되어 있는 매핑 관계에 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하는 단계에서는 먼저 컴퓨터에 저장되어 있는 매핑 관계에 대해 메모리 페이지 얼라인먼트를 각각 수행하고, 후속으로 제1 사용 불능 메모리의 물리 어드레스에 대한 메모리 페이지 얼라인먼트를 수행하며, 최종적으로 컴퓨터에 저장되어 있는 매핑 관계에 대해 메모리 페이지 얼라인먼트를 수행함으로써 획득된 매핑 관계에, 제1 사용 불능 메모리의 물리 어드레스에 대해 메모리 페이지 얼라인먼트를 수행함으로써 획득된 물리 어드레스가 존재하는지를 판단한다. 컴퓨터에 저장되어 있는 콘텐츠가, 메모리 페이지 얼라인먼트 후의 이동될 메모리의 물리 어드레스와 메모리 페이지 얼라인먼트 후의 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계이면, 제어 모듈(1504)을 통해 컴퓨터에 저장되어 있는 매핑 관계에 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하는 프로세스는, 먼저 목표 물리 어드레스에 대한 메모리 페이지 얼라인먼트를 수행하는 단계, 및 후속으로 컴퓨터에 저장되어 있는 매핑 관계에, 목표 물리 어드레스에 대한 메모리 페이지 얼라인먼트를 수행한 후에 획득된 목표 물리 어드레스가 존재하는지를 판단하는 단계를 포함한다. 제어 모듈(1504)은 또한 다른 수단에 의해 컴퓨터에 저장되어 있는 매핑 관계에, 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단할 수도 있으며, 이에 대해서는 여기서 장황하게 계속 설명하지 않는다.
본 실시예에서, 제어 모듈(1504)을 통해, 컴퓨터에 저장되어 있는 매핑 관계에, 목표 물리 어드레스가 대응하는 매핑 관계가 존재하지 않는 것으로 판단되면, 즉 어드레스 변환을 수행할 필요가 없는 것으로 판단되면, OS는 물리 어드레스가 속하는 메모리에 직접 액세스할 수 있으며; 컴퓨터에 저장되어 있는 매핑 관계에, 목표 물리 어드레스가 대응하는 매핑 관계가 존재하면, OS는 제어 모듈(1505)을 통해 목표 물리 어드레스의 변환 후에 메모리에 액세스할 수 있다.
액세싱 모듈(1505)은 목표 물리 어드레스가 대응하는 매핑 관계가 존재하면, 운영체제가, 목표 물리 어드레스가 대응하는 매핑 관계에 따라 제1 사용 불능 메모리 내의 데이터를 액세스하도록 구성되어 있다.
본 실시예에서, 제어 모듈(1504)을 통해 컴퓨터에 저장되어 있는 매핑 관계에 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단할 때, 컴퓨터에 저장되어 있는 매핑 관계가 남아 있는 메모리의 원래의 물리 어드레스와 제1 사용 불능 메모리의 원래의 물리 어드레스 간의 매핑 관계이면, 액세싱 모듈(1505)을 통해 목표 물리 어드레스가 대응하는 매핑 관계에 따라 제1 사용 불능 메모리 내의 데이터에 액세스하는 특정 프로세스는, 먼저 이동될 메모리의 원래의 물리 어드레스에 대해 메모리 페이지 얼라인먼트를 수행하여 이동될 메모리의 편이량을 획득하는 단계, 후속으로 목표 물리 어드레스가 대응하는 매핑 관계에 따라 목표 물리 어드레스에 대응하는 제1 사용 불능 메모리의 제2 물리 어드레스를 획득하는 단계, 및 운영체제가 오프셋과 제2 물리 어드레스와의 합에 따라 제1 사용 불능 메모리 내의 데이터에 액세스하는 것을 포함할 수 있다. 컴퓨터에 저장되어 있는 매핑 관계가 물리 어드레스 간의 매핑 관계이면, 메모리 페이지 얼라인먼트 후의 남아 있는 물리 어드레스와 메모리 페이지 얼라인먼트 후의 제1 사용 불능 메모리 간의 매핑 관계이면, 액세싱 모듈(1505)을 통해 목표 물리 어드레스가 대응하는 매핑 관계에 따라 제1 사용 불능 메모리 내의 데이터에 액세스하는 특정 프로세스는, 먼저 OS가 목표 물리 어드레스의 오프셋을 획득하는 단계, 후속으로 OS가 목표 물리 어드레스가 대응하는 매핑 관계에 따라 제1 사용 불능 메모리에 대응하는 제1 사용 불능 메모리의 제2 물리 어드레스를 획득하는 단계; 및 OS가 오프셋과 제2 물리 어드레스와의 합에 따라 제1 사용 불능 메모리 내의 데이터에 액세스하는 단계를 포함할 수 있다.
이 경우, 도 22에 도시된 바와 같이, 메모리 이동을 실행하는 장치는 또한 이하를 포함할 수 있다.
메모리 판단 모듈(1506)은 목표 물리 어드레스가 속하는 메모리가 사용자 모드 메모리인지 커널 모드 메모리인지를 판단하도록 구성되어 있다.
본 실시예에서, 사용자 모드 메모리는 OS에 의해 이동 가능한 반면, 커널 모드 메모리는 OS에 의해 이동 가능하지 않기 때문에, 커널 모드 메모리는 BIOS에 의해서만 이동될 수 있으며, 커널 모드 메모리가 BIOS에 의해 이동된 후 커널 모드 메모리가 다시 액세스될 때, 매핑 관계 테이블 내의 매핑 관계를 통해 그 이동된 커널 모드 메모리의 메모리 위치를 획득할 필요가 있을 수 있는 반면, OS에 의해 이동된 사용자 모드 메모리에 있어서는, 갱신된 페이지 테이블 엔트리를 통해 직접 액세스될 수 있다. 그러므로 제어 모듈(1504)에서의 판단 프로세스를 간단하게 하기 위해, 먼저 메모리 판단 모듈(1506)을 통해 목표 물리 어드레스가 속하는 메모리가 사용자 모드 메모리인지 커널 모드 메모리인지를 판단할 수 있고, 목표 물리 어드레스가 속하는 메모리가 사용자 모드 메모리이면 페이지 테이블 엔트리를 통해 직접 액세스할 수 있는 반면; 목표 물리 어드레스가 속하는 메모리가 커널 모드 메모리이면, 메모리 판단 모듈(1506)을 통해 목표 물리 어드레스가 매핑 관계 테이블 내의 메모리 페이지 얼라인먼트를 이미 진행한 후의 어드레스에 대한 매핑 관계가 존재하는지를 다시 판단한다.
제어 모듈(1504)은 목표 물리 어드레스가 속하는 메모리가 커널 모드 메모리이면, 컴퓨터에 저장되어 있는 매핑 관계에 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하도록 구성되어 있다.
이 경우, 도 23에 도시된 바와 같이, 액세싱 모듈(1505)은 이하를 포함할 수 있다.
편이량 획득 서브모듈(15051)은 운영체제가, 상기 목표 물리 어드레스의 편이량을 획득하도록 구성되어 있다.
제2 물리 어드레스 획득 서브모듈(15052)은 운영체제가, 목표 물리 어드레스가 대응하는 매핑 관계에 따라, 목표 물리 어드레스가 대응하는 제1 사용 불능 메모리의 제2 물리 어드레스를 획득하도록 구성되어 있다.
액세싱 서브모듈(15053)은 운영체제가, 편이량과 제2 물리 어드레스와의 합에 따라 제1 사용 불능 메모리 내의 데이터를 액세스하도록 구성되어 있다.
또한, 도 24에 도시된 바와 같이, 본 실시예에서 메모리 이동을 실행하는 장치는 이하를 더 포함할 수 있다.
어드레스 획득 모듈(1507)은 목표 노드가 열 첨가되면, 기본 입출력 시스템이, 목표 노드에 대해 메모리 어드레싱을 수행하여 목표 노드가 대응하는 물리 어드레스를 획득하도록 구성되어 있다.
본 실시예에서는, 어드레스 획득 모듈(1507)을 통해 목표 노드에 대해 메모리 어드레싱을 수행하면, 목표 노드가 원래 열 제거된 노드일 때, 목표 노드에 대응하는 물리 어드레스는 불변으로 유지하는 것이 가능하고; 목표 노드가 원래 열 제거된 노드가 아니면, 목표 노드의 물리 어드레스는 각각의 원래의 노드의 어드레스 공간 뒤에 위치할 수 있다.
어드레스 검사 모듈(1508)은 기본 입출력 시스템이, 컴퓨터에 저장되어 있는 매핑 관계에 목표 노드가 대응하는 물리 어드레스가 존재하는지를 검사하도록 구성되어 있다.
본 실시예에서는, 어드레스 검사 모듈(1508)을 통해, 컴퓨터에 저장되어 있는 매핑 관계에 목표 노드가 대응하는 물리 어드레스가 존재하는지를 검사함으로써, 컴퓨터에 저장되어 있는 매핑 관계에 목표 노드가 대응하는 물리 어드레스가 존재하지 않으면, 목표 노드를 직접 열 첨가하는 것이 가능하고; 컴퓨터에 저장되어 있는 매핑 관계에 목표 노드가 대응하는 물리 어드레스가 존재하면, 어드레스 검사 모듈(1508)을 통해 목표 노드가 열 첨가된다.
제3 물리 어드레스 획득 모듈(1509)은, 기본 입출력 시스템이, 컴퓨터에 저장되어 있는 매핑 관계에 목표 노드가 대응하는 물리 어드레스가 존재하면, 매핑 관계에 따라 목표 노드가 대응하는 물리 어드레스에 대응하는 제1 사용 불능 메모리의 제3 물리 어드레스를 획득하도록 구성되어 있다.
제3 이동 모듈(1510)은, 기본 입출력 시스템이, 제3 물리 어드레스가 속하는 메모리 내의 데이터를, 목표 노드에 대응하는 물리 어드레스가 속하는 메모리에 이동시키도록 구성되어 있다.
매핑 관계 삭제 모듈(1511)은, 기본 입출력 시스템이, 컴퓨터에 저장되어 있는 매핑 관계로부터, 목표 노드가 대응하는 물리 어드레스의 매핑 관계를 삭제하도록 구성되어 있다.
본 실시예에서 제공하는 메모리 이동을 실행하는 장치는 컴퓨터의 BIOS와의 결합으로 OS를 통해 메모리 이동을 실행하고, 메모리 이동의 융통성을 향상시킨다.
본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 장치에 의하면, 이동될 메모리가 이동될 때, 그 이동될 메모리 내의 데이터가 기본 입출력 시스템에 의해 제1 사용 불능 메모리에 이동되고, 그 이동될 메모리의 물리 어드레스와 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계가 저장되며, 이에 의해 메모리 이동이 실행된다. 본 발명의 실시예에서 제공하는 기술적 솔루션에서 메모리 이동이 수행될 때는, 제1 사용 불능 메모리가 미리 변환되어 있기 때문에, 제1 사용 불능 메모리를 초기화하는 프로세스가 생략되며, 따라서 메모리 이동 동작 프로세스가 비교적 복잡한 종래기술에서의 문제를 해결한다.
본 발명의 실시예에서 제공하는 메모리 이동을 실행하는 방법 및 장치는 통상적인 컴퓨터 시스템 및 NUMA 아키텍처 하의 컴퓨터 시스템에 적용 가능하다.
문맥에 개시된 실시예와 결합해서 설명된 방법 또는 알고리즘의 단계는 하드웨어에 의해 직접 실행될 수 있거나, 프로세서에 의해 실행되는 소프트웨어 모듈과 하드웨어의 결합으로 실행될 수도 있다. 소프트웨어 모듈은 랜덤 액세스 메모리(RAM), 메모리, 리드 온리 메모리(ROM), 전기적 프로그래머블 ROM, 전기적 삭제 가능 및 프로그래머블 ROM, 레지스터, 하드디스크, 이동 가능 디스크, CD-ROM, 또는 당기술분야에 공개적으로 알려진 임의의 형태의 저장 매체로 대체될 수 있다.
전술한 바는 단지 본 발명의 특정한 실시예에 관한 것이며, 본 발명의 보호 범위는 이에 제한되지 않으며, 본 발명에 개시된 기술적 범위 내에서 당업자가 용이하게 생각해낼 수 있는 모든 변형 또는 대체는 본 발명의 보호 범위 내에 속한다. 그러므로 본 발명의 보호 범위는 청구의 범위에 기초해야 한다.

Claims (22)

  1. 메모리 이동을 실행하는 방법에 있어서,
    컴퓨터의 기본 입출력 시스템(basic input-output system)이, 이동될 메모리 내의 데이터를 상기 컴퓨터의 운영체제의 제1 사용 불능 메모리로 이동시키는 단계; 및
    상기 기본 입출력 시스템이, 상기 이동될 메모리의 물리 어드레스와 상기 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장하는 단계
    를 포함하며,
    상기 제1 사용 불능 메모리는 상기 운영체제의 원래의 사용 가능 메모리로부터 미리 변환되어 있으며, 상기 운영체제에 보류로 설정되어 있고, 상기 운영체제에 의해 변경될 수 없고 상기 운영체제에 액세스될 수 없는 메모리이며,
    상기 기본 입출력 시스템이, 상기 이동될 메모리의 물리 어드레스와 상기 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장하는 단계는,
    상기 기본 입출력 시스템이, 상기 이동될 메모리의 물리 어드레스에 대한 메모리 페이지 얼라인먼트(memory page alignment)를 수행하여 제1 물리 어드레스를 획득하는 단계; 및
    상기 기본 입출력 시스템이, 상기 제1 물리 어드레스와 상기 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 운영체제가 목표 물리 어드레스를 액세스할 때, 상기 컴퓨터에 저장되어 있는 매핑 관계에 상기 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하는 단계; 및
    상기 목표 물리 어드레스가 대응하는 매핑 관계가 존재하면, 상기 운영체제가, 상기 목표 물리 어드레스가 대응하는 매핑 관계에 따라 상기 제1 사용 불능 메모리 내의 데이터를 액세스하는 단계
    를 더 포함하는 방법.
  3. 제2항에 있어서,
    상기 컴퓨터에 저장되어 있는 매핑 관계에 상기 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하는 단계 이전에,
    상기 목표 물리 어드레스가 속하는 메모리가 사용자 모드 메모리인지 커널 모드 메모리(kernel mode memory)인지를 판단하는 단계
    를 더 포함하며,
    상기 컴퓨터에 저장되어 있는 매핑 관계에 상기 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하는 단계는,
    상기 목표 물리 어드레스가 속하는 메모리가 커널 모드 메모리일 때 상기 컴퓨터에 저장되어 있는 매핑 관계에 상기 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하는 단계인, 방법.
  4. 제2항에 있어서,
    상기 운영체제가, 상기 목표 물리 어드레스가 대응하는 매핑 관계에 따라 상기 제1 사용 불능 메모리 내의 데이터를 액세스하는 단계는,
    상기 운영체제가, 상기 목표 물리 어드레스의 메모리 페이지 내의 편이량(offset)을 획득하는 단계;
    상기 운영체제가, 상기 목표 물리 어드레스가 대응하는 매핑 관계에 따라 상기 목표 물리 어드레스가 대응하는 상기 제1 사용 불능 메모리의 제2 물리 어드레스를 획득하는 단계; 및
    상기 운영체제가, 상기 편이량과 상기 제2 물리 어드레스와의 합에 따라 상기 제1 사용 불능 메모리 내의 데이터를 액세스하는 단계
    를 포함하는, 방법.
  5. 메모리 이동을 실행하는 방법에 있어서,
    컴퓨터의 기본 입출력 시스템(basic input-output system)이, 이동될 메모리 내의 데이터를 상기 컴퓨터의 운영체제의 제1 사용 불능 메모리로 이동시키는 단계; 및
    상기 기본 입출력 시스템이, 상기 이동될 메모리의 물리 어드레스와 상기 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장하는 단계
    를 포함하며,
    상기 제1 사용 불능 메모리는 상기 운영체제의 원래의 사용 가능 메모리로부터 미리 변환되어 있으며, 상기 운영체제에 보류로 설정되어 있고, 상기 운영체제에 의해 변경될 수 없고 상기 운영체제에 액세스될 수 없는 메모리이며,
    상기 컴퓨터의 기본 입출력 시스템이, 상기 이동될 메모리 내의 데이터를 상기 컴퓨터의 운영체제의 제1 사용 불능 메모리로 이동시키는 단계 이전에,
    상기 컴퓨터의 기본 입출력 시스템이, 상기 이동될 메모리 내의 상기 운영체제에 의해 이동 가능한 메모리 내의 데이터를 상기 컴퓨터의 제1 유휴 메모리(idle memory)로 이동시키는 단계
    를 더 포함하며,
    상기 컴퓨터의 기본 입출력 시스템이, 상기 이동될 메모리 내의 데이터를 상기 컴퓨터의 운영체제의 제1 사용 불능 메모리로 이동시키는 단계는,
    상기 컴퓨터의 기본 입출력 시스템이, 남아 있는 메모리 내의 데이터를 상기 컴퓨터의 운영체제의 제2 사용 불능 메모리로 이동시키는 단계이며,
    상기 남아 있는 메모리는 상기 운영체제에 의해 이동 가능한 메모리를 제외한 상기 이동될 메모리 내의 일부의 메모리이고, 상기 제2 사용 불능 메모리는 상기 제1 사용 불능 메모리의 일부인, 방법.
  6. 제5항에 있어서,
    상기 컴퓨터의 기본 입출력 시스템이, 상기 이동될 메모리 내의 상기 운영체제에 의해 이동 가능한 메모리 내의 데이터를 상기 컴퓨터의 제1 유휴 메모리로 이동시키는 단계는,
    상기 운영체제가 상기 이동될 메모리로부터, 상기 운영체제에 의해 이동 가능한 메모리 내의 데이터를 획득하는 단계로서, 상기 메모리 내의 데이터의 이동이 상기 운영체제에 의해 지원되는, 상기 획득하는 단계;
    상기 운영체제가, 상기 운영체제에 의해 이동 가능한 메모리를 인용하는 모든 프로세스에 대해 수면 동작(sleeping operation)을 수행하는 단계;
    상기 운영체제가, 상기 제1 유휴 메모리를 상기 컴퓨터의 비점유 메모리에 할당하는 단계;
    상기 운영체제가, 상기 운영체제에 의해 이동 가능한 메모리 내의 데이터를 상기 제1 유휴 메모리에 복사하는 단계;
    상기 운영체제가, 상기 운영체제에 의해 이동 가능한 메모리가 대응하는 모든 페이지 테이블 엔트리(page table entry)를 삭제하는 단계;
    상기 운영체제가, 상기 운영체제에 의해 이동 가능한 메모리를 인용하는 모든 프로세스의 페이지 테이블 엔트리를 갱신하고, 이에 따라 상기 갱신된 페이지 테이블 엔트리는 상기 제1 유휴 메모리로 지향하는 단계; 및
    상기 운영체제가, 상기 수면 동작이 진행된 프로세스를 깨우는 단계
    를 포함하는, 방법.
  7. 제5항 또는 제6항에 있어서,
    상기 운영체제가 목표 물리 어드레스를 액세스할 때, 상기 컴퓨터에 저장되어 있는 매핑 관계에 상기 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하는 단계; 및
    상기 목표 물리 어드레스가 대응하는 매핑 관계가 존재하면, 상기 운영체제가, 상기 목표 물리 어드레스가 대응하는 매핑 관계에 따라 상기 제1 사용 불능 메모리 내의 데이터를 액세스하는 단계
    를 더 포함하는 방법.
  8. 제7항에 있어서,
    상기 컴퓨터에 저장되어 있는 매핑 관계에 상기 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하는 단계 이전에,
    상기 목표 물리 어드레스가 속하는 메모리가 사용자 모드 메모리인지 커널 모드 메모리(kernel mode memory)인지를 판단하는 단계
    를 더 포함하며,
    상기 컴퓨터에 저장되어 있는 매핑 관계에 상기 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하는 단계는,
    상기 목표 물리 어드레스가 속하는 메모리가 커널 모드 메모리일 때 상기 컴퓨터에 저장되어 있는 매핑 관계에 상기 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하는 단계인, 방법.
  9. 제7항에 있어서,
    상기 운영체제가, 상기 목표 물리 어드레스가 대응하는 매핑 관계에 따라 상기 제1 사용 불능 메모리 내의 데이터를 액세스하는 단계는,
    상기 운영체제가, 상기 목표 물리 어드레스의 메모리 페이지 내의 편이량(offset)을 획득하는 단계;
    상기 운영체제가, 상기 목표 물리 어드레스가 대응하는 매핑 관계에 따라 상기 목표 물리 어드레스가 대응하는 상기 제1 사용 불능 메모리의 제2 물리 어드레스를 획득하는 단계; 및
    상기 운영체제가, 상기 편이량과 상기 제2 물리 어드레스와의 합에 따라 상기 제1 사용 불능 메모리 내의 데이터를 액세스하는 단계
    를 포함하는, 방법.
  10. 컴퓨터에서 메모리 이동을 실현하는 장치에 있어서,
    이동될 메모리 내의 데이터를 상기 컴퓨터의 운영체제의 제1 사용 불능 메모리로 이동시키도록 구성되어 있는 제1 이동 모듈; 및
    상기 이동될 메모리의 물리 어드레스와 상기 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장하도록 구성되어 있는 저장 모듈
    을 포함하며,
    상기 제1 사용 불능 메모리는 상기 운영체제의 원래의 사용 가능 메모리로부터 미리 변환되어 있으며, 상기 운영체제에 보류로 설정되어 있고, 상기 운영체제에 의해 변경될 수 없고 상기 운영체제에 액세스될 수 없는 메모리이며,
    상기 저장 모듈은,
    상기 이동될 메모리의 물리 어드레스에 대한 메모리 페이지 얼라인먼트를 수행하여 제1 물리 어드레스를 획득하도록 구성되어 있는 메모리 페이지 얼라이닝 서브모듈(memory page aligning sub-module); 및
    상기 제1 물리 어드레스와 상기 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장하도록 구성되어 있는 저장 서브모듈
    을 포함하는, 장치.
  11. 제10항에 있어서,
    상기 운영체제가 목표 물리 어드레스를 액세스할 때, 상기 컴퓨터에 저장되어 있는 매핑 관계에 상기 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하도록 구성되어 있는 제어 모듈; 및
    상기 목표 물리 어드레스가 대응하는 매핑 관계가 존재하면, 상기 운영체제가, 상기 목표 물리 어드레스가 대응하는 매핑 관계에 따라 상기 제1 사용 불능 메모리 내의 데이터를 액세스하도록 구성되어 있는 액세싱 모듈
    을 더 포함하는 장치.
  12. 제11항에 있어서,
    상기 목표 물리 어드레스가 속하는 메모리가 사용자 모드 메모리인지 커널 모드 메모리인지를 판단하도록 구성되어 있는 메모리 판단 모듈
    을 더 포함하며,
    상기 제어 모듈은, 상기 목표 물리 어드레스가 속하는 메모리가 커널 모드 메모리이면, 상기 컴퓨터에 저장되어 있는 매핑 관계에 상기 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하도록 구성되어 있는, 장치.
  13. 제11항에 있어서,
    상기 액세싱 모듈은,
    상기 목표 물리 어드레스의 메모리 페이지 내의 편이량을 획득하도록 구성되어 있는 편이량 획득 서브모듈;
    상기 목표 물리 어드레스가 대응하는 매핑 관계에 따라, 상기 목표 물리 어드레스가 대응하는 상기 제1 사용 불능 메모리의 제2 물리 어드레스를 획득하도록 구성되어 있는 제2 물리 어드레스 획득 서브모듈; 및
    상기 편이량과 상기 제2 물리 어드레스와의 합에 따라 상기 제1 사용 불능 메모리 내의 데이터를 액세스하도록 구성되어 있는 액세싱 서브모듈
    을 포함하는, 장치.
  14. 컴퓨터에서 메모리 이동을 실현하는 장치에 있어서,
    이동될 메모리 내의 데이터를 상기 컴퓨터의 운영체제의 제1 사용 불능 메모리로 이동시키도록 구성되어 있는 제1 이동 모듈; 및
    상기 이동될 메모리의 물리 어드레스와 상기 제1 사용 불능 메모리의 물리 어드레스 간의 매핑 관계를 저장하도록 구성되어 있는 저장 모듈
    을 포함하며,
    상기 제1 사용 불능 메모리는 상기 운영체제의 원래의 사용 가능 메모리로부터 미리 변환되어 있으며, 상기 운영체제에 보류로 설정되어 있고, 상기 운영체제에 의해 변경될 수 없고 상기 운영체제에 액세스될 수 없는 메모리이고,
    상기 이동될 메모리 내의 상기 운영체제에 의해 이동 가능한 메모리 내의 데이터를 상기 컴퓨터의 제1 유휴 메모리로 이동시키도록 구성되어 있는 제2 이동 모듈
    을 더 포함하며,
    상기 제1 이동 모듈은, 남아 있는 메모리 내의 데이터를 상기 제2 사용 불능 메모리로 이동시키도록 구성되어 있으며,
    상기 남아 있는 메모리는 상기 운영체제에 의해 이동 가능한 메모리를 제외한 상기 이동될 메모리 내의 일부의 메모리이고, 상기 제2 사용 불능 메모리는 상기 제1 사용 불능 메모리의 일부인, 장치.
  15. 제14항에 있어서,
    상기 제2 이동 모듈은,
    상기 이동될 메모리로부터 상기 운영체제에 의해 이동 가능한 메모리 내의 데이터를 획득하도록 구성되어 있고, 상기 메모리 내의 데이터의 이동은 상기 운영체제에 의해 지원되는, 제2 메모리 획득 서브모듈;
    상기 운영체제에 의해 이동 가능한 메모리를 인용하는 모든 프로세스에 대해 수면 동작을 수행하도록 구성되어 있는 수면 동작 서브모듈;
    상기 제1 유휴 메모리를 상기 컴퓨터의 비점유 메모리에 할당하도록 구성되어 있는 메모리 할당 서브모듈;
    상기 운영체제에 의해 이동 가능한 메모리 내의 데이터를 상기 제1 유휴 메모리에 복사하도록 구성되어 있는 메모리 복사 서브모듈;
    상기 운영체제에 의해 이동 가능한 메모리가 대응하는 모든 페이지 테이블 엔트리를 삭제하도록 구성되어 있는 페이지 테이블 엔트리 삭제 서브모듈;
    상기 운영체제에 의해 이동 가능한 메모리를 인용하는 모든 프로세스의 페이지 테이블 엔트리를 갱신하도록 구성되어 있고, 이에 따라 상기 갱신된 페이지 테이블 엔트리는 상기 제1 유휴 메모리로 지향하는, 페이지 테이블 엔트리 갱신 서브모듈; 및
    상기 수면 동작이 진행된 프로세스를 깨우도록 구성되어 있는 각성 서브모듈(waking sub-module)
    을 포함하는, 장치.
  16. 제14항 또는 제15항에 있어서,
    상기 운영체제가 목표 물리 어드레스를 액세스할 때, 상기 컴퓨터에 저장되어 있는 매핑 관계에 상기 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하도록 구성되어 있는 제어 모듈; 및
    상기 목표 물리 어드레스가 대응하는 매핑 관계가 존재하면, 상기 운영체제가, 상기 목표 물리 어드레스가 대응하는 매핑 관계에 따라 상기 제1 사용 불능 메모리 내의 데이터를 액세스하도록 구성되어 있는 액세싱 모듈
    을 더 포함하는 장치.
  17. 제16항에 있어서,
    상기 목표 물리 어드레스가 속하는 메모리가 사용자 모드 메모리인지 커널 모드 메모리인지를 판단하도록 구성되어 있는 메모리 판단 모듈
    을 더 포함하며,
    상기 제어 모듈은, 상기 목표 물리 어드레스가 속하는 메모리가 커널 모드 메모리이면, 상기 컴퓨터에 저장되어 있는 매핑 관계에 상기 목표 물리 어드레스가 대응하는 매핑 관계가 존재하는지를 판단하도록 구성되어 있는, 장치.
  18. 제16항에 있어서,
    상기 액세싱 모듈은,
    상기 목표 물리 어드레스의 메모리 페이지 내의 편이량을 획득하도록 구성되어 있는 편이량 획득 서브모듈;
    상기 목표 물리 어드레스가 대응하는 매핑 관계에 따라, 상기 목표 물리 어드레스가 대응하는 상기 제1 사용 불능 메모리의 제2 물리 어드레스를 획득하도록 구성되어 있는 제2 물리 어드레스 획득 서브모듈; 및
    상기 편이량과 상기 제2 물리 어드레스와의 합에 따라 상기 제1 사용 불능 메모리 내의 데이터를 액세스하도록 구성되어 있는 액세싱 서브모듈
    을 포함하는, 장치.
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
KR1020137024310A 2011-07-28 2011-07-28 메모리 이동을 실행하는 방법 및 장치 KR101534540B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2011/077748 WO2012083695A1 (zh) 2011-07-28 2011-07-28 内存迁移的实现方法和装置

Publications (2)

Publication Number Publication Date
KR20130127511A KR20130127511A (ko) 2013-11-22
KR101534540B1 true KR101534540B1 (ko) 2015-07-07

Family

ID=45453086

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137024310A KR101534540B1 (ko) 2011-07-28 2011-07-28 메모리 이동을 실행하는 방법 및 장치

Country Status (8)

Country Link
US (1) US9600202B2 (ko)
EP (1) EP2664990A4 (ko)
JP (1) JP5712451B2 (ko)
KR (1) KR101534540B1 (ko)
CN (1) CN102326149B (ko)
AU (1) AU2011348835B2 (ko)
BR (1) BR112013021548A2 (ko)
WO (1) WO2012083695A1 (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014059613A1 (zh) 2012-10-17 2014-04-24 华为技术有限公司 降低内存系统功耗的方法和内存控制器
US9497266B2 (en) * 2013-02-22 2016-11-15 International Business Machines Corporation Disk mirroring for personal storage
JP5439620B1 (ja) * 2013-05-07 2014-03-12 株式会社 ディー・エヌ・エー 電子コンテンツを推奨するシステム
CN107219999B (zh) 2013-08-31 2020-06-26 华为技术有限公司 一种服务器中内存模块的数据迁移方法及服务器
US9854036B2 (en) * 2013-09-30 2017-12-26 Huawei Technologies Co., Ltd. Method for migrating memory data of virtual machine, and related apparatus and cluster system
CN105353980B (zh) * 2013-11-22 2019-10-22 华为技术有限公司 一种内存数据的迁移方法、计算机和装置
CN103842968B (zh) * 2013-11-22 2015-11-25 华为技术有限公司 一种内存数据的迁移方法、计算机和装置
ES2612829T3 (es) 2013-11-22 2017-05-18 Huawei Technologies Co., Ltd. Ordenador y método de migración de datos de memoria
CN104917784B (zh) * 2014-03-10 2018-06-05 华为技术有限公司 一种数据迁移方法、装置及计算机系统
CN103914403B (zh) * 2014-04-28 2016-11-02 中国科学院微电子研究所 一种混合内存访问情况的记录方法及其系统
CN103927233A (zh) * 2014-04-30 2014-07-16 无锡云动科技发展有限公司 多节点内存互联装置及一种大规模计算机集群
CN104156322B (zh) * 2014-08-05 2017-10-17 华为技术有限公司 一种缓存管理方法及缓存管理装置
CN105468538B (zh) 2014-09-12 2018-11-06 华为技术有限公司 一种内存迁移方法及设备
CN104375899B (zh) * 2014-11-21 2016-03-30 北京应用物理与计算数学研究所 高性能计算机numa感知的线程和内存资源优化方法与系统
US10430221B2 (en) * 2015-09-28 2019-10-01 Red Hat Israel, Ltd. Post-copy virtual machine migration with assigned devices
CN105260321B (zh) * 2015-11-11 2018-07-20 浪潮(北京)电子信息产业有限公司 一种改进型内存域划分方法
US20170161203A1 (en) * 2015-12-03 2017-06-08 Intel Corporation Increased memory capacity
US10069697B2 (en) * 2016-01-29 2018-09-04 Microsoft Technology Licensing, Llc Routing actions to user devices based on a user graph
KR20180027656A (ko) * 2016-09-05 2018-03-15 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
CN106713462A (zh) * 2016-12-26 2017-05-24 郑州云海信息技术有限公司 一种网络数据包处理方法和装置
US10365824B2 (en) * 2017-04-24 2019-07-30 Advanced Micro Devices, Inc. Silent active page migration faults
CN109299021B (zh) * 2017-07-24 2023-06-16 阿里巴巴集团控股有限公司 页迁移方法、装置和中央处理器
CN109240816B (zh) * 2018-08-30 2020-11-10 世纪龙信息网络有限责任公司 系统方案切换方法、装置、计算机设备和存储介质
CN109117416B (zh) * 2018-09-27 2020-05-26 贵州华芯通半导体技术有限公司 插槽间的数据迁移或交换的方法和装置以及多处理器系统
CN109388629B (zh) * 2018-09-29 2021-04-27 武汉斗鱼网络科技有限公司 一种数组规整方法、装置、终端及可读介质
CN113868151A (zh) 2019-05-16 2021-12-31 华为技术有限公司 配置镜像内存的方法、装置及计算机存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004079140A (ja) * 2002-08-22 2004-03-11 Casio Comput Co Ltd データ記録制御装置及びプログラム
JP2007122259A (ja) * 2005-10-26 2007-05-17 Toshiba Corp 情報処理装置、およびそのメモリ制御方法
JP2007133879A (ja) * 2005-11-10 2007-05-31 Internatl Business Mach Corp <Ibm> コンピュータ・メモリ・デバイス、コンピュータ・システム、方法(コンピュータ・システム電力消費を減らすためのメモリの再分配)
JP2008033588A (ja) * 2006-07-28 2008-02-14 Hitachi Ltd 情報処理装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5862314A (en) * 1996-11-01 1999-01-19 Micron Electronics, Inc. System and method for remapping defective memory locations
US6397349B2 (en) * 1998-10-13 2002-05-28 Agere Systems Guardian Corp. Built-in self-test and self-repair methods and devices for computer memories comprising a reconfiguration memory device
US7103728B2 (en) 2002-07-23 2006-09-05 Hewlett-Packard Development Company, L.P. System and method for memory migration in distributed-memory multi-processor systems
US7047438B2 (en) * 2002-11-21 2006-05-16 Hitachi Global Storage Technologies Netherlands B.V. Accommodation of media defect growth on a data storage medium through dynamic remapping
US7032053B2 (en) * 2003-08-14 2006-04-18 International Business Machines Corporation System and method for loading, executing, and adapting a portable running operation system from a removable module to multiple computer systems
US7321990B2 (en) * 2003-12-30 2008-01-22 Intel Corporation System software to self-migrate from a faulty memory location to a safe memory location
US8806103B2 (en) * 2004-04-28 2014-08-12 Hewlett-Packard Development Company, L.P. System and method for interleaving memory
US7529903B2 (en) * 2005-07-05 2009-05-05 International Business Machines Corporation Systems and methods for memory migration
US7478268B2 (en) 2005-09-13 2009-01-13 International Business Machines Corporation Deallocation of memory in a logically-partitioned computer
CN101819542B (zh) * 2009-02-26 2012-07-25 佛山市顺德区汉达精密电子科技有限公司 硬盘开机扇区异常时的开机方法与使用该方法之电脑装置
CN102081552A (zh) * 2009-12-01 2011-06-01 华为技术有限公司 一种物理机到虚拟机的在线迁移方法、装置和系统
US8219851B2 (en) * 2009-12-29 2012-07-10 Intel Corporation System RAS protection for UMA style memory
CN101818542A (zh) 2010-04-07 2010-09-01 湖南大学 一种内置空间桁架钢骨的混凝土梁

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004079140A (ja) * 2002-08-22 2004-03-11 Casio Comput Co Ltd データ記録制御装置及びプログラム
JP2007122259A (ja) * 2005-10-26 2007-05-17 Toshiba Corp 情報処理装置、およびそのメモリ制御方法
JP2007133879A (ja) * 2005-11-10 2007-05-31 Internatl Business Mach Corp <Ibm> コンピュータ・メモリ・デバイス、コンピュータ・システム、方法(コンピュータ・システム電力消費を減らすためのメモリの再分配)
JP2008033588A (ja) * 2006-07-28 2008-02-14 Hitachi Ltd 情報処理装置

Also Published As

Publication number Publication date
EP2664990A4 (en) 2014-01-22
JP2014509763A (ja) 2014-04-21
JP5712451B2 (ja) 2015-05-07
BR112013021548A2 (pt) 2016-11-01
WO2012083695A1 (zh) 2012-06-28
CN102326149B (zh) 2013-09-25
US9600202B2 (en) 2017-03-21
KR20130127511A (ko) 2013-11-22
US20140052948A1 (en) 2014-02-20
AU2011348835B2 (en) 2016-03-24
CN102326149A (zh) 2012-01-18
AU2011348835A1 (en) 2013-09-05
EP2664990A1 (en) 2013-11-20

Similar Documents

Publication Publication Date Title
KR101534540B1 (ko) 메모리 이동을 실행하는 방법 및 장치
US10552337B2 (en) Memory management and device
TWI689817B (zh) 記憶體系統及控制方法
US8838935B2 (en) Apparatus, method, and system for implementing micro page tables
KR102423713B1 (ko) 가상 어드레스를 물리적 어드레스로 번역을 수행하기 위해 입력-출력 메모리 관리 유닛내 다수의 메모리 소자들 사용
JP6441171B2 (ja) メモリシステム
WO2016082196A1 (zh) 文件访问方法、装置及存储设备
US9535628B2 (en) Memory system with shared file system
JP2007183962A (ja) 一体型メモリ及びコントローラ
US20120311240A1 (en) Information processing apparatus, information processing method, and storage medium
CN103744799A (zh) 一种内存数据访问方法、装置和系统
JP2021028762A (ja) 情報処理装置および制御方法
KR20180044095A (ko) 전자 시스템 및 그것의 동작 방법
WO2014063329A1 (zh) 共享闪存的方法、控制器及系统
US11687359B2 (en) Hybrid memory management apparatus and method for many-to-one virtualization environment
JP6675466B2 (ja) メモリシステム
JP6860722B2 (ja) メモリシステムの制御方法
JP2017224112A (ja) メモリシステムおよびメモリ管理装置
JP2024512087A (ja) 階層型メモリ管理をオフロードするための方法及び装置
Colesa et al. Fast creation of short-living virtual machines using copy-on-write ram-disks
JP2024048260A (ja) ストレージシステム、データ制御方法
JPH1196068A (ja) メモリ管理システムおよびデータ管理方法

Legal Events

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

Payment date: 20180619

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190617

Year of fee payment: 5