KR20150117221A - 실시간 운영 체제에서 선점형 태스크 스케줄링 방식을 제공하는 방법 및 장치 - Google Patents

실시간 운영 체제에서 선점형 태스크 스케줄링 방식을 제공하는 방법 및 장치 Download PDF

Info

Publication number
KR20150117221A
KR20150117221A KR1020150048887A KR20150048887A KR20150117221A KR 20150117221 A KR20150117221 A KR 20150117221A KR 1020150048887 A KR1020150048887 A KR 1020150048887A KR 20150048887 A KR20150048887 A KR 20150048887A KR 20150117221 A KR20150117221 A KR 20150117221A
Authority
KR
South Korea
Prior art keywords
priority
task
tasks
bitmap
bit
Prior art date
Application number
KR1020150048887A
Other languages
English (en)
Other versions
KR102338827B1 (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 KR20150117221A publication Critical patent/KR20150117221A/ko
Application granted granted Critical
Publication of KR102338827B1 publication Critical patent/KR102338827B1/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
    • 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
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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
    • 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/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
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

실시간 운영 체제(RTOS: Real Time Operating System)를 위한 선점형 태스크 스케줄링(preemptive task scheduling)을 제공하는 방법 및 장치가 제공된다. 2-레벨 우선순위가 생성된 각각의 태스크(task)에 할당된다. 상기 2-레벨 우선순위는 커널 우선순위(kernel priority)와 사용자 정의 우선순위(user-defined priority)를 포함한다. 상기 커널 우선순위에 대응하는 우선순위 비트맵(bitmap)이 생성된다. 상기 우선순위 비트맵에서의 우선순위 비트가 활성화(enable)된다. 상기 우선순위 비트는 각각의 태스크의 상태를 나타낸다.

Description

실시간 운영 체제에서 선점형 태스크 스케줄링 방식을 제공하는 방법 및 장치 {METHOD AND APPARATUS FOR A PREEMPTIVE SCHEDULING SCHEME IN A REAL TIME OPERATING SYSTEM}
본 실시예들은 일반적으로 실시간 운영 체제(RTOS: Real Time Operating System)들을 위한 태스크 스케줄링(task scheduling)에 관한 것으로, 특히 RTOS에서의 태스크들의 선점형 스케줄링(preemptive scheduling)을 위한 방법 및 시스템에 관한 것이다.
컴퓨팅 기술에서, 스케줄링은 스레드(thread)들, 과정(process)들, 또는 데이터 흐름(flow)들에게 시스템 자원들(예를 들어, 프로세서 시간, 통신 대역폭)을 제공하기 위한 방법이다. 스케줄링의 주요 목표는 로드 밸런스(load balance)를 제공하고 시스템 자원들을 효과적으로 공유함으로써 목표하는 서비스 품질을 달성하는 데 있다. 효율적인 스케줄링 방법은 시스템들이 멀티태스킹(multitasking)과 멀티플렉싱(multiplexing)을 효과적으로 그리고 효율적으로 수행하는 데 필요하다.
스케줄러(scheduler)는 시스템에 허용될 다음 작업(job)들을 선택하고 실행할 다음 과정(process)을 선택하는 운영 체제 모듈(operating system module)이다. 그러한 스케줄러는, 스케줄러가 강제적으로 실행 과정(running process)들을 중앙 처리 장치(CPU: Central Processing Unit) 또는 자원들로부터 제거하여 그 CPU 또는 자원들을 다른 과정에 할당할 수 있는지의 여부에 따라, 선점형 스케줄러(preemptive scheduler)와 비선점형 스케줄러(non-preemptive scheduler)로 분류될 수 있다.
선점형 스케줄러는 시스템에서 대기 프로세스들/태스크들의 우선순위들을 결정한다. 예를 들어, 신규 태스크가 준비가 되고 그 신규 태스크의 우선순위가 현재 실행 중인 현재 태스크의 우선순위보다 높으면, 그 현재 태스크가 선점되고 그 신규 태스크가 제어된다. 그 선점형 스케줄러는 RTOS의 커널(kernel)에 의해 조종된다.
RTOS는 고정된 우선순위 등급(priority rank)을 모든 프로세스에 할당하고, 스케줄러는 그 프로세스들을 그것들의 우선순위의 순서로 대기 큐(ready queue)에 배열한다.
일반적으로, 등급(ranking)들의 수가 제한되면, 선점형 스케줄링은 각각의 우선순위 등급마다 하나씩 해서 선입선출(FIFO: First-In First-Out) 큐들의 수집으로 간주될 수 있다. 더 낮은 우선순위의 큐들에서의 프로세스들은 더 높은 우선순위 큐들의 모두가 비어 있는 경우에만 선택된다.
실시예들은 적어도 상술한 문제점들 및/또는 단점들을 해결하고 적어도 아래에서 설명되는 장점들을 제공하기 위한 것이다. 따라서, 본 개시의 일 측면은 RTOS에서의 태스크들의 선점형 스케줄링을 위한 방법 및 시스템을 제공한다.
일 실시예에 따르면, RTOS를 위한 선점형 태스크 스케줄링(preemptive task scheduling)을 제공하는 방법이 제공된다. 2-레벨 우선순위가 생성된 각각의 태스크(task)에 할당된다. 상기 2-레벨 우선순위는 커널 우선순위(kernel priority)와 사용자 정의 우선순위(user-defined priority)를 포함한다. 상기 커널 우선순위에 대응하는 우선순위 비트맵(bitmap)이 생성된다. 상기 우선순위 비트맵에서의 우선순위 비트가 활성화(enable)된다. 상기 우선순위 비트는 각각의 태스크의 상태를 나타낸다.
RTOS를 위한 선점형 태스크 스케줄링을 제공하는 장치가 제공된다. 상기 장치는 메모리; 및 상기 메모리에 연결된 프로세서를 포함한다. 상기 프로세서는, 생성된 각각의 태스크에 커널 우선순위와 사용자 정의 우선순위를 포함하는 2-레벨 우선순위를 할당하고; 상기 커널 우선순위에 대응하는 우선순위 비트맵을 생성하고; 상기 우선순위 비트맵에서의 각각의 태스크의 상태를 나타내는 우선순위 비트를 활성화하도록 구성된다.
RTOS를 위한 선점형 태스크 스케줄링을 제공하는 제품이 제공된다. 상기 제품은 하나 이상의 프로그램들을 포함하는 비일시적 머신 판독 가능 매체(non-transitory machine readable medium)를 포함한다. 상기 하나 이상의 프로그램들이 실행되어, 생성된 각각의 태스크에 커널 우선순위와 사용자 정의 우선순위를 포함하는 2-레벨 우선순위를 할당하는 단계; 상기 커널 우선순위에 대응하는 우선순위 비트맵을 생성하는 단계; 및 상기 우선순위 비트맵에서의 각각의 태스크의 상태를 나타내는 우선순위 비트를 활성화하는 단계를 수행한다.
상술한 측면들, 특징들 및 장점들과 다른 측면들, 특징들 및 장점들이 첨부된 도면을 참조하여 하기의 설명으로부터 더 명확해질 것이다.
도 1은 우선순위 기반 선점 스케줄링(priority based preemption scheduling)을 도시하는 타이밍도이다.
도 2는 선점형 스케줄링 시스템에서의 대기(ready) 태스크들의 우선순위 분배(priority distribution)를 도시하는 개략도이다.
도 3은 본 개시의 일 실시예에 따른 RTOS들을 위한 태스크 스케줄링 방법을 도시하는 개략도이다.
도 4는 본 개시의 일 실시예에 따른 태스크들을 스케줄링하기 위한 우선순위 비트맵(priority bitmap)을 도시하는 도면이다.
도 5는 본 개시의 일 실시예에 따른 태스크들을 스케줄링하기 위한 2-레벨 우선순위 비트맵(two-level priority bitmap)을 도시하는 도면이다.
도 6은 본 개시의 일 실시예에 따른 태스크 스케줄링을 최적화하기 위한 싱글 사이클 인스트럭션(Single Cycle Instruction)(CLZ) 동작을 위한 반대 순서의 우선순위 맵(priority map)의 배열을 도시하는 개략도이다.
도 7a는 RTOS를 위한 선점형 태스크 스케줄링(preemptive task scheduling)을 도시하는 도면이다.
도 7b는 본 개시의 일 실시예에 따른 RTOS를 위한 선점형 태스크 스케줄링을 도시하는 도면이다.
도 8은 일 실시예가 구현될 수 있는 컴퓨터 시스템을 도시하는 블록도이다.
도 9는 본 개시의 일 실시예에 따른 RTOS들에서의 선점형 태스크 스케줄링을 제공하는 방법을 도시하는 흐름도이다.
실시예들이 첨부된 도면을 참조하여 상세히 설명된다. 동일하거나 유사한 구성요소들은 비록 다른 도면에 도시되더라도 동일하거나 유사한 참조부호들로 나타낼 수 있다. 당업계에서의 주지의 구성들 또는 과정들에 대한 상세한 설명들은 본 개시의 요지를 흐리지 않도록 생략될 수 있다.
본 명세서에서 "어떤", "하나의" 또는 "일부의" 실시예(들)이 언급될 수 있다. 그러나, 이는 그러한 각각의 언급이 동일한 실시예(들)에 관한 것이거나 또는 그 특징이 단지 단일한 실시예에 적용되는 것을 반드시 의미하는 것은 아니다. 또한, 상이한 실시예들의 각각의 특징들이 조합되어 다른 실시예들을 제공할 수도 있다.
본 명세서에서 사용된 바와 같이, 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 또한, "포함하다" 및/또는 "가지다" 등의 용어들은 명세서상에 기재된 특징들, 숫자들, 단계들, 동작들, 구성요소들, 부품들 및/또는 이것들의 조합들이 존재함을 의미하려는 것이지, 하나 이상의 다른 특징들, 숫자들, 단계들, 동작들, 구성요소들, 부품들 및/또는 이것들의 조합들의 존재 또는 부가 가능성을 미리 배제하는 것은 아니다. 본 명세서에서 사용된 바와 같이, 용어 "및/또는"은 해당 열거된 항목들 중 어느 하나 및 하나 이상의 모든 조합들 및 배열들을 포함한다.
달리 정의되지 않는 한, 본 명세서에서 사용된 모든 용어들(기술적 및 과학적인 용어들을 포함)은 본 개시가 속하는 기술 분야에서 통상의 지식을 가진자에 의해 일반적으로 이해되는 바와 같은 의미들을 가진다. 또한, 일반적으로 사용되는 사전들에서 정의된 바와 같은 용어들은 관련된 기술 분야에서의 의미와 부합되는 의미를 가지는 것으로 해석되어져야 하며, 본 명세서에서 명백히 그렇게 정의되지 않는 한 이상적이거나 과도하게 형식적인 의미로 해석되어져서는 안될 것이다.
도 1은 우선순위 기반 선점 스케줄링(priority based preemption scheduling)을 도시하는 타이밍도(100)이다. 초기에, 태스크 T1이 실행되고 있다. 그 다음에, 시스템은 태스크 T1보다 높은 우선순위를 가지는 제2 태스크 T2의 수신을 확인한다. 그 다음에, 시스템은 태스크 T1의 실행을 선점하여 더 높은 우선순위의 제2 태스크 T2를 실행한다. 소정 시간후에, 제2 태스크 T2가 실행되고 있는 중에, 시스템은 태스크 T1 및 제2 태스크 T2보다 우선순위가 높은 제3 태스크 T3을 수신한다. 시스템은 제2 태스크 T2의 실행을 선점하고 제3 태스크 T3을 실행한다. 제3 태스크 T3의 실행이 완료되면, 시스템은 제2 태스크 T2의 실행을 재개한다. 제2 태스크 T2의 실행이 완료되면, 시스템은 태스크 T1의 실행을 재개한다.
도 2는 선점형 스케줄링 시스템에서의 대기(ready) 태스크들의 우선순위 분배(priority distribution)를 도시하는 개략도(200)이다. 우선순위 레벨들은 레벨 0, 레벨 1 및 레벨 2로 분류된다. 우선순위 레벨 0에서의 태스크들은 T1-0 및 T2-0이다. 우선순위 레벨 1에서의 태스크들은 T1-1, T2-1, T3-1 및 T4-1이다. 우선순위 레벨 2에서의 태스크들은 T1-2, T2-2 및 T3-2이다. 우선순위 레벨 0은 레벨 1 및 레벨 2보다 우선순위가 높다.
T1-0 및 T2-0를 위한 태스크 제어 구조들은 동일한 우선순위 값을 가지며, 동일한 우선순위 레벨로부터 태스크를 포착하기 위한 결정이 있는 경우, FIFO 방식이 적용된다.
선점형 스케줄러는 멀티태스킹 우선순위 기반 스케줄링(multitasking priority based scheduling)을 지원한다. 상술한 바와 같이, 태스크를 "대기(READY)"로 표시하는 과정은 일반적으로 하기의 두 단계들을 포함한다.
a. 태스크 자격(task credentials)(태스크 블록 포인터(task block pointer) 또는 태스크 식별자(task identifier))을 FIFO 리스트에 추가한다.
b. 이것이 FIFO 리스트로의 첫번째의 입력인 경우, 이 우선순위 레벨의 태스크가 지금 대기(READY) 중으로 나타낸다(그렇지 않으면, 우선순위 레벨은 이미 대기로 표시되었을 것이다).
시스템에서 태스크를 보류(SUSPENDED)로 표시하는 절차도 하기의 두 단계들을 포함한다.
a. 태스크 자격(태스크 블록 포인터 또는 태스크 식별자)을 FIFO 리스트로부터 제거한다.
b. 이것이 FIFO 리스트로의 최후의 입력인 경우, 이 우선순위 레벨에서 대기(READY) 중인 다른 태스크들이 없다고 나타낸다.
기존의 선점형 스케줄링 방법들은 스케줄링될 후보 태스크에 접근하기 위해 스케줄러 레벨에서 2-레벨 체크들(two level checks)이 수행될 것을 필요로 한다. 제1 체크는 가장 높은 우선순위 레벨 대기 리스트(highest priority level ready list)를 확인하는 것이고, 제2 체크는 그 우선순위 레벨에서의 대기 태스크들의 리스트에서 제1 태스크(FIFO)를 검색(retrieve)하는 것이다.
선점형 태스크는 자원을 대기하는 무한 루프(infinite loop)로 설계된다. 자원이 이용 가능한 경우, 태스크는 준비(ready)가 된다. 그러면, 스케줄러는 태스크의 우선순위가 대기 태스크들의 현재 세트(set)에서 최대일 때마다 스케줄링할 태스크를 고른다. 따라서, "콘텍스트 보관(context saving)"이 태스크들의 모든 스케줄링을 위해 필요하다.
일반적으로, 콘텍스트 보관이 필요한 경우에 태스크 스케줄링에는 두 개의 시나리오(scenario)들이 있다.
a. 태스크가 그것의 작업을 종료하는 경우 자체적으로 포기하고, 자원을 대기하도록 복귀한다.
b. 인터럽트(interrupt) 또는 높은 우선순위의 태스크로 인해 선점한다.
상기 두 경우 모두에서, 태스크의 재개 중에 CPU가 떠나온 곳으로부터 시작될 수 있도록 콘텍스트 보관 중에 중요한 CPU 레지스터들이 스택 메모리에 저장된다.
기존 방법들의 다른 단점은 콘텍스트 보관 및 복구 절차들이 스케줄링 지연(latency)에 영향을 미쳐 비용이 많이 들기에 최소화되어야 한다는 것이다.
본 명세서에서의 다양한 실시예들은 RTOS를 위한 선점형 태스크 스케줄링 방법(mechanism)을 개시한다. 일 실시예에 따르면, 생성될 때 태스크는 두 개의 별개의 우선순위들인 커널 우선순위(kernel priority)와 사용자 정의 우선순위(user-defined priority)와 관련된다. 커널은 내부적으로 기설정된 기준에 근거하여 각각의 생성된 태스크에 고유 번호(unique number)를 할당한다. 새로 생성된 태스크가 기정의된 기준을 만족시키는 경우, 태스크가 그것의 우선순위에 근거하여 실행될 수 있도록 커널은 우선순위 번호(priority number)를 그 태스크에 할당한다.
사용자 정의 우선순위는 사용자 또는 시스템 개발자에 의해 정의된 바와 같은 일반적인 태스크 우선순위이므로, 태스크 스케줄러 시스템에서의 둘 이상의 태스크들에서 동일하다. 사용자 정의 우선순위는 고려 중인 태스크 스케줄러 시스템을 위한 허용된 우선순위 범위 내의 임의의 번호일 수 있다. 선택된 사용자 정의 우선순위 범위 내의 사용되지 않은 우선순위들은 홀(hole)들로 불려질 수 있다. 예를 들어, 시스템에서의 5개의 상이한 태스크들은 사용자 정의 우선순위 '10'을 가질 수 있고, 다른 5개의 상이한 태스크들은 사용자 정의 우선순위 '11'을 가질 수 있다. 사용자 정의 우선순위 '10'을 가지는 제1 세트의 5개의 상이한 태스크들은 첫번째로 실행된다. 제2 세트의 5개의 상이한 태스크들은 제1 세트의 5개의 상이한 태스크들의 실행이 완료된 후에야 실행될 수 있다.
하기의 조건들이 만족되는 것을 보장함으로써, 커널 우선순위는 오름차순으로 태스크들에 할당될 수 있다.
a) 어떠한 두개의 태스크들도 동일한 커널 우선순위를 가지지 않는다.
b) 태스크 T1이 태스크 T2의 사용자 정의 우선순위보다 높은 사용자 정의 우선순위를 가지는 경우, 태스크 T1의 커널 우선순위는 태스크 T2의 커널 우선순위보다 높다.
c) 동일한 사용자 정의 우선순위 레벨에서의 두 개의 태스크들의 커널 우선순위들은 그것들의 생성 순서들에 근거하여 할당된다(즉, FCFO: First Create First Out).
그러므로, 두 개의 태스크들(순서대로 생성된 태스크 T1-0 및 태스크 T1-1)이 동일한 사용자 정의 우선순위 'p1'을 가지는 경우, 태스크 T1-0의 커널 우선순위는 태스크 T1-1의 커널 우선순위보다 높을 것이다. 이러한 태스크들의 커널 우선순위는 우선순위 비트맵(priority bitmap)으로 불려지는 비트맵(bitmap)을 이용하여 표현된다.
도 3은 본 개시의 일 실시예에 따른 RTOS들을 위한 태스크 스케줄링 방법을 도시하는 개략도(300)이다. 태스크들 T1-0 - T2-0, T1-1 - T4-1 및 T1-2 - T3-2은 사용자 정의 우선순위들 및 커널 우선순위들 모두에 근거하여 표현된다. 우선순위가 높을수록 할당된 번호가 낮아진다. 도 3은 사용자 정의 우선순위 0, 사용자 정의 우선순위 1 및 사용자 정의 우선순위 2를 포함하는 세 개의 상이한 우선순위 리스트들을 도시하고 있다. 사용자 정의 우선순위 0은 가장 높은 우선순위를 가지고, 사용자 정의 우선순위 1은 사용자 정의 우선순위 0보다 낮은 우선순위를 가지며, 사용자 정의 우선순위 2는 세 개의 우선순위 리스트들 중에서 가장 낮은 우선순위를 가진다.
사용자 정의 우선순위 0 리스트 내에서, 태스크들 T1-0 및 T2-0 모두는 사용자 정의 우선순위 '0'을 가진다. 따라서, 사용자는 태스크들 T1-0 및 T2-0 모두를 실행할 높은 우선순위의 태스크들로 확인한다. 사용자 정의 우선순위 1 리스트는 네 개의 태스크들 T1-1, T2-1, T3-1 및 T4-1을 포함한다. 태스크들 T1-1, T2-1, T3-1 및 T4-1은 사용자 정의 우선순위 0보다 낮은 우선순위를 가지며, 사용자 정의 우선순위 0을 가지는 태스크들의 실행이 완료되면 실행될 수 있다. 사용자 정의 우선순위 2 리스트는 세 개의 태스크들 T1-2, T2-2 및 T3-2를 포함한다. 태스크들 T1-2, T2-2 및 T3-2는 가장 낮은 우선순위를 가지므로, 사용자 정의 우선순위 0 및 사용자 정의 우선순위 1 리스트들 내의 모든 태스크들이 일단 실행되면 실행될 수 있다.
동일한 사용자 정의 우선순위를 가지는 둘 이상의 태스크들에는 내부적으로 고유의 커널 우선순위가 할당된다. 시스템은 동일한 사용자 정의 우선순위를 가지는 태스크들에 대한 FCFO 리스트를 생성한다. 도 3에서, 사용자 정의 우선순위 0을 가지는 태스크들은 제1 FCFO 리스트에 배치되고, 사용자 정의 우선순위 1을 가지는 태스크들은 제2 리스트에 배치되고, 사용자 정의 우선순위 2를 가지는 태스크들은 제3 FCFO 리스트에 배치된다. 동일한 사용자 정의 우선순위를 가지는 둘 이상의 태스크들이 동시에 실행할 준비가 된 경우, 그 둘 이상의 태스크들은 태스크 생성 순서에 근거한 그것들의 커널 우선순위에 근거하여 스케줄링된다. 그러므로, 동일한 사용자 정의 우선순위를 가지는 두 개의 태스크들은 서로 선점하지 않고서 내부적으로 우선순위가 정해진다.
제1 FCFO 리스트에서, 커널은 태스크 T1-0이 최초로 생성된 것을 확인하고, 스케줄러는 가장 높은 커널 우선순위 0 내지 T1-0 및 커널 우선순위 1 내지 T2-0을 할당한다. 일단 커널 우선순위들이 제1 FCFO 리스트에서의 모든 태스크들에 할당되면, 커널 우선순위들은 제2 FCFO 리스트의 태스크들에 할당된다. 제2 FCFO 리스트의 태스크들 T1-1, T2-1, T3-1 및 T4-1에는 각각 커널 우선순위들 2, 3, 4 및 5가 할당된다. 유사하게, 제3 FCFO 리스트의 태스크들 T1-2, T2-2 및 T3-2에는 각각 커널 우선순위들 6, 7 및 8이 할당된다.
동일한 사용자 정의 우선순위를 가지는 두 개의 태스크들이 서로 선점하지 않는다는 것을 보장하기 위하여, 태스크 스케줄러는 현재 실행중인 태스크의 사용자 정의 우선순위를 두번째로 높은 태스크의 사용자 정의 우선순위와 비교한다. 이는 동일한 사용자 정의 우선순위를 가지는 두 개의 태스크들 간에 선점이 예방되는 것을 보장한다.
도 4는 본 개시의 일 실시예에 따른 태스크들을 스케줄링하기 위한 우선순위 비트맵(400)을 도시하는 도면이다. 우선순위 비트맵(400)은 우선순위가 정해지고 선점되고 실행되어야 하는 태스크들에 대한 1-워드 우선순위 비트맵(1-word priority bitmap)이다. 커널 우선순위가 고유의 증분 번호(unique incremental number)이므로, 태스크들은 우선순위 비트맵에서의 비트들에 일대일로 매핑될 수 있다. 태스크들을 우선순위 비트맵(400)에서의 비트들과 매핑하는 것은 최하위 비트(LSB: Least Significant Bit)로 개시되어 최상위 비트(MSB: Most Significant Bit)로 종료될 수 있다. 대안적으로, 태스크들을 우선순위 비트맵(400)에서의 비트들과 매핑하는 것은 MSB로 개시되어 LSB로 종료될 수 있다. 우선순위 비트맵(400)을 표현하는 데 필요한 비트들의 수는 시스템에서의 태스크들의 수와 동일하다. 32개의 태스크들이 존재하는 경우, 우선순위 비트맵(400)은 단지 하나의 워드(32 비트들)을 이용하여 표현될 수 있다.
또한, 실행될 시스템에서의 태스크들의 수가 16이면, 우선순위 비트맵(400)은 16 비트들을 포함한다. 다른 실시예에 있어서, 실행될 태스크들의 수가 8이면, 우선순위 비트맵(400)은 1 바이트(byte) 즉, 8 비트들을 포함한다. 당업자라면 우선순위 비트맵(400)에서의 비트들의 수가 실행될 시스템에서의 태스크들의 수에 따라 변경될 수 있다는 것을 알 수 있을 것이다.
낮은 우선순위의 태스크는 그 낮은 우선순위의 태스크를 "보류(suspended)"로 표시하고 더 높은 우선순위의 태스크를 태스크 스케줄러 시스템에 의해 실행될 "준비(ready)"가 된 것으로 표시하여 실행함으로써 선점된다. 그러므로, 태스크를 '준비/대기'로 표시하는 절차가 둘 이상의 단계들이 아닌 단일한 단계로 단순화된다.
또한, 스케줄러가 실행할 다음으로 높은 우선순위의 태스크를 발견할 필요가 있는 경우, 스케줄러는 준비 상태(ready state)인 우선순위 비트맵(400)에서의 "최소 비트 세트(least bit set)"를 탐색한다. 우선순위 비트맵(400)에서 가장 높은 우선순위를 가지는 태스크를 발견하면, 스케줄러는 태스크를 개시하고 실행을 수행한다.
일 실시예에 있어서, 논리값들(Boolean values) 0 및 1을 사용하여 우선순위 비트맵(400)에서의 태스크들의 상태들을 표현할 수 있다. 논리값 0을 사용하여 보류 상태(suspended state) 또는 완료 태스크 상태(completed task state)를 표현하고, 논리값 1을 사용하여 준비(ready), 선점(preempted) 및 실행(running) 상태들을 표현한다. 스케줄러가 준비 상태인 임의의 신규 태스크를 수신하는 경우(보류로부터 준비로 태스크의 상태가 변경된 경우), 태스크의 값 0은 우선순위 비트맵(400)에서 값 1로 갱신된다. 우선순위 비트맵(400)에 대한 임의의 변경은 스케줄러를 실행하여, 우선순위 비트맵(400)에서의 태스크의 논리값의 변경을 확인한다. 스케줄러는 태스크의 사용자 정의 우선순위를 검사하는데, 준비 상태인 신규 태스크의 사용자 정의 우선순위가 현재 실행중인 태스크의 사용자 정의 우선순위보다 높으면, 현재 실행 중인 태스크는 선점 상태(preempted state)가 되고 신규 태스크는 실행할 예정이 된다.
예를 들어, 스케줄러가 우선순위 비트맵의 제5 비트에 저장된 논리값 1을 가지는 낮은 우선순위의 태스크 t4를 실행하고 있으며, 스케줄러가 보류로부터 준비로 상태가 변한 다른 태스크 t1을 수신하는 경우, 태스크 t1의 논리값은 우선순위 비트맵의 제2 비트에서 0으로부터 1로 변경된다. 스케줄러는 태스크 t1의 값의 변경을 확인하고 태스크가 실행할 준비가 된 것으로 확인한다. 스케줄러는 태스크 t4의 우선순위를 태스크 t1의 우선순위와 비교하고 태스크 t1의 사용자 정의 우선순위가 태스크 t4의 사용자 정의 우선순위보다 높다는 것을 확인한다. 스케줄러는 태스크 t4의 준비 상태를 선점 상태로 변경하나, 태스크 t4가 여전히 실행할 준비가 되어 있으므로(그리고 실행을 다투고 있으므로), 그 값을 1로 유지한다. 그 다음에, 스케줄러는 실행할 태스크 t1을 개시한다. 스케줄러는 태스크 t1을 실행하는데, 태스크 t1의 실행이 완료되면, 태스크 t1의 값은 다시 0으로 변경되고 태스크 t4는 선점 상태로부터 준비 상태로 변경된다.
태스크 t4를 실행 중에 스케줄러가 태스크들 중의 임의의 태스크의 논리값의 0으로부터 1로의 변경을 확인하면, 스케줄러는 태스크들의 우선순위들을 비교한다. 신규 태스크의 우선순위가 현재 실행 중인 태스크의 우선순위보다 낮으면, 그 신규 태스크는 준비 상태로 되고 그 현재 실행 중인 태스크는 계속 실행될 것이다.
일 실시예에 있어서, 스케줄러가 실행할 신규 태스크를 수신하는 경우 또는 현재 실행 중인 태스크가 실행을 완료하고 자원들이 신규 태스크의 실행을 위해 이용 가능한 경우에만, 스케줄러는 준비 또는 보류 상태에 있는 태스크들의 우선순위들을 비교한다. 다른 실시예에 있어서, 스케줄러는 우선순위 비트맵에서의 태스크들의 논리값들을 검사함으로써 태스크들의 상태들의 임의의 변경을 검사하고, 그 태스크의 상태를 보류 상태로 변경하고 더 높은 우선순위의 태스크를 실행함으로써 태스크들의 우선순위들을 비교하여 더 낮은 우선순위의 태스크들을 선점한다.
도 5는 본 개시의 일 실시예에 따른 태스크들을 스케줄링하기 위한 2-레벨 우선순위 비트맵(500)을 도시하는 도면이다. 일반적으로, 시스템에서의 태스크들의 수가 증가할수록 우선순위 비트맵의 크기는 선형적으로 증가한다. 본 개시의 일 실시예에 있어서, 멀티-레벨(multi-level) 우선순위 비트맵(500)을 사용하여 우선순위 비트맵(500)에서의 비트들의 수를 초과하는 다수의 태스크들을 처리할 수 있다. 2-레벨 우선순위 비트맵(500)은 최대 1024개의 태스크들을 나타낼 수 있다. 2-레벨 우선순위 비트맵(500)에서의 제1 레벨은 1 워드의 길이를 가지며 32 비트들을 포함한다. 그 태스크들은 32개의 태스크들의 태스크 그룹들(groups)로 분류된다. 우선순위 비트맵(500)의 제1 레벨의 각각의 비트는 32개의 태스크들의 태스크 그룹을 나타낸다. 그러므로, 우선순위 비트맵(500)의 32 비트들은 총 1024개의 태스크들을 나타낼 수 있다. 예를 들어, 우선순위 비트맵(500)의 제1 레벨의 LSB b0은 0 내지 31의 태스크 그룹을 나타낸다. 유사하게, 비트 b1은 32 내지 63의 태스크 그룹을 나타낸다. 비트 31은 991 내지 1023의 태스크 그룹을 나타낸다.
RTOS에서의 신호들은 태스크 레벨 인터럽트 서비스 루틴들(ISRs: Interrupt Service Routines)로 취급될 수 있다. 태스크가 스케줄링되고 있는 중인 경우, 그 태스크는 신호들이 발생되면 그것의 정상적인 동작들을 재개하기 전에 먼저 그 신호들에 전념한다. 일반적으로, 정상적인 동작들을 처리하기 전에 신호들을 처리하는 것은 하기에 설명되는 세 개의 상태들에서 수행될 수 있다.
a. "발생(Raise)" 신호는 태스크 관리 제어부(task manage control unit)에서 플래그(flag)를 설정할 수 있다.
b. 추가 태스크 자격(Add task credentials)(태스크 블록 포인터 또는 태스크 식별자)에 대해 신호들이 FIFO 관련 리스트(FIFO linked list) 내부로 그것의 우선순위 레벨에서 발생되고 있다.
c. 이 신규 우선순위 레벨에서의 태스크가 현재 "준비(ready)" 중이라고 표시한다(FIFO 리스트로의 첫번째 입력인 경우).
본 시스템은 두 개의 우선순위 비트 방식들을 사용하여 태스크들의 실행을 처리하기 전에 신호들을 처리한다. 태스크의 생성 중에, 우선순위 비트맵(500)에서 각각의 태스크마다 하나의 비트를 보존하는 대신에, 두 개의 비트들을 보존한다. 상기 두 개의 비트들 중에서, 하나의 비트를 사용하여 신호들을 표시하고, 나머지 다른 하나의 비트를 사용하여 실행될 태스크를 표시한다. 신호들의 처리는 태스크들의 실행 중에 우선순위가 정해져야 한다. 일 실시예에 따르면, 신호들을 발생/제거(raising/clearing)하는 것은 단일한 단계의 과정으로, 즉, 그 태스크에 관련된 단일 비트를 설정 및 제거하는 과정으로 단축될 수 있다.
우선순위 비트들을 반대의 순서로 나타냄으로써, 즉, LSB 대신에 MSB가 가장 높은 우선순위의 태스크를 나타내고 MSB 대신에 LSB가 가장 낮은 우선순위의 태스크를 나타냄으로써, 실시예들은 예들 들어 ARM(Advanced RISC Machine) 기반 플랫폼들을 위해 최적화될 수 있다. 프로세서의 구현에 있어서, 효율을 향상시키기 위하여, 단일한 명령(instruction)을 사용하여 높은 우선순위의 태스크를 확인하는 결정을 보존할 수 있는 LSB를 발견할 수 있다.
일 실시예에 따르면, 도 6을 참조하여 설명된 바와 같이, "CLZ(Count Leading Zero's)" 명령이 스케줄러에 의해 사용되어 스케줄링 과정을 최적화할 수 있다. ARM은 1-사이클 명령(one cycle instruction)을 1-워드 우선순위 비트맵(1-word priority bitmap)(600)에 제공한다. 우선순위 비트맵(600)에서, 비트 31은 가장 높은 우선순위의 태스크 t0을 나타내고, 비트 0은 가장 낮은 우선순위의 태스크 t31을 나타낸다. 우선순위 비트맵(600)을 반대의 순서로 나타냄으로써, 태스크 스케줄러는 단일한 사이클 명령(single cycle instruction)을 사용하여 두번째로 높은 대기 태스크(next highest ready task)를 직접 확인할 수 있다. 또한, 우선순위 비트맵(600)은 태스크 우선순위 리스트를 꺼내는(fetching) 복잡한 동작을 줄이고 기존의 스케줄러들에 의해 제공되는 관련된 리스트 동작들을 단지 하나의 사이클 명령으로 갱신함으로써, 스케줄링 과정을 간단하고 효율적이게 한다. 일 실시예에 있어서, x86 구조(x86 architecture)도 CLZ 명령을 사용하여 스케줄링 과정을 최적화할 수 있다.
다른 실시예에 따르면, 스케줄러는 저지연(low latency) 선점형 태스크 스케줄링을 수행할 수 있다. 기존의 기술에 따르면, 도 7a의 방법(700)에서와 같이, 단계 702에서 태스크가 생성되고, 단계 704에서 그 태스크가 실행되기 시작한다. 더 높은 우선순위를 가지는 신규 태스크가 실행을 위해 도착하는 경우, 커널은 실행 중인 태스크의 우선순위를 검사한다. 커널이 현재 실행 중인 태스크의 우선순위가 수신된 신규 태스크의 우선순위보다 낮은 것으로 확인하는 경우, 단계 706에서 그 태스크는 선점되고 자원들을 대기하게 된다. 자원들이 그 태스크에 이용 가능하게 되면, 단계 708에서 그 태스크는 보류된다. 선점형 태스크가 그 자체를 보류하고 자원을 대기하는 경우, 단계 710에서 그 콘텍스트는 그것의 스택(stack)에 보존된다. 단계 712에서, 자원을 이용 가능한 태스크가 실행될 수 있다. 그것의 동작이 완료되면, 그 태스크는 자원을 대기하고 상황에 따라 다시 보류되거나 실행될 수 있다.
그러나, 콘텍스트들 저장하는 것은 시스템 상의 저장 부하(storage load)을 증가시킬 수 있어, 불필요한 데이터를 시스템에 저장하게 된다. 따라서, 본 개시의 실시예들은, 태스크가 그것의 동작을 완료할 때마다 루프(loop)를 대기해야 하는 필요성을 예방함으로써, 태스크가 그 자체를 보류하고 자원을 대기하는 시나리오에서 콘텍스트 저장 동작들을 예방하는 선점형 스케줄러 방식(preemptive scheduler scheme)을 제시한다. 태스크가 그것의 동작을 완료하고 자체적으로 포기할 때마다, 그 태스크는 그것의 임의의 실행 트레이스들(traces)을 저장할 필요 없이 태스크 동작을 완전히 종료할 수 있다.
도 7b는 본 개시의 일 실시예에 따른 기본 통신 개체(DCE: Default Communication Entity) 기반 저지연(low latency) 선점형 태스크 스케줄링(750)을 도시하는 도면이다. 모든 태스크는 하나의 DCE와 관련되고 이 DCE상에서 무기한으로 보류된 것으로 가정될 수 있다. 일 실시예에 있어서, DCE는 큐, 이벤트 등 중에 하나가 될 수 있으나, 이에 한정되지 않는다. 시동 중에, 일단 태스크들이 단계 752에서 생성되고 단계 754에서 실행되기 시작하면, 그 태스크들은 각각의 DCE들을 대기하는 보류 상태들에 있는 것으로 표시될 수 있다. 태스크들이 항상 루프 상에 보류되지 않기 때문에, 태스크는 항상 그것의 DCE를 이용하여 실행될 것이다. 단계 756에서 DCE가 인터럽트 서브 루틴 또는 태스크로부터 게시될 때마다, 단계 758에서 그 DCE와 관련된 태스크는 처음부터 실행된다. 실행이 완료되면, 자원에 의존하는 무한한 루프를 대기하지 않고서 단계 760에서 태스크는 종료된다. 그러므로, 스케줄링 중에 태스크 콘텍스트(CPU 레지스터 등)를 저장해야 할 필요성이 예방된다. 태스크 콘텍스트 저장 동작은 실행 태스크가 선점되었거나 비-DCE(non-DCE) 자원을 대기 중인 경우들에만 필요하다.
또한, 시스템에 따라 필요한 임의의 태스크 초기화를 처리하기 위하여, 태스크 진입 초기화 기능 처리기(a task entry initialization function handler)가 태스크 목적으로 구성될 수 있다. 태스크 진입 초기화 루틴(task entry initialization routine)이 태스크 생성 시에 한번만 실행되어 임의의 필요한 초기화를 수행할 수 있다. 실행 태스크는 자체적으로 포기하거나 인터럽트에 의해 선점되는 경우에 스케줄-아웃될(scheduled out) 수 있으므로, 이러한 두 시나리오들의 발생 빈도들은 시스템에서 거의 동일하다. 따라서, 태스크가 자체적으로 포기될 때 콘텍스트 저장 동작이 예방되면, 그 동작에 관련된 지연(latency)이 전체적인 시스템 동작에서의 이득(실제적으로 50% 이득)을 초래할 수 있다.
도 8은 본 개시의 일 실시예에 따른 RTOS에서의 선점형 태스크 스케줄링을 제공하는 방법(들), 시스템(들) 및 사용자 단말(들)(user equipment(s))을 구현하는 컴퓨팅 환경을 도시하는 블록도이다. 도시된 바와 같이, 컴퓨팅 환경(802)은 제어부(806)와 산술 논리 장치(ALU: Arithmetic Logic Unit)(808)를 구비하는 적어도 하나의 처리부(804)를 포함한다. 처리부(804)는 메모리(810), 저장부(812), 입출력(Input/Output: I/O) 인터페이스(814) 및 네트워크 인터페이스(816)에 연결된다. 처리부(804)는 알고리즘(algorithm)의 명령들(instructions)의 처리를 담당한다. 처리부(804)는 그것의 처리를 수행하도록 제어부로부터 명령들(commands)을 수신한다. 또한, 명령들(instructions)의 수행에 관련된 임의의 논리적 및 산술적 연산들(operations)이 ALU(808)의 도움으로 컴퓨터로 계산된다. 처리부(804)는 컴퓨팅 시스템(802) 내에서의 실행을 위한 기능(functionality) 및/또는 처리 명령들(process instructions)을 구현하도록 구성될 수 있다. 처리부(804)는 마이크로프로세서(microprocessor), 제어기(controller), 디지털 신호 처리기(DSP: Digital Signal Processor), 특수 용도의 집적 회로(ASIC: Application Specific Integrated Circuit), 필드 프로그래머블 게이트 어레이(FPGA: Field-Programmable Gate Array), 또는 동등한 개별 또는 집적 논리 회로(equivalent discrete or integrated logic circuitry) 중의 어느 하나 또는 그 이상을 더 포함할 수 있다. 또한, 본 개시에서 처리부(804)에 기인하는 기능들은 소프트웨어(software), 펌웨어(firmware), 하드웨어(hardware), 또는 그것들의 임의의 조합으로 구현될 수 있다. 또한, 다수의 처리부들(804)이 단일의 칩 상에 또는 다수의 칩에 걸쳐 위치할 수 있다.
처리부(804)는 생성되는 각 태스크에 커널 우선순위(kernel priority) 및 사용자 정의 우선순위(user-defined priority)를 포함하는 2-레벨 우선순위를 할당하고, 상기 커널 우선순위에 대응하는 우선순위 비트맵(priority bitmap)을 생성하며, 상기 우선순위 비트맵에서 각각의 태스크의 상태를 나타내는 우선순위 비트(priority bit)를 활성화(enable)하도록 적응된다. 또한, 처리부(804)는 상기 우선순위 비트맵에서 우선순위 비트를 비활성화하도록 구성되되, 상기 우선순위 비트를 활성화하는 것은 상기 각각의 태스크가 실행할 준비가 된 것을 나타내고, 상기 우선순위 비트를 비활성화하는 것은 상기 태스크가 보류된 것을 나타낸다.
전체적인 컴퓨팅 시스템(802)은 다수의 동종(homogeneous) 및/또는 이종(heterogeneous) 코어들(cores), 다수의 다른 종류의 CPU들, 특수 미디어(special media) 및 다른 액셀러레이터들(accelerators)로 구성될 수 있다. 구현(implementation)에 필요한 코드들(codes) 및 명령들(instructions)로 구성되는 알고리즘은 메모리(810)나 저장부(812) 둘 중 어느 하나 또는 모두에 저장된다. 실행 시에, 상기 명령들은 대응하는 메모리(810) 및/또는 저장부(812)로부터 꺼내져서 처리부(804)에 의해 실행될 수 있다.
임의의 하드웨어 구현의 경우에는, 다양한 네트워킹(networking) 장치들 또는 외부 입출력 장치들이 컴퓨팅 환경에 연결되어 네트워킹 인터페이스(816) 및 입출력 사용자 인터페이스(814)를 통해 구현을 지원할 수 있다.
메모리(810)는 동작 중에 컴퓨팅 매체(802) 내에서 정보를 저장하도록 구성될 수 있다. 일부 예들에서, 메모리(810)는 컴퓨터 판독가능 저장 매체(computer-readable storage medium)로 기술될 수 있다. 메모리는 휘발성(volatile) 메모리로 기술될 수 있으며, 이는 컴퓨터가 꺼질 때 메모리(810)가 저장된 콘텐츠(contents)를 보존하지 않는 것을 의미한다. 휘발성 메모리의 예로는 임의 접근 메모리(RAM: Random Access Memory), 동적 임의 접근 메모리(DRAM: Dynamic Random Access Memory), 정적 임의 접근 메모리(SRAM: Static Random Access Memory), 및 당업계에서 알려진 다른 형태의 휘발성 메모리들이 있다.
저장부(812)는 하나 이상의 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 저장부(812)는 비휘발성(non-volatile) 저장 소자들을 포함할 수 있다. 비휘발성 저장 소자의 예로는 자기 하드 디스크 (magnetic hard disc), 광학 디스크(optical disc), 플로피 디스크(floppy disc), 플래쉬 메모리(flash memory), 전기적 프로그램 가능 읽기 전용 메모리(EPROM: Electrically Programmable Read-Only Memory), 또는 전기적 소거 및 프로그램 가능 읽기 전용 메모리(EEPROM: Electrically Erasable and Programmable Read-Only Memory) 등이 있다. 또한, 일부 예들에서, 저장부(812)는 비일시적 컴퓨터 판독가능 저장 매체(non-transitory computer-readable storage medium)로 간주될 수 있다. "비일시적"이라는 용어는 저장 매체가 반송파(carrier wave) 또는 전파 신호(propagated signal)로 구현되지 않는다는 것을 의미할 수 있다. 그러나, "비일시적"이라는 용어는 저장 장치가 이동 불가능하다는 것을 의미하도록 해석되어져서는 안 된다. 일부 예들에서, 저장 장치는 메모리(810) 보다 대량의 정보를 저장하도록 구성될 수 있다. 임의의 예들에서, 비일시적 저장 매체는 시간이 흐름에 따라 변경될 수 있는 데이터를 저장할 수 있다(예를 들어, 임의 접근 메모리(RAM: Random Access Memory) 또는 캐시(cache)).
컴퓨팅 환경(802)은 네트워크 인터페이스(816)를 이용하여 하나 이상의 무선 네트워크와 같은 하나 이상의 네트워크를 통해 외부 장치들과 통신할 수 있다. 네트워크 인터페이스(816)는 이더넷 카드(Ethernet card), 광학 송수신기(optical tranceiver), 무선주파수 송수신기(radio frequency tranceiver), 또는 정보를 송수신할 수 있는 임의의 다른 형태의 장치와 같은 네트워크 인터페이스 카드(network interface card)일 수 있다. 그러한 네트워크 인터페이스(816)의 예로는 범용 직렬 버스(USB: Universal Serial Bus) 뿐만 아니라 이동 전자 장치에서의 블루투스(Bluetooth®), 3G 및 와이파이(WiFi®) 무선장치 등이 있다. 그러한 무선 네트워크의 예로는 WiFi®, Bluetooth® 및 3G 등이 있다. 일부 예들에서, 컴퓨팅 환경(802)은 네트워크 인터페이스(816)를 이용하여 서버(server), 이동 전화기(mobile phone), 또는 다른 네트워크형 전자 장치(networked electronic device)와 같은 외부 장치(미도시)와 무선으로 통신할 수 있다.
입출력 인터페이스(814)는 전자 장치의 사용자가 전자 장치들과 상호 작용할 수 있게 한다. 입출력 인터페이스(814)는 사용자가 명령들을 개시할 수 있게 하는 그래픽 사용자 인터페이스(GUI: Graphical User Interface)를 생성할 수 있다. 일부 실시예들에서, 입출력 인터페이스(814)는 터치 감응 스크린(touch sensitive screen)("터치 스크린(touch screen)") 상에 표시되는 GUI를 생성한다. 상기 GUI는 하나 이상의 터치 감응 UI 요소(touch sensitive UI element)를 포함할 수 있다. 예를 들어, 사용자는 터치 감응 스크린 상에 표시되는 터치 감응 UI 요소들 중 하나 이상을 터치함으로써 및/또는 터치 감응 스크린 상에 표시되는 UI 요소들의 위를 호버링(hovering)함으로써 사용자 단말과 상호 작용하고 명령을 개시할 수 있다. 상기 터치 감응 스크린은 액정 표시 장치(LCD: Liquid Crystal Display), 전자 잉크 표시 장치(e-ink display), 음극선관(CRT: Cathode Ray Tube), 플라즈마 표시 장치(plasma display), 유기 발광 다이오드 (OLED: Organic Light Emitting Diode) 표시 장치, 또는 다른 형태의 표시 장치와 같은 다양한 전자 장치들을 포함할 수 있다.
본 명세서에서 설명된 다양한 장치들, 모듈들 등은 하드웨어 회로, 예를 들어, 상보적 금속 산화물 반도체(CMOS: complementary metal oxide semiconductor) 기반 논리 회로, 펌웨어, 소프트웨어 및/또는 머신 판독 가능 매체에서 구현된 하드웨어, 펌웨어 및/또는 소프트웨어의 임의의 조합을 이용하여 활성화 및 동작될 수 있다.
본 명세서에서 설명된 방법들을 수행하기 위한 명령어들 또는 부호들을 포함하는 소프트웨어 구성요소들은 하나 이상의 해당 메모리 장치들(예를 들어, 읽기 전용 메모리(ROM: Read Only Memory), 고정식 메모리(fixed memory), 또는 착탈식 메모리(removable memory))에 저장되고, 사용될 준비가 된 때에 부분적으로 또는 전체적으로 (예를 들어, 임의 접근 메모리(RAM: Random Access Memory) 내부로) 로드(load)되어 CPU에 의해 실행될 수 있다.
도 9는 본 개시의 일 실시예에 따른 RTOS들에서의 선점형 태스크 스케줄링을 제공하는 방법을 도시하는 흐름도이다. 단계 902에서, 생성되는 각 태스크에 2-레벨 우선순위가 할당된다. 여기서, 상기 2-레벨 우선순위는 커널 우선순위와 사용자 정의 우선순위를 포함한다. 또한, 단계 904에서, 상기 커널 우선순위에 대응하는 우선순위 비트맵을 생성한다. 단계 906에서, 상기 우선순위 비트맵에서 우선순위 비트를 활성화하는데, 여기서 상기 우선순위 비트는 각각의 태스크의 상태를 나타낸다. 여기서, 상기 우선순위 비트를 활성화하는 것은 상기 태스크가 실행할 준비가 된 것을 나타낸다. 단계 908에서, 상기 우선순위 비트맵에서 상기 우선순위 비트를 비활성화하는데, 여기서 상기 우선순위 비트를 비활성화하는 것은 상기 각각의 태스크가 보류된 것을 나타낸다.
상기 2-레벨 우선순위를 각각의 태스크에 할당하는 방법은 각각의 태스크에 고유의 커널 우선순위를 할당하는 단계; 상기 사용자 정의 우선순위의 값에 근거하여 하나 이상의 태스크에 상기 커널 우선순위를 할당하는 단계; 및 태스크 생성 순서에 근거하여 동일한 사용자 정의 우선순위를 가지는 둘 이상의 태스크들에 커널 우선순위들을 할당하는 단계들 중 적어도 하나의 단계를 포함한다.
본 실시예들은 집적 회로들의 제조와 관련하여 이용될 수 있다. 일반적으로 집적 회로들의 경우, 복수의 동일한 다이(die)들이 대체적으로 반도체 웨이퍼 표면 상에 반복된 패턴(pattern)으로 형성된다. 각각의 다이는 다른 구조들 또는 회로들을 포함할 수 있다. 상기 각각의 다이들은 상기 웨이퍼로부터 잘라내어 집적 회로로 패키지(package)된다. 당업자라면 웨이퍼들을 자르고 다이들을 패키지하여 집적 회로들을 제조하는 방법을 알 수 있을 것이다. 이렇게 제조된 집적 회로들은 이 정보의 일부로 간주된다.
이상에서 특정 실시예들이 설명되었으나, 당업자라면 첨부된 특허청구범위에 의해 정의되는 바와 같은 사상 및 범위에서 벗어남이 없이 다양한 변형들이 그러한 실시예들에서 이루어질 수 있음을 알 수 있을 것이다.

