KR101372964B1 - 메모리 페이지 관리 - Google Patents

메모리 페이지 관리 Download PDF

Info

Publication number
KR101372964B1
KR101372964B1 KR1020077027854A KR20077027854A KR101372964B1 KR 101372964 B1 KR101372964 B1 KR 101372964B1 KR 1020077027854 A KR1020077027854 A KR 1020077027854A KR 20077027854 A KR20077027854 A KR 20077027854A KR 101372964 B1 KR101372964 B1 KR 101372964B1
Authority
KR
South Korea
Prior art keywords
memory page
memory
page
data structure
access
Prior art date
Application number
KR1020077027854A
Other languages
English (en)
Other versions
KR20080021623A (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 KR20080021623A publication Critical patent/KR20080021623A/ko
Application granted granted Critical
Publication of KR101372964B1 publication Critical patent/KR101372964B1/ko

Links

Images

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

하나 이상의 순차 액세스형(sequentially-accessed) 데이터 구조에 사용되는 메모리 페이징(paging) 방법, 그리고 대응하는 소프트웨어 및 시스템을 개시한다. 상기 방법은, 메모리 페이지가 재사용될 수 있는 순서를 나타내는 데이터 구조(200)를 제공하는 단계; 및 상기 순차 액세스형 데이터 구조 중 하나와 연관된 메모리 페이지에 대한 액세스 이력에 따라 상기 데이터 구조를 유지하는 단계를 포함한다. 상기 순서 내의 상기 메모리 페이지의 위치는 상기 메모리 페이지에 대한 순차적인 액세스 오프의 트랜지션(transition of access off)에 종속된다.
순차 액세스, 데이터 구조, 메모리, 페이징, 액세스 이력, 트랜지션

Description

메모리 페이지 관리 {MANAGING MEMORY PAGES}
본 발명은 메모리 페이지의 관리에 관한 것이다.
비휘발성 메모리 스토어(none-volatile memory store)(예컨대, 하나 이상의 디스크 드라이브)에도 저장되어 있는 데이터로 작업하기 위해 휘발성 메모리 스토어(volatile memory store)(예컨대, RAM)를 사용하는 것은 유용하다. 예를 들면, 휘발성 메모리 스토어는 일반적으로 비휘발성 메모리 스토어보다 액세스 및 판독 시간이 더 빠르다. 휘발성 메모리 스토어 및 비휘발성 메모리 스토어의 어드레스 공간(address space)은 소정의 개수의 연속하는 어드레스 위치(address location)에 걸친 페이지들로 구성될 수 있다. 컴퓨터 시스템은 페이징 기술(paging technique)을 사용하여, 예를 들면 프로그램 또는 데이터 구조에 의해 사용될 휘발성 메모리 스토어에서 메모리 페이지를 할당한다. 비휘발성 메모리 스토어는 일반적으로 휘발성 메모리 스토어보다 용량이 더 크다. 가상 메모리 방식(virtual memory scheme)을 사용하여, 사용하지 않는(예컨대, 현재 기록중이거나 판독중이 아닌) 휘발성 메모리 스토어 내의 페이지를 비휘발성 메모리 스토어에 기록한 다음, 나중에 필요할 때 다시 비휘발성 메모리 스토어로부터 판독하게 할 수 있다. 따라서, 휘발성 메모리 스토어 내의 페이지는 각종 프로그램 및/또는 데이터 구조 가 사용하도록 "재활용(recycled)"된다. 페이지 전후로의 이동과 연관된 오버헤드를 줄이기 위해, 몇몇 기술은 LRU 방식(Least Recently Used approach)에 따라 페이지를 재활용한다. LRU 방식에서, 비휘발성 메모리 스토어에 기록하였던 페이지를 휘발성 메모리 스토어로 이동하여야 하는데 휘발성 메모리 스토어에 더 이상 미사용 페이지(free page)가 존재하지 않으면, 휘발성 메모리 스토어에서 비휘발성 메모리 스토어로 재활용(또는 "교체(swapped)" 또는 "페이지 아웃(paged out)")되도록 선택되는 페이지는 최근에 가장 적게 사용된(예컨대, 최근에 가장 적게 판독 또는 기록된) 페이지이다.
일반적인 측면에서, 본 발명은 하나 이상의 순차 액세스형(sequentially-accessed) 데이터 구조에 사용되는 메모리를 페이징하기 위한 페이징 방법과, 대응하는 소프트웨어 및 시스템에 특징이 있다. 상기 페이징 방법은 메모리 페이지가 재사용될 수 있는 순서를 나타내는 데이터 구조를 제공하는 단계; 및 상기 순차 액세스형 데이터 구조 중 하나와 연관된 메모리 페이지에 대한 액세스 이력에 따라 상기 데이터 구조를 유지하는 단계를 포함하고; 상기 순서 내의 상기 메모리 페이지의 위치는 상기 메모리 페이지에 대한 순차적인 액세스 오프의 트랜지션(transition of access off)에 종속된다.
이 측면은 다음의 특징 중 하나 이상을 포함할 수 있다:
상기 메모리 페이지에 대한 순차적인 액세스 오프의 트랜지션은 상기 메모리 페이지에 대한 트랜지셔닝 오프 포인터(transitioning off pointer)에 대응한다.
상기 순서 내의 메모리 페이지의 위치는, 순차적인 액세스의 트랜지션이 상기 메모리 페이지에 대한 기록 액세스 오프의 트랜지션에 대응하는지에 따른다.
상기 순차 액세스형 데이터 구조 중 하나와 연관된 메모리 페이지에 대한 액세스 이력에 따라 상기 데이터 구조를 유지하는 단계는, 상기 메모리 페이지에 대한 기록 액세스 오프의 트랜지션에 응답하여 상기 순서를 나타내는 상기 데이터 구조의 첫 번째 엔드(end)에 상기 메모리 페이지의 식별자(identifier)를 위치시키는 단계; 및 닫힌(closed) 상기 메모리 페이지와 연관된 순차 액세스형 데이터 구조에 응답하여 상기 순서를 나타내는 상기 데이터 구조의 두 번째 엔드에 상기 메모리 페이지의 식별자를 위치시키는 단계를 포함한다.
상기 페이징 방법은 상기 순서를 나타내는 상기 데이터 구조의 첫 번째 엔드에서부터 메모리 페이지를 재사용하는 단계를 더 포함한다.
상기 페이징 방법은 미사용 메모리 페이지(free memory page)의 리스트가 빈 상태(empty)인 것을 판정한 후에 상기 데이터 구조의 첫 번째 엔드에서부터 상기 메모리 페이지를 재사용하는 단계를 더 포함한다.
상기 메모리 페이지를 재사용하는 단계는 상기 메모리 페이지의 현재 컨텐츠를 비휘발성 메모리 스토어에 기록하는 단계를 포함한다.
상기 메모리 페이지를 재사용하는 단계는 상기 비휘발성 메모리 스토어로부터의 메모리 페이지를 상기 메모리 페이지에 기록하는 단계를 더 포함한다.
상기 메모리 페이지와 연관된 상기 순차 액세스형 데이터 구조는 큐(queue)를 포함한다.
일반적인 측면에서, 본 발명은 하나 이상의 순차 액세스형 데이터 구조에 사용되는 메모리를 페이징하기 위해, 첫 번째 경우는 MRU 방식(Most-Recently Used approach)에 따라, 그리고 두 번째 경우는 LRU 방식에 따라, 순차 액세스형 데이터 구조와 연관된 메모리 페이지를 재사용하는 단계를 포함하는, 페이징 방법과, 대응하는 소프트웨어 및 시스템에 특징이 있다.
이 측면은 다음의 특징 중 하나 이상을 포함한다:
상기 첫 번째 경우는 상기 메모리 페이지의 기록 포인터 트랜지셔닝 오프(wirte pointer transioning off)를 포함한다.
상기 두 번째 경우는 상기 순차 액세스형 데이터 구조를 닫는(closing) 액세스 엔티티(acess entity)를 포함한다.
상기 두 번째 경우는 상기 메모리 페이지의 판독 포인터 트랜지셔닝 오프(read pointer transioning off)를 포함한다.
본 발명의 측면들은 다음의 이점 중 하나 이상을 포함할 수 있다:
재사용을 위한 페이지의 순서화(ordering)는 큐 또는 다른 순차적인 I/O 데이터 구조를 포함하는(store) 메모리 시스템에 대해 어느 페이지를 곧 다시 사용할 수 있을지에 대한 더욱 우수한 예측을 제공할 수 있다. 막 기록된 페이지(즉, 기록 포인터가 해당 페이지에서 막 떠났음)는, 판독 포인터가 기록 포인터를 "쫓아가야(catch up)"하기 때문에, 곧 다시 사용될 것 같지는 않다. 따라서, 이 페이지를 먼저 재활용한다. 또, 막 닫힌 큐의 페이지는 다시 열려서 곧 다시 사용할 수 있으므로, 한참 후에까지 재활용되지 않는다. 잠시 동안 닫혔던 페이지는 중간에 어딘가에서 재활용된다.
큐 특정(queue-specific) 페이징 알고리즘의 사용은, 큐 구조 또는 액세스 패턴을 이용하지 않는 페이징 알고리즘의 사용에 비해 효율을 향상시킬 수 있다.
데이터를 저장하는 큐의 페이징은 어느 페이지를 재사용할 것인지를 결정할 때 큐 액세스 이력을 사용함으로써 개선될 수 있다. 예를 들면, 액세스 이력에 기초하여, 일부 페이지는 다른 페이지보다 더 빨리 다시 액세스될 것으로 기대될 수 있다. 이 개선은, 필요한 페이지가 작업 스토리지(working storage) 내에 있을 가능성을 더 높일 수 있어, 데이터를 작업 스토리지에 다시 옮김으로써 발생되는 지연을 감소시킬 수 있다.
본 발명의 다른 특징 및 이점은 이하의 설명, 및 청구의 범위로부터 명백해질 것이다.
도 1은 큐잉 시스템(queueing system)을 나타낸 도면이다.
도 2a는 휘발성 및 비휘발성 메모리 공간에 대한 재활용 리스트를 링크하는 페이지 테이블을 나타낸 도면이다.
도 2b는 메모리 페이지를 나타낸 도면이다.
도 3a 및 도 3b는 각각 휘발성 및 비휘발성 메모리 공간 내의 메모리 페이지를 나타낸 도면이다.
도 3c 및 도 3d는, 도 3a의 휘발성 메모리 공간에 대응하는 재활용 리스트 및 미사용 리스트를 나타낸 도면이다.
도 4a 및 도 4b는 각각 휘발성 및 비휘발성 메모리 공간 내의 메모리 페이지를 나타낸 도면이다.
도 4c는, 도 4a의 휘발성 메모리 공간에 대응하는 재활용 리스트를 나타낸 도면이다.
도 5a 및 도 5b는 각각 휘발성 및 비휘발성 메모리 공간 내의 메모리 페이지를 나타낸 도면이다.
도 5c 및 도 5d는, 도 5a의 휘발성 메모리 공간에 대응하는 재활용 리스트 및 미사용 리스트를 나타낸 도면이다.
도 1을 참조하면, 큐잉 시스템(100)은, 액세스 엔티티(102A - 102P)가 하나 이상의 큐 세트(QUEUE_1 - QUEUE_N)에 메시지를 추가하고, 큐로부터 메시지를 판독할 수 있게 한다. 액세스 엔티티는 큐 관리자(102)를 통해 큐잉 시스템(100)과 상호작용한다. 큐 관리자(102)는 메모리 관리 모듈(memory management module, MMM)(106)을 사용하여, 데이터의 판독 및 기록을 위해 상대적으로 빠른 액세스를 제공하는 임시 작업 스토리지인 휘발성 메모리 스토어(108)와, 상대적으로 더 오래 데이터를 존속시키고 휘발성 스토어보다 판독 및 기록에 대해 상대적으로 더 느린 액세스를 제공할 수 있는 영구 스토리지인 비휘발성 메모리 스토어(110) 사이의 페이지 교체를 돕는다. 메모리 관리 모듈(MMM)(106)은 소프트웨어 또는 하드웨어 또는 둘 다로 구현될 수 있다. 메모리 관리 모듈(MMM)(106)은 휘발성 메모리 어드레스 공간과 비휘발성 메모리 어드레스 공간 간의 페이지 어드레스를 번역한 다(translate). 메모리 관리 모듈(MMM)(106)은 또한 휘발성 메모리에 대한 페이지 참조를 모니터링하여 사용 불가능한(예컨대, 휘발성 메모리 페이지가 비휘발성 메모리에 기록되었고 이어서 새로운 사용을 위해 재활용됨) 페이지에 대한 참조(reference)를 검출할 수 있다. 메모리 관리 모듈(MMM)(106)은 이 "페이지 폴트(page fault)"에 대해 큐 관리자(102)에 경고함으로써 응답한다. 그리고 큐 관리자(102)는 참조되는 페이지를 비휘발성 메모리로부터 판독하여 휘발성 메모리의 미사용 페이지에 복사한다. 만약, 휘발성 메모리에 미사용 페이지가 없으면, 이하에 더욱 상세하게 설명하는 바와 같이 큐 관리자(102)는 "재활용 리스트"에 따라 페이지를 재활용한다. 큐 관리자(102) 및 메모리 관리 모듈(MMM)(106)은 각종 운영체제 및 컴퓨팅 환경 중 어느 하나로 구현될 수 있다. 큐 관리자(102) 및/또는 메모리 관리 모듈(MMM)(106)은 운영체제에 통합될 수 있다. 이와는 달리, 운영체제는 큐 관리자(102)에 할당되지 않은 페이지를 관리하기 위한 별개의 가상 메모리 시스템을 가질 수도 있다.
주어진 큐(예컨대, QUEUE_2)는 순차적인 큐 메시지 및 이러한 메시지의 관리에 관련된 레코드를 포함하여, 일련의 레코드를, 한 세트의 "큐 페이지"에 저장할 수 있다. 메시지 및 큐 페이지의 상대적인 사이즈에 따라, 큐 페이지는 하나 이상의 메시지 또는 하나의 메시지 중 일부를 보유할 수 있다. 큐 관리자(102)는 하나의 큐를 한 세트의 큐 페이지에 할당하고, 큐가 증대할 때 세트에 페이지를 추가할 수 있다. 예시된 실시예에서, 세트 내의 모든 큐 페이지는 비휘발성 메모리 스토어(110)에 저장되어 있고, 활성화된(ative) 큐 페이지의 서브세트는 휘발성 메모 리 스토어(108)에 저장되어 있다.
큐(또는 다른 순차 액세스형 데이터 구조)의 "순차적인" 면(aspect)은 메시지(또는 다른 데이터 구조의 요소)의 논리적인 순서화를 가리킨다. 메시지의 스토리지 위치는 반드시 큐잉 시스템(100)의 물리 또는 가상 어드레스 공간 내의 순차적인 어드레스에 있을 필요는 없다.
만약 휘발성 메모리 스토어(108) 내의 큐 페이지의 컨텐츠가 변경되면, 해당 큐 페이지는 "더티(dirty)"로 표시된다. 휘발성 메모리 스토어(108)로부터 더티 큐 페이지가 제거될 때, 비휘발성 메모리 스토어(110) 내의 해당 큐 페이지의 이전 복사본(old copy)을 변경된 것으로 갱신한다(즉, 큐 페이지는 비휘발성 메모리 스토어 110에 "동기"된다). 또한 더티 큐 페이지는 휘발성 메모리 스토어(108)로부터 제거되기 전에 비휘발성 메모리 스토어(110)에 동기될 수도 있다. 큐 관리자(102)는 큐가 더 이상 큐 페이지를 필요로 하지 않는 나중에(예컨대, 큐가 삭제된 후), 그 큐에 대한 큐 페이지의 일부 또는 전부를 재이용한다(reclaim).
도 2a를 참조하면, 재활용 리스트(200)는 재활용 가능성이 있는 휘발성 메모리 내의 페이지를 식별한다. 재활용 리스트(200)는 첫 번째 "헤드" 엔드(202) 및 두 번째 "테일" 엔드(204)를 갖는다. 이하에서 설명하는 바와 같이, 테일 엔드 또는 헤드 엔드에 페이지를 추가할 수 있으며, 헤드 엔드(202)로부터 페이지를 제거할 수 있다. 재활용 리스트(200)는, 예를 들면 이중 링크 리스트(doubly-linked list)로 구현될 수 있다.
일 실시예에서, 재활용 리스트(200)는 페이지 테이블(206) 내의 큐 페이지를 식별하는 "가상 어드레스"를 저장한다(예컨대, "Q1/P5"는 QUEUE_1에 할당된 큐 페이지 "5"를 식별함). 페이지 테이블(206)은 큐잉 시스템(100)의 큐에 할당된 큐 페이지 각각에 대한 엔트리를 포함한다. 예시된 페이지 테이블(206)에서는, 각각의 엔트리에 대해, 비휘발성 메모리 공간(208) 내의 비휘발성 메모리 페이지 어드레스 "N-PAGE"와, 휘발성 메모리 공간(210) 내의 휘발성 메모리 페이지 "V-PAGE"를 포함한다. 휘발성 메모리 페이지 어드레스는 휘발성 메모리 스토어(108)에 저장되어 있지 않은 큐 페이지에 대해서는 빈 상태(예컨대, 미사용 어드레스 값에 대응함)일 수 있다. 페이지 테이블(206)은 재활용 리스트(200)에 큐 페이지가 있는지를 나타내는 "재활용 비트(recycle bit)"를 포함한다. 페이지 테이블(206)은 큐 페이지를 액세스중인 액세스 엔티티가 얼마나 많은지를 나타내는 "참조 카운트(reference count)"를 포함한다.
각각의 큐에는 비휘발성 메모리 스토어(110)에 저장되는, 한 세트의 큐 페이지가 할당된다(예컨대, QUEUE_2는 도 3b에서 어드레스 N-PAGE_10 - N-PAGE_16에 저장된 페이지 Q2/P1 - Q2/P7를 갖는다). 일부 큐 페이지는 휘발성 및 비휘발성 메모리 양쪽 모두에 복사본을 가질 수 있다(예컨대, 도 3a 및 도 3b에서 페이지 Q2/P3 - Q2/P7). 휘발성 메모리 스토어(108)에 저장되어 있는 큐 페이지에 대해, 페이지 테이블(206)은, 비휘발성 메모리 스토어(110)에 대해 아직 동기(일치)되지 않은 큐 페이지의 컨텐츠가 변경되었는지를 나타내는 "더티 비트(dirty bit)"를 사용한다.
예를 들면, 큐에 새롭게 추가되는 메시지는 휘발성 메모리에만 저장되었을 수 있다. 큐 페이지는 커미트 작업(commit operation) 시에 휘발성 메모리로부터 비휘발성 메모리에 동기되기 때문에, 커미트된(committed) 큐 메시지를 저장하는 큐 페이지는 휘발성 및 비휘발성 메모리 모두에 저장되어 있을 수 있다(많은 방식 중 어느 것이든, 메시지가 소실되지 않도록 보장하기 위해 커미트된 메시지의 동기화에 사용될 수 있다. 커미팅 메시지(committing message)에 대한 하나의 접근 방식은 동시출원/계속중인 출원 "MANAGING MESSAGE QUEUES"에 개시되어 있으며, 개시된 내용 전부는 참조에 의해 본 명세서에 포함된다). 큐 페이지를 저장하는 휘발성 메모리 페이지는 (예컨대, 다른 큐에 의한 사용을 위해) 재활용되었을 수 있으며, 복사본만 비휘발성 메모리에 남아있다.
하나 이상의 액세스 엔티티는 판독 및/또는 기록을 위해 큐를 열 수 있다. 액세스 엔티티는 하나 이상의 메시지를 큐의 엔드에 추가하기 위해 큐를 열 수 있다. 액세스 엔티티는 커미트된 메시지를 큐의 앞쪽 또는 큐의 특정한 위치(예컨대, 이전에 큐로부터 판독할 때 도달한 위치)로부터 판독하기 위해 큐를 열 수 있다. 액세스 엔티티가 액세스를 위해 큐를 열 때, 큐잉 시스템(100)은 액세스 엔티티의 판독 및/또는 기록 포인터 설정과 같은 열기 타스크(opening task)를 수행한다. 액세스 엔티티가 큐 액세스를 종료하면, 액세스 엔티티는 해당 큐를 닫고, 큐잉 시스템(100)은 적절한 닫기 타스크(closing task)를 수행한다. 다수의 액세스 엔티티가 동일한 큐를 동시에 액세스할 수도 있다. 따라서, 큐는 일부 액세스 엔티티에 의한 액세스를 위해서는 열릴 수 있고, 다른 액세스 엔티티를 위해서는 닫힐 수 있다.
액세스 엔티티가 큐를 열 때, 액세스 엔티티는 액세스되고 있는 큐 페이지에 대한 참조 카운트를 증가시킨다. 만약 액세스될 큐 페이지가 휘발성 메모리 스토어(108)에 이미 존재하지 않으면, 그 큐 페이지는 비휘발성 메모리 스토어(110)로부터 휘발성 메모리 스토어(108)에 복사된다. 액세스 엔티티가 큐 페이지의 액세스를 종료한 후(예컨대, 큐를 닫은 후 또는 큐 페이지의 엔드를 넘어 기록한 후), 액세스 엔티티는 그 큐 페이지에 대한 참조 카운트를 감소시킨다.
큐잉 시스템(100)은, 어디에서 액세스 엔티티가 판독 포인터로 데이터를 판독하고 있는지, 그리고 어디에서 액세스 엔티티가 기록 포인터로 데이터를 추가(즉, 기록)하고 있는지를 계속하여 추적한다. 액세스 엔티티가 큐에 대해 판독 또는 기록을 수행하는 있는 동안, 액세스되고 있는 큐 페이지는 휘발성 메모리 스토어(108)에 있다. 큐잉 시스템(100)은 미사용 리스트(212)에 의해, 사용 가능한 휘발성 메모리 페이지에 대한 추적을 계속한다. 새로운 큐 페이지가 비휘발성 메모리 스토어(110)로부터 휘발성 메모리 스토어(108)에 복사될 것인데, 미사용 페이지가 없는 경우(즉, 미사용 리스트(212)가 빈 상태인 경우), 큐잉 시스템(100)은 재활용 리스트(200)에 따라 휘발성 메모리 페이지를 재활용한다.
휘발성 메모리 페이지를 재활용하기 위해, 큐잉 시스템(100)은 재활용 리스트(200)의 헤드 엔드(202)에서 식별된 페이지를 검사함으로써 재활용할 페이지를 찾는다. 만약, 식별된 페이지가 소정의 기준(예컨대, 해당 페이지가 판독 또는 기록 포인터에 의해 현재 참조되고 있지 않음을 나타내는 영(zero)의 참조 카운트를 가짐)에 따라 재활용될 수 있는 페이지로서의 자격을 얻으면, 해당 페이지의 현재 컨텐츠는 비휘발성 메모리 스토어(110))에 기록되고(필요한 경우), 해당 페이지는 할당되기 위해 미사용 상태가 된다(또 재활용 리스트 200로부터 제거된다). 해당 페이지의 현재 컨텐츠가 비휘발성 메모리와 이미 동기되어 있다면, 큐잉 시스템(100)은 해당 페이지를 비휘발성 메모리에 기록하지 않고 미사용 상태로 한다. 만약 식별된 페이지가 재활용될 수 있는 페이지로서 자격을 얻지 못하면, 그 페이지는 재활용 리스트(200)로부터 제거되고, 재활용 가능한 페이지를 찾기 위해 재활용 리스트(200)의 새로운 헤드 엔드(202)를 검사한다.
일 실시예에서, 큐잉 시스템(100)이 휘발성 메모리 페이지를 재활용 리스트(200)에 추가하는 데에는 두 가지 경우가 있다(즉, 페이지가 미사용 상태가 될 잠재적인 후보가 된다):
경우 1: 기록 포인터가 해당 페이지를 떠나있고, 다른 판독 또는 기록 포인터가 해당 페이지를 가리키지 않으며, 해당 페이지는 이미 재활용 리스트(200)에 없다.
경우 2: 해당 페이지를 사용하고 있는 큐가 닫혀있고, 다른 판독 또는 기록 포인터가 해당 페이지를 가리키지 않으며, 해당 페이지는 이미 재활용 리스트(200)에 없다.
경우 1은, 예를 들면 일련의 메시지를 큐에 추가하고 있는 액세스 엔티티가 큐 페이지를 메시지로 채울 때 발생할 수 있다. 경우 1에서, 큐잉 시스템(100)은 재활용 리스트(200)의 헤드 엔드(202)에 페이지를 추가한다. 이 경우는 더 최근에 기록된 페이지가 덜 최근에 기록 페이지에 앞서 재활용되기 때문에, MRU 방식에 대 응한다.
경우 2에서, 큐잉 시스템(100)은 재활용 리스트(200)의 테일 엔드(204)에 페이지를 추가한다. 이 경우는, 재활용 리스트(200)의 헤드로부터 페이지를 사용하고 따라서 덜 최근에 닫힌 페이지가 더 최근에 닫힌 페이지에 앞서 재활용되기 때문에, LRU 방식에 대응한다.
다른 구현예에서는, 페이지를 재활용 리스트(200)에 추가하는 다른 경우들을 포함할 수 있다. 예를 들면, 페이지를 재활용 리스트(200)의 테일 엔드(204)에 추가할 수 있는 다른 경우는:
경우 3: 판독 포인터가 해당 페이지를 떠나있고, 다른 판독 또는 기록 포인터가 해당 페이지를 가리키지 않으며, 해당 페이지는 이미 재활용 리스트(200)에 없다.
다른 구현예는 각각의 페이지에 대한 액세스 이력에 따라 재활용 리스트 내의 페이지 순서를 유지하기 위한 여러 규칙 중 어느 것이든 포함할 수 있다.
순서 내의 메모리 페이지 중 적어도 일부의 위치가 메모리 페이지에 대한 순차적인 액세스 오프의 트랜지션(즉, 기록 포인터가 해당 페이지를 떠남)에 종속하도록 배열함으로써, 시스템은 순차 액세스형 데이터 구조의 통계 특성을 이용하여 페이징 효율을 향상시킬 수 있다.
미사용 리스트(212) 내의 페이지는 더 이상 필요로 하지 않는 페이지에 해당하므로 큐 페이지에 더 이상 연관되어 있지 않다. 큐잉 시스템(100)이 페이지를 미사용 리스트(212)에 추가하는 데에는 여러 가지 경우가 있다. 한 가지 경우에 서, 큐잉 시스템(100)은, 판독자(reader)로서 큐에 가입하였던(subscribed) 모든 액세스 엔티티에 의해 판독되었던 큐 메시지를 보유하는 페이지를 미사용 상태로 한다(즉, 모든 가입자의 판독 포인터가 그 페이지에 대한 각각의 메시지를 통과하고 그 페이지를 떠났다). 큐잉 시스템(100)은 여러 다른 이유 중 어떤 이유로든 페이지를 미사용 상태로 할 수 있다. 예를 들면, 페이지는, 그 페이지에 대한 모든 메시지가 제거되었거나 "롤백(rolled back)"된 경우에 미사용 상태가 된다.
몇몇 구현예에서, 페이지는 시간 제한에 따라 미사용 상태가 된다. 예를 들면, 페이지는, 그 페이지와 연관된 큐가 소정의 시간(예컨대, 2분)보다 더 오랫동안 닫혀있었던 후에 미사용 상태가 된다. 다른 경우에, 페이지는, 연관된 큐가 열려있더라도 소정의 시간(예컨대, 10분)보다 더 오랫동안 액세스되지 않은 후에 미사용 상태가 된다.
또, 큐 관리자(102)는 큐 페이지를 할당하기 위해 나중에 큐잉 시스템(100)에 의해 사용될 수 있는 다른 프로그램 또는 데이터 구조에 의해 사용되는 휘발성 메모리 페이지를 미사용 상태로 할 수 있다. 큐잉 시스템(100)은 모든 휘발성 메모리 페이지를 미사용 상태로 하기 위해 사용되기도 하는 전역(global) 미사용 리스트(212)를 사용할 수 있거나, 또는 큐 페이지용으로 사용되는 휘발성 메모리 페이지에 대한 개별 미사용 리스트(212)를 사용할 수 있다.
도 2b는 가상 어드레스에 따라 순차적으로 순서가 정해진 QUEUE_1의 한 세트의 페이지 Q1/P1 - Q1/P8를 나타낸 것이다. 이 예에서, 기록자(writer) 액세스 엔티티는 일련의 메시지를 큐에 기록하고 있고, 두 개의 판독자 액세스 엔티티는 메 시지가 이용 가능하게 됨에 따라 메시지를 판독하고 있다. 기록자 액세스 엔티티는 가상 어드레스를 순차적으로 증가시키면서 메지지를 페이지에 기록하는 기록 포인터 WRITER_1를 갖는다. 기록 포인터 WRITER_1가 페이지 Q1/P7에서 Q1/P8까지 이동한 후, 경우 1에서는 페이지 Q1/P7이 재활용 리스트(200)의 헤드 엔드(202)에 위치될 자격이 있다. 판독 포인터 READER_2는 페이지 Q1/P2에서 페이지 Q1/P3까지 이동한 후, 경우 3에서는 페이지 Q1/P2가 재활용 리스트(200)의 테일 엔드(204)에 위치될 자격이 있다.
//첫 번째 판독자 액세스 엔티티는 몇 개의 큐 페이지만큼 기록 포인터 WRITER_1에 지체(lag)되어 있는 판독 포인터 READER_1을 갖는다. 이 지체는 액세스 엔티티가 큐잉 시스템(100)과 상호작용함에 따라 줄어들거나 증가할 수 있다. 두 번째 판독자 액세스 엔티티는 기록 포인터 WRITER_1에 역시 지체되어 있는 판독 포인터 REDER_2를 가진다. 만약 미사용 페이지가 판독자에 대해 여전히 사용 가능하면, 판독자는 기록된 페이지를 휘발성 메모리 스토어(108)로부터 액세스할 수 있다. 만약 미사용 페이지를 사용할 수 없으면(예컨대, 비휘발성 메모리 공간이 판독자에 의한 대규모 지체로 인해 가득 차면), 기록된 페이지 중 일부를 재활용할 수 있다. 예를 들면, 이 페이지 관리 접근 방식 하에서는, 최근에 가장 많이 사용된(most recently used) 페이지를 되풀이하여 재활용할 수 있고, 최근에 가장 적게 사용된(least recentrly used) 일련의 페이지를 지체되어 있는 판독자를 위해 휘발성 메모리에 남겨둔다.
QUEUE_1가 닫힌 후에, 재활용 리스트(200)에 이미 없는 임의의 큐 페이지가 재활용 리스트(200)의 테일 엔드(204)에 위치될 자격이 있다. 테일 엔드(204)에 위치된 최근에 닫힌 큐의 임의의 그러한 큐 페이지는, 재활용 리스트(200)를 테일 엔드(204)에서 헤드 엔드(202)까지 "스크롤"할 때까지 다른 액세스 엔티티에 의한 액세스를 위해 여전히 휘발성 메모리 스토어(108)에서 이용 가능하다.
도 3a는 휘발성 메모리 스토어(108)의 메모리 어드레스 공간(210) 내의 큐 페이지의 일례를 나타낸 것이다. 페이지 어드레스 V-PAGE_1 - V-PAGE_2는 미사용 상태이고, 따라서 도 3d에 도시된 미사용 리스트(212)에 포함되어 있다. 주소 V-PAGE_3 - V-PAGE_7은 QUEUE_2의 큐 페이지를 저장하기 위해 사용된다. 판독자 액세스 엔티티는 V-PAGE_2 내에 위치된 판독 포인터 REDER_1을 가져서 큐 페이지 Q2/P3 내의 메시지를 판독한다(이 예에서, 큐 페이지는 하나 이상의 메시지를 저장한다). 기록자 액세스 엔티티는 V-PAGE_7 내에 위치된 기록 포인터 WRITER_1을 가져서 큐 페이지 Q2/P7에 메시지를 기록한다. 어드레스 V-PAGE_8 - V-PAGE_10은 닫혀 있는 QUEUE_1의 큐 페이지를 저장하기 위해 사용된다. 어드레스 V-PAGE_11 - V-PAGE_12는 다른 데이터를 저장하기 위해 사용된다.
도 3b는 비휘발성 메모리 스토어(110)의 메모리 어드레스 공간(208)의 일례를 나타낸 것이다. 비휘발성 메모리 스토어(110)는 (예컨대, 커미트 작업에 의해) 동기된, QUEUE_1 및 QUEUE_2에 대한 큐 페이지를 저장하며, 그 중 일부는 또한 휘발성 메모리 스토어(108)에 현재 적재(load)되어 있다. 이 예에서, 휘발성 메모리 내의 큐 페이지 Q2/P7는, 아직 비휘발성 메모리와 동기되지 않은 새로운 메시지로 기록되고 있다.
도 3c는 휘발성 메모리 스토어(108) 내의 활동 이력(history of activity)에 대응하는 재활용 리스트(200)를 나타낸 것이다. 예를 들면, QUEUE_1은 막 닫혔기 때문에, 큐잉 시스템(100)은 큐 페이지 Q1/P3 - Q1/P5를 LRU 방식에 따라 재활용하기 위해 이들의 가상 어드레스를 재활용 리스트(200)의 테일 엔드(204)에 위치시킴으로써 표시하였다. 기록 포인터 WRITER_1은 최근에 큐 페이지 Q2/P4, Q2/P5, 및 Q2/P6를 (차례대로) 떠났다. 따라서, 큐잉 시스템(100)은 이들의 가상 어드레스를 재활용 리스트(200)의 테일 엔드(204)가 아니라 헤드 엔드(202)에 위치시켰다.
도 4a - 도 4c는 연속한 활동(subsequent activity) 후의, 휘발성 어드레스 공간(210), 비휘발성 어드레스 공간(208), 및 재활용 리스트(200)의 상태를 각각 나타낸 것이다. 기록 포인터 WRITER_1은 미사용 리스트(212)로부터 할당된 어드레스 V-PAGE_2의 새로운 큐 페이지 Q2/P8로 이동되었다. 두 번째 판독자 액세스 엔티티는 V-PAGE_1 내에 위치된 판독 포인터 READER_2를 가져서 미사용 리스트(212)로부터 할당된 큐 페이지 Q1/P1 내의 메시지를 판독한다. 이 페이지 할당 후에, 미사용 리스트(212)는 빈 상태이다.
도 5a - 도 5c는 재활용 리스트(200)로부터의 페이지 할당 후의 휘발성 어드레스 공간(210), 비휘발성 어드레스 공간(208), 및 재활용 리스트(200)의 상태를 각각 나타낸 것이다. 기록 포인터 WRITER_1은 여전히 큐 페이지 Q2/P8에 있다. 판독 포인터 READER_1은 V-PAGE_4의 큐 페이지 Q2/P4로 이동되었다. 판독 포인터 READER_2는 재활용 리스트(200)의 헤드 엔드(202)로부터의 할당된 큐 페이지 Q1/P2로 이동되었다(도 4c). 이 페이지 할당 후에, 재활용 리스트(200)의 새로운 헤드 엔드(202)는 Q2/P6이다(도 5c). 큐 페이지 QUEUE_1A 및 QUEUE_1C은 더 이상 필요하지 않기 때문에, 어드레스 V-PAGE_1 및 V-PAGE_3가 미사용 리스트(204)에 위치된다(도 5d).
이 예에서, 단일 기록자 및 단일 판독자는 주어진 큐를 액세스한다. 다른 예에서, 다수의 액세스 엔티티(예컨대, 가입자 및/또는 기록자)가 동일한 큐와 상호작용할 수 있다(각각은 자신의 판독 또는 기록 포인터를 가짐). 메모리 페이지를 재활용하는 전술한 동일한 경우를, 다수의 액세스 엔티티가 하나의 큐와 상호작용하는 경우에 사용할 수 있다.
큐잉 시스템(100)은 시스템 성능을 향상시키기 위해 여기에 설명한 기술과 함께 다른 기술을 사용할 수 있다. 예를 들면, 큐 관리자(102)는, 페이지들이 요청되어 한번에 다수의 페이지를 재활용할 예정인 시점을 예측할 수 있다. 큐 관리자(102)는 또한, 예를 들면 페이지가 추가된 후에 재활용 리스트 내의 페이지를 재순서화(reordering) 함으로써, 재활용 리스트를 변경할 수도 있다.
전술한 페이지 관리 방식은 컴퓨터에서 실행되는 소프트웨어를 사용하여 구현될 수 있다. 예를 들면, 소프트웨어는 하나 이상의 프로그램된 또는 프로그램 가능한 컴퓨터 시스템(분산형, 클라이언트/서버, 또는 그리드와 같은 다양한 아키텍처일 수 있음)에서 실행되는 하나 이상의 컴퓨터 프로그램 내의 절차를 구성하고, 각각의 컴퓨터 시스템은 하나 이상의 프로세서, 하나 이상의 데이터 스토리지 시스템(휘발성 및 비휘발성 메모리 및/또는 스토리지 소자를 포함함), 하나 이상의 입력 디바이스 또는 포트, 및 하나 이상의 출력 디바이스 또는 포트를 포함한다. 이 소프트웨어는, 예를 들면 계산 그래프의 설계 및 구성에 관련된 다른 서비스를 제공하는 대규모 프로그램의 하나 이상의 모듈을 구성할 수 있다. 그래프의 노드 및 요소는, 컴퓨터로 판독 가능한 매체에 저장된 데이터 구조 또는 데이터 저장소(data repository)에 저장된 데이터 모델을 따르는 다른 체계화된 데이터(organized data)로서 구현될 수 있다.
이 소프트웨어는, 범용 또는 특수용의 프로그램 가능한 컴퓨터에 의해 판독 가능한 CD-ROM과 같은 매체로 제공되거나, 또는 네트워크를 통해 소프트웨어가 실행될 컴퓨터에 전달(전송 신호(propagated signal)로 부호화됨)될 수 있다. 모든 기능이 특수용 컴퓨터 또는 코프로세서와 같은 특수용 하드웨어를 사용하여 수행될 수 있다. 이 소프트웨어는, 소트트웨어에 의해 특정되는 계산의 상이한 부분들은 상이한 컴퓨터에 의해 실행되는, 분산 방식으로 구현될 수 있다. 여기에 기술한 절차를 실행하기 위해 컴퓨터 시스템에 의해 스토리지 매체 또는 디바이스가 판독될 때, 컴퓨터를 구성 및 운영하기 위해, 각각의 이러한 컴퓨터 프로그램은, 범용 또는 특수용의 프로그램 가능한 컴퓨터에 의해 판독 가능한, 스토리지 매체 또는 디바이스(예컨대, 고체 상태의 메모리나 매체, 또는 자기 또는 광학 매체)에 저장되어 있거나 다운로드되는 것이 바람직하다. 본 발명의 시스템은 또한 스토리지 매체가 컴퓨터로 하여금 여기에 기술한 기능들을 수행하기 위해 특정된 소정의 방식으로 동작하도록 구성되었던 경우에, 컴퓨터 프로그램으로 구성된, 컴퓨터로 판독 가능한 스토리지 매체로서 구현되는 것으로 간주될 수 있다.
이상의 설명은 예시를 위한 것이고 첨부된 청구의 범위에 의해 정해지는 본 발명의 범위를 한정하지 않는다는 것을 알아야 한다. 예를 들면, 전술한 다수의 기능 단계는 실질적으로 전체 과정에 영향을 미치지 않으면서 상이한 순서로 실행될 수 있다. 다른 실시예들은 이하의 청구의 범위 내에 포함된다.

Claims (16)

  1. 하나 이상의 순차 액세스형(sequentially-accessed) 데이터 구조에 사용되는 메모리를 페이징(paging)하기 위한 페이징 방법으로서,
    상기 순차 액세스형 데이터 구조에 대한 메시지를 저장하는 적어도 일부 메모리 페이지를 포함하는 메모리 페이지를 식별할 수 있게 하고, 상기 식별된 메모리 페이지가 재사용될 순서를 나타내는 데이터 구조를 제공하는 단계; 및
    상기 순차 액세스형 데이터 구조 중 하나에 대한 메시지를 저장하는 메모리 페이지에 대한 액세스 이력에 따라 상기 순서를 나타내는 상기 데이터 구조를 유지하는 단계
    를 포함하고,
    상기 순서 내의 상기 메모리 페이지의 위치는 상기 메모리 페이지에 대한 순차적인 액세스 오프의 트랜지션(transition of access off)에 따라 결정되고,
    상기 순차 액세스형 데이터 구조 중 하나에 대한 메시지를 저장하는 메모리 페이지에 대한 액세스 이력에 따라 상기 순서를 나타내는 상기 데이터 구조를 유지하는 단계는:
    상기 메모리 페이지에 대한 기록 액세스 오프의 트랜지션에 따라 상기 순서를 나타내는 상기 데이터 구조의 첫 번째 엔드(end)에 상기 메모리 페이지의 식별자(identifier)를 위치시키는 단계; 및
    닫히는 상기 메모리 페이지와 연관된 순차 액세스형 데이터 구조에 따라 상기 순서를 나타내는 상기 데이터 구조의 두 번째 엔드(end)에 상기 메모리 페이지의 식별자를 위치시키는 단계를 포함하는,
    페이징 방법.
  2. 제1항에 있어서,
    상기 메모리 페이지에 대한 순차적인 액세스 오프의 트랜지션은, 상기 메모리 페이지의 포인터 트랜지셔닝 오프(pointer transitioning off)에 대응하는, 페이징 방법.
  3. 제1항에 있어서,
    상기 순서 내의 상기 메모리 페이지의 위치는, 순차적인 액세스의 트랜지션 이 상기 메모리 페이지에 대한 기록 액세스 오프의 트랜지션에 대응하는지에 따르는, 페이징 방법.
  4. 삭제
  5. 제1항에 있어서,
    상기 순서를 나타내는 상기 데이터 구조의 첫 번째 엔드에서부터 메모리 페이지를 재사용하는 단계를 더 포함하는 페이징 방법.
  6. 제5항에 있어서,
    미사용 메모리 페이지(free memory page)의 리스트가 빈 상태(empty)인지를 판정한 후에, 상기 데이터 구조의 첫 번째 엔드에서부터 상기 메모리 페이지를 재사용하는 단계를 더 포함하는 페이징 방법.
  7. 제5항에 있어서,
    상기 메모리 페이지를 재사용하는 단계는, 상기 메모리 페이지의 현재 컨텐츠를 비휘발성 메모리 스토어에 기록하는 단계를 포함하는, 페이징 방법.
  8. 제7항에 있어서,
    상기 메모리 페이지를 재사용하는 단계는, 상기 비휘발성 메모리 스토어로부터의 메모리 페이지를 상기 메모리 페이지에 기록하는 단계를 더 포함하는, 페이징 방법.
  9. 제1항에 있어서,
    상기 메모리 페이지와 연관된 상기 순차 액세스형 데이터 구조는 큐(queue)를 포함하는, 페이징 방법.
  10. 하나 이상의 순차 액세스형 데이터 구조에 사용되는 메모리를 페이징하기 위한 소프트웨어를 저장하는 컴퓨터 판독 가능한 저장 매체로서,
    상기 소프트웨어는 컴퓨터 시스템으로 하여금,
    상기 순차 액세스형 데이터 구조에 대한 메시지를 저장하는 적어도 일부 메모리 페이지를 포함하는 메모리 페이지를 식별할 수 있게 하고, 상기 식별된 메모리 페이지가 재사용될 순서를 나타내는 데이터 구조를 제공하도록 하고,
    상기 순차 액세스형 데이터 구조 중 하나에 대한 메시지를 저장하는 메모리 페이지에 대한 액세스 이력에 따라 상기 순서를 나타내는 상기 데이터 구조를 유지하도록 하는
    명령어를 포함하고,
    상기 순서 내의 상기 메모리 페이지의 위치는 상기 메모리 페이지에 대한 순차적인 액세스 오프의 트랜지션에 따라 결정되고,
    상기 순차 액세스형 데이터 구조 중 하나에 대한 메시지를 저장하는 메모리 페이지에 대한 액세스 이력에 따라 상기 순서를 나타내는 상기 데이터 구조를 유지하도록 하는 것은:
    상기 메모리 페이지에 대한 기록 액세스 오프의 트랜지션에 따라 상기 순서를 나타내는 상기 데이터 구조의 첫 번째 엔드(end)에 상기 메모리 페이지의 식별자(identifier)를 위치시키도록 하고,
    닫히는 상기 메모리 페이지와 연관된 순차 액세스형 데이터 구조에 따라 상기 순서를 나타내는 상기 데이터 구조의 두 번째 엔드(end)에 상기 메모리 페이지의 식별자를 위치시키도록 하는 것을 포함하는,
    컴퓨터 판독 가능한 저장 매체
  11. 하나 이상의 순차 액세스형 데이터 구조에 사용되는 메모리를 페이징하기 위한 페이징 시스템으로서,
    상기 순차 액세스형 데이터 구조에 대한 메시지를 저장하는 적어도 일부 메모리 페이지를 포함하는 메모리 페이지를 식별할 수 있게 하고, 상기 식별된 메모리 페이지가 재사용될 순서를 나타내는 데이터 구조를 제공하기 위한 수단; 및
    상기 순차 액세스형 데이터 구조 중 하나에 대한 메시지를 저장하는 메모리 페이지에 대한 액세스 이력에 따라 상기 순서를 나타내는 상기 데이터 구조를 유지하기 위한 수단
    을 포함하고,
    상기 순서 내의 상기 메모리 페이지의 위치는 상기 메모리 페이지에 대한 순차적인 액세스 오프의 트랜지션에 따라 결정되고,
    상기 순차 액세스형 데이터 구조 중 하나에 대한 메시지를 저장하는 메모리 페이지에 대한 액세스 이력에 따라 상기 순서를 나타내는 상기 데이터 구조를 유지하기 위한 수단은:
    상기 메모리 페이지에 대한 기록 액세스 오프의 트랜지션에 따라 상기 순서를 나타내는 상기 데이터 구조의 첫 번째 엔드(end)에 상기 메모리 페이지의 식별자(identifier)를 위치시키기 위한 수단; 및
    닫히는 상기 메모리 페이지와 연관된 순차 액세스형 데이터 구조에 따라 상기 순서를 나타내는 상기 데이터 구조의 두 번째 엔드(end)에 상기 메모리 페이지의 식별자를 위치시키기 위한 수단을 포함하는,
    페이징 시스템.
  12. 하나 이상의 순차 액세스형 데이터 구조에 사용되는 메모리와 연결된 컴퓨터 시스템에 의해 수행되는, 상기 메모리를 페이징하기 위한 페이징 방법으로서,
    메모리 페이지의 완료된 엑세스가 상기 메모리 페이지의 기록 포인터 트랜지셔닝 오프(write pointer transioning off)를 포함하는 첫 번째 경우에는, MRU 방식(Most-Recently Used approach)에 따라 순차 액세스형 데이터 구조와 연관된 메모리 페이지를 재사용하고, 상기 메모리 페이지의 완료된 엑세스가 상기 메모리 페이지에 연관된 큐를 닫는 엑세스 엔티티 및 상기 메모리 페이지의 판독 포인터 트랜지셔닝 오프(read pointer transioning off) 중 하나 이상을 포함하는 두 번째 경우에는, LRU 방식(Least-Recently Used approach)에 따라 순차 액세스형 데이터 구조와 연관된 메모리 페이지를 재사용하는 단계
    를 포함하는,
    페이징 방법.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 컴퓨터 판독가능한 저장 매체로서,
    컴퓨터 시스템으로 하여금,
    메모리 페이지의 완료된 엑세스가 상기 메모리 페이지의 기록 포인터 트랜지셔닝 오프(write pointer transioning off)를 포함하는 첫 번째 경우에는, MRU 방식에 따라 순차 액세스형 데이터 구조와 연관된 메모리 페이지를 재사용하도록 하고, 상기 메모리 페이지의 완료된 엑세스가 상기 메모리 페이지에 연관된 큐를 닫는 엑세스 엔티티 및 상기 메모리 페이지의 판독 포인터 트랜지셔닝 오프(read pointer transioning off) 중 하나 이상을 포함하는 두 번째 경우에는, LRU 방식에 따라 순차 액세스형 데이터 구조와 연관된 메모리 페이지를 재사용하도록 하는
    명령어를 포함하는 소프트웨어를 저장하는,
    컴퓨터 판독가능한 저장 매체.
