KR100313384B1 - 전자데이타처리장치 - Google Patents

전자데이타처리장치 Download PDF

Info

Publication number
KR100313384B1
KR100313384B1 KR1019950007884A KR19950007884A KR100313384B1 KR 100313384 B1 KR100313384 B1 KR 100313384B1 KR 1019950007884 A KR1019950007884 A KR 1019950007884A KR 19950007884 A KR19950007884 A KR 19950007884A KR 100313384 B1 KR100313384 B1 KR 100313384B1
Authority
KR
South Korea
Prior art keywords
memory
size
return
data processing
pointer
Prior art date
Application number
KR1019950007884A
Other languages
English (en)
Other versions
KR950033843A (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 KR950033843A publication Critical patent/KR950033843A/ko
Application granted granted Critical
Publication of KR100313384B1 publication Critical patent/KR100313384B1/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99937Sorting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

전자 데이터 처리장치에 있어서 복귀메모리(3)의 블럭들은 표 1 에 있는 한 포인터로 출발하여 어드레스 포인터들에 의해서 연결된다. 표 1 에 있는 각 포인터는 2의 정수승으로 변화하는 소정의 크기 범위내의 메모리를 지정한다. 각 표 포인터에 의해서 지정된 메모리 블럭들은 크기순으로 (대안으로는 사용빈도에 의해서) 분류된다. 요구되는 크기의 메모리에 대한 탐색은 한 크기 범위내의 메모리 블럭들에 한정되므로 매우 효율적이다. 부가적으로 블럭(3)과 동일한 크기의 복귀 메모리 블럭들(7)은 분류 리스트 안에 있지 않지만 동일 크기의 블럭(3)에 의해서 지정되며 그 크기 블럭이 선택될 때 사용된다.

Description

전자 데이타 처리 장치
제 1도는 프린터를 지원하는 장치를 도시하는 도면.
제 2도는 대수적인 크기의 카테고리들 내의 메모리 크기들의 분포를 나타내는 데이터를 도시한 도면.
* 도면의 주요부분에 대한 부호의 설명
1 (1a 내지 1n) : 어드레스 표 3 (3a 내지 3i) : 메모리 블럭
5 : 데이타 처리기 9 : 프린터
11 : 용지 13a 및 13b : 피드 롤러(feed roller)
15 : 출구용 받침대 (exit tray)
[발명의 상세한 설명]
(기술분야)
본 발명은 동작 중 자유로이 사용할 수 있는 어드레싱 가능한 메모리를 사용하는 전자 데이타 처리에 관한 것으로, 특히 이러한 복귀메모리(returned memory)가 재사용을 위해 배치되는 전자 데이타 처리기(electronic data processor)에 의해서 제어되는 장치에 관한 것이다.
(발명의 배경)
전자 데이타 처리 장비의 일반적인 사용 중에 사용되어 온 전자 메모리 (electronic memory)는 재사용하기에 알맞게 자유로워진다. 통상 이러한 메모리 블럭들은 크기 변화가 크고 위치 변화도 심하다. 이러한 복귀메모리의 크기들과 그들의 위치의 패턴은 개개의 응용에 대해서 폭넓게 예측될 수 있지만 이 정보는 그 복귀메모리를 다시 한번 사용하기 위한 직접 사용에는 정확하지 못하다.
본 발명 이전에는 이러한 복귀메모리가 몇 가지 카테고리, 예컨대 크기나 어드레스의 순서에 의해서 분류되어 왔고 또한 이러한 분류를 통해서 탐색함으로써 재사용 하기에 알맞게 배치되어 왔다. Guenther 등의 미국 특허 제5,109,336호는 이러한 메모리 검색법(retrieval of memory)을 공개하고 있다. 이 특허에서는 상 이한 소정의 크기들로 된 메모리 블럭들은 수행되고 있는 프로그램에 의해서 할당되는 것이 공개되어 있다. 이러한 크기들로 된 복귀메모리는 이들 할당들에 더해 진다. 그 할당된 메모리를 사용하지 않는 경우 분류된 순서대로 다른 모든 복귀 메모리를 탐색한다. 본 발명에서는 이러한 할당된 메모리 블럭들을 사용하지 않으며 후술될 방식으로 분류된 복귀메모리를 통해서 탐색을 제한한다. 본 발명에서는 어드레스 포인터(address pointer)를 사용하여 복귀메모리의 검색을 개선하고 있다. 이러한 포인터 자체를 사용하는 것은 폭넓은 관행이다.
Courts 의 미국특허 제4,807,120호는 복귀메모리에 대한 메모리 관리에 관한 것을 제외하고는 본 발명과 특히 유사하지 않은 시스템에서의 포인터 용법을 공개하고 있다.
본 발명의 양호한 실시 예에서는 2의 하나의 정수승 만큼 변하는 크기에 따라서 복귀 데이타를 분류한다. 공중의(public) UNIX (고유상표) 소스 코드 리스팅 중 "gmalloc" 코드는 메모리를 그의 승수들 만큼 차이가 나는 블럭에 할당한다. 그러나 이 할당은 할당 후에 복귀된 메모리를 포함하고 있지 않으므로 본 발명과 유사한 어떠한 방식에서도 복귀메모리와 관련이 없다.
현대의 컴퓨터 설계에서는 통상 "히프(heap)" 즉 "자유 메모리(free memory)" 라고 하는 작업 메모리 공간 (working memory space)을 사용하고 있다. 데이타 처리기의 메모리 매니저 기능은 이 통상적으로 큰 메모리 공간을 제어하며 그 기능은 적당한 블럭을 식별하거나 생성하고 또한 그것을 할당으로서 알려진 처리에서 요청자에 대해 제어함으로써 메모리 블럭들에 대한 프로그램 요청에 응답한다. 가동중인 프로그램이 "프리잉 (freeing)" 이라고 알려진 처리로 소정의 메모리 블럭에서 행해지고 있는 경우, 그 처리는 메모리 매니저에 대해서 프로그램 제어를 포기한다. 이어서 메모리 매니저는 블럭을 나중에 동일 또는 다른 프로그램에서 다시 사용하기 위해 검색될 수 있는 몇가지 형태로 기억한다.
통상, 메모리 매니저들은 퍼포먼스(performance)를 위해 메모리 사용 효율을 희생해야 한다. 그들 시스템에서 메모리 블럭들을 분류하는데 드는 퍼포먼스 비용이 너무 크기 때문에 포괄적인 탐색 또는 지능적인 할당 전략이 실용적이지 못하다. 그 결과 그들의 탐색은 너무 작아서 유용하지 않은 수많은 블럭들과 자주 대면하게 되어, 프로그램 설계자가 그 요청을 충족하기에 충분히 큰 마주친 제 1 자유 블럭의 원하는 크기를 각인 하거나 제한된 수의 허용 블럭 크기들을 사용하고 필요한 크기와 제공되는 크기간의 차를 버리도록 강요한다. 이 방법은 저급에서 중급의 메모리 활용 비율을 갖는 시스템에서는 성공적이지만 보다 높은 메모리 활용을 요구하는 시스템에서는 그 낭비를 받아들일 수 있다. 이들 환경에서 이러한 시스템들은 상당한 탐색 노력을 들일 수 있고 조급한 "메모리 만원(memory full)" 상태에 이르게 하는 바람직하지 못한 프레그멘테이션 패턴(fragmentation patterns)을 나타낼 수 있다. 프레그멘테이션이 심해지는 경우 요청된 메모리의 10배 또는 그 이상이 사용가능 하더라도 "메모리 부족" 오류가 발생하는 것은 비정상이 아니다.
이 발명은 비순서적인 간단한 시스템보다 많은 초기 계산 오버 헤드를 필요로 하지만 극소수보다 많은 복귀메모리 블럭을 포함하고 있는 탐색에서 적자를 신속히 보상한다. 더욱이 본 발명의 독특한 방법은 "프레그멘테이션"으로 어려움을 겪는 메모리 시스템에서 공지된 퍼포먼스였던 훌륭한 할당 전략과 다른 메모리 향상을 할 수 있도록 설계되어 있다.
(본 발명의 개요)
본 발명에 의하면 필요한 메모리를 포괄하는 크기 범위의 메모리로 지정된 단일 워드를 어드레싱 함으로써 메모리에 대한 호출이 행해진다. 그 단일 워드에는 그 어드레스에 지정된 크기 범위 안에 있는 크기들로 된 메모리 블럭들의 분류된 리스트에 대한 어드레스 포인터가 들어있다.
유리하게는, 그 리스트는 최대 크기에서 최소 크기까지의 크기로 분류되어 있고 그 단일 어드레스 포인터는 그 분류된 리스트의 최대 메모리 블럭의 어드레스이다. 분류된 리스트의 각 엔트리(entry)에는 분류된 리스트에서의 다음 엔트리에 대한 포인터가 들어있고, 또한 메모리 크기를 정의하는 데이타와 그 데이타 블럭을 설명하는 다른 루틴 데이타도 들어 있다. 메모리 크기에 대해 할당된 포인터는 리스트의 제 1 메모리 블럭을 검사하는 어드레스로 사용된다.
(포인터로) 지시되는 이 메모리 블럭과 그 다음의 메모리 블럭들은 검사를 받게 되는데, 이 검사는 어드레싱된 하나의 메모리 블럭이 탐색된 것보다 더 큰(또는 작은) 크기의 메모리를 포함하고, 어드레싱된 다음의 메모리 블럭이 탐색된 것보다 더 작은(또는 큰) 크기의 메모리를 포함하는 것을 데이타 프로세서가 결정할 때까지 행해진다. 편차는 이로부터 취해진 잔류 메모리가 수행중인 동일 프로그램에 의해 다시 탐색된다는 가정하에서 2배 크기까지 허용 가능하다. 다른 변형은 사용빈도에 따라 분류된다. 복귀 메모리는 이 메모리의 크기 범위에 따라 리스트내로 분류된다. 양호하게는, 크기 범위는 그의 정수의 승수만큼 다르고, 이로써 복귀 메모리의 크기 범주는 크기를 규정하는 2진 데이타의 간단한 자리 옮김과 숫자 영에 이르는 자리 옮김을 카운트함으로써 결정된다.
현 프로그탬의 수행 중 메모리가 필요하다면 필요한 메모리 중에서 소정의 범위내의 메모리 블럭들만이 탐색된다.
또한, 제한된 크기의 범위 내에서 같은 크기의 메모리 블럭들은 분류 리스트에 포함되지 않지만, 이 분류 리스트를 검사함으로써 파악되는 하나의 크기 범위내의 제 2 포인터 어드레스에 의해 가리켜진다. 블럭이 사용중이면 그 블럭 내의 포인터는 분류 리스트의 제 1 블럭을 대체하기 위해 다른 블럭을 지시한다. 따라서, 통상의 탐색에서는 각 크기와 비슷한 복귀 메모리의 한 블럭만이 검사된다.
[실시예]
한정적이며 반복적인 기능을 수행하는 데이타 처리 제어 코드에 대한 표준용어는 루틴이다. 본원에서 이 용어는 상술된 기능을 수행하기 위해 데이타 처리동작을 프로그램하는 제어 코드를 의미하는 것으로 사용한다. 루틴은 통상 이 루틴의 최초 코드를 어드레싱하는 다른 루틴에 의해 실행된다 (통상용어 : 호출된다).
이러한 응용에서 지정된 어드레스를 어드레싱하는 데이타 프로세서에 의해 도달한 어드레스를 찾아내든지, 또는 도달한 어드레스나 결국 도달한 어드레스를 이끄는 다른 포인터를 비슷하게 가리키는 포인터를 갖는 어드레스나 도달한 어드레스에 속하는 포인터를 찾아내는 경우에, 포인터는 다른 어드레스를 지정하는 것으로 알려져 있다.
이 실시예는 표준 데이타 처리기능의 어드레스들을 사용하는데, 이들은 디지탈 코드로서 이러한 어드레스들을 사용하여 어드레싱하는 표준의 전자 메모리이다. 이는 종래 기술 사항이므로 더 이상 상세히 설명하지 않는다. 포인터는 현 어드레스를 포인터 어드레스와 멀리 떨어진 어떤 어드레스와 연관시키는 어드레스로서 동작하는 디지탈 코드이다.
실제 구현은 32 비트 워드 상에서 이루어지는데, 이는 각 어드레스가 32 비트로 구성되고 참조하는 메모리의 크기는 32 비트 워드가 나타내는 수치임을 의미한다(다른 워드 크기로는 16 비트 워드가 있으며 또한 양호하다).
이와 같은 바람직한 구현은 포인터 같은 응용에서 특히 살펴볼 수 있는데, 세 가지 특성, 즉 상당히 큰 크기의 히프, 심각한 프레그멘테이션 효과 및 성능과 자원의 제약 등의 어드레스싱 측면에서 메모리를 적절히 사용하도록 설계된다.
제 1도에 도시된 바와 같이, 이러한 구현의 첫 번째 요소는 0 내지 7, 2En 내지 2En+1 까지의 사용 가능한 모든 메모리 블럭의 크기를 나타내는 어드레스(1)의 표이다.
여기서, n 은 3 과 12 사이의 연속적인 정수로서 32,768 보다 같거나 크다. 표 1 의 각 어드레스는 0 내지 7, 2En 내지 2En+1 및 32,768 이상의 크기 범위 내에서 복귀 메모리 블럭의 분류 리스트에 대한 엔트리용의 어드레스 포인터를 구성한다. 따라서, 표 1 의 어드레스(1a)는 0 내지 7 까지의 모든 메모리 블럭 크기를 지정하는 포인터를 구비하며, 표 1 의 어드레스(1b)는 8 내지 15 까지의 모든 메모리 블럭의 크기를 지정하는 포인터를 구비하며, 표 1 의 어드레스(1c)는 16 내지 31 까지의 모든 메모리 블럭의 크기를 지정하는 포인터를 구비하며, 표 1의 어드레스(1d)는 32 내지 63 까지의 모든 메모리 블럭의 크기를 지정하는 포인터를 구비하며, 표 1 의 어드레스(1e)는 64 내지 127 까지의 모든 메모리 블럭의 크기를 지정하는 포인터를 구비하며, 표 1 의 어드레스(1f)는 128 내지 255 까지의 모든 메모리 블럭의 크기를 지정하는 포인터를 구비하며, 표 1 의 어드레스(1g)는 256 내지 511 까지의 모든 메모리 블럭의 크기를 지정하는 포인터를 구비하며, 표 1 의 어드레스(1h)는 512 내지 1023 까지의 모든 메모리 블럭의 크기를 지정하는 포인터를 구비하며, 표 1 의 어드레스(1i)는 1024 내지 2047 까지의 모든 메모리 블럭의 크기를 지정하는 포인터를 구비하며, 표 1 의 어드레스(1j)는 2048 내지 4095 까지의 모든 메모리 블럭의 크기를 지정하는 포인터를 구비하며, 표 1 의 어드레스(1k)는 4096 내지 8191 까지의 모든 메모리 블럭의 크기를 지정하는 포인터를 구비하며, 표 1 의 어드레스(11)는 8192 내지 16,383 까지의 모든 메모리 블럭의 크기를 지정하는 포인터를 구비하며, 표 1 의 어드레스(1m)는 16,384 내지 32,767 까지의 모든 메모리 블럭의 크기를 지정하는 포인터를 구비하며, 표 1 의 어드레스(1n)는 32, 768 이상의 모든 메모리 블럭의 크기를 지정하는 포인터를 구비한다.
포인터가 소정의 크기의 메모리를 지시하고 있는 표 1 을 해시 빈 구조 (hash bin structure)라고 하며 "빈(bin)" 이라는 용어는 메모리 블럭을 일련의 상이한 크기 범위로 분리하는 것을 가리킨다.
제 1도에 도시된 바와 같이, 제 1도에 있는 각 어드레스들은 한 개의 메모리 블럭 3 을 식별하는 포인터이다. 따라서, 어드레스(1f)는 메모리 블럭(3a)에 대한 포인터이며, 그 메모리 블럭은 크기가 128 워드와 255 워드 사이인 자유 메모리의 최대 블럭이다. 크기가 128 보다 큰 자유 메모리의 작은 블럭들이 있다면 메모리 블럭(3a)의 포인터는 다음으로 작은 크기의 메모리 블럭(3b)에 대한 어드레스이다. 크기가 128 보다 크며 여전히 작은 자유 메모리의 작은 블럭들이 있다면 메모리 블럭(3b)의 포인터는 다음으로 작은 크기의 메모리 블럭(3c)에 대한 어드레스이다. 통상적인 상황에서 소정의 하나의 빈 안에는 수 백 개의 자유 메모리 블럭들이 있을 수 있다. 하나의 리스트의 최종 블럭에는 모든 비트들이 0 인 0 포인터가 있고 그 포인터는 다른 작은 블럭을 지적하지 않는 반면에 그 리스트의 종료를 가리키는 것으로 인식된다. 적당한 크기의 메모리에 대해서 소정의 빈에 있는 거의 모든 메모리 블럭(3)이 탐색되는 반면, 데이타 처리기(5)에 의해 검색될 메모리 범위 안에 있는 블럭(3,7)을 포함하는 메모리에 대해서 그 빈을 구성하고 있는 표 1 의 어드레스를 어드레싱하는 데이타 처리기(5)에 의해서 탐색이 개시되므로 기타의 메모리 블럭은 탐색되지 않는다. 예컨대 데이타 처리기(5)가 3000 워드 크기의 자유 메모리를 검색하는 경우 메모리 선택에 대한 제어 루틴은 표 1 리스트의(1j)를 어드레싱한다. 다음에 데이타 처리기(5)의 제어 루틴은 1j 의 빈에서 가장 큰 메모리 블럭(3f)에 도달하기 위해서 1j 에 있는 포인터를 어드레스로서 수행한다. 제 1도에는 두 세 개의 복귀메모리들(3,7)만이 예시를 위해 도시되어 있다. 각 리스트는 0 포인터를 갖는 메모리 블럭에서 종료하고 3e, 3h 및 3i 는 리스트(1f, 1a, 1n)에 대해서 도시되어 있다.
수행되고 있는 프로그램 코드가 필요한 순차대로 명령어와 데이타에 도달하는데 유효하다면, 데이타 처리 루틴에서 순차대로 억세스되는 명령어나 데이터가 그러한 순차대로 메모리에 있지 않을 수도 있음은 물론 이해될 것이며 흔히 있는 일이다. 이것은 자유 메모리에 대한 어드레스의 산술적 순차의 끝부분이 자유 메모리의 다른 부분에 대한 어떤 종류의 연결 명령어를 포함하고 있을 수도 있기 때문에, 메모리 블럭에 대해서도 마찬가지이다. 그러나 통상 이 실시예에서는 한 블럭의 메모리는 두개의 데이타 처리 어드레스와 그들의 산술적 중간 어드레스들 사이에 존재하는 메모리이며, 복귀메모리의 각 블럭에는 그의 크기를 명백하게 정의하는 데이타가 들어있다.
마찬가지로 포인터 어드레스는 메모리의 실제의 블럭을 지정하는 다른 어드레스와 연관될 수 있기 때문에 물리적으로 반드시 포인터가 표현하는 메모리 근처에 있지는 않다. 그러나 통상 이 응용예에서 자유 메모리(3)의 각 블럭의 포인터 어드레스는 그것이 다른 경우에는 사용되지 않기 때문에 그 메모리를 물리적으로 점유하고 있다. 마찬가지로 곧이어 설명될 "3차원" 포인터를 포함하여 그 메모리 블럭(3)의 크기와 다른 부수적인 정보를 정의하는 데이타도 포인터가 다른 경우에 사용되지 않기 때문에 그의 메모리 블럭(3)을 물리적으로 점유하고 있다. 메모리 블럭(3)은 종래와 같이 역방향 탐색에서의 동작 효율을 위해 포인터를 선행 메모리 블럭(3)으로 이송한다.
해시표(hash table) 1 은 1차원 탐색으로 고려될 수 있고 표 1 의 각 빈으로부터 분류된 메모리 블럭들(3)은 2차원 탐색으로 고려될 수 있다. 탐색은 그 분류리스트로부터 동일 크기의 메모리 블럭(3)을 1개 이상 취함으로써 더욱 한정되고 더욱 효율화된다. 즉 제 1도에서 둥근 도트(7)로 도시되어 있는 바와 같이 동일한 크기의 메모리 블럭들은 분류 리스트에서 그 블럭들 3 의 부분이 아니다. 그 대신 단 한 개만이 그 리스트 내에 있다. 예컨대 두개의 다른 블럭들(7a,7b)로 도시된 블럭(3a)이다. 블럭(3a)에는 소정의 위치에 제 2 어드레스 포인터가 들어있고, 이는 블럭(3a)과 크기가 같은 블럭(7a)이 존재하는 것을 나타냄으로서 인식된다.
블럭(3a)이 사용상 선택되는 경우 제 2 포인터의 존재는 데이타 처리기 5 에 의해서 판정된다. 제 2 포인터가 확인되면 블럭(3b)에 대한 분류 포인터는 블럭 (7a)으로 적용되고 블럭(7b)에 대한 제 2 포인터는 변경되지 않는다. 그 이유는 다른 블럭(7b)이 존재하고 있고 다른 블럭은 블럭들(3a,7a)과 크기가 같기 때문이다. 동일한 크기의 블럭이 없다면 제 2 포인터는 모두 0 일 수 있는 0 포인터이고 그 0 포인터는 다른 메모리 블럭(7)을 지정하지 않음으로써 인식된다. 제 1도에는 이러한 0 포인터가 아래 방향을 향해서 구부려져 있는 화살표로 제시되어 있다.
메모리 블럭들(7)은 블럭(7c,7d)으로 도시된 바와 같이 개수가 가변적이며 블럭(7e)에 도달하기 위해 생략된 도면 일부에 개수가 부가될 수 있다. 리스트(1a)의 마지막 블럭은 동등한 크기의 블럭들(7g,7h)을 지정하며 그 마지막 블럭(7h)은 그 리스트에 대한 0 포인터를 가지고 있다. 데이타 처리기(5)에 의한 시스템 메모리에 사용되는 제 1 블럭은 다음 블럭(7), 이 예에서는 블럭(7g)이다. 이어서 나머지 블럭(7), 예컨대 블럭(7h)이 사용된다. 사용되는 마지막 블럭은 블럭(3)이다.
분류 리스트에 단 한 개의 블럭이 들어있는 동안 동등한 크기의 메모리 블럭들(7)의 이러한 연결은 크기면에서 근접한 블럭들을 함께 묶도록 확장될 수 있다.
그럼에도 불구하고 이 기술은 그 카테고리에 있는 모든 엔트리가 크기면에서 63 장소이상 변화할 수 없기 때문에 작은 범위 예를 들면, 64 내지 127의 크기들에 특히 효율적이다. 동일 크기의 리스트들은 이 크기 범위에서 매우 클 수도 있다.
분류된 리스트로부터 한 아이템을 후술하기 위한 기준과 같이 그 추출된 메모리(3)에 대한 포인터는 그 리스트에서의 다음 블럭에 대한 포인터로 변경된다. 즉 3b 가 사용을 위해 선택되는 경우 3a 에 있는 포인터는 3c 에 대한 포인터로 변경되고 다음의 낮은 크기의 블럭(3)은 남아있는다. 동일 크기의 블럭(7)을 갖고 있는 블럭(3b)이 선택되는 경우 3c 에 있는 리스트 포인터는 7d 에 대한 포인터로 변경되고 블럭(7c)은 사용을 위해 해제된다.
이 양호한 사용예는 프린터(9)이다. 이 프린트는 피드 롤러(13a, 13b)에 의해서 용지(11)의 인쇄된 페이지를 텍스트나 그래픽 또는 그 둘의 종료된 페이지로서 사용하기 위해 출구 선반(15)으로 배출함으로써 제안된다. 통상 복귀 메모리는 페이지 준비 소프트웨어에 의해서 분명하게 지정된다.
따라서, 데이타 처리기(5)는 통상 임의의 어드레스에서의 임의의 크기의 임의의 메모리 블럭이 더 이상 요구되지 않음을 분명하게 고지받는다. 이것은 재사용을 위한 이러한 메모리의 복귀를 구성한다. 메모리로 복귀하기 위한 다른 기술들, 예컨대 한 메모리 블럭에 대한 호출들을 카운트하고 카운트가 0 에 도달할 때 복귀로서 블럭에 작용하는 기술이 알려져 있다.
본 발명은 결국 이러한 복귀메모리를 높은 속도 및 데이타 처리 효율로 배치하는 것이기 때문에 가상적으로 복귀메모리를 지정하거나 배치하는 임의의 방법은 본 발명에서 구성되고 있고 본 발명의 일부를 형성하지는 않는다.
통상 복귀메모리는 개시 및 종료 어드레스가 주어진다.
이 실시예에서는 일반적인 경우와 같이 크기는 2진수로서 메모리 블럭에 헤더안에 분명하게 포함한다(헤더는 관련 데이타를 위해 유지되는 메모리 블럭들의 일부이다). 이어서 그 크기 숫자는 모든 자리수가 나갈 때까지 2 분할 의 방향으로 이동된다. 이동의 수가 그 메모리 블럭증 낮은 크기를 정의하며, 사용된 자연 2 진 시스템에서 각 열은 선행열의 크기 보다 2 배의 크기를 나타내기 때문에 그 크기의 2 배 보다 클 수 없다(마찬가지로 지수 가산 시스템에서는 지수만이 사용될 수 있으며 빈들은 그 베이스의 정수승의 크기로 변화한다). 하나의 빈에 대해 분류된 리스트를 탐색함에 있어서 제 1 블럭 3 이 너무 작으면 그 분류된 리스트의 잔류 블럭들은 너무 작을 것이다. 이어서 루틴은 설명된 바와 같이, 비어있지 않은 다음의 가장 큰 빈을 통해서 탐색을 계속한다. 극히 작은 블럭(3)에 도달하면, 또는 빈의 분류된 리스트의 끝 부분에 도달하면 시스템은 앞서서 직면했던 블럭들(3)중에서 선택하도록 적용된다. 양호한 실시예에서 그 탐색에 대한 크기면에서 가장 가깝게 사용할 수 있는 메모리인 다음으로 큰 블럭은 크기면에서 그 탐색에 가까운 두 세 개의 워드들이 있을 때 사용된다.
이것은 보다 큰 블럭들을 보존한다. 대개 한 블럭을 동일한 크기 순서로 두기 위하여 블럭들을 쪼개는 것은 충분히 큰 블럭(3)이 크기면에서 가깝지 않을 때 유용한 크기의 블럭들을 생성하며 그 크기의 2 배임이 곧 알려지는 블럭이 사용된다.
검색은 비어있지 않는 더 높은 빈들에서 계속되어 사용되고 있는 부분 중에서 검색된 크기의 2 배인 블럭을 찾는다. 그 블럭의 나머지 부분은 복귀메모리로 취급되며 그 비 사용 부분의 크기를 포괄하는 메모리에 대한 비의 분류 리스트에 의해서 배치되는 메모리에 포함되어 있다. 순서상 검색의 우선순위는 정확한 크기, 두세 개의 워드 큰 것, 크기가 두 배인것, 2 배보다 큰 것 그리고 큰 것에 직면한 제 1 블럭순이다(제 1 블럭의 어드레스는 그것을 찾았을 때 기억되고 크기가 두배인 블럭의 어드레스는 정확한 크기 및 두 세 워드 큰 블럭이 탐색되는 동안 기억된다).
분류 루틴은 메모리 블럭의 각 복귀로 안내된다. 빈 리스트는 방금 복귀된 메모리 블럭의 크기에 비해 직면된 각 블럭(3)의 크기를 갖는 한쪽 끝에서부터 단순히 탐색된다. 그 비교가 작은 것에서부터 큰 것으로 변경될 때 큰 블럭(3)에 있는 포인터는 방금 복귀된 메모리를 지정하도록 변경되며 그 방금 복귀된 메모리는 그 작은 메모리 블럭(3)을 지정하는 것에 더해지는 포인터를 갖는다. 또한 상술한 바와 같이, 역방향 포인터들과 동일 크기의 포인터들은 전술한 바와 같이 적용된다.
새로운 메모리 크기가 현재 블럭(3)과 같으면 그 분류 리스트에 더해지지 않지만 동일 크기의 리스트에 있는 앞선 최종 리스트에 의해서 지정된다.
(장점 및 범위)
본 발명은 다양한 컴퓨터 환경에서 퍼포먼스를 개선하기 쉽지만 특히 몇 가지 최악의 컴퓨터 시스템 관리 시나리오, 즉 불규칙하게 크기가 나누어진 메모리 블럭들, 폭 넓게 변화하는 블럭 수명 및 "런 풀(run full)"의 경향이 있는 비교적 큰 주 메모리를 조작하기에 매우 적합하다. 이들은 레이저 프린터와 멀티태스킹 메모리 사용과 같은 응용들을 요구하는 모든 특징들이다. 본 발명의 강점으로는 최고의 탐색 효율, 저기억의 오버헤드, 정확한 정합이 존재하지 않은 경우의 블럭 크기 대체의 본질적인 능력 및 자유 메모리 블럭들의 우수한 순서 배열이 있다. 게다가 본 발명은 디스크 저장을 포함하여 광범위한 전자 메모리에 응용 가능하다.
탐색 효율을 제공하기 위해서 탐색되어야 할 요소들의 수가 감축된다. 블럭들을 크기로 묶는 것을 통해 탐색은 모든 그룹들을 데이타 프로세서(5)에 의해 검색된 블럭보다 작고 큰 양의 순서에서 대충 제거함으로써 감출된다(너무 작은 블럭과 너무 큰 블럭은 제외. 이들은 더 넓게 그룹화된다).
단순한 선형적인 크기 그룹화는 실제 응용에 있어서 불규칙하게 크기가 분류된 블럭 분포가 음의 지수 함수 상수 E 마이너스 X(X 는 메모리 크기)의 일반적인 특성 곡선을 갖기 때문에 언급되지 않는다. 이런 이유로 블럭들은 같은 또는 두세개의 빈으로 카테고리가 나누어지는 경향이 있다.
대조적으로 양호한 실시예의 빈의 지수적 정의는 빈의 범위에 걸친 블럭 분포를 "평탄화(flattening)"하는 결과를 갖는다.
제 2 도는 PostScript(고유상표) 인터프린터에 대한 파일을 인쇄함으로써 발생된 평균 리스트 길이를 나타낸다. 이것은 양호한 실시예와 같이 설명된 바와 같이 2 의 승수로서 지수적으로 정의된 중간 빈들을 갖는 수백 개의 메모리 할당을 요구하였다. 빈들의 내용들의 다소 등급 부여된 분산이 명백하다. 마찬가지로 큰 빈에는 큰 메모리의 블럭들이 들어있고 시스템 메모리는 크기가 유한하므로 그들은 그들의 분류 리스트에서 많은 수의 블럭들(3)을 가질 수 없다.
그 이유는 그렇게 많은 량의 메모리는 간단히 이용할 수 없기 때문이다. 그리고 작은 빈에는 본질적으로 제한되어 있는 총 범위보다 더 많은 블럭들이 들어 있다.
프린터에 대한 시험 응용에서 요청의 규모는 메모리 블럭에 대해 크기가 512 바이트보다 크지 않았고 그 요청된 메모리 블럭들 중 97.8% 는 그 분류에 있는 16 내지 128 개의 아이템들 중 최악의 경우의 탐색 길이를 갖는 빈들로부터였다. 물론 실제의 탐색 길이는 이들 최고치 보다는 훨씬 적다.
그리고 리스트들을 순서 배열하기 때문에 요구된 탐색의 단계수는 통계적으로 탐색되고 있는 평균 길이의 반을 향하는 경향이 있다. 복잡한 프린터에 대한 시험 사례에서는 총 일량을 통해서 탐색당 3.86 블럭들(3)의 평균적인 탐색 깊이를 발생하였다.
대안으로 임의의 메모리 크기를 선호하는 응용에 있어서 블럭들(3)의 리스트는 크기로 분류될 필요는 없고 초기에 분류되지도 않는다. 그 대신에 본 발명 이전의 메모리 억세싱에 대해서 알려져 있는 바와 같이 블럭들은 복귀된 순서로 리스트 된다. 즉 매시간 임의의 크기의 메모리 블럭이 탐색되고 사용되며 사용된 그들의 어떤 복제 크기 블럭들이 탐색 리스트의 전면으로 이동된다. 그들의 복제들을 따라서 새롭게 복귀된 블럭들은 존재한다면 탐색 리스트의 전면에서 삽입된다.
탐색이 안내됨에 따라서 더 자주 사용되는 크기들의 블럭들은 리스트의 전면 가까이 이동되는 경향이 있다.
큰 리스트에 대한 다른 대안으로서 표 1 의 빈 어드레스들은 간격을 두고 크기로 분할된 제 2 표를 어드레스할 수 있다. 그 제 2 표의 각 요소는 그 제 2 표 요소의 크기내에 블럭들(3)의 리스트에 대한 어드레스를 가지고 있다.
본 발명의 정신과 범위 내에서 다른 변형들이 예견될 수 있다. 그 이유는 본 발명이 자유 메모리의 존재를 결정하거나 메모리를 어드레싱하는 방식에 의존하지 않기 때문이며 또한 리스트에 있는 메모리 블럭들을 리스팅하고 분류하는 방식에 폭넓은 변형이 수용될 수 있기 때문이다. 마찬가지로 빈 크기 (bin sizes)의 지수적(즉 양호한 실시예에서의 베이스(2)에 대한 대수) 분포는 유리하기는 하지만 본 발명에 관해 설명된 바와 같은 다른 장점들을 실현시키는데 필수적인 것은 아니다.

Claims (14)

  1. 어드레스 코드들에 의해서 어드레싱 가능한 재사용 가능 전자메모리를 갖는 전자 데이타 처리장치에 있어서,
    상이한 포인터 어드레스들의 리스트,
    메모리의 복귀된 연속 영역들의 크기를 소정의 크기 범위 이내로 결정하기 위한 루틴,
    각각의 상기 복귀메모리 블럭에 대해 결정된 상기 소정의 크기 범위 내에서 메모리 블럭들에 도달하는 상기 리스트의 한 어드레스로부터 각각의 상기 복귀메모리에 도달하도록 상기 리스트의 포인터 어드레스 또는 리스트로부터 도달된 포인터 어드레스를 변경하기 위한 루틴 및,
    상기 리스트에 있는 다른 포인터 어드레스에 의해 도달된 크기보다 작으며 요구된 크기의 메모리에 도달하는 상기 리스트의 상기 포인터 어드레스들 중 한 포인터 어드레스를 어드레싱함으로써 자유 메모리를 어드레싱하기 위한 루틴을 포함하며,
    상기 리스트의 각 포인터 어드레스로부터 도달한 선택된 크기들은 실질적으로 작은 크기로부터 큰 크기까지 연속된 크기들인 전자 데이타 처리장치.
  2. 제 1 항에 있어서, 상기 선택된 크기들은 2 의 하나의 정수승씩 변화하는 전자 데이타 처리장치.
  3. 제 1 항에 있어서, 상기 복귀메모리가 측정된 후 상기 복귀메모리를 분류하기 위한 루틴을 부가로 구비하며,
    상기 분류는 분류된 상기 복귀메모리에 도달하는 포인터 어드레스에 의해서 도달된 다른 복귀메모리들에 관련된 전자 데이타 처리장치.
  4. 제 3 항에 있어서, 상기 분류는 최근 사용에 의해서 상기 복귀메모리를 배치하는 전자 데이타 처리장치.
  5. 제 3 항에 있어서, 상기 분류는 크기 순으로 상기 복귀메모리를 배치하는 전자 데이타 처리장치.
  6. 제 5 항에 있어서, 상기 복귀메모리의 크기와 이전의 복귀메모리의 크기를 비교하고, 상기 복귀메모리가 현재의 복귀메모리의 크기와 비슷한 소정의 크기 범위 내에 있을 때 상기 분류로부터 분류되는 상기 복귀메모리를 제거하며, 한 포인터 어드레스를 비슷한 크기의 상기 복귀메모리에 도달하는 상기 현재의 메모리로 공급하기 위한 루틴을 부가로 포함하는 전자 데이타 처리장치.
  7. 제 6 항에 있어서, 상기 데이타 처리장치에 의해 제어되는 프린터를 포함하는 전자 데이타 처리장치.
  8. 제 1 항에 있어서, 상기 데이타 처리장치에 의해 제어되는 프린터를 포함하는 전자 데이타 처리장치.
  9. 제 2 항에 있어서, 상기 데이타 처리장치에 의해 제어되는 프린터를 포함하는 전자 데이타 처리장치.
  10. 제 3 항에 있어서, 상기 데이타 처리장치에 의해 제어되는 프린터를 포함하는 전자 데이타 처리장치.
  11. 제 4 항에 있어서, 상기 데이타 처리장치에 의해 제어되는 프린터를 포함하는 전자 데이타 처리장치.
  12. 제 5 항에 있어서, 상기 데이타 처리장치에 의해 제어되는 프린터를 포함하는 전자 데이타 처리장치.
  13. 어드레스 코드들에 의해서 어드레싱 가능한 재사용 가능 전자메모리를 가지는 전자데이타 처리장치에 있어서,
    소정의 범위 내에서 크기 차를 결정하기 위해 복귀메모리의 크기와 이미 복귀된 메모리의 크기를 비교하기 위한 루틴,
    제 1 어드레스 포인터들로부터 상기 소정의 크기 범위 내의 각 복귀메모리에 도달하기 위해 상기 제 1 어드레스 포인터들을 상기 소정의 범위 안에 있는 크기의 상기 복귀 메모리로 공급하기 위한 루틴,
    상기 제 1 소정의 범위와 상이한 크기의 복귀메모리들에 도달하기 위하여 제 2 어드레스 포인터들을 상기 복귀메모리 중 선택된 복귀메모리들로 공급하기 위한 루틴,
    상기 제 2 포인터들을 어드레싱함으로써 재 사용될 복귀 메모리를 찾기 위한 루틴,
    실질적으로 동일한 크기의 복귀메모리에 도달하기 위하여 재 사용을 위해 발견된 상기 메모리에 있는 상기 제 1 포인터를 검사하기 위한 루틴 및,
    재사용을 위해 발견된 메모리와 실질적으로 동일한 크기의 복귀메모리 중 선택된 복귀메모리들에 상기 제 2 어드레스 포인터를 공급하기 위한 루틴을 포함하는 전자 데이타 처리장치.
  14. 제 1 항에 있어서, 상기 제 1 포인터들은 동일한 크기의 복귀메모리들에 도달하도록 공급되는 전자 데이타 처리장치.
KR1019950007884A 1994-03-31 1995-03-31 전자데이타처리장치 KR100313384B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US221,420 1994-03-31
US08/221,420 US5577243A (en) 1994-03-31 1994-03-31 Reallocation of returned memory blocks sorted in predetermined sizes and addressed by pointer addresses in a free memory list

Publications (2)

Publication Number Publication Date
KR950033843A KR950033843A (ko) 1995-12-26
KR100313384B1 true KR100313384B1 (ko) 2001-12-28

Family

ID=22827747

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950007884A KR100313384B1 (ko) 1994-03-31 1995-03-31 전자데이타처리장치

Country Status (6)

Country Link
US (1) US5577243A (ko)
EP (1) EP0675442B1 (ko)
JP (1) JPH0883210A (ko)
KR (1) KR100313384B1 (ko)
BR (1) BR9501294A (ko)
DE (1) DE69520765T2 (ko)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6131150A (en) * 1993-10-05 2000-10-10 Digital Equipment Corporation Scaled memory allocation system
GB2292821A (en) * 1994-09-03 1996-03-06 Ibm Sorting method.
US5897660A (en) * 1995-04-07 1999-04-27 Intel Corporation Method for managing free physical pages that reduces trashing to improve system performance
US5835959A (en) * 1995-12-01 1998-11-10 Sand Technology Systems International, Inc. Memory management system and method using dual indexing structures
AU713318B2 (en) * 1995-08-31 1999-11-25 Sand Technology Systems International Inc. Memory management system and method using dual indexing structures
US5671406A (en) * 1995-10-18 1997-09-23 Digital Equipment Corporation Data structure enhancements for in-place sorting of a singly linked list
US6427147B1 (en) 1995-12-01 2002-07-30 Sand Technology Systems International Deletion of ordered sets of keys in a compact O-complete tree
US5758353A (en) * 1995-12-01 1998-05-26 Sand Technology Systems International, Inc. Storage and retrieval of ordered sets of keys in a compact 0-complete tree
US5784699A (en) * 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
US6119114A (en) * 1996-09-17 2000-09-12 Smadja; Frank Method and apparatus for dynamic relevance ranking
US6173298B1 (en) 1996-09-17 2001-01-09 Asap, Ltd. Method and apparatus for implementing a dynamic collocation dictionary
US5950231A (en) * 1996-11-25 1999-09-07 Northern Telecom Limited Memory manager system
US6182089B1 (en) * 1997-09-23 2001-01-30 Silicon Graphics, Inc. Method, system and computer program product for dynamically allocating large memory pages of different sizes
US6065019A (en) * 1997-10-20 2000-05-16 International Business Machines Corporation Method and apparatus for allocating and freeing storage utilizing multiple tiers of storage organization
US6038636A (en) * 1998-04-27 2000-03-14 Lexmark International, Inc. Method and apparatus for reclaiming and defragmenting a flash memory device
US6510504B2 (en) 1998-06-29 2003-01-21 Oracle Corporation Methods and apparatus for memory allocation for object instances in an object-oriented software environment
US6430665B1 (en) * 1999-06-25 2002-08-06 Sun Microsystems, Inc. System and method for heuristically allocating memory
US6523085B1 (en) 1999-12-08 2003-02-18 International Business Machines Corporation Disk drive and method of multi-block size addressing
GB0024927D0 (en) * 2000-10-11 2000-11-29 Univ London A data structure memory allocator and memory management system
US7330956B1 (en) * 2002-04-16 2008-02-12 Emc Corporation Bucket based memory allocation
US7747834B2 (en) * 2004-09-30 2010-06-29 Kyocera Wireless Corp. Memory manager for an embedded system
US8526049B2 (en) * 2006-03-31 2013-09-03 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for display list management
GB2449398B (en) * 2006-09-29 2009-02-11 Imagination Tech Ltd Improvements in memory management for systems for generating 3-dimensional computer images
SE531837C2 (sv) * 2007-12-05 2009-08-25 Oricane Ab Förfarande och datorprogramprodukt
US8782371B2 (en) * 2008-03-31 2014-07-15 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for memory management for rasterization
US8228555B2 (en) * 2008-03-31 2012-07-24 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for parallel display list rasterization
US8817032B2 (en) 2008-08-29 2014-08-26 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for framebuffer management
US8854680B2 (en) * 2008-09-11 2014-10-07 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for optimal memory allocation units
US8861014B2 (en) * 2008-09-30 2014-10-14 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for optimized printer throughput in a multi-core environment
US8135912B2 (en) 2009-05-18 2012-03-13 Hola Networks, Ltd. System and method of increasing cache size
US8560604B2 (en) 2009-10-08 2013-10-15 Hola Networks Ltd. System and method for providing faster and more efficient data communication
US8751736B2 (en) * 2011-08-02 2014-06-10 Oracle International Corporation Instructions to set and read memory version information
US10896062B2 (en) * 2011-11-07 2021-01-19 Sap Se Inter-process memory management
US9043559B2 (en) 2012-10-23 2015-05-26 Oracle International Corporation Block memory engine with memory corruption detection
GB2506706B (en) 2013-04-02 2014-09-03 Imagination Tech Ltd Tile-based graphics
US9241044B2 (en) 2013-08-28 2016-01-19 Hola Networks, Ltd. System and method for improving internet communication by using intermediate nodes
US9672298B2 (en) 2014-05-01 2017-06-06 Oracle International Corporation Precise excecution of versioned store instructions
CN105302739A (zh) * 2014-07-21 2016-02-03 深圳市中兴微电子技术有限公司 一种内存管理方法和装置
US9195593B1 (en) 2014-09-27 2015-11-24 Oracle International Corporation Hardware assisted object memory migration
CN104850505B (zh) * 2015-05-26 2017-08-25 左应鹏 基于链式堆叠的内存管理方法与系统
US10318198B2 (en) * 2017-02-23 2019-06-11 Ralph Crittenden Moore Optimizable heap for embedded and similar systems with enhanced debugging and self-healing
EP3761613B1 (en) 2017-08-28 2023-02-15 Bright Data Ltd. Method for improving content fetching by selecting tunnel devices
US11190374B2 (en) 2017-08-28 2021-11-30 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
EP4053717A3 (en) 2019-02-25 2022-10-26 Bright Data Ltd. System and method for url fetching retry mechanism
EP4027618A1 (en) 2019-04-02 2022-07-13 Bright Data Ltd. Managing a non-direct url fetching service

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4807120A (en) * 1987-04-30 1989-02-21 Texas Instruments Incorporated Temporal garbage collector with indirection cells
US5109336A (en) * 1989-04-28 1992-04-28 International Business Machines Corporation Unified working storage management
US5263136A (en) * 1991-04-30 1993-11-16 Optigraphics Corporation System for managing tiled images using multiple resolutions
US5490274A (en) * 1993-06-30 1996-02-06 Microsoft Corporation Modified buddy system for managing disk space

Also Published As

Publication number Publication date
KR950033843A (ko) 1995-12-26
BR9501294A (pt) 1996-01-30
DE69520765D1 (de) 2001-05-31
DE69520765T2 (de) 2001-10-18
EP0675442B1 (en) 2001-04-25
US5577243A (en) 1996-11-19
EP0675442A1 (en) 1995-10-04
JPH0883210A (ja) 1996-03-26

Similar Documents

Publication Publication Date Title
KR100313384B1 (ko) 전자데이타처리장치
US4991087A (en) Method of using signature subsets for indexing a textual database
US6539373B1 (en) Contextual searching by determining intersections of search results
US6862602B2 (en) System and method for rapidly identifying the existence and location of an item in a file
US6115705A (en) Relational database system and method for query processing using early aggregation
Aho et al. Optimal partial-match retrieval when fields are independently specified
US5218700A (en) Apparatus and method for sorting a list of items
US6725223B2 (en) Storage format for encoded vector indexes
EP0516266A2 (en) Merging sorted lists
US6067547A (en) Hash table expansion and contraction for use with internal searching
JP4176857B2 (ja) リファレンスされたオブジェクトを管理するための3状態リファレンスの使用
US5671406A (en) Data structure enhancements for in-place sorting of a singly linked list
WO1998039715A9 (en) System and method for rapidly identifying the existence and location of an item in a file
EP0874316A2 (en) System and method for assisting exact garbage collection by segregating the contents of a stack into sub stacks
US4510567A (en) Qualifying and sorting file record data
EP0381418A2 (en) A small fast lookup table for use in a data processing system
JP2655755B2 (ja) バッファ・メモリ管理方法,及び該方法を実施するためのコンピュータシステム
US20070022269A1 (en) Storage space management methods and systems
US6363372B1 (en) Method for selecting unique identifiers within a range
US20040064448A1 (en) Linked list
KR950033947A (ko) 프린터 및 캐시 메모리 공간 할당 방법
US20210209087A1 (en) Reorganization of Databases by Sectioning
JP2625382B2 (ja) ファイル割り当てシステム
Heinz et al. Performance of data structures for small sets of strings
US5479657A (en) System and method for sorting count information by summing frequencies of usage and using the sums to determine write addresses

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20061016

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee