KR970001901B1 - 멀티 프로세서 메모리 관리 방법 및 장치 - Google Patents

멀티 프로세서 메모리 관리 방법 및 장치 Download PDF

Info

Publication number
KR970001901B1
KR970001901B1 KR1019870014590A KR870014590A KR970001901B1 KR 970001901 B1 KR970001901 B1 KR 970001901B1 KR 1019870014590 A KR1019870014590 A KR 1019870014590A KR 870014590 A KR870014590 A KR 870014590A KR 970001901 B1 KR970001901 B1 KR 970001901B1
Authority
KR
South Korea
Prior art keywords
memory
amount
processor
memory portion
entry
Prior art date
Application number
KR1019870014590A
Other languages
English (en)
Other versions
KR880008187A (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 KR880008187A publication Critical patent/KR880008187A/ko
Application granted granted Critical
Publication of KR970001901B1 publication Critical patent/KR970001901B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

내용 없음.

Description

멀티 프로세서 메모리 관리 방법 및 장치
제1도는 본 발명의 전형적인 실시예를 포함하는 멀티 프로세서 시스템의 블록 다이어그램.
제2도는 제1도의 호스트 프로세서의 전체 구조의 블록 다이어그램.
제3도는 제1도의 종속 프로세서의 조정가능 구조의 블록 다이어그램.
제4도는 제1도의 시스템 메모리의 상태 전이 다이어그램.
제5도는 FORK 호출에 응답하는 제1도 시스템의 작동 흐름도.
제6도는 EXEC 호출의 응답하는 제1도 시스템의 작동 흐름도.
제7도는 다이오믹 메모리 할당 요청에 응답하는 제1도의 시스템의 작동 흐름도.
제8도는 EXIT 시스템 호출 또는 다이나믹 메모리 할당 해재 요청에 응답하는 제1도의 시스템의 작동 흐름도.
제9도는 제1도의 시스템의 국부-전역 메모리 전달 기능의 흐름도.
* 도면의 주요부분에 대한 부호의 설명
10 내지 12 : 프로세서 20 : 인터페치스
22 : 메모리
본 발명은 각각 자체 메모리를 가진 다수의 프로세서를 포함하는 멀티 프로세서 시스템에서 프로세스트에 대한 메모리의 할당에 관한 것이다.
멀티 프로세서 컴퓨터는 사용하는 메모리 배열에 따라 밀착결합(tightly-coupled) 또는 불완전-결합(loosely-coupled)으로 분류된다.
밀착 결합 시스템은 공유-메모리 시스템으로, 이때 다수의 프로세서는 전형적으로 자체 전용메모리(캐쉬 메모리 제외)를 전혀 갖지 않으며, 중앙-관리 메모리를 공유한다. 단일 제어체에 의한 중앙관리는 다수의 제어체의 작업을 조정하는 어려움을 피하며, 중앙 관리 메모리의 하여금 마찰없이 메모리를 관리하게 하고, 메모리 각 부분의 상태를 쉽게 추적하게 한다. 따라서, 프로세스들에 대한 메모리 저장 공간의 할당을 포함하는 메모리 관리가 용이하게 실행가능하며 보다 유연성 있게 이루어질 수도 있다. 한편, 중앙식 메모리 관리는 멀티 프로세서의 성능을 제외할 수 있는 병목(bottleneck) 현상을 갖는다. 중앙 제어체는 또한 멀티 프로세서의 고장-방지 능력(fault-tolerance)에 나쁜 영향을 미치는데, 왜냐하면 고장이 일반적으로 전체 시스템을 무능력하게 하는 유일한 점이기 때문이다.
불완전 결합 시스템은 비공유 메모리 시스템으로, 이때 각각의 프로세서는 사실상 전용이며, 해당 프로세서의 자체 제어체에 의해 국부적으로 관리되는 메모리를 갖는다. 각각의 메모리가 임의의 다른 프로세서의 메모리에 대한 지식의 전혀 없이, 그리고 그에 대한 제어 기능을 전혀 갖지 않는 서로 다른 제어체에 의해 국부적으로 관리되므로, 여러 프로세서들 사이에서 광범위한 조정 및 제휴가 단일화되고 전체 시스템에 미치는(system-wide) 메모리 관리에 요구된다. 이들 다수의 제어체 사이의 마찰을 피하도록, 프로세서들에 대한 프로세서의 할당은 일반적으로 앞서 결정되며, 정적 즉, 불변적인 것이고, 프로세서들에 대한 메모리의 할당은 복잡하고 엄격하게 제한된다.
그러므로, 본 기술에 있어서 해결되지 않는 문제점은, 비공유된 메모리 멀티 프로세서 시스템에 있어서, 밀착-결합 멀티 프로세서 시스템에서 유용한 것과 비슷하게 유연성 있고 동적인 메모리 관리들 어떻게 제동하느냐 하는 것이다.
본 발명은 이 문제점과 기타 다른 문제점들 및 종래기술의 단점을 해결하고자 하는 것이다. 본 발명에 따라, 각각 자체 메모리를 가진 복수의 프로세서를 포함하는 멀티 프로세서 시스템에서, 각각의 프로세서 메모리는 전역 및 국부 부분으로 지징되는 제1 및 제2부분으로 논리적으로 분리된다. 상기 멀티 프로세서의 제1제어장치는 프로세서들에 대해 제1메모리 부분에 포함된 메모리는 할당한다. 예시적으로, 제1제어 장치는 상기 프로세서들중 한 프로세서상에 위치한 프로세스 매니저를 포함하며, 이들의 기능은 프로세서들에 대한 프로세서의 할당을 포함한다. 각각 해당 프로세서와 관련된 다수의 제2제어 장치들은 각각 관련된 프로세서의 제2메모리부에 포함된 메모리를 프로세서들에 할당한다. 예시적으로, 각각의 제2제어 장치는 종래의 메모리 관리 기능을 포함하는 능력을 가진 작동 시스템 커널(operating system kernel)을 포함한다. 상기 커널은 관련된 프로세서에 할당된 프로세스에 국부 메모리를 할당하고 또 이들 프로세서들로부터 국부 메모리를 할당 해제한다(deallocate).
본 발명은 밀착-결합 및 불완전-결합 멀티 프로세서 시스템에 바람직한 메모리 관리 특성을 갖는다. 한편, 전역 메모리 부분은 새로이-발생된 프로세서들에 대한 초기에-요구된 메모리의 할당 및 프로세스-프로세서 할당과 같은 메모리 관리 기능을 유연성이 있고 용이하게 실행되게 하면서 밀착-결합 멀티 프로세서 시스템 방식으로 관리된다. 이들 기능은 단일 제어체로 중앙화되므로, 불완전-결합된 시스템에서와 같이 다수의 제어체의 동작을 조정할 필요가 전혀없다.
한편, 국부 메모리부는 불완전-결합된 시스템 방식으로 관리된다. 국부 메모리 관리가 한 프로세서에 할당된 프로세서들에 대한 메모리의 할당 및 이 프로세서들로부터의 메모리의 할당 해제와 같은 인트라-프로세서기능(intra-processor)에 속하므로, 이들 기능과 관련하여 다수의 제어체의 동작을 조정할 필요가 전혀 없다. 오히려, 각각의 프로세서는 자체 국부 메모리에 대한 독립접인(autonomous) 국부 제어를 유지한다. 그리고, 국부 메모리의 제어가 분산되므로, 상기 멀티 프로세서의 성능을 저해할 수도 있고 프로세서-프로세서 할당 이외의 메모리 관리기능에 대한 실패의 원인을 발생시킬 수도 있는 제어 병목 현상이 전혀 존재하지 않는다.
양호하게도, 제1제어 장치와 다수의 제2제어 장치는 임의의 프로세서 메모리의 제1 및 제2부분 사이에서 선택적으로 메모리를 전달하기 위해 서로 제휴한다. 상기 절단은 소정 조건의 발생에 응답하여 이루어진다. 예컨대, 프로세서에 할당되지 않는 국부 부분의 메모리 양이 소정의 최소치 이하로 감소할때, 저장 공간이 전역 부분에서 국부 부분으로 전달되며, 비할당된 국부 부분에서는 메모리량이 소정의 최대량을 초과할 때, 메모리는 비할당된 국부 부분으로부터 전역 부분으로 전달된다. 그러므로, 국부 및 전역 메모리 부분의 크기는 정적(static) 상태는 아니지만, 시스템의 요구를 만족시키도록 동적으로 변화될 수 있다. 상기 국부 부분이 전역 부분으로부터 저장공간을 차용하여, 과다 공간을 전역 부분으로 재공급할 수 있으므로, 메모리가 좀 더 효율적으로 사용되고, 그에따라 유사하지만 정직-분할(statically-partitioned) 시스템에서의 경우보다 작게 이루어질 수 있다.
본원 발명의 한 전형적인 실시예에서, 제1제어 장이는 프로세스에 메모리를 직접 할당하지 않고, 2차 제어장치를 통해 할당한다. 제1제어 장치는 프로세스의 초기 메모리 요구 조건을 만족시키기 위해, 프로세서가 충분한 전역 메모리를 갖는지 여부에 의거하여 다른 여러 프로세서들 사이에서 한 프로세스를 위한 프로세서를 선택한다. 제1제어 장치는 그후 전역 메모리 부분으로부터 필요한 메모리량을 선택된 프로세서의 미완성된 국부 메모리로 전달한다. 그후, 선택된 프로세서의 제2제어 장치는 필요한 메모리를 미완성된 국부 메모리로부터 프로세스로 할당한다.
이 실시예는 제1제어 장치가 대부분의 메모리 관리 기능에 무관하며 수반되는 기록 보유의 장점을 가진다. 예컨대, 제1제어장치는 메모리의 얼마나 많은 또한 어떤 특정한 파트가 프로세스에 할당되는지에 대해 또는 메모리의 어떤 특정 파트가 전역 부분을 포함하는지에 대해 기록을 보유할 필요가 없다. 상기 제1제어 장치는 메모리의 양, 즉, 전역 메모리 부분내에 있는 페이지의 수를 알기만 하면 된다. 프로세스 매니저의 구조는 따라서 간단해지고 성능은 향상된다.
이하, 첨부된 도면을 참조하여 본원 명세서를 보다 상세히 설명하겠다.
제1도는 버스(15)와 같은 통신 매체에 의한 통신을 위한 상호 연결된 다수의 프로세서(10 내지 20)를 포함하는 멀티 프로세서 컴퓨팅 시스템을 도시한다. 각각의 프로세서는 최소한 3개의 기능 유니트를 포함한다. 즉, 버스(15)의 프로토클에 따라 당해 버스(15) 양단에서 프로세서가 통신하도록 하는 인터페이스(20), 용융 및 제어 프로세스를 포함하는 프로세스를 실행하기 위한 중앙 처리 유니트(CPU:21), 및 기타 다른 프로세서에 할당된 프로세스에 의해 사용되는 프로그램, 데이터 및, 기타 다른 정보 등을 저장하기 위한 저장 공간을 제공하는 메모리(22)등이 그것이다. 용이한 참조를 위해, 한 메모리내에 저장 공간은 이후 메모리로 지칭된다.
프로세서(10 내지 12)는 제1도의 전체 시스템에 대한 관리 및 제어 센터 역할을 하는 호스트 프로세서(10)를 포함한다. 예시적으로, 호스트 프로세서(10)는 AT T-Information Systems Inc의 3B15 컴퓨터이다. 프로세서(10 내지 12)는 또한 각각 호스트 프로세서(10)에 의해 지정되는 시스템 기능을 실행하는 다수의 종속 프로세서(11 내지 12)를 포함한다. 예시적으로, 프로세서(11 내지 12)는 메모리가 부착된 AT 의 T의 WER32100군의 마이크로프로세서를 포함한다. 이 예에서, 버스(15)는 S.R. Ahuja에 의해 S/NET;AHigh-Speed Interconnect for Multiple Computers라는 명칭으로 IEEE Journal on Selected Area of Communications, Vol. SAC-1, NO. 5(Nov. 1983)에 기술된 것과 미국 특허 제4,384,323호 및, 제4,514,728호에 기술된 S/NET 버스의 버젼과 같은 고속 패킷 버스이다.
제1도의 시스템은 작동 시스템, 예를 들면 AT T의 UNIXR작동 시스템의 한 변형인 작동 시스템의 제어하에 작동한다. 상기 작동 시스템은 프로세서(10 내지 12)의 양단에 분배된다. 분배된 작동 시스템은 기술적으로 공지된다. 예를 들면, 멀티 프로세서에 대한 UNIX 작동 시스템의 적응은 Electronics, (July 28, 1983), pages 118-124에 UNIX Variant Opens a Path to Managing Multiprocessor Systems.라는 제목으로 P. Jackson에 의해 기술된다. 작동 시스템 커널(31)의 프로그램 코드(작동 시스템의 메모리-레지던트부분)는 메모리(22)에 저장되고, CPUs(21)에서 일련의 프로세서를 수행한다. 상기 작동 시스템의 다른 부분은 호스트 프로세서(10) 또는 파일 서버로 동작하는 프로세서(11-12)중 하나에 부착되는 디스크(도시안됨)상에 저장되며, 필요시에 프로세서(10-12)의 메모리(22)로 도입된다. 커널(31)은 각각의 프로세서(10-12)상에서 복제되며 각각의 프로세서(10-12)에 동일한 작동 시스템 서비스를 제공한다. 각각의 프로세서(10-12)의 커널(31)은 추가로 자체 프로세서에 고유의 서비스를 제공할 수도 있다. 각 프로세서(10 내지 12)상에 복제된 기능들에는 메모리 관리 기능이 존재하는 프로세서(10 내지 12)중 동일한 한 프로세서에 할당된 프로세서를 전후하여 메모리의 재활당 또은 할당을 실행하는 메모리 관리 기능이 포함된다.
작동 시스템 커널에는 또한 프로세스 매니저(30)로 지칭되는 프로세스(또는 프로세스의 콜렉션)이다. 프로세스 매니저(30)는 복제되지 않으며, 호스트 프로세서(10)상에만 위치된다. 프로세스 매니저(30)는 프로세서(10 내지 12)중 여러개의 프로세서의 실행을 위한 프로세스들의 할당을 포함하는 기능을 가진 중앙 집중식 제어장치 이다.
메모리는 제1도의 시스템내에 있는 국부 리소스로 여겨진다. 즉, 프로세서(10 내지 12)의 메모리(22)는 임의의 다른 프로세서(10 내지 12)의 메모리(22)를 전혀 알지 않고도 그에 대한 제어가 없이 상기 프로세서의 커널(31)에 의해 각각의 프로세서(10-12)에서 국부적으로 프로세스들에 할당 및 할당 해제된다. 한편, 프로세서 매니저(30)에 의한 프로세서(10 내지 12)로의 실행을 위해 프로세스가 할당되며, 이것은 각각의 프로세서(10-12)상에서의 프로세스들에 대한 초기 할달에 얼마나 많은 메모리가 유용한지 알아야 하고, 그결과 특정 프로세서(10 내지 12)가 소정의 프로세스를 수행할 수 있는가를 결정할 수 있게 된다.
이러한 이유로, 메모리 관리가 다음과 같이 제1도 시스템에서 실행된다. 각각의 종속 프로세서(11 내지 12)의 메모리(22)는 논리적으로 2개의 부분, 즉 국부 메모리(41)와 전역 메모리(42)로 분할된다. 국부 메모리들(41)은 함께 국부 메모리 풀(Iocal memory pool)을 형성하는 반면, 전역 메모리(42)는 함께 전역 메모리 풀(global memory pool)을 형성한다. 국부 풀의 국부 메모리(41)는 각각 자체 관련된 프로세서의 국부 메모리(41)를 관리하는 커널(31)에 의해 관리하는 반면, 상기 전역 풀은 커널(31)과 제휴하여 프로세스 매니저(30)에 의해 관리된다. 프로세스 매니저(30)가 전역 풀을 관리하므로, 이것은 항상 자체 전역 메모리(42)의 크기를 알고 있다. 프로세스 매니저(30)는 임의의 특정 프로세스의 할당을 지지하기 위해 프로세스들에 대한 할당에 유용한 충분한 메모리를 한 프로세서(10 내지 12)가 갖고 있는지 여부를 결정하기 위해 이 정보를 사용한다. 프로세스 매니저(30)는 그렇게 하기 위해 프로세서(10)의 커널(31)의 메모리 관리 기능을 사용하여 호스트 프로세서(10)의 모든 메모리(22)를 관리한다. 프로세스 매니저(30)는 종래의 단일 프로세서 방식으로 호스트 프로세서(10)의 메니저(22)를 관리한다. 이것은 다른 프로세서의 전체 메모리를 검사하는 것과 동일한 방식으로 프로세서(10)의 모든 메모리(22)를 효율적으로 검사한다.
각 프로세서(10 내지 12)의 메모리는 또한 완료 메모리(46)와 미완성된 메모리(45)로 논리적으로 분할된다. 미완성된 메모리(45)는 임의의 프로세스에서의 사용을 위해 할당되지 않은 메모리이며 그러므로 할당을 위해 자유롭고 유용하다. 완료된 메모리(46)는 프로세스에 사용하기 위해 커널(31)에 의해 해당된 메모리이며, 그러므로 사용될 것으로 여겨지며 할당에 유용하지 않다. 종속 프로세서(11 내지 12)상에서, 단지 국부 메모리(41)만 수행될 수 있다. 전역 메모리(42)는 항상 수행되지 않으며, 이것은 이하에서 보다 분명하게 이루어질 것이다.
정적이고 불요성의 메모리 분할의 단점을 피하기 위하여, 프로세스 매니저(30)와 프로세서(11 내지 12)의 커널(31)은 서로 제휴하여 커널의 관련된 프로세서의 전역 메모리(42)와 국부 메모리(41) 사이에서 메모리를 전달할 수도 있다. 따라서, 메모리가 이동하게 되는 국부 부분(41)을 전후하여 종속 프로세서(11-12)의 커널(31)과 프로세스 매니저(30) 사이의 협정(agreement)에 따라 국부 메모리(41)와 전역 메모리(42) 사이에서 메모리가 이동하도록 허용된다.
메모리 이동은 제4도에 의해 그래픽으로 도시된다. 제4도는 종속 프로세서(11 내지 12)의 메모리(22)의 임의의 부분, 예시적으로 임의의 페이지가, 즉, 전역 메모리 상태(400)에 할당, 미완성된 국부 메모리 상태(401)로의 할당 및 완료된 국부 메모리 상태(402)로의 할당, 중의 한 상태에 존재할 수 있음을 나타낸다. 상태 전이(403 내지 409)에 의해 제4도에 도시되고 이하에서 보다 상세히 기술되는 여러 소정의 상태의 발생은 메모리를 한 상태에서 다른 상태로 이동하게 한다.
프로세스 매니저(30)는 전역 구조(50)에 의해 전역 메모리 풀을 추적한다. 구조(50)는 제2도에 보다 상세히 도시된다. 구조(50)는 각각 프로세서(10)에 메모리(22)에 저장된, 테이블로서 제2도에 도시된 데이터 구조이다. 구조(50)는 각각 프로세서(10 내지 12)중 서로 다른 프로세서에 대응하는 다수의 엔트리(211 내지 213)를 포함한다. 각각의 엔트리는 관련 프로세서의 전역 메모리(42)에 포함된 메모리 양을 나타내는 정보를 저장한다. 호스트 프로세서(10)에 관련된 UNCOMMITTED CT. 엔트리(211)는 프로세서(10)의 비할당된 메모리(45)에 포함된 저장 공간에 량을 나타내는 정보를 저장한다.
예시적으로, 각 프로세서(10 내지 12)의 메모리(22)는 예컨대 각 페이지의 크기가 2048 바이트인 페이지인 논리적으로 분할되며, 각각의 GLOBAL CT. 엔트리(211 내지 213)는 비할당된 메모리(45)(엔트리(211)) 또는 대응하는 전역 메모리(42)(엔트리 212 내지 213)에 포함된 메모리 페이지 수의 카운트를 저장한다. 어떠한 특정 페이지도 상기 카운트와 관련되지 않으며, 메모리 매니저(30)는 페이지들의 동일성(identity)에 무관심하고, 단지 페이지 수에만 관심이 있다. 따라서, 임의의 특정 페이지를 나타내는 여떠한 정보도 전역 구조(50)의 엔트리(211 내지 213)에 저장될 필요가 없다.
각각의 종수 커널(31)은 사실상 종래 방식으로 자체 대응 국부 메모리(41)를 관리한다. 그러나, 관련 메모리(22)의 국부 메모리(41)와 전역 메모리(42)로의 분할의 효율적인 관리를 목적으로, 각 커널(31)은 자체 조정 가능한(tunable) 구조(51)를 가진다. 예시적인 조정 가능한 구조(51)가 제3도에 도시된다. 구조(51)는 커널(31)이 존재하는 프로세서(11 내지 12)의 메모리(22)에 저장되는 테이블로서 제3도에 도시된 데이터 구조 이다. 구조(51)는 모두 각각의 엔트리가 위치하게 되는 하나의 종족 프로세서의 메모리(22)에 관련되는 다수의 엔트리(201 내지 207)를 포함한다. GLOBAL CT. 엔트리(201)는 전역 메모리(42)에 포함된 메모리의 양을 나타내는 정보를 저장한다. 이 메모리는 제4도에 상태(400)로 표시된다. LOCAL CT. 엔트리(202)는 미완성된 국부 메모리(45)에 포함된 메모리의 양을 나타내는 정보를 저장한다. 이 메모리는 제4도의 상태(401)로 표시된다. INITLOCAL 엔트리(203)는 프로세서의 초기화에 따라 비할당된 국부 메모리(45)에 포함될 메모리의 양을 나타내는 정보를 저장하며, 나머지 비할당된 메모리는 전역 메모리(42)에서 초기화시 포함된다. MINLOCAL 엔트리(204)는 미완성된 국부 메모리(45)가 바람직하게 포함해야 하는 메모리의 최소양을 나타내는 정보를 저장한다. 미완성된 국부 메모리(45)에서 메모리의 양이 엔트리(204)에 의해 지정된 최소치 이하일때, 커널(31)은 전역 메모리(42)로부터 미완성된 국부 메모리(45)로의 부가 저장 공간 이동을 갖도록 시도한다. 이 이동은 상태 전이(404)로 표시된다. MINGTOL 엔트리(205)는 쓰래슁(thrashing)을 피하기 위하여 전역 메모리(42)에서 국부 메모리(41)로 임의의 한 순간에서 바람직하게 이동되어야 하는 최소메모리량을 나타내는 정보를 저장한다. 엔트리(205)에 의해 지정된 최소치보다 적은 메모리가 일반적으로 전역 메모리(42)가 상기 최소치보다 적은 메모리를 포함할 때만 이동된다. MAXLOCAL 엔트리(206)는 미완성된 국부 메모리(45)가 바람직하게도 포함해야 하는 메모리의 최대 양을 나타내는 정보를 저장한다. 상기 미완성된 국부 메모리(45)에서의 메모리 양이 엔트리(206)에 의해 지정되는 최대치를 초과할 경우, 커널(31)은 메모리 매니저(30)의 승인으로 상기 메모리의 몇몇을 국부 메모리(41)로부터 전역 메모리(42)로 이동시킨다. 이 이동은 상태 전이(403)에 의해 저4도에 표시된다. MINLTOG 엔트리(207)는 쓰래슁을 피하기 위하여 미완성된 국부 메모리(45)에서 전역 메모리(42)로 임의의 어느 한 순간에서 바람직하게 이동되어야 하는 메모리의 최소 양을 나타내는 정보를 저장한다. 엔트리(207)에 의해 지정된 최소보다 작은 메모리가 많은 메모리가 미완성된 국부 메모리(45)에서의 메모리량을 엔트리(204)에 의해 저장된 최소치 이하로 감소시킬 때만 일반적으로 이동된다.
임의의 관계가 다음과 같이 엔트리(203 내지 207) 사이에 존재한다. MAXLOCAL 엔트리(206)에 의해 표시된 메모리 양은 MINLOCAL 엔트리(204)에 의해 표시된 메모리의 양보다 더 크다. INITLOCAL 엔트리(203)에 의해 표시된 메모리의 양은 MAXLOCAL 엔트리(206)와 MINLOCAL 엔트리(203)에 의해 표시된 메모리의 양에 의해 제한된다. MAXLOCAL 엔트리(206)와 MINLOCAL 엔트리(203)에 의해 표시되는 메모리의 양 사이의 차는 MINGTOL 엔트리(205) 및 MINLTOG 엔트리(207)에 의해 표시되는 메모리의 양과 같거나 크다. 양호하게도, MINLTOG 엔트리(207)와 MINGTOL 엔트리(205)에 의해 표시되는 메모리의 양은 서로 일치하지 않는다.
예시적으로, 메모리(22)가 페이지로 논리적으로 분할될 경우, 각각의 엔트리(201 내지 207)는 몇몇 페이지 수의 카운트를 저장하고, 특정한 페이지를 나타내는 어떠한 정보도 조정 가능 구조(51)에 저장될 필요가 없다. 프로세서(11 내지 12)의 각 메모리(22)가 1 내지 2천페이지의 저장 공간을 가지며, 작동 시스템 커널이 각 메모리(22)의 200 내지 500 페이지를 점유하는 제1도 시스템의 한 예시적 실시예에서, 엔트리(203)는 5페이지, 엔트리(204)는 5페이지, 엔트리(204)는 5페이지, 엔트리(205)는 40페이지, 엔트리(206)는 75페이지, 엔트리(207)는 50페이지를 표시한다.
UNIX 작동시스템은 3개의 프로세스 발생 및 종결 프리미티브(process creation and termination primitives)를 포함하며, 이들 프리미티브는 프로세스들을 전,후한 메모리의 할당 및 할당 해제를 포한한다.
FORK 프리미티브는 기존의 프로세스를 복제한다. 패어런트 및 차일드 프로세스(the parent and child processes)는 프로그램이 동일하고, 이들은 할당된 메모리의 텍스트 부분을 공유한다. 그러나, 각기 복제된 프로세스는 메모리내에 자체 데이터 부분을 가지며, 그에 따라 프로세스가 서로 독립적으로 실시될 수 있다.
EXEC 프리미티브는 EXEC 프리미티브를 발하는 프로세스로 하여금 현재의 프로그램 실행을 정지하고 지정된 새로운 프로그램을 실행하도록 하므로써 기존의 프로세스를 여러개의 프로세스로 변환시킨다. 따라서, 신·구 프로세스는 각각 메모리내에 자체 텍스트 및 데이터 부분을 가져야 한다. EXEC 프리미티브 호출의 부분적으로,서 일반적으로 변환되는 새 프로세스로 초기에 할당되어야 하는 메모리의 최소량이 지정된다.
일반적으로 ,하나의 프로세스는 FORK 프리미티브 및 그의 바로 다음에 이어지는 차일드 프로세스상에서의 EXEC 프리미티브의 실행에 의해 새로운 프로세스를 생성한다.
EXIT 프리미티브는 프로세스를 종료하며 자체 할당된 메모리를 릴리즈, 할당 해제한다. EXIT 프리미티브는 다른 프로세스와 텍스트 메모리 부분을 공유하지 않는 프로세스의 텍스트 및 테이터 부분을 릴리즈하며, 다른 프로세스와 텍스트 메모리 부분을 공유하는 프로세스의 데이터 메모리 부분만을 릴리즈한다.
추가로, 상기 UNLX 작동 시스템은 기존의 프로세스가 동적으로, 즉 자체 수행동안 추가 메모리가 거기에 할당되게 하거나, 할당된 메모리중 몇몇이 할당 해제될 것을 요청할 수 있는 4개의 시스템 호출을 포함한다. 이들 시스템 호출은 EXEC 시스템 호출의 BRK, SBRK, SHMCTL, 및 EXECLNUP 부분이다. 첫번째 3개의 시스템 호출을 수반하는 논쟁을 메모리 할당 또는 할당 해제가 요청되었는지 여부와(EXECLNUP만이 메모리를 할당 해제한다.), 메모리의 양이 요청되었는지 여부를 지정한다. BRK 및 SRK 시스템 호출은 한 프로세스에 전용인 메모리를 위한 것인 반면, SHMCTL은 다수의 프로세스에 의해 공유되는 메모리에 대한 호출이다. EXECLNUP는 새로운 프로세스로 성공적으로 변환된 구 프로세스 메모리의 할당 해제에 대한 호출이다.
상술한 프리미티브 및 시스템 호출에 응답하여 메모리 매니저(30) 및 커널(31)에 의해 착수된 본 발명에 관련된 작동은 제5도 내지 제9도에 도시된다.
제5도는 FORK 호출에 대한 시스템 응답을 도시한다. 패어런트 및 차일드 프로세스가 공통 텍스트 메모리 부분을 공유하므로, 패어런트 프로세스가 현재 위치하는 동일 프로세서(10 내지 12)상에 상기 패어런트 및 차일드 프로세스들이 위치한다. 따라서, 프로세스-프로세서 할당의 어떠한 선택도 요구되지 않는다.
설명을 목적으로, FORK 프로미티브가 종속 프로세서(11)상의 한 프로세스에 호촐된다고 가정하자. 단계(500)에서, FORK 호출에 응답하여, 프로세서(11)의 커널(31)은 단계(501)에서의 차일드(child) 프로세스의 메모리 필요 조건을 결정한다. 커널(31)은 프로세서(11) 상의 임의의 프로세스에 의해 사용되는 메모리의 양을 알고 있으며, 차일드 프로세스는 단지 패어런트 프로세스의 복제이다. 따라서, 커널(31)은 패어런트 프로세스의 메모리 요구 조건들로부터 차일드 프로세스들의 메모리 요구 조건들을 결정한다. 다음, 단계(502)에서, 프로세서(11)의 커널(31)은 상기 메모리 필요 조건을 만족시키도록 전역 메모리(42)에 유용한 충분한 메모리가 존재하는지 여부를 결정하기 위해 자체 조정가능 구조(51)의 엔트리(201)를 검사한다. 요컨대, 전역 메모리(42)가 차일드 프로세스에 의해 요구된 메모리의 량을 포함하는지 여부를 결정하기 위해 자체 조정가능 구조(51)의 전역 카운트 엔트리(201)과 차일드 프로세스의 메모리 요구조건을 비교하므로써 검사가 행해진다. 충분한 전역 메모리(42)가 유용하지 않을 경우-차일드 프로세스 메모리 요구 조건이 엔트리(201)를 초과할 경우, 커널(31)은 단계(506)로 진행한다.
커널(31)이, 단계(502)에서, FORK에 대한 프로세스에 충분한 전역 메모리가 유용하지 않는다는 것을 결정할 경우, 커널(31)은 단계(507)에서 FORK를 실패한다. 단계(507)에서, 커널(31)에 의해 착수된 동작은 통상적인 것이다. 그러나, FORK를 실패하기 전에, 커널(31)은 단계(506)에서 미완성 국부 메모리(45)에서 전역 메모리(42)로 메모리양을 전달하기 위해 제9도의 국부-전역 메모리 전달 기능을 수행한다. 이 전달은 제4도의 상태 전이(403)로 표시된다. 커널(31)은 실패한 FORK가 가까운 미래에 다시 시도됨을 기대하여 상기 동작을 수행하고, 충분한 전역 메모리(42)의 부족으로 인해 다음 FORK 시도가 실패하지 않도록 보장하고자 노력한다. 단계(507)에서의 포크의 실패 후에, FORK에서의 커널(31)의 관련은 단계(508)에서 종료한다.
커널(31)이 FORK에 대한 프로세스에 충분한 전역 메모리가 유용하다고 단계(502)에서 결정할 경우, 커널(31)은 단계(503)에서 호스트 프로세서(10)에서 FORK에 대한 패어런트 프로세스를 행하도록 요청한다. 예시적으로, 커널(31)은 그러한 취지로 정보를 수반하는 패킷이 버스(15)를 거쳐 프로세스 매니저(30)에 송출되게 하므로써 상기 동작을 실행한다. 전달된 정보를 차일드 프로세스의 메모리 요구 조건을 포함한다. 커널(31)은 그후 단계(504)에서 프로세스 매니저(30)로부터 응답을 기다린다.
프로세스(11)와 (10) 사이의 통신은 커널 동기적(kernel synchronous)이다. 즉 프로세서(11)는 프로세서(10)가 요청에 응답할 때까지 어떠한 새로운 프로세스도 급송할 수 없다. 이것은 논리적 원격 서브루틴 호출이다. 커널(31)이 대기하도록 요청하는 동안, 이것은 국부 차단 및 그것이 수신할 수도 있는 원격 요청을 취급할 수 있으나, 어떠한 다른 프로세스도 급송될 수 없다.
프로세스 매니저(30)는 단계(511)에서 종속 프로세서(11)의 전역 메모리(42)에 유용한 충분한 메모리가 존재하는지 여부를 결정하기 위해 종속 프로세서(11)에 대응하는 전역 구조(50)의 엔트리(212)를 검사하므로써 단계(510)에서 FORK 요청의 수신에 응답한다. 프로세스 매니저(30)는 종속 프로세서(11)의 조정가능 구조(51)의 엔트리(201)와 전역 구조(50)의 엔트리(212)가 분리된 제어 메카니즘(30 및 31)에 의해 유지되고 어떤 임의의 시간에는 동기되지 않고 동일 내용도 가지지 않으므로 이것을 행해야만 한다.
프로세스 매니저(30)가 단계(511)에서 충분한 전역 메모리가 유용하지 않음을 결정할 경우, 단계(515)에서 FORK를 허용하도록 자체 거질을 종속 프로세서(11)에 통보한다. 프로세서 매니저(30)는 그러한 취지로 버스(15)를 거쳐서 정보를 가진 패킷을 프로세서(11)로 송출하므로써 이것을 행한다. 따라서, FORK에서의 프로세서 매니저(30)의 관련은 단계(516)에서 종료한다.
FORK 허용에 대한 거절의 단계(505)에서 수신에 응답하여 커널(31)은 단계(507)에서 FORK를 실패하고, 단계(508)에서 FORK에서의 장체 관련을 종료한다.
단계(511)에서 충분한 전역 메모리가 프로세서(11)상에서 유용한 것으로 발견될 경우, 프로세스 매니저(30)는 단계(512)상에서 유용한 것으로 발견될 경우, 프로세스 매니저(30)은 단계(512)에서 요청된 메모리의 양만큼 전역 구조(50)의 엔트리(212)를 감소시키며, 그에 따라 프로세서(11)의 국부 메모리(41)에 대한 전역 메모리(42)의 양이 이동을 개시한다. 이 이동은 상태 전이(407)에 의해 제4도에 표시된다. 프로세스 매니저(30)는 그후 단계(513)에서 차일드 프로세스를 포함하도록 제1도 시스템내에서 모든 프로세스를 유지하는 정보를 갱신한다. 단계(513)에서 프로세스 매니저(30)에 의해 착수된 동작들을 통상적인 것이지만, 차일드 프로세스가 위치하는 프로세서(10 내지 12)에 관한 정보의 포함한다. 프로세스 매니저(30)는 단계(514)에서 FORK 요청의 승인을 종속 프로세서(11)에 통보한다. 요컨대, 프로세스 매니저(30)는 그러한 취지로 정보를 가진 패킷을 버스(15)를 거쳐 프로세스(11)로 전송되게 하므로써 상기 동작을 수행한다. 따라서, 단계(516)에서, 차일드 프로세스에 메모리를 할당함에 있어 프로세스 매니저(30)의 관여가 종료한다.
프로세서(11)의 커널(31)은 단계(521)에서 국부-전역(L-to-G) 메모리 전송이 이루어지는 것을 초기에 차단하므로써 단계(520)에서 FORK 승인 통보의 수신에 응답한다. 이 전달은 프로세서(11)상에 위치하고 프로세서(11)의 조정가능한 구조(51)와 관련된 프로세서(11)상에 위치하고 프로세서(11)의 조정가능한 구조(51)와 관련된 카운트 신호가(Count Semaphore:52)를 증가시켜 차단된다. 카운트 신호기는 기술적으로 널리 공지되어 있다. 그후 커널(31)은 상태 전이(407)에 의해 제4도에 표시된 이동을 완성하도록 단계(522)에서 전역 메모리(42)에서 미완성된 국부 메모리(45)로 차일드 프로세스에 의해 요구되는 메모리양을 전달한다. 커널(31)은 요청된 메모리 양만큼 조정가능한 구조(51)의 엔트리(201)를 감소시키고, 동일 양만큼 엔트리(202)를 증가시키므로써 이동을 달성한다.
구조(51)의 LOCAL CT. 엔트리(202)는 지금 구조(51)의 MAXLOCAL 엔트리(206)를 초과할 수도 있다. 이 결과는 일반적으로 상태 전이(403)에 의해 제4도에 도시된 바와 같이, 미완성된 국부 메모리(46) 일부의 전역 메모리(42)로의 이동을 트리거할 것이다. 커널(31)이 단계(521)에서 국부-전역 메모리 전달을 차단한 것은 상기 이동이 발생하는 것을 방지하기 위함이다.
단계(522)에서의 메모리 전달에 이어, 커널(31)은 종래 방식으로 차일드 프로세스에 대해 미완성된 국부 메모리(45)의 요청된 양을 할당하고, 단계(523)에서 이 사실을 반영하도록 자체 조정가능한 구조(51)의 엔트리(202)를 감소시킨다.
이 할당된 미완성된 국부 메모리(45)에서 완료 국부 메모리(46)로 할당된 메모리를 이동시킨다. 이 이동은 상태 전이(408)에 의해 제4도에 표시된다. 따라서, 프로세서(11)의 메모리(22)상에서의 FORK의 순수 결과는 전역 메모리(42)에서 완료 국부 메모리(46)로의 요구된 메머리 양이 이동이다. 이 순수 이동은 상태 의사-전이(409)에 의해 제4도에서 표시되며, 이는 상태 전이(407 및 408)의 순수 효과를 나타낸다.
커널(31)은 단계(252)에서 종래 방식으로 FORK를 완성한다. 단계(525)에서 커널(31)에 의해 실행된 동작은 프로세서(11)에 어떤 프로세스가 할당되는지를 표시하는 기록의 갱신을 포함하며, 어느 메모리가 어느 프로세스에 할당되는가를 나타내는 기록의 갱신, 및 패어런트 프로세스를 포함하며 FORK에 의해 영향을 받는 다른 프로세스에 대해 당해 FORK의 성공을 통보하는 것을 포함한다. 이것은 행해지고, 커널(31)은 카운트 신호기(52)를 감소시키므로써, 단계(526)에서, 국부-전역 메모리 전달을 폐쇄하지 않는다. 따라서, FORK에서 커널(31)의 관여는 단계(527)에서 종료된다.
제6도는 EXEC 호출에 대한 시스템 응답을 도시한다. 새로운 프로세스로 지칭되는 변형된 프로세스는 구 프로세스로 지칭되는 오리지날 프로세스와 같은 프로세서(10 내지 12)또는 그와 상이한 프로세서(10 내지 12)에 위치하는 것으로 종결할 수 있다. 프로세스-프로세서 할당의 선택이 그에 따라 요구되며, 프로세스 매니저(30)에 의해 이루어져야만 한다. 새 프로세스가 구 프로세스의 프로세서에 대해 프로세스 매니저(30)에 의해 할당되지 않을 경우, 어떠한 메모리도 EXEC의 결과로서 구 프로세스의 프로세서상에 할당 될 필요가 없으며, 단지 구 프로세스의 메모리만이 할당 해제될 필요가 있다.
설명을 목적으로, EXEC 프로미티브가 프로세서(12)상의 프로세스에 의해 호출된다고 가정하자. EXEC 호출에 응답하여, 단계(600)에서, 프로세서(12)의 커널(31)은 단계(601)에서 새 프로세스의 메모리 요구 조건을 결정한다. 앞서 지적된 바와 같이, 새로운 프로세스의 초기 메모리 요구 조건은 예컨대 EXEC 호출에 의해 직접 지정된다. 대신, 상기 메모리 요구 조건은 EXEC될 목적 파일에서 지정되며, 그것으로부터 커널(31)에 의해 픽업된다. 다음으로, 프로세서(12)의 커널(31)은 단계(602)에서 프로세스 매니저(30)에 대해 프로세서의 메모리를 새로운 프로세스에 할당하도록 요청한다. 요컨대, 커널(31)은 새로운 프로세스의 초기 메모리의 요구 조건을 포함하여 상기 EXEC에 관한 정보를 가진 패킷이 호스트 프로세서(10)로 송출되게 하므로써 상기 요청 동작을 실행한다. 그후, 프로세서(12)의 커널(31)은 단계(603)에서 프로세스 매니저(30)로 부터의 응답을 기다린다. 다시 한번, 프로세서(12)와 프로세서(10) 사이의 통신은 커널 동기적이다.
프로세스 매니저(30)는 단계(611)에서 계속할 새로운 프로세스에 대한 프로세서(10 내지 12)를 선택하고 거기에 당해 새로운 프로새스를 할당하므로써 단계(610)에서 EXEC 요청의 수신에 응답한다. 프로세스 매니저(30)는 상기 선택을 본 시스템이 사용되는 용도와 제1도 시스템의 특정 구조에 적용 가능한 적절한 기준에 의거한다. 이들 기준은, 예컨대, 새 프로세스에 의해 요구되는 계산능력과 주변 기기를 가지는 프로세서(10 내지 12)와, 프로세서(10 내지 12) 양단의 프로세스의 전류 부하 분배를 포함한다.
프로세스 매니저(30)에 의해 사용되는 기준의 하나는 프로세서(10 내지 12)상에서의 새로운 프로세스에 대한 할당용 메모리의 유용도이다. 한 프로세스에 대해 충분한 메모리가 유용하지 않을 경우, 당해 프로세스는 통상적으로 수행될 수 없다. 따라서, 단계(611)에서 실행되는 프로세스-프로세서 할당의 부분으로, 프로세스 매니저(30)는 전역구조(50)에서의 프로세서의 대응하는 GLOBAL CT 엔트리와 새 프로세스의 초기 메모리 요구 조건을 비교하며, 최소한 당해 프로세서(10 내지 12)상에서 유용한 전역 메모리(42)가 새 프로세스의 초기 메모리 요구 조건과 일치할 경우에만 새 프로세스를 프로세서(10 내지 12)에 할당한다.
설명을 목적으로, 프로세서(11)가 단계(611)에서 선택된다고 가정하자. 선택에 이어, 프로세스 매니저(30)는 단계(612)에서 새 프로세스의 초기 메모리 요구 조건의 양만큼 전역 구조(50)의 엔트리(212)를 감소시키고, 그에 따라 프로세서(11)의 국부 메모리(41)에 대한 프로세서(11)의 전역 메모리(42)의 상기 양의 이동을 개시한다. 이 이동은 상태 전이(407)에 의해 제4도에 표시된다. 프로세스 매니저(30)는 버스(15)를 거쳐 패킷이 프로세서(12)에 보내지도록 하므로써 단계(613)에서 새로운 프로세스에 대한 프로세서(11)의 할당은 EXEC-요청 프로세서(12)에 통보한다. EXEC의 성능상의 문제 발생을 제외한, 거기에서의 프로세스 매니저(30)의 관련이 단계(614)에서 종료된다, 단계(614).
단계(620)에서, 새로운 프로세스에 대한 프로세서(11)의 할당의 통보에 응답하여, 프로세서(12)의 커널(31)은 사실상 종래 방식으로 단계(621)에서 EXEC를 처리한다. 단계(621)에서 상기 EXEC의 프로세싱은, 단계(622)에서 제안된 바와 같이, EXEC의 성공 여부를 결정한다. EXEC가 실패할 경우, 커널(31)은 단계(623)에서 실패를 프로세스 매니저(30)에 통보한다. 그후, EXEC에서 프로세서(12)의 커널(31)의 관련이 단계(626)에서 종료한다.
프로세스 매니저(30)는 단계(631)에서 새로운 프로세스의 초기 메모리 요구 조건에 의해 프로세서(11)의 엔트리(212)를 증가시키므로써 단계(630)에서 EXEC 고장 통보의 수신에 응답한다. 그에따라, 해당 메모리를 프로세서(11)의 전역 메모리 부분(42)에 재저장하고 상태 전이(407)에 의해 제4도에 표시된 이동을 종료한다. 따라서, EXEC에서 프로세스 매니저(30)의 관련이 단계(632)에서 종료한다.
EXEC가 실패했으므로, 할당된 프로세서(11)는 EXEC를 실행하는데 적극적으로 관련되지 않는다.
단계(622)로 돌아가서, EXEC가 성공할 경우, 프로세서(12)의 커널(31)은 단계(624)에서 새로운 프로세스에 대한 자체 할당 프로세서(11)의 커널(31)에 통보한다. 요컨대, 상기 통보는 버스(15)를 거쳐 프로세서(12)에서 프로세서(11)로 전송되는 패킷에 의해 이루어진다. 상기 패킷은 EXEC에 대한 정보를 포함한다. 변환이 성공적이었으므로, 구 프로세스는 종재하지 않으며, 자체 할당된 메모리가 할당 해제된다. 이것을 목적으로, 커널(31)은 단계(625)에서 제8도의 EXECLNUP 기능을 호출한다. 그후, EXEC에서의 프로세서(12)의 커널(31)의 포함은 단계(626)에서 종료된다.
프로세서(11)의 커널(31)은 단계(650)에서 카운튼 신호기(52)를 증가시키므로써 초기에 국부-전역 메모리 이동이 이루어지는 것을 차단하므로써 단계(650)에서 EXEC의 통보에 응답한다. 그때, 커널(31)은 단계(502)에 기술된 방식으로 단계(652)에서 전역 메모리(42)에서 미완성 국부 메모리(45)로 새로운 프로세스에 의해 요구된 메모리양을 전달한다. 따라서, 커널(31)은 상태 전이(407)에 의해 제4도에 표시되는 이동을 완성한다. 그후, 커널(31)은 종래 방식으로 새 프로세스에 미완성 국부 메모리(45)의 요청된 양을 할당하고, 단계(653)에서, 이 사실을 반영하도록 자체 조정가능구조(51)의 엔트리(202)를 감소시킨다.
이 할당은 미완성 국부 메모리(45)에서 완료 국부 메모리(46)로 할당된 메모리를 이동시킨다. 이 이동은 상태 전이(408)로 제4도에 도시된다. 따라서, 프로세서(11)의 메모리(22)상에서 EXEC의 순 결과는 전역 메모리(42)에서 완료 국부 메모리(46)로 요구된 메모리량이 이동이다. 이 순수 이동은 상태 전이(407 및 408)의 순수 효과를 표시되는 상태 의사-전이(409)로 제4도에 표시된다.
달리 커널(31)은 종래 방식으로 단계(655)에서 EXEC를 완성한다. 단계(655)에서 커널(31)에 의해 실행되는 작동은 단계(525)에 기술된 것을 포함한다. 이것이 행해지면, 커널(31)은 카운트 신호기(52)를 감소시켜, 단계(656)에서, 국부-전역 메모리 전달을 연블러킹한다. EXEC에서의 커널(31)의 관여가 그에 따라 단계(657)에서 종료된다.
제7도는 메모리의 동적 할당에 대한 프로세스에 의한 시스템 호출에 대한 시스템 응답을 도시한다. 본 발명의 목적을 위해, 이 응답은 BRK, SBRK 및 SHMCTL 할당 호출에 대해서도 동일하다. 이들 호출이 당해 한 프로세서상에서의 보다 많은 메모리에 대한 한 특정 프로세서(10 내지 12)에 할당되고 그 위에서 수행되는 프로세스에 의한 요청을 포함하므로, 어떠한 프로세스-프로세서 할당도 포함되지 않는다.
호출이 프로세서(11)에서 발생한다고 가정하자. 단계(700)에서, 할당 호출에 응답하여, 프로세서(11)의 커널(31)은 단계(701)에서 호출 프로세스에 의해 호출되는 양을 결절한다. 전형적으로, 상기 호출은 요구된 메모리 양을 직접 지정한다. 그후, 커널(31)은 미완성된 국부 메모리(45)가 호출을 만족하기에 적절한 메모리 양을 포함하는지 여부를 결절하도록 LOCAL CT. 엔트리(202)를 검사한다. 적절함은 유용한 메모리의 충분성(sufficiency)과 같은 소정의 기준에 의거하여 결정될 수 있다. 요컨대, 커널(31)은 요구되는 양이 미완성된 국부 메모리(45)를 MINLOCAL량 이하로 감소시키는지 여부를 결정하도록 단계(702)에서, 조정가능한 구조(201)의 엔트리(202 및 204)에 대한 요구된 양을 비교한다.
그럴 경우, 커널(31)은 당해 요구된 양이 MINGTOL량을 초과하는지 여부를 결정하기 위해 조정가능한 구조(201)의 엔트리(205)에 대해 요구된 양을 비교한다, 단계(703). 상기 요구된 량이 MINGTOL양을 초과 하지 않을 경우, 커널(31)은 전역 메모리(42)의 MINGTOL량을 국부 메모리(41)로 전송하도록 프로세스 매니저(30)에게 요청한다, 단계(704). 요구된 양이 MINGTOL양을 초과할 경우, 커널(31)은 전역 메모리(42)의 요구된 양을 국부 메모리(41)로 전송하도록 프로세스 매니저(30)에게 요청한다, 단계(705). 요컨대, 커널(31)은 버스(15)를 거쳐 프로세서(11)에서 프로세서(10)로 패킷을 송출하므로써 상기 요청을 실행한다. 커널(31)은 그후 단계(706)에서 프로세스 매니저(30)로부터 전역-국부 전달 요청에 대한 응답을 기다린다. 다시한번, 프로세서(11)와 프로세서(10) 사이의 통신은 커널 동기적이다.
프로세스 매니저(30)는 단계(1101)에서 전달 요청을 만족시키도록 종속 프로세서(11)의 전역 메모리(42)에서 유용한 메모리가 충분한지 여부를 결정하기 위해 종속 프로세서(11)에 대응하는 전체구조(50)의 엔트리(212)를 검사하므로써 단계(1100)에서 전역-국부 전달 요청의 수신에 응답한다.
프로세스 매니저(30)가 요청된 메모리 양이 전역 메모리(42)의 양을 초과하는가를 단계(1101)에서 결정 할 경우, 단계(1102)에서 전역 구조(50)의 엔트리(212)를 제로까지 감소시키며, 그에 따라 프로세서(11)의 미완성된 국부 메모리(45)에 프로세서(11)의 모든 유용한 전역 메모리(42)의 이동을 개시시킨다. 이 이동은 상태 전이(404)에 의해 제4도에 도시된다.
프로세스 매니저(30)가 단계(1101)에서 요구된 메모리의 양이 전역 메모리(42)의 양을 초과하지 않음을 결정할 경우, 단계(1103)에서 전역 구조(50)의 엔트리(212)를 요구된 메모리의 양만큼 감소시키며, 그에 따라 프로세서(11)의 국복 메모리(41)로의 프로세서(11)의 전역 메모리 양의 이동을 개시한다. 이 이동은 상태 전이(404)에 의해 제4도에 도시된다.
단계(1102) 또는 단계(1103)에서 전역 메모리(42)의 감소에 따라, 프로세스 매니저(30)는 얼마나 많은 전역 메모리(42)가 단계(1104)에서 국부 메모리(41)로 전달되는지를 종속 프로세서(11)에 통보한다. 프로세스 매니저(30)는 버스(15)를 거쳐 프로세서(10)에서 프로세서(11)로 정보를 수반하는 패킷이 전송되게 하므로써 상기 통부 동작을 실행한다. 그에 따라, 전역-국부 메모리 전달에서의 프로세스 매니저(30)의 포함은 단계(1105)에서 종료한다.
프로세서(11)의 커널(31)은 상태 전이(404)에 의해 제4도에서 표시되는 이동을 완성하도록 단계(711)에서 전역 메모리(42)에서 미완성된 국부 메모리(45)로 표시된 메모리 양을 전달하므로써 단계(710)에서 전달 요청의 결과 통보의 수신에 응답한다. 커널(31)은 단계(522)에 대해 기술된 방식으로 전송을 완료한다.
다음, 커널(31)은 상기 요구 조건을 만족시키기 위해 미완성된 국부 메모리(45)에 유용한 메모리가 충분히 존재하는지 여부를 결정하도록 호출 프로세스에 의해 요구된 메모리 양에 대해 프로세서(11)의 조정가능 구조(51)의 엔트리(202)를 비교한다.
요구된 메모리 양이 미완성된 국부 메모리(45)의 양을 초과할 경우, 커널(31)은 단계(716)에서 종래의 방식으로 할당 호출에 실패한다. 커넬(31)은 단계(717)에서 메모리 할당 호출에 대한 응답을 종료한다.
단계(712)에서 필요한 메모리 양이 미완성된 국부 메모리(45)의 양을 초과하지 않을 경우, 커널(31)은 종래 방식으로 프로세스에 대해 미완성된 국부 메모리(45)의 요청된 양을 할당하고, 단계(713)에서 이 사실을 반영하도록 자체 조정가능 구조(51)의 엔트리(202)를 감소시킨다. 이 할당은 미완료성된 국부 메모리(45)로부터 할당된 메모리를 수행된 국부 메모리(46)로 이동시킨다. 이 이동은 상태 전이(405)에 의하여 제4도에 도시된다.
커널(31)은 종래 방식으로 단계(715)에서 BRK, SBRK, 또는 SHMCTL 호출을 완성한다. 따라서, 호출 프로세서에 대해 메모리 할당에서의 커널(31)의 관여가 단계(717)에서 종료한다.
단계(702)에서 필요한 메모리양이 미완성된 국부 메모리(45)를 상기 MINLOCAL량 아래로 감소시킴이 결정될 경우, 커널(31)은 단계(713, 715 및 717)에 대해 앞서 기술된 작동을 실행하도록 단계(713)로 진행한다.
제8도는 메모리의 동적 할당 해제에 대한 프로세스에 의한 시스템 호출, 또는 EXIT 프리미티브 호출, 및 EXECLNUP 호출에 대한 시스템 응답을 도시한다. 본 발명의 목적을 위해, 이 응답은 BRK, SBRK, SHMCTL, EXIT 및 EXECLNUP 호출에 대해 동일하다. 이들 호출이 당해 한 프로세서상의 프로세스에 할당 되는 메모리중 몇몇 또는 전부를 릴리즈히도록 한 특정 프로세서(10 내지 12)에 할당된 프로세스에 관한 요청을 포함하므로, 어떠한 프로세스-프로세서 할당도 거기게 포함되지 않는다.
프로세서(11)에서 호출이 발생한다고 가정하자. 단계(800)에서 상기 호출에 응답하여 프로세서(11)의 커널(31)은 단계(801)에서 릴리즈되는 메모리의 양을 결정한다. 전형적으로, 할당 해제 호출은 프로세스에 의해 릴리즈되는 메모리 양을 직접적으로 지정할 것이다. 그리고, EXIT 또는 EXECLNUP 호출에 응답하여, 커널(31)은 당해 프로세스와 프로세서(11)에 할당된 다른 모든 프로세스에 대해 저장한 정보로부터 한 프로세스에 할당된 메모리의 양을 결절할 수 있다. 커널(31)은 그 후 종래 방식으로 완성된 국부 메모리(46)의 릴리즈된 양을 할당 해제하고, 단계(802)에서 이 사실을 반영하도록 조정가능한 구조(51)의 엔트리(202)를 증가시킨다. 할당 해제는 완료된 국부 메모리(46)에서 미완성 국부 메모리(45)로 상기 릴리즈된 메모리를 이동시킨다. 이 이도은 상태 전이(406)에 의해 제4도에 표시된다.
커널(31)은 종래 방식으로, 단계(805)에서, BRK, SBRK, SHMCTL, EXIT, 또는 EXECLNUP 호출을 완성한다. 그후, 커널(31)은 과다 미완성 국부 메모리(45)를 전역 메모리(42)에 전달하기 위하여, 단계(804)에서, 제9도의 국부-전역 전달 기능을 실행한다. 그렇지 않을 경우, 커널(31)은 종래 방식으로 단계(805)에서 호출을 완성하며, 단계(806)에서 할당 해제에 있어서 자체 관련을 종료한다.
제9도는 주기적으로 즉 매초에 한 번씩 할당 해제 호출 또는 FORK의 부분으로(제5도의 단계(506), 제8도의 단계(804) 참조) 각 프로세서(11 내지 12) 상에서 실행되는 국부-전역-(L-G) 메모리 전달 기능을 도시한다. 이 기능의 목적은 과다 미완성된 국부 메모리(45)를 전역 메모리(42)에 전달하는 것이다.
L-G 전달 기능이 프로세서(11)상에서 실행된다고 가정하자. 단계(900)에서 기능이 시작됨에 따라, 프러세서(11)의 커널(31)은 단계(901)에서 국부-전역 전달이 블로킹되는지 여부를 결정하기 위해 카운팅 신호기(52)의 값을 체크한다. 신호기(52)의 값이 제로가 아닐 경우, FORK 또는 EXEC 호출이 진행중이므로(제5도의 단계(521), 제6도의 단계(651) 참조) 상기 신호기의 값은 전달이 블러킹됨을 의미하며, 그러므로, 커널(31)은 단계(903)에서 당해 기능을 종료한다.
신호기(52)의 값이 단계(901)에서 제로로 발견될 경우 국부-전역 전송이 블로킹되지 않았음을 나타내며, 커널(31)은 단계(902)에서 미완성된 국부 메모리(45)의 크기가 MAXLOCAL 크기를 초과하는지를 결정 하도록 엔트리(206)와 자체 조정가능 구조(51)의 엔트리(202)를 비교한다. 메모리(45)의 크기가 지정된 최대값 이하 일 경우, 커널(31)은 단계(903)에서 임의의 전송을 수행하지 않고 제9도의 기능을 종료한다.
메모리(45)의 크기가 단계(902)에서 지정된 최대값을 초과하는 것으로 발견될 경우, 커널(31)은 단계(904)에서 미완성 국부 메모리(45)의 크기를 MINLTOG량만큼 감소시키는 것이 지정된 최대치 이하인지 결정하기 위해 서로에 대해 조정가능한 구조(51)의 엔트리(202, 206 및 207)를 체크한다. 그럴 경우, 커널(31)은 단계(905)에서 미완성된 국부 메모리(45)의 MINLTOG양을 전역 메모리(42)로 전달하도록 프로세스 매니저(30)에 요청한다. 그렇지 않을 경우, 커널(31)은 단계(906)에서 지정된 최대치로 메모리(45)의 크기를 감소 시키는 양을 미완성 국부 메모리(45)에서 전역 메모리(42)로 전달하도록 프로세스 매니저(30)에 요청한다. 커널(31)은 버스(15)를 거쳐 프로세서(11)에서 프로세서(10)로 보내질 정보를 가지는 패킷에 의해 메모리 매니저(30)에 요청한다. 메모리 매니저(30)에 의해 요청을 위치시킨 후, 단계(907)에서 커널(31)은 응답을 기다린다. 또 다시, 프로세서(11)와 프로세서(10) 사이의 통신을 커널 동기적이다.
단계(910)에서, 요청의 수신에 응답하여, 프로세스 매니저(30)는 단계(911)에서 요청에 지정된 양만큼 전체 구조(50)의 엔트리(212)를 증가시키고 그에 따라, 상태 전이(403)에 의해 표시되는 제4도의 상태(401)에서 상태(400)로 메모리 이동을 개시시킨다. 그후, 프로세스 매니저(30)는 버스(15)를 거쳐 확인 패킷을 프로세서(11)에 송부하므로써 단계(912)에서 이 결과를 프로세서(11)의 커널(31)에 통보한다. 그후 전송시 프로세스 매니저(30)의 관여가 단계(913)에서 종료된다.
단계(920)에서, 프로세스 매니저(30)로부터 요청의 결과 통보를 수신에 응답하여, 프로세서(11)의 커널(31)은 단계(921)에서 미완성 국부 메모리(45)에서 지역 메모리(42)로 표시된 메모리 양을 전송하고, 그에 따라 상태 전이(403)에 의해 제4도에 표시된 이동을 완성한다. 커널(31)은 메모리의 표시된 양만큼 자체 조정 가능 구조(51)의 엔트리(201)를 증가시키고 동일한 량만큼, 엔트리(202)를 감소시키므로써 전송을 달성한다. 그후, 국부-전역 전송이 단계(922)에서 종료한다.
물론, 다양한 변형과 수정이 숙련자에게 가능하다. 예컨대, 전역-국부 메모리 전송이 소정의 최소치 또는 그 이상으로 미완성 국부 메모리(45)의 크기를 유지하도록 주기적으로 실행될 수도 있다. 모든 변화와 수정은 다음 청구범위에 의해 보호된다.

Claims (12)

  1. 각각 자체 소유의 비공유된(non-shared) 메모리(22)를 가진 프로세서들에 할당된 프로세스들을 실시하기 위해 다수의 프로세서들(10-12)을 연결하는 버스를 가진 멀티 프로세서 장치에 있어서, 최소한 몇몇 프로세서(11-12)의 각각의 메모리가 제1전역 부분(42)과 제2국부 부분(41)을 논리적으로 분할되며, 각각의 프로세스가 할당되는 프로세서안의 상기 제1메모리 부분으로부터 초기에-요구된 메모리량을 각각의 프로세스에 할당하는 제1제어수단(30); 및 최소한 몇몇 프로세서(11-12)의 각 프로세서와 관련되며, 관련된 프로세스의 제2메모리 부분에 포함된 메모리를 상기 관련된 프로세서에 할당된 프로세스에 할당하는 다수의 제2제어 수단(31)을 구비하며, 상기 제1제어수단이 상기 제2제어 수단과 관련된 제1 및 제2메모리 부분 사이에서 요구된 메모리를 전달하도록 임의 프로세서의 제2제어 수단과 제휴하는 것을 특징으로 하는 멀티프로세서장치.
  2. 제1항에 있어서, 상기 제1제어 수단이 상기 프로세서(11-12)에 프로세스들을 할당하는 것을(611) 특징으로 하는 멀티 프로세서 장치.
  3. 제1항에 있어서, 상기 제1제어 수단이, 상기 프로세서들을 프로세서(11-12)에 할당하며, 각각의 할당된 프로세스에 대해 제2메모리부로 상기 제1메모리부에 포함된 메모리를 전달하며, 상기 두 메모리부는 상기 프로세스가 할당되는 프로세서의 메모리내에 존재하는 수단(610-614, 630-632)을 포함하고; 각각의 제2제어 수단이, 상기 관련된 프로세서에 할당된 프로세스들에 대해 제2메모리부에 포함된 메모리를 할당하기 위한 수단(650-657)을 포함하는 것을 특징으로 하는 멀티 프로세서 장치.
  4. 제1항에 있어서, 제1제어 수단 및 제2제어 수단이 제2메모리 부분에 포함되고 프로세서들에 대해 비할당된(unallocated) 메모리의 량에 의거하여 상기 제2제어 수단과 관련된 프로세서의 제1메모리 부분과 제2메모리 부분 사이에서 메모리를 전달하도록(제7도, 제9도) 제휴하는 것을 특징으로 하는 멀티 프로세서 장치.
  5. 제1항에 있어서, 각각 제2제어 수단이 프로세스들로부터 관련된 프로세서의 제2메모리 부분으로 할당된 메모리를 할당 해제(deallocating: 800-806)하며, 상기 제1제어 수단 및 제2제어 수단은 제2메모리부에서 비할당된 메모리의 량이 소정의 최대치를 초과할 때는, 제2메모리부로부터 제1메모리부로 메모리를 전달하도록 제휴되며(제9도), (상기 두 메모리부는 제2제어 수단에 관련된 프로세서임), 제2메모리부에서 비할당된 양이 소정의 최소치에 의해 초과될 때는, 제1메모리 부분으로부터 제2메모리 부분으로 메모리를 전달하도록(제7도) 제휴하는 것을 특징으로 하는 멀티 프로세서 장치.
  6. 제1항에 있어서, 각각의 메모리가 전역 메모리 부분(42), 비할당된 국부 메모리 부분(45), 및 할당된 국부 메모리 부분(46)으로 논리적으로 분할되며, 상기 제1제어 수단은 프로세스들을 프로세서에 할당하고(611), 각기 할당된 프로세스에 대해 당해 프로세스가 할당되는 프로세서의 비할당된 국부 메모리 부분으로 전역 메모리 부분내에 포함된 메모리를 전달하며(612-614, 630-632), 상기 제2제어 수단은 비할당된 국부 메모리로부터 메모리를 관련된 프로세서의 할당된 국부 메모리부에 대해 전달하므로써(650-657), 전달된 메모리를 관련된 프로세서에 할당된 프로세스에 할당하며, 할당된 국부 메모리로부터 메모리를 관련된 프로세서의 비할당된 국부 메모리부로 전달하므로써(제8도), 상기 관련된 프로세서에 할당된 프로세스들로부터 전달된 메모리를 할당 해제하고(제8도), 상기 제1제어 수단과 제2제어 수단이 전역 메모리 부분과 비할당된 국부 메모리부분 사이에서 메모리를 전달하도록 제휴하며(제5 내지 9도), 상기 두 메모리 부분 모두 소정 상태의 발생에 응답하여 상기 제2제어 수단에 관련된 프로세서인 것을 특징으로 하는 멀티 프로세서 장치.
  7. 제6항에 있어서, 각각의 제2제어 수단이, 상기 전역 메모리 부분에 포함된 메모리량의 표시를 저장하기 위한 제1엔트리(201), 및 비할당된 국부 메모리부에 포함된 메모리량의 표시를 저장하기 위한 제2엔트리(202)를 포함하는 서로 다른 제2테이블 수단(제3도)(양 메모리 부분 모두 관련 프로세서에 속함), 및 상기 제2제어 수단에 관련된 프로세서에 할당된 프로세스의 복제에 대한 호출에 응답하여, 상기 전역 메모리 부분이 상기 복제된 프로세스에 의해 요구된 메모리량을 포함하는지 여부를 결정하기 위해 상기 제2테이블 수단의 제1엔트리를 검사하며(500-502), 상기 전역 메모리 부분이 필요한 메모리량을 포함할 경우 복제를 허용하도록 상기 제1제어 수단에 요청하는 (503-504) 작동 시스템 커널 수단(31)을 포함하고, 제1제어 수단은, 각각 다수의 프로세서중 서로다른 한 프로세서와 관련된 다수의 엔트리(212-213)를 포함하며, 상기 관련된 프로세서의 전역 메모리 부분에 포함된 메모리량의 표시를 저장하는 제1테이블 수단(제2도), 및 상기 복제를 허용하기 위한 요청에 응답하여, 상기 프로세서의 전역 메모리부가 필요한 량의 메모리를 포함하는지 여부를 결정하기 위해 상기 요청 제2제어 수단의 프로세서와 관련된 제1테이블 수단의 엔트리를 검사하고(510, 511), 전역 메모리 부분으로부터 비할당된 국부 메모리 부분으로 필요한 량의 메모리의 전달을 개시하도록 제1테이블 수단내의 프로세서의 관련된 엔트리를 요구된 량만큼 감소시키며(512-513), 상기 전역 메모리 부분이 상기 요구된 메모리량을 포함할 경우, 상기 제2제어 수단에 복제 요청 허용을 통보(514)하는 작동 시스템 프로세스 관리 수단(30), 및 상기 요청 제2제어 수단의 커널 수단이 또한 상기 허용의 통보에 응답하여, 상기 전역 메모리 부분으로부터 비할당된 국부 메모리부로의 요구된 량의 메모리의 전달을 완성하기 위해 요구된 량만큼 상기 제2테이블 수단의 제1엔트리를 감소시키며 상기 제2엔트리를 증가시키고(520-522), 복제된 프로세스로의 할당을 위해 상기 비할당된 국부 메모리 부분으로부터 할당된 국부 메모리부로 필요한 량의 메모리를 전달하도록 상기 제2테입블 수단의 제2엔트리를 요구된 량만큼 감소시키는(523-527) 것을 특징으로 하는 멀티 프로세서 장치.
  8. 제6항에 있어서, 상기 제1제어 수단이, 각각 다수의 프로세서들중 서로 다른 한 프로세서와 관련된 다수의 엔트리(212-213)를 포함하고, 관련된 프로세서의 전역 메모리 부분내에 메모리량의 표시 저장하기 위한 제1테이블 수단(제2도), 및 한 프로세스의 변형을 위한 호출 프로세서로부터 호출에 응답하여, 변형된 프로세스로의 할당을 위해 한 프로세서를 선택하고(610 내지 611), (이때, 선택된 프로세서는 다수의 프로세서이고, 변형된 프로세스에 의해 요구된 메모리의 양을 포함하는 전역 메모리 부분을 가짐, 전역 메모리 부분으로부터 선택된 프로세서의 비할당된 국부 메모리 부분으로의 요구된 량의 메모리의 전달을 개시하도록 요구된 량만큼 선택된 프로세서와 관련된 제1테이블 수단의 엔트리를 감소시키며(612), 상기 호출 프로세서에 상기 선택을 통보하는(613-614) 작동 시스템 프로세스 관리 수단(30)을 포함하며, 각각의 제2제어 수단은, 전역 메모리 부분내에 메모리량의 표시를 저장하기 위한 제1엔트리(201), 및 비할당된 국부 메모리 부분에 메모리량의 표시를 저장하기 위한 제2엔트리(202)를 포함하는 서로 다른 제2테이블 수단(제3도)(양 메모리 부분이 관련된 프로세서에 속함), 관련된 프로세서의 선택의 상기 호출 프로세서로부터의 통보에 응답하여, 전역 메모리 부분으로부터 비할당된 국부 메모리 부분으로 필요한 량의 메모리의 전달을 완성하도록 필요한 량만큼 상기 제2테이블 수단의 제1엔트리를 감소시키고 상기 제2엔트리를 증가시키며(650-652), 변형된 프로세스에 대한 할당을 위해 비할당된 국부 메모리 부분으로부터 할당된 국부 메모리부분으로 필요한 량의 메모리를 전달하도록 제2테이블 수단의 제2엔트를 필요한 량만큼 감소시키는 (653 내지 657) 작동 시스템 커널 수단(31)을 포함하는 것을 특징으로 하는 멀티 프로세서 장치.
  9. 제6항에 있어서, 각각 제2제어 수단은, 전역 메모리 부분내에 메모리량의 표시를 저장하기 위한 제1엔트리(201)와 비할당된 국부 메모리 부분내에 메모리량의 표시를 저장하기 위한 제2엔트리(202)를 포함하는 서로다른 제2테이블 수단(제3도)(양 메모리부가 모두 관련된 프로세서에 속함); 및 관련된 프로세서에 할당된 한 프로세스에 대한 제1메모리양의 할당에 대한 호출에 응답하여 사이 비할당된 국부 메모리부가 상기 호출을 만족시키기에 적합한 메모리량을 포함하는지 여부를 결정하기 위해 상기 제2테이블 수단의 제2엔트리를 검사(700-702)하며, 상기 비할당된 국부 메모리부가 적합한 량의 메모리를 포함하지 않을 경우 전역 메모리부분으로부터 제2메모리량을 국부 메모리부로 전달하도록 상기 제1제어 수단에 요청하고(703-706), 상기 비할당된 국부 메모리부가 적절한 량의 메모리를 포함할 경우, 호출 프로세스로의 할당을 위해 비할당된 국부 메모리로부터 할당된 국부 메모리부로 제1메모리량을 전달하도록 제1량만큼 상기 제2테이블 수단의 제2엔트리를 감소시키는(713-717) 작동 시스템 커널 수단(31)을 포함하며, 제1제어 수단은 각각 상기 다수의 프로세서들중 서로 다른 한 프로세서와 관련되며, 상기 관련된 프로세서의 전역 메모리 부분내에 메모리 양의 표시를 저장하는 다수의 엔트리(212-213)를 포함하는 제1테이블 수단(제2도); 및 상기 전달 요청에 응답하여, 상기 관련된 프로세서의 전역 메모리 부분에서 비교적 적은 제2메모리량과 전체 메모리량만큼 상기 요청 제2제어 수단의 프로세서와 관련된 제1테이블 수단 엔트리를 감소시키므로써(1100-1103) 상기 전역 메모리 부분으로부터 비할당된 국부 메모리부분으로 비교적 적은 량의 메모리의 전달을 개시하며, 그 결과를 상기 요청 제2제어 수단에 통보(1104-1105)하는 작동 시스템 프로세스 매니저 수단(30)을 포함하며, 상기 요청 제2제어 수단의 커널 수단이 또한 상기 통보에 응답하여 상기 전역 메모리 부분으로부터 비할당된 국부 메모리 부분으로의 상기 메모리 량의 전달을 완성하기 위해 전달되는 량만큼 상기 제2테이블 수단의 제1엔트리를 감소시키고 상기 제2엔트리를 증가시키며(710-711), 상기 비할당된 국부 메모리부가 제1량의 메모리를 포함하는지 여부를 결정하기 위해 상기 제2테이블 수단의 제2엔트리를 검사하고(712), 상기 비할당된 국부 메모리부가 제1메모리량을 포함할 경우 상기 호출 프로세스로의 할당을 위해 상기 비할당된 국부 메모리부로부터 할당된 국부 메모리부로 제1량의 메모리를 전달하도록 제1량만큼 제2엔트리를 감소시키는(713-717) 것을 특징으로 하는 멀티 프로세서 장치.
  10. 제6항에 있어서, 각각의 제2제어 수단이, 전역 메모리 부분에 메모리량의 표시를 저장하기 위한 제1엔트리(201), 및 비할당된 국부 메모리 부분내에 메노리량의 표시를 저장하기 위한 제2엔트리(202)를 포함하는 서로다른 제2테이블 수단(제3도)(양 메모리 모두 관련된 프로세서에 속함); 및 할당된 제1메모리량의 관련된 프로세서에 할당된 한 프로세스로부터 할당 해제(deallocation)에 대한 호출에 응답하여, 당해 프로세스로부터 제1메모리량을 할당 해제하도록 할당된 국부 메모리부로부터 비할당된 국부 메모리부로 제1량의 메모리를 전달하도록 제1량만큼 제2테이블 수단의 제2엔트리를 증가시키며(800-802), 그후 비할당된 국부 메모리부가 소정량을 초과한 메모리량을 포함하는지 여부를 결정하기 위해 제2테이블 수단의 제2엔트리를 검사하고(804, 900-903), 상기 비할당된 국부 메모리부가 소정량의 메모리를 초과할 경우, 상기 국부 메모리부로부터 전역 메모리부로 제2메모리량을 전달하도록 제1제어 수단에 요청하는(904, 907) 작동 시스템 커널 수단(31)을 포함하며, 상기 제1제어 수단이, 각각 다수의 프로세서들중 서로다른 한 프로세서와 관련되며, 관련된 프로세서의 전역 메모리 부분에서 메모리량 표시를 저장하기 위한 제1테이블 수단(제2도), 및 상기 전달 요청에 응답하여, 상기 전역 메모리부로 상기 비할당된 국부 메모리부로부터의 메모리량의 전달을 개시하도록 제2량만큼 상기 요청 제2제어 수단의 프로세서와 관련된 제1테이블 수단의 엔트리를 증가시키며(910-911), 그 결과를 상기 요청 제2제어 수단에 통보하는 작동 시스템 프로세스 관리 수단(30)을 포함하며, 상기 요청 제2제어 수단(920-922)의 컬 수단이 또한 상기 통보에 응답하여, 비할당된 국부 메모리부로부터 전역 메모리부로 당해 메모리량의 전달을 완성하기 위해 상기 제2테이블 수단의 제1엔트리를 제2량만큼 증가시키고 제2엔트리를 감소시키는 것을 특징으로 하는 멀티 프로세서 장치.
  11. 할당된 프로세스들을 실시하며, 자체 소유의 비공유된 메모리(22)를 가진 다수의 프로세서들(10-12)을 연결하는 버스를 가진 시스템(제1도)에서 프로세서들에 메모리를 할당하는 방법에 있어서, 상기 프로세스가 할당되는 최소한 몇몇 프로세서(11-12)중 한 프로세서의 메모리의 제1전역 메모리 부분(42)으로부터 초기에-필요한(initially-required) 메모리량을 한 프로세스에 할당하도록 제1제어 장치(30)에 요청하는 단계(503 ; 602) ; 상기 프로세스가 할당되는 상기 프로세서에 대한 전용으로, 상기 프로세스에 대해 자체 메모리의 제2국부 메모리부(41)로부터의 필요한 량의 메모리를 할당하도록 제2제어 장치(31)에 요청하는 단계(700 ; 800) ; 및 상기 제1 및 제2제어 장치는 서로 제휴하여 상기 프로세서(704-706, 710-711, 1100-1105, 제9도)의 제1 및 제2메모리부 사이에서 요구되는 메모리를 전달하는 것을 특징으로 하는 메모리 할당 방법.
  12. 제11항에 있어서, 상기 제1메모리량을 할당하는 단계가, 상기 제1제어 장치가 제1메모리부내에 최소한 제1메모리량을 가진 제1프로세서에 상기 프로세스를 할당하는 단계(611) ; 상기 제1제어 장치가 제1메모리량을 제1메모리부로부터 제1프로세서의 제2메모리부로 전달하는 단계(612-632) ; 및 상기 할당에 응답하여, 제1프로세서에 전용인 제2제어 장치에 의해 프로세스에 제1메모리량을 할당하고 제1프로세서에 할당된 프로세서들에 대해 제1프로세서의 제2메모리부에 포함된 메모리를 할당(650-657)하는 단계를 포함하며, 상기 제2메모리량을 할당하기 위해 제2제어 장치에 요청하는 단계가, 제2메모리량을 할당하도록 제1프로세서 전용인 제2제어 장치에 요청하는 단계(700) ; 및 상기 제1프로세서에 할당된 프로세스에 할당된 제3메모리량을 할당 해제하도록 제2제어 장치에 요청하는 단계(800)를 포함하고, 상기 제2제어 장치 메모리 할당 단계가, 상기 할당 요청에 응답하여, 상기 프로세서에 대한 제1프러세서의 제2메모리량을 할당하는 단계(701-717), 및 상기 할당 해제 요청에 응답하여, 제2제어 장치가 상기 프로세스로부터 제1프로세서의 제2메모리부로 제3메모리량을 할당 해제(801-806)하는 단계를 포함하는 것을 특징으로 하는 메모리 할당 방법.
KR1019870014590A 1986-12-22 1987-12-21 멀티 프로세서 메모리 관리 방법 및 장치 KR970001901B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US941,703 1986-12-22
US941703 1986-12-22
US06/941,703 US4811216A (en) 1986-12-22 1986-12-22 Multiprocessor memory management method

Publications (2)

Publication Number Publication Date
KR880008187A KR880008187A (ko) 1988-08-30
KR970001901B1 true KR970001901B1 (ko) 1997-02-18

Family

ID=25476930

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019870014590A KR970001901B1 (ko) 1986-12-22 1987-12-21 멀티 프로세서 메모리 관리 방법 및 장치

Country Status (8)

Country Link
US (1) US4811216A (ko)
EP (1) EP0273612B1 (ko)
JP (1) JPS63239551A (ko)
KR (1) KR970001901B1 (ko)
BR (1) BR8707011A (ko)
CA (1) CA1297199C (ko)
DE (1) DE3751446T2 (ko)
HK (1) HK103796A (ko)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5093913A (en) * 1986-12-22 1992-03-03 At&T Laboratories Multiprocessor memory management system with the flexible features of a tightly-coupled system in a non-shared memory system
US5136706A (en) * 1987-04-30 1992-08-04 Texas Instruments Incorporated Adaptive memory management system for collection of garbage in a digital computer
US5109515A (en) * 1987-09-28 1992-04-28 At&T Bell Laboratories User and application program transparent resource sharing multiple computer interface architecture with kernel process level transfer of user requested services
US5055999A (en) 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
US5335325A (en) * 1987-12-22 1994-08-02 Kendall Square Research Corporation High-speed packet switching apparatus and method
US5282201A (en) * 1987-12-22 1994-01-25 Kendall Square Research Corporation Dynamic packet routing network
US5761413A (en) * 1987-12-22 1998-06-02 Sun Microsystems, Inc. Fault containment system for multiprocessor with shared memory
US5089953A (en) * 1987-12-28 1992-02-18 Sundstrand Corporation Control and arbitration unit
US5142674A (en) * 1988-03-08 1992-08-25 International Business Machines Corporation Interchange object data base index which eliminates the need for private copies of interchange documents files by a plurality of application programs
JPH0291747A (ja) * 1988-09-29 1990-03-30 Hitachi Ltd 情報処理装置
US5142622A (en) * 1989-01-31 1992-08-25 International Business Machines Corporation System for interconnecting applications across different networks of data processing systems by mapping protocols across different network domains
US5305440A (en) * 1989-05-15 1994-04-19 International Business Machines Corporation File extension by clients in a distributed data processing system
CA2019300C (en) * 1989-06-22 2001-06-12 Kendall Square Research Corporation Multiprocessor system with shared memory
JPH0697449B2 (ja) * 1989-09-20 1994-11-30 株式会社日立製作所 多重化共有メモリ制御方法、多重化共有メモリシステムおよび共有メモリ拡張方法
US5283900A (en) * 1989-10-02 1994-02-01 Spectron Microsystems, Inc. Real-time operating system and virtual digital signal processor for the control of a digital signal processor
US5218695A (en) * 1990-02-05 1993-06-08 Epoch Systems, Inc. File server system having high-speed write execution
JPH06105440B2 (ja) * 1990-03-08 1994-12-21 株式会社日立製作所 主メモリ管理方法
US5347634A (en) * 1990-03-15 1994-09-13 Hewlett-Packard Company System and method for directly executing user DMA instruction from user controlled process by employing processor privileged work buffer pointers
US5276896A (en) * 1990-06-11 1994-01-04 Unisys Corporation Apparatus for implementing data communications between terminal devices and user programs
JPH0496830A (ja) * 1990-08-15 1992-03-30 Hitachi Ltd 分散処理システムにおけるデータ管理方法
US5269013A (en) * 1991-03-20 1993-12-07 Digital Equipment Corporation Adaptive memory management method for coupled memory multiprocessor systems
US5303362A (en) * 1991-03-20 1994-04-12 Digital Equipment Corporation Coupled memory multiprocessor computer system including cache coherency management protocols
CA2057446C (en) * 1991-04-04 1998-02-17 Brian Neil Baker Shared memory access and data structure access control
US5327570A (en) * 1991-07-22 1994-07-05 International Business Machines Corporation Multiprocessor system having local write cache within each data processor node
US5809551A (en) * 1991-08-23 1998-09-15 International Business Machines Corporation Pending page release
US5410700A (en) * 1991-09-04 1995-04-25 International Business Machines Corporation Computer system which supports asynchronous commitment of data
CA2078310A1 (en) * 1991-09-20 1993-03-21 Mark A. Kaufman Digital processor with distributed memory system
CA2078312A1 (en) 1991-09-20 1993-03-21 Mark A. Kaufman Digital data processor with improved paging
GB2273800A (en) * 1992-12-24 1994-06-29 Ibm Distributed data processing system
JP2826028B2 (ja) * 1993-01-28 1998-11-18 富士通株式会社 分散メモリ型プロセッサシステム
US5559980A (en) * 1993-03-18 1996-09-24 Lucent Technologies Inc. Method and apparatus for detecting references to deallocated memory in a dynamic memory allocation system
US5617537A (en) * 1993-10-05 1997-04-01 Nippon Telegraph And Telephone Corporation Message passing system for distributed shared memory multiprocessor system and message passing method using the same
JPH08123763A (ja) * 1994-10-26 1996-05-17 Nec Corp 分散処理システムにおけるメモリ割り当て方式
US6058460A (en) * 1996-06-28 2000-05-02 Sun Microsystems, Inc. Memory allocation in a multithreaded environment
US5813042A (en) * 1997-02-19 1998-09-22 International Business Machines Corp. Methods and systems for control of memory
US6092155A (en) * 1997-07-10 2000-07-18 International Business Machines Corporation Cache coherent network adapter for scalable shared memory processing systems
FR2771526B1 (fr) 1997-11-27 2004-07-23 Bull Sa Architecture pour la gestion de donnees vitales dans une machine multi-modulaire et procede pour la mise en oeuvre d'une telle architecture
US6449699B2 (en) * 1999-03-29 2002-09-10 International Business Machines Corporation Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems
US6618820B1 (en) 2000-01-10 2003-09-09 Imagex.Com, Inc. Method for configuring an application server system
US6618742B1 (en) 2000-01-10 2003-09-09 Imagex.Com, Inc. Method for job impact learning
US6681240B1 (en) * 1999-05-19 2004-01-20 International Business Machines Corporation Apparatus and method for specifying maximum interactive performance in a logical partition of a computer system independently from the maximum interactive performance in other partitions
US6631480B2 (en) 1999-11-10 2003-10-07 Symantec Corporation Methods and systems for protecting data from potential corruption by a crashed computer program
US6662310B2 (en) 1999-11-10 2003-12-09 Symantec Corporation Methods for automatically locating url-containing or other data-containing windows in frozen browser or other application program, saving contents, and relaunching application program with link to saved data
US6630946B2 (en) 1999-11-10 2003-10-07 Symantec Corporation Methods for automatically locating data-containing windows in frozen applications program and saving contents
US6690951B1 (en) * 1999-12-20 2004-02-10 Telefonaktiebolaget Lm Ericsson (Publ) Dynamic size allocation system and method
US6823472B1 (en) * 2000-05-11 2004-11-23 Lsi Logic Corporation Shared resource manager for multiprocessor computer system
US20030217184A1 (en) * 2000-12-30 2003-11-20 Govindan Nair Method and apparatus for allocating buffers shared among protocol layers in a protocol stack
US7143281B2 (en) * 2001-10-12 2006-11-28 Hewlett-Packard Development Company, L.P. Method and apparatus for automatically changing kernel tuning parameters
US20030115402A1 (en) * 2001-11-16 2003-06-19 Fredrik Dahlgren Multiprocessor system
US7302548B1 (en) * 2002-06-18 2007-11-27 Cisco Technology, Inc. System and method for communicating in a multi-processor environment
US6985916B2 (en) * 2002-08-29 2006-01-10 International Business Machines Corporation Method, system, and article of manufacture for returning physical volumes
US7085897B2 (en) * 2003-05-12 2006-08-01 International Business Machines Corporation Memory management for a symmetric multiprocessor computer system
US7568025B2 (en) * 2003-06-27 2009-07-28 Bank Of America Corporation System and method to monitor performance of different domains associated with a computer system or network
US20060080514A1 (en) * 2004-10-08 2006-04-13 International Business Machines Corporation Managing shared memory
US7689794B2 (en) * 2004-10-22 2010-03-30 Scientific-Atlanta, Llc System and method for handling memory allocation failures through reserve allocation of event data
JP4842720B2 (ja) * 2006-06-29 2011-12-21 株式会社日立製作所 ストレージシステム及びデータ複製方法
US7428629B2 (en) * 2006-08-08 2008-09-23 International Business Machines Corporation Memory request / grant daemons in virtual nodes for moving subdivided local memory space from VN to VN in nodes of a massively parallel computer system
JP4696151B2 (ja) * 2008-10-23 2011-06-08 株式会社エヌ・ティ・ティ・ドコモ 情報処理装置およびメモリ管理方法
US8239701B2 (en) * 2009-07-28 2012-08-07 Lsi Corporation Methods and apparatus for power allocation in a storage system
US8271811B2 (en) * 2009-11-05 2012-09-18 Lsi Corporation Methods and apparatus for load-based power management of PHY logic circuits of a SAS device based upon a current workload
KR20120134918A (ko) 2011-06-03 2012-12-12 삼성전자주식회사 복수의 프로세서를 포함하는 전자 장치
US10776256B2 (en) * 2018-05-16 2020-09-15 International Business Machines Corporation Sharing consumed off-heap for parallel data loading
US11740800B2 (en) 2021-06-22 2023-08-29 Micron Technology, Inc. Alleviating memory hotspots on systems with multiple memory controllers

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4514728A (en) * 1980-02-25 1985-04-30 At&T Bell Laboratories Store group bus allocation system
US4384323A (en) * 1980-02-25 1983-05-17 Bell Telephone Laboratories, Incorporated Store group bus allocation system
US4685125A (en) * 1982-06-28 1987-08-04 American Telephone And Telegraph Company Computer system with tasking
US4511964A (en) * 1982-11-12 1985-04-16 Hewlett-Packard Company Dynamic physical memory mapping and management of independent programming environments
US4754394A (en) * 1984-10-24 1988-06-28 International Business Machines Corporation Multiprocessing system having dynamically allocated local/global storage and including interleaving transformation circuit for transforming real addresses to corresponding absolute address of the storage

Also Published As

Publication number Publication date
EP0273612A3 (en) 1991-05-29
DE3751446T2 (de) 1996-02-15
CA1297199C (en) 1992-03-10
JPS63239551A (ja) 1988-10-05
DE3751446D1 (de) 1995-09-14
JPH0551942B2 (ko) 1993-08-04
EP0273612A2 (en) 1988-07-06
EP0273612B1 (en) 1995-08-09
HK103796A (en) 1996-06-21
KR880008187A (ko) 1988-08-30
US4811216A (en) 1989-03-07
BR8707011A (pt) 1988-08-09

Similar Documents

Publication Publication Date Title
KR970001901B1 (ko) 멀티 프로세서 메모리 관리 방법 및 장치
US5093913A (en) Multiprocessor memory management system with the flexible features of a tightly-coupled system in a non-shared memory system
US6192514B1 (en) Multicomputer system
US5884077A (en) Information processing system and method in which computer with high load borrows processor of computer with low load to execute process
US20210117220A1 (en) Unified resource scheduling coordinator, method for creating a virtual machine and/or container, and unified resource scheduling system
US6738974B1 (en) Apparatus and method for system resource object deallocation in a multi-threaded environment
US6289424B1 (en) Method, system and computer program product for managing memory in a non-uniform memory access system
US5838968A (en) System and method for dynamic resource management across tasks in real-time operating systems
US5313584A (en) Multiple I/O processor system
US4685125A (en) Computer system with tasking
US6353844B1 (en) Guaranteeing completion times for batch jobs without static partitioning
US8327372B1 (en) Virtualization and server imaging system for allocation of computer hardware and software
JP4634548B2 (ja) マルチプロセッサコンピュータシステム及びその動作方法
KR102051282B1 (ko) 선택적 리소스 이동을 이용하는 네트워크 결합 메모리
EP0323013A2 (en) Method of operating a multiprocessor system employing a shared virtual memory
US4849877A (en) Virtual execution of programs on a multiprocessor system
EP4273700A2 (en) Computing resource allocation
US6424988B2 (en) Multicomputer system
KR20030086298A (ko) 분할 처리 환경에서의 자원 조절
US6985976B1 (en) System, method, and computer program product for memory management for defining class lists and node lists for allocation and deallocation of memory blocks
CN1987791A (zh) 用于共享硬件设备的基于文件的访问控制方法和装置
US11947463B2 (en) Method and apparatus for managing memory in memory disaggregation system
JPS616741A (ja) 階層型多重計算機システム
CN112162818B (zh) 一种虚拟内存分配方法、装置、电子设备及存储介质
Feeley et al. Dynamic node reconfiguration in a parallel-distributed environment

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
FPAY Annual fee payment

Payment date: 20010131

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee