KR960015582B1 - 에이저의 효율 증대 방법, 시스템 및 컴퓨터 시스템 - Google Patents

에이저의 효율 증대 방법, 시스템 및 컴퓨터 시스템 Download PDF

Info

Publication number
KR960015582B1
KR960015582B1 KR1019930004445A KR930004445A KR960015582B1 KR 960015582 B1 KR960015582 B1 KR 960015582B1 KR 1019930004445 A KR1019930004445 A KR 1019930004445A KR 930004445 A KR930004445 A KR 930004445A KR 960015582 B1 KR960015582 B1 KR 960015582B1
Authority
KR
South Korea
Prior art keywords
class
page
cpu time
aging
received
Prior art date
Application number
KR1019930004445A
Other languages
English (en)
Other versions
KR930022208A (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 KR930022208A publication Critical patent/KR930022208A/ko
Application granted granted Critical
Publication of KR960015582B1 publication Critical patent/KR960015582B1/ko

Links

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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value

Abstract

내용없음

Description

에이저의 효율 증대 방법, 시스템 및 컴퓨터 시스템
제1도는 가상 메모리, 물리 메모리, 저장장치의 상호관계를 도시한 도면.
제2도는 선행 기술에 따른 페이지 테이블 및 페이지 테이블 엔트리를 도시한 도면.
제3도는 본 발명을 따라 사용하기 위한 테이블 형식.
제4도는 본 발명에 따른 스케쥴러-디스패쳐의 실행의 흐름을 보여주는 흐름도.
제5도는 에이저가 하나의 중앙처리장치 타임 슬라이스를 얻을 때마다의 본 발명의 작용을 보여주는 흐름도.
제6도는 본 발명에 따른 데이타 처리시스템의 개요도.
* 도면의 주요부분에 대한 부호의 설명
10 : 메모리 시스템 32 : 페이지 테이블 엔트리
36 : 플래그 50 : 형식화 테이블
54,56 : 계수기 100 : 데이타처리 시스템
112 : 디스켓
본 발명은 일반적으로 메모리 관리(memory management)에 관한 것으로, 특히, 페이징(paging)에 기초한 메모리 관리에 있어서 에이저(ager)의 효율을 증대시키기 위한 방법 및 장치에 관한 것이다.
현대적인 마이크로프로세서(microprocessor)에서는 가상 메모리(virtual memory) 기법이 물리 메모리(physical memory)와 결합되어 사용되고 있다. 가상 메모리는 보다 적은 양의 물리 메모리(비용때문에 중요함)로도 방대한 또는 다중의 응용 프로그램을 사용할 수 있도록 허용한다. 이것은, 어느 응용 프로그램이라도 어느한 순간에는 단지 그 프로그램의 상대적으로 작은 부분만이 물리 메모리내에서 존재하도록 요구된다는 사실로 인하여 가능하다. 그러므로, 동시에 수개의 응용 프로그램을 실행하는 컴퓨터 시스템에서는, 사용되지 않는 데이타 및 코드는 가상 메모리내에 남아 있거나 또는 하드 디스크 드라이버(hard disk drive)에 저장되는 반면, 물리 메모리 내에는 현재 실행되는 응용 프로그램에 대해 필요한 데이타와 코드만을 배치하는 것이 가능하다.
페이징에 근거한 메모리 관리는 페이지(page) 개념을 사용하는데, 각각의 페이지는 전형적으로 4K(킬로바이트)의 메모리 주소(memory address)를 포함한다. 가상 메모리는 응용 프로그램으로 하여금(32비트 번지지정 체계에 대해서) 이용가능한 4G(기가바이트)의 메모리가 있는 것처럼 믿도록 한다. 그러나, 사실상 물리 메모리(RAM)는 1M(메가바이트) 이하인 경우가 많다. 따라서, 물리 메모리로부터 또다른 위치(location)(즉, 디스크/보조기억장치)로 페이지를 "스왑(swap)"하는 것이 필요하다.
페이징에 기반을 둔 메모리 관리(예를들면, "인텔(INTEL)"사의 386 및 486 마이크로프로세서, 이하 "i386/i486")에서 스왑핑(swapping)을 허용하기 위해서는, 각각의 개별적인 페이지를 사상(map)하고 위치지정하는 페이징 시스템을 제공하는 것이 전형적이다. 사상은 각 페이지의 위치를 페이지 테이블 엔트리(page table entry : PTE)에 리스트하는 페이지 테이블을 생성하고 유지함으로써 이루어진다. 따라서, 응용프로그램이 특정한 페이지를 요구할 경우, 그 페이지는 페이지 테이블을 통해 스캐닝(scanning)함으로써 위치 지정될 수 있다. 이 PTE는 그 페이지의 주소 뿐만 아니라 가장 최근의 사용상태를 나타내는 액세스됨/액세스안됨 플래그(accessed/not accessed flag)를 포함한다.
물리 메모리로 또는 물리 메모리로부터 스왑핑 효율을 극대화하기 위해서, 운영체제(operating system)들에는 에이저가 제공된다. 에이저의 목적은 물리 메모리 공간이 필요할 경우 최근에 가장 적게 사용된 페이지(the least recently used)를 물리 메모리의 밖으로 스왑하는 것이다. 최근에 사용되지 않은 페이지들은 먼저, "유혹(idle)"리스트로 지정될 것이고, 이어서, 필요에 따라 스왑아웃(swapped out)될 것이다. 따라서, 사용되고 있지 않는 페이지들이 있다면, 이 페이지들은 물리 메모리에서 필요로 할 수도 있는 공간을 차기하기 보다는 저장장치(즉, 디스크)에 배치되는 것이 더 효율적이다. 그러므로, 에이저와 페이징 시스템은 결합하여 페이지의 위치를 추적하고 물리 메모리에서 실제로 필요한 페이지들을 유지한다.
기본(base) 운영 체제 성능에 대한 하나의 중요한 결정인자는 페이징에 기반을 둔 메모리 관리의 성능인데, 이것은 작업세트(working set), 응답시간(response time) 및 용량(capacity)의 차원(dimension)에서 나머지 시스템 성능에 직접적으로 영향을 줄 수 있기 때문이다. 따라서, 근본적인 메모리 관리를 주의깊게 설계하는 것이 긴요하다. 현대적인 마이크로프로세서에서, 페이징 메모리 관리를 위한 지원은 존재하지만 제한되어 있다.
페이징 메모리 관리의 효율은 다음과 같은 요인 즉, (1) 에이징의 효율(efficiency)과 유효성(effectiveness), (2) 작업 세트에 더 이상 속하지 않는 페이지의 정확한 식별, (3) 에이징 싸이클(cycle)의 길이에 의해 영향을 받는다. 에이징 싸이클을 줄임으로써, 전형적으로 작업세트의 크기가 비례하여 감소할 것이다. 과부하의 시스템(over-committed system)에서, 에이저는 충분히 효율적이어야 하는데, 효율적이 아니라면 잘못된 페이지가 물리 메모리를 점유하도록 허용될 것이기 때문이다.
i386/i486과 같은 몇몇 현대적인 마이크로프로세서의 페이징에 기반을 둔 메모리 관리 구조에서는, 전술한 바와같이, 메모리내에 각 페이지에 대응하는 PTE가 있다. 이 페이지 테이블 엔트리는 페이지 테이블에 존재한다. 각 프로세서는 그 자신의 별도의 페이지 테이블 및 PTE 세트를 갖는다. 페이지의 내용이 액세스될때마다, 이 페이지에 대응하는 PTE내의 "액세스됨(accessed)" 플래그가 기본 하드웨어에 의해 세트(set)된다. 이 플래그는, 페이지 테이블에 대한 마지막에이징 서비스 또는 싸이클 이후, 이 페이지가 액세스되었는지(또는 액세스되지 않았는지)를 에이저에게 알려준다. 에이저는 PTE를 스캐닝한 후에는 플래그를 클리어(clear)한다. 전형적으로 하나의 완전한 에이징 싸이클을 완료하기 위해서는 에이저는 시스템내의 모든 프로세스들의 모든 페이지 테이블들을 스캐닝해야 한다. 주기적으로 에이저는 모든 PTE 들을 스캐닝하고, 비트들의 상태를 체크하며, 적절한 동작을 취하는데 이는 최근에 액세스되지 않았던 페이지들의 페이징 아웃(paging out)을 포함할 수 있다. "i386/i486" 마이크로프로세서에서, 정확한 액세스 순서를 포함하는 정확한 페이지 액세스 패턴을 식별하기 위한 지원은 PTE내의 "액세스됨/액세스안됨" 비트로 제한된다. 기본 하드웨어에서는 페이지를 액세스하는 정확한 순서를 페이징 메모리 관리 서브-시스템(paging memory management sub-system)에 알려줄 수 있는 페이지 타임 스탬핑(page time stamping)은 제공되지 않는다.
에이저에 할당되는 시간은 주의깊게 사용되어야 한다. 즉, (1) 에이저는 페이지 아웃(paged out)될 다음 세트의 페이지를 식별하는 일에 효율적이어야 하고, (2) 페이지 아웃될 필요가 있는 페이지를 식별하는데 있어 정확해야 한다. 이에 대한 부정확한 결정은 잘못된 페이지 아웃을 상당히 증가시킬 수 있고, 물리 메모리 요구량을 증가시킬 수 있으며, 결국 시스템의 경쟁력을 감소시킬 수 있다. 에이저에 의해 소모되는 중앙처리장치(central processing unit : CPU) 시간은 시스템내 다른 프로세스들의 희생을 가져오고 하나의 완전한 에이징 싸이클이 수 개의 CPU 타임 슬라이스(time slice)를 취할 수도 있다. 에이저에 의해 소모되는 (CPU 타임과 같은) 자원의 효율적인 활용을 위해서, 에이저는 이러한 이용가능한 자원들을 상이한 프로세스들에게 분별있게 할당하는 것이 중요하다.
에이저 기능의 효율이외에도, 다음에 페이지 아웃될 "유휴 리스트(idle list)"로 지정된 페이지들을 보다 잘 선택하도록 하는 것이 또한 중요하다. 현 시스템은 페이지를 메모리 밖으로 스왑하기 위해 최소 최근 사용(least recently used : LRU) 방법과 유사한 것은 이용한다. 이 방법은, 특히 매우 동적이고 과부하의 시스템에 대해서 종종 잘못된 결정에 이르게 할 수 있다. 전술한 바와 같이, 일단 2개의 물리적 페이지에 대응하는 액세스 플래그가 설정되면, 운영 체제로서는 어느 페이지가 우선 액세스될지를 결정할 방법이 없다. 또한, 2개의 상이한 페이지에 대응하는 2개의 PTE내의 액세스됨 플래그가 리셋되면, 운영 체제로서는 어느 페이지가 마지막으로 액세스되었는지를 판단할 방법이 없다. 따라서, 에이저는 틀린 페이지(즉, 가장 최근에 사용된 페이지)가 스왑 아웃되도록 선택하는 것도 전적으로 가능하다.
에를들면, PTE들을 스캐닝하는 동안, 에이저는 액세스 플래그가 리셋된 두 PTE를 검출할 수 있다. 이것은, 에이저에게는, 이들 플래그들이 마지막으로 리셋된 후 이 페이지들은 액세스되지 않았다는 것을 의미한다. 에이저는 이들 두 페이지 모두를 유혹 리스트(즉, 잠재적으로 페이지 아웃될 가능성이 있는 것들의 리스트)에 지정할 수 있고, 결국 이들 페이지들은 충분히 가까운 장래에 액세스되지 않으면 페이지 아웃될 수 있다. 다시 말하면, 이들 두 페이지들은 에이저의 관점에서 보면 동일하게 취급된다. 그러나, 하나의 페이지는 우연히 바로 직전에는 액세스되지 않았던 사용빈도가 아주 높은 페이지(예를들면, 사용빈도가 높은 소프트웨어 코드를 포함하는 페이지)일 수 있고, 반면에 나머지 한 페이지는 정말로 사용빈도가 낮은 페이지일 수 있다. 그러나, 제1페이지는 제2페이지보다 장래에 액세스될 가능성이 더 높다. 에이저의 제한때문에, 어떤 페이지가 페이지 아웃될 필요가 있을때, 제1페이지(즉, 사용빈도가 높은 페이지)가 선택될 가능성이 있는데, 이것은 에이저의 제한된 관점에서 보면 두 페이지들이 동일하게 보이기 때문이다. 따라서, 만약 스왑 아웃된 후 제1페이지가 다시 참조될 필요가 있으면, 페이지 부재(page-fault)가 일어날 것이다. 페이지 부재는 전형적으로 처리시간의 지연을 초래할 것인데, 이것은 그 페이지가 위치지정되고 물리 메모리 안으로 다시 스왑될 동안 동작중인 프로세스가 정지되어야 하기 때문이다.
액세스됨 비트 플래그는 페이지가 액세스될 때마다 대응하는 PTE에 세트된다. 에이징 프로세스는 액세스됨/액세스안됨 페이지들을 식별하기 위해 PTE를 순차적으로 스캐닝하고, 액세스되지 않은 페이지들은 결국 유휴 리스트로 지정되며 페이지 아웃될 수 있다. 스캐닝 프로세스는 본질적으로 시간 소모적이다. 페이지 테이블내의 모든 PTE가 스캐닝될 필요는 없는데, 이것은 이들 PTE에 대응하는 페이지들의 서브-세트sub-set)만이 물리 메모리내에 존재할 것이기 때문이다.
전형적으로, 물리 메모리내에 있는 하나의 페이지에 대응하는 단지 하나의 엔트리를 찾기 위해서 다수의 PTE들이 스캐닝되어야 할 것이다. 필수적으로, 물리 메모리내에 있는 페이지들에 대응하는 PTE들을 위치 지정하기 위해 매우 많은 엔트리들이 스캐닝되어야 할 것이다.
따라서, 컴퓨터 시스템에서 메모리를 좀더 효율적으로 관리하는 방법 및 장치가 필요하다. 특히, 페이징에 기반을 둔 메모리 관리에서 보다 더 능률적으로 에이저를 사용하는 방법 및 장치가 요구된다.
본 명세서에 개시된 발명은 보다 효율적으로 에이저를 사용하기 위한 방법 및 장치로서, 선행기술의 에이저에 대한 문제점들을 충분히 제거하거나 감소시키는 방법 및 장치이다. 본 명세서에서 기술된 방법 및 장치는 클래스(cleases)들을 생성하여 프로세서들을 그들 안에 정렬하므로써 에이저의 효율을 증가시킨다.
본 발명의 일 실시예에 따라서, 에이저의 효율을 증가시키는 방법이 제공된다. 컴퓨터 시스템내의 모든 프로세스들은 다수의 클래스로 분류된다. 프로세스들의 페이지들은 액세스됨/액세스안됨 기록에 근거하여 잠재적으로 물리 메모리의 밖으로 스왑된다.
하나의 실시예에서, 프로세스들은 네개의 상이한 클래스들 중 하나에 배치된다. 만약 프로세스가 하나의 에이징 서비스 후 사전 결정된 수보다 더 많은 수의 중앙처리장치(Central Processing unit : CPU) 타임 슬라이스(time slice)를 받았다면, 이 프로세스는 클래스 1이다. 만약 프로세서가 하나의 에이징 서비스 후 전술한 사전결정된 수보다 더 적은 수의 CPU 타임 슬라이스를 받았다면, 이 프로세스는 클래스 2이다. 만약 프로세스가 하나의 에이징 서비스 후 CPU 타임 슬라이스를 전혀 받지 않았다면, 이 프로세스는 클래스 3이다. 만약 프로세스가 사전결정된 수의 에이징 서비스 수 CPU 타임 슬라이스를 전혀 받지 않았다면, 이 프로세스는 클래스 4이다. 잠재적인 스왑핑을 위해 페이지들을 위치지정할 필요가 있을 때, 에이징 서비스들은 클래스 4, 클래스 1, 클래스 2의 순으로 프로세스들에 제공된다.
또한, 각 프로세스에 대하여 할당된 모든 CPU 타임 슬라이스의 계수를 유지하고 또한 할당된 타임 슬라이스가 하나도 없다는 것을 에이저가 검출한 횟수를 기록하기 위한 계수를 유지하기 위한 테이블이 생성될 수 있다. 할당된 타임 슬라이스의 계수는 에이저가 그 프로세스에 대해 "조사(visit)" 또는 에이징 서비스를 수행할때 마다 리셋될 것이다.
에이저가 다음의 정확한 에이징 서비스 대상 프로세스를 지적하게 되는 것이 본 발명의 기술적 잇점이다. 프로세스들을 분류함으로써, 에이저는 시간이 필수적일 때, 즉, 시스템이 물리 메모리 공간을 현재 필요로 할 때, 올바른 프로세스들을 조사할 수 있을 것이다.
본 발명 및 본 발명의 장점은 첨부된 도면과 함께 발명의 상세한 설명을 참조하면 보다 명확하게 이해할 수 있을 것이다. 제1도를 우선 참조하면, 메모리 시스템의 도식적 표현은 일반적으로 참조번호(10)로 식별된다. 컴퓨터 프로그램이 작성될 때는, 실제적으로 물리적으로 존재하는 것보다 더 많은 메모리가 주소 지정되어 사용될 수 있다는 인식하에 작성된다. 전형적으로 4기가 바이트의 가상(즉, 실제로 존재하지 않는) 주소 지정가능 메모리(12)가 제공된다. 물리 메모리(RAM)(14)의 양은 컴퓨터 시스템마다 다양하지만 이용할 수 있는 물리 메모리(14)는 가상 메모리(12) 보다는 작다. 제1도에 도시되었듯이, 메모리(14)는 n M(메가 바이트) 메모리를 갖는데, n은 전형적으로 1과 64 사이에서 변할 수 있는 수를 나타낸다. 따라서, 컴퓨터 하드웨어는 물리 메모리(14)와 결합하여 사용하기 위해, 예를들면, 하드디스크 드라이버(hard disk drive)와 같은 저장장치(16)를 가질 수 있다.
프로세스(즉, 컴퓨터 프로그램)가 컴퓨터 시스템에서 실행됨에 따라(제5도 참조), 참조번호(18)로 표시된 것과 같은 페이지(4K의 데이타를 포함)는 가상 메모리(12)로부터 물리 메모리(14)로 전송될 수 있다. 페이지들이 가상 메모리(12)로부터 물리 메모리(14)로 전송됨에 있어 특정한 순서는 없으므로, 가상 메모리(12)내의 순차적인 페이지들은 물리 메모리(14)내에서는 순차적이 아닌 페이지들이 될 수 있다.
컴퓨터 시스템에서 실행중인 프로세스가 그 페이지를 일단 사용하였으면, 다른 프로세스가 물리 메모리(14)내에 물리적 공간을 요구할 수 있다. 만약 어느 공간도 이용가능하지 않다면 물리 메모리(14)내의 하나의 페이지가 물리 메모리(14)로부터 저장장치(16)로 "스왑되는(swapped)"것이 필요하다. 더구나, 프로세스가 저장장치(16)안에 놓여진 어떤 페이지를 요구하면, 이 페이지는 저장장치(16)로부터 물리 메모리(14)안으로 스왑되어야 한다.
가상 메모리(12), 물리 메모리(14) 및 저장장치(16) 사이에서 페이지들을 사상하고 위치지정하는 것은 페이징에 기반을 둔 메모리 관리의 소임이다. 제2도를 참조하면 "i386/i486"에 기초한 마이크로프로세스에서 페이징에 기반을 둔 메모리 관리는 전형적으로 다수의 페이지 테이블 엔트리(32)들을 포함하는 페이지 테이블(30)을 사용한다. 각 페이지 테이블 엔트리(32)는 주소부(34)와 일련의 정보비트들 또는 플래그(36)들을 포함한다. 정보 플래그(6)들은 여러가지 용도로 사용되는데, 예를들면, 물리 메모리내에 페이지가 존재하는지 여부, 그 페이지가 판독/기록 페이지인지 여부 등등하여, 참조번호(38)에 의해 식별된 것처럼, 액세스됨/액세스안됨 플래그까지를 포함하기 위한 목적에 이용된다. 프랠그(38)의 목적은 페이징에 기초한 메모리 관리가 어떤 페이지가 최근에 사용되었는지 안되었는지 여부의 추적을 시도하도록 허용하기 위한 것이다. 플래그(38)는 페이지가 액세스될 때마다 기본 하드웨어("i386/i486"칩)에 의해 세트된다.
페이징에 기반을 둔 메모리 관리와 결합하여, 에이저가 물리 메모리(14)와 저장장치(16) 사이의 스왑핑을 돕기 위해 사용된다. 에이저의 용도는 액세스됨/액세스안됨 플래그(38)를 스캐닝하고, 물리 메모리(14)내에 공간이 필요한 경우, 물리 메모리(14)로부터 저장장치(16)로 최소 최근 사용된 페이지를 스왑하는 것이다. 에이저가 하나의 액세스됨/액세스안됨 플래그(38)로부터 이용할 수 있는 정보량은 제한되어 있기 때문에, 에이저는 물리 메모리(14)로부터 잘못된 페이지를 스왑될 페이지로 선택할 가능성이 있다. 이러한 현상은 일단 상이한 페이지 테이블 엔트리의 플래그(38)들이 세트되면, 에이저는 어떤 플래그(38)가 가장 최근에 세트되었는지를 알 방법이 없기 때문에 가능하다. 또한, 일단 에이저가 모든 PTE들을 스캐닝하면, 플래그(38)들은 리셋되어서 어느 페이지가 최종적으로 액세스되었는지 결정할 방법이 없다.
에이저는 운영 체제의 나머지 부분을 희생하여 그의 모든 작업을 수행한다. 만약 이 운영 체제가 유휴상태라면, 에이저가 그의 작업을 수행할 시간은 많으나, 그렇지 않다면, 에이저는 운영 체제로부터 시간을 "스틸"하여 "유휴"리스트(마지막 에이저 스캐닝이후 액세스된 적이 없는 사전지정된 수의 페이지들의 목록으로 어떤 페이지가 물리 메모리의 외부로 스왑되어야 할 때마다 사용된다.)로 충분한 페이지들이 지정되어 있다는 것을 보증하여야 한다.
동작함에 있어서, 에이저는 어느 페이지가 최근에 사용되었는지/사용안되었는지를 조사하기 위해 각 프로세스에 대한 각 페이지 테이블내의 각 페이지 테이블 엔트리를 완전히 조사해야 한다. 만약 플래그(38)가 세트되어 있으면, 이 페이지는 사용되었던 것이다. 만약 플래그(38)가 세트되어 있지 않으면, 이 페이지는 액세스되지 않았고 에이저는 이 페이지를 유휴 리스트로 지정할 수 있다.
"스케쥴러(scheduler)"로 불리는 운영 체제의 일부는 에이저로부터 독립적으로 작업한다. 동작중인 상이한 프로세서들에 CPU 타임을 할당하는 것이 스케쥴러의 소임이다. 이 스케쥴러는 이용 가능한 시간을 여러 프로세스들에게 할당하기 위해서 일정한 우선순위 시스템(priority system)을 사용한다. 에이저는 스케쥴러와 함께 동작하는 것이 아니므로, 스케쥴러의 우선 순위 리스트 내에서의 프로세스의 지위에 대해서는 알 수 없다. 따라서, 스케쥴러 리스트 상에서 높은 우선순위가, 그 프로세스의 그 페이지를 실행하는데 이용할 수 있는 CPU 타임이 있기 전에, 에이저에 의해 스왑 아웃될 가능성이 있다. 그러므로 부재(fault)가 발생하여, 시간 및 효율의 손실을 초래할 것이다.
에이저는 바람직하게, 최종 에이징 사이클 이후 액세스되거나 CPU 타임이 주어진 프로세스들, 즉, 여하튼 액세스되는 가능성을 가졌던 프로세스들의 페이지들에 에이징 서비스를 제공하여야 한다. 또한, 시스템내에는, 여러가지 이유때문에 CPU 타임을 얻지 못하고 스왑 아웃될 유력한 후보자인 프로세스들이 있을 것이다. 만약 이런 프로세스들이 존재하면, 에이저는 사용되지 않는 이런 프로세스들의 페이지들이 가까운 장래에 액세스되지 않을 가능성이 높으므로 우선적으로 스왑 아웃해야 한다.
예를들면, 선행기술의 페이징 메모리 관리를 사용하면, CPU 타임을 전혀 얻지 못한 프로세스들은, 그들이 스케쥴러 상에는 높은 우선 순위를 가짐에도 불구하고, 액세스되지 않았음을 이유로 해서 부당하게 불이익을 받을 수 있다. 정확하게 같은 스케쥴링 우선 순위(sheduling priority)에서 동작하는 N 프로세스들중에서, M 프로세스들은 마지막 에이징 사이클 이후 CPU 타임을 전혀 얻지 못했을 가능성이 있다. 따라서 실제로 CPU 타임을 받은 (N-M) 프로세스들만의 페이지 액세스 기록(history)을 조사하는 것이 좀 더 정확할 수 있다.
본 발명은, 진정으로 사용빈도가 낮거나 또는 실제로 CPU 타임을 받은 프로세스들만을 조사하기 위해, 모든 프로세스들이 분류되어질 수 있는 다수의 상이한 클래스를 제공한다. 바람직한 실시예에서, 다수의 클래스는 아래와 같다 :
클래스 1-마지막 에이징 서비스 후 반복되는 CPU 타임 슬라이스들을 받은 프로세스들;
클래스 2-마지막 에이징 사이클 이후 사전선택된 어떤 임계치 보다 작은 수의 CPU 타임 슬라이스들을 받은 프로세스들 ;
클래스 3-마지막 에이징 사이클 이후 CPU 타임 슬라이스를 전혀 받지 않은 프로세스들 ;
클래스 4-어떤(또다른 임계치에 의해 사전규정된)수의 에이징 사이클 동안 CPU 타임 슬라이스를 전혀 받지 않은 프로세스들.
제3도를 참조하면, 형식화 테이블(formatted table)(50)은 본 발명에 따라 컴퓨터 시스템내의 모든 프로세스(52)들에 대해 엔트리(entry)를 갖도록 구성된다. 각 엔트리는 마지막 에이징 서비스 이후 프로세스가 받은 CPU 타임 슬라이스가 얼마나 되는가에 대한 기록을 포함한다. 프로세스가 스케쥴러로부터 타임 슬라이스를 얻을 때마다, 참조번호(54)로 표시되는 계수기(C1)의 계수는 증가할 것이다. 에이저가 프로세스에 에이징 서비스를 행사할 때마다, 계수기(54)는 리셋될 것이다. 참조번호(56)로 표시되는 제2계수기(C2)는 에이저가 프로세스의 "타임이 할당되지 않음(no time allocated)"을 검출한 횟수를 기록할 것이다. 계수기(C1)의 값 "0"은 이 프로세스의 "타임이 할당되지 않음"을 표시할 것이다.
예를들면, 두 연속 사이클동안 이 프로세스가 CPU 타임을 전혀 받지 않았다는 것을 에이저가 검출했다면, 계수기(C2)는 값 "2"를 가질 것이다. 계수기(C2)는 이 프로세스가 CPU 타임 슬라이스를 받을 때 리셋될 것이다.
만약 계수(C1)가 사전결정된 임계치의 어떤 범위내이고 계수(C2)가 영(zero)이면, 이 프로세스는 클래스 2에 속하는 것으로 분류된다. 만약 계수(C1)가 영이고 계수(C2)가 서전 결정된 임계치의 어떤 범위내에 있으면, 이 프로세스는 클래스 3에 속하는 것으로 분류된다. 정확한 임계치는 각 컴퓨터 시스템에 대해 조정 및 측정함으로써 결정될 수 있다.
계수기(C2)의 높은(클래스 3에 대한 최대 임계치보다 더 큰) 값은 대응하는 프로세스가 타임 슬라이스를 전해 받지 않았으며, 매우 낮은 우선 순위 또는 사용빈도가 낮은 유형일 가능성이 있어 페이지 아웃될 페이지들을 조사할 때 좋은 후보가 됨을 의미한다. 이런 프로세스는 클래스 4로 분류된다.
유사하게, 계수기(C1)의 매우 높은(클래스 2에 대한 최대 임계치 보다 더 큰)계수 및 계수기(C2)의 "영"은 프로세스가 에이징 서비스를 받지 않았으며 많은 양의 CPU 타임을 얻고 있음을 의미한다. 계수기(C1)의 높은 값은 " 최소 최근 사용" 정보로는 "퍼지(fuzzy)" 즉, 실제적인 페이지 액세스 순서를 결정하기 어려울 수 있다는 것을 제시한다. 계수(C1)이 높고 계수(C2)가 "0"인 프로세스들은 클래스 1로 분류된다.
따라서 이 4종류의 클래스는 에이저가 스왑 아웃될 페이지를 찾기위해 테이블 엔트리들을 스캐닝하는 순서를 발생시키는데 필요한 정보를 제공한다. 바람직한 실시예에서, 스캐닝의 순서는 클래스 4, 클래스 1, 마지막으로 클래스 2이다. 클래스 3은 스캐닝되지 않는데, 이는 잘못된 페이지들이 스왑 아웃될 가능성이 매우 높기 때문이다.
제4도 및 제5도를 참조하면, 본 발명의 흐름도가 도시되어 있다. 먼저 제4도를 참조하면, 본 발명과 결합한 스케쥴러의 실행을 기술한 흐름도가 도시되었다. 블록(60)에서, CPU 타임 슬라이스가 주어질 프로세서가 식별된다. 블록(62)에서 이 프로세스에 대응하는 테이블(50)(제3도 참조)내의 계수기(C1)가 증가된다. 블록(6)에서, 프로세스는 블록(60)에서 식별된 프로세스에 주어진 타임 슬라이스와 함께 계속 동작한다.
제5도를 참조하면, 에이저가 CPU 타임 슬라이스를 얻을 때마다의 본 발명의 프로세스 흐름도가 설명된다. 블록(66)에서 에이저가 시작하고 이어서 블록(68)에서 테이블(58)(제3도 참조)내의 제1엔트리를 선택한다. 판단블록(70)에서, 계수기(C1)가 영인지 여부가 결정된다. 만약 판단블록(70)의 응답이 긍정이면 계수기(C2)는 블록(72)에서 증가된다. 만약 판단블럭(70)의 응답이 부정이면, 계수기(C1)는 영보다 크며, 따라서 계수기(C2)가 블록(74)에서 리세트된다. 판단블록(76)에서, 모든 엔트리들이 "조사(visited)" 또는 서비스 되었는가가 결정된다.
만약 판단블록(76)의 응답이 부정이면 다음 엔트리가 블록(78)에서 선택되고 이어서 판단블록(70)으로 복귀한다. 만약 판단블록(76)의 응답이 긍정이면, 에이저는 진행하여 블록(80)에서 테이블(50)(제3도 참조)로 부터 제1엔트리를 선택한다. 판단블록(82)에서 계수기(C1)가 t1(조정가능 임계치)보다 더 큰가, 또한 계수기(C2)가 영인가가 결정된다. 만약 판단블록(82)의 응답이 긍정이면, 이 엔트리는 블록(84)에서 클래스 1로 표시된다.
만약 판단블록(82)의 응답이 부정이면, 계수기(C1)가 t1보다 작고 t2(제2조정가능 임계치)보다 더 큰가 여부와, 계수기(C2)가 영인가가 판단블록(86)에서 결정된다. 만약 판단블록(86)의 응답이 긍정이면, 이 엔트리는 블록(88)에서 클래스 2로 표시된다. 만약 판단블록(86)의 응답이 부정이면, 계수기(C1)가 영인가, 계수기(C2)가 t3(제3조정가능 임계치)보다 크고 t4(제4소정가능 임계치)보다 작은가가 판단블록(90)에서 결정된다. 조정가능값(t1,t2,t3,t4)은 시스템에 따라 변할 것이며 작업량(workload) 특성에 의존할 것이다. 만약 판단블록(90)의 응답이 긍정이면, 이 엔트리는 블록(92)에서 클래스 3으로 표시된다. 만약 판단블록(90)의 응답이 부정이면, 계수기(C1)가 영이며 계수기(C2)가 t4보다 큰가가 판단블록(94)에서 결정된다. 만약 판단블록(94)의 응답이 긍정이면, 이 엔트리는 블록(96)에서 클래스 4로 표시된다. 만약 판단블록(94)의 응답이 부정이거나 또는 블록(84,88,92 및 96)이 실행된 후이면, 모든 엔트리가 조사되었는지가 판단블록(98)에서 결정된다. 만약 판단블록(98)의 응답이 부정이면, 다음 엔트리가 블록(130)에서 선택되고 그런 다음 판단블록(82)으로 복귀한다. 만약 판단 블록(98)의 응답이 긍정이면, (CPU 타임이 이용가능한 동안) 에이징 서비스는 블록(132)에서 클래스 4로 표시된 모든 프로세스들에 가장 먼저 제공되고, 그런 다음 블록(134)에서 클래스 1로 표시된 모든 프로세스들에 제공되며, 그 다음 블록(136)에서는 클래스 2로 표시된 모든 엔트리에 제공된다. 블록(136)이 완료되면, 에이저는 블록(138)에서 빠져나가고 사이클이 종료된다.
제6도를 참조하면, 일반적으로 참조번호(100)로 식별되는 본 발명에 따른 데이타 처리 시스템에 블록 다이아그램(block diagram) 형태로 도시되어 있다. 시스템(100)은 CPU(104) 및 메모리(106)를 포함하는 프로세서(102)를 포함한다.
부가적인 메모리는 하드 디스크 저장장치(108) 및 디스켓 디바이스(diskette device)(110)형태로 프로세스(102)에 연결된다. 이 디스켓 디바이스(110)는 시스템(100)에서 본 발명을 구현하는 컴퓨터 프로그램 코드(computer program code)가 기록된 디스켓(diskette)(112)을 수용한다. 이 시스템(100)은, 사용자가 프로세서(102)에 입력할 수 있도록 마우스(mouse)(114) 및 키보드(keyboard)(116)를 포함하고 사용자에게 가시적 데이타를 제공하는 디스플레이(118)를 포함하는 사용자 인터페이스 하드웨어(user interface hardware)를 포함한다. 이 시스템(100)은 또한 프린터(120)를 포함할 수 있다.
비록 본 발명은 바람직한 실시예를 참조하여 특정하게 도시되고 기술되었지만, 이 기술분야에 통상의 지식을 가진자라면 본 발명의 사상과 범주를 벗어나지 않고 많은 변경이 이루어질 수 있음을 이해할 것이다.

Claims (11)

  1. 다수의 프로세스(a plurality of processes)가 실행될 수 있는 컴퓨터 시스템의 페이징 기반 메모리 관리(paging based memory management)에서 에이저(ager)의 효율을 증대시키기 위한 방법에 있어서, 에이징 서비스 이후 프로세스가 기결정된(predetermined) 수보다 많은 다수의 중앙 처리 장치(central processing unit : CPU) 타임 슬라이스(time slices)를 받은 경우 상기 프로세스를 제1클래스(a first class)에 배치하는 단계와; 에이징 서비스 이후 프로세스가 기결정된 수보다 적은 다수의 CPU 타임 슬라이스를 받은 경우 상기 프로세스를 제2클래스(a second lass)에 배치하는 단계와 ; 에이징 서비스 이후 프로세스가 CPU 타임 슬라이스를 받지 않은 경우 상기 프로세스를 제3클래스(a third class)에 배치하는 단계와, 기지정된(predesigned) 수의 에이징 서비스 이후에도 프로세스가 CPU 타임 슬라이스를 받지 않은 경우 상기 프로세스를 제4클래스(a fourth class)에 배치하는 단계 및 ; 상기 프로세스가 상기 제1,제2,제3 및 제4 클래스 중 어디에 배치되는지와 액세스됨/액세스안됨 기록에 근거하여 유휴 리스트(idle list)용의 페이지를 지정(designate)하는 단계를 포함하는 에이저의 효율 증대 방법.
  2. 제1항에 있어서, 상기 지정 단계는 상기 제4클래스로부터의 페이지에 먼저 에이징 서비스를 제공하는 단계와 ; 필요한 경우, 상기 제1클래스로부터의 페이지에 그 다음으로 에이징 서비스를 제공하는 단계와 ; 필요한 경우, 상기 제2클래스로부터의 페이지에 그 다음으로 에이징 서비스를 제공하는 단계를 포함하는 에이저의 효율 증대 방법.
  3. 제1항에 있어서, 각 프로세스에 대해 할당된 모든 CPU 타임 슬라이스의 계수를 유지하고, 할당된 모든 CPU 타임 슬라이스의 각 프로세스와, 할당된 타임 슬라이스가 없음을 에이저가 검출하는 경우 이를 검출한 횟수를 기록하기 위한 계수를 유지하기 위한 테이블을 형성하는 단계를 더 포함하는 에이저의 효율 증대 방법.
  4. 제3항에 있어서, 에이저가 프로세스에게 서비스할 때마다 상기 할당된 타임 슬라이스의 상기 계수를 리셋시키는 단계를 더 포함하는 에이저의 효율 증대 방법.
  5. 다수의 프로세스가 실행될 수 있는 컴퓨터 시스템의 페이징 기반 메모리 관리에서 에이저의 효율을 증대시키기 위한 시스템에 있어서, 각각의 프로세스가 분류되고, 에이저의 서비스 제공에 대해 우선순위를 생성하는 다수의 클래스를 구비하되, 상기 클래스는 에이징 서비스 이후 기결정된 수보다 많은 다수의 CPU 타임 슬라이스를 받은 프로세스를 수신하기 위한 제1클래스와 ; 에이징 서비스 이후 기결정된 수보다 적은 다수의 CPU 타임 슬라이스를 받은 프로세스를 수신하기 위한 제2클래스와 ; 에이징 서비스 이후 CPU 타임 슬라이스를 받지 않은 플로세스를 수신하기 위한 제3클래스를 포함하는 에이저의 효율을 증대시키기 위한 시스템.
  6. 제5항에 있어서, 각 프로세스에 대해 할당된 모든 CPU 타임 슬라이스의 계수를 유지하고, 할당된 타임 슬라이스가 없음을 에이저가 검출한 횟수를 기록하기 위한 계수를 유지하기 위한 테이블을 더 포함하는 에이저의 효율을 증대시키기 위한 시스템.
  7. 다수의 프로세스가 실행될 수 있는 컴퓨터 시스템의 페이징 기반 메모리 관리에서 에이저를 효과적으로 이용하기 위한 컴퓨터 시스템에 있어서, 에이징 서비스 이후 프로세스가 기결정된 수보다 많은 다수의 CPU 타임 슬라이스를 받은 경우 상기 프로세스를 제1클래스에 배치하기 위한 수단과 ; 에이징 서비스 이후 프로세스가 기결정된 수보다 적은 다수의 CPU 타임 슬라이스를 받은 경우 상기 프로세스를 제2클래스에 배치하기 위한 수단과 ; 에이징 서비스 이후 프로세스가 CPU 타임 슬라이스를 받지 않은 경우 상기 프로세스를 제3클래스를 배치하기 위한 수단과 ; 기지정된 수의 에이징 서비스 이후에도 프로세스가 CPU 타임 슬라이스를 받지 않은 경우 상기 프로세스를 제4클래스에 배치하기 위한 수단 ; 및 상기 프로세스가 상기 제1,제2,제3 및 제4클래스 중 어디에 배치되는지와 액세스됨/액세스안됨 기록에 근거하여 유휴 리스트용의 페이지를 지정하기 위한 수단을 포함하는 에이저를 효과적으로 이용하기 위한 컴퓨터 시스템.
  8. 제7항에 있어서, 상기 지정 수단은 상기 제4클래스로부터의 페이지에 먼저 에이징 서비스를 제공하는 수단과 ; 필요할 경우, 상기 제1클래스로부터의 페이지에 그 다음으로 에이징 서비스를 제공하는 수단과 ; 필요한 경우, 상기 제2클래스로부터의 페이지에 그 다음으로 에이징 서비스를 제공하는 수단을 더 포함하는 에이저를 효과적으로 이용하기 위한 컴퓨터 시스템.
  9. 제7항에 있어서, 각 프로세스에 대해 할당된 모든 CPU 타임 슬라이스의 계수를 유지하고, 할당된 타임 슬라이스가 없음을 에이저가 검출한 횟수를 기록하기 위한 계수를 유지하기 위한 테이블을 형성하는 수단을 더 포함하는 에이저를 효과적으로 이용하기 위한 컴퓨터 시스템.
  10. 제9항에 있어서, 상기 에이저가 상기 프로세스를 조사할 때마다 할당된 타임 슬라이스의 상기 계수를 리셋시키는 수단을 더 포함하는 에이저를 효과적으로 이용하기 위한 컴퓨터 시스템.
  11. 제5항에 있어서, 기지정된 수의 에이징 서비스 이후에도 CPU 타임 슬라이스를 받지 않은 프로세스를 배치하기 위한 제4클래스를 더 포함하는 에이저의 효율을 증대시키기 위한 시스템.
KR1019930004445A 1992-04-22 1993-03-22 에이저의 효율 증대 방법, 시스템 및 컴퓨터 시스템 KR960015582B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US872,731 1992-04-22
US07/872,731 US5423017A (en) 1992-04-22 1992-04-22 Method of and apparatus for increasing efficiency of ager
US872731 1992-04-22

Publications (2)

Publication Number Publication Date
KR930022208A KR930022208A (ko) 1993-11-23
KR960015582B1 true KR960015582B1 (ko) 1996-11-18

Family

ID=25360199

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019930004445A KR960015582B1 (ko) 1992-04-22 1993-03-22 에이저의 효율 증대 방법, 시스템 및 컴퓨터 시스템

Country Status (6)

Country Link
US (1) US5423017A (ko)
EP (1) EP0567421A1 (ko)
JP (1) JP2610086B2 (ko)
KR (1) KR960015582B1 (ko)
CN (1) CN1094172A (ko)
TW (1) TW212839B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619675A (en) * 1994-06-14 1997-04-08 Storage Technology Corporation Method and apparatus for cache memory management using a two level scheme including a bit mapped cache buffer history table and circular cache buffer list
US5664187A (en) * 1994-10-26 1997-09-02 Hewlett-Packard Company Method and system for selecting data for migration in a hierarchic data storage system using frequency distribution tables
US6038571A (en) * 1996-01-31 2000-03-14 Kabushiki Kaisha Toshiba Resource management method and apparatus for information processing system of multitasking facility
CA2312444A1 (en) * 2000-06-20 2001-12-20 Ibm Canada Limited-Ibm Canada Limitee Memory management of data buffers incorporating hierarchical victim selection
WO2005059750A1 (en) * 2003-12-16 2005-06-30 Real Enterprise Solutions Development B.V. Memory management in a computer system using different swapping criteria
US20060074872A1 (en) * 2004-09-30 2006-04-06 International Business Machines Corporation Adaptive database buffer memory management using dynamic SQL statement cache statistics

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4035778A (en) * 1975-11-17 1977-07-12 International Business Machines Corporation Apparatus for assigning space in a working memory as a function of the history of usage
US4463424A (en) * 1981-02-19 1984-07-31 International Business Machines Corporation Method for dynamically allocating LRU/MRU managed memory among concurrent sequential processes
US4597041A (en) * 1982-11-15 1986-06-24 Data General Corp. Method and apparatus for enhancing the operation of a data processing system
US4774659A (en) * 1986-04-16 1988-09-27 Astronautics Corporation Of America Computer system employing virtual memory
JPS63211041A (ja) * 1987-02-25 1988-09-01 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン データのブロツクの転送方法
US4967353A (en) * 1987-02-25 1990-10-30 International Business Machines Corporation System for periodically reallocating page frames in memory based upon non-usage within a time period or after being allocated
US4926322A (en) * 1987-08-03 1990-05-15 Compag Computer Corporation Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management
US5063499A (en) * 1989-01-09 1991-11-05 Connectix, Inc. Method for a correlating virtual memory systems by redirecting access for used stock instead of supervisor stock during normal supervisor mode processing
US5043885A (en) * 1989-08-08 1991-08-27 International Business Machines Corporation Data cache using dynamic frequency based replacement and boundary criteria

Also Published As

Publication number Publication date
EP0567421A1 (en) 1993-10-27
US5423017A (en) 1995-06-06
JPH0689223A (ja) 1994-03-29
CN1094172A (zh) 1994-10-26
JP2610086B2 (ja) 1997-05-14
KR930022208A (ko) 1993-11-23
TW212839B (en) 1993-09-11

Similar Documents

Publication Publication Date Title
JP2856620B2 (ja) コンピュータ・システムにおけるメモリ管理方法及び装置
US6205519B1 (en) Cache management for a multi-threaded processor
US8166345B2 (en) Programming in a simultaneous multi-threaded processor environment
EP0814405B1 (en) Method and apparatur for information processing and memory allocation system
US6026475A (en) Method for dynamically remapping a virtual address to a physical address to maintain an even distribution of cache page addresses in a virtual address space
US6067608A (en) High performance mechanism for managing allocation of virtual memory buffers to virtual processes on a least recently used basis
USRE36462E (en) Method to control paging subsystem processing in virtual memory data processing system during execution of critical code sections
EP0690385A1 (en) Method and apparatus for managing memory in a computer system
EP0232960A2 (en) Method for automatically extending the size of a segment in a page segmented virtual memory data processing system
US4718008A (en) Method to control paging subsystem processing in a virtual memory data processing system during execution of critical code sections
US6366994B1 (en) Cache aware memory allocation
CN109582600B (zh) 一种数据处理方法及装置
CN111316220A (zh) 计算机存储器的性能计数器
US6408368B1 (en) Operating system page placement to maximize cache data reuse
US6457107B1 (en) Method and apparatus for reducing false sharing in a distributed computing environment
JP2528604B2 (ja) マルチビット・ベクトル履歴のリスト表示を利用するメモリ管理方法および装置
KR960015582B1 (ko) 에이저의 효율 증대 방법, 시스템 및 컴퓨터 시스템
EP0567420A1 (en) Multi-bit vector for page aging
EP0919927A2 (en) Dynamic memory allocation technique for maintaining an even distribution of cache page addresses within an address space
JPH11143779A (ja) 仮想記憶装置におけるページング処理システム
US20060294334A1 (en) Statement regarding federally sponsored-research or development
US5765210A (en) Allocation of real storage for hardware descriptors within virtual memory that are associated with on-line storage increments
US20230031304A1 (en) Optimized memory tiering
JPH0695970A (ja) ページ・テーブル項目の効率的処理方法及び装置
US6928492B1 (en) Computer I/O device access method

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee