KR20000035022A - 스케줄 가능한 동적 메모리 피닝 방법 및 장치 - Google Patents

스케줄 가능한 동적 메모리 피닝 방법 및 장치 Download PDF

Info

Publication number
KR20000035022A
KR20000035022A KR1019990044742A KR19990044742A KR20000035022A KR 20000035022 A KR20000035022 A KR 20000035022A KR 1019990044742 A KR1019990044742 A KR 1019990044742A KR 19990044742 A KR19990044742 A KR 19990044742A KR 20000035022 A KR20000035022 A KR 20000035022A
Authority
KR
South Korea
Prior art keywords
page
pinning
compensation
application
pin
Prior art date
Application number
KR1019990044742A
Other languages
English (en)
Other versions
KR100333579B1 (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 KR20000035022A publication Critical patent/KR20000035022A/ko
Application granted granted Critical
Publication of KR100333579B1 publication Critical patent/KR100333579B1/ko

Links

Classifications

    • 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
    • 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
    • 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/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning

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

본 발명은 애플리케이션이 소정 지속시간(duration) 동안 제시간에 메모리 내에 페이지 집합을 피닝(pinning)할 수 있도록 하는 시스템 및 방법에 관한 것이다. 애플리케이션은 소정 지속시간 동안 자신의 메모리를 피닝하기 위한 요구를 제출한다. 그에 대한 보상으로 애플리케이션은 교체를 위해 현재 매핑된 다른 페이지를 제공할 수 있다. 상기 요구는 또한 페이지 수와 지속시간을 포함할 수 있다. 상기 요구에는 애플리케이션이 준수해야할 제한 수단(constraint policy)이 부과된다. 그러한 제한 수단에는 페이지 수, 및 페이지가 메모리에 피닝된 상태로 유지될 수 있는 시간 길이가 포함된다. 보상 페이지가 제공되는 경우, 이들 보상 페이지가 피닝될 특권을 갖도록 허용되는 페이지 대신에 교체된다. 또한 본 발명은 교체용으로 선정된 페이지(picked page)와 동일한 색(color)을 갖는 보상 페이지가 선택될 수 있는 보상 풀(compensation pool)을 포함함으로써 페이지 채색 보상(page coloring compensation)을 제공한다. 애플리케이션에 의해 제공된 것 중 보상용으로 사용되지 않은 보상 페이지는 추후에 애플리케이션으로 복귀된다.

Description

스케줄 가능한 동적 메모리 피닝 방법 및 장치{SCHEDULABLE DYNAMIC MEMORY PINNING}
본 발명은 컴퓨터 메모리 관리에 관한 것으로, 보다 구체적으로는 메모리 피닝(memory pinning)을 동적으로 스케줄링(dynamic scheduling)하는 방법 및 장치에 관한 것이다.
통상적으로, 피닝 메모리는 정규 사용자 태스크(task)에는 사용되지 않고 운영체제 커널(OS kernel), 예를 들어 장치 구동기(device driver)용에만 사용되는 특권 기능(privileged capability)을 갖는다. 피닝이란 통상적으로 페이지가 컴퓨터 운영체제에 의해 스왑 아웃(swap out)되지 않고 주메모리(main memory) 내에 남을 수 있는 능력을 말한다. 피닝은 구성요소의 정적 상태가 알려져 있고, 구성요소가 신뢰성이 있으며, 구성요소가 피닝을 최소화하는 최대 제한 수단을 갖는다는 사실에 의해 제어된다.
그러나, 다른 애플리케이션(application)들은 보다 자유로운 피닝 수단을 갖는다는 점에서 또한 장점을 가질 수 있다. 그러한 애플리케이션에는 직접 메모리 액세스(direct memory access; DMA)를 사용하며 사용자 수준에서 실행되는 장치 구동기, 무 페이지 부재(no-page-fault) 보장에 의존하는 실시간 시스템(real-time system), 및 일부 애플리케이션 전용 페이지가 보다 짧거나 보다 긴 시간 간격 동안 피닝되는 경우 훨씬 더 양호하게 수행되는 데이터베이스와 같은 애플리케이션(database-like application)이 포함된다. 따라서, 애플리케이션에 정적 및 동적 피닝 기능을 함께 제공하는 것이 매우 바람직하다. 정적 피닝(static pinning)은 구동기, 또는 실시간 부호 및 데이터, 소정 버퍼 등을 피닝하는데 사용된다. 정적 피닝에서, 페이지는 영구적인 것은 아니라도 매우 긴 시간 동안 피닝된다. 통상적으로 일부 구성요소의 기본적인 기능을 보장하기 위한 방법이 필요하다. 예를 들어, 정적 피닝은 통상의 쿼터 기반 방법(quota-based method)에 의해 제어될 수 있다.
동적 피닝은 두가지 특성을 갖는데, 하나는 페이지가 짧은 기간 동안에만 피닝되는 점이고, 다른 하나는 어떤 페이지가 피닝될 것인지와 얼마나 많은 페이지가 피닝될 것인지가 동적으로 결정된다는 점이다. 동적 피닝은 다음의 경우를 포함하여 대부분의 경우에 매우 바람직하고 유용하다.
1. 네트워크 등을 통해 파일(file)을 전송하는 경우. 네트워크 시스템은 전송 기간 동안 파일을 부분적으로 (또는 전체적으로) 메모리 내에 피닝한다. 이로 인해 제로 복사 전송(zero-copy transmission), 즉 네트워크 버퍼 내로 데이터를 복사하지 않는 전송이 가능하므로, 성능이 상당히 개선된다.
2. 비실시간 구성요소(non-real-time component)에 데이터를 전송하는 경우, 실시간 애플리케이션은 피닝된 메모리(pinned memory)를 일시적으로 요구한다.
3. 실시간 애플리케이션은 일시적으로 피닝된 메모리를 요구한다. 애플리케이션이 피닝된 메모리없이 자신의 마감시간(deadline) 요건을 충족시키고 최소한의 서비스 품질(quality-of service contract)을 만족시키더라도, 추가적인 버퍼로 인해 그 서비스 품질이 상당히 개선되거나, 전체적인 시스템 로드(system load)가 감소될 수 있다(즉, 더 많은 프로세서 시간을 비실시간 태스크용으로 사용할 수 있도록 해준다).
4. 애플리케이션 전용 지식에 기초하여, 데이터베이스 시스템은 일부 페이지를 동적으로 피닝함으로써 전체적인 스와핑(swapping)을 감소시킨다.
다음의 모든 경우에서, 애플리케이션은 자신을 위해 얼마나 많은 페이지가 피닝될 수 있는지, 그리고 얼마나 긴 페이지가 피닝될 수 있는지에 대해 시스템과 타협한다. 또한, 동적 피닝은 독립된 다수 애플리케이션의 요구를 조정하고, 다른 페이지화된 애플리케이션(paged application)에 대해 피닝이 갖는 부정적인 효과를 제한하는 수단에 의해 제어되어야 한다. 또한, 이러한 제어 수단은 신뢰할 수 없는 애플리케이션에 대하여 실행될 수 있는 수단이어야 한다. 따라서, 동적 피닝에 스케줄링 수단을 제공하는 것이 강하게 요구된다.
예를 들어, 사용자 태스크가 소정 시간 동안 현재 매핑(mapping)된 자신의 일부 페이지를 피닝하도록 동적으로 요구하는 것이 가능한 경우, 페이저(pager) 내의 스케줄링 알고리즘(algorithm)은 이러한 요구가 허용되어야 하는지, 부인되어야 하는지, 또는 적은 페이지 수로 또는 짧은 기간 동안 허용되어야 하는지를 결정해야 한다. 이러한 동적 피닝 스케줄러(dynamic-pinning scheduler)는 다음과 같이 특징 중 일부를 가져야 한다.
1. 동적 피닝 스케줄러는 임의의 적절한 페이지 교체 알고리즘(page-replacement algorithm)과 결합하여 동작해야 한다.
2. 동적 피닝 스케줄러는 애플리케이션에서의 피닝 관련 신뢰에 의존하지 않아야 한다. 예를 들어, 장치 구동기에 대한 피닝 제한은 허용되지 않는다.
3. 동적 피닝 스케줄러는 서비스 부인 공격(denial-of-service attack)에 대해 확실하게 대항해야 한다. 피닝은 시스템을 독점할 새로운 가능성을 제공해서는 안된다.
4. 동적 피닝 스케줄러는 시스템 로드(load) 변화에 신속하게 적응해야 한다. 애플리케이션은 비사용(unused) 메모리가 충분한 경우 애플리케이션에 많은 양의 피닝된 페이지가 허용되어야 한다. 이와는 반대로, 메모리가 부족한 경우 적은 양의 피닝이 허용되어야 한다.
5. 기본적인 스케줄러는, 예를 들어 우선순위가 정해지거나 상이한 가중치가 부여되는 애플리케이션을 처리하는 특정 수단을 추가하는 것이 가능해야 한다.
따라서, 상기 문제를 해결하기 위해 시간 한계(time boundary)를 포함하는 피닝 수단을 갖는 것이 매우 바람직하다. 또한, 애플리케이션은 시간을 기초로 하여 자신의 페이지를 피닝 해제(unpinning)하는 것에 의존하지 않아야 한다. 따라서, 피닝 해제를 필요로 할 수 있는 실행 수단(enforcement policy)을 갖는 것이 매우 바람직하다. 본 기술 분야의 당업자에게 명백한 바와 같이, 상기 특징 중 3번째와 4번째는 n개의 물리적 페이지(physical page)와 m개의 애플리케이션 환경에서 n/m의 고정된 쿼터(fixed quota)만큼 피닝된 페이지를 각 애플리케이션에게 주는 것과 같은 단순한 해결책을 배제한다.
따라서, 상기 문제점을 해결하기 위해 본 발명은 애플리케이션이 소정의 표준(criteria)에 기초하고 주어진 제한 요건에 따라 메모리 내에 페이지를 요구하여 그 페이지를 피닝하는 것이 허용되는 메모리 피닝에 대한 동적 스케줄링을 제공하는 방법 및 장치에 관한 것이다.
도 1은 본 발명의 바람직한 제1 실시예를 도시한 도면.
도 2는 본 발명의 핀 엔진으로 핀 요구를 보내는 애플리케이션(application)을 도시한 도면.
도 3은 애플리케이션이 핀 엔진으로 보상 페이지로서 매핑(mapping)된 일부 페이지를 제공하는 본 발명의 바람직한 제2 실시예를 도시한 도면.
도 4는 본 발명의 바람직한 제2 실시예에서 교체용 페이지를 선택하는 교체기(replacer)의 예를 도시한 도면.
도 5는 교체기가 교체용 보상 페이지인 페이지를 선정(picking)하는 본 발명의 시나리오(scenario)를 도시한 도면.
도 6은 교체기가 피닝된 페이지(pinned page) 중 하나인 페이지를 선정하는 시나리오를 도시한 도면.
도 7은 본 발명의 바람직한 제3 실시예를 도시한 도면.
도 8은 본 발명의 바람직한 제3 실시예에서 보상 집합(compensation set)이 비어 있지 않은 경우 보상되지 않은 상태의 피닝된 페이지를 선정하는 교체기의 예를 도시한 도면.
도 9는 보상 집합으로부터 페이지를 선택하는 보상 선택기(compensation selector)를 예시하는 도면.
도 10은 보상되지 않은 상태의 교체용 보상 페이지를 선정하는 교체기의 예를 도시한 도면.
도 11은 보상 집합으로부터 한 페이지를 선택하는 보상 선택기의 예를 도시한 도면.
도 12 및 도 13은 교체기가 보상되지 않은 상태의 보상 페이지를 선정하는 시나리오를 예시한 도면.
도 14는 보상 선택기가 교체기에 의해 선정된 페이지와 동일한 페이지를 선택하는 시나리오를 도시한 도면.
도 15는 본 발명의 바람직한 제3 실시예에서 보상된 페이지가 교체될 수 있는 방법을 예시한 도면.
도 16은 자기 자신이 보상중인 페이지(1690)가 되는 보상된 페이지(1610)를 교체기가 선정하는 시나리오를 예시한 도면.
도 17 내지 도 19는 본 발명의 제4 실시예를 도시한 도면.
도 20은 500회 이상의 교체에 대해 확률적 하한(stochastic lower bound)이 선형 근사될 수 있음을 도시한 그래프.
본 발명의 핀 엔진(pin engine)은 시스템 가용 자원과 같은 기존의 표준에 기초하여 피닝 요구를 허용할 것인지를 평가하고, 피닝 요구가 허용되었는지를 나타내는 응답을 애플리케이션에게 복귀시킨다. 피닝 요구를 허용하면서 핀 엔진은 애플리케이션이 유지해야 하는 소정의 제한 요건을 지정한다. 그러한 제한 요건에는 시스템 자원 및 시스템의 현재 로드를 포함할 수 있는 현행의 표준에 다시 기초하여 핀 엔진에 의해 미리 특정된 시간이 만료된 이후 애플리케이션이 자신의 페이지 모두 또는 일부를 피닝 해제한다는 요구사항이 포함될 수 있다. 또한 핀 엔진은 필요할 때마다 애플리케이션에 의해 피닝된 페이지를 피닝 해제하는 실행 기능을 갖는다.
보다 구체적으로, 본 발명은 소정 페이지를 피닝하고자 하는 애플리케이션이 교체(replacement)용 치환 페이지(substitute page)를 제공하는 보상형 피닝 메커니즘(compensated pinning mechanism)을 제공한다. 애플리케이션은 피닝용 실제 페이지, 피닝용 페이지 수, 및 요구된 페이지가 피닝 상태를 유지하는 지속시간과 같은 요구 특성을 포함하는 피닝을 초기에 핀 엔진에게 요구한다. 또한 애플리케이션은 페이지 교체 중에 피닝된 페이지 대신에 치환될 수 있는 보상 페이지(compensation page)로 현재 매핑된 페이지를 포함한다.
또한, 본 발명은 피닝된 페이지와 동일한 색(color)을 가진 보상 페이지가 교체용으로 사용되는 색 감지가능 보상 메커니즘(color-sensitive compensation mechanism)을 제공한다. 동일한 색 보상 페이지를 가짐으로써 추후 발생할 수 있는 캐쉬 충돌(cache conflict)을 방지할 수 있으며, 따라서 성능이 개선될 수 있다.
상기 기능을 제공하기 위해, 본 발명은 가용 시스템 자원에 따라 수행되는 평가에 기초하여 애플리케이션으로부터의 핀 요구를 허용하거나 부인하는 핀 엔진, 보상중인 페이지(compensating page), 즉 치환 페이지를 선택하는 보상 선택기(compensation selector)를 포함한다. 알려진 임의 교체 알고리즘에 따라 페이지 교체기(page replacer)가 스와핑용 페이지를 선정하고, 선정된 페이지(picked page)가 피닝되었거나 피닝될 페이지인 경우, 보상 선택기는 페이지 교체기가 선택된 페이지 대신에 사용될 다른 페이지를 선택한다. 보상 선택기는 통상적으로 피닝을 요구하는 애플리케이션에 의해 제공되는 보상 페이지를 보함하는 보상 집합(compensation set)으로부터 보상중인 페이지를 선택한다. 또한 보상 선택기는 임의의 시스템 자원 또는 애플리케이션에 의해 공급되는 보다 큰 보상 페이지 집합을 갖는 보상 풀(compensation pool)로부터 보상중인 페이지를 선택할 수 있다.
또한, 보상중인 페이지를 선택하는 경우, 보상 선택기는 임의 수의 소정 표준에 기초하여 보상 페이지의 등급을 매길 수 있다. 그러한 표준에는 색 감도(color sensitivity)가 포함될 수 있지만 이것에만 한정되는 것은 아니다. 예를 들어, 페이지 교체기에 의해 선택된, 피닝되었거나 피닝될 페이지와 동일한 색을 갖는 보상 페이지는 높은 등급을 갖는 반면 다른 페이지들은 낮은 등급을 가질 수 있다. 따라서, 보상 선택기는 다른 페이지를 선택하기 이전에 높은 등급을 갖는 페이지를 선택한다.
본 발명에 대한 여러 실시예의 구조 및 동작은 물론 본 발명의 다른 특징 및 이점이 첨부된 도면을 참조하여 이하 상세하게 기술된다. 도면에서, 동일한 참조 번호는 동일하거나 기능적으로 유사한 요소를 나타낸다.
이하 단지 예로써 첨부된 도면을 참조하여 본 발명의 바람직한 실시예가 기술된다.
본 발명은 메모리 피닝에 대한 동적 스케줄링을 제공하는 방법 및 장치에 관한 것이다. 애플리케이션은 소정 시간 동안 메모리 내에서의 페이지 피닝을 요구할 수 있다. 본 발명에서는 피닝이 제한적으로 허용된다라는 제한 피닝 개념(constraint pinning concept)이 사용된다. 이 제한 요건에는 피닝될 수 있는 페이지 수와 페이지가 메모리 내에 피닝된 상태로 남아 있을 수 있는 지속시간(duration)이 포함될 수 있지만 이것에만 한정되는 것은 아니다. 또한 애플리케이션은 자신의 핀 요구와 함께 메모리 내에 페이지를 피닝하기 위한 요구된 제한 요건을 포함할 수 있다.
본 발명에는 또한 메모리 피닝에 대한 동적 스케줄링을 제공하는 보상형 피닝(compensated pinning) 개념이 포함된다. 보상형 피닝은 이미 매핑된 페이지가 어떻게 피닝될 수 있는지의 문제를 다룬다. 애플리케이션이 소정의 지속시간 동안 현재 매핑된 자신의 x 페이지를 피닝하도록 요구하는 경우, 애플리케이션은 보상용으로 다른 x 페이지를 페이저에게 제공해야 한다. 이러한 보상 페이지들은 동일한 애플리케이션에 의해 소유되고 현재 물리적 메모리에 매핑된다. 페이지 교체시 페이저는 또한 피닝된 페이지 대신에 보상 페이지를 사용할 수 있다. 이러한 사상(idea)에 기초하여, 임의의 바람직한 페이지 교체 알고리즘에서 피닝 비용은 소정 시간 동안 거의 100%에 가깝게 보상될 수 있다.
애플리케이션 A가 k 페이지 피닝을 요구하고 x 보상 페이지를 제공하는 경우, k+x 페이지는 모두 A의 소유이어야 하고 현재 매핑이 되어 있어야 한다. 애플리케이션 A는 k+x 페이지를 페이지 교체 알고리즘용으로 최근에 사용된 것으로 모두 분류하기 위해 k+x 페이지 모두와 접촉한다. 그 후 애플리케이션 A는 페이지 피닝을 요구한다.
다음의 보상 알고리즘이 원형의 페이지 교체 알고리즘에 추가된다. 초기에, k+x 페이지는 모두 보상중인 페이지에 연결(link)되지 않은 것으로 표시된다. x 페이지는 A의 보상 집합이라고도 하는 A의 보상 페이지의 집합 XA내로 입력된다. "보상 페이지(compensation pages)"는 보상을 위해 아직 사용되지는 않았지만 앞으로 보상을 위해 사용될 수 있는 페이지를 언급한다. 보상을 위해 현재 사용되는 페이지는 "보상중인 페이지(compensating page)"로써 언급된다. 페이지가 보상중인 페이지와 연관되는 경우 그 페이지는 "보상된 상태(compensated)"이다. 원형 페이지 교체가 k+x 페이지 중 한 페이지, 즉 피닝된 페이지 또는 보상 페이지를 선정하는 경우 보상 알고리즘이 적용된다. 페이지 프레임 f가 처음으로 선정되는 예가 기술된다(consider). f가 보상 페이지에 아직 연결되지 않은 경우, 즉 f가 보상된 상태가 아닌 경우, 임의의 페이지 f'이 XA로부터 취해지고 이 집합으로부터 제거된 후, f가 f'에 연결된다. 따라서, f'은 f에 대한 보상중인 페이지가 된다. 그 후, f'이 교체용으로 f 대신에 사용된다. 페이지 f'이 f에 대해 보상중인 페이지로서 이미 연결된 경우, f'이 f 대신에 사용된다. 상기 알고리즘을 구현하는 p 부호 세그먼트(p-code segment)의 예는 다음과 같다.
compensate (f)
If f.linked = nil THEN
f' := XA중 하나;
XA:= XA\ {f'}
f.linked := f'
FI;
교체용으로 f 대신에 f.linked 사용.
XA가 비어 있는 경우, 아직 교체되지 않은 페이지를 교체하는 것은 더 이상 보상될 수 없다. 애플리케이션 A는 집합 XA가 다 빌 때까지는 보상된 상태(compensated)로서 언급된다. 그 후, 애플리케이션 A는 보상되지 않은 상태(uncompensated)로 언급된다.
도 1에는 본 발명의 바람직한 제1 실시예가 도시된다. 본 발명에는 주메모리(100), 애플리케이션(110), 핀 엔진(120), 및 교체기(130)가 포함된다. 애플리케이션(110)은 주메모리(100)의 페이지를 사용하고, 일부 애플리케이션 페이지(150)는 피닝될 예정이다. 다른 페이지(190)는 피닝과 관련되지 않거나 애플리케이션과 관련되지 않는다. 도 2에는 애플리케이션(110)이 핀 엔진(120)으로 핀 요구(200)를 보내는 것이 도시된다. 핀 엔진은 핀 제한 요건(210)으로 응답한다.
도 3에는 애플리케이션(110)이 보상 페이지로서 매핑된 일부 페이지(360)를 핀 엔진(120)에게 제공하는 본 발명의 바람직한 제2 실시예가 도시된다. 다음, 핀 요구(300)에는 보상 제공(compensation offer)이 포함된다. 따라서, 핀 엔진(120)은 허용될 핀 제한 요건(310)을 결정하기 위해 보상 제공을 사용한다. 보상 선택기(140)는 다음의 교체를 보상하는 방법을 제어하는 유닛(unit)이다.
도 4에는 본 발명의 바람직한 제2 실시예에서 교체기(130)가 교체용 페이지(410)를 선택하는 예가 도시된다. 교체기(130)가 피닝과 관련되지 않은 페이지(190) 중 한 페이지(410)를 선정하는 경우, 평소와 같이 선정된 페이지(410)가 교체된다. 마찬가지로, 도 5에서 교체기(130)가 보상 페이지(460)인 페이지(510)를 선정하는 경우, 선정된 페이지(510)가 평소와 같이 교체된다. 도 6에는 교체기(130)가 피닝된 페이지(450) 중 하나인 페이지(610)를 선정하는 시나리오가 도시된다. 이에 응답하여 보상 선택기(140)는 보상 페이지(560) 중 하나를 선택한다. 그 후 이와 같이 보상 선택기에 의해 선택된 페이지(670)가 선정된 페이지(610) 대신에 교체된다.
도 7에는 본 발명의 바람직한 제3 실시예가 도시된다. 이러한 실시예에서, 애플리케이션(110)은 매핑된 일부 페이지(750)의 피닝을 요구하고, 다른 매핑된 페이지를 보상 페이지(760)로써 핀 엔진(120)에게 제공한다. 핀 엔진(120)은 페이지(750)를 피닝되고 보상되지 않은 상태로 모두 설정한다. 또한, 핀 엔진(120)은 보상 페이지(760)를 보상 집합(780) 내로 넣은 후 페이지(760)를 보상되지 않은 상태로 설정한다. 이러한 실시예에서, 도 8에 예시된 바와 같이, 교체기(130)가 보상되지 않은 상태의 피닝된 페이지(810)를 선정하고 보상 집합(780)이 비어 있지 않은 경우, 즉 보상 집합(780)이 보상되지 않은 상태 또는 보상된 상태일 수 있는 적어도 하나의 보상 페이지(860)를 포함하는 경우, 도 9에 예시된 바와 같이 보상 선택기(140)는 보상 집합(780)으로부터 한 페이지(970)를 선택한다. 그 후 보상 선택기(140)는 선택된 페이지(970)를 보상 집합(780)으로부터 제거하고, 선택된 페이지(970)를 선정된 페이지(910)에 보상중인 페이지로서 연결한다. 따라서 선정된 페이지(910)는 보상된 상태가 된다. 보상된 상태의 페이지를 교체하는 예는 도 15를 참조하여 기술될 것이다.
또한, 바람직한 제3 실시예에서, 교체기(130)가 도 10에 예시된 바와 같이 보상되지 않은 상태의 보상중인 페이지(1010)를 선정하고, 보상 집합(780)이 비어 있지 않은 경우, 즉 보상 집합(780)이 보상되지 않은 상태 또는 보상된 상태일 수 있는 적어도 하나의 보상 페이지(1060)를 포함하는 경우, 도 11에 예시된 바와 같이 보상 선택기(140)는 보상 집합(780)으로부터 한 페이지(1170)를 선택한다. 그 후 보상 선택기(140)는 선택된 페이지(1170)를 보상 집합(780)으로부터 제거하고, 선택된 페이지(1170)를 선정된 페이지(1110)에 보상중인 페이지로서 연결한다. 따라서, 선정된 페이지(1110)는 보상된 상태가 된다. 보상된 상태의 페이지를 교체하는 예는 도 15를 참조하여 기술될 것이다.
도 12에는 교체기(130)가 보상되지 않은 상태의 보상 페이지(1210)를 선정하는 경우의 시나리오가 예시된다. 도 13에 예시된 바와 같이, 보상 선택기(140)가 보상 집합(780)으로부터 페이지(1370)를 선택함으로써 선택된 페이지(1370)가 선정된 페이지(1210)와 다르고 또한 자체가 보상된 상태에 대한 보상되지 않은 상태일 수 있는 보상 페이지(1261)인 경우, 보상 선택기(140)는 선택된 페이지(1370)를 보상 집합(780)으로부터 제거하고, 선택된 페이지(1370)를 선정된 페이지(1210)에 보상중인 페이지로서 연결한다. 따라서 선정된 페이지(1210)는 보상된 상태가 된다.
도 14에는 보상 선택기(140)가 교체기(130)에 의해 선정된 페이지와 동일한 페이지를 선택하는 경우의 시나리오가 도시된다. 도 14에서, 보상 선택기(140)가 보상 집합(780)으로부터 선택 페이지(1470)로서 선정된 페이지(1410) 자체를 선택하는 경우, 보상 선택기(140)는 선택된 페이지(1470)를 보상 집합(780)으로부터 제거하고, 선택된 페이지(1470)를 선정된 페이지(1410), 즉 자신에게 보상중인 페이지로서 연결한다. 따라서 선정된 페이지(1410)는 보상된 상태가 된다.
도 15에는 바람직한 제3 실시예에서 보상된 상태의 페이지가 교체될 수 있는 방법이 예시된다. 교체기(130)가 보상중인 페이지(1590)에 의해 보상되는 보상된 상태의 페이지(1510)를 선정하는 경우, 선정된 페이지(1510)가 보상된 상태의 피닝된 페이지, 보상된 상태의 보상 페이지, 또는 보상된 상태의 보상중인 페이지 중 어느 것이라도, 교체기는 선정된 페이지(1510) 대신에 보상중인 페이지(1590)를 교체한다.
도 16에서, 교체기(130)가 자신을 보상중인 페이지(1690)로 갖는 보상된 상태의 페이지(1610)를 선정하는 경우, 교체기(130)는 보상중인 페이지(1690), 즉 선정된 페이지(1610)를 교체한다.
A를 보상된 상태가 되게 하는 교체의 수는 보상 길이(compensation length) C라고 한다. 구체적인 보상 길이는 x 만큼 적을 수 있다. 그러나, 이러한 이벤트(event)는 발생 가능성이 매우 낮다. 따라서, 보상 길이에 대해 이러한 절대적인 하한(absolute lower bound) 대신에 확률적 하한(stochastic lower bound) CP가 사용된다. 이것은 확률 P일 때 구체적인 보상 길이가 적어도 CP라는 것을 의미한다. 예를 들어, 모든 피닝 동작의 99%에서 보상 페이지는 C99%교체까지 사용될 수 있다.
하나의 교체 동작에 요구되는 최소 시간에 대한 하한 Tmin을 사용하면 확률적 피닝 시간은 적어도 CP* Tmin이 된다. 피닝될 페이지가 k 페이지이고, 제공된 보상 페이지가 x 페이지인 경우 페이저는 타우(tau) = CP* Tmin의 피닝 시간을 보장할 수 있다. 또한, 간단한 CP* Tmin보다 양호한 확률적 한계(stochastic bound)가 유도될 수 있다. 타우 시간 동안 보상이 수행되는 한, 페이징 동작(paging behavior)은 k 페이지 피닝에 의해 영향을 받지 않고, 피닝은 스와핑에 효과적으로 사용될 수 있는 메모리를 축소시키지 않는다. 그러나, 보상 언더플로(compensation underflow)가 검출되자마자 페이저는 피닝되지 않은 페이지를 보상 처리 없이 교체해야 한다. 따라서, 가용 스와핑 메모리가 효과적으로 축소된다. 그러나 이러한 상황은 자주 발생되지 않는다. 평균적으로, 대개의 경우에 r 교체에 대한 유효 시간이 Tmin* r보다 훨씬 크기 때문에 확률은 오히려 1-P보다도 작다.
애플리케이션은 매핑된 k 페이지를 피닝하고 또한 매핑된 x 페이지를 보상용으로 제공한다. 원형 교체 알고리즘이 교체 이벤트 당 k+x 페이지 중 주어진 페이지를 선정하는 확률에 대한 상한(upper bound)을 p라고 하자. 교체는 균등하게 분배될 필요는 없으나, 단지 p가 k+x 페이지 모두에 대해 상한이어야 한다.
페이징용으로 사용 가능한 물리적 메모리가 n 페이지인 경우, 바람직한 페이지 교체 알고리즘과 임의의 높은 페이징 로드(paging load)에 대해 p=1/n인 것이 바람직하다. k+x 페이지가 현재 심하게 사용되기 때문에 p=1/n은 현재 사용되는 페이지에 대한 교체 확률이 적어도 평균 페이지에 대한 교체 확률보다 높아서는 안된다는 것으로만 가정한다.
r 교체가 보상될 수 있는 확률 P(r)이 중요하다. 먼저, P(r)은 k+x 페이지 중 임의의 페이지에 대해 한번의 교체 내에 선정될 확률은 일정하고 p와 동일하다는 가정 하에 산출된다. 또한, p가 이러한 확률에 대해 상한인 경우에 P(r)은 하한이다.
보상 알고리즘으로부터, P(r)은 r 교체에 대해 원형 교체 알고리즘이 k+x 페이지의 집합으로부터 기껏해야 x개의 상이한 페이지를 선정하는 확률이다라는 결론이 도출될 수 있다.
이러한 집합으로부터 i 페이지가 선택되는 예에 대해 기술한다. r 교체에서 주어진 i 페이지 각각이 적어도 한 번은 선정되고 나머지 k+x 페이지 모두는 한번도 선정되지 않을 확률은 다음과 같다.
Pi(r)에 i 페이지가 k+x 페이지로부터 선택될 수 있는 조합(combination)의 수를 곱하고, i 값이 가능한 전 범위에 대해 더한 결과는 다음과 같다.
P0(r)만이 p에 직접적으로 좌우된다. p값이 작아질수록 P0(r)값이 커지고, Pi(r)값 및 P(r)값도 커진다. 따라서, P(r)은 r 교체시 k+x 페이지 각각에 대한 픽 확률(pick probability)이 p보다 작거나 같은 경우 r 교체가 보상될 수 있는 확률에 대한 하한이다.
[표 1]에는 p=1/n 및 여러 메모리 크기 n에 대한 확률적 보상 길이가 도시된다. 주변 확률(margin probability)은 항상 99%로서, 즉 C99%가 산출된다.
[표 1] C99%
대부분의 페이저들은 미사용(unused) 또는 프리 페이지 프레임(free page frame)의 목록을 보유한다. 예를 들어, 페이지는 태스크 또는 메모리 객체(memory object)가 삭제되는 경우 프리 페이지로 된다. 그러한 공백 페이지 프레임에 익명 메모리의 신규 페이지를 할당하는 것은 매우 값싸게 수행될 수 있다. 프레임이 오래된 객체를 삭제하여 이미 제로(zero)가 된 경우, 할당에는 페이지 당 10 마이크로초(μs)밖에 들지 않는다. 따라서, 보상 가능한 교체 CP가매우 빨리 소모될 수 있다. 직관에 반하여, 이것은 시스템 내에 미사용 페이지가 많을수록 허용 가능한 피닝 기간이 짧아진다는 것을 의미하는 것처럼 보인다. 그러나, 페이저가 가용 프리 페이지 프레임이 있어서 페이저가 프리 페이지가 아닌 페이지를 교체하지 않는 경우에는 사실이 아니다. 프리 페이지 프레임이 남아 있는 한 새로운 할당(fresh allocation)(교체)은 x개의 보상 페이지를 하나도 사용하지 않고도 보상될 수 있다. F개의 새로운 할당이 x개의 보상 페이지를 사용하지 않은 상태로 남겨두는 경우, 가용 프리 프레임이 없는 동안 발생되는 CP개의 "실(real)" 교체까지 F개의 새로운 할당에 추가하여 보상될 수 있다. 따라서, 새로운 교체는 n-교체로 분류되고, 최악의 보상된 피닝 시간을 산출하는 경우에는 무시된다.
교체 당 적어도 한번의 디스크 액세스를 필요로 하는 페이징 시스템에서, 최소 교체 시간은 10 ms일 수 있다. 그러나, 대부분의 페이징 시스템은 새로운 페이지를 할당하기 위한 메모리 초기화를 제외하고는 디스크 액세스를 필요로 하지 않는다. 따라서, 기록상 복사(copy-on-write)를 지원하는 페이저는 원형 페이지를 주메모리 내에 복사함으로써 디스크 액세스를 피한다. 이러한 경우에, 최소 교체 시간은 Tmin= Tmem= 100 μs 정도로 매우 적다. 일부 교체만이 그러한 짧은 시간 내에 처리될 수 있기 때문에―나머지 교체들은 한번 또는 심지어 2번의 디스크 액세스를 필요로함―, 평균 교체 시간은 크기에 있어서 한 자리 또는 2자리 정도 더 길어진다. 따라서, CP* Tmem는 타우에 대해 바람직하지 않다는 것이 명백하다. 따라서, Tmem이상의 시간을 요하는 순수 메모리 교체는 적어도 한번의 디스크 액세스를 포함하고 Tdisk이상의 시간을 요하는 교체와는 차별화된다. 단 하나의 교체에 대해 Tmem보다 양호하게 평가되는 것이 없더라도, 보다 양호한 확률적 평가가 시퀀스(sequence) 동안에 발견될 수 있다. 대부분의 시스템에서 긴 시퀀스 내에 적어도 다소의 디스크 교체 있을 것으로 예상될 수 있다. 예를 들어, 매우 발생하기 어려운 것으로 행(row)에서 1000 Tmem교체가 발생할 수 있다.
교체가 확률 q를 갖는 디스크 교체와 확률 1-q를 갖는 메모리 교체인 예에 대해 기술한다. 정확하게 r번의 교체 내에서 i번의 디스크 교체가 일어날 확률은 다음과 같다.
다중 스레드(thread)가 동시에 동작하기 때문에, 최악의 경우에는 메모리 교체가 모두 디스크 교체와 병행하여 일어날 수 있다. 한편, 디스크 교체는 하나의 디스크만을 가정하는 경우에 연속하여 일어난다. 스레드가 디스크 교체의 결과에 따른 행(row)에서의 j번의 메모리 교체를 가질 확률은 (1-q)jq 이지만, 연속적인 메모리 교체의 실행이 매우 길지는 않기 때문에 평균적으로 1/q-1 정도이다. 따라서, 높은 교체 로드(replacement load) 하에서 스레드는 모두 디스크 교체에 의해 매우 빠르게 동기화될 것이다. r번의 교체가 매우 적은 디스크 교체와 병행하여 일어나도록 스레드가 연속적이고 조밀하게 메모리 교체를 점화(fire)할 가능성은 거의 없다. 따라서, 이러한 모형(model)에서, 임의의 디스크 교체의 시작과 그 다음 디스크 교체의 시작 사이에 일어나는 그러한 메모리 교체만이 처음 디스크 교체와 중첩된다.
r번의 교체에 적어도 시간 T가 확실히 걸리도록 하기 위해 적어도 [T/Tdisk] 디스크 교체가 r번의 교체 전체 내에 일어나야 한다. 따라서, r번의 교체에 적어도 시간 T가 걸릴 확률은 다음과 같다.
이로 인해 확률적 하한 TQ(r)을 산출할 수 있다. 여기서, Q는 확률이고, r번의 교체에는 적어도 시간 TQ(r)이 걸릴 것이다. [표 2]에는 주변 확률이 99%인 확률적 하한이 일부 예시된다.
[표 2] T99%
교체 디스크:메모리
28:80 50:50 80:20
20050010002000 0.27s 0.84s 1.46s0.80s 2.24s 3.79s1.71s 4.63s 7.70s3.58s 9.48s 15.08s
도 20에는 r 〉= 500인 경우에 확률적 하한이 선형 근사될 수 있다는 것에 대해 도시된다. 여기서, Teff= T99%(500)인 경우 T99%(r) 〉= Teff* r이다. 상수 Teff는 메모리 교체 및 디스크 교체의 분배, 즉 [표 3]에 예시된 바와 같은 OS 구조에 좌우된다. [표 4]에는 20%의 디스크 교체를 갖는 시스템, 즉 Teff= 1.6ms인 시스템에 대한 유효 피닝 기간(effective pinning period)인 타우 = TeffC99%가 예시된다. [표 4]는 [표 1]의 보상 길이를 기초로 한다. 보상 길이가 500보다 아래인 경우는 무시된다.
[표 3] 적어도 500번의 교체와 99%의 주변 확률의 시퀀스에서의 교체 당 확률적 최소 비용 Teff
디스크:메모리
28:80 50:50 80:20
Teff 1.60 ms 4.48 ms 7.58 ms
[표 4] 타우 = T99%x 1.6 ms
k 페이지 피닝과 함께 수정된 페이지 교체는 피닝 없이 k+x 페이지를 사용하는 원형 페이지 교체와 동일한 형태이다. 보상은 피닝된 페이지와 보상 페이지에 적용된다는 점에 유의한다. 따라서, k+x 페이지 중 x 페이지까지 보상 페이지에 1 대 1로 매핑된다. 특히, 보상 페이지는 결코 직접적으로가 아닌 간접적으로만 선정되기 때문에 보다 자주 교체되지는 않는다.
보상은 페이지 교체 알고리즘에 좌우되지는 않는다. 동적 피닝에 대한 스케줄링은 페이징을 스케줄하는 방법에 대한 잘 알려진 문제로 축소된다. 피닝과 보상은 국부적이다. 피닝 결정과 스케줄링은 애플리케이션마다 행해질 수 있다. 상이한 애플리케이션들은 평소와 같이 페이징에 의해 인터페이스 접속되지만 피닝에 의해 추가적으로 인터페이스 접속되지는 않는다.
보상 페이지는 애플리케이션이 피닝을 위해 지불하는 대가와 같다. 애플리케이션은 최악의 확률적 비용을 포함할 만큼 충분히 제공해야 한다. 평균적으로, 훨씬 적은 보상 페이지가 요구되므로, 결국 애플리케이션이 통상적으로 초과 지불하는 것이 된다. 미사용 보상 페이지는 계속되는 피닝 용으로 사용될 수 있도록 유지된다. 따라서, 처음에는 애플리케이션이 최대의 대가를 맡기지만 결국에는 실제의 비용만을 지불하게 된다. 마찬가지 방식으로, 임의의 애플리케이션은 자신에게 남아 있는 보상 페이지를 다른 애플리케이션 또는 서버(server)에게 건네줄 수 있다. 예를 들어, 네트워크 서버가 보상 페이지를 수집하여 자신의 클라이언트(client)들에게 수집된 보상 페이지를 재분배할 수 있다.
이하 본 발명을 구현하는데 사용될 수 있는 애플리케이션 프로그래밍 인터페이스(application programming interface; API)의 예가 기술될 것이다. 본 발명에서, 애플리케이션 및 페이저마다 하나의 보상 객체(compensation object) XA가 요구된다. XA는 A에 대해 현재 할당된 보상 페이지 모두를 포함한다. 애플리케이션은 AllocateCompensationPage 연산(operation)을 사용하여 신규의 보상 페이지를 메모리 내에 할당한 후 그 보상 페이지를 XA에 추가할 것을 페이저에게 요구할 수 있다. 마찬가지로, ReleaseCompensationPage 연산을 사용하여 한 페이지를 해제(release)할 것을 페이저에게 요구할 수 있다. 애플리케이션과 관계없이 페이저는 애플리케이션이 현재 페이지를 피닝하고 있지 않은 경우 피닝을 보상하거나 통상적인 방식으로 페이지를 교체하는 것 중 하나를 수행하기 위해 XA로부터 페이지를 제거할 수 있다. CompensationPages 연산은 현재 XA내에 있는 페이지의 수를 애플리케이션에게 전달한다. 또한 보상 페이지는 다른 애플리케이션으로 전달될 수 있다. 보상 페이지는 수신자(receiver)의 보상 객체에 자동으로 추가된다.
애플리케이션은 MakeCompensationPages (페이지집합) 연산을 사용하여 특정 페이지가 보상 용으로 사용될 수 있다는 것을 페이저에게 전달할 수 있다. 특정 페이지에 일치하는 페이지 프레임은 보상 객체에 추가된다.
Pin (페이지집합) 연산은 특정 페이지집합(pageset)을 피닝할 것을 요구한다. XA의 현재 크기에 따라 페이저는 현재의 보상 페이지 수 x와 보장된 피닝 기간인 타우를 복귀한다. 이러한 애플리케이션에 대해 피닝된 페이지가 이미 있는 경우 특정 페이지는 이미 피닝된 페이지의 집합에 추가된다. 이러한 추가는 집합 추가(set addition)이므로 페이지 또는 전체 페이지 집합은 한 번 이상 피닝될 수 있다. 그러나, CompensationPages 및 타우는 항상 갱신된다.
Pin (페이지집합) 연산은 매핑된 페이지만을 피닝한다. 특정 페이지가 하나 이상 매핑되지 않은 경우 Pin (페이지집합) 연산은 피닝될 수 없는 페이지 집합을 또한 복귀한다. Unpin (페이지집합) 동작은 특정 페이지를 피닝 해제(unpinning)한다.
이하 추가 부호의 예가 기술된다.
적응 피닝(Adaptive Pinning)
AdaptivePin (페이지집합, 타우)
T := now + 타우;
Do
Pin (페이지집합) -〉 타우'
IF 타우 〈 epsilon 인 경우 failure FI 복귀;
(min(tau-epsiplon, T-now)) 수행
UNTIL now 〉= T OD.
맵과 핀(Map and Pin)
MapAndPin (페이지집합)
매핑되지 않은 상태(unmapped) := 페이지집합;
x := CompensationPages;
WHILE 매핑되지 않은 상태 != 공집합(emptyset) DO
매핑되지 않은 처음 페이지 액세스(access first unmapped page);
보상 페이지를 충분히 할당(allocate sufficient compensation pages);
Pin (페이지집합) -〉 (x, 타우, 매핑되지 않은 상태)
OD.
순차 핀과 해제(Sequential Pin and Release)
SequentialPinAndRelease (페이지집합)
WHILE 페이지집합 = 공집합 DO
Pin (페이지집합);
wome pages상에서 수행;
Unpin (PagesDone);
MakeCompensationPages (PagesDone)
OD.
일부 페이지 교체 수단은 색 감지가 가능하다. 컴퓨터 메모리 관리 기술분야의 당업자에게 잘 알려진 색이라는 "용어"는 메모리 주소지정 방식(memory addressing scheme)에서 페이지 번호 중 최하위 비트들(lower most bits)을 말한다. 색 감지가능 페이지 교체 수단에서 명확한 보상을 위해서는 색이 보존되어야 한다. 즉 처음 선정된 페이지와 관련 보상 페이지가 동일한 색을 가져야 한다.
간단한 해결책으로는 c 색에 대한 보상 문제를 c 동일 색 문제로 분할하는 것이다. 예를 들어, 하나의 해결책으로는 n, k, 및 x를 n/c, k/c, 및 x/c로 교체한 후, 한 색이 x/c 보상 페이지를 사용하여 보상될 수 있는 확률로서 P(r)을 산출하는 것이 있다. 따라서, 색이 모두 보상될 수 있는 확률은 P(r)C이다. 상기 최후로 산출된 멱승(exponentiation)을 얻기 위해서는 비교적 많은 보상 페이지가 요구된다. [표 5]에는 16 색에 대한 결과가 예시된다.
[표 5] 16 색, C99%에서의 단순 색 보존 보상
보다 양호한 해결책으로는 색 보존 보상(color-preserving compensation)에 대한 본 발명에 의해 제공된다. 특히, 본 발명은 다음과 같은 개념에 기초하는 색 보존 풀 보상 기술(color-preserving pool compensation technique)을 제공한다.
1. 페이저가 애플리케이션 A용 페이지를 보상해야 하는 경우 페이저는 XA대신에 중앙 보상 풀(central compensation pool)로부터 정확한 색을 갖는 보상 페이지를 선정한다. 그후 페이저는 XA로부터 페이지를 제거시킨 후 중앙 풀에 추가한다. XA로부터 제거시 페이저는 중앙 풀 내에서 불충분하게 표시된 색을 갖는 페이지, 즉 보상용으로 방금 사용된 색이 반드시 아니어도 좋은 색을 갖는 페이지를 선정한다.
2. 애플리케이션이 자신의 XA용 신규 보상 페이지를 할당할 때마다 페이저는 색이 중앙 풀 내에서 로우 상태(low)인지를 검사한 후 그러한 색을 갖는 페이지를 할당하려고 시도한다. 얼마간의 시간이 지난 후, 이러한 페이지는 중앙 풀에서 나타나고, 로우 상태의 색으로 가득 찰 것이다. 따라서, 완충방식(buffering)으로 인해 색 사용 보상이 해결된다.
이하 색 보상은 본 발명의 제4 실시예가 도시된 도 17 내지 도 19를 참조하여 기술된다. 제4 실시예는 보상 프로세스 내에 페이지 채색 방식(page coloring scheme)을 도입한다. 다른 실시예를 참조하여 기술되고 도 17에 예시된 바와 같이, 애플리케이션은 페이지(1750)를 피닝하고 보상 페이지(1760)를 제공한다. 피닝된 페이지(1750)와 제공된 보상 페이지(1760)는 보상되지 않은 상태(uncompensated)의 집합이고, 제공된 보상 페이지(1760)는 애플리케이션과 관련되는 보상 집합(1780) 내에 삽입된다. 또한, 제4 실시예는 애플리케이션과 관련된 적어도 하나의 보상 풀(1785)을 포함한다. 보상 풀(1785)에는 또 다른 보상 페이지(1765) 집합이 미리 적재된다.
도 18 및 도 19에 예시된 바와 같이, 보상 선택기(140)는 항상 선정된 페이지와 동일한 색을 갖는 보상 페이지를 선택하려고 한다. 따라서, 보상 선택기(140)는 보상 풀(1785)로부터 제1 선택 페이지(1910) 및 보상 집합(1780)으로부터 제2 선택 페이지(1912)와 같이 보상중인 페이지(1990)를 선택할 수 있다. 두번째 선택의 경우, 보상 선택기(140)는 보상 풀(1785) 내에서 페이지들의 색 분배가 균형을 이루도록 하는 제2 선택 페이지(1912)를 찾으려고 할 것이다. 제1 선택 페이지(1910)는 보상 풀(1785)로부터 제거되어 보상 페이지(1990)로써 사용된다. 제2 선택 페이지(1912)는 보상 집합(1780)으로부터 제거된 후 보상 풀(1785)에 추가된다.
본 발명이 바람직한 실시예를 참조하여 특별히 예시되고 기술되었지만, 형태 및 상세 면에서 상기한 개변 및 기타 개변이 본 발명의 본질 및 범위를 벗어남이 없이 이루어질 수 있다는 것을 본 기술분야의 당업자가 이해할 것이다.
본 발명은 소정 페이지를 피닝하고자 하는 애플리케이션이 교체용 치환 페이지를 제공함으로써 메모리 피닝에 대한 동적 스케줄링이 가능해진다.
또한, 피닝된 페이지와 동일한 색을 가진 보상 페이지를 교체용으로 사용함으로써 캐쉬 충돌이 방지되고, 따라서 시스템 성능이 개선될 수 있다.

Claims (28)

  1. 애플리케이션(application)이 매핑된 페이지(mapped page)를 피닝(pinning) 가능하도록 하는 방법에 있어서,
    a) 제한 시간 동안 매핑된 페이지를 피닝하도록 상기 애플리케이션으로부터 요구를 수신하는 단계; 및
    b) 상기 수신 단계에 응답하여, 특정 제한 요건(constraint)을 포함하는 핀 제한 요건(pin constraint)을 복귀시키는 단계
    를 포함하는 매핑된 페이지의 피닝 가능 방법.
  2. 제1항에 있어서,
    상기 수신 단계가 상기 핀 요구와 함께 피닝용 페이지 수를 수신하는 단계를 포함하는 매핑된 페이지의 피닝 가능 방법.
  3. 제1항에 있어서,
    상기 수신 단계가 상기 핀 요구와 함께 피닝될 특정 페이지를 수신하는 단계를 포함하는 매핑된 페이지의 피닝 가능 방법.
  4. 제1항에 있어서,
    상기 수신 단계가 상기 핀 요구와 함께 피닝 시간을 수신하는 단계를 포함하는 매핑된 페이지의 피닝 가능 방법.
  5. 제1항에 있어서,
    상기 복귀 단계가 상기 핀 제한 요건과 함께 피닝용 페이지 수를 지정하는 단계를 포함하는 매핑된 페이지의 피닝 가능 방법.
  6. 제1항에 있어서,
    상기 복귀 단계가 상기 핀 제한 요건과 함께 피닝이 부인된 페이지 수를 지정하는 단계를 포함하는 매핑된 페이지의 피닝 가능 방법.
  7. 제1항에 있어서,
    상기 복귀 단계가 상기 핀 제한 요건과 함께 피닝이 허용되는 페이지 집합을 지정하는 단계를 포함하는 매핑된 페이지의 피닝 가능 방법.
  8. 제1항에 있어서,
    상기 복귀 단계가 상기 핀 제한 요건과 함께 피닝이 부인되는 페이지 집합을 지정하는 단계를 포함하는 매핑된 페이지의 피닝 가능 방법.
  9. 제1항에 있어서,
    상기 복귀 단계가 상기 핀 제한 요건과 함께 피닝이 허용되는 시간을 지정하는 단계를 포함하는 매핑된 페이지의 피닝 가능 방법.
  10. 제1항에 있어서,
    상기 복귀 단계가 상기 피닝 제한 요건과 함께 피닝이 허용되는 페이지 특정 회수(page-specific times)를 지정하는 단계를 포함하는 매핑된 페이지의 피닝 가능 방법.
  11. 제1항에 있어서,
    피닝을 위해 요구된 페이지가 시스템 성능을 저하시키지 않고 피닝될 수 있는 지속시간(duration)을 추정(estimate)하는 단계; 및
    상기 복귀 단계 이전에, 상기 추정된 지속시간에 따라 상기 핀 제한 요건을 선택하는 단계
    를 추가로 포함하는 매핑된 페이지의 피닝 가능 방법.
  12. 제1항에 있어서,
    소정의 시간이 지난 이후 피닝된 임의 페이지를 피닝 해제(unpinning)하는 단계―여기서 피닝 해제 단계는 핀 엔진(pin engine)에 의해 수행됨―를 추가로 포함하는 매핑된 페이지의 피닝 가능 방법.
  13. 제1항에 있어서,
    피닝된 임의 페이지를 피닝 해제하는 단계―여기서 피닝 해제 단계는 상기 애플리케이션에 의해 수행됨―를 추가로 포함하는 매핑된 페이지의 피닝 가능 방법.
  14. 제1항에 있어서,
    교체기(replacer)가 교체(replacement)용 페이지를 선정(picking)하는 경우,
    a) 상기 선정된 교체용 페이지가 피닝이 허용된 페이지인지의 여부를 검사하는 단계;
    b) 상기 선정된 페이지가 피닝이 허용된 페이지인 경우 상기 교체기가 상기 선정된 교체용 페이지를 교체하지 못하도록 하는 단계;
    c) 상기 선정된 페이지가 피닝이 허용된 페이지인 경우 상기 교체기가 교체용으로 다른 페이지를 선정하도록 허가하는 단계; 및
    d) 피닝이 허용되지 않은 페이지를 교체하는 단계
    를 추가로 포함하는 매핑된 페이지의 피닝 가능 방법.
  15. 제1항에 있어서,
    상기 복귀 단계가 상기 핀 요구와 함께 보상 페이지(compensation page)―여기서 보상 페이지는 피닝을 위해 요구되는 페이지 치환용으로 사용됨―를 지정하는 단계를 포함하는 매핑된 페이지의 피닝 가능 방법.
  16. 제15항에 있어서,
    단일 애플리케이션에 의해 제공되는 보상 페이지를 상기 애플리케이션에 대한 보상 집합 내에 모두 입력시키는 단계―여기서 입력 단계는 핀 엔진에 의해 수행됨―를 추가로 포함하고,
    교체 페이지가 교체를 위해 선정되는 경우에는
    a) 상기 선정된 교체 페이지가 피닝이 허용된 페이지인지의 여부를 검사하는 단계; 및
    b) 상기 선정된 교체 페이지가 피닝이 허용된 페이지가 아닌 경우 상기 선정된 교체 페이지를 교체하는 단계
    를 추가로 포함하고,
    상기 선정된 교체 페이지가 피닝이 허용된 페이지인 경우에는
    c) 상기 애플리케이션과 관련된 보상 집합이 비어 있는지의 여부를 검사하는 단계―여기서 검사 단계 c)는
    i) 상기 보상 집합이 비어 있지 않은 경우 상기 보상 집합으로부터 한 페이지를 선택하는 단계;
    ii) 상기 보상 집합이 비어 있지 않은 경우 상기 보상 집합으로부터 선택된 한 페이지를 교체용으로 사용하는 단계;
    iii) 상기 보상 집합이 상기 단계 i)에서 비어 있는 경우 상기 선정된 교체용 페이지를 부인하는 단계; 및
    iv) 상기 보상 집합이 상기 단계 i)에서 비어 있는 경우 다른 교체용 페이지를 제한적으로 선정하는 단계
    를 포함함―
    를 추가로 포함하는
    매핑된 페이지의 피닝 가능 방법.
  17. 제15항에 있어서,
    단일 애플리케이션에 의해 제공되는 보상 페이지를 상기 애플리케이션에 대한 보상 집합 내에 모두 입력시키는 단계―여기서 입력 단계는 핀 엔진에 의해 수행됨―를 추가로 포함하고,
    a) 피닝될 페이지를 모두 표시하고, 초기에 보상 페이지를 보상되지 않은 상태(uncompensated)로 표시하는 단계―여기서 표시 단계는 핀 엔진에 의해 수행됨―;
    b) 선정된 교체용 페이지가 피닝이 허용된 페이지인지의 여부를 검사하는 단계;
    c) 상기 선정된 페이지가 피닝이 허용된 페이지가 아닌 경우 상기 선정된 페이지를 교체하는 단계; 및
    d) 상기 선정된 페이지가 피닝이 허용된 페이지인 경우, 상기 선정된 페이지가 관련 보상중인 페이지를 갖는지의 여부를 검사하는 단계―여기서 검사 단계 d)는
    i) 상기 선정된 페이지가 관련 보상중인 페이지를 갖는 경우 상기 관련 보상중인 페이지를 교체용으로 사용하는 단계를 추가로 포함하고,
    ii) 상기 선정된 페이지가 관련 보상중인 페이지를 갖지 않는 경우, 상기 애플리케이션과 관련된 보상 집합이 비어 있는지의 여부를 검사하는 단계를 추가로 포함하며,
    상기 보상 집합이 비어 있지 않은 경우, 상기 검사 단계 d) ii)는
    aa) 상기 보상 집합에서 한 페이지를 선택하는 단계;
    bb) 상기 선택된 페이지를 상기 보상 집합으로부터 제거하는 단계;
    cc) 보상 페이지로서 상기 선택된 페이지를 상기 선택된 페이지와 연관시키는 단계;
    dd) 상기 선택된 페이지를 보상 상태(compensating)로 만드는 단계; 및
    ee) 상기 선택된 페이지를 교체용으로 사용하는 단계
    를 추가로 포함하고,
    상기 보상 집합이 비어 있는 경우, 상기 검사 단계 d) ii)는
    ff) 처음에 선택된 상기 페이지 교체를 부인하는 단계; 및
    gg) 다른 교체용 페이지를 강제로 선정하는 단계
    를 추가로 포함함―
    를 추가로 포함하는 매핑된 페이지의 피닝 가능 방법.
  18. 제1항에 있어서,
    보상중인 페이지가 선택될 수 있는 적어도 하나의 보상 풀(compensation pool)을 생성하는 단계를 추가로 포함하는 매핑된 페이지의 피닝 가능 방법.
  19. 제1항에 있어서,
    애플리케이션에 의해 피닝된 페이지가 피닝 해제되는 경우,
    보상용으로 사용되지 않은 보상 페이지를 상기 보상 집합으로부터 제거하는 단계; 및
    상기 보상 집합으로부터 제거되는 보상 페이지를 상기 애플리케이션으로 반송하는 단계
    를 추가로 포함하는 매핑된 페이지의 피닝 가능 방법.
  20. 제1항에 있어서,
    애플리케이션에 의해 피닝된 페이지의 부분집합(subset)이 피닝 해제되는 경우,
    보상용으로 사용되지 않은 보상 페이지를 상기 부분집합의 페이지 수와 동일한 수만큼 상기 보상 집합으로부터 제거하는 단계; 및
    상기 보상 집합으로부터 제거되는 보상 페이지를 상기 애플리케이션으로 반송하는 단계
    를 추가로 포함하는 매핑된 페이지의 피닝 가능 방법.
  21. 제1항에 있어서,
    상기 애플리케이션이 피닝 및 피닝 해제 요구에 대해 비동기적으로 상기 보상 페이지를 대응 보상 집합에 추가할 수 있도록 하는 단계를 추가로 포함하는 매핑된 페이지의 피닝 가능 방법.
  22. 제1항에 있어서,
    상기 애플리케이션이 대응 보상 집합으로부터 보상 페이지를 재요청(reclaim)할 수 있도록 하는 단계를 추가로 포함하는 매핑된 페이지의 피닝 가능 방법.
  23. 제1항에 있어서,
    상기 애플리케이션의 피닝 요구가 상기 감소된 보상 집합에 의해 유효하게 남아 있는 경우에만 보상 페이지를 재요청하는 요구를 허용하는 단계; 및
    상기 애플리케이션의 피닝 요구가 상기 감소된 보상 집합에 의해 유효하게 남아 있지 않은 경우 상기 요구를 부인하는 단계
    를 추가로 포함하는 매핑된 페이지의 피닝 가능 방법.
  24. 제1항에 있어서,
    상기 애플리케이션의 피닝 요구가 상기 감소된 보상 집합에 의해 유효하게 남아 있는 경우 보상 페이지를 재요청하는 요구를 허용하는 단계; 및
    상기 애플리케이션의 피닝 요구가 상기 감소된 보상 집합에 의해 유효하게 남아 있지 않은 경우 피닝용으로 허용되는 지속시간을 감소시키는 단계
    를 추가로 포함하는 매핑된 페이지의 피닝 가능 방법.
  25. 제1항에 있어서,
    애플리케이션 식별자(identifier)로부터 상기 애플리케이션과 관련된 대응 보상 집합을 결정하는 단계를 추가로 포함하는 매핑된 페이지의 피닝 가능 방법.
  26. 애플리케이션이 매핑된 페이지를 피닝 가능하도록 하는 방법의 단계들을 수행하도록 머신(machine)에 의해 실행 가능한 인스트럭션(instruction)으로 구성되는 프로그램을 유형적으로 구체화하는 기계 판독가능 프로그램 저장 장치(program storage device)에 있어서,
    상기 방법 단계가
    a) 제한 시간 동안 매핑된 페이지를 피닝하도록 상기 애플리케이션으로부터 요구를 수신하는 단계; 및
    b) 상기 수신 단계에 응답하여, 특정 제한 요건을 포함하는 핀 제한 요건을 복귀시키는 단계
    를 포함하는 프로그램 저장 장치.
  27. 제26항에 있어서,
    상기 방법 단계는 소정 페이지가 피닝될 페이지 대신에 교체용으로 선택되는 보상 집합 내로 보상 페이지를 삽입하는 단계를 추가로 포함하는 프로그램 저장 장치.
  28. 애플리케이션이 페이지화 메모리 시스템(paged memory system)에서 제한 시간 동안 매핑된 페이지를 피닝 가능하도록 하는 시스템에 있어서,
    동적 피닝(dynamic pinning)에 대한 스케줄링(scheduling)을 제어하고, 또한 소정의 표준(criteria)을 기반으로 하며 제한 요건 집합에 종속되는 상기 애플리케이션으로부터의 피닝 요구를 허용하는 핀 엔진(pin engine); 및
    핀 페이지가 피닝된 상태로 남아 있도록 페이지 교체 중에 하나 이상의 핀 페이지를 치환하기 위해 보상 페이지를 선택하는 보상 선택기(compensation selector)
    를 포함하고,
    상기 애플리케이션이 상기 제한 요건 집합에 따라 자신의 페이지를 피닝할 수 있는
    매핑 페이지 피닝 가능 시스템.
KR1019990044742A 1998-11-20 1999-10-15 스케줄 가능한 동적 메모리 피닝 방법 및 장치 KR100333579B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US9/197,028 1998-11-20
US09/197,028 US6347364B1 (en) 1998-11-20 1998-11-20 Schedulable dynamic memory pinning
US09/197,028 1998-11-20

Publications (2)

Publication Number Publication Date
KR20000035022A true KR20000035022A (ko) 2000-06-26
KR100333579B1 KR100333579B1 (ko) 2002-04-22

Family

ID=22727722

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990044742A KR100333579B1 (ko) 1998-11-20 1999-10-15 스케줄 가능한 동적 메모리 피닝 방법 및 장치

Country Status (2)

Country Link
US (1) US6347364B1 (ko)
KR (1) KR100333579B1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658522B1 (en) * 2000-06-16 2003-12-02 Emc Corporation Method to reduce overhead associated with system I/O in a multiprocessor computer system
US6662289B1 (en) * 2001-05-15 2003-12-09 Hewlett-Packard Development Company, Lp. Method and apparatus for direct conveyance of physical addresses from user level code to peripheral devices in virtual memory systems
US6654859B2 (en) * 2001-07-26 2003-11-25 International Business Machines Corporation NUMA page selection using coloring
EP1470476A4 (en) * 2002-01-31 2007-05-30 Arc Int CONFIGURABLE DATA PROCESSOR WITH MULTI-LENGTH INSTRUCTION KIT ARCHITECTURE
CA2419900A1 (en) * 2003-02-26 2004-08-26 Ibm Canada Limited - Ibm Canada Limitee Relocating pages that are pinned in a buffer pool in a database system
US7165147B2 (en) * 2003-07-22 2007-01-16 International Business Machines Corporation Isolated ordered regions (IOR) prefetching and page replacement
CA2547078A1 (en) * 2003-12-16 2005-06-30 Real Enterprise Solutions Development B.V. Memory management in a computer system using different swapping criteria
US8127088B2 (en) * 2005-01-27 2012-02-28 Hewlett-Packard Development Company, L.P. Intelligent cache management
CN101253745B (zh) * 2005-07-18 2011-06-22 博通以色列研发公司 用于透明tcp卸载的方法和系统
US9390031B2 (en) * 2005-12-30 2016-07-12 Intel Corporation Page coloring to associate memory pages with programs
US7873801B2 (en) * 2007-02-01 2011-01-18 Oracle America, Inc. Partitionable accounting of memory utilization
US10061616B2 (en) * 2012-05-30 2018-08-28 Red Hat Israel, Ltd. Host memory locking in virtualized systems with memory overcommit
US9298373B2 (en) 2014-01-13 2016-03-29 International Business Machines Corporation Placement and movement of sub-units of a storage unit in a tiered storage environment

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2699600B2 (ja) * 1990-01-30 1998-01-19 日本電気株式会社 資源の排他制御方式
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
JP2675961B2 (ja) * 1992-05-20 1997-11-12 インターナショナル・ビジネス・マシーンズ・コーポレイション 実記憶のページをロックするための方法
US5408629A (en) * 1992-08-13 1995-04-18 Unisys Corporation Apparatus and method for controlling exclusive access to portions of addressable memory in a multiprocessor system
US5721870A (en) * 1994-05-25 1998-02-24 Nec Corporation Lock control for a shared main storage data processing system
US5659798A (en) * 1996-02-02 1997-08-19 Blumrich; Matthias Augustin Method and system for initiating and loading DMA controller registers by using user-level programs
US5832508A (en) * 1996-09-18 1998-11-03 Sybase, Inc. Method for deallocating a log in database systems
US5983310A (en) * 1997-02-13 1999-11-09 Novell, Inc. Pin management of accelerator for interpretive environments
US5946711A (en) * 1997-05-30 1999-08-31 Oracle Corporation System for locking data in a shared cache

Also Published As

Publication number Publication date
KR100333579B1 (ko) 2002-04-22
US6347364B1 (en) 2002-02-12

Similar Documents

Publication Publication Date Title
US11068301B1 (en) Application hosting in a distributed application execution system
US7830395B2 (en) Virtualization of graphics resources
US7665090B1 (en) System, method, and computer program product for group scheduling of computer resources
US6601083B1 (en) Multitasking data processing system and method of controlling allocation of a shared resource
EP1023661B1 (en) Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system
USRE42726E1 (en) Dynamically modifying the resources of a virtual server
US7839411B2 (en) Virtualization of graphics resources
US20020112102A1 (en) Computer forming logical partitions
US7872656B2 (en) Virtualization of graphics resources
KR100333579B1 (ko) 스케줄 가능한 동적 메모리 피닝 방법 및 장치
US8914582B1 (en) Systems and methods for pinning content in cache
EP1426861A2 (en) Resource management system in user-space
US6209061B1 (en) Integrated hierarchical memory overlay having invariant address space span that inactivates a same address space span in main memory
EP0919927A2 (en) Dynamic memory allocation technique for maintaining an even distribution of cache page addresses within an address space
JPH09101902A (ja) ジョブスケジューリング方式
CN108475197B (zh) 用于嵌套抢占的高速缓存结构
US20060230247A1 (en) Page allocation management for virtual memory
CN118466850A (zh) 一种租户缓冲区管理方法及系统
CN118502938A (zh) 资源分配方法、装置、电子设备及存储介质
Wheeler OS/VS1 concepts and philosophies
EP0919928A2 (en) Memory allocation method and apparatus with an even distribution of cache page addresses within virtual memory regions
JPS63101945A (ja) 主記憶ペ−ジ管理方式

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: 20060310

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee