KR101555529B1 - 프로세스 내의 스케줄러 인스턴스들 - Google Patents

프로세스 내의 스케줄러 인스턴스들 Download PDF

Info

Publication number
KR101555529B1
KR101555529B1 KR1020107026554A KR20107026554A KR101555529B1 KR 101555529 B1 KR101555529 B1 KR 101555529B1 KR 1020107026554 A KR1020107026554 A KR 1020107026554A KR 20107026554 A KR20107026554 A KR 20107026554A KR 101555529 B1 KR101555529 B1 KR 101555529B1
Authority
KR
South Korea
Prior art keywords
scheduler instance
tasks
scheduler
instance
computer system
Prior art date
Application number
KR1020107026554A
Other languages
English (en)
Other versions
KR20110025745A (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 KR20110025745A publication Critical patent/KR20110025745A/ko
Application granted granted Critical
Publication of KR101555529B1 publication Critical patent/KR101555529B1/ko

Links

Images

Classifications

    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

프로세스 내에 제1 및 제2 스케줄러 인스턴스를 생성하는 컴퓨터 시스템의 런타임 환경이 제공된다. 각각의 스케줄러 인스턴스는 할당된 프로세싱 자원들을 포함하고, 실행을 위한 태스크들의 집합을 할당받는다. 각각의 스케줄러 인스턴스는 프로세스의 작업을 수행하기 위해, 할당된 프로세싱 자원들을 이용하여 실행을 위해 태스크들을 스케줄링한다.

Description

프로세스 내의 스케줄러 인스턴스들{SCHEDULER INSTANCES IN A PROCESS}
컴퓨터 시스템 내에서 실행되는 프로세스들은 종종 상이한 우선순위들을 갖는 태스크들을 갖는다. 원하는 대로 동작하기 위해, 프로세스는 태스크들의 우선순위에 기초하여 적합한 프로세싱 자원들이 태스크들에 할당될 것을 보장하기 위해 상당한 오버헤드를 들일 수 있다. 이러한 오버헤드는 컴퓨터 시스템 내에서 실행을 위해 프로세스의 태스크들을 스케줄링하는 스케줄러의 이용을 포함할 수 있다.
전형적으로, 단일 스케줄러를 갖는 프로세스들은 프로세스에 의해 생성되는 모든 태스크들 간에서 프로세싱 자원들을 공유하고, 동일한 스케줄링 정책을 모든 태스크들에 적용한다. 일반적으로, 프로세스는 태스크들의 부분집합에 다른 스케줄링 정책을 적용함으로써 그 태스크들의 부분집합에 직접적으로 우선순위를 부여하는 능력은 갖지 않는다. 개발자가 태스크들의 부분집합들을 파티션(partition)하고, 그 파티션을 운영 체제에 의해 제공되는 실행 컨텍스트들에 할당할 수 있긴 하지만, 이러한 접근방식은 개발자로 하여금 자원들이 동적으로 할당되는 컴퓨터 시스템들에서는 최적이지 않을 수 있는 복잡한 기반구조를 설계하게 한다.
본 개요는 이하의 상세한 설명에서 더 기술되는 개념들 중 선택된 것들을 간략한 형태로 소개하기 위해 제공된 것이다. 본 개요는 청구되는 발명의 주제의 핵심적인 특징 또는 본질적인 특징을 식별하도록 의도된 것이 아니며, 청구되는 발명의 주제의 범위를 제한하는 데에 이용되도록 의도된 것도 아니다.
프로세스 내에 복수의 스케줄러 인스턴스를 생성하는 컴퓨터 시스템의 런타임 환경이 제공된다. 각각의 스케줄러 인스턴스는 할당된 프로세싱 자원들을 포함하고, 실행을 위한 태스크들의 집합을 할당받는다. 스케줄러 인스턴스는 프로세스의 작업을 수행하기 위해, 할당된 프로세싱 자원들을 이용하는 실행을 위해 태스크들을 스케줄링한다. 또한, 한 스케줄러 인스턴스 내의 태스크는 네스트된(nested) 스케줄러 인스턴스를 생성할 수 있다.
첨부되는 도면들은 실시예들에 대한 추가의 이해를 제공하기 위해 포함된 것이며, 본 명세서에 포함되어 그 일부를 이룬다. 도면들은 실시예들을 도시하며, 설명과 함께 실시예들의 원리를 설명하는 역할을 한다. 다른 실시예들 및 실시예들의 의도된 이점들 중의 다수는 이하의 상세한 설명을 참조함으로써 더 잘 이해될 수 있으므로 쉽게 이해될 수 있을 것이다. 도면들의 구성요소들은 반드시 서로에 대해 비례에 맞춰 그려진 것은 아니다. 유사한 참조 번호들은 대응하는 유사한 부분들을 지정한다.
도 1은 복수의 스케줄러 인스턴스를 포함하는 프로세스를 갖는 런타임 환경의 실시예를 도시한 블록도이다.
도 2는 프로세스 내에서 복수의 스케줄러 인스턴스를 생성하기 위한 방법의 실시예를 도시한 흐름도이다.
도 3은 프로세스 내의 스케줄러 인스턴스들에 실행 컨텍스트를 할당하기 위한 방법의 실시예를 도시한 흐름도이다.
도 4a 내지 4b는 프로세스 내의 네스트된 스케줄러 인스턴스들의 실시예를 도시한 블록도이다.
도 5는 프로세스 내에서 네스트된 스케줄러 인스턴스를 생성하기 위한 방법의 실시예를 도시한 흐름도이다.
도 6은 스케줄러 내에서 사용하기 위한 스케줄 그룹의 실시예를 도시한 블록도이다.
도 7은 복수의 스케줄러 인스턴스를 포함하는 프로세스를 갖는 런타임 환경을 구현하도록 구성된 컴퓨터 시스템의 일 실시예를 도시하는 블록도이다.
이하의 상세한 설명에서는, 본 명세서의 일부를 형성하며 본 발명이 실시될 수 있는 구체적인 실시예들이 예시로서 도시되어 있는 첨부 도면들이 참조된다. 이와 관련하여, "상부(top)", "하부(bottom)", "앞(front)", "뒤(back)", "선두(leading)", "후미(tailing)" 등과 같은 방향 관련 용어는 기술되고 있는 도면의 방향을 참조하여 이용된다. 실시예들의 구성요소들이 다수의 상이한 방향들로 배치될 수 있기 때문에, 방향 관련 용어는 설명을 목적으로 사용되며, 결코 제한하고 있는 것이 아니다. 다른 실시예들이 이용될 수 있으며, 본 발명의 범위를 벗어나지 않고서 구조적 또는 논리적 변경이 이루어질 수 있음을 이해해야 한다. 그러므로, 이하의 상세한 설명은 제한적인 의미로 받아들여져서는 안 되며, 본 발명의 범위는 첨부된 청구항들에 의해서 정의된다.
여기에 설명되는 다양한 실시예들의 특징들은 구체적으로 다르게 언급되지 않는 한, 서로 결합될 수 있음을 이해해야 한다.
도 1은 복수의 스케줄러 인스턴스(22(1)-22(N))를 포함하는 프로세스(12A)를 갖는 런타임 환경(10)의 실시예를 도시한 블록도로서, N은 2 이상의 정수이며, N번째 스케줄러 인스턴스(22(N))를 나타낸다.
런타임 환경(10)은 도 7에 도시되고 이하에 더 상세하게 설명되는 컴퓨터 시스템(100)과 같은 컴퓨터 시스템 내에서의 런타임 동작 모드를 나타내며, 여기에서 컴퓨터 시스템은 명령어들을 실행하고 있다. 컴퓨터 시스템은 도 7에 도시되고 이하에 더 상세하게 설명되는 런타임 플랫폼(122)과 같은 런타임 플랫폼으로부터 런타임 환경(10)을 생성한다.
런타임 환경(10)은 적어도 하나의 호출된(invoked) 프로세스(12A), 자원 관리층(14), 및 하드웨어 스레드들(16(1)-16(M))의 집합을 포함하는데, M은 1 이상의 정수이며, M번째 하드웨어 스레드(16(M))를 나타낸다. 런타임 환경(10)은 자원 관리층(14) 및 하드웨어 스레드(16(1)-16(M))를 이용하여, 프로세스(12A)로부터의 태스크들이 프로세스(12(A))와 공존하는 임의의 다른 프로세스들(도시되지 않음)로부터의 태스크들과 함께 실행되는 것을 허용한다. 런타임 환경(10)은 자원 관리층(14)과 함께 동작하여, 프로세스(12A)가 컴퓨터 시스템의 프로세서 및 기타 자원들(예를 들어, 하드웨어 스레드(16(1)-16(M))을 획득할 수 있게 해 준다. 또한, 런타임 환경(10)은 자원 관리층(14)과 함께 동작하여, 프로세스(12(A)) 내에 복수의 스케줄러 인스턴스(22(1)-22(N))가 공존할 수 있게 해 준다.
런타임 환경(10)은 각각의 스케줄러 인스턴스(22)를 생성하는 스케줄러 기능(function)을 포함한다. 일 실시예에서, 스케줄러 기능은 스케줄러 애플리케이션 프로그래밍 인터페이스(API)로서 구현된다. 다른 실시예들에서, 스케줄러 기능은 다른 적합한 프로그래밍 구성들을 이용하여 구현될 수 있다. 스케줄러 기능은 호출될 때, 프로세스(12A) 또는 다른 공존하는 프로세스 내에 스케줄러 인스턴스(22)를 생성하며, 각각의 스케줄러 인스턴스(22)는 프로세스(12A)의 태스크들을 하나 이상의 하드웨어 스레드(16(1)-16(M))에 의한 실행을 위해 스케줄링하도록 동작한다. 런타임 환경(10)은, 애플리케이션 또는 라이브러리 개발자들이 스케줄러 기능이 제공하는 기능성들을 알고 있는 동반된 도구들을 이용하여 그들의 프로그램(예를 들어, 프로세스(12A)) 내에 표현하는 세분화된 동시성(fine grained concurrency)을 활용할 수 있다.
프로세스(12A)는 하나 이상의 실행 컨텍스트(즉, 스레드)를 호스트하는 프로세싱 및 기타 자원들의 할당을 포함한다. 프로세스(12A)는 자원 관리층(14)으로부터 컴퓨터 시스템 내의 프로세싱 및 기타 자원들(예를 들어, 하드웨어 스레드(16(1)-16(M))로의 액세스를 획득한다. 프로세스(12A)는 프로세싱 및 기타 자원들을 이용하여 태스크들이 실행되게 한다.
프로세스(12A)는 가변 길이의 태스크들로 작업(work)을 생성하는데, 각각의 태스크는 스케줄러 인스턴스(22) 내의 실행 컨텍스트에 연관된다. 각각의 태스크는 컴퓨터 시스템에 의해 실행될 때 한 단위의 작업(a unit of work)을 수행하는 명령어들의 시퀀스를 포함한다. 각각의 실행 컨텍스트는 할당된 프로세싱 자원들 상에서 연관된 태스크들을 실행하는 스레드(또는 자식 프로세스와 같은 유사한 OS 개념)를 형성한다. 각각의 실행 컨텍스트는 프로그램 상태 및 머신 상태 정보를 포함한다. 실행 컨텍스트는 실행할 태스크가 더 이상 남아있지 않을 때 종료할 수 있다. 각 태스크에 대하여, 런타임 환경(10) 및/또는 프로세스(12A)는 실행을 위해 스케줄링되도록 태스크를 스케줄러 인스턴스(22)에 할당하거나, 또는 다르게는 스케줄러 인스턴스(22)를 이용하지 않고서 태스크가 실행되게 한다.
프로세스(12A)는 스택 모델 또는 인터프리터(interpreter) 모델과 같은 임의의 적합한 실행 모델에 기초하여 컴퓨터 시스템 내에서 동작하도록 구성될 수 있으며, 애플리케이션, 라이브러리 기능 또는 운영 체제 서비스와 같은 임의의 적합한 유형의 코드를 표현할 수 있다. 프로세스(12A)는 정의된 메모리 주소 공간을 포함하는 할당된 자원들의 집합에 연관된 프로그램 상태 및 머신 상태를 갖는다. 프로세스(12A)는 런타임 환경(10) 내의 임의의 공존하는 프로세스들로부터 자율적으로 또는 실질적으로 자율적으로 실행한다. 따라서, 프로세스(12A)는 공존하는 프로세스들의 프로그램 상태 또는 공존하는 프로세스들에 할당된 임의의 자원들의 머신 상태를 불리하게 변경하지 않는다. 마찬가지로, 공존하는 프로세스들은 프로세스(12A)의 프로그램 상태 또는 프로세스(12A)에 할당된 임의의 자원들의 머신 상태를 불리하게 변경하지 않는다.
자원 관리층(14)은 하나 이상의 하드웨어 스레드(16)를 프로세스(12A)에 할당함으로써, 프로세싱 자원들을 프로세스(12A)에 할당한다. 자원 관리층(14)은 도 1의 실시예에서 컴퓨터 시스템(도 1에는 도시되지 않음)의 운영 체제와는 별도로 존재한다. 다른 실시예들에서, 자원 관리층(14) 또는 그것의 기능들의 일부 또는 전부가 운영 체제 내에 포함될 수 있다.
하드웨어 스레드(16)는 컴퓨터 시스템의 하나 이상의 프로세서 패키지들(예를 들어, 도 7에 도시되고 이하에 더 상세하게 설명되는 프로세서 패키지(102))의 집합의 실행 코어들에 상주한다. 각각의 하드웨어 스레드(16)는 다른 실행 코어들로부터 독립하여 또는 실질적으로 독립하여 명령어들을 실행하도록 구성되며, 머신 상태를 포함한다. 하드웨어 스레드(16)는 단일 프로세서 패키지 내에 포함될 수 있고, 또는 복수의 프로세서 패키지에 걸쳐 분산될 수 있다. 프로세서 패키지 내의 각 실행 코어는 하나 이상의 하드웨어 스레드(16)를 포함할 수 있다.
프로세스(12A)는 암시적으로 또는 명시적으로, 각각의 스케줄러 인스턴스(22(1)-22(N))가 런타임 환경(10)에 의해 제공되는 스케줄러 기능을 통해 생성되게 한다. 스케줄러 인스턴스(22)는, 프로세스(12A)가 컴퓨터 시스템 내에서 이용가능한 API들 또는 프로그래밍 언어 특징들(programming language features)을 이용할 때 암시적으로 생성될 수 있다. API 또는 프로그래밍 언어 특징들에 응답하여, 런타임 환경(10)은 디폴트 정책(default policy)(37)을 갖는 스케줄러 인스턴스(22)를 생성한다. 스케줄러 인스턴스(22)를 명시적으로 생성하기 위해, 프로세스(12A)는 런타임 환경(10)에 의해 제공되는 스케줄러 기능을 호출할 수 있고, 스케줄러 인스턴스(22)를 위해 하나 이상의 정책(37)을 명시할 수 있다. 프로세스(12A)는 그것의 실행 전반에서 호출되는 스케줄러 인스턴스(22)의 수를 증가 또는 감소시킬 수 있다.
각각의 스케줄러 인스턴스(22)는 프로세스(12)에게 투명한 방식으로 컴퓨터 시스템의 프로세싱 및 기타 자원들을 협상하기 위해 자원 관리층(14)과 상호작용한다. 자원 관리층(14)은 공급 및 수요와 스케줄러 인스턴스들(22)의 임의의 정책(37)에 기초하여 스케줄러 인스턴스들(22)에 하드웨어 스레드들(16)을 할당한다.
도 1에 도시된 실시예에서, 스케줄러 인스턴스들(22)은 기초(underlying) 하드웨어 스레드들(16)의 추상화를 형성하는 가상 프로세서(32)를 생성함으로써 프로세싱 자원들을 관리한다. 각각의 스케줄러 인스턴스(22)는 가상 프로세서들(32(1)-32(P))의 집합을 포함하며, 각각의 P는 1 이상의 정수이며 스케줄러 인스턴스(22) 내의 P번째 가상 프로세서(32(P))를 나타낸다. 각각의 스케줄러 인스턴스(22)는 프로세스(12A)의 실행 내의 다양한 지점들에서 동일하거나 다른 수의 가상 프로세서(32)를 가질 수 있다 (즉, 각각의 P(1)-P(M)은 프로세스(12A)의 실행 동안 P(1)-P(M) 중의 임의의 다른 것보다 적거나 많거나 동일할 수 있다). 각각의 스케줄러 인스턴스(22)는 각각의 가상 프로세서(32)를 하드웨어 스레드(16)에 맵핑함으로써 가상 프로세서들(32)을 하드웨어 스레드들(16)에 멀티플렉싱한다. 각각의 스케줄러 인스턴스(22)는 하나보다 많은 가상 프로세서(32)를 특정 하드웨어 스레드(16)에 맵핑할 수 있지만, 단 하나의 하드웨어 스레드(16)를 각각의 가상 프로세서(32)에 맵핑한다. 다른 실시예들에서, 각각의 스케줄러 인스턴스(22)는 프로세스(12)의 명령어들이 하드웨어 스레드들(16)에 의해 실행되게 하기 위한 다른 적절한 방식으로 프로세싱 자원들을 관리한다.
각 스케줄러 인스턴스(22) 내의 실행 컨텍스트들의 집합은, 각각의 가상 프로세서(32(1)-32(P))에 의해 실행되고 있는 각각의 연관된 태스크(36(1)-36(P))를 갖는 실행 컨텍스트들(34(1)-34(P))의 집합, 및 프로세스(12A)의 실행 동안의 임의의 지점에서 0 이상의 실행 컨텍스트들(38)의 집합을 포함한다. 각각의 실행 컨텍스트(34 및 38)는 실행 컨텍스트(34 또는 38)가 실행중인지, 실행가능(runnable) 인지(예를 들어, 차단해제(unblock)되거나 스케줄러 인스턴스(22)에 추가되는 것에 응답하여), 차단(block)되는지를 나타내는 상태 정보를 포함한다. 실행 중인 실행 컨텍스트(34)는 가상 프로세서(32)에 첨부되었고, 현재 실행 중인 것들이다. 실행가능(runnable)인 실행 컨텍스트들(38)은 연관된 태스크(40)를 포함하며, 이용가능한 가상 프로세서(32)에 의해 실행될 준비가 된 것이다. 또한, 차단된 실행 컨텍스트(38)는 연관된 태스크(40)를 포함하며, 다른 실행 컨텍스트(34)에 의해 생성되고 있거나 다른 실행 컨텍스트(38)에 의해 생성될 데이터, 메시지 또는 이벤트를 기다리고 있는 것이다.
가상 프로세서(32) 상에서 실행중인 각각의 실행 컨텍스트(34)는 그것의 실행 동안, 임의의 적합한 방식으로 조직되는(예를 들어, 작업 큐(도 1에 도시되지 않음)에 추가되는) 추가의 태스크들(42)을 생성할 수 있다. 일 실시예에서, 작업은 런타임 환경(10)에 의해 제공되는 애플리케이션 프로그래밍 인터페이스(API) 또는 프로그래밍 언어 특징들 및 대응하는 도구들에 의해 생성될 수 있다. 프로세싱 자원들이 스케줄러 인스턴스(22)에게 이용가능할 때, 새로운 태스크들을 획득하기 전에, 태스크들은 완료를 위해 그들을 실행하는 실행 컨텍스트들(34 또는 38)에, 또는 가상 프로세서들(32) 상의 차단 지점(blocking point)에(예를 들어, 메시지 또는 빼앗긴 자식 태스크(stolen child task)가 완료하기를 기다림) 할당된다. 태스크가 차단해제되면, 그 태스크는, 메모리 계층구조(즉, 캐시 계층구조)가 최적으로 재사용될 수 있는 데이터를 이미 포함하고 있다는 희망 하에서, 가능하면 그것이 차단 전에 실행되던 하드웨어 스레드(16) 상의 가상 프로세서(32)를 선택할 우선권을 제공받고서, 이용가능한 가상 프로세서 상에서 실행하도록 재스케줄링된다. 또한, 가상 프로세서(32) 상에서 실행중인 실행 컨텍스트(34)는 다른 실행 컨텍스트들(38)에 의해 사용될 데이터, 메시지, 또는 이벤트를 생성함으로써 다른 실행 컨텍스트들(38)을 차단해제할 수 있다.
각각의 스케줄러 인스턴스(22) 내의 각각의 태스크가 실현(realized)될 수 있는데(예를 들어, 실현된 태스크들(36 및 40)), 이는 실행 컨텍스트(34 또는 38)가 태스크에 첨부되었거나 첨부될 것이며, 태스크가 실행할 준비가 되었음을 나타낸다. 실현된 태스크들은 전형적으로 차단해제된 실행 컨텍스트들 및 스케줄링된 에이전트들을 포함한다. 실현되지 않은 태스크는 비실현된(unrealized) 것으로 칭해진다. 비실현된 태스크들(예를 들어, 태스크들(42))은 부모 태스크들의 실행에 의해 발생되는 자식 태스크들로서 생성될 수 있으며, 병렬 구성들(예를 들어, parallel, parallel for, begin, finish))에 의해 발생될 수 있다. 각각의 스케줄러 인스턴스(22)는 이하에 설명되는 도 6의 실시예에 도시된 바와 같이, 종속적인 태스크들(즉, 비실현된 태스크들)에 대한 작업 가로채기 큐들(workstealing queues)의 목록과 함께, 실행 컨텍스트들을 갖는 논리적으로 독립적인 태스크들(즉, 실현된 태스크들)에 대해, 동기화된 컬렉션(예를 들어, 스택 및/또는 큐) 내로 조직될 수 있다.
가상 프로세서(32) 상에서 실행 중인 실행 컨텍스트(34)에 연관된 태스크(36)의 완료, 차단 또는 다른 인터럽션(예를 들어, 명시적인 양보(explicit yielding) 또는 강제된 선취(forced preemption)) 시에, 가상 프로세서(32)는 다른 실현된 태스크(40) 또는 비실현된 태스크(42)를 실행하기 위해 이용가능하게 된다. 스케줄러 인스턴스(22)는 임의의 적합한 방식으로 실행을 위해 이용가능한 가상 프로세서(32)에 첨부하기 위해, 실행가능 실행 태스크(runnable execution task)(38) 또는 비실현된 태스크(42)를 탐색한다. 예를 들어, 스케줄러 인스턴스(22)는 실행할 비실현된 태스크(42)를 탐색하기 전에, 실행할 실행가능 실행 컨텍스트(38)를 먼저 탐색할 수 있다. 각각의 스케줄러 인스턴스(22)는 스케줄러 인스턴스(22)의 모든 태스크들 및 실행 컨텍스트들(38)이 실행될 때까지, 실행을 위해, 실행 컨텍스트들(38)을 이용가능한 가상 프로세서들(32)에 계속하여 첨부한다.
스케줄러 인스턴스들(22)은 이질적인(heterogeneous) 유형들의 실행 컨텍스트들을 가질 수 있다. 프로세스(12A)가 Windows 프로세스인 Windows 운영 체제를 포함하는 컴퓨터 시스템의 실시예에서, Windows 프로세스 내의 상이한 스케줄러 인스턴스들(22)은 스레드 실행 컨텍스트들 및 파이버(fiber) 실행 컨텍스트들을 포함할 수 있다. 따라서, 스레드 실행 컨텍스트들 및 파이버 실행 컨텍스트들이 동일한 Windows 프로세스 내에 존재할 수 있다.
태스크들을 실행하기 전에, 각각의 스케줄러 인스턴스(22)는 런타임 환경(10) 또는 운영 체제(예를 들어, 도 7의 OS(120))로부터 실행 컨텍스트(34 및 38)를 획득한다. 이용가능한 가상 프로세서들(32)은 태스크들의 실행을 시작하기 위해 실행 컨텍스트들(34)을 찾고 실행한다. 가상 프로세서들(32)은 실행 컨텍스트(34)에 연관된 태스크(36)가 완료되거나 차단되거나 다르게 인터럽트되는 것에 응답하여 다시 이용가능하게 될 수 있다. 가상 프로세서들(32)이 이용가능하게 되면, 가상 프로세서들(32)은 실행가능 실행 컨텍스트(38)로 스위칭하거나, 현재의 실행 컨텍스트(34)에 의해 실행된 이전 태스크(36)가 완료되는 경우 현재의 실행 컨텍스트(34) 상에서의 연속으로서 다음 태스크(40 또는 42)를 실행한다.
일 실시예에서, 스케줄러 인스턴스들(22)은 서로로부터 자율적으로 동작하고, 하부의 공통 자원 관리층(14)과 통신한다. 다른 실시예들에서, 스케줄러 인스턴스들(22)은 스케줄러 인스턴스(22)의 한 인스턴스 상에서 스케줄링된 작업이 다른 스케줄러 인스턴스(22) 상에서 스케줄링된 작업과 조화를 이루도록 하기 위해 자원 관리층(14) 및 서로와 통신한다.
스케줄러 인스턴스들(22)은 각각 동일하거나 다른 정책들(37)을 가질 수 있다. 스케줄러 인스턴스(22)가 호출될 때, 런타임 환경(10) 및/또는 프로세스(12A)는 그 스케줄러 인스턴스(22)에 대한 정책들(37)을 명시한다. 각 스케줄러 인스턴스(22)의 정책들(37)은 아래 중 하나 이상을 명시할 수 있다.
1) 할당될 프로세싱 자원들의 수(예를 들어, 최소수, 원하는 수 및/또는 최대수);
2) 공유하는 유형(예를 들어, 단독(exclusive) 또는 공유가능)
3) 우선순위 유형(예를 들어, 높음, 중간 또는 낮음)
4) 공평성(fairness) 유형(예를 들어, 캐시 로컬리티 향상 또는 공평성 향상)
5) 행동(behavior) 유형(예를 들어, 독자행동(rogue chore) 임계, 유휴 임계, 단편화(fragmentation) 임계, 및/또는 다른 자원 재할당 행동)
6) 실행 순서 유형(예를 들어, 후입선출(last-in-first-out, LIFO) 순서, 선입선출(first-in-first-out, FIFO) 순서, 또는 서비스의 품질 또는 순위화 보증(ordering guarantee)에 대한 디폴트 순서)
7) 토폴로지 유형(즉, 특정 로컬리티 특징(예를 들어, 컴퓨터 시스템 내의 관련 프로세싱 자원들의 집합)을 명시하는 정보 및/또는 특정 자원 특징(예를 들어, 컴퓨터 시스템 내의 선택된 칩셋 기능들을 갖는 프로세싱 자원들의 집합)을 명시하는 정보)
프로세스(12A)에 더하여, 런타임 환경(10) 내의 다른 공존하는 프로세스들(도시되지 않음)은 프로세스들의 실행 전반에서 증가 또는 감소할 수 있는 0개 이상의 스케줄러 인스턴스(22)를 포함할 수 있다.
도 2는 프로세스(12A) 내에 복수의 스케줄러 인스턴스(22)를 생성하기 위한 방법의 실시예를 도시한 흐름도이다. 일 실시예에서, 도 2의 방법은 컴퓨터 시스템 내에서 런타임 환경(10) 및/또는 프로세스(12A)에 의해 암시적으로 또는 명시적으로 수행될 수 있다.
블록(52)에 나타낸 바와 같이, 적어도 제1 및 제2 스케줄러 인스턴스(22(1) 및 22(2))가 프로세스(12A) 내에서 생성된다. 스케줄러 인스턴스들(22(1) 및 22(2))은 런타임 환경(10) 및/또는 프로세스(12A)에 의해 할당된 하나 이상의 태스크의 각 집합들이 프로세싱 자원들의 각각의 부분집합들 상에서 실행되도록 하기 위해 컴퓨터 시스템에 의해 실행가능한 명령어들을 각각 포함한다. 프로세싱 자원들의 집합은 하드웨어 스레드들(16)을 포함하며, 일 실시예에서는 자원 관리층(14)에 의해 할당된 가상 프로세서들(32)도 포함한다. 자원 관리층(14)이 가상 프로세서들(32)의 집합들을 스케줄러 인스턴스(22(1) 및 22(2))에 할당하는 경우, 가상 프로세서들(32)의 집합들은 컴퓨터 시스템의 프로세서 자원들의 각각의 부분집합(즉, 하드웨어 스레드(16))를 나타낸다. 따라서, 자원 관리층(14)은 가상 프로세서들(32)의 각각의 집합을 하드웨어 스레드들(16)의 각각의 집합에 맵핑한다.
스케줄러 인스턴스들(22(1) 및 22(2))은 위에서 설명된 것과 같은 런타임 환경(10)의 스케줄러 기능을 이용하여 런타임 환경(10) 및/또는 프로세스(12A)에 의해 암시적으로 또는 명시적으로 개시될 수 있다. 또한, 스케줄러 인스턴스(22(1) 및 22(2))는 프로세스(12A)의 실행 동안 동시에(예를 들어, 프로세스(12A)가 개시될 때), 또는 상이한 시간들에서 개시될 수 있다. 또한, 스케줄러 인스턴스(22(1) 및 22(2))는 동일하거나 상이한 정책들(37)을 가질 수 있다.
런타임 환경(10) 및/또는 프로세스(12A)는 하나 이상의 태스크들의 집합을 실행을 위해 스케줄러 인스턴스(22(1))에 할당하고, 하나 이상의 태스크들의 집합을 실행을 위해 스케줄러 인스턴스(22(2))에 할당한다. 런타임 환경(10) 및/또는 프로세스(12A)는 이하에서 도 3을 참조하여 더 상세하게 설명되는 스케줄러 인스턴스(22(1) 및 22(2))의 각각의 정책들(37)에 기초하여, 또는 다른 기준에 기초하여 태스크들의 집합을 할당할 수 있다.
도 2를 참조하면, 블록(54)에 나타낸 바와 같이, 태스크들의 제1 집합은 스케줄러 인스턴스(22(1))에 의한 실행을 위해 스케줄링된다. 스케줄러 인스턴스(22(1))의 가상 프로세서(32)가 이용가능하게 되면, 스케줄러 인스턴스(22(1))는 실행 컨텍스트(34)를 이용가능한 가상 프로세서(32)에 첨부하고, 스케줄러 인스턴스(22(1)) 내의 태스크들의 집합으로부터의 태스크를 실행 컨텍스트(34)에 연관시켜, 그 태스크가 기초 하드웨어 스레드(16)를 통해 가상 프로세서(32)에 의해 실행되게 한다. 스케줄러 인스턴스(22(1))는 스케줄러 인스턴스(22(1)) 내의 모든 태스크들이 실행될 때까지, 태스크들의 집합으로부터의 태스크들을 계속하여 실행한다.
마찬가지로, 블록(56)에 나타낸 바와 같이, 태스크들의 제2 집합은 스케줄러 인스턴스(22(2))에 의한 실행을 위해 스케줄링된다. 스케줄러 인스턴스(22(2))의 가상 프로세서(32)가 이용가능하게 되면, 스케줄러 인스턴스(22(2))는 실행 컨텍스트(34)를 이용가능한 가상 프로세서(32)에 첨부하고, 스케줄러 인스턴스(22(2)) 내의 태스크들의 집합으로부터의 태스크를 실행 컨텍스트(34)에 연관시켜, 그 태스크가 기초 하드웨어 스레드(16)를 통해 가상 프로세서(32)에 의해 실행되게 한다. 스케줄러 인스턴스(22(2))는 스케줄러 인스턴스(22(2)) 내의 모든 태스크들이 실행될 때까지, 태스크들의 집합으로부터의 태스크들을 계속하여 실행한다.
이하에서는, 일 실시예에 따라, 도 2의 방법의 사용의 예가 설명될 것이다. 본 예에서, 프로세스(12A)는 오디오 및 비디오 프로세싱을 수행하는 애플리케이션이고, 오디오 프로세싱은 비디오 프로세싱보다 우선권을 갖는다. 따라서, 프로세스(12A)는 오디오 프로세싱을 수행하기 위해 많은 수의 프로세싱 자원들을 갖는 제1 스케줄러 인스턴스(22(1))를 호출하고, 비디오 프로세싱을 수행하기 위해 적은 수의 프로세싱 자원들을 갖는 제2 스케줄러 인스턴스(22(2))를 호출한다. 런타임 환경(10)은 오디오 프로세싱에 관련된 태스크들의 집합을 프로세스(12A)에 의해 명시된 대로의 스케줄러 인스턴스(22(1))에 할당하고, 비디오 프로세싱에 관련된 태스크들의 집합을 프로세스(12A)에 의해 명시된 대로의 스케줄러 인스턴스(22(2))에 할당한다. 프로세스(12A)에 할당된 프로세싱 자원들의 수가 변하면, 런타임 환경(10)은 스케줄러 인스턴스(22(1))가 더 높은 우선순위의 오디오 프로세싱에 대해 충분한 프로세싱 자원들을 가질 것을 보장하면서, 스케줄러 인스턴스(22(1) 및/또는 22(2))에 할당된 프로세싱 자원들의 수를 조정할 수 있다.
도 3은 프로세스(12A) 내의 스케줄러 인스턴스들(22)에 하나 이상의 태스크들의 집합을 할당하기 위한 방법의 실시예를 도시한 흐름도이다. 런타임 환경(10) 및/또는 프로세스(12A)가 태스크들의 집합이 실행을 위해 스케줄러 인스턴스(22)에 할당될 것임을 결정하면, 런타임 환경(10) 및/또는 프로세스(12A)는 블록(62)에 나타낸 바와 같이 모든 스케줄러 인스턴스들(22)의 정책들(37)을 식별하고, 블록(64)에 나타낸 바와 같이 정책들(37)에 기초하여 태스크들의 집합을 스케줄러 인스턴스들(22)에 할당한다.
런타임 환경(10)은 프로세스(12A)에 의해 명시된 하나 이상의 정책에 가장 가깝게 일치하는 하나 이상의 정책(37)을 갖는 스케줄러 인스턴스(22)를 요청하는 능력을 프로세스(12A)에 제공할 수 있다. 런타임 환경(10)은 프로세스(12A) 내에서 스케줄러 인스턴스들(22)을 탐색하고, 구성될 수 있는 미리 정의된 휴리스틱스(heuristics)에 기초하여 스케줄러 인스턴스(22)를 선택한다.
프로세스(12A)가 오디오 및 비디오 프로세싱을 수행하는 위의 예를 다시 참조하면, 런타임 환경(10)은 스케줄러 인스턴스(22(1) 및 22(2))의 각각의 정책들(37)로부터, 스케줄러 인스턴스(22(1))가 스케줄러 인스턴스(22(2))보다 더 많은 프로세싱 자원들을 갖도록 구성될 것을 결정할 수 있다. 따라서, 런타임 환경(10)은 프로세스(12A)에 의해 명시된 대로의 스케줄러 인스턴스(22(1))에 더 높은 우선순위의 오디오 프로세싱 태스크들을 할당할 수 있고, 프로세스(12A)에 의해 명시된 대로의 스케줄러 인스턴스(22(2))에 더 낮은 우선순위의 비디오 프로세싱 태스크들을 할당할 수 있다.
위에서 도 1 내지 도 3을 참조하여 설명된 것과 같은 복수의 스케줄러 인스턴스(22)의 사용은 유리하게도, 프로세스(12A) 내의 작업의 파티션들 상에서 정책 제약(policy restriction)을 명시하는 방법을 제공한다. 프로세스 개발자들은 프로세스 내에서, 각각 상이한 정책(37)을 갖는 수개의 스케줄러 인스턴스(22)를 생성하기로 선택할 수 있고, 작업의 성질에 따라 작업의 단위들이 적합한 스케줄러 인스턴스들(22) 상으로 푸시되게 할 수 있다. 개발자들은 원하는 대로, 스루풋에 영향을 주도록 또는 프로세스들에 응답하여, 스케줄러 인스턴스들(22)의 정책들(37)의 매개변수들을 튜닝할 수 있다.
스케줄러 인스턴스들(22)에 할당되는 태스크들의 집합들에 더하여, 프로세스(12A)는 스케줄러 인스턴스들(22)에 할당된 것들과는 다른 프로세싱 자원들로의 액세스를 획득할 수 있다. 예를 들어, 런타임 환경(10)은 프로세스(12A)가 스케줄러 인스턴스들(22)에 할당된 것들에 더하여, 자원 관리층(14)으로부터 가상 프로세서들(32)을 할당받는 것을 허용할 수 있다. 런타임 환경(10) 및/또는 프로세스(12A)는 태스크들의 선택된 집합들이 이러한 다른 프로세싱 자원들에서 실행될 수 있게 하여, 선택된 실행 컨텍스트들(34)이 스케줄러 인스턴스들(22)을 이용하지 않고서 실행되도록 할 수 있다.
도 4a-4b 및 도 5의 실시예들에 도시된 바와 같이, 런타임 환경(10)은 또한 실행 컨텍스트(34)가 기존 스케줄러 인스턴스(22(1)) 내에 새로운 스케줄러 인스턴스(22(2))를 동적으로 네스트할 수 있게 해 준다. 기존 스케줄러 인스턴스(22(1)) 내의 실행 컨텍스트(34(2)) 상에서 실행 중인 태스크(36(2))는 스케줄러 인스턴스(22(2))의 새로운 인스턴스를 생성하기 위해 런타임 환경(10)의 스케줄러 기능을 호출할 수 있다. 도 4a-4b는 프로세스(12B) 내에 나란히(side by side) 존재하는 스케줄러 인스턴스(22(1) 및 22(2))의 실시예들을 도시한 블록도로서, 스케줄러 인스턴스(22(1))의 실행 컨텍스트(34(2))는 스케줄러 인스턴스(22(1)) 내의 스케줄러 인스턴스(22(2))를 네스트한다. 도 5는 초기에 프로세스(12B) 내의 스케줄러(22(1))에 속하는 실행 컨텍스트(34) 상에서 네스트된 스케줄러 인스턴스(22(2))를 생성하기 위한 방법의 실시예를 도시하는 흐름도이다.
도 4a 및 도 5를 참조하면, 블록(72)에 나타낸 바와 같이, 제1 스케줄러 인스턴스(22(1))가 프로세스(12B) 내에 생성된다. 도 4a의 예에서, 스케줄러 인스턴스(22(1))는 각각 실행 컨텍스트(34(1) 및 34(2))를 실행하고 있는 가상 프로세서들(32(1) 및 32(2))의 집합을 포함한다. 또한, 스케줄러 인스턴스(22(1))는 정책들(37) 및 실행되기를 기다리고 있는 실행 컨텍스트들(38)의 풀(pool)을 포함한다. 각각의 실행 컨텍스트(34(1)-34(2) 및 38)는 스케줄러 인스턴스(22(1))를 식별하는 데이터(44(1))를 포함한다. 데이터(44(1))는 각각의 실행 컨텍스트(34(1)-34(2) 및 38)가 스케줄러 인스턴스(22(1))에 할당된 것의 결과로서, 각각의 실행 컨텍스트(34(1)-34(2) 및 38)와 함께 저장된다. 데이터(44(1))는 각각의 실행 컨텍스트(34(1)-34(2) 및 38)의 로컬 저장소 내의 스택에 저장될 수 있으며, 일 실시예에서, 스택에 푸시된 제1 엔트리를 표현한다.
프로세스(12B) 내의 스케줄러 인스턴스(22(1)) 내의 실행 컨텍스트(34(2)) 상에서 실행중인 태스크(36(2))는, 블록(74)에 나타낸 바와 같이 제2 스케줄러 인스턴스(22(2))가 생성되게 할 수 있다. 스케줄러 인스턴스들(22(1) 및 22(2))이 상이한 성능 특징들을 갖는 태스크들의 상이한 집합들을 실행할 수 있게 하기 위해, 스케줄러 인스턴스(22(2))의 정책들(37)은 스케줄러 인스턴스(22(1))의 정책들(37)과 다를 수 있다. 도 4a 및 도 4b의 예에서, 실행 컨텍스트(34(2)) 상에서 실행 중인 태스크(36(2))는 스케줄러 인스턴스(22(2))가 정책들(37)로 생성되게 하며, 따라서, 실행 컨텍스트(34(2)) 내에 스케줄러 인스턴스(22(2))를 동적으로 네스트한다. 스케줄러 인스턴스(22(2)) 내의 가상 프로세서(32(1))는 실행을 위해 실행 컨텍스트(34(2))를 취득한다. 스케줄러 인스턴스(22(1)) 내에서, 이전에 실행 컨텍스트(34(2))에 할당되었던 가상 프로세서(32(2))는 스케줄러(22(1)) 내의 다른 태스크들을 실행하기 위해 이용가능하게 된다. 따라서, 스케줄러 인스턴스(22(1)) 내의 가상 프로세서(32(2))는 태스크(40(1))를 실행하기 위해 실행 컨텍스트(38(1))를 선택한다.
스케줄러 인스턴스(22(2))를 식별하는 데이터(44(2))는 실행 컨텍스트(34(2))가 스케줄러 인스턴스(22(2))로 이동된 것의 결과로서 실행 컨텍스트(34(2))와 함께 저장된다. 데이터(44(2))는 실행 컨텍스트(34(2))의 로컬 저장소 내의 스택 내에 저장될 수 있으며, 일 실시예에서, 데이터(44(1))를 포함하는 스택 내의 제1 엔트리의 최상단에 푸시된다. 스택의 최상단의 엔트리는 각각의 실행 컨텍스트(34)에 대해 현재의 스케줄러 인스턴스(22)를 나타낸다.
네스트된 스케줄러 인스턴스(22(2))는 도 4b의 예에 도시된 것과 같은 가상 프로세서(32(2))와 같은 추가의 가상 프로세서들(32)로 생성될 수 있다.
스케줄러 인스턴스(22(1) 및 22(2))는 각각 블록(76)에 나타낸 바와 같이 가상 프로세서들(32)의 각각의 집합을 이용하여 실행하기 위해 태스크들의 각각의 집합을 스케줄링한다.
스케줄러 인스턴스(22(1))는 스케줄러 인스턴스(22(1))의 가상 프로세서(32(1) 및 32(2)) 상에서의 실행을 위해 스케줄러 인스턴스(22(1))의 태스크들을 계속하여 스케줄링하고, 스케줄러 인스턴스(22(2))는 스케줄러 인스턴스(22(2))의 가상 프로세서(32(1) 및 32(1)) 상에서의 실행을 위해, 실행 컨텍스트(34(2)) 상에서 태스크(36(2))에 의해 생성되는 스케줄러 인스턴스(22(1))의 태스크들을 스케줄링한다.
런타임 환경(10) 및/또는 프로세스(12B)는 실행을 위해 실행 컨텍스트(34 및 38)에 의해 취득된 스케줄러 인스턴스(22(1))에 태스크들의 추가의 집합을 계속하여 할당할 수 있다. 스케줄러 인스턴스(22(1))를 식별하는 데이터(44(1))는 스케줄러 인스턴스(22(1))에 할당된 임의의 추가의 실행 컨텍스트들과 함께 저장된다.
그러나, 런타임 환경(10) 및/또는 프로세스(12B)는 실행 컨텍스트(34(2)) 상에서 태스크(36(2))에 의해 생성된 태스크들만이 네스트된 스케줄러 인스턴스(22(2))에 할당될 수 있게 한다. 도 4b의 예에서, 실행 컨텍스트(34(3)) 상의 태스크(36(3))는 가상 프로세서(32(2))에 의해 실행되고 있고, 실행 컨텍스트들(38)의 풀은 스케줄러 인스턴스(22(2))에 의해 실행되기를 기다리고 있다. 스케줄러 인스턴스(22(2))를 식별하는 데이터(44(2))는 스케줄러 인스턴스(22(2)) 내의 실행 컨텍스트(34(2)-34(3) 및 38)과 함께 저장된다.
블록(78)에 나타낸 바와 같이, 실행 컨텍스트(34(2))는 결국에는 스케줄러 인스턴스(22(1))에 반환될 수 있다. 이와 같이 하기 위해, 데이터(44(1))가 실행 컨텍스트(34(2))가 스케줄러 인스턴스(22(1))에 속한다는 것을 나타내도록, 데이터(44(2))는 실행 컨텍스트(34(2))로부터 삭제된다. 데이터(44(1) 및 44(2))가 스택으로서 저장되는 경우, 데이터(44(2))는 스택의 최상단으로부터 팝(pop)되고, 데이터(44(1))는 스택의 최상단에 반환된다. 스케줄러(22(1))의 가상 프로세서(32)는 실행을 위해 실행 컨텍스트(34(2))를 취득한다.
도 5의 방법을 이용하면, 임의의 개수의 스케줄러 인스턴스(22)가 각각의 실행 컨텍스트(34) 상에 스택 또는 네스트될 수 있으며, 각각의 스케줄러 인스턴스(22)는 다른 스케줄러 인스턴스(22)의 정책들(37)과는 다를 수 있는 원하는 정책(37)을 포함한다. 각각의 실행 컨텍스트는 할당된 스케줄러 인스턴스(22)를 식별하는 데이터(44)를 포함한다. 새로운 스케줄러 인스턴스(22)를 식별하는 새로운 데이터(44)는, 실행 컨텍스트가 새로운 스케줄러 인스턴스(22)로 이동할 때마다 실행 컨텍스트에 추가된다 (예를 들면, 스택 상에).
다른 실시예들에서, 부모 스케줄러 인스턴스와 네스트된 스케줄러 인스턴스(22) 사이의 자원 공유를 잠재적으로 허용하기 위해, 네스트된 스케줄러 인스턴스(22)는 부모 스케줄러 인스턴스(22)에 보다 더 밀접하게 통합될 수 있다.
도 5의 방법을 이용하면, 라이브러리 개발자는 선택된 스케줄러 정책들 또는 정책 기본설정(preference)들을 갖는 스케줄러 인스턴스들(22)을 네스트하는 라이브러리들을 유리하게 생성할 수 있다. 이는 라이브러리 개발자로 하여금, 라이브러리 내의 라이브러리 기능들이 상부의(overlying) 프로세스의 스케줄러 정책들에 상관없이 기능들에 대해 가장 적합한 스케줄러 정책들로 실행할 것을 보장하게 해 줄 수 있다. 예를 들어, 도 4a-도 4b의 예에서, 실행 컨텍스트(34(2)) 상의 태스크(36(2))는 프로세스(12B)에 의해 호출되는 라이브러리 기능을 표현할 수 있다. 스케줄러 인스턴스(22(2))를 이용함으로써, 실행 컨텍스트(34(2))는 스케줄러 인스턴스(22(1))에 의해 실행되었던 경우에 비해 더 효율적으로 실행할 수 있다.
일 실시예에서, 프로세스(12A 및 12B)는 태스크들을 하나 이상의 스케줄 그룹(90)으로 조직하고, 스케줄 그룹들(90)을 스케줄러 인스턴스들(22)에 제시한다. 도 6은 스케줄러 인스턴스(22)에서의 사용을 위한 스케줄 그룹(90)의 실시예를 도시한 블록도이다.
스케줄 그룹(90)은 러너블(runnables) 컬렉션(92), 실현된 태스크 컬렉션(93), 작업 컬렉션(94), 및 0 이상의 작업 가로채기 큐(96)의 집합을 포함한다. 러너블 컬렉션(92)은 차단되지 않은 실행 컨텍스트들(38)의 목록을 포함한다. 스케줄러 인스턴스(22)는 실행 컨텍스트가 차단해제될 때, 실행 컨텍스트(38)를 러너블 컬렉션(92)에 추가한다. 실현된 태스크 컬렉션(93)은 연관된 실행 컨텍스트(38)를 가질 수도 있고 갖지 않을 수도 있는 인식된 태스크들(40)(예를 들어, 시작되지 않은 에이전트들)의 목록을 포함한다. 스케줄러 인스턴스(22)는 새로운 실행가능(runnable) 태스크가 프로세스(12)에 의해 스케줄러 인스턴스(22)에 제시될 때, 실현된 태스크를 실현된 태스크 컬렉션(93)에 추가한다. 작업 컬렉션(94)은 화살표(98)에 의해 나타낸 것과 같은 작업 가로채기 큐들(96)의 목록을 포함하고, 작업 가로채기 큐들(96)로부터의 태스크들을 수행하고 있는 실행 컨텍스트(34)를 추적한다. 각각의 작업 가로채기 큐(96)는 하나 이상의 비실현된 태스크(42)를 포함한다.
도 6의 실시예를 이용하면, 스케줄러 인스턴스(22)는 스케줄러 인스턴스(22) 내의 각 스케줄 그룹(90)의 러너블 컬렉션(92)에서 차단해제된 실행 컨텍스트들(38)을 우선 탐색할 수 있다. 그 다음, 스케줄러 인스턴스(22)는 스케줄 그룹(90)의 작업 가로채기 큐들(96) 내에서 비실현된 태스크들을 탐색하기 전에, 스케줄러 인스턴스(22) 내의 모든 스케줄 그룹(90)의 실현된 태스크 컬렉션(93) 내에서 실현된 태스크들을 탐색할 수 있다.
일 실시예에서, 이용가능하게 되는 가상 프로세서(32)는 러너블 컬렉션(92) 내의 실행가능한 실행 컨텍스트(runnable execution context)(38), 또는 이용가능한 가상 프로세서(32)가 가장 최근에 실행가능 실행 컨텍스트(38)를 획득했던 스케줄 그룹(90)(즉, 현재의 스케줄 그룹(90)) 내의 실현된 태스크 컬렉션(93) 내의 실현된 태스크(40)를 찾으려고 시도할 수 있다. 그 다음, 이용가능한 가상 프로세서(32)는 라운드-로빈(round-robin) 또는 기타 적절한 순서로 스케줄러 인스턴스(22)의 남아있는 스케줄 그룹들(90) 내의 실현된 태스크 컬렉션(93) 내의 실현된 태스크(40)를, 또는 러너블 컬렉션(92) 내의 실행가능한 실행 컨텍스트(38)를 찾으려고 시도할 수 있다. 실행가능한 실행 컨텍스트(38)가 발견되지 않으면, 이용가능한 가상 프로세서(32)는 라운드-로빈 또는 기타 적절한 순서로 스케줄러 인스턴스(22)의 남아있는 스케줄 그룹들(90) 내의 작업 가로채기 큐들(96)을 탐색하기 전에 현재의 스케줄 그룹(90)의 작업 가로채기 큐들(96) 내의 비실현 태스크(42)를 찾으려고 시도할 수 있다.
도 7은 프로세스(12A 또는 12B) 내에서 복수의 스케줄러 인스턴스(22)를 갖는 런타임 환경(10)을 구현하도록 구성된 컴퓨터 시스템(100)의 실시예를 도시한 블록도이다. 컴퓨터 시스템(100)은 하나 이상의 프로세서 패키지(102), 메모리 시스템(104), 0 이상의 입력/출력 장치(106), 0 이상의 디스플레이 장치(108), 0 이상의 주변 장치(110), 및 0 이상의 네트워크 장치(112)를 포함한다. 프로세서 패키지(102), 메모리 시스템(104), 입력/출력 장치(106), 디스플레이 장치(108), 주변 장치(110) 및 네트워크 장치(112)는 임의의 적합한 유형, 개수 및 구성의 제어기, 버스, 인터페이스 및/또는 기타 유선 또는 무선 접속을 포함하는 상호접속들(114)의 집합을 이용하여 통신한다.
컴퓨터 시스템(100)은 일반 목적 또는 특수 목적으로 구성된 임의의 적합한 처리 장치를 나타낸다. 컴퓨터 시스템(100)의 예들은, 서버, 개인용 컴퓨터, 랩탑 컴퓨터, 타블릿 컴퓨터, PDA(personal digital assistant), 이동 전화 및 오디오/비디오 장치를 포함한다. 컴퓨터 시스템(100)의 컴포넌트들(즉, 프로세서 패키지(102), 메모리 시스템(104), 입력/출력 장치(106), 디스플레이 장치(108), 주변 장치(110), 네트워크 장치(112) 및 상호접속(114))은 공통의 하우징(도시되지 않음) 내에, 또는 임의의 적합한 수의 별도의 하우징들(도시되지 않음) 내에 포함될 수 있다.
프로세서 패키지(102)는 하드웨어 스레드(16(1)-16(M))를 포함한다. 프로세서 패키지(102) 내의 각 하드웨어 스레드(16)는 메모리 시스템(104) 내에 저장된 명령어들을 액세스하고 실행하도록 구성된다. 명령어들은 기본 입출력 시스템(BIOS) 또는 펌웨어(도시되지 않음), 운영 체제(OS)(120), 런타임 플랫폼(122), 애플리케이션(124) 및 자원 관리층(14)(도 1에도 도시됨)을 포함할 수 있다. 각각의 하드웨어 스레드(16)는 입력/출력 장치(106), 디스플레이 장치(108), 주변 장치(110) 및/또는 네트워크 장치(112)로부터 수신된 정보와 함께, 또는 그러한 정보에 응답하여 명령어들을 실행할 수 있다.
컴퓨터 시스템(100)은 OS(120)를 부팅하고 실행한다. OS(120)는 컴퓨터 시스템(100)의 컴포넌트들을 관리하기 위해 하드웨어 스레드(16)에 의해 실행가능한 명령어들을 포함하고, 애플리케이션(124)이 컴포넌트들을 액세스하고 사용할 수 있게 해 주는 기능들의 집합을 제공한다. 일 실시예에서, OS(120)는 Windows 운영 체제이다. 다른 실시예들에서, OS(120)는 컴퓨터 시스템(100)과 함께 사용하기에 적합한 다른 운영 체제이다.
자원 관리층(14)은 도 1을 참조하여 위에서 설명된 바와 같이, 하드웨어 스레드(16)를 포함하는 컴퓨터 시스템(100)의 자원들을 할당하기 위해 OS(120)와 함께 실행할 수 있는 명령어들을 포함한다. 자원 관리층(14)은 하나 이상의 애플리케이션(124)이 이용할 수 있는 기능들의 라이브러리로서, 또는 OS(120)의 통합된 부분으로서 컴퓨터 시스템(100) 내에 포함될 수 있다.
런타임 플랫폼(122)은 런타임 환경(10)을 생성하고 애플리케이션(124)에 런타임 기능을 제공하기 위해 OS(120) 및 자원 관리층(14)과 함께 실행될 수 있는 명령어들을 포함한다. 이러한 런타임 기능은 도 1을 참조하여 위에서 추가로 상세하게 설명된 것과 같은 스케줄러 기능을 포함한다. 런타임 기능은 애플리케이션(124)의 일부로서, 하나 이상의 애플리케이션(124)이 이용할 수 있는 기능들의 라이브러리로서, 또는 OS(120) 및/또는 자원 관리층(14)의 통합된 부분으로서 컴퓨터 시스템(100) 내에 포함될 수 있다.
각각의 애플리케이션(124)은 원하는 동작들이 컴퓨터 시스템(100)에 의해 수행되도록 하기 위해, OS(120), 자원 관리층(14) 및/또는 런타임 플랫폼(122)과 함께 실행될 수 있는 명령어들을 포함한다. 각각의 애플리케이션(124)은 OS(120), 자원 관리층(14) 및/또는 런타임 플랫폼(122)에 의해 제공되는 것과 같은 복수의 스케줄러 인스턴스(22)로 실행할 수 있는, 위에서 설명된 프로세스(12A 및 12B)와 같은 하나 이상의 프로세스를 나타낸다.
메모리 시스템(104)은 명령어 및 데이터를 저장하도록 구성된, 임의의 적합한 유형, 개수 및 구성의 휘발성 또는 비휘발성 저장 장치를 포함한다. 메모리 시스템(104)의 저장 장치들은 OS(120), 자원 관리층(14), 런타임 플랫폼(122) 및 애플리케이션(124)을 포함하는 컴퓨터 실행가능 명령어들을 저장하는 컴퓨터 판독가능 저장 매체를 나타낸다. 명령어들은 여기에서 설명된 OS(120), 자원 관리층(14), 런타임 플랫폼(122) 및 애플리케이션(124)의 기능 및 방법을 수행하기 위해 컴퓨터 시스템에 의해 실행될 수 있다. 메모리 시스템(104) 내의 저장 장치들의 예는 하드 디스크 드라이브, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 플래시 메모리 드라이브 및 카드, 및 자기 및 광 디스크를 포함한다.
메모리 시스템(104)은 프로세서 패키지(102), 입력/출력 장치(106), 디스플레이 장치(108), 주변 장치(110) 및 네트워크 장치(112)로부터 수신된 명령어 및 데이터를 저장한다. 메모리 시스템(104)은 저장된 명령어 및 데이터를 프로세서 패키지(102), 입력/출력 장치(106), 디스플레이 장치(108), 주변 장치(110) 및 네트워크 장치(112)에 제공한다.
입력/출력 장치(106)는 사용자로부터 컴퓨터 시스템(100)으로 명령어 또는 데이터를 입력하고 컴퓨터 시스템(100)으로부터 사용자로 명령어 또는 데이터를 출력하도록 구성된 임의의 적합한 유형, 개수 및 구성의 입력/출력 장치를 포함한다. 입력/출력 장치(106)의 예는 키보드, 마우스, 터치패드, 터치스크린, 버튼, 다이얼, 노브(knob) 및 스위치를 포함한다.
디스플레이 장치(108)는 컴퓨터 시스템(100)의 사용자에게 텍스트 및/또는 그래픽 정보를 출력하도록 구성된 임의의 적합한 유형, 개수 및 구성의 디스플레이 장치를 포함한다. 디스플레이 장치(108)의 예는 모니터, 디스플레이 스크린 및 프로젝터를 포함한다.
주변 장치(110)는 일반적인 또는 특정한 프로세싱 기능을 수행하기 위해 컴퓨터 시스템(100) 내의 하나 이상의 다른 컴포넌트들과 함께 동작하도록 구성된 임의의 적합한 유형, 개수 및 구성의 주변 장치들을 포함한다.
네트워크 장치(112)는 컴퓨터 시스템(100)이 하나 이상의 네트워크(도시되지 않음)를 통해 통신할 수 있게 해 주도록 구성된 임의의 적합한 유형, 개수 및 구성의 네트워크 장치를 포함한다. 네트워크 장치(112)는 정보가 컴퓨터 시스템(100)에 의해 네트워크에 송신되거나 컴퓨터 시스템(100)에 의해 네트워크로부터 수신될 수 있게 해 주기 위해 임의의 적합한 네트워킹 프로토콜 및/또는 구성에 따라 동작할 수 있다.
구체적인 실시예들이 여기에 도시되고 설명되었지만, 본 기술분야의 지식을 가진 자들이라면, 다양한 대안적인 및/또는 균등한 구현들이 본 발명의 범위를 벗어나지 않고서, 도시되고 설명된 구체적인 실시예들을 대체할 수 있음을 알 것이다. 본 출원은 여기에 논의된 구체적인 실시예들의 임의의 개조 또는 변형을 포함하도록 의도된 것이다. 따라서, 본 발명은 청구항들 및 그들의 균등물에 의해서만 제한되도록 의도된다.

Claims (16)

  1. 컴퓨터 실행가능 명령어들을 저장하는 컴퓨터 판독가능 저장 장치로서,
    상기 컴퓨터 실행가능 명령어들은 컴퓨터 시스템에 의해 실행되는 경우에,
    프로세스의 태스크들의 제1 집합이 상기 컴퓨터 시스템에 의해 실행되도록 하기 위해 상기 컴퓨터 시스템에 의해 실행가능한 명령어들로 상기 프로세스 내의 제1 스케줄러 인스턴스를 생성하는 단계,
    상기 프로세스의 태스크들의 제2 집합이 상기 컴퓨터 시스템에 의해 실행되도록 하기 위해 상기 컴퓨터 시스템에 의해 실행가능한 명령어들로 상기 프로세스 내의 제2 스케줄러 인스턴스를 생성하는 단계,
    상기 컴퓨터 시스템의 프로세서 자원들의 제1 부분집합을 나타내기 위해, 가상 프로세서들의 제1 집합을 상기 제1 스케줄러 인스턴스에 할당하는 단계,
    상기 컴퓨터 시스템의 프로세서 자원들의 제2 부분집합을 나타내기 위해, 가상 프로세서들의 제2 집합을 상기 제2 스케줄러 인스턴스에 할당하는 단계,
    상기 제1 스케줄러 인스턴스 및 상기 제2 스케줄러 인스턴스가 상기 프로세스의 상기 태스크들의 제1 집합 및 상기 태스크들의 제2 집합을 실행하기 위해 상기 컴퓨터 시스템의 프로세서 자원들을 협상하고(negotiating) 관리하는 단계
    를 포함하는 방법을 수행하되,
    상기 협상은 상기 프로세스에 투명하게 이루어지고,
    상기 제2 스케줄러 인스턴스를 생성하는 단계는
    상기 태스크들의 제1 집합 중 하나의 태스크를 실행하는 실행 컨텍스트를 상기 제1 스케줄러 인스턴스로부터 상기 제2 스케줄러 인스턴스로 이동시키는 단계와,
    상기 태스크들의 제1 집합 중 하나의 태스크를 상기 태스크들의 제2 집합 중 하나의 태스크로서 실행하는 단계
    를 포함하는
    컴퓨터 판독가능 저장 장치.
  2. 제1항에 있어서,
    상기 방법은,
    상기 태스크들의 제1 집합이 하드웨어 스레드들의 제1 집합에 의해 실행되도록 하기 위해, 상기 가상 프로세서들의 제1 집합을 상기 하드웨어 스레드들의 제1 집합에 맵핑하는 단계, 및
    상기 태스크들의 제2 집합이 하드웨어 스레드들의 제2 집합에 의해 실행되도록 하기 위해, 상기 가상 프로세서들의 제2 집합을 상기 하드웨어 스레드들의 제2 집합에 맵핑하는 단계
    를 더 포함하는 컴퓨터 판독가능 저장 장치.
  3. 제1항에 있어서,
    상기 제2 스케줄러 인스턴스를 생성하는 단계는,
    상기 태스크들의 제1 집합 중 하나의 태스크를 상기 태스크들의 제2 집합 중 하나의 태스크로서 실행하는 단계 전에, 상기 제1 스케줄러 인스턴스를 식별하는 데이터를 상기 실행 컨텍스트와 함께 저장하는 단계
    를 더 포함하는 컴퓨터 판독가능 저장 장치.
  4. 컴퓨터 시스템에 의해 수행되는 방법으로서,
    프로세스 내에서 제1 스케줄러 인스턴스 및 제2 스케줄러 인스턴스의 제1 정책 및 제2 정책을 각각 식별하는 단계 - 상기 제1 스케줄러 인스턴스 및 상기 제2 스케줄러 인스턴스는 상기 프로세스의 태스크들의 집합을 실행하기 위해 컴퓨터 시스템의 프로세서 자원을 협상하고 관리하며, 상기 협상은 상기 프로세서에 투명하게 이루어짐 -,
    상기 컴퓨터 시스템의 프로세서 자원들의 제1 부분집합을 나타내기 위해 가상 프로세서들의 제1 집합을 상기 제1 스케줄러 인스턴스에 할당하고, 상기 컴퓨터 시스템의 프로세서 자원들의 제2 부분집합을 나타내기 위해 가상 프로세서들의 제2 집합을 상기 제2 스케줄러 인스턴스에 할당하는 단계,
    상기 제1 정책 및 상기 제2 정책 중 적어도 하나에 기초하여 상기 프로세스의 태스크들의 제1 집합을 상기 제1 스케줄러 인스턴스 및 상기 제2 스케줄러 인스턴스 중 하나에 할당하는 단계(assigning), 및
    상기 제1 스케줄러 인스턴스에서 상기 태스크들의 제1 집합 중 하나의 태스크를 실행하는 것에 응답하여 상기 제2 스케줄러 인스턴스를 생성하는 단계
    를 포함하는 컴퓨터 시스템에 의해 수행되는 방법.
  5. 제4항에 있어서,
    상기 제1 정책 및 상기 제2 정책은 복수의 프로세싱 자원, 공유하는 유형, 우선순위 유형, 공평성(fairness) 유형, 행동(behavior) 유형, 실행 순서 유형 및 토폴로지 유형 중 적어도 하나를 특정하는
    컴퓨터 시스템에 의해 수행되는 방법.
  6. 제4항에 있어서,
    상기 제1 정책에 기초하여 상기 태스크들의 제1 집합을 상기 제1 스케줄러 인스턴스에 할당하는 단계, 및
    상기 컴퓨터 시스템에서 상기 태스크들의 제1 집합 중 하나의 태스크가 제1 하드웨어 스레드에 의해 실행되도록 하기 위해 상기 태스크들의 제1 집합 중 하나의 태스크를 상기 제1 스케줄러 인스턴스 내의 제1 가상 프로세서에 추가하는 단계(attaching)
    를 더 포함하는 컴퓨터 시스템에 의해 수행되는 방법.
  7. 제6항에 있어서,
    상기 제2 정책에 기초하여 상기 태스크들의 제2 집합을 상기 제2 스케줄러 인스턴스에 할당하는 단계, 및
    상기 컴퓨터 시스템에서 상기 태스크들의 제2 집합 중 하나의 태스크가 제2 하드웨어 스레드에 의해 실행되도록 하기 위해 상기 태스크들의 제2 집합 중 하나의 태스크를 상기 제2 스케줄러 인스턴스 내의 제2 가상 프로세서에 추가하는 단계
    를 더 포함하는 컴퓨터 시스템에 의해 수행되는 방법.
  8. 프로세스 내에서 제1 스케줄러 인스턴스 및 제2 스케줄러 인스턴스를 개시하는 단계 - 상기 제1 스케줄러 인스턴스 및 상기 제2 스케줄러 인스턴스는 상기 프로세스의 태스크들의 집합을 실행하기 위해 컴퓨터 시스템의 프로세싱 자원들을 협상하고 관리하며, 상기 협상은 상기 프로세스에 투명하게 이루어지고, 상기 제1 스케줄러 인스턴스 및 상기 제2 스케줄러 인스턴스는 상기 컴퓨터 시스템의 프로세싱 자원들의 집합으로부터의 프로세싱 자원들의 제1 부분집합 및 제2 부분집합에 대한 액세스를 각각 가지고, 상기 프로세스로부터의 태스크들의 제1 집합 및 제2 집합에 대한 액세스를 각각 가짐 -,
    상기 컴퓨터 시스템의 프로세싱 자원들의 제1 부분집합을 나타내기 위해 가상 프로세서들의 제1 집합을 상기 제1 스케줄러 인스턴스에 할당하고, 상기 컴퓨터 시스템의 프로세싱 자원들의 제2 부분집합을 나타내기 위해 가상 프로세서들의 제2 집합을 상기 제2 스케줄러 인스턴스에 할당하는 단계,
    상기 제1 스케줄러 인스턴스를 이용하여 상기 프로세싱 자원들의 제1 부분집합 중 하나의 프로세싱 자원에 의한 실행을 위해 상기 태스크들의 제1 집합 중 제1 태스크를 스케줄링하는 단계,
    상기 제2 스케줄러 인스턴스를 이용하여 상기 프로세싱 자원들의 제2 부분집합 중 하나의 프로세싱 자원에 의한 실행을 위해 상기 태스크들의 제2 집합 중 하나의 태스크를 스케줄링하는 단계,
    상기 제1 스케줄러 인스턴스에서, 상기 프로세싱 자원들의 제1 부분집합 중 하나의 프로세싱 자원 상의 제1 실행 컨텍스트에서 상기 태스크들의 제1 집합 중 하나의 태스크를 실행하는 것에 응답하여, 상기 제2 스케줄러 인스턴스를 개시하는 단계, 및
    상기 제1 실행 컨텍스트를 포함하도록 상기 제2 스케줄러 인스턴스를 개시하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서,
    상기 태스크들의 제1 집합 중 하나의 태스크를 상기 제1 스케줄러 인스턴스에 할당된 가상 프로세서들의 제1 집합 중 하나의 가상 프로세서 상의 제1 실행 컨텍스트와 연관시킴으로써, 상기 프로세싱 자원들의 제1 부분집합 중 하나의 프로세싱 자원에 의한 실행을 위해 상기 태스크들의 제1 집합 중 상기 제1 태스크를 스케줄링하는 단계, 및
    상기 태스크들의 제2 집합 중 하나의 태스크를 상기 제2 스케줄러 인스턴스에 할당된 가상 프로세서들의 제2 집합 중 하나의 가상 프로세서 상의 제1 실행 컨텍스트와 연관시킴으로써, 상기 프로세싱 자원들의 제2 부분집합 중 하나의 프로세싱 자원에 의한 실행을 위해 상기 태스크들의 제2 집합 중 하나의 태스크를 스케줄링하는 단계
    를 더 포함하고,
    상기 프로세싱 자원들의 제1 부분집합 및 제2 부분집합은 각각 상기 가상 프로세서들의 제1 집합 및 제2 집합을 포함하는
    방법.
  10. 제9항에 있어서,
    상기 태스크들의 제1 집합 중 상기 제1 태스크의 실행을 위해 상기 가상 프로세서들의 제1 집합 중 하나의 가상 프로세서를 제1 하드웨어 스레드에 맵핑하는 단계, 및
    상기 태스크들의 제2 집합 중 상기 하나의 태스크의 실행을 위해 상기 가상 프로세서들의 제2 집합 중 하나의 가상 프로세서를 제2 하드웨어 스레드에 맵핑하는 단계
    를 더 포함하고,
    상기 프로세싱 자원들의 집합은 상기 제1 하드웨어 스레드 및 상기 제2 하드웨어 스레드를 포함하는
    방법.
  11. 제8항에 있어서,
    상기 제1 스케줄러 인스턴스를 식별하는 제1 데이터를 상기 제1 실행 컨텍스트와 함께 저장하는 단계
    를 더 포함하는 방법.
  12. 제11항에 있어서,
    상기 제1 스케줄러 인스턴스에서, 상기 제1 스케줄러 인스턴스를 식별하는 제2 데이터를 제2 실행 컨텍스트와 함께 저장하는 단계, 및
    상기 제2 스케줄러 인스턴스를 식별하는 제3 데이터를 상기 제1 실행 컨텍스트와 함께 저장하는 단계
    를 더 포함하는 방법.
  13. 제12항에 있어서,
    상기 제1 데이터 및 상기 제3 데이터를 스택으로서 저장하는 단계
    를 더 포함하는 방법.
  14. 제8항에 있어서,
    상기 제2 스케줄러 인스턴스 내의 상기 제1 실행 컨텍스트를 상기 제1 스케줄러 인스턴스에 반환하는 단계
    를 더 포함하는 방법.
  15. 제8항에 있어서,
    상기 제2 스케줄러 인스턴스를 개시하는 단계에 후속하여, 상기 프로세싱 자원들의 제1 부분집합 중의 상기 하나의 프로세싱 자원에 의한 실행을 위해 상기 태스크들의 제1 집합 중 제2 태스크를 스케줄링하는 단계
    를 더 포함하는 방법.
  16. 제8항에 있어서,
    상기 프로세스는 애플리케이션, 라이브러리 기능, 및 운영 체제 서비스 중 하나인
    방법.
KR1020107026554A 2008-06-02 2009-05-01 프로세스 내의 스케줄러 인스턴스들 KR101555529B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/131,135 2008-06-02
US12/131,135 US8650570B2 (en) 2008-06-02 2008-06-02 Method of assigning instructions in a process to a plurality of scheduler instances based on the instruction, in which each scheduler instance is allocated a set of negoitaited processor resources

Publications (2)

Publication Number Publication Date
KR20110025745A KR20110025745A (ko) 2011-03-11
KR101555529B1 true KR101555529B1 (ko) 2015-10-06

Family

ID=41381482

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107026554A KR101555529B1 (ko) 2008-06-02 2009-05-01 프로세스 내의 스케줄러 인스턴스들

Country Status (9)

Country Link
US (1) US8650570B2 (ko)
EP (1) EP2300910B1 (ko)
JP (1) JP5597196B2 (ko)
KR (1) KR101555529B1 (ko)
CN (1) CN102047218B (ko)
BR (1) BRPI0910531A2 (ko)
CA (1) CA2722670C (ko)
RU (1) RU2530345C2 (ko)
WO (1) WO2009148738A2 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101644800B1 (ko) * 2010-01-07 2016-08-02 삼성전자주식회사 컴퓨팅 시스템 및 방법
US8392920B2 (en) * 2010-01-27 2013-03-05 Microsoft Corporation Parallel query engine with dynamic number of workers
KR101658035B1 (ko) * 2010-03-12 2016-10-04 삼성전자주식회사 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법
KR101859188B1 (ko) * 2011-09-26 2018-06-29 삼성전자주식회사 매니코어 시스템에서의 파티션 스케줄링 장치 및 방법
US20130132962A1 (en) * 2011-11-22 2013-05-23 Microsoft Corporation Scheduler combinators
CN103136047B (zh) * 2011-11-30 2016-08-17 大唐联诚信息系统技术有限公司 一种多线程管理方法及架构
ES2439803B1 (es) * 2012-04-19 2014-10-29 Universitat Politècnica De Catalunya Procedimiento, sistema y pieza de código ejecutable para controlar el uso de recursos de hardware de un sistema informático
CN102693156A (zh) * 2012-05-07 2012-09-26 清华大学 一种基于可配置策略的进程调度方法
CN102685228A (zh) * 2012-05-10 2012-09-19 苏州阔地网络科技有限公司 一种云会议的消息处理方法及系统
JP6017260B2 (ja) * 2012-10-17 2016-10-26 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ
US10108445B2 (en) * 2014-09-22 2018-10-23 The Boeing Company Parallelization in virtual machine operation
US9582298B2 (en) * 2015-03-20 2017-02-28 Amazon Technologies, Inc. Executing commands within virtual machine instances
US10768984B2 (en) * 2015-06-11 2020-09-08 Honeywell International Inc. Systems and methods for scheduling tasks using sliding time windows
CN106502787B (zh) * 2016-09-30 2019-11-26 华为技术有限公司 一种调度方法及装置
CN107741878A (zh) * 2016-11-01 2018-02-27 研祥智能科技股份有限公司 任务调度方法、装置及系统
US10552212B2 (en) * 2016-11-28 2020-02-04 Arm Limited Data processing
CN109426556B (zh) * 2017-08-31 2021-06-04 大唐移动通信设备有限公司 一种进程调度方法和装置
CN107451469A (zh) * 2017-09-14 2017-12-08 郑州云海信息技术有限公司 一种进程管理系统及方法
CN110968401A (zh) * 2018-09-28 2020-04-07 北京国双科技有限公司 基于Quartz的任务调度方法及装置
US11138213B2 (en) * 2019-04-10 2021-10-05 Snowflake Inc. Internal resource provisioning in database systems

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095908A1 (en) 2004-11-01 2006-05-04 Norton Scott J Per processor set scheduling

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5394547A (en) * 1991-12-24 1995-02-28 International Business Machines Corporation Data processing system and method having selectable scheduler
JP2836468B2 (ja) * 1993-12-28 1998-12-14 日本電気株式会社 並列ジョブの協調スケジューリング方式
JPH0954699A (ja) * 1995-08-11 1997-02-25 Fujitsu Ltd 計算機のプロセススケジューラ
US6269391B1 (en) * 1997-02-24 2001-07-31 Novell, Inc. Multi-processor scheduling kernel
AU735024B2 (en) * 1997-07-25 2001-06-28 British Telecommunications Public Limited Company Scheduler for a software system
US6661794B1 (en) * 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6839748B1 (en) * 2000-04-21 2005-01-04 Sun Microsystems, Inc. Synchronous task scheduler for corba gateway
US7234139B1 (en) * 2000-11-24 2007-06-19 Catharon Productions, Inc. Computer multi-tasking via virtual threading using an interpreter
US20020073129A1 (en) * 2000-12-04 2002-06-13 Yu-Chung Wang Integrated multi-component scheduler for operating systems
US6901405B1 (en) * 2000-12-20 2005-05-31 Microsoft Corporation Method for persisting a schedule and database schema
GB0212176D0 (en) * 2002-05-27 2002-07-03 Radioscape Ltd Stochasitc scheduling in CVM
US8165148B2 (en) * 2003-01-13 2012-04-24 Qualcomm Incorporated System and method for rate assignment
US7251815B2 (en) * 2003-04-29 2007-07-31 International Business Machines Corporation Multiple virtual machines sharing processor and work queue in memory having program/dispatch functions for assigning and accessing work items while the virtual machine was not idle
US20050076339A1 (en) * 2003-10-03 2005-04-07 Nortel Networks Limited Method and apparatus for automated negotiation for resources on a switched underlay network
US7457886B1 (en) * 2004-02-03 2008-11-25 Apple Inc. System and method for input/output scheduling
US8271976B2 (en) * 2004-06-30 2012-09-18 Microsoft Corporation Systems and methods for initializing multiple virtual processors within a single virtual machine
US7600101B2 (en) * 2005-01-13 2009-10-06 Hewlett-Packard Development Company, L.P. Multithreaded hardware systems and methods
US7613904B2 (en) * 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
FR2882169B1 (fr) 2005-02-14 2007-05-25 Cofluent Design Sarl Procede de simulation d'un systeme complexe incluant une hierarchie d'ordonnanceurs, produit programme d'ordinateur et moyen de stockage correspondants
US8245230B2 (en) * 2005-03-14 2012-08-14 Qnx Software Systems Limited Adaptive partitioning scheduler for multiprocessing system
US7802256B2 (en) * 2005-06-27 2010-09-21 Microsoft Corporation Class scheduler for increasing the probability of processor access by time-sensitive processes
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US20070074217A1 (en) * 2005-09-26 2007-03-29 Ryan Rakvic Scheduling optimizations for user-level threads
US20070204268A1 (en) * 2006-02-27 2007-08-30 Red. Hat, Inc. Methods and systems for scheduling processes in a multi-core processor environment
US8656403B2 (en) * 2008-04-30 2014-02-18 International Business Machines Corporation Negotiation management in data processing systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095908A1 (en) 2004-11-01 2006-05-04 Norton Scott J Per processor set scheduling

Also Published As

Publication number Publication date
WO2009148738A2 (en) 2009-12-10
CA2722670A1 (en) 2009-12-10
CN102047218A (zh) 2011-05-04
CA2722670C (en) 2016-07-05
US20090300637A1 (en) 2009-12-03
RU2530345C2 (ru) 2014-10-10
BRPI0910531A2 (pt) 2015-09-29
JP5597196B2 (ja) 2014-10-01
WO2009148738A3 (en) 2010-02-18
KR20110025745A (ko) 2011-03-11
JP2011523142A (ja) 2011-08-04
EP2300910A4 (en) 2012-10-10
EP2300910A2 (en) 2011-03-30
US8650570B2 (en) 2014-02-11
RU2010149255A (ru) 2012-06-10
CN102047218B (zh) 2013-09-11
EP2300910B1 (en) 2018-11-21

Similar Documents

Publication Publication Date Title
KR101555529B1 (ko) 프로세스 내의 스케줄러 인스턴스들
KR101618892B1 (ko) 스케줄러 내의 스케줄링 컬렉션
US8566830B2 (en) Local collections of tasks in a scheduler
US8291426B2 (en) Memory allocators corresponding to processor resources
AU2009255464B2 (en) Regaining control of a processing resource that executes an external execution context
US20100088704A1 (en) Meta-scheduler with meta-contexts
US8806180B2 (en) Task execution and context switching in a scheduler
US8887162B2 (en) Persistent local storage for processor resources
US9304831B2 (en) Scheduling execution contexts with critical regions
US9378062B2 (en) Interface between a resource manager and a scheduler in a process
US9384063B2 (en) Eliding synchronization in a concurrent data structure

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
N231 Notification of change of applicant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee