KR20130122692A - 컴퓨터 시스템의 메모리 관리 방법, 메모리 관리 유닛 및 컴퓨터 시스템 - Google Patents

컴퓨터 시스템의 메모리 관리 방법, 메모리 관리 유닛 및 컴퓨터 시스템 Download PDF

Info

Publication number
KR20130122692A
KR20130122692A KR1020137024926A KR20137024926A KR20130122692A KR 20130122692 A KR20130122692 A KR 20130122692A KR 1020137024926 A KR1020137024926 A KR 1020137024926A KR 20137024926 A KR20137024926 A KR 20137024926A KR 20130122692 A KR20130122692 A KR 20130122692A
Authority
KR
South Korea
Prior art keywords
memory
mode
offline
flag
user process
Prior art date
Application number
KR1020137024926A
Other languages
English (en)
Other versions
KR101532397B1 (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 KR20130122692A publication Critical patent/KR20130122692A/ko
Application granted granted Critical
Publication of KR101532397B1 publication Critical patent/KR101532397B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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
    • 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
    • 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Memory System (AREA)

Abstract

본 발명은 컴퓨터 시스템의 메모리 관리 방법, 메모리 관리 유닛 및 컴퓨터 시스템에 대해 개시한다. 상기 방법은, 사용자 프로세스에 의해 송신된 할당 요구를 수신하는 단계; 상기 할당 요구에 따라 사용자 프로세스에 메모리를 할당하고 상기 메모리의 오프라인 플래그를 설정하는 단계; 상기 사용자 프로세스에 의해 송신된 잠금 요구를 수신하는 단계; 상기 잠금 요구 및 상기 메모리의 오프라인 플래그에 따라 상기 메모리를 잠그는 단계; 및 상기 메모리의 오프라인 플래그에 따라 상기 메모리를 오프라인으로 조작하는 단계를 포함한다. 메모리 관리 유닛은, 제1 수신 모듈, 할당 모듈, 제2 수신 모듈, 잠금 모듈, 및 오프라인 모듈을 포함한다. 컴퓨터 시스템은 본 발명의 실시예에 따라 적어도 하나의 메모리 및 메모리 관리 유닛을 포함한다. 본 발명에 따른 컴퓨터 시스템의 메모리를 관리하는 방법, 메모리 관리 유닛, 및 컴퓨터 시스템에서, 커널과 사용자 프로세스 간의 상호작용을 통해, 메모리에 대해 오프라인 모드를 설정하고, 사용자 프로세스에 의해 잠긴 메모리가 오프라인으로 조작된다.

Description

컴퓨터 시스템의 메모리 관리 방법, 메모리 관리 유닛 및 컴퓨터 시스템{METHOD, MEMORY MANAGEMENT UNIT AND COMPUTER SYSTEM FOR MANAGING MEMORY OF COMPUTER SYSTEM}
본 발명은 컴퓨터 분야에 관한 것이며, 특히 컴퓨터 분야에서 컴퓨터 시스템의 메모리 관리 방법, 메모리 관리 유닛 및 컴퓨터 시스템에 관한 것이다.
중간급 또는 고급형 서버(high-end server)는 일정한 신축성을 가지도록 요구되는데, 장치의 핫-스왑(hot-swap) 특성은 이러한 신축성에서 중요한 부분을 차지한다. 즉, 서버는 컴퓨터 시스템의 간섭 없이 장치의 동적인 추가 또는 삭제를 실행할 수 있어, 용량을 확장하고 장애를 격리시키는 소기의 목적을 달성하므로, 컴퓨터 시스템의 신뢰도, 시스템의 서비스 능력 또는 에너지 절감의 조건을 충족시킨다.
핫-스왑 장치는 통상적으로 예를 들어 프로세서, 메모리 또는 입출력(IO) 주변 장치를 포함하며, 메모리가 컴퓨터 시스템의 중요한 리소스 중 하나인 것과 같이 메모리는 핫-스왑 장치의 가장 중요한 형성 부품 중 하나이다. 메모리 핫-플러깅(memory hot-plugging)은 컴퓨터 시스템 간섭 없이 추가되는 메모리 장치를 말하고, 메모리 핫-드로잉(memory hot-drawing)은 컴퓨터 시스템 간섭 없이 삭제되는 메모리 장치를 말한다. 메모리 핫-드로잉은 목표 메모리 내의 점유된 메모리를 이동시키고 복원해야 한다. 그렇지만, 컴퓨터 시스템에는 이동 가능하지 않은 페이지가 존재하는데, 이러한 페이지는 커널이 점유하고 있는 물리 페이지 및 사용자 프로세스에 의해 잠겨 있는 물리 페이지를 포함한다.
신청 프로세스에서, 커널이 점유하고 있는 물리 페이지는 컴퓨터 시스템에 의해 이동 가능하지 않은 페이스로 표시되기 때문에, 커널에 의해 메모리를 신청할 수 있는 프로세스에서, 컴퓨터 시스템은 특정한 영역(이동 가능하지 않은 영역)으로부터 물리 메모리를 할당할 수 있으므로, 목표 메모리를 오프라인으로 조작하는 목적을 달성할 수 있다.
사용자 프로세스가 메모리를 신청할 때, 메모리는 공통의 이동 가능한 메모리에 속하지만, 사용자 프로세스가 메모리를 잠그기로 지정한 후에는, 메모리는 이동 가능하지 않은 페이지로 표시되며, 이는 목표 메모리를 오프라인으로 조작하는 것에 장애가 된다. 사용자 프로세스에 의해 잠긴 메모리가 오프라인으로 조작될 수 있는지의 여부는 메모리의 핫 스왑을 실행하는 데 있어서 중요한 요인 중 하나이다.
사용자 프로세스에 의해 잠긴 메모리를 오프라인으로 조작하는 것이 어려운 문제에 있어서, 메모리를 이동시키는 것을 반복적으로 시도하고, 이러한 반복적인 시도를 해봄으로써 메모리가 사용자 프로세스에 의해 잠금해제 될 것으로 기대해 볼 수 있다. 그렇지만, 반복적인 시도에 따른 이동 방법은 메모리를 오프라인으로 조작하도록 트리거링하는 것을 확신할 수 없는데, 그 이유는 사용자 프로세스에 의해 잠긴 메모리를 잠금해제하는 것은 메모리를 이동시키는 시도에 아무런 영향을 받지 않으며, 이러한 둘 간에는 필요한 관계가 존재하지 않기 때문이다. 그러므로 메모리를 오프라인으로 조작하려는 시도 중에, 사용자 프로세스에 의해 잠긴 메모리는 잠긴 상태가 영구적으로 유지될 수도 있다.
그러므로 사용자 프로세스에 의해 잠긴 메모리를 오프라인으로 조작하여 메모리의 핫 스왑을 실행할 수 있도록, 컴퓨터 시스템의 메모리를 관리할 적절한 솔루션이 요망된다.
본 발명의 실시예는 컴퓨터 시스템의 메모리 관리 방법, 메모리 관리 유닛 및 컴퓨터 시스템을 제공하여, 사용자 프로세스에 의해 잠긴 메모리를 오프라인으로 조작하여 메모리의 핫 스왑을 실행할 수 있다.
한 관점에서, 본 발명의 실시예는 컴퓨터 시스템의 메모리 관리 방법을 제공하며, 상기 방법은, 사용자 프로세스에 의해 송신되고, 상기 사용자 프로세스를 위해 컴퓨터 시스템의 메모리의 할당을 요구하는 데 사용되는 할당 요구를 수신하는 단계; 상기 할당 요구에 따라 상기 사용자 프로세스에 메모리를 할당하는 단계; 상기 메모리에 대한 오프라인 모드를 나타내는 오프라인 플래그를 상기 메모리에 설정하는 단계; 상기 사용자 프로세스에 의해 송신되고, 상기 메모리를 잠글 것을 요구하는 데 사용되는 잠금 요구를 수신하는 단계; 상기 잠금 요구 및 상기 메모리의 오프라인 플래그에 따라 상기 메모리를 잠그는 단계; 및 상기 메모리의 오프라인 플래그에 따라 상기 메모리를 오프라인으로 조작하는 단계를 포함한다.
다른 관점에서, 본 발명의 실시예는 메모리 관리 유닛을 제공하며, 상기 메모리 관리 유닛은, 사용자 프로세스에 의해 송신되고, 상기 사용자 프로세스를 위해 컴퓨터 시스템의 메모리의 할당을 요구하는 데 사용되는 할당 요구를 수신하도록 구성되어 있는 제1 수신 모듈; 상기 제1 수신 모듈에 의해 수신된 할당 요구에 따라 상기 사용자 프로세스에 메모리를 할당하고, 상기 메모리에 대한 오프라인 모드를 나타내는 오프라인 플래그를 상기 메모리에 설정하도록 구성되어 있는 할당 모듈; 상기 사용자 프로세스에 의해 송신되고, 상기 컴퓨터 시스템의 메모리를 잠글 것을 요구하는 데 사용되는 잠금 요구를 수신하도록 구성되어 있는 제2 수신 모듈; 상기 제2 수신 모듈에 의해 수신된 잠금 요구 및 상기 메모리의 오프라인 플래그에 따라 상기 메모리를 잠그도록 구성되어 있는 잠금 모듈; 및 상기 메모리의 오프라인 플래그에 따라 상기 잠금 모듈에 의해 잠긴 메모리를 오프라인으로 조작하도록 구성되어 있는 오프라인 모듈을 포함한다.
또 다른 관점에서, 본 발명의 실시예는 컴퓨터 시스템을 제공하며, 상기 컴퓨터 시스템은, 적어도 하나의 메모리; 및 본 발명의 실시예에 따른 메모리 관리 유닛을 포함하며, 상기 메모리 관리 유닛은 상기 적어도 하나의 메모리를 관리하도록 구성되어 있다. 상기 메모리 관리 유닛은, 사용자 프로세스에 의해 송신되고, 상기 사용자 프로세스를 위해 컴퓨터 시스템의 메모리의 할당을 요구하는 데 사용되는 할당 요구를 수신하도록 구성되어 있는 제1 수신 모듈; 상기 제1 수신 모듈에 의해 수신된 할당 요구에 따라 상기 사용자 프로세스에 메모리를 할당하고, 상기 메모리에 대한 오프라인 모드를 나타내는 오프라인 플래그를 상기 메모리에 설정하도록 구성되어 있는 할당 모듈; 상기 사용자 프로세스에 의해 송신되고, 상기 컴퓨터 시스템의 메모리를 잠글 것을 요구하는 데 사용되는 잠금 요구를 수신하도록 구성되어 있는 제2 수신 모듈; 상기 제2 수신 모듈에 의해 수신된 잠금 요구 및 상기 메모리의 오프라인 플래그에 따라 상기 메모리를 잠그도록 구성되어 있는 잠금 모듈; 및 상기 메모리의 오프라인 플래그에 따라 상기 잠금 모듈에 의해 잠긴 메모리를 오프라인으로 조작하도록 구성되어 있는 오프라인 모듈을 포함한다.
전술한 기술적 솔루션에 기초하여, 본 발명의 실시예에 따른 컴퓨터 시스템의 메모리 관리 방법, 메모리 관리 유닛 및 컴퓨터 시스템에서는, 커널과 사용자 프로세스 간의 상호작용을 통해, 메모리에 대해 오프라인 모드를 설정하며, 커널은 이에 대응해서 메모리의 오프라인 모드에 따라 메모리를 오프라인으로 조작할 수 있고, 이에 따라 사용자 프로세스에 의해 잠긴 메모리를 오프라인으로 조작하여 메모리의 핫 스왑을 실행할 수 있어, 시스템 리소스를 낭비하지 않는다.
본 발명의 실시예에 따른 기술적 솔루션을 더 명확하게 설명하기 위해, 실시예를 설명하기 위해 첨부된 도면에 대해 이하에 간략히 설명한다. 이하의 설명에서의 첨부된 도면은 본 발명의 일부의 실시예이며, 당업자라면 창조적 노력 없이 첨부된 도면으로부터 다른 도면을 도출해낼 수 있을 것이다.
도 1은 본 발명의 실시예에 따라 컴퓨터 시스템의 메모리 관리 방법에 대한 개략적인 흐름도이다.
도 2는 본 발명의 다른 실시예에 따라 컴퓨터 시스템의 메모리 관리 방법에 대한 개략적인 흐름도이다.
도 3은 본 발명의 또 다른 실시예에 따라 컴퓨터 시스템의 메모리 관리 방법에 대한 개략적인 흐름도이다.
도 4는 본 발명의 실시예에 따라 메모리의 오프라인 모드를 수정하는 방법에 대한 개략적인 흐름도이다.
도 5는 본 발명의 실시예에 따라 메모리를 잠그는 방법에 대한 개략적인 흐름도이다.
도 6은 본 발명의 실시예에 따라 잠긴 메모리를 오프라인으로 조작하는 방법에 대한 개략적인 흐름도이다.
도 7은 본 발명의 실시예에 따라 메모리를 잠금해제하는 방법에 대한 개략적인 흐름도이다.
도 8은 본 발명의 실시예에 따른 메모리 관리 유닛에 대한 개략적인 블록도이다.
도 9는 본 발명의 다른 실시예에 따른 메모리 관리 유닛에 대한 개략적인 블록도이다.
도 10은 본 발명의 또 다른 실시예에 따른 메모리 관리 유닛에 대한 개략적인 블록도이다.
도 11은 본 발명의 실시예에 따른 잠금 모듈에 대한 개략적인 흐름도이다.
도 12는 본 발명의 실시예에 따른 오프라인 모듈에 대한 개략적인 블록도이다.
도 13은 본 발명의 실시예에 따른 확정 모듈에 대한 개략적인 블록도이다.
도 14는 본 발명의 실시예에 따른 컴퓨터 시스템에 대한 개략적인 블록도이다.
본 발명의 실시예에 따른 기술적 솔루션에 대해 본 발명의 실시예의 첨부된 된 도면을 참조해서 이하에 명확하게 설명한다. 설명되는 실시예는 본 발명의 실시예의 전부가 아닌 일부임은 자명하다. 당업자가 창조적 노력 없이 본 발명의 실시예를 바탕으로 획득하는 모든 다른 실시예는 본 발명의 보호 범위 내에 있게 된다.
본 발명의 실시예에 따른 기술적 솔루션은 퍼스널 컴퓨터(PC), 대형 컴퓨터 시스템 또는 다양한 슈퍼컴퓨터를 포함한 다양한 컴퓨터 시스템에 적용 가능하다는 것에 주목하라. 본 발명의 실시예에서는, 적어도 하나의 메모리를 포함하는 컴퓨터 시스템을 설명을 위한 예로서 취하지만, 본 발명의 실시예는 이에 제한되지 않는다.
도 1은 본 발명의 실시예에 따라 컴퓨터 시스템의 메모리 관리 방법에 대한 개략적인 흐름도이다. 도 1에 도시된 바와 같이, 방법(100)은 이하를 포함한다:
S110: 사용자 프로세스에 의해 송신되고, 상기 사용자 프로세스를 위해 컴퓨터 시스템의 메모리의 할당을 요구하는 데 사용되는 할당 요구를 수신한다.
S120: 상기 할당 요구에 따라 사용자 프로세스에 메모리를 할당하고, 메모리에 대한 오프라인 모드를 나타내는 데 사용되는 오프라인 플래그를 상기 메모리에 설정한다.
S130: 상기 사용자 프로세스에 의해 송신되고, 메모리를 잠글 것을 요구하는 데 사용되는 잠금 요구를 수신한다.
S140: 상기 잠금 요구 및 상기 메모리의 오프라인 플래그에 따라 메모리를 잠근다.
S150: 상기 메모리의 오프라인 플래그에 따라 메모리를 오프라인으로 조작한다.
사용자 프로세스에 의해 송신되고, 컴퓨터 시스템의 메모리의 할당을 요구하는 데 사용되는 할당 요구를 수신한 후, 컴퓨터 시스템의 커널, 운영체제 또는 메모리 관리 유닛은 사용자 프로세스에 메모리를 할당하고, 메모리의 오프라인 모드를 나타내기 위해, 메모리에 대해 오프라인 플래그를 설정하며; 사용자 프로세스에 의해 송신되고, 메모리를 잠그는 것을 요구하는 데 사용되는 요구를 수신한 후, 커널 또는 운영체제는 사용자 프로세스의 잠금 요구 및 메모리의 오프라인 플래그에 따라 메모리를 잠글 수 있고, 잠긴 메모리를 오프라인으로 조작하도록 요구받으면 메모리의 오프라인 플래그에 따라 메모리를 오프라인으로 조작할 수 있다.
그러므로 본 발명의 실시예에 따라 컴퓨터 시스템의 메모리를 관리하는 방법에서는, 커널과 사용자 프로세스 간의 상호작용을 통해, 메모리에 대해 오프라인 모드를 설정하며, 커널은 이에 대응해서 메모리의 오프라인 모드에 따라 메모리를 오프라인으로 조작할 수 있고, 이에 따라 사용자 프로세스에 의해 잠긴 메모리를 오프라인으로 조작하여 메모리의 핫 스왑을 실행할 수 있어, 시스템 리소스를 낭비하지 않는다.
본 발명의 실시예에서, 오프라인 모드 또는 오프라인 정책은 디폴트 모드, 이동 모드, 통지 모드, 및 강제 잠금해제 모드(forcible unlock mode) 중 적어도 하나를 포함할 수 있다. 선택적으로, 오프라인 모드는 디폴트 모드, 이동 모드, 통지 모드, 및 강제 잠금해제 모드를 포함한다.
디폴트 모드에 있어서, 사용자 프로세스는 디폴트 모드를 통해 메모리를 오프라인으로 조작하는 것을 지정하는데, 사용자 프로세스가 오프라인 정책을 지정하지 않으면, 이러한 모드 역시 사용될 수 있다. 이동 모드에 있어서, 메모리가 잠기기 전에, 메모리는 이동 가능하지 않은 영역으로 이동되어야 하고 그런 다음 잠긴다. 통지 모드에 있어서, 커널이 메모리를 오프라인으로 조작할 것을 요구받기 전에, 커널은 사용자 프로세스에 메모리를 잠금해제하도록 한다. 강제 잠금해제 모드에 있어서, 커널은 메모리를 오프라인으로 조작하도록 요구받으면 커널은 강제로 메모리를 잠금해제한 다음, 메모리를 오프라인으로 조작할 수 있다. 본 발명의 실시예에서의 4개의 오프라인 모드에 대한 명칭 및 간단한 설명은 단지 본 발명의 실시예를 쉽게 이해할 수 있도록 하기 위해 제공되었을 뿐이며, 본 발명의 실시예는 이제 제한되지 않는다. 또한, 4개의 오프라인 모드에 대한 특정한 의미는 본 발명의 실시예에 설명된 특정한 동작을 참조해서 이해되어야 한다.
본 발명의 실시예에서, 사용자 프로세스는 조건에 따라 그 신청된 메모리의 오프라인 모드를 수정할 수 있는데, 즉 사용자 프로세스는 메모리의 오프라인 모드를 설정할 수 있다. 그러므로 도 2에 도시된 바와 같이, 본 발명의 실시예에 따라 컴퓨터 시스템의 메모리를 관리하는 방법(100)은 이하를 더 포함할 수 있다:
S160: 사용자 프로세스에 의해 송신되고, 사용자 프로세스에 의해 메모리에 대해 설정된 오프라인 모드를 나타내는 모드 정보를 포함하는 수정 요구를 수신한다.
S170: 상기 모드 정보에 따라, 사용자 프로세스에 의해 설정된 오프라인 모드를 나타내도록 메모리의 오프라인 플래그를 수정한다.
즉, 사용자 프로세스가 메모리를 신청한 후, 사용자 프로세스는 조건에 따라 신청된 메모리에 대해 오프라인 모드를 설정할 수 있고 이 모드 정보를 포함하는 수정 요구를 커널에 송신하며, 이에 따라 커널은 모드 정보에 따라 사용자 프로세스에 의해 설정된 오프라인 모드를 나타내도록 메모리의 오프라인 플래그를 수정한다.
본 발명의 실시예에서, 커널이 사용자 프로세스에 의해 송신된 잠금 요구를 수신한 후, 커널은 메모리의 오프라인 플래그에 따라 메모리의 오프라인 모드를 확정할 수 있고, 메모리의 오프라인 모드가 디폴트 모드이면, 커널은 메모리의 오프라인 모드를 소망에 따라 재설정할 수 있다. 즉, 도 2에 도시된 바와 같이, 본 발명의 실시예에 따라 컴퓨터 시스템의 메모리를 관리하는 방법(100)은 이하를 더 포함할 수 있다:
S180: 메모리의 오프라인 모드가 디폴트 모드이면, 컴퓨터 시스템의 요구사항에 따라 메모리의 오프라인 모드를 재확정하고, 그 재확정된 오프라인 모드를 나타내도록 메모리의 오프라인 플래그를 수정한다.
선택적으로, 컴퓨터 시스템이 시스템 작동 성능을 요구할 때, 커널은 메모리의 오프라인 모드가 디폴트 모드가 되도록 확정하며; 컴퓨터 시스템이 핫-스왑 성능(hot-swap performance)을 요구할 때, 커널은 메모리의 오프라인 모드가 이동 모드가 되도록 확정한다.
본 발명의 실시예에 따른 방법은 커널, 운영체제 또는 메모리 관리 유닛에 의해 시행될 수 있다는 것에 주목하라. 설명을 쉽게 하기 위해, 커널을 이하에서는 실행 본체로 사용하되, 본 발명의 실시예는 이에 제한되지 않는다.
구체적으로, 단계 S110에서, 사용자 프로세스는 메모리를 할당할 것을 요구하는 커널에, 사용자 프로세스의 조건에 따라, 할당 요구를 송신한다.
단계 S120에서, 커널은 할당 요구에 따라 사용자 프로세스에 대해 메모리를 할당하고 그 메모리에 대해 오프라인 플래그를 설정하며, 여기서 오프라인 플래그는 메모리의 오프라인 모드를 나타내는 데 사용된다. 선택적으로, 커널은 그 할당된 메모리에 디폴트 모드를 나타내는 오프라인 플래그를 설정한다. 예를 들어, 커널은 메모리에 오프라인 플래그 PG_flag를 부가하고, 이 오프라인 플래그에 값 DEFAULT를 할당할 수 있는데, 즉 PG_flag=DEFAULT이다. 당연히, 커널은 메모리에 대해 다른 오프라인 모드를 설정할 수 있으며, 본 발명은 이에 대해 제한되지 않는다.
선택적으로, 사용자 프로세스는 커널에 의해 제공되는 인터페이스를 통해, 그 신청된 메모리에 오프라인 모드 또는 오프라인 정책을 설정 또는 정형화할 수 있다. 구체적으로, 단계 S160에서, 사용자 프로세스는, 사용자 프로세스의 조건에 따라, 메모리의 오프라인 모드를 수정하는 수정 요구를 커널에 송신하고, 여기서, 수정 요구는 사용자 프로세스에 의해 메모리에 대해 설정된 오프라인 모드를 나타내는 모드 정보를 포함한다. 예를 들어, 수정 요구는 BEHAVIOR 파라미터를 포함할 수 있으며, 여기서 BEHAVIOR 파라미터에는 DEFAULT, MIGRATE, NOTIFY, 및 UNLOCK와 같은 값이 할당될 수 있는데, 이러한 값들은 사용자 프로세스가 메모리의 오프라인 모드가 디폴트 모드, 이동 모드, 통지 모드, 및 강제 잠금해제 모드가 되도록 설정하는 것을 각각 나타낸다.
단계 S170에서, 커널은 모드 정보에 따라 메모리의 오프라인 모드를 수정한다. 구체적으로, 커널은 수정 요구에 전달된 BEHAVIOR 파라미터에 따라, 사용자 프로세스에 의해 설정된 오프라인 모드를 나타내도록 메모리의 오프라인 모드를 수정할 수 있다.
구체적으로, 예를 들어, 오프라인 모드가 수정되도록 요구받는 메모리 A에 있어서, 커널은 수정 요구에 포함되어 있는 파라미터 BEHAVIOR을 분석할 수 있다. BEHAVIOR = = DEFAULT이면, 커널은 사용자 프로세스가 메모리 A의 오프라인 모드를 디폴트 모드가 되도록 설정한다는 것을 확정할 수 있다. 이때, 커널은 메모리 A의 오프라인 플래그 PG_flag를 수정할 수 있는데, 즉 오프라인 플래그에 값 DEFAULT를 설정할 수 있으며, 즉 PG_flag = DEFAULT이다. BEHAVIOR = = MIGRATE이면, 커널은 사용자 프로세스가 메모리 A의 오프라인 모드를 이동 모드가 되도록 설정한다는 것을 확정할 수 있고, 이때, 커널은 메모리 A의 오프라인 플래그에 값 MIGRATE를 설정할 수 있으며, 즉 PG_flag = MIGRATE이다. 마찬가지로, BEHAVIOR = = NOTIFY이면, 커널은 사용자 프로세스가 메모리 A의 오프라인 모드를 통지 모드가 되도록 설정한다는 것을 확정할 수 있고, 이때, 커널은 메모리 A의 오프라인 플래그에 값 NOTIFY를 설정할 수 있으며, 즉 PG_flag = NOTIFY이다. BEHAVIOR = = UNLOCK이면, 커널은 사용자 프로세스가 메모리 A의 오프라인 모드를 강제 잠금해제 모드가 되도록 설정한다는 것을 확정할 수 있고, 이때, 커널은 메모리 A의 오프라인 플래그에 값 UNLOCK를 설정할 수 있으며, 즉 PG_flag = UNLOCK이다.
단계 S130에서, 사용자 프로세스는, 사용자 프로세스의 조건에 따라, 컴퓨터 시스템의 메모리를 잠금해제할 것을 커널에 요구할 수 있다.
단계 S140에서, 커널이 사용자 프로세스에 의해 송신된 잠금 요구를 수신한 후, 커널은 메모리의 오프라인 모드가 잠그도록 요구받은 것을 확정해야 하고, 특정한 오프라인 모드 및 잠금 요구에 따라 메모리를 잠근다.
구체적으로, 커널은 메모리의 오프라인 플래그를 분석함으로써 메모리의 오프라인 모드를 확정할 수 있다. 예를 들어, 커널이 메모리의 오프라인 플래그가 PG_flag = DEFAULT인 것을 확정하면, 메모리의 오프라인 모드는 디폴트 모드이다. 마찬가지로, 커널이 메모리의 오프라인 플래그가 PG_flag = MIGRATE, NOTIFY 또는 UNLOCK인 것을 확정하면, 커널은 메모리의 오프라인 모드가 이동 모드, 통지 모드 또는 강제 잠금해제 모드인 것을 확정할 수 있다.
선택적으로, 메모리의 오프라인 플래그가 디폴트 모드, 통지 모드, 또는 강제 잠금해제 모드를 나타내면, 메모리는 잠긴다. 메모리의 오프라인 플래그가 이동 모드를 나타내면, 그리고 메모리가 성공적으로 이동되면, 그 이동된 메모리는 잠기고 그 이동된 메모리에 대해 이동 모드를 나타내는 오프라인 플래그가 설정된다. 메모리가 성공적으로 이동되지 않으면, 메모리는 잠기고 메모리의 오프라인 플래그는 디폴트 모드를 나타내도록 수정된다.
선택적으로, 커널이 메모리의 오프라인 모드가 디폴트 모드인 것으로 확정하면, 커널은 그 메모리에 대해 더 적절한 오프라인 모드를 재확정할 수 있다. 즉, 단계 S180에서, 커널은 컴퓨터 시스템의 요구사항에 따라 메모리의 오프라인 모드를 재확정하고, 재확정된 오프라인 모드를 나타내도록 메모리의 오프라인 모드를 수정한다.
단계 S150에서, 커널이 사용자 프로세스에 의해 잠긴 메모리를 조작해야 하면, 커널은 메모리의 오프라인 플래그를 분석함으로써 메모리의 오프라인 모드를 확정하고, 그 오프라인 모드에 따라 메모리를 오프라인으로 조작할 수 있다.
선택적으로, 메모리의 오프라인 플래그가 디폴트 모드 또는 이동 모드를 나타내면, 메모리는 잠금해제 상태가 되기를 대기하고 있다가, 메모리가 잠금해제된 후 이동된다. 메모리의 오프라인 플래그가 통지 모드를 나타내면, 사용자 프로세스는 메모리를 잠금해제하도록 촉발되고, 사용자 프로세스는 메모리가 이동된 후 그 이동된 메모리를 잠그도록 촉발된다. 메모리의 오프라인 플래그가 잠금해제 모드를 나타내면, 메모리는 잠금해제되고 메모리가 잠금해제된 후 이동되며, 그 이동된 메모리는 잠기며, 그 이동된 메모리에 대해 강제 잠금해제 모드를 나타내는 오프라인 플래그가 설정된다.
그러므로 본 발명의 실시예에 따라 컴퓨터 시스템의 메모리를 관리하는 방법에서는, 커널과 사용자 프로세스 간의 상호작용을 통해, 메모리에 대해 오프라인 모드를 설정하며, 커널은 이에 대응해서 메모리의 오프라인 모드에 따라 메모리를 오프라인으로 조작할 수 있고, 이에 따라 사용자 프로세스에 의해 잠긴 메모리를 오프라인으로 조작하여 메모리의 핫 스왑을 실행할 수 있어, 시스템 리소스를 낭비하지 않는다.
본 발명의 실시예에서는, 선택적으로, 사용자 프로세스가 잠긴 메모리의 잠금해제를 신청하면, 도 3에 도시된 바와 같이, 본 발명의 실시예에 따른 방법(100)은 이하를 더 포함한다:
S190: 사용자 프로세스에 의해 송신되고, 메모리를 잠금해제할 것을 요구하는 데 사용되는 잠금해제 요구를 수신한다.
S195: 상기 잠금해제 요구에 따라, 메모리의 오프라인 플래그가 이동 모드를 나타내면, 사용자 프로세스가 실행되는 노드로 메모리를 재이동시킨다.
즉, 사용자 프로세스가 잠긴 메모리를 잠금해제할 것을 능동적으로 요구하는 프로세스에서, 메모리의 오프라인 모드가 이동 모드인 것으로 메모리의 오프라인 플래그가 나타내면, 잠긴 메모리가 잠금해제되기 전에, 커널은 로컬 메모리를 신청하고, 이에 따라 잠긴 메모리를 사용자 프로세스가 실행되는 노드로 재이동시킬 수 있다. 오프라인 모드가 디폴트 모드, 통지 모드 또는 강제 잠금해제 모드인 잠긴 메모리에 있어서, 커널은 사용자의 프로세스의 신청에 따라 잠긴 메모리를 직접 잠금해제할 수 있다. 예를 들어, 이 경우, MIGRATE 오프라인 플래그를 가지는 잠긴 메모리에 있어서, 잠금해제되기 전에, 메모리는 사용자 프로세스가 실행되는 노드로 재이동되고, 이는 시스템 성능을 더 향상시킬 수 있다.
전술한 단계의 순번은 실행 순서를 의미하지 않으며, 단계의 실행 순서는 기능 및 내부 로직에 따라 확정될 수 있으며, 이는 본 발명의 실시예의 실행 프로세스를 어떤 식으로든 제한하려는 것이 아니다.
그러므로 본 발명의 실시예에 따라 컴퓨터 시스템의 메모리를 관리하는 방법에서는, 커널과 사용자 프로세스 간의 상호작용을 통해, 메모리에 대해 오프라인 모드를 설정하며, 커널은 이에 대응해서 메모리의 오프라인 모드에 따라 메모리를 오프라인으로 조작할 수 있고, 이에 따라 사용자 프로세스에 의해 잠긴 메모리를 오프라인으로 조작하여 메모리의 핫 스왑을 실행할 수 있어, 시스템 성능을 향상시키고 시스템 리소스를 낭비하지 않는다.
도 4 내지 도 7에 도시된 특정한 실시예를 참조하면, 본 발명의 실시예에 따라 메모리의 오프라인 모드를 수정하는 방법, 메모리를 잠그는 방법, 잠긴 메모리를 오프라인으로 조작하는 방법, 및 메모리를 잠금해제하는 방법에 대해 이하에 상세히 설명한다.
도 4에 도시된 바와 같이, 본 발명의 실시예에 따라 메모리의 오프라인 모드를 설정하는 방법(200)은 이하를 포함한다.
S201: 사용자 프로세스는 사용자 프로세스의 조건에 따라 메모리 A를 신청한다.
S202: 커널은 사용자 프로세스에 의해 송신된 할당 요구에 따라 사용자 프로세스에 메모리를 할당하고 그 메모리에 대해 오프라인 플래그를 설정하며, 여기서 오프라인 플래그는 메모리의 오프라인 모드를 나타내는 데 사용된다. 선택적으로, 커널은 메모리의 오프라인 플래그 PG_flag를 디폴트 모드 DEFAULT가 되도록 설정하는데, 즉 PG_flag = DEFAULT이다.
선택적으로, 사용자 프로세스가 메모리 A를 신청하여 획득한 후, 사용자 프로세스는 커널에 의해 제공되는 인터페이스를 통해 메모리 A의 오프라인 모드를 설정하며, 여기서 오프라인 모드는 디폴트 모드, 이동 모드, 통지 모드 및 강제 잠금해제 모드를 포함한다.
S203: 사용자 프로세스는 수정 요구를 커널에 송신하여 메모리의 오프라인 모드의 수정을 신청하며, 여기서 수정 요구는 사용자 프로세스에 의해 메모리에 대해 설정된 오프라인 모드를 나타내는 모드 정보를 포함하며, 모드 정보는 예를 들어 BEHAVIOR 파라미터이다.
S204: 커널은 사용자 프로세스에 의해 전달된 BEHAVIOR 파라미터와 같은 모드 정보를 분석함으로써 사용자 프로세스에 의해 메모리 A에 대해 설정된 오프라인 모드를 확정한다.
사용자 프로세스에 의해 메모리 A에 대해 설정된 오프라인 모드가 디폴트 모드이면, 프로세스는 단계 S205로 진행하고;
사용자 프로세스에 의해 메모리 A에 대해 설정된 오프라인 모드가 디폴트 모드가 아니면, 프로세스는 단계 S206, 단계 S207, 또는 단계 S208로 진행한다. 구체적으로, 사용자 프로세스에 의해 메모리 A에 대해 설정된 오프라인 모드가 이동 모드이면, 프로세스는 단계 S206으로 진행하고; 사용자 프로세스에 의해 메모리 A에 대해 설정된 오프라인 모드가 통지 모드이면, 프로세스는 단계 S207로 진행하며; 사용자 프로세스에 의해 메모리 A에 대해 설정된 오프라인 모드가 강제 잠금해제 모드이면, 프로세스는 단계 S208로 진행한다.
S205: 커널은 메모리의 오프라인 플래그에 값 DEFAULT를 할당하며, 즉 PG_flag = DEFAULT이다. 이때, 사용자 프로세스에 의해 오프라인 모드가 디폴트 모드로 설정된 메모리 A에 있어서, 메모리 A에 대해 오프라인 모드를 설정하는 프로세스는 종료된다.
S206: 커널은 메모리의 오프라인 플래그에 값을 할당하며, 즉 PG_flag = MIGRATE이다. 이때, 사용자 프로세스에 의해 오프라인 모드가 이동 모드로 설정된 메모리 A에 있어서, 메모리 A에 대해 오프라인 모드를 설정하는 프로세스는 종료된다.
S207: 커널은 메모리의 오프라인 플래그에 값 NOTIFY를 할당하며, 즉 PG_flag = NOTIFY이다. 이때, 사용자 프로세스에 의해 오프라인 모드가 통지 모드로 설정된 메모리 A에 있어서, 메모리 A에 대해 오프라인 모드를 설정하는 프로세스는 종료된다.
S208: 커널은 메모리의 오프라인 플래그에 값 UNLOCK을 할당하며, 즉 PG_flag = UNLOCK이다. 이때, 사용자 프로세스에 의해 오프라인 모드가 강제 잠금해제 모드로 설정된 메모리 A에 있어서, 메모리 A에 대해 오프라인 모드를 설정하는 프로세스는 종료된다.
전술한 단계의 순번은 실행 순서를 의미하지 않으며, 단계의 실행 순서는 기능 및 내부 로직에 따라 확정될 수 있으며, 이는 본 발명의 실시예의 실행 프로세스를 어떤 식으로든 제한하려는 것이 아니다.
그러므로 커널과 사용자 프로세스 간의 상호작용을 통해, 메모리에 대해 오프라인 모드를 설정하며, 커널은 이에 대응해서 메모리의 오프라인 모드에 따라 메모리를 오프라인으로 조작할 수 있으며, 이에 따라 사용자 프로세스에 의해 잠긴 메모리를 조작할 수 있다.
도 5는 본 발명의 실시예에 따라 메모리를 잠그는 방법(300)에 대한 개략적인 흐름도이다. 도 5에 도시된 바와 같이, 방법(300)은 이하를 포함한다:
S301: 사용자 프로세스는 조건에 따라, 메모리 A를 잠글 것을 커널에 요청할 수 있다.
S302: 커널은 메모리 A의 오프라인 플래그 PG_flag를 분석함으로써 메모리 A에 대해 설정된 오프라인 모드를 확정할 수 있다.
커널이 메모리 A의 오프라인 모드가 디폴트 모드인 것으로 확정하면, 즉 PG_flag = = DEFAULT이면, 프로세스는 단계 S303으로 진행하고; 커널이 메모리 A의 오프라인 모드가 디폴트 모드가 아닌 것으로 확정하면, 즉 PG_flag !=DEFAULT이면, 프로세스는 단계 S305, 단계 S309 또는 단계 S310으로 진행한다. 구체적으로, 커널이 메모리 A의 오프라인 모드가 이동 모드인 것으로 확정하면, 즉 PG_flag = = MIGRATE이면, 프로세스는 단계 S305로 진행하고; 커널이 메모리 A의 오프라인 모드가 통지 모드인 것으로 확정하면, 즉 PG_flag = = NOTIFY이면, 프로세스는 단계 S309로 진행하고; 커널이 메모리 A의 오프라인 모드가 강제 잠금해제 모드인 것으로 확정하면, 즉 PG_flag = = UNLOCK이면, 프로세스는 단계 S310으로 진행한다.
S303: 커널은 컴퓨터 시스템의 구성 또는 조건을 확정한다. 커널이 컴퓨터 시스템이 시스템 작동 성능을 요구하는 것으로 확정하면, 프로세스는 단계 S304로 진행하고; 컴퓨터 시스템이 핫-스왑 성능을 요구하면, 프로세스는 단계 S305로 진행한다.
S304: 메모리 A의 오프라인 모드가 디폴트 모드이면, 커널은 메모리 A를 잠그고, 메모리의 오프라인 플래그에 값 DEFAULT를 할당하며, 즉, PG_flag = DEFAULT이다. 이때, 오프라인 모드가 디폴트 모드인 메모리 A에 있어서, 메모리 A를 잠그는 프로세스는 종료된다.
S305: 메모리 A의 오프라인 모드가 이동 모드이면, 커널은 시스템의 지정 영역에서 메모리 B를 재신청하고, 여기서 지정 영역은 이동 가능하지 않은 메모리이며 통상적으로 프라이머리 노드(primary node)에 제한된다.
S306: 커널은 메모리 A를 메모리 B로 이동시키고, 메모리 A를 해제한다.
S307: 커널은 메모리 A가 성공적으로 이동되었는지를 판단한다. 메모리 A가 성공적으로 이동되었으면, 프로세스는 단계 S308로 진행하고; 그렇지 않으면, 프로세스는 단계 S304로 진행한다.
S308: 커널은 메모리 B를 잠그고, 메모리 B에 대해 오프라인 플래그 PG_flag를 설정하며, 이 오프라인 플래그에 값 MIGRATE를 설정하며, 즉 PG_flag = MIGRATE이다. 이때, 오프라인 모드가 이동 모드인 메모리 A에 있어서, 메모리 A를 잠그는 프로세스는 종료된다.
S309: 메모리 A의 오프라인 모드가 통지 모드이면, 커널은 메모리 A를 잠근다. 이때, 오프라인 모드가 통지 모드인 메모리 A에 있어서, 메모리 A를 잠그는 프로세스는 종료된다.
S310: 메모리 A의 오프라인 모드가 강제 잠금해제 모드이면, 커널은 메모리 A를 잠근다. 이때, 오프라인 모드가 강제 잠금해제 모드인 메모리 A에 있어서, 메모리 A를 잠그는 프로세스는 종료된다.
전술한 단계의 순번은 실행 순서를 의미하지 않으며, 단계의 실행 순서는 기능 및 내부 로직에 따라 확정될 수 있으며, 이는 본 발명의 실시예의 실행 프로세스를 어떤 식으로든 제한하려는 것이 아니다.
도 6은 본 발명의 실시예에 따라 잠긴 메모리를 오프라인으로 조작하는 방법(400)에 대한 개략적인 흐름도이다. 도 6에 도시된 바와 같이, 방법(400)은 이하를 포함한다:
S401: 커널은 조건에 따라 메모리 A를 오프라인으로 조작하기로 확정한다.
S402: 커널은 메모리 A의 오프라인 플래그 PG_flag를 분석함으로써 메모리 A에 대해 설정된 오프라인 모드를 확정한다.
커널이 메모리 A의 오프라인 모드가 디폴트 모드인 것으로 확정하면, 즉 PG_flag = = DEFAULT이면, 프로세스는 단계 S403으로 진행하고; 커널이 메모리 A의 오프라인 모드가 디폴트 모드가 아닌 것으로 확정하면, 즉 PG_flag !=DEFAULT이면, 프로세스는 단계 S403, 단계 S406 또는 단계 S408로 진행한다. 구체적으로, 커널이 메모리 A의 오프라인 모드가 이동 모드인 것으로 확정하면, 즉 PG_flag = = MIGRATE이면, 프로세스는 단계 S403으로 진행하고; 커널이 메모리 A의 오프라인 모드가 통지 모드인 것으로 확정하면, 즉 PG_flag = = NOTIFY이면, 프로세스는 단계 S406으로 진행하고; 커널이 메모리 A의 오프라인 모드가 강제 잠금해제 모드인 것으로 확정하면, 즉 PG_flag = = UNLOCK이면, 프로세스는 단계 S408로 진행한다.
S403: 메모리 A의 오프라인 모드가 디폴트 모드 또는 이동 모드이면, 커널은 메모리 A가 사용자 프로세스에 의해 잠금해제되기를 대기한다.
S404: 커널은 메모리 A가 사용자 프로세스에 의해 잠금해제되었는지를 검사한다. 메모리 A가 잠금해제되었으면, 프로세스는 단계 S405로 진행하고; 그렇지 않으면, 프로세스는 단계 S403으로 진행하며, 즉, 커널은 계속해서 메모리 A가 자금해제되기를 대기한다.
S405: 메모리 A가 사용자 프로세스에 의해 잠금해제되었으면, 커널은 메모리 A를 이동시킨다. 메모리 A를 이동시키는 것은 메모리 A를 다른 메모리로 이동시킨다는 것에 주목하라. 이동 후의 새로운 메모리에 있어서, 커널은 새로운 메모리의 오프라인 플래그를 PG_flag = DEFAULT가 되도록 설정할 수 있다. 이때, 오프라인 모드가 디폴트 모드 또는 이동 모드로 되어 있는 메모리 A에 있어서, 메모리 A를 오프라인으로 조작하는 프로세스는 종료된다.
S406: 메모리 A의 오프라인 모드가 통지 모드이면, 커널은 사용자 프로세스가 메모리를 잠금해제하도록 촉발하고, 메모리 A가 사용자 프로세스에 의해 잠금해제된 후 메모리 A를 이동시킨다. 즉, 메모리 A의 오프라인 모드가 통지 모드인 경우, 프로세스는 단계 S406으로부터 단계 S404, 단계 S405, 및 단계 S407로 진행한다.
S407: 메모리 A가 이동된 후, 커널은 이동 후에 새로운 메모리를 잠그도록 사용자 프로세스를 촉발한다. 이동 후의 새로운 메모리에 있어서, 커널은 새로운 메모리의 오프라인 플래그를 PG_flag = NOTIFY가 되도록 설정할 수 있다. 이때, 오프라인 모드가 통지 모드인 메모리 A에 있어서, 메모리 A를 조작하는 프로세스는 종료된다.
S408: 메모리 A의 오프라인 모드가 강제 잠금해제 모드이면, 커널은 메모리 A를 잠금해제 한다.
S409: 커널은 메모리 A가 성공적으로 잠금해제되었는지를 검사한다. 메모리 A가 잠금해제되었으면, 프로세스는 단계 S410으로 진행하고; 그렇지 않으면, 프로세스는 단계 S408로 진행하며, 즉 커널은 계속해서 메모리 A를 잠금해제한다.
S410: 메모리 A가 잠금해제된 후, 커널은 메모리 A를 이동시키는데, 예를 들어, 커널은 메모리 A를 메모리 B로 이동시킨다.
S411: 커널은 새로운 메모리 B를 잠그고, 이 새로운 메모리 B에 대해 오프라인 플래그를 설정하며, 이에 따라 새로운 메모리 B의 오프라인 모드가 강제 잠금해제 모드인 것을 확인하는데, 즉 오프라인 플래그에 할당된 값이 UNLOCK인지, 즉 PG_flag = UNLOCK인지를 확인한다. 이때, 오프라인 모드가 강제 잠금해제 모드인 메모리 A에 있어서, 메모리 A를 조작하는 프로세스는 종료된다.
도 7은 본 발명의 실시예에 따라 메모리를 잠금해제하는 방법(500)에 대한 개략적인 흐름도이다. 도 7에 도시된 바와 같이, 방법(500)은 이하를 포함한다:
S501: 사용자 프로세스는 잠긴 메모리 A를 잠금해제할 것을 커널에 요구한다.
S502: 커널은 메모리 A의 오프라인 플래그를 분석함으로써 메모리 A의 오프라인 모드를 확정한다.
커널이 메모리 A의 오프라인 모드가 디폴트 모드인 것으로 확정하면, 즉 PG_flag = = DEFAULT이면, 프로세스는 단계 S504로 진행하고; 커널이 메모리 A의 오프라인 모드가 디폴트 모드가 아닌 것으로 확정하면, 즉 PG_flag !=DEFAULT이면, 프로세스는 단계 S503 또는 단계 S504로 진행한다. 구체적으로, 커널이 메모리 A의 오프라인 모드가 이동 모드인 것으로 확정하면, 즉 PG_flag = = MIGRATE이면, 프로세스는 단계 S503 및 단계 S504로 진행하고; 커널이 메모리 A의 오프라인 모드가 통지 모드인 것으로 확정하면, 즉 PG_flag = = NOTIFY이면; 또는 강제 잠금해제 모드이면, 즉 PG_flag = = UNLOCK이면, 프로세스는 직접 단계 S504로 진행한다.
S503: 커널은 메모리 A를 사용자 프로세스가 실행되는 노드로 재이동시키며, 이에 따라 시스템 성능이 더 향상된다.
S504: 커널은 메모리 A를 잠금해제한다. 이때, 사용자 프로세스에 의해 그 잠긴 메모리 A를 잠금해제하는 프로세스는 종료된다.
전술한 단계의 순번은 실행 순서를 의미하지 않으며, 단계의 실행 순서는 기능 및 내부 로직에 따라 확정될 수 있으며, 이는 본 발명의 실시예의 실행 프로세스를 어떤 식으로든 제한하려는 것이 아니다.
그러므로 본 발명의 실시예에 따라 컴퓨터 시스템의 메모리를 관리하는 방법에서는, 커널과 사용자 프로세스 간의 상호작용을 통해, 메모리에 대해 오프라인 모드를 설정하며, 커널은 이에 대응해서 메모리의 오프라인 모드에 따라 메모리를 오프라인으로 조작할 수 있고, 이에 따라 사용자 프로세스에 의해 잠긴 메모리를 오프라인으로 조작하여 메모리의 핫 스왑을 실행할 수 있어, 시스템 성능을 향상시키고 시스템 리소스를 낭비하지 않는다.
도 1a 내지 도 7을 참조하여 전술한 바에서는, 본 발명의 실시예에 따라 컴퓨터 시스템의 메모리를 관리하는 방법에 대해 상세히 설명하였으며, 본 발명의 실시예에 따른 메모리 관리 유닛 및 컴퓨터 시스템에 대해 도 8 내지 도 14를 참조하여 이하에 설명한다.
도 8은 본 발명의 실시예에 따른 메모리 관리 유닛(700)에 대한 개략적인 블록도이다. 도 8에 도시된 바와 같이, 메모리 관리 유닛(700)은, 사용자 프로세스에 의해 송신되고, 상기 사용자 프로세스를 위해 컴퓨터 시스템의 메모리의 할당을 요구하는 데 사용되는 할당 요구를 수신하도록 구성되어 있는 제1 수신 모듈(710); 상기 제1 수신 모듈(710)에 의해 수신된 할당 요구에 따라 사용자 프로세스에 메모리를 할당하고, 상기 메모리의 오프라인 모드를 나타내는 데 사용되는 오프라인 플래그를 상기 메모리에 설정하도록 구성되어 있는 할당 모듈(720); 상기 사용자 프로세스에 의해 송신되고, 상기 컴퓨터 시스템의 메모리를 잠글 것을 요구하는 데 사용되는 잠금 요구를 수신하도록 구성되어 있는 제2 수신 모듈(730); 상기 제2 수신 모듈(730)에 의해 수신된 잠금 요구 및 상기 메모리의 오프라인 플래그에 따라 메모리를 잠그도록 구성되어 있는 잠금 모듈(740); 및 상기 메모리의 오프라인 플래그에 따라 상기 잠금 모듈에 의해 잠긴 메모리를 오프라인으로 조작하도록 구성되어 있는 오프라인 모듈(750)을 포함한다.
본 발명의 실시예에 따른 메모리 관리 유닛에서는, 커널과 사용자 프로세스 간의 상호작용을 통해, 메모리에 대해 오프라인 모드를 설정하며, 커널은 이에 대응해서 메모리의 오프라인 모드에 따라 메모리를 오프라인으로 조작할 수 있고, 이에 따라 사용자 프로세스에 의해 잠긴 메모리를 오프라인으로 조작하여 메모리의 핫 스왑을 실행할 수 있어, 시스템 성능을 향상시키고 시스템 리소스를 낭비하지 않는다.
본 발명의 실시예에서, 선택적으로, 오프라인 모드 또는 오프라인 정책은 DEFAULT 모드, MIGRATE 모드, NOTIFY 모드 및 강제 UNLOCK 모드 중 적어도 하나를 포함할 수 있다. 선택적으로, 오프라인 모드는 디폴트 모드, 이동 모드, 통지 모드 및 강제 잠금해제 모드를 포함한다.
본 발명의 실시예에서, 선택적으로, 도 9에 도시된 바와 같이, 메모리 관리 유닛(700)은, 사용자 프로세스에 의해 송신되고, 사용자 프로세스가 메모리에 대해 설정한 오프라인 모드를 나타내는 모드 정보를 포함하는 수정 요구를 수신하도록 구성되어 있는 제3 수신 모듈(760); 및 상기 제3 수신 모듈(760)에 의해 수신된 모드 정보에 따라, 사용자 프로세스에 의해 설정된 오프라인 모드를 나타내도록 메모리의 오프라인 플래그를 구성되어 있는 수정 모듈(770)을 더 포함한다.
본 발명의 실시예에서, 도 9에 도시된 바와 같이, 메모리 관리 유닛(700)은, 메모리의 오프라인 모드가 디폴트 모드이면, 컴퓨터 시스템의 요구사항에 따라 메모리의 오프라인 모드를 재확정하고, 재확정된 오프라인 모드를 나타내도록 상기 메모리의 오프라인 플래그를 수정하도록 구성되어 있는 확정 모듈(780)을 더 포함한다.
선택적으로, 도 10에 도시된 바와 같이, 메모리 관리 유닛(700)은, 사용자 프로세스에 의해 송신되고, 메모리를 잠금해제할 것을 요구하는 데 사용되는 잠금해제 요구를 수신하도록 구성되어 있는 제4 수신 모듈(790); 및 상기 제4 수신 모듈(790)에 의해 수신된 잠금해제 요구에 따라 그리고 상기 메모리의 오프라인 플래그가 이동 모드를 나타내면, 사용자 프로세스가 실행되는 노드로 메모리를 재이동시키도록 구성되어 있는 재이동 모듈(795)을 더 포함한다.
본 발명의 실시예에서, 도 11에 도시된 바와 같이, 본 발명의 실시예에 따른 잠금 모듈(740)은, 메모리의 오프라인 플래그가 디폴트 모드, 통지 모드, 또는 강제 잠금해제 모드를 나타내면 메모리를 잠그도록 구성되어 있는 제1 잠금 서브모듈(741); 및 제2 잠금 서브모듈(742)을 포함하며, 상기 제2 잠금 서브모듈은, 메모리의 오프라인 플래그가 이동 모드를 나타내면 메모리를 이동시키고, 메모리가 성공적으로 이동되면, 그 이동된 메모리를 잠그고, 그 이동된 메모리에 대해 이동 모드를 나타내는 오프라인 플래그를 설정하고; 메모리가 성공적으로 이동되지 않으면 메모리를 잠그며, 디폴트 모드를 나타내도록 상기 메모리의 오프라인 플래그를 수정하도록 구성되어 있다.
선택적으로, 도 12에 도시된 바와 같이, 오프라인 모듈(750)은, 메모리의 오프라인 플래그가 디폴트 모드 또는 이동 모드를 나타내면, 상기 메모리가 잠금해제되기를 대기하고, 메모리가 잠금해제된 후 메모리를 이동시키도록 구성되어 있는 제1 오프라인 서브모듈(751); 메모리의 오프라인 플래그가 통지 모드를 나타내면, 사용자 프로세스가 메모리를 잠금해제하도록 트리거링하고, 메모리가 잠금해제된 후 메모리를 이동시키며, 메모리가 이동된 후 사용자 프로세스가 이동된 메모리를 잠그게 하도록 구성되어 있는 제2 오프라인 서브모듈(752); 및 메모리의 오프라인 플래그가 강제 잠금해제 모드를 나타내면, 메모리를 잠금해제하고, 메모리가 잠금해제된 후 메모리를 이동시키며, 그 이동된 메모리를 잠그며, 그 이동된 메모리에 있어서, 강제 잠금해제 모드를 나타내는 오프라인 플래그를 설정하도록 구성되어 있는 제3 오프라인 서브모듈(753)을 포함한다.
선택적으로, 도 13에 도시된 바와 같이, 확정 모듈(780)은, 컴퓨터 시스템이 시스템 작동 성능을 요구할 때, 메모리의 오프라인 모드가 디폴트 모드가 되는 것을 확정하도록 구성되어 있는 제1 확정 서브모듈(781); 및 컴퓨터 시스템이 핫-스왑 성능을 요구할 때, 메모리의 오프라인 모드가 이동 모드가 되는 것을 확정하도록 구성되어 있는 제2 확정 서브모듈(782)을 포함한다.
본 발명의 실시예에 따른 메모리 관리 유닛(700)은 본 발명의 실시예에 따른 방법에서 커널 또는 운영체제에 대응하고, 메모리 관리 유닛(700) 내의 각각의 모듈에 대한 전술한바 및 다른 동작 및/또는 기능은 도 1a 내지 도 7에서의 방법(100 내지 500)의 대응하는 단계를 실행하기 위해 각각 제공되며, 이에 대해서는 설명의 간략화를 위해, 여기서 다시 설명하지 않는다.
본 발명의 실시예에 따른 메모리 관리 유닛에서는, 커널과 사용자 프로세스 간의 상호작용을 통해, 메모리에 대해 오프라인 모드를 설정하며, 커널은 이에 대응해서 메모리의 오프라인 모드에 따라 메모리를 오프라인으로 조작할 수 있고, 이에 따라 사용자 프로세스에 의해 잠긴 메모리를 오프라인으로 조작하여 메모리의 핫 스왑을 실행할 수 있어, 시스템 성능을 향상시키고 시스템 리소스를 낭비하지 않는다.
도 14는 본 발명의 실시예에 따른 컴퓨터 시스템(800)에 대한 개략적인 블록도이다. 도 14에 도시된 바와 같이, 컴퓨터 시스템은 적어도 하나의 메모리(810) 및 본 발명의 실시예에 따른 메모리 관리 유닛(820)을 포함하며, 메모리 관리 유닛(820)은 적어도 하나의 메모리(810)를 관리하도록 구성되어 있고, 사용자 프로세스에 의해 송신되고, 상기 사용자 프로세스를 위해 컴퓨터 시스템의 메모리의 할당을 요구하는 데 사용되는 할당 요구를 수신하도록 구성되어 있는 제1 수신 모듈; 상기 제1 수신 모듈에 의해 수신된 할당 요구에 따라 상기 사용자 프로세스에 메모리를 할당하고, 상기 메모리에 대한 오프라인 모드를 나타내는 오프라인 플래그를 상기 메모리에 설정하도록 구성되어 있는 할당 모듈; 상기 사용자 프로세스에 의해 송신되고, 상기 컴퓨터 시스템의 메모리를 잠글 것을 요구하는 데 사용되는 잠금 요구를 수신하도록 구성되어 있는 제2 수신 모듈; 상기 제2 수신 모듈에 의해 수신된 잠금 요구 및 상기 메모리의 오프라인 플래그에 따라 상기 메모리를 잠그도록 구성되어 있는 잠금 모듈; 및 상기 메모리의 오프라인 플래그에 따라 상기 잠금 모듈에 의해 잠긴 메모리를 오프라인으로 조작하도록 구성되어 있는 오프라인 모듈을 포함한다.
본 발명의 실시예에서, 선택적으로, 오프라인 모드는 디폴트 모드, 이동 모드, 통지 모드 및 강제 잠금해제 모듈 중 적어도 하나를 포함한다. 선택적으로, 메모리 관리 유닛(820)은 사용자 프로세스에 의해 송신되고, 사용자 프로세스가 메모리에 대해 설정한 오프라인 모드를 나타내는 모드 정보를 포함하는 수정 요구를 수신하도록 구성되어 있는 제3 수신 모듈; 및 상기 제3 수신 모듈에 의해 수신된 모드 정보에 따라, 사용자 프로세스가 설정한 오프라인 모드를 나타내도록 상기 메모리의 오프라인 플래그를 수정하도록 구성되어 있는 수정 모듈을 더 포함한다.
선택적으로, 메모리 관리 유닛(82)은 메모리의 오프라인 모드가 디폴트 모드이면, 상기 컴퓨터 시스템의 요구사항에 따라 메모리의 오프라인 모드를 재확정하고, 재확정되는 오프라인 모드를 나타내도록 메모리의 오프라인 플래그를 수정하도록 구성되어 있는 확정 모듈을 더 포함한다.
선택적으로, 메모리 관리 유닛(820)은 사용자 프로세스에 의해 송신되고, 메모리를 잠금해제할 것을 요구하는 데 사용되는 잠금해제 요구를 수신하도록 구성되어 있는 제4 수신 모듈; 및 메모리의 오프라인 플래그가 이동 모드를 나타내면, 상기 제4 수신 모듈에 의해 수신된 상기 잠금해제 요구에 따라 상기 사용자 프로세스가 실행되는 노드로 메모리를 재이동시키도록 구성되어 있는 재이동 모듈을 더 포함한다.
본 발명의 실시예에서, 선택적으로, 잠금 모듈은 메모리의 오프라인 플래그가 디폴트 모드, 통지 모드, 또는 강제 잠금해제 모드를 나타내면 메모리를 잠그도록 구성되어 있는 제1 잠금 서브모듈; 및 제2 잠금 서브모듈을 포함하며, 상기 제2 잠금 서브모듈은, 메모리의 오프라인 플래그가 이동 모드를 나타내면 상기 메모리를 이동시키고; 메모리가 성공적으로 이동되면, 이동된 메모리를 잠그고; 상기 이동된 메모리에 있어서, 메모리가 성공적으로 이동되면, 이동 모드를 나타내는 오프라인 플래그를 설정하고; 메모리가 성공적으로 이동되지 않으면 상기 메모리를 잠그며; 그리고 메모리가 성공적으로 이동되지 않으면, 디폴트 모드를 나타내도록 메모리의 오프라인 플래그를 수정하도록 구성되어 있다.
본 발명의 실시예에서, 선택적으로, 오프라인 모드는 메모리의 오프라인 플래그가 디폴트 모드 또는 이동 모드를 나타내면, 메모리가 잠금해제되기를 대기하고, 메모리가 잠금해제된 후 메모리를 이동시키도록 구성되어 있는 제1 오프라인 서브모듈; 메모리의 오프라인 플래그가 통지 모드를 나타내면, 사용자 프로세스가 메모리를 잠금해제하도록 트리거링하고, 메모리가 잠금해제된 후 메모리를 이동시키며, 메모리가 이동된 후 사용자 프로세스가 이동된 메모리를 잠그게 하도록 구성되어 있는 제2 오프라인 서브모듈; 및 메모리의 오프라인 플래그가 강제 잠금해제 모드를 나타내면, 메모리를 잠금해제하고, 메모리가 잠금해제된 후 메모리를 이동시키며, 이동된 메모리를 잠그며, 이동된 메모리에 있어서, 강제 잠금해제 모드를 나타내는 오프라인 플래그를 설정하도록 구성되어 있는 제3 오프라인 서브모듈을 포함한다.
본 발명의 실시예에 따른 메모리 관리 유닛(820)은 본 발명의 실시예에 따른 장치 내의 메모리 관리 유닛(700)에 대응할 수 있고, 메모리 관리 유닛(820) 내의 각각의 모듈에 대한 전술한바 및 다른 동작 및/또는 기능은 도 1a 내지 도 7에서의 방법(100 내지 500)의 대응하는 단계를 실행하기 위해 각각 제공되며, 이에 대해서는 설명의 간략화를 위해, 여기서 다시 설명하지 않는다.
그러므로 본 발명의 실시예에 따른 컴퓨터 시스템에서는, 커널과 사용자 프로세스 간의 상호작용을 통해, 메모리에 대해 오프라인 모드를 설정하며, 커널은 이에 대응해서 메모리의 오프라인 모드에 따라 메모리를 오프라인으로 조작할 수 있고, 이에 따라 사용자 프로세스에 의해 잠긴 메모리를 오프라인으로 조작하여 메모리의 핫 스왑을 실행할 수 있어, 시스템 성능을 향상시키고 시스템 리소스를 낭비하지 않는다.
본 발명의 실시예에서 잠긴 메모리는 사용자 프로세스에 의해 신청된 잠김 메모리에 대해 제한되지 않으며, 다른 목적을 위해 잠긴 메모리 역시 본 발명의 실시예에 따른 솔루션을 사용함으로써 오프라인으로 조작될 수 있다. 또한, 잠긴 메모리에 대한 오프라인 정책에서의 이동 정책은 사용자 프로세스에 의해 정형화되고 커널에 의해 실행되는 솔루션에 제한되지 않으며, 이동 정책은 사용자 프로세스가 특별한 이동 영역으로 이동하도록 신청하는 것을 지정하는 것일 수 있으며, 이에 의해 이동 없이 메모리를 오프라인으로 조작하는 조건이 실행된다.
당업자라면 여기서 개시된 실시예와 조합해서 설명된 예들의 유닛 및 알고리즘 단계가 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 조합으로 실현될 수 있다는 것을 이해할 수 있을 것이다. 하드웨어와 소프트웨어 간의 상호교환성을 명확하게 설명하기 위해, 각각의 예의 조성 및 단계에 대해 대체로 전술한 설명에서의 기능에 따라 설명하였다. 기능이 하드웨어에 의해 실행되는지 또는 소프트웨어에 의해 실행되는지는 기술적 솔루션의 특정한 어플리케이션 및 설계상의 제약 조건에 달려 있다. 당업자라면 다른 방법을 사용하여 각각의 특정한 어플리케이션에 대해 설명된 기능을 실행할 수 있을 것이나, 본 발명의 범위는 넘어서는 실행이 진행되는 것은 고려되지 않는다.
당업자라면 설명의 편의 및 간략화를 위해, 전술한 시스템, 장치 및 유닛에 대해 설명된 작업 프로세스에 있어서, 방법 실시예에서의 대응하는 프로세스를 참조할 수 있다는 것을 이해할 수 있을 것이며, 이에 대해서는 여기서 반복 설명하지 않는다.
본 출원에서 제공하는 일부의 실시예에 있어서, 설명된 시스템, 장치 및 방법은 다른 방식으로도 실현될 수 있음에 주목하라. 예를 들어, 설명된 장치 실시예는 단지 예에 지나지 않는다. 예를 들어, 유닛 분할은 단순히 논리적 기능 분할에 불과하며 실제의 실현에서는 다른 분할이 될 수도 있다. 예를 들어, 복수의 유닛 또는 구성요소가 다른 시스템에 조합 또는 통합될 수 있거나, 일부의 특징이 무시되거나 수행되지 않을 수도 있다. 또한, 도시되었거나 설명된 커플링 또는 직접 커플링 또는 통신 접속은 일부의 인터페이스, 장치 또는 유닛 간의 간접 커플링 또는 통신 접속을 통해 달성될 수 있거나, 전자식, 기계식 또는 다른 형태로 될 수도 있다.
별도의 구성요소로서 설명된 유닛은 물리적으로 별도일 수 있거나 아닐 수도 있다. 유닛으로서 도시된 구성요소는 물리적 유닛일 수도 있고 아닐 수도 있으며, 즉 복수의 네트워크 유닛에 통합되어 있거나 분배되어 있을 수 있다. 이러한 유닛 중 일부 또는 전부는 실제의 수요에 따라 실시예의 솔루션의 목적을 달성하도록 선택될 수 있다.
또한, 본 발명의 실시예의 기능 유닛은 프로세싱 모듈에 통합될 수 있거나, 각각의 별도의 물리적 유닛일 수 있으며; 대안으로, 이러한 유닛 중 2 이상은 하나의 유닛으로 통합된다. 통합 유닛은 하드웨어 또는 소프트웨어 기능 유닛을 통해 실현될 수 있다.
소프트웨어 기능 유닛의 형태로 실현되고 독립 제품으로 판매 또는 사용되는 경우, 통합 유닛은 또한 컴퓨터 판독 가능형 저장 매체에 저장될 수 있다. 이러한 이해를 기초로, 본 발명의 기술적 솔루션 또는 종래기술에 이바지하는 부분, 또는 기술적 솔루션의 일부 또는 전부를 실질적으로 소프트웨어 제품으로 구현할 수 있다. 컴퓨터 소프트웨어 제품은 저장 매체에 저장되어, 본 발명의 실시예에 설명된 방법의 단계 중 일부 또는 전부를 수행하도록 컴퓨터 설비(예를 들어, 퍼스널 컴퓨터, 서버, 또는 네트워크 설비)에 명령하는 수 개의 명령을 저장한다. 저장 매체로는, 프로그램 코드를 저장할 수 있는 다양한 매체, 예를 들어, USB 플래시 드라이브, 모바일 하드디스크, 리드 온리 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기디스크 또는 광디스크를 들 수 있다.
전술한 설명은 단지 본 발명의 특정한 실시예에 지나지 않으며, 본 발명의 보호 범위는 이에 제한되지 않는다. 본 발명의 기술적 범위 내에서 당업자가 생각해낸 모든 등가의 변형 또는 대체는 본 발명의 보호 범위 내에 있게 된다. 그러므로 본 발명의 보호 범위는 첨부된 청구의 범위에 해당된다.

Claims (17)

  1. 컴퓨터 시스템의 메모리 관리 방법에 있어서,
    사용자 프로세스에 의해 송신되고, 상기 사용자 프로세스를 위해 컴퓨터 시스템의 메모리의 할당을 요구하는 데 사용되는 할당 요구를 수신하는 단계;
    상기 할당 요구에 따라 상기 사용자 프로세스에 메모리를 할당하는 단계;
    상기 메모리에 대한 오프라인 모드를 나타내는 오프라인 플래그를 상기 메모리에 설정하는 단계;
    상기 사용자 프로세스에 의해 송신되고, 상기 메모리를 잠글 것을 요구하는 데 사용되는 잠금 요구를 수신하는 단계;
    상기 잠금 요구 및 상기 메모리의 오프라인 플래그에 따라 상기 메모리를 잠그는 단계; 및
    상기 메모리의 오프라인 플래그에 따라 상기 메모리를 오프라인으로 조작하는 단계
    를 포함하는 메모리 관리 방법.
  2. 제1항에 있어서,
    상기 사용자 프로세스에 의해 송신되고, 상기 메모리에 대한 사용자 프로세스-설정 오프라인 모드(user process-set offline mode)를 나타내는 모드 정보를 포함하는 수정 요구를 수신하는 단계;
    상기 모드 정보에 따라, 상기 사용자 프로세스-설정 오프라인 모드를 나타내도록 상기 메모리의 오프라인 플래그를 수정하는 단계
    를 더 포함하는 메모리 관리 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 오프라인 모드는 디폴트 모드(default mode), 이동 모드(migrate mode), 통지 모드(notify mode), 및 강제 잠금해제 모드(forcible unlock mode) 중 적어도 하나를 포함하는, 메모리 관리 방법.
  4. 제3항에 있어서,
    상기 메모리의 오프라인 모드가 디폴트 모드이면, 상기 컴퓨터 시스템의 요구사항에 따라 상기 메모리의 오프라인 모드를 재확정하는 단계; 및
    상기 오프라인 모드가 재확정되는 것을 나타내도록 상기 메모리에 대한 오프라인 플래그를 수정하는 단계
    를 더 포함하는 메모리 관리 방법.
  5. 제4항에 있어서,
    상기 컴퓨터 시스템의 요구사항에 따라 상기 메모리의 오프라인 모드를 확정하는 단계는,
    상기 컴퓨터 시스템이 시스템 작동 성능을 요구할 때, 상기 메모리의 오프라인 모드가 디폴트 모드가 되도록 확정하는 단계; 또는
    상기 컴퓨터 시스템이 핫-스왑 성능(hot-swap performance)을 요구할 때, 상기 메모리의 오프라인 모드가 이동 모드가 되도록 확정하는 단계
    를 포함하는, 메모리 관리 방법.
  6. 제3항 내지 제5항 중 어느 한 항에 있어서,
    상기 잠금 요구 및 상기 메모리의 오프라인 플래그에 따라 상기 메모리를 잠그는 단계는,
    상기 메모리의 오프라인 플래그가 디폴트 모드, 통지 모드, 또는 강제 잠금해제 모드를 나타내면 상기 메모리를 잠그는 단계;
    상기 메모리의 오프라인 플래그가 이동 모드를 나타내면 상기 메모리를 이동시키는 단계;
    상기 메모리의 오프라인 플래그가 이동 모드를 나타내고 상기 메모리가 성공적으로 이동되면, 이동된 메모리를 잠그는 단계;
    상기 이동된 메모리에 있어서, 상기 메모리의 오프라인 플래그가 이동 모드를 나타내고 상기 메모리가 성공적으로 이동되면, 이동 모드를 나타내는 오프라인 플래그를 설정하는 단계;
    상기 메모리의 오프라인 플래그가 이동 모드를 나타내고 상기 메모리가 성공적으로 이동되지 않으면, 상기 메모리를 잠그는 단계; 및
    상기 메모리의 오프라인 플래그가 이동 모드를 나타내고 상기 메모리가 성공적으로 이동되지 않으면, 디폴트 모드를 나타내도록 상기 메모리의 오프라인 플래그를 수정하는 단계
    를 포함하는, 메모리 관리 방법.
  7. 제3항 내지 제6항 중 어느 한 항에 있어서,
    상기 메모리의 오프라인 플래그에 따라 상기 메모리를 오프라인으로 조작하는 단계는,
    상기 메모리의 오프라인 플래그가 디폴트 모드 또는 이동 모드를 나타내면, 상기 메모리가 잠금해제되기를 대기하는 단계;
    상기 메모리의 오프라인 플래그가 디폴트 모드 또는 이동 모드를 나타내면, 상기 메모리가 잠금해제된 후 상기 메모리를 이동시키는 단계;
    상기 메모리의 오프라인 플래그가 통지 모드를 나타내면, 상기 사용자 프로세스가 상기 메모리를 잠금해제하도록 트리거링하는 단계;
    상기 메모리의 오프라인 플래그가 통지 모드를 나타내면, 상기 메모리가 잠금해제된 후 상기 메모리를 이동시키는 단계;
    상기 메모리의 오프라인 플래그가 통지 모드를 나타내면, 상기 사용자 프로세스가 상기 이동된 메모리를 잠그도록 트리거링하는 단계;
    상기 메모리의 오프라인 플래그가 강제 잠금해제 모드를 나타내면, 상기 메모리를 잠금해제하는 단계;
    상기 메모리의 오프라인 플래그가 강제 잠금해제 모드를 나타내면, 상기 메모리가 잠금해제된 후 상기 메모리를 이동시키는 단계;
    상기 메모리의 오프라인 플래그가 강제 잠금해제 모드를 나타내면, 상기 이동된 메모리를 잠그는 단계; 및
    상기 이동된 메모리에 있어서, 상기 메모리의 오프라인 플래그가 강제 잠금해제 모드를 나타내면, 강제 잠금해제 모드를 나타내는 오프라인 플래그를 설정하는 단계
    를 포함하는, 메모리 관리 방법.
  8. 제3항 내지 제7항 중 어느 한 항에 있어서,
    상기 사용자 프로세스에 의해 송신되고, 상기 메모리를 잠금해제할 것을 요구하는 데 사용되는 잠금해제 요구를 수신하는 단계; 및
    상기 메모리의 오프라인 플래그가 이동 모드를 나타내면, 상기 잠금해제 요구에 따라 상기 사용자 프로세스가 실행되는 노드로 상기 메모리를 재이동시키는 단계
    를 더 포함하는 메모리 관리 방법.
  9. 메모리 관리 유닛에 있어서,
    사용자 프로세스에 의해 송신되고, 상기 사용자 프로세스를 위해 컴퓨터 시스템의 메모리의 할당을 요구하는 데 사용되는 할당 요구를 수신하도록 구성되어 있는 제1 수신 모듈;
    상기 제1 수신 모듈에 의해 수신된 할당 요구에 따라 상기 사용자 프로세스에 메모리를 할당하고, 상기 메모리에 대한 오프라인 모드를 나타내는 오프라인 플래그를 상기 메모리에 설정하도록 구성되어 있는 할당 모듈;
    상기 사용자 프로세스에 의해 송신되고, 상기 컴퓨터 시스템의 메모리를 잠글 것을 요구하는 데 사용되는 잠금 요구를 수신하도록 구성되어 있는 제2 수신 모듈;
    상기 제2 수신 모듈에 의해 수신된 잠금 요구 및 상기 메모리의 오프라인 플래그에 따라 상기 메모리를 잠그도록 구성되어 있는 잠금 모듈; 및
    상기 메모리의 오프라인 플래그에 따라 상기 잠금 모듈에 의해 잠긴 메모리를 오프라인으로 조작하도록 구성되어 있는 오프라인 모듈
    을 포함하는 메모리 관리 유닛.
  10. 제9항에 있어서,
    상기 사용자 프로세스에 의해 송신되고, 상기 메모리에 대한 사용자 프로세스-설정 오프라인 모드를 나타내는 모드 정보를 포함하는 수정 요구를 수신하도록 구성되어 있는 제3 수신 모듈; 및
    상기 제3 수신 모듈에 의해 수신된 모드 정보에 따라, 상기 사용자 프로세스-설정 오프라인 모드를 나타내도록 상기 메모리의 오프라인 플래그를 수정하도록 구성되어 있는 수정 모듈
    을 더 포함하는 메모리 관리 유닛.
  11. 제9항 또는 제10항에 있어서,
    상기 오프라인 모드는 디폴트 모드, 이동 모드, 통지 모드, 및 강제 잠금해제 모드 중 적어도 하나를 포함하는, 메모리 관리 유닛.
  12. 제11항에 있어서,
    상기 메모리의 오프라인 모드가 디폴트 모드이면, 상기 컴퓨터 시스템의 요구사항에 따라 상기 메모리의 오프라인 모드를 재확정하고, 오프라인 모드가 재확정되는 것을 나타내도록 상기 메모리의 오프라인 플래그를 수정하도록 구성되어 있는 확정 모듈
    을 더 포함하는 메모리 관리 유닛.
  13. 제12항에 있어서,
    상기 확정 모듈은,
    상기 컴퓨터 시스템이 시스템 작동 성능을 요구할 때, 상기 메모리의 오프라인 모드가 디폴트 모드가 되는 것을 확정하도록 구성되어 있는 제1 확정 서브모듈; 또는
    상기 컴퓨터 시스템이 핫-스왑 성능을 요구할 때, 상기 메모리의 오프라인 모드가 이동 모드가 되는 것을 확정하도록 구성되어 있는 제2 확정 서브모듈
    을 포함하는, 메모리 관리 유닛.
  14. 제11항 내지 제13항 중 어느 한 항에 있어서,
    상기 잠금 모듈은,
    상기 메모리의 오프라인 플래그가 디폴트 모드, 통지 모드, 또는 강제 잠금해제 모드를 나타내면 상기 메모리를 잠그도록 구성되어 있는 제1 잠금 서브모듈; 및
    제2 잠금 서브모듈
    을 포함하며,
    상기 제2 잠금 서브모듈은,
    상기 메모리의 오프라인 플래그가 이동 모드를 나타내면 상기 메모리를 이동시키고;
    상기 메모리가 성공적으로 이동되면, 이동된 메모리를 잠그고;
    상기 이동된 메모리에 있어서, 상기 메모리가 성공적으로 이동되면, 이동 모드를 나타내는 오프라인 플래그를 설정하고;
    상기 메모리가 성공적으로 이동되지 않으면 상기 메모리를 잠그며; 그리고
    상기 메모리가 성공적으로 이동되지 않으면, 디폴트 모드를 나타내도록 상기 메모리의 오프라인 플래그를 수정하도록 구성되어 있는, 메모리 관리 유닛.
  15. 제11항 내지 제14항 중 어느 한 항에 있어서,
    상기 오프라인 모듈은,
    상기 메모리의 오프라인 플래그가 디폴트 모드 또는 이동 모드를 나타내면, 상기 메모리가 잠금해제되기를 대기하고, 상기 메모리가 잠금해제된 후 상기 메모리를 이동시키도록 구성되어 있는 제1 오프라인 서브모듈;
    상기 메모리의 오프라인 플래그가 통지 모드를 나타내면, 상기 사용자 프로세스가 상기 메모리를 잠금해제하도록 트리거링하고, 상기 메모리가 잠금해제된 후 상기 메모리를 이동시키며, 상기 메모리가 이동된 후 상기 사용자 프로세스가 상기 이동된 메모리를 잠그게 하도록 구성되어 있는 제2 오프라인 서브모듈; 및
    상기 메모리의 오프라인 플래그가 강제 잠금해제 모드를 나타내면, 상기 메모리를 잠금해제하고, 상기 메모리가 잠금해제된 후 상기 메모리를 이동시키며, 상기 이동된 메모리를 잠그며, 상기 이동된 메모리에 있어서, 강제 잠금해제 모드를 나타내는 오프라인 플래그를 설정하도록 구성되어 있는 제3 오프라인 서브모듈
    을 포함하는, 메모리 관리 유닛.
  16. 제11항 내지 제15항 중 어느 한 항에 있어서,
    상기 사용자 프로세스에 의해 송신되고, 상기 메모리를 잠금해제할 것을 요구하는 데 사용되는 잠금해제 요구를 수신하도록 구성되어 있는 제4 수신 모듈; 및
    상기 메모리의 오프라인 플래그가 이동 모드를 나타내면, 상기 제4 수신 모듈에 의해 수신된 상기 잠금해제 요구에 따라 상기 사용자 프로세스가 실행되는 노드로 상기 메모리를 재이동시키도록 구성되어 있는 재이동 모듈
    을 더 포함하는 메모리 관리 유닛.
  17. 컴퓨터 시스템에 있어서,
    적어도 하나의 메모리, 및 제9항 내지 제16항 중 어느 한 항에 따른 메모리 관리 유닛을 포함하며, 상기 메모리 관리 유닛은 상기 적어도 하나의 메모리를 관리하도록 구성되어 있는, 컴퓨터 시스템.
KR1020137024926A 2011-08-31 2011-08-31 컴퓨터 시스템의 메모리 관리 방법, 메모리 관리 유닛 및 컴퓨터 시스템 KR101532397B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2011/079202 WO2012083724A1 (zh) 2011-08-31 2011-08-31 管理计算机系统内存的方法、内存管理单元和计算机系统

Publications (2)

Publication Number Publication Date
KR20130122692A true KR20130122692A (ko) 2013-11-07
KR101532397B1 KR101532397B1 (ko) 2015-06-29

Family

ID=45761450

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137024926A KR101532397B1 (ko) 2011-08-31 2011-08-31 컴퓨터 시스템의 메모리 관리 방법, 메모리 관리 유닛 및 컴퓨터 시스템

Country Status (8)

Country Link
US (1) US20130246729A1 (ko)
EP (1) EP2642387B1 (ko)
JP (1) JP5636133B2 (ko)
KR (1) KR101532397B1 (ko)
CN (1) CN102369518B (ko)
AU (1) AU2011348864B2 (ko)
RU (1) RU2565519C2 (ko)
WO (1) WO2012083724A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103514164B (zh) * 2012-06-15 2016-12-21 阿里巴巴集团控股有限公司 数据迁移方法及系统
CN105159838B (zh) * 2015-08-27 2018-06-26 华为技术有限公司 访问内存的方法及计算机系统
CN105117295A (zh) * 2015-09-18 2015-12-02 北京金山安全软件有限公司 一种内存资源释放方法、装置及电子设备
CN113688068B (zh) * 2021-10-25 2022-02-15 支付宝(杭州)信息技术有限公司 图数据加载方法及装置

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0827755B2 (ja) * 1991-02-15 1996-03-21 インターナショナル・ビジネス・マシーンズ・コーポレイション データの単位を高速度でアクセスする方法
JPH0997205A (ja) * 1995-09-28 1997-04-08 Canon Inc フラッシュrom管理方法及び装置及びコンピュータ制御装置
US5933847A (en) * 1995-09-28 1999-08-03 Canon Kabushiki Kaisha Selecting erase method based on type of power supply for flash EEPROM
US6038680A (en) * 1996-12-11 2000-03-14 Compaq Computer Corporation Failover memory for a computer system
US6493796B1 (en) * 1999-09-01 2002-12-10 Emc Corporation Method and apparatus for maintaining consistency of data stored in a group of mirroring devices
JP2001167001A (ja) * 1999-10-28 2001-06-22 Hewlett Packard Co <Hp> 自己回復するメモリ構成
US6823424B2 (en) * 2000-01-26 2004-11-23 Hewlett-Packard Development Company, L.P. Rebuild bus utilization
US6832301B2 (en) * 2001-09-11 2004-12-14 International Business Machines Corporation Method for recovering memory
US6684292B2 (en) * 2001-09-28 2004-01-27 Hewlett-Packard Development Company, L.P. Memory module resync
US7673090B2 (en) * 2001-12-19 2010-03-02 Intel Corporation Hot plug interface control method and apparatus
US7028215B2 (en) * 2002-05-03 2006-04-11 Hewlett-Packard Development Company, L.P. Hot mirroring in a computer system with redundant memory subsystems
US6874076B2 (en) * 2002-09-30 2005-03-29 International Business Machines Corporation Method, system, and computer program product for migrating data from one real page to another
US6947051B2 (en) * 2003-02-18 2005-09-20 Microsoft Corporation Video memory management
US6990545B2 (en) * 2003-04-28 2006-01-24 International Business Machines Corporation Non-disruptive, dynamic hot-plug and hot-remove of server nodes in an SMP
US7107411B2 (en) * 2003-12-16 2006-09-12 International Business Machines Corporation Apparatus method and system for fault tolerant virtual memory management
US7380039B2 (en) * 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
US7840772B2 (en) * 2004-09-10 2010-11-23 Hewlett-Packard Development Company, L.P. Physical memory control using memory classes
RU2272362C1 (ru) * 2004-09-21 2006-03-20 Военный университет связи Способ управления потоками при передаче пакетов данных
US7467324B1 (en) * 2004-09-30 2008-12-16 Ayaya Inc. Method and apparatus for continuing to provide processing on disk outages
US7222200B2 (en) * 2004-10-14 2007-05-22 Dell Products L.P. Method for synchronizing processors in SMI following a memory hot plug event
CN1811742A (zh) * 2005-01-28 2006-08-02 乐金电子(惠州)有限公司 闪存的界面设备及其方法
US7383412B1 (en) * 2005-02-28 2008-06-03 Nvidia Corporation On-demand memory synchronization for peripheral systems with multiple parallel processors
JP4274140B2 (ja) * 2005-03-24 2009-06-03 日本電気株式会社 ホットスワップ機能付きメモリシステム及びその障害メモリモジュールの交換方法
JP4474648B2 (ja) * 2005-03-25 2010-06-09 日本電気株式会社 メモリシステム及びそのホットスワップ方法
US7437529B2 (en) * 2005-06-16 2008-10-14 International Business Machines Corporation Method and mechanism for efficiently creating large virtual memory pages in a multiple page size environment
US20070083482A1 (en) * 2005-10-08 2007-04-12 Unmesh Rathi Multiple quality of service file system
US7472249B2 (en) * 2006-06-30 2008-12-30 Sun Microsystems, Inc. Kernel memory free algorithm
US20080127182A1 (en) * 2006-11-29 2008-05-29 Newport William T Managing Memory Pages During Virtual Machine Migration
US20080228770A1 (en) * 2007-03-15 2008-09-18 Halcrow Michael A Method for Performing Recoverable Live Context Migration in a Stacked File System
US20090006402A1 (en) * 2007-06-28 2009-01-01 Holger Bohle Methods and systems for the dynamic selection of a locking strategy
KR20090005921A (ko) * 2007-07-10 2009-01-14 삼성전자주식회사 대칭적 다중 프로세서 시스템에서의 로드 밸런싱 방법 및장치
JP2009211132A (ja) * 2008-02-29 2009-09-17 Hitachi Ltd 記憶システム及びデータ移行方法
US9128964B2 (en) * 2008-03-31 2015-09-08 Verizon Patent And Licensing Inc. Selective mapping of integrated data
US8140825B2 (en) * 2008-08-05 2012-03-20 International Business Machines Corporation Systems and methods for selectively closing pages in a memory
EP2315126A4 (en) * 2008-08-11 2012-06-20 Fujitsu Ltd PEST INFORMATION COLLECTION PROGRAM, PASSING INFORMATION COLLECTION METHOD, AND PASSING INFORMATION COLLECTION SYSTEM
US8200771B2 (en) * 2008-10-10 2012-06-12 International Business Machines Corporation Workload migration using on demand remote paging
JP5338435B2 (ja) * 2009-03-31 2013-11-13 富士通株式会社 情報処理プログラム、情報処理装置および情報処理方法
US8973004B2 (en) * 2009-06-26 2015-03-03 Oracle America, Inc. Transactional locking with read-write locks in transactional memory systems
US8549249B1 (en) * 2009-09-21 2013-10-01 Tilera Corporation Supporting secondary atomic operations using primary atomic operations
US20110161620A1 (en) * 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US8438571B2 (en) * 2010-02-24 2013-05-07 International Business Machines Corporation Thread speculative execution and asynchronous conflict
CN102222037B (zh) * 2010-04-15 2014-04-02 国际商业机器公司 用于定位java程序的瓶颈的方法和设备
US8799904B2 (en) * 2011-01-21 2014-08-05 International Business Machines Corporation Scalable system call stack sampling
US8869172B2 (en) * 2011-09-30 2014-10-21 Quietus Systems Inc. Method and system method and system for exception-less system calls for event driven programs
US9176911B2 (en) * 2012-12-11 2015-11-03 Intel Corporation Explicit flow control for implicit memory registration

Also Published As

Publication number Publication date
RU2565519C2 (ru) 2015-10-20
EP2642387A4 (en) 2014-01-22
AU2011348864A1 (en) 2013-10-10
EP2642387A1 (en) 2013-09-25
KR101532397B1 (ko) 2015-06-29
JP2014515145A (ja) 2014-06-26
AU2011348864B2 (en) 2017-05-25
RU2013142946A (ru) 2015-03-27
CN102369518A (zh) 2012-03-07
EP2642387B1 (en) 2015-07-15
WO2012083724A1 (zh) 2012-06-28
JP5636133B2 (ja) 2014-12-03
CN102369518B (zh) 2014-07-09
US20130246729A1 (en) 2013-09-19

Similar Documents

Publication Publication Date Title
CN106302663B (zh) 经由网络分割的本地云计算
JP5884578B2 (ja) アクセラレータ管理装置、アクセラレータ管理方法および入出力装置
US20140095769A1 (en) Flash memory dual in-line memory module management
EP3470984B1 (en) Method, device, and system for managing disk lock
JP2013513174A (ja) 仮想マシンのストレージスペースおよび物理ホストを管理するための方法およびシステム
CN103297456A (zh) 一种分布式系统下共享资源的访问方法及分布式系统
KR20130122692A (ko) 컴퓨터 시스템의 메모리 관리 방법, 메모리 관리 유닛 및 컴퓨터 시스템
CN110262893B (zh) 配置镜像内存的方法、装置及计算机存储介质
JP5360199B2 (ja) 仮想計算機システム、情報処理装置、コンピュータプログラム及び接続制御方法
CN111897666A (zh) 用于多进程之间通信的方法、设备及系统
CN104461705B (zh) 一种业务访问的方法及存储控制器、集群存储系统
CN114546587A (zh) 一种在线图像识别服务的扩缩容方法及相关装置
KR101535792B1 (ko) 운영체제 구성 장치 및 방법
EP3249540B1 (en) Method for writing multiple copies into storage device, and storage device
CN110046138B (zh) 一种iSCSI目标器多实例处理方法及分布式存储系统
CN111382141A (zh) 主从架构配置方法、装置、设备以及计算机可读存储介质
US20130247065A1 (en) Apparatus and method for executing multi-operating systems
CN114090249A (zh) 资源分配方法、装置、电子设备及存储介质
EP3783484A1 (en) Data processing method and computer device
JP2007293639A (ja) アクセス制御方法、アクセス制御方法を用いた機器及びシステム
CN105264494A (zh) 鉴权处理装置和方法
CN108388468B (zh) 一种快速文件系统调度方法及装置
JP2006085209A (ja) 計算機システムのデプロイメント方式
WO2016067339A1 (ja) ストレージシステム、及び、記憶制御方法
CN115756849A (zh) 微内核操作系统中内存分配方法、装置、设备及介质

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
FPAY Annual fee payment

Payment date: 20180530

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 5