KR1020077027854A 2005-06-27 2006-06-22 메모리 페이지 관리 KR101372964B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/169,246 2005-06-27
US11/169,246 US7673105B2 (en) 2005-06-27 2005-06-27 Managing memory pages
PCT/US2006/024291 WO2007002282A2 (en) 2005-06-27 2006-06-22 Managing memory pages

Publications (2)

Publication Number Publication Date
KR20080021623A KR20080021623A (ko) 2008-03-07
KR101372964B1 true KR101372964B1 (ko) 2014-03-13

Family

ID=37568978

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077027854A KR101372964B1 (ko) 2005-06-27 2006-06-22 메모리 페이지 관리

Country Status (8)

Country Link
US (2) US7673105B2 (ko)
EP (1) EP1896951B1 (ko)
JP (2) JP5142995B2 (ko)
KR (1) KR101372964B1 (ko)
CN (1) CN101189584B (ko)
AU (1) AU2006262111B2 (ko)
CA (1) CA2610180C (ko)
WO (1) WO2007002282A2 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673105B2 (en) * 2005-06-27 2010-03-02 Ab Inition Technology LLC Managing memory pages
US7694091B2 (en) * 2006-10-23 2010-04-06 Hewlett-Packard Development Company, L.P. Non-volatile storage for backing up volatile storage
JP4978264B2 (ja) * 2007-03-23 2012-07-18 京セラドキュメントソリューションズ株式会社 画像形成装置及びメモリ資源確保方法
US8010519B2 (en) * 2008-07-29 2011-08-30 International Business Machines Corporation Method and system for mitigating impact of user errors in data stores
KR101581679B1 (ko) * 2009-03-18 2015-12-31 삼성전자주식회사 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법
US8788739B2 (en) * 2009-06-29 2014-07-22 Hewlett-Packard Development Company, L.P. Hypervisor-based management of local and remote virtual memory pages
US9684455B2 (en) * 2013-03-04 2017-06-20 Seagate Technology Llc Method and apparatus for sequential stream I/O processing
CN103516580B (zh) * 2012-06-26 2017-06-23 北京大学 一种基于消息队列实现消息接收与转发的方法及系统
JP6323986B2 (ja) * 2012-06-26 2018-05-16 シャープ株式会社 画像表示装置、それを含む画像表示システム、及びその制御方法
US9417757B1 (en) * 2013-09-20 2016-08-16 Emc Corporation Scalable hierarchical user interface display
EP2985690B1 (en) * 2014-08-11 2018-07-18 Dot Hill Systems Corporation Method and apparatus for sequential stream i/o processing
CN104239248B (zh) * 2014-09-16 2017-06-06 国家计算机网络与信息安全管理中心 Pci‑e多缓冲区dma数据传输方法
US10067981B2 (en) 2014-11-21 2018-09-04 Sap Se Intelligent memory block replacement
CN106843756B (zh) * 2017-01-13 2019-12-31 中国科学院信息工程研究所 基于页面分类的内存页面回收方法及系统
GB201709499D0 (en) 2017-06-15 2017-08-02 Microsoft Technology Licensing Llc Memory management in non-volatile memory
CN111679914B (zh) * 2020-06-12 2023-06-27 北京字节跳动网络技术有限公司 一种内存管理方法、系统、计算机设备及存储介质
CN112052089B (zh) * 2020-09-01 2023-03-28 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594751B1 (en) * 1999-03-25 2003-07-15 Progress Software Corporation Method and apparatus for pointer relocation optimization for virtual memory mapping and transaction management in a database system

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5597081A (en) * 1979-01-12 1980-07-23 Fujitsu Ltd Page send-out system
JPS6086638A (ja) * 1983-10-18 1985-05-16 Fujitsu Ltd プログラムの記憶管理方式
CA1279731C (en) 1986-06-27 1991-01-29 Ruby Bei-Loh Lee Cache memory with variable fetch and replacement schemes
US5125086A (en) * 1989-06-29 1992-06-23 Digital Equipment Corporation Virtual memory paging apparatus with variable size in-page clusters
US5426747A (en) * 1991-03-22 1995-06-20 Object Design, Inc. Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system
JP2618149B2 (ja) * 1991-04-22 1997-06-11 インターナショナル・ビジネス・マシーンズ・コーポレイション キャッシュ内のデータ記憶スペースを管理する方法及びキャッシュ内でページ置換を行う装置
JPH0546668A (ja) * 1991-08-07 1993-02-26 Nec Corp 分散データ制御システム
US5504899A (en) * 1991-10-17 1996-04-02 Digital Equipment Corporation Guaranteeing global serializability by applying commitment ordering selectively to global transactions
US5530848A (en) * 1992-10-15 1996-06-25 The Dow Chemical Company System and method for implementing an interface between an external process and transaction processing system
US5455944A (en) * 1993-03-16 1995-10-03 International Business Machines Corporation Method for managing logging and locking of page free space information in a transaction processing system
US5617537A (en) * 1993-10-05 1997-04-01 Nippon Telegraph And Telephone Corporation Message passing system for distributed shared memory multiprocessor system and message passing method using the same
US5586312A (en) * 1994-10-11 1996-12-17 Unisys Corporation Method and apparatus for using an independent transaction processing application as a service routine
US5857204A (en) * 1996-07-02 1999-01-05 Ab Initio Software Corporation Restoring the state of a set of files
US6327644B1 (en) * 1998-08-18 2001-12-04 International Business Machines Corporation Method and system for managing data in cache
JP2002183074A (ja) * 2000-12-14 2002-06-28 Fuji Xerox Co Ltd データ転送制御装置
JP2004152173A (ja) * 2002-10-31 2004-05-27 Sharp Corp ディスク装置およびディスク装置のキャッシュメモリ制御方法
US7673105B2 (en) * 2005-06-27 2010-03-02 Ab Inition Technology LLC Managing memory pages

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594751B1 (en) * 1999-03-25 2003-07-15 Progress Software Corporation Method and apparatus for pointer relocation optimization for virtual memory mapping and transaction management in a database system

Also Published As

Publication number Publication date
AU2006262111B2 (en) 2011-03-17
JP5647203B2 (ja) 2014-12-24
CA2610180A1 (en) 2007-01-04
CN101189584B (zh) 2010-12-15
US7673105B2 (en) 2010-03-02
JP5142995B2 (ja) 2013-02-13
EP1896951B1 (en) 2019-10-16
WO2007002282A2 (en) 2007-01-04
US20060294330A1 (en) 2006-12-28
CA2610180C (en) 2016-11-29
US20100122048A1 (en) 2010-05-13
JP2008544422A (ja) 2008-12-04
EP1896951A2 (en) 2008-03-12
WO2007002282A3 (en) 2007-09-20
KR20080021623A (ko) 2008-03-07
US7949839B2 (en) 2011-05-24
AU2006262111A2 (en) 2007-01-04
AU2006262111A1 (en) 2007-01-04
EP1896951A4 (en) 2009-01-28
JP2013037718A (ja) 2013-02-21
CN101189584A (zh) 2008-05-28

Similar Documents

Publication Publication Date Title
KR101372964B1 (ko) 메모리 페이지 관리
KR100584255B1 (ko) 플래시 메모리를 위한 포스트방식의 라이트-스루 캐시
US9767140B2 (en) Deduplicating storage with enhanced frequent-block detection
US6857047B2 (en) Memory compression for computer systems
US7711902B2 (en) Area effective cache with pseudo associative memory
US20130091331A1 (en) Methods, apparatus, and articles of manufacture to manage memory
CN106662981A (zh) 存储设备、程序和信息处理方法
CN112148736A (zh) 缓存数据的方法、设备及存储介质
JP4189342B2 (ja) ストレージ装置、ストレージコントローラ及びライトバックキャッシュ制御方法
JPH11143779A (ja) 仮想記憶装置におけるページング処理システム
US10210097B2 (en) Memory system and method for operating the same
US11544197B2 (en) Random-access performance for persistent memory
US10691614B1 (en) Adaptive page replacement
US11249646B1 (en) Large segment management
JP3020512B2 (ja) フアイルデータ管理方法
JP2004355365A (ja) キャッシュ管理装置およびキャッシュメモリ管理方法
Greenberg et al. The multics multilevel paging hierarchy
JP4131579B2 (ja) データ管理システムおよびデータ管理方法
JPH0812643B2 (ja) ページ退避/復元装置
KR101288276B1 (ko) 메모리의 삭제 블록을 고려한 버퍼 관리 장치 및 방법
Chen et al. HDCat: Effectively identifying hot data in large-scale I/O streams with enhanced temporal locality
JPH04111026A (ja) データベースに対する更新履歴情報の書き込み方式
JP2004303096A (ja) ジョブ管理方法、ジョブ管理装置、ジョブ管理プログラム

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
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: 20170228

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180226

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200225

Year of fee payment: 7