Claims (20)

  1. 실시간 운영 체제(RTOS: Real Time Operating System)를 위한 선점형 태스크 스케줄링(preemptive task scheduling)을 제공하는 방법에 있어서,
    생성된 각각의 태스크(task)에 커널 우선순위(kernel priority)와 사용자 정의 우선순위(user-defined priority)를 포함하는 2-레벨 우선순위를 할당하는 단계;
    상기 커널 우선순위에 대응하는 우선순위 비트맵(bitmap)을 생성하는 단계; 및
    상기 우선순위 비트맵에서의 각각의 태스크의 상태를 나타내는 우선순위 비트를 활성화(enable)하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 우선순위 비트맵에서의 상기 우선순위 비트를 비활성화하는 단계를 더 포함하되,
    상기 우선순위 비트를 활성화하는 단계가 상기 태스크가 실행할 준비가 된 것을 나타내고 상기 우선순위 비트를 비활성화하는 단계가 상기 각각의 태스크가 보류된 것을 나타냄을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 커널 우선순위가 기정의된 프로토콜을 통해 생성되는 각각의 태스크에 할당된 고유의 증분 번호임을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 각각의 태스크의 상태는 실행할 준비가 된 상태 및 보류된 상태 중에 하나임을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 2-레벨 우선순위를 할당하는 단계가,
    각각의 태스크에 고유의 커널 우선순위를 할당하는 단계;
    상기 사용자 정의 우선순위의 값에 근거하여 하나 이상의 태스크들에 상기 커널 우선순위를 할당하는 단계; 및
    태스크 생성 순서에 근거하여 동일한 사용자 정의 우선순위를 가지는 둘 이상의 태스크들에 상기 커널 우선순위들을 할당하는 단계 중 적어도 하나를 포함함을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 우선순위 비트맵에서의 비트들의 수는 태스크들의 수에 대응함을 특징으로 하는 방법.
  7. 제1항에 있어서,
    동일한 사용자 정의 우선순위를 가지는 둘 이상의 태스크들이 소정 시점에 실행할 준비가 된 경우 태스크 생성 순서에 근거하여 실행할 태스크들의 우선순위를 정하는 단계를 더 포함하는 방법.
  8. 제1항에 있어서,
    실행할 가장 높은 우선순위의 태스크를 확인하는 단계는 상기 우선순위 비트맵에서의 최하위 비트를 확인하는 단계를 포함함을 특징으로 하는 방법.
  9. 제1항에 있어서,
    신호 비트인 제1 비트 및 태스크 우선순위 비트인 제2 비트를 포함하는 적어도 두 개의 비트들을 상기 우선순위 비트맵에서의 각각의 태스크에 할당하는 단계;
    상기 신호 비트 및 태스크 우선순위 비트의 할당에 근거하여 태스크들보다 이전에 신호들의 우선순위를 정하는 단계; 및
    상기 우선순위 비트맵에서의 두 번째로 높은 우선순위의 값에 근거하여 신호 처리기(signal handler) 및 재개 태스크(resume task) 중의 적어도 하나를 실행(invoke)하는 단계를 더 포함하는 방법.
  10. 제9항에 있어서,
    상기 우선순위 비트맵의 최상위 비트(MSB: Most Significant Bit)가 가장 높은 우선순위의 태스크를 나타내고 상기 우선순위 비트맵의 최하위 비트(LSB: Least Significant Bit)가 가장 낮은 우선순위의 태스크를 나타내도록, 상기 우선순위 비트맵을 반대의 순서로 나타내는 단계; 및
    태스크 스케줄러(task scheduler)가 싱글 사이클 인스트럭션(single cycle instruction)을 사용하여 상기 두 번째로 높은 우선순위의 값을 확인하는 단계를 더 포함하는 방법.
  11. 제1항에 있어서,
    하나 이상의 태스크들을 생성하고 초기화하는 단계; 및
    기본 통신 개체(DCE: Default Communication Entity)를 상기 하나 이상의 태스크들의 각각의 태스크에 할당하는 단계를 더 포함하는 방법.
  12. 제11항에 있어서,
    태스크가 자체적으로 포기할 때 상기 태스크가 태스크 콘텐트를 저장하지 않고서 종료하도록 허용하는 단계를 더 포함하는 방법.
  13. 실시간 운영 체제(RTOS: Real Time Operating System)를 위한 선점형 태스크 스케줄링(preemptive task scheduling)을 제공하는 장치에 있어서,
    메모리; 및
    상기 메모리에 연결되며,
    생성된 각각의 태스크(task)에 커널 우선순위(kernel priority)와 사용자 정의 우선순위(user-defined priority)를 포함하는 2-레벨 우선순위를 할당하고;
    상기 커널 우선순위에 대응하는 우선순위 비트맵(bitmap)을 생성하고;
    상기 우선순위 비트맵에서의 각각의 태스크의 상태를 나타내는 우선순위 비트를 활성화(enable)하도록 구성된 프로세서;를 포함하는 장치.
  14. 제13항에 있어서,
    상기 프로세서가 상기 우선순위 비트맵에서의 상기 우선순위 비트를 비활성화하도록 더 구성되며, 상기 우선순위 비트를 활성화하는 것이 상기 태스크가 실행할 준비가 된 것을 나타내고 상기 우선순위 비트를 비활성화하는 것이 상기 각각의 태스크가 보류된 것을 나타냄을 특징으로 하는 장치.
  15. 제13항에 있어서,
    상기 커널 우선순위는 기정의된 프로토콜을 통해 생성되는 각각의 태스크에 할당된 고유의 증분 번호임을 특징으로 하는 장치.
  16. 제13항에 있어서,
    상기 2-레벨 우선순위를 할당하는 것이,
    각각의 태스크에 고유의 커널 우선순위를 할당하는 것;
    상기 사용자 정의 우선순위의 값에 근거하여 하나 이상의 태스크들에 상기 커널 우선순위를 할당하는 것; 및
    태스크 생성 순서에 근거하여 동일한 사용자 정의 우선순위를 가지는 둘 이상의 태스크들에 커널 우선순위들을 할당하는 것 중 적어도 하나에 근거함을 특징으로 하는 장치.
  17. 제13항에 있어서,
    상기 프로세서가, 동일한 사용자 정의 우선순위를 가지는 둘 이상의 태스크들이 소정 시점에 실행할 준비가 된 경우 태스크 생성 순서에 근거하여 실행할 태스크들의 우선순위를 정하도록 더 구성됨을 특징으로 하는 장치.
  18. 제13항에 있어서,
    상기 프로세서가, 신호 비트인 제1 비트 및 태스크 우선순위 비트인 제2 비트를 포함하는 적어도 두 개의 비트들을 상기 우선순위 비트맵에서의 각각의 태스크에 할당하고; 상기 신호 비트 및 태스크 우선순위 비트의 할당에 근거하여 태스크들보다 이전에 신호들의 우선순위를 정하고; 상기 우선순위 비트맵에서의 두 번째로 높은 우선순위의 값에 근거하여 신호 처리기(signal handler) 및 재개 태스크(resume task) 중의 적어도 하나를 실행(invoke)하도록 더 구성됨을 특징으로 하는 장치.
  19. 제13항에 있어서,
    상기 프로세서가, 하나 이상의 태스크들을 생성하고 초기화하고; 기본 통신 개체(DCE: Default Communication Entity)를 상기 하나 이상의 태스크들의 각각의 태스크에 할당하도록 더 구성됨을 특징으로 하는 장치.
  20. 실시간 운영 체제(RTOS: Real Time Operating System)를 위한 선점형 태스크 스케줄링(preemptive task scheduling)을 제공하는 제품에 있어서,
    상기 제품이 하나 이상의 프로그램들을 포함하는 비일시적 머신 판독 가능 매체(non-transitory machine readable medium)를 포함하고,
    상기 하나 이상의 프로그램들이 실행되어,
    생성된 각각의 태스크(task)에 커널 우선순위(kernel priority)와 사용자 정의 우선순위(user-defined priority)를 포함하는 2-레벨 우선순위를 할당하는 단계;
    상기 커널 우선순위에 대응하는 우선순위 비트맵(bitmap)을 생성하는 단계; 및
    상기 우선순위 비트맵에서의 각각의 태스크의 상태를 나타내는 우선순위 비트를 활성화(enable)하는 단계를 수행함을 특징으로 하는 제품.
KR1020150048887A 2014-04-09 2015-04-07 실시간 운영 체제에서 선점형 태스크 스케줄링 방식을 제공하는 방법 및 장치 KR102338827B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201461977436P 2014-04-09 2014-04-09
US61/977,436 2014-04-09
KR20150021022 2015-02-11
KR1020150021022 2015-02-11

Publications (2)

Publication Number Publication Date
KR20150117221A true KR20150117221A (ko) 2015-10-19
KR102338827B1 KR102338827B1 (ko) 2021-12-14

Family

ID=54265152

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150048887A KR102338827B1 (ko) 2014-04-09 2015-04-07 실시간 운영 체제에서 선점형 태스크 스케줄링 방식을 제공하는 방법 및 장치

Country Status (2)

Country Link
US (1) US9606833B2 (ko)
KR (1) KR102338827B1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8775576B2 (en) 2012-04-17 2014-07-08 Nimbix, Inc. Reconfigurable cloud computing
US10142417B2 (en) 2012-04-17 2018-11-27 Nimbix, Inc. System and method for managing heterogeneous data for cloud computing applications
US9973566B2 (en) 2013-11-17 2018-05-15 Nimbix, Inc. Dynamic creation and execution of containerized applications in cloud computing
US10366013B2 (en) * 2016-01-15 2019-07-30 Futurewei Technologies, Inc. Caching structure for nested preemption
TWI587214B (zh) * 2016-04-21 2017-06-11 慧榮科技股份有限公司 資料儲存裝置、其控制單元及其任務排序方法
CN106250219B (zh) * 2016-07-27 2019-04-30 南京国电南自维美德自动化有限公司 基于智能化测时让度技术的保护平台优化调度方法
US10235207B2 (en) * 2016-09-30 2019-03-19 Nimbix, Inc. Method and system for preemptible coprocessing
IT201700034731A1 (it) * 2017-03-29 2018-09-29 St Microelectronics Srl Modulo e metodo di gestione dell'accesso ad una memoria
CN109522101B (zh) * 2017-09-20 2023-11-14 三星电子株式会社 用于调度多个操作***任务的方法、***和/或装置
WO2019203512A1 (en) * 2018-04-19 2019-10-24 Samsung Electronics Co., Ltd. Apparatus and method for deferral scheduling of tasks for operating system on multi-core processor
US10942768B2 (en) * 2018-08-29 2021-03-09 Red Hat, Inc. Computing task scheduling in a computer system utilizing efficient attributed priority queues
GB2578932B (en) * 2019-02-14 2021-02-24 Imagination Tech Ltd Allocation of memory
CN110231993A (zh) * 2019-06-19 2019-09-13 爱驰汽车有限公司 电池管理方法、装置、电子设备、存储介质
CN110489217A (zh) * 2019-07-11 2019-11-22 新华三大数据技术有限公司 一种任务调度方法及***
CN110737522B (zh) * 2019-10-16 2023-03-03 福州物联网开放实验室有限公司 一种嵌入式操作***的待机任务调度方法
CN111427696B (zh) * 2020-04-07 2023-03-14 上海飞旗网络技术股份有限公司 业务资源调度方法及装置
US11829807B2 (en) * 2020-05-15 2023-11-28 Samsung Electronics Co., Ltd. Method and apparatus for preventing task-signal deadlock due to contention for mutex in RTOS
CN111711566B (zh) * 2020-07-03 2021-07-27 西安电子科技大学 多路径路由场景下的接收端乱序重排方法
EP4204961A4 (en) * 2020-11-12 2023-10-04 Samsung Electronics Co., Ltd. METHOD AND APPARATUS FOR REAL-TIME TASK SCHEDULING FOR NON-PREVENTIVE SYSTEM

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360243B1 (en) * 1998-03-10 2002-03-19 Motorola, Inc. Method, device and article of manufacture for implementing a real-time task scheduling accelerator
US20030187905A1 (en) * 2002-04-01 2003-10-02 Ambilkar Shridhar N. Scheduling tasks quickly in a sequential order
US20110078691A1 (en) * 2009-09-30 2011-03-31 Microsoft Corporation Structured task hierarchy for a parallel runtime
KR20120067502A (ko) * 2010-12-16 2012-06-26 한국전자통신연구원 Osek 기반의 시간 결정 실시간 스케줄링 방법
KR20130050661A (ko) * 2011-11-08 2013-05-16 한국전자통신연구원 실시간 운영체제에서 태스크 스케줄링 방법

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5168566A (en) * 1983-11-25 1992-12-01 Sharp Kabushiki Kaisha Multi-task control device for central processor task execution control provided as a peripheral device and capable of prioritizing and timesharing the tasks
US5371887A (en) * 1989-09-05 1994-12-06 Matsushita Electric Industrial Co., Ltd. Time-shared multitask execution device
US5469571A (en) 1991-07-15 1995-11-21 Lynx Real-Time Systems, Inc. Operating system architecture using multiple priority light weight kernel task based interrupt handling
US5379428A (en) * 1993-02-01 1995-01-03 Belobox Systems, Inc. Hardware process scheduler and processor interrupter for parallel processing computer systems
US6324562B1 (en) * 1997-03-07 2001-11-27 Fujitsu Limited Information processing apparatus, multitask control method, and program recording medium
US5995997A (en) * 1997-05-02 1999-11-30 Microsoft Corporation Apparatus and methods for optimally allocating currently available computer resources to future task instances versus continued execution of current task instances
US6009452A (en) * 1997-05-02 1999-12-28 Microsoft Corporation Apparatus and methods for optimally using available computer resources for task execution during idle-time based on probabilistic assessment of future task instances
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
JP4072271B2 (ja) * 1999-02-19 2008-04-09 株式会社日立製作所 複数のオペレーティングシステムを実行する計算機
KR100727901B1 (ko) 1999-07-10 2007-06-14 삼성전자주식회사 마이크로 스케듈링 방법 및 운영체제 커널 장치
US7349958B2 (en) * 2003-06-25 2008-03-25 International Business Machines Corporation Method for improving performance in a computer storage system by regulating resource requests from clients
JP4112511B2 (ja) * 2004-02-17 2008-07-02 富士通株式会社 タスク管理プログラムおよびタスク管理装置
US7370326B2 (en) * 2004-04-02 2008-05-06 Emulex Design & Manufacturing Corporation Prerequisite-based scheduler
US8166483B2 (en) * 2004-08-06 2012-04-24 Rabih Chrabieh Method and apparatus for implementing priority management of computer operations
US8145760B2 (en) * 2006-07-24 2012-03-27 Northwestern University Methods and systems for automatic inference and adaptation of virtualized computing environments
JP4941034B2 (ja) * 2007-03-20 2012-05-30 富士通株式会社 アクセス制御装置およびアクセス制御方法
US8627330B2 (en) * 2008-01-03 2014-01-07 Hewlett-Packard Development Company, L.P. Workload manager managing a workload of an enterprise data warehouse
US8392924B2 (en) * 2008-04-03 2013-03-05 Sharp Laboratories Of America, Inc. Custom scheduling and control of a multifunction printer
TWI409701B (zh) * 2010-09-02 2013-09-21 Univ Nat Central Execute the requirements registration and scheduling method
KR101694287B1 (ko) * 2013-05-23 2017-01-23 한국전자통신연구원 스트림 처리 태스크 관리 장치 및 방법
KR101541156B1 (ko) * 2013-11-13 2015-08-03 한국전자통신연구원 다차원 기법의 시공간 결정적 태스크 스케줄링 장치 및 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360243B1 (en) * 1998-03-10 2002-03-19 Motorola, Inc. Method, device and article of manufacture for implementing a real-time task scheduling accelerator
US20030187905A1 (en) * 2002-04-01 2003-10-02 Ambilkar Shridhar N. Scheduling tasks quickly in a sequential order
US20110078691A1 (en) * 2009-09-30 2011-03-31 Microsoft Corporation Structured task hierarchy for a parallel runtime
KR20120067502A (ko) * 2010-12-16 2012-06-26 한국전자통신연구원 Osek 기반의 시간 결정 실시간 스케줄링 방법
KR20130050661A (ko) * 2011-11-08 2013-05-16 한국전자통신연구원 실시간 운영체제에서 태스크 스케줄링 방법

Also Published As

Publication number Publication date
US20150293793A1 (en) 2015-10-15
KR102338827B1 (ko) 2021-12-14
US9606833B2 (en) 2017-03-28

Similar Documents

Publication Publication Date Title
KR102338827B1 (ko) 실시간 운영 체제에서 선점형 태스크 스케줄링 방식을 제공하는 방법 및 장치
US10452572B2 (en) Automatic system service resource management for virtualizing low-latency workloads that are input/output intensive
US9563474B2 (en) Methods for managing threads within an application and devices thereof
CN108694089B (zh) 使用非贪婪调度算法的并行计算架构
US7774781B2 (en) Storage subsystem access prioritization by system process and foreground application identification
US10248463B2 (en) Apparatus and method for managing a plurality of threads in an operating system
US10341264B2 (en) Technologies for scalable packet reception and transmission
US10248456B2 (en) Method and system for providing stack memory management in real-time operating systems
US20060107261A1 (en) Providing Optimal Number of Threads to Applications Performing Multi-tasking Using Threads
US10037225B2 (en) Method and system for scheduling computing
US20150100964A1 (en) Apparatus and method for managing migration of tasks between cores based on scheduling policy
CN111913809A (zh) 多线程场景下的任务执行方法、装置、设备和存储介质
CN111597044A (zh) 任务调度方法、装置、存储介质及电子设备
US9229716B2 (en) Time-based task priority boost management using boost register values
US8875144B2 (en) Using a yield indicator in a hierarchical scheduler
CN115168040A (zh) 一种作业抢占调度方法、装置、设备和存储介质
WO2014027444A1 (ja) スケジューリング装置、及び、スケジューリング方法
CN111433738A (zh) 控制器事件队列
KR20150089665A (ko) 워크플로우 작업 스케줄링 장치
US9705985B1 (en) Systems and methods for cross protocol automatic sub-operation scheduling
US10503557B2 (en) Method of processing OpenCL kernel and computing device therefor
US9632834B2 (en) Assigning priorities to computational work streams by mapping desired execution priorities to device priorities
US10073723B2 (en) Dynamic range-based messaging
US10977046B2 (en) Indirection-based process management
CN116893893B (zh) 一种虚拟机调度方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant