KR102093523B1 - 순차적인 순서의 스왑 파일을 이용한 작업 세트 스와핑 기법 - Google Patents

순차적인 순서의 스왑 파일을 이용한 작업 세트 스와핑 기법 Download PDF

Info

Publication number
KR102093523B1
KR102093523B1 KR1020147016050A KR20147016050A KR102093523B1 KR 102093523 B1 KR102093523 B1 KR 102093523B1 KR 1020147016050 A KR1020147016050 A KR 1020147016050A KR 20147016050 A KR20147016050 A KR 20147016050A KR 102093523 B1 KR102093523 B1 KR 102093523B1
Authority
KR
South Korea
Prior art keywords
pages
swap
working set
swap file
memory
Prior art date
Application number
KR1020147016050A
Other languages
English (en)
Other versions
KR20140102679A (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 KR20140102679A publication Critical patent/KR20140102679A/ko
Application granted granted Critical
Publication of KR102093523B1 publication Critical patent/KR102093523B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Abstract

기술된 기법들은 페이지들의 큰 기록 및 판독의 사용을 통해 이차 스토리지 내의 순차적인 순서를 가진 위치들로부터 및 이 위치들로 프로세스를 위한 페이지들의 작업 세트로부터 및 이 작업 세트로 메모리 페이지의 효율적인 스와핑을 가능하게 한다. 프로세스의 작업 세트로부터의 페이지들을 이차 스토리지 내로 기록할 때, 페이지들은 가상 어드레스 순서 또는 그 외 다른 순서에 따라 전용 스왑 파일 안의 예약된 인접 위치들로 기록될 수 있다. 이렇게 순차적인 순서를 가진 위치들로의 기록은 크고 순차적인 메모리 블록들로 페이지 클러스터를 판독하는 것을 가능하게 하며, 페이지들을 물리 페이지로 반환하기 위한 더 효율적인 판독 동작을 제공한다.

Description

순차적인 순서의 스왑 파일을 이용한 작업 세트 스와핑 기법{WORKING SET SWAPPING USING A SEQUENTIALLY ORDERED SWAP FILE}
컴퓨팅 시스템은 소프트웨어 프로그램이나 애플리케이션을 포함하는 프로세스를 실행하기 위하여 메인 메모리(종종 물리 메모리라고 지칭됨)를 사용한다. 현대 시스템에서, 이 메인 메모리는 일반적으로 랜덤 액세스 메모리(RAM)와 같은 휘발성 메모리를 포함한다. 운영 시스템(OS)은 프로세스가 물리 메모리 내에서 실행되고 있는 동안에 각각의 프로세스에게 사용할 다수의 메모리 페이지들을 할당할 수 있다. 그렇지만 활성된 프로세스는 시스템에서 이용가능한 것보다 더 많은 물리 메모리를 사용할 수 있다. 이러한 경우, 프로세스 페이지들 모두를 물리 메모리 안에 유지하는 것 대신, 활성된 프로세스에 의해 사용되는 물리 메모리를 보충하기 위해 가상 메모리가 사용될 수 있다.
가상 메모리는 프로세스를 위한 하나 이상의 페이지들을 이차 스토리지(예컨대, 하드 드라이브) 내의 비-휘발성 메모리에 기록(writing)하고, 필요할 때 그 페이지들을 판독(reading)하여 물리 메모리로 이전함으로써 구현될 수 있다. 예를 들어, 데이터가 프로세스에 의해 활성적으로 사용되고 있지 않을 때 그 데이터를 담고 있는 페이지들은 이차 스토리지에 기록될 수 있고 따라서 물리 메모리의 공간을 비울 수 있다. 이러한 물리 메모리와 가상 메모리 사이에서 페이지들을 판독하고 기록하는 프로세스는 일반적으로 페이징(paging)이라고 지칭되며, 페이지들을 기록하기 위한 이차 스토리지 내 공간은 일반적으로 페이지파일(pagefile)이라고 지칭된다. 임의의 프로세스에 대해 이러한 페이징이 발생하는 속도와 효율은 시스템 성능과 사용자 경험에 영향을 미칠 수 있다.
종래 페이징 동작은 현재 활성적인 프로세스의 메모리 요구에 기초하여 물리 메모리에서 이차 스토리지로 개별적인 페이지를 페이지 아웃(page out)하는 경향이 있고, 이것은 이차 스토리지의 파편화(fragmentation)를 초래할 수 있다. 본 출원은, 이차 스토리지 내의 순차적인 순서의 위치들로 또는 이 위치들로부터 페이지들을 대규모로 기록하고 판독하는 것을 이용함으로써, 프로세스를 위한 페이지들의 작업 세트로 및 이 작업세트로부터 하나 이상의 페이지들을 효율적으로 스와핑(swapping)하는 기법들을 기술한다. 기록 및 판독은 순차적인 순서로 및/또는 더 큰 메모리 블록 단위로 수행되는 경우 더 효율적으로 되는 경향이 있기 때문에, 본 명세서에서 기술된 기법들은 스와핑 동작 동안에 물리 메모리 내의 순차적인 순서의 위치들로 및 위치들로부터 대량의 페이지들을 판독하고 기록하는 것을 채용한다. 물리 메모리에서 페이지들을 꺼내 이차 스토리지로 스와핑할 때, 페이지들은 각자의 가상 어드레스 순서에 따라 전용 스왑 파일 내의 예약된, 인접 위치들에 기록될 수 있다. 이러한 기록은 페이지들의 스와핑이 대량으로, 순차적인 순서의 메모리 블록들의 단위로 가능하게 함으로써 더 효율적인 스왑 인(inswapping)을 제공한다.
이 발명의 내용(Summary)은 아래의 발명을 실시하기 위한 구체적인 내용(Detailed Description)에 더 기술되는 개념들을 선별하여 단순화된 형태로 소개하기 위해 제공된다. 이 발명의 내용은 청구된 발명 주제의 주요 특징이나 본질적인 특징을 식별하려고 의도되지 않으며, 또한 청구된 발명 주제의 범위를 제한하기 위해 사용되는 것으로도 의도되지 않는다.
구체적인 설명은 첨부된 도면들을 참조하여 기술된다. 도면들에서, 참조번호의 최좌측 숫자(들)은 그 참조번호가 처음 나타난 도면을 식별한다. 서로 다른 도면들에서 동일한 참조 번호는 유사하거나 동일한 아이템을 지칭한다.
도 1a 및 도 1b는, 실시예들에 따라, 프로세스의 작업 세트들로부터 하나의 스왑 파일의 순차적으로 순서가 매겨진 위치들로 페이지들을 기록하는 예를 도시한다.
도 2는 실시예들에 따라, 예시적인 컴퓨팅 시스템을 도시하는 개략도이다.
도 3은 실시예들에 따라, 예시적인 운영 시스템 컴포넌트들의 개략도이다.
도 4a는 실시예들에 따라, 작업 세트로부터 페이지들을 스와핑 아웃하는 예시적인 프로세스의 흐름도를 도시한다.
도 4b는 실시예들에 따라, 스와핑 아웃된 페이지들을 스왑 파일로 기록하는 예시적인 프로세스의 흐름도를 도시한다.
도 5는 실시예들에 따라, 스왑 파일의 페이지들을 작업 세트로 스와핑하는 예시적인 프로세스의 흐름도를 도시한다.
도 6은 실시예들에 따라, 스왑 파일을 동적으로 관리하는 예시적인 프로세스의 흐름도를 도시한다.
개요
본 문서에서 기술되는 실시예들은 프로세스의 작업 세트에서 이차 스토리지 내의 순차적으로 순서가 매겨진 위치들로 및 이 위치들로부터 큰 메모리 블록들의 기록 및 판독을 이용함으로써 메모리 페이지들의 더 효율적인 스와핑을 가능하게 한다. 랜덤 액세스 메모리(RAM)와 같은 물리 메모리 내에서 실행되는 프로세스는 시스템 상에서 이용가능한 물리 메모리보다 더 많은 메모리를 필요로 할 수 있다. 이러한 경우, 종래 방식으로 구성된 메모리 관리자 또는 그 외 다른 운영 시스템의 컴포넌트는 이차 스토리지 상의 페이지파일 안으로 프로세스를 위한 하나 이상의 메모리 페이지를 기록함으로써 물리 메모리의 일부를 비우기 위한 페이징 동작을 구현할 수 있다. 종래의 페이징에서, 프로세스의 개별적인 페이지들은 필요할 때 비어있는 물리 메모리로 기록될(즉, 페이지 아웃될) 수 있고, 또한 프로세스가 그것들에게 액세스를 하고자 할 때(예컨대, 페이지 폴트(page fault)가 발생할 때) 요구에 따라 물리 메모리로 페이지 백(paged back)될 수 있다. 필요에 따른 이러한 종래의 개별적인 페이지들의 페이징은 종종 요구 페이징(demand paging)이라고 지칭되며, 페이지들이 비-인접 스토리지 공간에 저장되고 어떤 특정한 순서를 가지지 않는, 랜덤하고 작은 이차 스토리지 입력/출력(I/O) 동작들로 이어질 수 있다.
또한, 컴퓨팅 시스템 내의 I/O 동작들(예컨대, 판독들 및 기록들)은 일반적으로 순차적인 순서에 따라 그리고 큰 요청들에 따라 수행되는 것이 더 효율적이다. 예를 들어, 솔리드 스테이트 디스크를 채용하는 시스템에서, 순차적인으로 순서가 매겨진 I/O 동작들은 랜덤한 위치들에 대한 요청과 비교하여 2 내지 3 배의 효율성 이득(efficiency gain)을 얻을 수 있다. 많은 경우에, 더 큰 크기의 순차적인 요청들은 더 작은 크기의 순차적인 요청들에 비교하여 유사한 이득을 산출할 수 있다. 또한, 회전 디스크를 채용하는 시스템들에서, 효율성 이득은 50배나 클 수 있다. 이런 점들을 감안하여, 본 문서에서 기술된 실시예들은 스왑 파일 내의 순차적으로 순서가 매겨진 위치들로 및 그 위치들로부터 더 큰 페이지 클러스터를 판독하고 기록하기 위한 I/O 동작들을 이용함으로써 효율적인 스와핑을 가능하게 한다.
본 문서에서 사용된 바와 같이, 용어 페이지(page)는 프로세스가 실행되고 있는 동안에 프로세스에 의해 사용되는 메모리 블록을 지칭할 수 있다. 프로세스가 활성일 때, 페이지는 프로세스에 의해 액세스가능한 물리 메모리 안에 존재할 수 있다. 운영 시스템(OS)의 메모리 관리자 또는 그 외 다른 컴포넌트는 물리 메모리에서 하나 이상의 페이지를 제거하고 이차 스토리지로 기록할 수 있다. 페이지들은 이차 스토리지의 페이지들을 물리 메모리 안으로 복사함으로써 다시 판독할 수 있다.
하나 이상의 실시예들에서, 페이지들은 프로세스를 위한 비밀 페이지(private page)들을 포함할 수 있다. 본 문서에서 사용되는 바와 같이, 비밀 페이지는 프로세스에게 할당된 힙(heap)과 같이, 특정 프로세스에 의해 소유되거나 전용적으로 사용되며 그 외 다른 프로세스에 의해 사용되지 않는 페이지들을 지칭할 수 있다. 그 외 다른 타입의 페이지는, 파일 매핑(file mapping)과 같이, 다수의 프로세스들에 의해 사용되는 공유가능한 페이지를 포함할 수 있다. 몇몇 실시예들은 비밀 페이지들의 효율적인 스와핑을 지원한다. 더 나아가, 몇몇 실시예들은 또한 페이지파일-기반 공유 페이지들의 스와핑을 지원할 수 있다. 이들 타입의 페이지들은 하나의 단일 위치(예컨대, 하나의 페이지파일)에 저장될 수 있고, 하나의 핸들 또는 포인터에 의해 참조될 수 있다. 프로세스는 페이지파일-기반 공유 페이지의 핸들을 다른 한 프로세스로 전달할 수 있고, 이 페이지는 프로세스가 그것에 대한 핸들을 유지하는 동안 메모리 안에 존재할 수 있다.
본 문서에서 사용된 바와 같이, 용어 작업 세트(working set)는 프로세스를 위한 페이지들의 집합을 지칭할 수 있다. 실시예들은 다양한 타입의 작업 세트들을 지원한다. 예를 들어, 작업 세트는 특정 시간 간격 동안 프로세스에 의해 액세스되거나 및/또는 참조되는 데이터를 위한 페이지들을 포함할 수 있다. 그러한 작업 세트는, 가까운 미래(예컨대, 그 다음 시간 기간 동안)에 프로세스에 의해 액세스될 가능성이 있기 때문에 프로세스에 의한 액세스를 준비하기 위해 물리 메로리 내에 그 페이지들을 유지하는 것이 바람직할 수 있는 페이지들의 집합에 대한 근사(approximation)를 제공할 수 있다. 그렇지만, 실시예들이 이것으로 제한되지 않으며 작업 세트로서 그 외 다른 타입의 페이지들의 콜렉션들을 지원할 수 있다. 예를 들어, 프로세스를 위한 작업 세트는 프로세스가 OS를 통하지 않고 직접 액세스가능한 페이지들일 수 있다.
본 문서에서 사용된 바와 같이, 용어 스왑 파일(swap file)은 이차 스토리지(예컨대, 하드 드라이브) 상에 예약되고 물리 메모리로 또는 그 물리 메모리로부터 페이지들을 스와핑하기 위해 사용되는 공간을 지칭할 수 있다. 몇몇 실시예들에서, 스왑 파일은 종래 페이징 동작을 위해 사용되는 페이지파일과는 별개의 전용 스왑 파일이다. 몇몇 실시예들에서, 스왑 파일은 페이지파일의 일부일 수 있다. 몇몇 실시예들에서, 스왑 파일은 메모리 관리자나 그 외 다른 OS 컴포넌트에 의해 초기화될 수 있고 그것의 크기는 도 6과 관련하여 본 명세서에서 기술되는 바와 같이 동적으로 관리될 수 있다.
실시예들은 프로세스를 위한 작업 세트로부터 페이지들의 스왑 아웃(outswapping)을 제공하고, 작업 세트로부터 스왑 아웃된 하나 이상의 페이지들을 이차 스토리지 내 스왑 파일로 기록하는 것을 제공한다. 위에서 논의된 바와 같이, 실시예들은 큰 클러스터들 내의 페이지들을 스왑 파일 내의 순차적인 순서를 가지는 위치들로 또는 그 위치들로부터 판독 및/또는 기록하는 것을 제공함으로써 효율적인 스와핑을 가능하게 한다. 도 1a 및 도 1b는 하나 이상의 실시예들을 위한 스왑 아웃 및 기록의 예를 도시한다.
도 1a는 하나의 특정 프로세스 즉 프로세스 X의 작업 세트(102), 및 이차 스토리지 내의 스왑 파일(104)을 보여준다. 물리 메모리로부터 작업 세트(102)의 하나 이상의 페이지들을 스왑 아웃하도록 결정될 수 있다. 그런 다음 메모리 관리자와 같은 OS 컴포넌트는, 작업 세트의 비밀 페이지들과 같은, 스와핑 아웃을 위한 후보 페이지들인 작업 세트(102)의 하나 이상의 페이지들을 식별할 수 있다. 식별된 후보 페이지들의 총 크기가 계산될 수 있다. 그러면, 동작(108)에서 스왑 파일(104) 내에 후보 페이지들을 저장하기에 충분한 예약 공간(106)이 준비될 수 있다. 또한, 예약 공간(106) 내에 각각의 후보 페이지를 위한 위치가 예약될 수 있고, 이 위치들은 후보 페이지들의 가상 어드레스 순서에 따라 순차적인 순서를 가진다. 이 시점에서, 몇몇 실시예들에서 설사 아무런 후보 페이지들이 스왑 파일 내에 기록되지 않았다고 하더라도 후보 페이지들은 스왑 아웃되었다고 말해질 수 있다.
도 1b는 작업 세트(102) 내의 하나 이상의 후보 페이지들(110)을 도시한다. 하나 이상의 기록 동작들(112)에서, 하나 이상의 후보 페이지들(110)이 예약 공간(106)으로 기록된다. 도 1b에 도시된 바와 같이, 각각의 기록된 후보 페이지는 각자의 특정 예약 위치로 기록될 수 있다. 몇몇 실시예들에서, 비록 후보 페이지들(110)이 작업 세트 내에서는 비-인접적일 수 있지만, 이들은 도 1b에 도시된 바와 같이, 스왑 파일 내의 인접 위치들로 기록된다. 인접적이고, 순차적인 순서를 가진, 예약 공간(106)에 후보 페이지들을 기록하는 것은, 후속적인 스왑 인(inswapping) 동작 동안 작업 세트(102) 안으로 페이지들을 다시 판독할 때, 크고, 순차적으로 순서를 가진 스왑 파일 블록에 대한 후속적인 판독 동작을 가능하게 한다. 따라서, 몇몇 실시예들에서 후보 페이지들을 스왑 파일 내의 순차적인 순서를 가진 위치들로 기록하는 것은 크고 및/또는 순차적인 순서를 가진 효율적인 미래의 판독을 가능하게 한다. 페이지들의 스왑 아웃 및 기록은 도 4와 관련하여 더 상세히 기술된다. 실시예들은 스왑 파일로부터 작업 세트로 페이지들의 판독(즉, 프로세스에 의한 사용을 위해 물리 메모리로 페이지들을 반환)을 포함하는 페이지들의 스왑 인을 더 제공한다. 페이지들의 스왑 인은 도 5와 관련하여 더 상세히 기술된다.
몇몇 실시예에서, 프로세스의 작업 세트로부터 하나 이상의 페이지들을 스왑 아웃하고 제거하는 결정은, 다양한 조건들에 기초하여, OS의 정책 관리자 또는 그 외 다른 컴포넌트에 의해 이루어질 수 있다. 예를 들어, 임의의 프로세스가 일시정지되거나, 비활성이거나, 또는 몇몇 이유 때문에 컴퓨터 장치 상의 다른 활성 프로세스들보다 덜 활성(예컨대, 더 적은 수의 페이지들을 액세스하는)적이라고 결정될 수 있다. 그러한 경우, 그 프로세스의 작업 세트의 일부 또는 모두는 그 외 다른 프로세스들에 의한 사용을 위하여 더 많은 물리 메모리를 비워주기 위하여 작업 세트로부터 제거될 수 있다. 그렇지만, 원활한 사용자 경험을 위하여, 그 프로세스가 신속하게 활성으로 되도록 스왑 인 동안 가능한한 효율적으로 페이지들을 판독하여 작업 세트로 반환하는 것이 바람직할 수 있다. 크고 및/또는 순차적인 I/O 동작들의 사용을 통한 효율적인 스와핑은 프로세스의 신속한 재활성화를 가능하게 할 수 있고 따라서 활성 프로세스들 사이를 스위칭하는 컴퓨팅 장치의 향상된 성능을 제공한다.
예시적인 컴퓨팅 장치 아키텍처
도 2는 실시예들이 동작할 수 있는 예시적인 컴퓨터 시스템 아키텍처를 위한 도면을 도시한다. 도시된 바와 같이, 컴퓨팅 시스템(200)은 프로세싱 유닛(202)을 포함한다. 프로세싱 유닛(202)은 다수의 프로세싱 유닛들을 포함할 수 있으며, 하드웨어, 소프트웨어, 또는 이것들의 임의의 조합으로서 구현될 수 있다. 프로세싱 유닛(202)은 하나 이상의 프로세서들을 포함할 수 있다. 본 문서에서 사용된 바와 같이, 프로세서는 하드웨어 컴포넌트를 지칭한다. 프로세싱 유닛(202)은 본 문서에서 기술된 다양한 기능들을 수행하도록 임의의 적절한 프로그래밍 언어로 작성된 컴퓨터-실행가능, 프로세서-실행가능, 및/또는 기계-실행가능 인스트럭션을 포함할 수 있다.
컴퓨팅 장치(200)는 시스템 메모리(204)를 더 포함하며, 이는 랜덤 액세스 메모리(RAM)(206), 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM), 및 기타 등등과 같은 휘발성 메모리를 포함할 수 있다. RAM(206)은 하나 이상의 실행 OS(208), 및 프로세싱 유닛(202)에 의해 로딩가능하고 실행가능한 컴포넌트, 프로그램, 또는 애플리케이션을 포함하는 하나 이상의 실행 프로세스들(210)를 포함한다. 따라서, 몇몇 실시예들에서, RAM(206)은 OS(208) 또는 프로세스들(210)이 실행되는 물리 메모리를 포함할 수 있다.
시스템 메모리(204)는 판독-전용 메모리(ROM), 플래시 메모리, 및 기타 등등과 같은 비-휘발성 메모리를 더 포함할 수 있다. 도시된 바와 같이, ROM(212)은 컴퓨팅 시스템(200)을 부팅하기 위해 사용되는 BIOS(Basic Input/Output System)(214)를 포함할 수 있다. 도시되어 있지는 않지만, 시스템 메모리(204)는 운영 시스템(들)(208) 및/또는 프로세스들(210)이 각자의 실행 동안에 의해 생성된 및/또는 채용된 프로그램 또는 컴포넌트 데이터를 더 저장할 수 있다. 시스템 메모리(204)는 또한 캐시 메모리를 포함할 수 있다.
도 2에 도시된 바와 같이, 컴퓨팅 장치(200)는 또한, 자기 디스크 스토리지, 광 디스크 스토리지, 테이프 스토리지, 및 기타 등등을 포함하지만 이들로 제한되는 것이 아닌, 비-탈거가능 스토리지(230) 및/또는 탈거가능 스토리지(234)를 포함할 수 있다. 디스크 드라이브 및 연관된 컴퓨터-판독가능 매체는 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈, 및 컴퓨팅 시스템(200)의 동작을 위한 그 외 다른 데이터의 비-휘발성 스토리지를 제공할 수 있다. 더 나아가, 비-탈거가능 스토리지(230)는 하드 드라이브(232)를 더 포함할 수 있다. 몇몇 실시예들에서, 하드 드라이브(232)는 본 문서에서 기술된 스와핑 동작에서 사용되는 이차 스토리지를 제공할 수 있다. 몇몇 실시예들에서, 하드 드라이브(232)는 본 문서에서 기술된 스와핑 동작에서 사용하는 이차 스토리지를 제공할 수 있다.
일반적으로, 컴퓨터-판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함한다.
컴퓨터 저장 매체는 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈, 및 기타 등등과 같은 정보의 스토리지를 위한 임의의 방법이나 기술로 구현되는 휘발성 및 비-휘발성, 탈거가능 및 비-탈거가능 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, 소거가능 프로그래머블 판독-전용 메모리(EEPROM), SRAM, DRAM, 플래시 메모리 또는 그 외 다른 메모리 기술, 컴팩 디스크 판독-전용 메모리(CD-ROM), 디지털 다기능 디스크(DVD) 또는 그 외 다른 광 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 그 외 다른 자기 스토리지 장치, 또는 컴퓨팅 장치에 의한 액세스을 위해 정보를 저장하기 위해 사용될 수 있는 임의의 그 외 다른 비-전송(non-transmission) 매체를 포함하지만, 이들로만 제한되는 것은 아니다.
대조적으로, 통신 매체는 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈, 또는 그 외 다른 데이터를, 반송파 또는 그 외 다른 전송 메커니즘과 같이, 변조된 데이터 신호로 구현할 수 있다. 본 문서에서 정의된 바와 같이, 컴퓨터 저장 매체는 통신 매체를 포함하지 않는다.
컴퓨팅 시스템(200)은, 키보드, 마우스, 펜, 게임 컨트롤러, 음성 인식을 위한 음성 입력 장치, 터치 입력 장치, 및 기타 등등을 포함하지만 이들로만 제한되는 것은 아닌 입력 장치(들)(236)을 포함할 수 있다. 컴퓨팅 시스템(200)은, 디스플레이, 프린터, 오디오 스피커, 촉각 출력기(haptic output), 및 기타 등등을 포함하지만 이들로만 제한되는 것은 아닌 출력 장치(들)(238)을 더 포함할 수 있다. 컴퓨팅 시스템(200)은 컴퓨팅 시스템(200)으로 하여금 하나 이상의 통신 네트워크를 통해 이용가능한 클라이언트 장치, 서버 장치, 데이터베이스, 및/또는 그 외 다른 네트워크 장치를 포함하는 그 외 다른 컴퓨팅 장치들(242)과 통신하도록 허용하는 통신 연결(들)(240)을 더 포함할 수 있다.
도 3은 실시예들에 따른 컴퓨팅 시스템(200) 및 OS(208)의 예시적인 도면을 제공한다. 도시된 바와 같이, 몇몇 실시예들에서, OS(208)는 정책 관리자(302) 및 메모리 관리자(304)와 같은 하나 이상의 컴포넌트들을 포함한다. 몇몇 실시예들에서, 정책 관리자(302)는 컴퓨팅 시스템(200)의 물리 메모리에서 실행중인 프로세스를 위한 작업 세트로부터 페이지들이 스왑 아웃되어야 하는 때 또는 스왑 인되어야 하는 때를 결정한다. 몇몇 실시예들에서, 정책 관리자(304)는 프로세스들이 다양한 조건들에 따라 일시정지되어야 할 때, 재활성화되어야 할 때, 및/또는 종료되어야 할 때를 결정하는 OS(208)를 위한 프로세스 수명 관리자로서 기술될 수 있다.
도 3에서 도시된 바와 같이, OS(208)는 예를 들어 컴퓨팅 시스템(200)의 통신 버스를 통해 하드 드라이브(232) 및 RAM(206)과 소통할 수 있다. 하드 드라이브(232)는 페이징 또는 스와핑 동작들에서 OS(208)에 의한 사용을 위해 이차 스토리지를 포함할 수 있다. 몇몇 실시예들에서, 하드 드라이브(232)는 하나 이상의 페이지파일(318) 및/또는 하나 이상의 스왑 파일(320)을 포함한다. 몇몇 실시예들에서, 페이지파일(들)(318) 및/또는 스왑 파일(들)(320)은 페이징 또는 스와핑 동작들에서의 사용을 위해 메모리 관리자(304)에 의해 초기화된다. 도시된 예에서, 스왑 파일(들)(320)은 페이지파일(들)(318)과 분리되어 있다. 하지만, 몇몇 실시예들에서 스왑 파일(들)(320)은 페이지파일(들)(318)의 일부일 수 있다. RAM(206)은 프로세스들이 실행되고 있는 물리 메모리를 포함할 수 있고, 또한 그러한 프로세스들을 위한 하나 이상의 작업 세트들을 포함할 수 있다.
더 나아가, 메모리 관리자(304)는 본 문서에서 기술되는 바와 같이 페이지 스와핑을 위한 동작들을 수행하기 위해 동작하는 하나 이상의 컴포넌트들을 포함할 수 있다. 몇몇 실시예들에서, 메모리 관리자(304)는 페이징 동작을 위해 물리 메모리 내에 있거나 또는 페이지파일 내에 있는 각 페이지의 위치로 가상 어드레스를 매핑하는 페이지 테이블(306)을 포함한다. 몇몇 실시예들은 (도 4a를 참조하여 아래에서 더 기술되는 바와 같이) 프로세스를 위한 작업 세트에서 후보 페이지들이 스왑 아웃된 때 스왑 파일 내의 후보 페이지들의 예약 위치들을 위한 정보 저장을 위해 페이지 테이블(306)을 더 채용할 수 있다. 몇몇 실시예들에서, 스왑 파일 내에서 공간의 예약은 2011년 3월 7일에 출원되고 "페이지파일 예약(Pagefile Reservations)"이라는 명칭의 미국 특허출원 시리얼 번호 제13/042,128호에서 기술된 바와 같이 진행될 수 있다.
메모리 관리자(304)는 또한 수정 리스트(308) 및/또는 대기 리스트(310)를 포함할 수 있다. 몇몇 실시예들에서, 후보 페이지들이 작업 세트로부터 스왑 아웃되고 스왑 파일 내에서 이들을 위치들이 예약된 이후, 나중의 어떤 시점에 이들 후보 페이지들은 작업 세트 내에서 제거되고 기록기(writer)(예컨대, 페이지 기록기(312))에 의해 기록될 수정 리스트(308) 상에 배치될 수 있다. 그런 다음, 각각의 페이지가 스왑 파일(320)로 기록될 때, 페이지에 대한 어드레스 정보는 수정 리스트(308)에서 대기 리스트(310)로 이동될 수 있다. 몇몇 실시예들에서, 대기 리스트(310)는 비록 스왑 파일에 기록되었음에도 아직 물리 메모리에서 제거되지 아니한 페이지들을 추적한다. 그러한 경우, 만약 프로세스가 이들 페이지들을 액세스하고자 하다면 여전히 이들 페이지들은 다시 스왑 인될 필요없이 물리 메모리에서 직접 액세스될 수 있다. 그렇지만, 만약 메모리 관리자(304)가 그 외 다른 프로세스들을 위해 더 많은 물리 메모리의 페이지들을 요구한다면, 메모리 관리자는 대기 리스트 상에 있는 그 페이지들을 할당할 수 있다. 몇몇 실시예들에서, 메모리 관리자(304)는 또한 작업 세트(들)(322)로부터의 페이지들을 페이지파일(들)(318) 및/또는 스왑 파일(들)(320)로 기록(예컨대, 페이지들을 스왑 아웃)하도록 및/또는 다시 페이지들은 작업 세트(들)(322)로 판독(예컨대, 페이지들을 스왑 인)하도록 동작하는 페이지 기록기(312)를 포함한다.
예시적인 프로세스
도 4a, 도 4b, 도 5 및 도 6은 다양한 실시예들에 따른 예시적인 프로세스들을 보여주는 흐름도들을 도시한다. 이들 프로세스의 동작은 개별적인 블록들로 도시되며 이들 블록들을 참조하여 요약된다. 프로세스들은 논리적인 흐름도로서 도시되며, 프로세스들의 각각의 동작은 하드웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있는 하나 이상의 동작들을 나타낼 수 있다. 소프트웨어의 맥락에서, 동작들은, 하나 이상의 프로세서들에 의해 실행되면, 하나 이상의 프로세서들이 언급된 동작들을 수행할 수 있도록, 하나 이상의 컴퓨터 저장 매체 상에 저장된 컴퓨터-실행가능 인스트럭션을 나타낸다. 일반적으로, 컴퓨터-실행가능 인스트럭션은 특정 기능을 수행하거나 특정한 추상적인 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 모듈, 컴포넌트, 데이터 구조, 및 기타 등등을 포함한다. 동작들이 기술되어 있는 순서는 제한으로 간주되도록 의도되지 않으며, 기술된 동작들의 임의 수는 임의의 순서로 결합되거나, 다수의 서브-동작들로 분할되거나, 및/또는 기술된 프로세스들을 구현하도록 동시에 실행될 수 있다.
도 4a는 실시예들에 따라 작업 세트로부터 페이지들을 스왑 아웃하는 예시적인 프로세스를 도시한다. 이 스왑 아웃 프로세스는, 메모리 관리자(304) 또는 정책 관리자(302)와 같은, OS(208)의 하나 이상의 컴포넌트들에 의해 수행될 수 있다. 402에서, 프로세스의 작업 세트로부터 스왑 파일로 하나 이상의 페이지들이 스왑 아웃되도록 결정된다. 몇몇 실시예들에서, 이 결정은 다양한 기준에 따라 정책 관리자(302)에 의해 이루어질 수 있다. 스왑 아웃 결정은, 프로세스가 비활성 또는 일시 중지라는 결정, 프로세스와 연관된 하나 이상의 스레드들이 특정 시간 기간 동안 활성이 아니라는 결정, 프로세스가 일정 기간의 시간 동안 백그라운드에 있었다는 결정, 프로세스가 일정 기간의 시간 동안 특정 수의 페이지들을 사용하지 않았다는 결정, 또는 컴퓨팅 시스템이 전체적으로 일시 정지 및/또는 비활성이라는 결정에 기초될 수 있다.
일단 스왑 아웃 결정이 이루어지면, 404에서 프로세스의 작업 세트로부터 스와핑을 위해 하나 이상의 후보 페이지(들)이 식별된다. 몇몇 실시예들에서, 메모리 관리자는 작업 세트의 각 페이지를 분석하고 또한 각 페이지가 특정 기준에 기초하여 스왑 아웃 후보인지 여부를 결정할 것이다. 몇몇 실시예들에서, 스왑 아웃 후보들은 작업 세트 내의 비밀 페이지들 및/또는 페이지파일-기반 공유 페이지들을 포함할 수 있다. 몇몇 실시예들에서, 후보 페이지들은 그들 페이지가 깨끗한지 여부, 즉 페이지파일로 기록되었으나 그런 다음 수정되지 아니하였고, 따라서 물리 메모리에 있는 페이지의 현재 버전이 페이지파일 내에 있는 페이지와 동일한 파일들인지 여부에 기초하여 식별될 수 있다. 오염된 페이지들은 페이지파일에 기록된 이후 변경되었을 수 있는, 또는 아직 페이지파일로 기록되지 아니한 페이지들이다. 또한, 몇몇 실시예들에서, 페이지가 스왑 아웃 후보인지 여부를 결정할 때 페이지가 메모리에 묶여(locked) 있는지 아닌지가 고려될 수 있다.
406에서 식별된 후보 페이지들의 계산된 총 크기에 기초하여 스왑 파일 내의 공간(예컨대, 예약 공간(106))이 예약된다. 408에서, 각 후보 페이지에 대해 스왑 파일 내의 예약 공간 안에 하나의 위치가 할당되거나 예약된다. 몇몇 실시예들에서, 위치들은 작업 세트 안의 후보 페이지들의 가상 어드레스들에 따른 가상 어드레스 순서로 예약된다. 따라서, 설사 후보 페이지들이 작업 세트 내에서 비-인접이라고 하더라도 스왑 파일 내에서의 각자의 위치들은 인접적일 수 있다. 스왑 파일 내의 예약 공간 안에서 후보 페이지들의 인접적이고, 순차적인 순서를 가진 위치들은 미래의 스왑 파일로부터의 판독이 크고, 순차적인 순서를 가진 블록들로 수행될 수 있도록 함으로써 효율적인 스왑 인을 제공할 수 있다. 몇몇 실시예들에서, 스왑 파일 내의 공간의 예약은 2011년 3월 7일 출원된 "페이지파일 예약들"이라는 명칭의 미국 특허 출원 시리얼 번호 제13/042,128호에서 기술된 것과 같이 진행될 수 있다. 일단 후보 페이지들을 위한 위치들이 408에서 예약되면, 이들 후보 페이지들은 스왑 아웃되었다고 말할 수 있다. 410에서, 스왑 아웃된 후보 페이지들의 리스트(또는 그 외 다른 데이터 구조)가 갱신된다. 몇몇 실시예들에서, 이 리스트는 408에서 위치들이 예약된 때에 갱신된다.
일단 위치들이 예약되고 리스트가 갱신되면, 어느 정도 시간 이후에, 메모리 관리자는 스왑 아웃된 페이지들 중 일부 또는 전부를 스왑 파일 내의 각자의 예약된 위치들로 기록하는 것을 선택할 수 있다. 도 4b는 실시예들에 따라 스왑 아웃된 페이지들을 기록하는 예시적인 프로세스를 도시한다. 하나 이상의 식별된 후보 페이지들을 스왑 파일에 기록할 것(예컨대, 작업 세트로부터 페이지들을 스왑 아웃하는 것)이 412에서 판단된다. 몇몇 실시예들에서, 이러한 판단은 스왑 아웃(402에서) 결정으로 귀결되는 기준이 여전히 유효한 동안에 특정 문턱 시간 기간이 경과하였다는 결정에 기초하여 이루어질 수 있다. 예를 들어, 프로세스가 여전히 비활성이거나 일시정지된 동안에 특정 시간 기간(예컨대, 5분)이 경과될 수 있다. 일부 실시예들에서, 이러한 판단은 하나 이상의 활성 프로세스에 의해 사용되기 위해 더 많은 물리 메모리가 필요하다는 메모리 관리자에 의한 결정에 기초하여 이루어질 수 있다.
만약 412에서 하나 이상의 후보 페이지들을 스왑 파일로 기록하도록 하는 판단이 이루어지면, 414에서, 기록될 하나 이상의 페이지들은 작업 세트에서 제거될 수 있다. 몇몇 실시예들에서, 모든 후보 페이지들이 제거되고 하나 이상의 기록 동작들에 의해 스왑 파일로 기록된다. 몇몇 실시예들에서, 후보 페이지들의 일부가 제거된다. 몇몇 실시예들에서, 기록된 후보 페이지들은 메모리에 대한 압력에 기초하여(예컨대, 더 많은 물리 메모리에 대한 메모리 관리자의 요구에 기초하여) 결정될 수 있다. 몇몇 실시예들에서, 어느 후보 페이지들이 스왑 아웃될 것인가에 대한 판단은 프로세스에 의해 얼마나 최근에 이들 페이지들이 액세스되었던지에 기초하열 수 있다. 예를 들어, 메모리 관리자는 최근에 조금도 사용되지 않았고 특정 시간 기간에 프로세스에 의해 액세스되지 아니하였던 페이지들을 스왑 아웃하도록 선택할 수 있다.
몇몇 실시예들에서, 후보 페이지들의 제거는 후보 페이지들을 위한 위치들이 스왑 파일에서 예약되어 있었던 순서와 동일한 순서로 작업 세트로부터 이들을 제거함으로써 최적화될 수 있다. 예를 들어, 후보들은 위치들이 가상 어드레스 순서에 따라 예약되었던 경우와 같이 가상 어드레스 주소에 따라 작업 세트로부터 제거될 수 있다. 몇몇 실시예들에서, 작업 세트로부터 후보 페이지들의 제거는 임의적이거나 및/또는 랜덤(즉, 순서에 따르지 않는)일 수 있지만, 그래도 후보 페이지들은 여전히 가상 어드레스 순서에 기초하여 스왑 파일 내의 순차적인 순서를 가진 위치들로 기록된다. 몇몇 실시예들에서, 메모리 관리자가 페이지들을 활성 프로세스들에 의해 사용되도록 요구하기 전까지 이들 페이지들은 물리 메모리 내에서 작업 세트 안에 유지(예컨대, 심지어 이들 페이지들이 스왑 파일로 기록된 이후에도)될 수 있다.
416에서, 후보 페이지들은 스왑 파일로 기록된다. 몇몇 실시예들에서, 후보 페이지들은 각자의 가상 어드레스 순서에 따라(예컨대, 작업 세트 내에서 페이지들의 가상 어드레스에 따라 오름차순으로 또는 내림차순으로) 스왑 파일 내에서 순차적인 순서를 가지는 각자의 예약된 위치들로 기록된다. 또한, 가능한한 큰 메모리 블록들로 기록을 수행하기 위해 후보 페이지들을 클러스터링(clustering)함으로써, 그리고 순차적인 가상 어드레스 순서에 따라 기록 동작을 수행함으로써 기록 동작들 그 자체가 최적화되거나 및/또는 더 효율적으로 수행될 수 있다. 몇몇 실시예들에서, 페이지 기록기(312)는 스왑 파일 내의 각자의 예약된 위치들로 후보 페이지들을 기록하는 기록 동작들을 수행한다. 후보 페이지가 예약 위치를 할당받지 않은 경우, 페이지는 페이지파일로 기록될 수 있다. 몇몇 실시예들에서, 기록된 페이지들의 어드레스들은 스왑 파일로부터 페이지들을 판독하여 가져오기 위해 사용될 데이터 구조로 메모리 관리자에 의해 저장될 수 있다.
몇몇 경우, 412에서 스왑 아웃된 페이지들을 기록하지 않는다는 판단이 이루어질 수 있다. 이러한 경우, 418에서 예약 위치들은 스왑 인(도 5에 기술된 바와 같은)이 발생할 때까지 유지될 수 있다. 몇몇 실시예들에서, 만약 특정 문턱 시간 기간 이후 처음의 스왑 결정(예컨대, 402에서의)으로 귀결되었던 조건들이 더 이상 존재하지 않는다면, 후보 페이지들을 스왑 파일로 기록하지 않는다는 판단이 이루어질 수 있다. 예를 들어, 프로세스는 다시 활성으로 될 수 있거나 또는 더 이상 일지정지 상태가 아닐 수 있다. 그 외 다른 경우, 예를 들어 만약 하나 이상의 후보 페이지들이 프로세스에 의해 액세스된다면, 이들 후보 페이지들이 스왑 파일로 기록되기 전에 페이지들을 스왑 인하는 조건(예컨대, 만약 이들 페이지들이 물리 메모리에서 제거되었다면 페이지 폴트로 귀결될 조건들)이 발생할 수 있다.
몇몇 실시예들은 402에서 스왑 아웃 결정이 이루어진 이후 일정 시간 기간에 걸쳐 작업 세트로부터 페이지들이 제거되는 최적화를 지원한다. 또한 페이지들의 그룹들이 사용 패턴들에 따라 페이지 파일로 스왑 아웃되거나 및/또는 기록 아웃(write out)될 수 있다. 예를 들어, 메모리 관리자는 프로세스에 의해 가장 최근에 액세스된(예컨대, 최근 5초 안에 액세스된) 제 1 페이지 그룹을 스왑 아웃하거나 및/또는 기록할 수 있고, 그런 다음, 일정 시간 기간 이후에 최근 이전에 액세스된(예컨대, 최근 5초와 최근 10초 사이에 액세스된) 제 2 페이지 그룹을 스왑 아웃 및/또는 기록할 수 있다. 몇몇 경우, 이러한 그룹들은 반대로 더 이전에 액세스되었던 것부터 가장 최근에 액세스되었던 것으로 순서가 매겨질 수 있다. 몇몇 실시예들에서, 페이지들의 스왑 아웃 및/또는 기록 아웃은 프로세스 실행의 특정 활동 또는 단계에 기초할 수 있다. 예를 들어, 애플리케이션은 특정 단계에 진입하거나 특정 행동을 수행할 수 있고, 이러한 단계나 행동과 관련된(또는 이런 단계나 행동과 관련없는) 페이지들이 메모리 관리자에 의해 스왑 아웃될 수 있다.
또한 실시예들은 최적화들의 다양한 조합들을 지원한다. 예를 들어, 페이지 그룹들은 스왑 아웃될 수 있고, 그런 다음 유사한 그룹들 또는 상이하게 결정된 그룹들이 스왑 파일로 기록될 수 있다. 다른 예를 들어, 페이지들의 작업 세트 전체가 스왑 아웃될 수 있고, 그런 다음 본 문서에서 기술된 바와 같이 스왑 파일로 기록될 페이지 그룹들이 식별될 수 있다.
더 나아가, 몇몇 실시예들에서 프로세스의 작업 세트로부터 하나 이상의 페이지들을 스왑 아웃하는 것은 현재 상태의 프로세스를 이차 스토리지로 저장하는 것으로서 기술될 수 있는데, 이 경우 메모리 관리자가 스왑 아웃되었던 페이지들을 스왑 인하는 때에 프로세스는 예컨대 일시정지되었던 또는 비활성으로 되었던 상태로 복구된다. 몇몇 실시예들에서 실행 프로세스는 스왑 인되기 전 스왑 아웃되었던 페이지들을 액세스하고자 할 수 있다. 이러한 경우 메모리 관리자는 모든 스왑 아웃된 페이지들을 스왑 인하도록 결정하거나, 액세스하고자 하는 페이지들을 스왑 인하도록 결정하거나, 및/또는 가상 어드레스 공간 내에서 요처된 페이지(들) 근처의 하나 이상의 페이지들을 스왑 인하도록 결정할 수 있다. 이것은 스왑 파일 내에서 스왑 인되는 페이지들을 위한 예약 위치들을 릴리스(release)하는 것을 포함할 수 있다.
도 5는 실시예들에 따라, 이차 스토리지로부터 페이지들을 물리 메모리 내의 프로세스 작업 세트로 스왑 인하는 예시적인 프로세스를 도시한다. 몇몇 실시예들에서, 스왑 인 프로세스는, 메모리 관리자(304) 또는 정책 관리자(302)와 같은, OS(208)의 하나 이상의 컴포넌트들에 의해 수행된다. 502에서 프로세스를 위한 작업 세트로부터 이전에 스왑 아웃되었던 하나 이상의 페이지들을 스왑 인하는 판단 또는 결정이 이루어진다. 몇몇 실시예들에서, 이러한 판단은 정책 관리자(302)에 의해 이루어질 수 있고, 또한 다양한 기준에 기초하여 이루어질 수 있다. 그러한 기준은 프로세스가 더 이상 비활성이거나 일시정지된 상태가 아니라는 것, 또는 프로세스가 물리 메모리 내에 존재하지 아니하는 하나 이상의 페이지를 액세스하려고 한다(예컨대, 페이지 폴트가 발생하였다)는 것을 나타내는 표시를 수신하는 것을 포함할 수 있다. 몇몇 실시예들에서, 기준은 402에서 스왑 아웃 판단으로 귀결되도록 하는 조건들의 중단을 포함할 수 있다.
504에서 하나 이상의 이전에 스압 아웃된 페이지들이 스왑 인을 위해 식별된다. 502에서 스왑 인 판단에 이루어진 때, 하나 이상의 스왑 아웃되었던 페이지들은 더 이상 물리 메모리 내에 존재하지 않을 수 있다. 예를 들어, 메모리 관리자는 그 외 다른 프로세스들을 위해 하나 이상의 스왑 아웃된 페이지들을 사용하였을 수 있다. 따라서, 504에서 스왑 인을 위한 페이지들의 식별은 더 이상 물리 메모리 내에 존재하지 아니하는 스왑 아웃되었던 페이지들을 결정하는 것을 포함할 수 있다. 몇몇 실시예들에서, 스왑 인을 위한 페이지들의 식별은 스왑 아웃되었을 때 메모리 관리자에 의해 데이터 구조 안에 그 어드레스들이 저장되었던 페이지들에 기초할 수 있다. 몇몇 실시예들에서, 하나 이상의 페이지들에 대하여 프로세스에 의한 액세스 시도가 실패한 것(예컨대, 페이지 폴트)은 이들 페이지들이 스왑 인되도록 야기할 수 있다.
506에서 하나 또는 다수의 페이지들이 위에서 도 4b를 참조하여 기술된 바와 같이 이전에 스왑 아웃된 파일들이 스왑 파일로 기록되었던 것으로서 식별되었는지 여부 및 페이지들이 물리 메모리에서 제거되었는지 여부가 결정된다. 몇몇 실시예들에서, 508에서 만약 페이지들이 스왑 파일로 기록되었고 물리 메모리에서 제거되었다면, 스왑 인을 위해 식별된 페이지들은 스왑 파일 내의 각자의 위치들로부터 판독되어 물리 메모리 내에 작업 세트로 반환된다. 몇몇 경우에, 페이지들은 작업 세트에서는 제거되었지만 물리 메모리에서는 아직 제거되지 않을 수 있다(예컨대, 만약 페이지들이 대기 리스트 상에 일시 저장되었다면). 이러한 경우, 이들 일시저장된 페이지들은 대기 리스트와 릴리스된 각자의 예약 위치들로부터 작업 세트로 반환되어 추가될 수 있지만, 스왑 파일로부터 페이지들을 판독할 필요는 없다. 또한, 작업 세트의 페이지들 중 일부는 스왑 아웃 이후 물리 메모리에서 제거된 반면에 나머지 일부는 대기 리스트 상에서 일시저장된 상태로 유지될 수 있다. 이러한 경우 물리 메모리에서 제거된 페이지들은 스왑 파일로부터 판독되어, 일시저장된 페이지들과 함께, 작업 세트로 추가될 수 있다.
몇몇 실시예들에서, 이렇게 페이지들을 판독하는 동작은 프로세스 페이지 폴트일 때 발행되는 판독과 유사하게 진행될 수 있다. 그렇지만, 실시예들은 큰 메모리 블록으로 및/또는 순차적인 가상 어드레스 순서로 이루어지며 따라서 이차 스토리지내의 임의의 위치들로부터 더 작은 블록들을 판독하는 것보다 더 효율적으로 이루어지는 판독을 지원한다. 예를 들어, 페이지들은 스왑 파일 내에 예약된 하나의 인접 블록(또는 몇몇 경우, 아래에서 기술되는 바와 같이 다수의 인접 블록들)에 기록되었고 또한 순차적인 가상 어드레스 순서로 기록되었기 때문에, 다수 페이지들의 클러스터들은 큰 블록들로 및 순차적인 가상 어드레스 순서로 판독됨으로써 더 효율적인 판독 동작을 제공할 수 있다.
몇몇 실시예들에서, 사용자가 이전에 비활성 또는 일시정지된 프로세스가 다시 활성으로 되도록 기다리고 있을 경우(예컨대, 프로세스가 사용자 애플리케이션인 경우와 같이), 스왑 아웃된 페이지들을 판독하여 들이는 동작이 효율적으로 수행되는 것은 시스템 성능 및/또는 유용성을 위해 유리할 수 있다. 이 경우, 몇몇 실시예들은 페이지들은 그것들이 스왑 아웃되기 전에 얼마나 자주 액세스되었는지에 기초한 순서로 물리 메모리로 판독되는 방식의 최적화를 지원할 수 있다. 예를 들어, 작업 세트로부터 페이지들을 스왑 아웃하기 이전에 메모리 관리자는 어느 페이지가 프로세스에 의해 더 자주 액세스되었는지 또는 더 최근에 액세스되었는지를 추적할 수 있고, 이들 페이지들은 다른 페이지보다 더 일찍 스왑될 수 있다.
예를 들어, 첫번째 페이지 그룹이 특정 시간 기간 내(예컨대, 애플리케이션 일시정지 이전 최후 5초 내에)에 액세스되었다고 결정될 수 있고, 두번째 페이지 그룹은그 다음 시간 기간(예컨대, 5초 및 10초 사이)에 액세스되었다고 결정될 수 있고, 세번째 그룹은 그 다음 시간 기간(예컨대, 10초 및 15초 사이)에 액세스되었다고 결정될 수 있고, 및 이하 같은 방식으로 계속 결정될 수 있다. 그런 다음, 페이지들의 스압 인 판단이 이루어지면, 첫번째 그룹은 첫번째로 스왑 인될 수 있고, 두번째 그룹은 첫번째 그룹 이후에 스왑 인될 수 있고, 세번째 그룹은 두번째 그룹 이후에 스왑 인될 수 있고, 이하 같은 방식으로 계속 스왑 인될 수 있다. 스왑 아웃되기 전에 프로세스에 의해 가장 최근에 액세스된 페이지들이 첫번째로 스왑 인되는 경우, 이러한 최적화는 프로세스가 적어도 부분적으로 활성으로 되고 더 신속하게 사용자에 의해 사용가능하게 되도록 보장할 수 있다.
더 나아가, 몇몇 실시예들은 작업 세트와 관련된 메모리 관리가 스왑 동작 이전에 수행되는 최적화를 지원할 수 있다. 예를 들어, 스왑 아웃 프로세스 동안 메모리 관리자는 주도적으로 작업 세트의 일부 또는 전부를 "에이징(aging)"함으로써 작업 세트 내의 페이지 서브세트가 최근이라고 결정될 수 있다. 그런 다음 이 페이지 서브세트는 스왑 아웃 및/또는 스왑 파일로 기록될 수 있다. 스왑 인이 수행될 때, 이것은 모든 메모리 페이지들이 스왑 아웃되지 않았고 따라서 적은 수의 페이지들만 스왑 파일로부터 판독될 필요가 있을 경우 일부 최적화를 달성할 수 있다.
510에서 스왑 파일 내에서 스왑 아웃된 페이지들을 위해 예약된 위치들은 릴리스된다. 몇몇 실시예들에서, 예약 위치들의 릴리스는 또한 506에서 스왑 인될 페이지들이 스왑 파일 내의 각자의 예약 위치로 기록되지 않았다고 결정된 경우에 수행될 수 있다.
도 6은 실시예들에 따라 스왑 파일의 동적으로 관리하는 예시적인 프로세스를 도시한다. 몇몇 실시예들에서, 이 프로세스는 메모리 관리자(304)와 같은 OS(208)의 컴포넌트에 의해 실행된다. 602에서 스왑 파일이 초기화된다. 몇몇 실시예들에서, 컴퓨팅 시스템이 부팅될 때 스왑 파일은 미리 결정된 크기(예컨대, 256 MB)를 가지고 초기화된다. 그 외 다른 실시예들에서, 스왑 파일은 메모리 관리자가 스와핑 동작이 발생할 것으로 결정한 때에 초기화되고, 스왑될 페이지들을 수용하기에 충분한 초기 크기를 가지고 초기화될 수 있다.
메모리 관리자(또는 다른 OS 컴포넌트)가 동작할 때, 604에서, 도 4a와 관련하여 위에서 기술된 바와 같이, 물리 메모리 내의 프로세스 실행의 작업 세트로부터 하나 이상의 페이지들을 스왑 아웃하는 결정이 이루어질 수 있다. 그런 다음 606에서 만약 스왑 아웃된 페이지들이 스왑 파일로 기록된다면 이들을 수용하기 위해 스왑 파일 내에 추가 공간이 필요한지 여부에 대한 결정이 이루어질 수 있다. 만약 더 많은 공간이 필요하다면, 608에서 스왑 파일 크기가 동적으로 증가될 수 있다. 몇몇 실시예들에서, 스왑 파일 크기 증가 판단은 메모리 관리자가 주어진 현재 스왑 파일 크기로는 수용될 수 없는 페이지 스와핑을 위한 요청을 수신하는 것에 기초할 수 있다. 더 나아가, 몇몇 실시예들은 최대 크기의 스왑 파일을 제공할 수 있다. 몇몇 실시예들에서, 스왑 파일의 초기 크기 및/또는 그 크기의 동적 변화는 적어도 부분적으로 시스템 상에서 실행되고 있는 프로세스들의 크기 및/또는 타입에 의해 결정될 수 있다.
610에서 스왑 아웃 동작 및/또는 기록 동작이 위에 기술된 바와 같이 수행된다. 어떤 시점 이후에 612에서 하나 이상의 스왑 아웃되었던 페이지들을 스왑 인하는 결정이 이루어지고, 614에서 스왑 파일 내의 하나 이상의 페이지들을 위한 예약 위치들이 릴리스된다. 스왑 인 및 예약 위치들의 릴리스는 도 5와 관련하여 위에서 기술된 바와 같이 진행될 수 있다. 616에서 예를 들어 612의 스왑 인 동작 및 614의 예약 위치들 릴리스에 이어서 스왑 파일에 대해 더 적은 공간이 필요하다는 판단이 이루어질 수 있다. 이러한 경우, 618에서 스왑 파일 크기는 동적으로 감소될 수 있다. 몇몇 실시예들에서, 스왑 파일 크기를 감소하라는 판단은 하나 이상의 프로세스들을 위한 페이지들의 스왑 인 때문에 스왑 파일 공간을 위한 필요성이 감소된다는 결정에 기초할 수 있다. 몇몇 실시예들에서, 스왑 파일 내의 빈 공간은 메모리 관리자에 의해 스왑 아웃된 페이지들의 후속적인 기록을 위해 재사용될 수 있고, 파편화(fragmentation)를 최소화하는 방식(예컨대, 바람직하게는 페이지들이 더 크고, 더 인접 블록들로 및/또는 순차적인 가상 어드레스 순서로 저장되는 것과 같은)으로 메모리 관리자는 스왑 파일 공간을 재사용할 수 있다.
실시예들이 스왑 동작을 순차적인 순서의 페이지 클러스터의 큰 판독 및 기록 형태로 수행하고자 하기 때문에, 이차 스토리지 내에서 스왑 파일 자체가 덜 파편화되고 더 인접적으로 존재하는 것이 유리할 수 있다. 이를 위해, 몇몇 실시예들에서, 메모리 관리자가 더 많은 스왑 파일 공간이 필요하다고 결정한 때에 메모리 관리자는 스왑 파일이 감소하는 양(예컨대, 64 MB)보다 더 큰 특정 블록 크기(예컨대, 128 MB)로 운영 시스템으로부터 추가 공간을 요청할 수 있다. 더 큰 블록으로 추가 공간을 요청함으로써, 실시예들은 이차 스토리지 내의 인접 공간(또는 더 적은 인접 공간 블록들) 내에서 파일 시스템이 요청된 추가 스왑 파일 공간을 발견하고자 시도한 경우 스왑 파일의 외부 파편화의 가능성을 감소시킬 수 있다.
더 나아가, 인접 스왑 파일이 바람직한 경우, 실시예들은 도 3에 도시된 바와 같은 페이지파일과는 별개인 스왑 파일을 채용한다. 별개의 전용 스왑 파일은 스왑 파일이 하나의 단일한 인접 블록(또는 더 적은 수의 인접 블록들)으로서 생성 및/또는 확장되는 가능성을 증가시킬 수 있다. 비록 몇몇 실시예들이 본 문서에서 기술된 스와핑 동작을 위해 페이지파일의 사용을 지원하지만, 이러한 시나리오는 스왑 파일이 외부적으로 파편화될 수 있는 가능성을 증가시킬 수 있고 따라서 페이지파일을 채용하는 종래의 페이징 방법들의 임의적이고 비-인접 방법의 경우 크고, 순차적인 I/O 동작들과는 잘 어울리지 않는다. 그러므로 실시예들은 별개의 스왑 파일을 사용으로부터 더 크고 더 순차적인 I/O 동작들을 위한 증가된 기회가 있는 경우 I/O 동작들의 효율성을 증가시키기 위해 별개의 전용 스왑 파일의 사용을 지원한다.
또한 실시예들은 이차 스토리지 내에서 별개이지만 비-인접적이고, 특정 수의 세그먼트들로 분산된 스왑 파일을 지원할 수 있다. 몇몇 실시예들은 스왑 파일이 과도하게 비-인접이지 않다는 것을 보장하기 위해 그러한 세그먼트들의 최대 수(예컨대, 5)를 지원할 수 있다. 몇몇 실시예들에서, 컴퓨팅 시스템 상의 모든 프로세스들로부터의 페이지들을 스와핑하기 위해 하나의 단일 스왑 파일이 채용될 수 있다. 다른 실시예들에서, 컴퓨팅 시스템 상의 개별 프로세스들 또는 프로세스 그룹들에 대해 별개의 스왑 파일들이 사용될 수 있다.
결론
비록 기법들이 구조적인 특징 및/또는 방법론적 액션에 특정한 언어도 기술되었으나, 첨부된 청구범위는 기술된 특정 특징들이나 액션들로 반드시 제한되는 것이 아님이 이해되어야 한다. 그보다 특정 특징들 및 액션들은 그러한 기법들의 예시적인 구현으로서 개시된다.

Claims (20)

  1. 컴퓨터-구현 방법으로서,
    프로세스를 위한 작업 세트로부터 하나 이상의 페이지를 스왑 파일로 스왑 아웃(swap out)하는 결정을 하는 단계와,
    상기 프로세스를 위한 상기 작업 세트로부터 스와핑을 위한 하나 이상의 후보 페이지를 식별하는 단계와,
    이차 스토리지 내의 상기 스왑 파일 내에 공간을 예약하는 단계 - 상기 예약된 공간은 상기 하나 이상의 후보 페이지의 총 크기에 대응함 - 와,
    상기 식별된 후보 페이지 중 하나 이상의 페이지를 상기 스왑 파일에 기록하는 결정을 하는 단계 - 상기 기록하는 결정은 상기 스왑 아웃하는 결정으로 귀결된 기준이 여전히 유효한 동안에 소정 문턱 시간이 경과하였다는 판단에 기초하여 이루어짐 - 와,
    상기 식별된 후보 페이지 중 상기 하나 이상의 페이지를 기록하도록 결정되면, 상기 식별된 후보 페이지 중 기록될 상기 하나 이상의 페이지를 상기 작업 세트로부터 제거하고, 상기 식별된 후보 페이지 중 기록될 상기 하나 이상의 페이지를 상기 스왑 파일 내의 상기 예약된 공간 내의 순차적인 순서의 위치에 기록하는 단계를 포함하는
    컴퓨터-구현 방법.
  2. 제 1 항에 있어서,
    상기 식별된 후보 페이지 중 기록될 상기 하나 이상의 페이지는 상기 하나 이상의 후보 페이지를 위해 상기 스왑 파일내에 예약된 위치의 순서와 일치하는 순서로 상기 작업 세트로부터 제거되는
    컴퓨터-구현 방법.
  3. 제 1 항에 있어서,
    상기 순차적인 순서의 위치는 인접하게 그리고 순차적인 가상 어드레스 순서로 상기 하나 이상의 후보 페이지에 할당되는
    컴퓨터-구현 방법.
  4. 제 1 항에 있어서,
    순차적인 가상 어드레스 순서로 상기 스왑 파일 내의 상기 예약된 공간으로부터 상기 기록된 후보 페이지의 적어도 일부의 클러스터를 상기 프로세스를 위한 상기 작업 세트로 읽어들이는 단계를 더 포함하는
    컴퓨터-구현 방법.
  5. 제 1 항에 있어서,
    상기 위치를 상기 스왑 파일 내에 인접하게 예약하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  6. 제 1 항에 있어서,
    상기 식별된 후보 페이지 중 상기 하나 이상의 페이지를 기록하는 단계는 가상 어드레스 순서로 순차적으로 수행되는
    컴퓨터-구현 방법.
  7. 시스템으로서,
    적어도 하나의 프로세서와,
    메모리와,
    메모리 관리자와,
    정책 관리자를 포함하되,
    상기 정책 관리자는 상기 적어도 하나의 프로세서에 의해 실행되고 또한
    프로세스를 위한 작업 세트로부터 하나 이상의 페이지를 스왑 파일로 스왑 아웃하는 결정을 하도록 동작하며,
    상기 메모리 관리자는 상기 적어도 하나의 프로세서에 의해 실행되고 또한
    상기 메모리에서 실행되는 상기 프로세스를 위한 상기 작업 세트로부터 스와핑을 위한 하나 이상의 후보 페이지를 식별하고,
    상기 시스템의 이차 스토리지 내의 상기 스왑 파일 내의 공간을 예약 - 상기 예약된 공간은 상기 하나 이상의 후보 페이지의 총 크기에 대응함 - 하고,
    상기 식별된 후보 페이지 중 하나 이상의 페이지를 상기 스왑 파일에 기록하는 결정 - 상기 기록하는 결정은 상기 스왑 아웃하는 결정으로 귀결된 기준이 여전히 유효한 동안에 소정 문턱 시간이 경과하였다는 판단에 기초하여 이루어짐 - 을 하고,
    상기 식별된 후보 페이지 중 상기 하나 이상의 페이지를 기록하도록 결정되면, 상기 식별된 후보 페이지 중 기록될 상기 하나 이상의 페이지를 상기 작업 세트로부터 제거하고, 상기 식별된 후보 페이지 중 기록될 상기 하나 이상의 페이지를 상기 스왑 파일 내의 상기 예약된 공간 내의 순차적인 순서의 위치에 기록하도록 동작하는
    시스템.
  8. 제 7 항에 있어서,
    상기 정책 관리자는 또한
    상기 프로세스의 검출된 상태에 기초하여, 상기 프로세스를 위한 상기 작업 세트의 적어도 일부를 스와핑하게 결정하도록 동작하는
    시스템.
  9. 제 7 항에 있어서,
    상기 메모리 관리자는 또한
    순차적인 가상 어드레스 순서로 상기 스왑 파일 내의 상기 예약된 공간으로부터 상기 기록된 하나 이상의 후보 페이지를 상기 프로세스를 위한 상기 작업 세트로 읽어들이도록 동작하는
    시스템.
  10. 인스트럭션을 저장하는 하나 이상의 컴퓨터-판독가능 저장 매체로서, 상기 인스트럭션은 적어도 하나의 프로세서에 의해 실행될 경우, 상기 적어도 하나의 프로세서로 하여금 제 1 항 내지 제 6 항 중 어느 한 항에 의한 방법을 수행하도록 명령하는
    컴퓨터 판독가능 저장 매체.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020147016050A 2011-12-14 2012-12-14 순차적인 순서의 스왑 파일을 이용한 작업 세트 스와핑 기법 KR102093523B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/326,182 2011-12-14
US13/326,182 US8832411B2 (en) 2011-12-14 2011-12-14 Working set swapping using a sequentially ordered swap file
PCT/US2012/069602 WO2013090646A2 (en) 2011-12-14 2012-12-14 Working set swapping using a sequentially ordered swap file

Publications (2)

Publication Number Publication Date
KR20140102679A KR20140102679A (ko) 2014-08-22
KR102093523B1 true KR102093523B1 (ko) 2020-03-25

Family

ID=47968573

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147016050A KR102093523B1 (ko) 2011-12-14 2012-12-14 순차적인 순서의 스왑 파일을 이용한 작업 세트 스와핑 기법

Country Status (12)

Country Link
US (2) US8832411B2 (ko)
EP (1) EP2791806B1 (ko)
JP (1) JP6198226B2 (ko)
KR (1) KR102093523B1 (ko)
CN (1) CN103019948B (ko)
AU (1) AU2012352178B2 (ko)
BR (1) BR112014014274B1 (ko)
CA (1) CA2858109C (ko)
IN (1) IN2014CN04049A (ko)
MX (1) MX348643B (ko)
RU (1) RU2616545C2 (ko)
WO (1) WO2013090646A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022086003A1 (ko) * 2020-10-19 2022-04-28 삼성전자(주) 전자장치 및 그 제어방법

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8832411B2 (en) * 2011-12-14 2014-09-09 Microsoft Corporation Working set swapping using a sequentially ordered swap file
US9134954B2 (en) * 2012-09-10 2015-09-15 Qualcomm Incorporated GPU memory buffer pre-fetch and pre-back signaling to avoid page-fault
US9524233B2 (en) 2013-03-05 2016-12-20 Vmware, Inc. System and method for efficient swap space allocation in a virtualized environment
US9798673B2 (en) * 2013-03-14 2017-10-24 Sandisk Technologies Llc Paging enablement of storage translation metadata
US10102148B2 (en) 2013-06-13 2018-10-16 Microsoft Technology Licensing, Llc Page-based compressed storage management
KR102088403B1 (ko) 2013-08-08 2020-03-13 삼성전자 주식회사 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법
US20150242432A1 (en) * 2014-02-21 2015-08-27 Microsoft Corporation Modified Memory Compression
US9684625B2 (en) * 2014-03-21 2017-06-20 Microsoft Technology Licensing, Llc Asynchronously prefetching sharable memory pages
CN104468745A (zh) * 2014-11-24 2015-03-25 惠州Tcl移动通信有限公司 一种基于网络的文件传输方法及系统
KR102403063B1 (ko) * 2014-12-05 2022-05-30 삼성전자주식회사 모바일 디바이스 및 모바일 디바이스의 메모리 관리 방법
US9436608B1 (en) 2015-02-12 2016-09-06 International Business Machines Corporation Memory nest efficiency with cache demand generation
US9632924B2 (en) 2015-03-02 2017-04-25 Microsoft Technology Licensing, Llc Using memory compression to reduce memory commit charge
US10037270B2 (en) 2015-04-14 2018-07-31 Microsoft Technology Licensing, Llc Reducing memory commit charge when compressing memory
US10061539B2 (en) * 2015-06-30 2018-08-28 International Business Machines Corporation Inaccessibility status indicator
US10310854B2 (en) 2015-06-30 2019-06-04 International Business Machines Corporation Non-faulting compute instructions
US10395029B1 (en) 2015-06-30 2019-08-27 Fireeye, Inc. Virtual system and method with threat protection
US10726127B1 (en) * 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
CN106547477B (zh) * 2015-09-22 2019-07-19 伊姆西公司 用于在线地减少缓存设备的方法和装置
US10387329B2 (en) * 2016-02-10 2019-08-20 Google Llc Profiling cache replacement
CN107305532B (zh) * 2016-04-25 2023-04-07 中兴通讯股份有限公司 一种表项替换方法、装置及终端
US11408846B2 (en) 2016-10-31 2022-08-09 University Of Utah Research Foundation Laterally actuated amplified capacitive vapor sensor
WO2018182473A1 (en) 2017-03-31 2018-10-04 Telefonaktiebolaget Lm Ericsson (Publ) Performance manager and method performed thereby for managing the performance of a logical server of a data center
CN111474913B (zh) * 2019-01-23 2021-07-20 北京新能源汽车股份有限公司 一种程序运行监测方法、装置及电动汽车
CN113138941A (zh) 2020-01-20 2021-07-20 华为技术有限公司 内存交换的方法、装置
CN112559384B (zh) * 2020-12-17 2022-04-15 南昌航空大学 一种基于非易失存储器的混合固态盘动态分区方法
US11397545B1 (en) 2021-01-20 2022-07-26 Pure Storage, Inc. Emulating persistent reservations in a cloud-based storage system

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63168753A (ja) * 1987-01-07 1988-07-12 Nec Corp 高速スワツピング方式
CA1329432C (en) * 1988-11-02 1994-05-10 William Davy Method of memory and cpu time allocation for a multi-user computer system
US4965717A (en) 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
US5101485B1 (en) 1989-06-29 1996-12-10 Frank L Perazzoli Jr Virtual memory page table paging apparatus and method
US5125086A (en) 1989-06-29 1992-06-23 Digital Equipment Corporation Virtual memory paging apparatus with variable size in-page clusters
US5394537A (en) * 1989-12-13 1995-02-28 Texas Instruments Incorporated Adaptive page placement memory management system
US5159678A (en) * 1990-06-11 1992-10-27 Supercomputer Systems Limited Partnership Method for efficient non-virtual main memory management
US5247687A (en) 1990-08-31 1993-09-21 International Business Machines Corp. Method and apparatus for determining and using program paging characteristics to optimize system productive cpu time
CA2055295C (en) 1991-11-12 2000-05-23 Jean Gilles Fecteau Logical mapping of data objects using data spaces
US5826057A (en) 1992-01-16 1998-10-20 Kabushiki Kaisha Toshiba Method for managing virtual address space at improved space utilization efficiency
US5628023A (en) * 1993-04-19 1997-05-06 International Business Machines Corporation Virtual storage computer system having methods and apparatus for providing token-controlled access to protected pages of memory via a token-accessible view
US5802599A (en) 1994-02-08 1998-09-01 International Business Machines Corporation System and method for allocating storage in a fragmented storage space
US5555399A (en) * 1994-07-07 1996-09-10 International Business Machines Corporation Dynamic idle list size processing in a virtual memory management operating system
US5966735A (en) * 1996-11-22 1999-10-12 Digital Equipment Corporation Array index chaining for tree structure save and restore in a process swapping system
US6681239B1 (en) 1996-12-23 2004-01-20 International Business Machines Corporation Computer system having shared address space among multiple virtual address spaces
US6128713A (en) 1997-09-24 2000-10-03 Microsoft Corporation Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system
JP3444346B2 (ja) * 1999-01-04 2003-09-08 日本電気株式会社 仮想メモリ管理方式
US6496912B1 (en) 1999-03-25 2002-12-17 Microsoft Corporation System, method, and software for memory management with intelligent trimming of pages of working sets
US6496909B1 (en) 1999-04-06 2002-12-17 Silicon Graphics, Inc. Method for managing concurrent access to virtual memory data structures
US6442664B1 (en) * 1999-06-01 2002-08-27 International Business Machines Corporation Computer memory address translation system
US7107299B2 (en) * 2001-08-14 2006-09-12 Hewlett-Packard Development Company, L.P. Method and apparatus for managing large numbers of objects having the same property
US7296139B1 (en) 2004-01-30 2007-11-13 Nvidia Corporation In-memory table structure for virtual address translation system with translation units of variable range size
TWI267024B (en) * 2004-06-18 2006-11-21 Winbond Electronics Corp Method and apparatus for connecting LPC bus and serial flash memory
US20060161912A1 (en) * 2005-01-18 2006-07-20 Barrs John W Infrastructure for device driver to monitor and trigger versioning for resources
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
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
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
US7475183B2 (en) 2005-12-12 2009-01-06 Microsoft Corporation Large page optimizations in a virtual machine environment
US20070156386A1 (en) * 2005-12-30 2007-07-05 Guenthner Russell W Linearization of page based memory for increased performance in a software emulated central processing unit
US7484074B2 (en) * 2006-01-18 2009-01-27 International Business Machines Corporation Method and system for automatically distributing real memory between virtual memory page sizes
US7624240B1 (en) * 2006-10-17 2009-11-24 Vmware, Inc. Separate swap files corresponding to different virtual machines in a host computer system
US8024546B2 (en) 2008-10-23 2011-09-20 Microsoft Corporation Opportunistic page largification
US20110153978A1 (en) 2009-12-21 2011-06-23 International Business Machines Corporation Predictive Page Allocation for Virtual Memory System
KR20120066198A (ko) * 2010-12-14 2012-06-22 삼성전자주식회사 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법
US8972696B2 (en) 2011-03-07 2015-03-03 Microsoft Technology Licensing, Llc Pagefile reservations
KR101221241B1 (ko) 2011-08-26 2013-01-11 린나이코리아 주식회사 실 팩킹 및 조리장치와 외부 설치구조물의 실 팩킹구조
US8832411B2 (en) * 2011-12-14 2014-09-09 Microsoft Corporation Working set swapping using a sequentially ordered swap file
JP5851437B2 (ja) * 2013-03-04 2016-02-03 株式会社伊藤製作所 フィルタープレスの濾枠におけるスペーサの補強材

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022086003A1 (ko) * 2020-10-19 2022-04-28 삼성전자(주) 전자장치 및 그 제어방법

Also Published As

Publication number Publication date
BR112014014274A2 (pt) 2017-06-13
EP2791806B1 (en) 2020-01-22
WO2013090646A3 (en) 2013-08-01
AU2012352178B2 (en) 2017-08-10
CN103019948B (zh) 2016-09-21
MX348643B (es) 2017-06-22
US9081702B2 (en) 2015-07-14
CN103019948A (zh) 2013-04-03
IN2014CN04049A (ko) 2015-07-10
RU2616545C2 (ru) 2017-04-17
EP2791806A2 (en) 2014-10-22
RU2014123660A (ru) 2015-12-20
KR20140102679A (ko) 2014-08-22
US8832411B2 (en) 2014-09-09
EP2791806A4 (en) 2015-08-05
CA2858109A1 (en) 2013-06-20
CA2858109C (en) 2020-10-06
AU2012352178A1 (en) 2014-07-03
US20130159662A1 (en) 2013-06-20
MX2014007167A (es) 2014-08-21
JP2015506041A (ja) 2015-02-26
US20140351552A1 (en) 2014-11-27
BR112014014274B1 (pt) 2021-09-14
JP6198226B2 (ja) 2017-09-20
WO2013090646A2 (en) 2013-06-20

Similar Documents

Publication Publication Date Title
KR102093523B1 (ko) 순차적인 순서의 스왑 파일을 이용한 작업 세트 스와핑 기법
US8972696B2 (en) Pagefile reservations
US9058212B2 (en) Combining memory pages having identical content
US8595451B2 (en) Managing a storage cache utilizing externally assigned cache priority tags
US20150154216A1 (en) System and methods for prioritizing data in a cache
US20090222621A1 (en) Managing the allocation of task control blocks
US20180107601A1 (en) Cache architecture and algorithms for hybrid object storage devices
US20070118695A1 (en) Decoupling storage controller cache read replacement from write retirement
KR20100132244A (ko) 메모리 시스템 및 메모리 시스템 관리 방법
CN107562367B (zh) 基于软件化存储系统读写数据的方法以及装置
US9658799B2 (en) Data storage device deferred secure delete
US20200142828A1 (en) Efficient global cache partition and dynamic sizing for shared storage workloads
KR101392062B1 (ko) 고속 컴퓨터 시스템 파워 온 및 파워 오프 방법
US9262088B2 (en) Use of flash cache to improve tiered migration performance
JP4189342B2 (ja) ストレージ装置、ストレージコントローラ及びライトバックキャッシュ制御方法
US10482012B1 (en) Storage system and method of operating thereof
US20190155730A1 (en) Storage control apparatus and computer-readable storage medium storing program
JP2019153030A (ja) キャッシュ装置およびキャッシュ装置の制御方法
JP2005004282A (ja) ディスクアレイ装置、ディスクアレイ装置の管理方法及び管理プログラム
JP6273678B2 (ja) ストレージ装置
WO2015145707A1 (ja) 追記型記憶装置への書き込みデータ決定方法
JPWO2019216130A1 (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