KR101335083B1 - 델타 시간 기반의 컴포넌트 스케줄링 방법 및 장치 - Google Patents

델타 시간 기반의 컴포넌트 스케줄링 방법 및 장치 Download PDF

Info

Publication number
KR101335083B1
KR101335083B1 KR1020110085894A KR20110085894A KR101335083B1 KR 101335083 B1 KR101335083 B1 KR 101335083B1 KR 1020110085894 A KR1020110085894 A KR 1020110085894A KR 20110085894 A KR20110085894 A KR 20110085894A KR 101335083 B1 KR101335083 B1 KR 101335083B1
Authority
KR
South Korea
Prior art keywords
component
queue
time
execution
delta time
Prior art date
Application number
KR1020110085894A
Other languages
English (en)
Other versions
KR20130025000A (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 강원대학교산학협력단
Priority to KR1020110085894A priority Critical patent/KR101335083B1/ko
Priority to US13/430,549 priority patent/US8924976B2/en
Publication of KR20130025000A publication Critical patent/KR20130025000A/ko
Application granted granted Critical
Publication of KR101335083B1 publication Critical patent/KR101335083B1/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

컴포넌트 스케쥴링 방법 및 장치가 개시된다. 본 발명의 일실시예에 따른 컴포넌트 스케쥴링 방법은, 시간 주기(time period) 및 선행 관계(precedence relation)로 식별된 복수의 컴포넌트들을 수신하는 단계, 상기 주기를 이용하여 상기 복수의 컴포넌트들 각각의 델타 시간을 계산하는 단계, 상기 델타 시간과 선행 관계에 기초한 우선 순위를 이용하여 상기 복수의 컴포넌트들을 실행 큐에 할당하는 단계, 및 상기 실행 큐에 할당된 컴포넌트를 실행하는 단계를 포함할 수 있다.

Description

델타 시간 기반의 컴포넌트 스케줄링 방법 및 장치{MEHTOD AND APPARATUS FOR COMPONENT SCHEDULING BASED DELTA TIME}
델타 시간 기반의 컴포넌트 스케쥴링 방법 및 장치가 개시된다. 특히, 주기적 로봇 소프트웨어에서 컴포넌트를 스케쥴링하는 방법 및 장치가 개시된다.
로봇 소프트웨어 컴포넌트(robot software component)는 순수 S/W로 이루어진 컴포넌트와 H/W와 연동된 컴포넌트로 나눌 수 있고, 이러한 컴포넌트를 통하여 로봇을 제어한다. 로봇 시스템에서, 컴포넌트(component)는 주기적이거나 또는 실시간으로 실행될 필요가 있다. 여기서, 컴포넌트는, 소프트웨어 모듈로 표현할 수도 있다.
일반적으로, 주기적으로 작업을 처리하는 실시간 어플리케이션은 오버헤드 감소, 시간의 정확성, 지터(jitter) 감소, 및 선행 제약(precedence constraint)의 충족을 어떻게 해결할지에 대한 문제를 가지고 있다. 이러한 문제를 해결하기 위해 실시간 운영체제(real-time OS)를 이용하는 경우, 비용이 매우 비싸다.
예를 들어, 비율 단조 정적 스케쥴링(Rate Monotonic Static Scheduling)은 모든 작업(task)들이 동일한 우선 순위로 고려되기 때문에 오버헤드가 증가하는 문제가 존재한다.
그리고, 최단 마감 우선 스케쥴링(Earliest Deadline First: EDF)은, 동적 스케쥴링으로서, 큐에서 마감 시간(deadline)이 가장 가까운 작업(task) 순으로 실행되도록 한다. 이때, 최단 마감 우선 스케쥴링은 작업의 마감 시간을 예측하는 것이 어렵기 때문에 데이터에 민감한 어플리케이션(application)에서 정확하게 수행되지 못하는 어려움이 존재한다.
그리고, FCFS(First-Come First-Served) 스케쥴링은 큐에 먼저 들어온 작업(task)을 우선 처리하는 방식이다. 이에 따라, 우선 순위가 높은 작업이 큐에 늦게 들어온 경우, 우선 순위가 높은 작업이 늦게 처리되어 마감 시간까지 작업이 처리되지 못하게 되어, 로봇 시스템의 성능이 저하된다.
이에 따라, 로봇 시스템의 단가, 오버헤드, 지터, 및 선행 관계를 고려하여 실시간으로 컴포넌트를 스케쥴링할 수 있는 기술이 필요하다.
본 발명은 로봇 소프트웨어 플랫폼인 OPRoS(Open Platform for Robotic Services)에서, 오버헤드 및 지터를 감소 시키고, 시간의 정확도를 높여서 로봇 시스템의 성능을 향상시킬 수 있는 컴포넌트 스케쥴링 방법 및 장치를 제공한다.
또한, 본 발명은, 윈도우 XP 등과 같이 퍼스널 컴퓨터, 노트북 등에서 일반적으로 사용하는 운영체제를 이용하더라도 실시간으로 동적 스케쥴링이 가능한 컴포넌트 스케쥴링 방법 및 장치를 제공한다.
본 발명의 일실시예에 따른 컴포넌트 스케쥴링 방법은, 시간 주기(time period) 및 선행 관계(precedence relation)로 식별된 복수의 컴포넌트들을 수신하는 단계, 상기 시간 주기를 이용하여 상기 복수의 컴포넌트들 각각의 델타 시간을 계산하는 단계, 상기 델타 시간과 선행 관계에 기초한 우선 순위를 이용하여 상기 복수의 컴포넌트들을 실행 큐에 할당하는 단계, 및 상기 실행 큐에 할당된 컴포넌트를 실행하는 단계를 포함할 수 있다.
또한, 상기 실행 큐를 통해 실행이 완료된 컴포넌트를 종료 큐에 할당하는 단계, 상기 종료 큐에 할당된 컴포넌트의 주기와 상기 실행 큐에 할당된 컴포넌트의 델타 시간을 비교하는 단계, 및 비교 결과에 따라, 상기 종료 큐에 할당된 컴포넌트를 상기 실행 큐에 재할당하는 단계를 더 포함할 수 있다.
또한, 상기 실행 큐에 재할당하는 단계는, 상기 종료 큐에 할당된 컴포넌트 중 상기 실행 큐에 할당된 컴포넌트의 델타 시간보다 같거나 작은 시간 주기를 가진 컴포넌트를 상기 실행 큐에 재할당할 수 있다.
또한, 상기 비교하는 단계는, 상기 종료 큐에 할당된 컴포넌트들의 우선 순위에 기초하여 상기 종료 큐에 할당된 컴포넌트의 주기와 상기 실행 큐에 할당된 컴포넌트의 델타 시간을 비교할 수 있다.
또한, 상기 컴포넌트를 실행하는 단계는, 상기 델타 시간에 기초하여 상기 컴포넌트를 미리 설정된 시간 슬롯 동안 실행될 수 있다.
또한, 상기 컴포넌트를 실행하는 단계는, 상기 선행 관계에 기초한 우선 순위 기초하여 상기 컴포넌트를 실행할 수 있다.
또한, 상기 델타 시간을 계산하는 단계는, 현재 순위에 대응하는 컴포넌트의 시간 주기와 이전 순위에 대응하는 컴포넌트의 델타 시간에 기초하여 현재 순위에 대응하는 컴포넌트의 델타 시간을 계산할 수 있다.
본 발명의 일실시예에 따른 컴포넌트 스케쥴링 장치는, 시간 주기(time period) 및 선행 관계(precedence relation)로 식별된 복수의 컴포넌트들을 수신하는 컴포넌트 수신부, 상기 시간 주기를 이용하여 상기 복수의 컴포넌트들 각각의 델타 시간을 계산하는 델타 시간 계산부, 상기 델타 시간과 선행 관계에 기초한 우선 순위를 이용하여 상기 복수의 컴포넌트들을 실행 큐에 할당하는 컴포넌트 할당부, 및 상기 실행 큐에 할당된 컴포넌트를 실행하는 컴포넌트 실행부를 포함할 수 있다.
또한, 상기 종료 큐에 할당된 컴포넌트의 주기와 상기 실행 큐에 할당된 컴포넌트의 델타 시간을 비교하고, 비교 결과에 따라, 상기 종료 큐에 할당된 컴포넌트를 상기 실행 큐에 재할당하는 컴포넌트 재할당부를 더 포함할 수 있다.
본 발명의 일실시예에 따른 컴포넌트 스케쥴링 제공 방법 및 장치는, 로봇 소프트웨어 플랫폼인 OPRoS(Open Platform for Robotic Services)에서, 오버헤드 및 지터를 감소 시키고, 시간의 정확도를 높여서 로봇 시스템의 성능을 향상시킬 수 있다.
또한, 윈도우 XP 등과 같이 퍼스널 컴퓨터, 노트북 등에서 일반적으로 사용하는 운영체제를 이용하더라도 컴포넌트를 실시간으로 동적 스케쥴링할 수 있음에 따라, 로봇 시스템의 제작 비용을 낮출 수 있다.
도 1은 본 발명의 일실시예에 따른 컴포넌트 스케쥴링 장치에서 수행하는 컴포넌트 스케쥴링 방법을 설명하기 위해 제공되는 흐름도이다.
도 2는 본 발명의 일실시예에 따른 컴포넌트 스케쥴링 장치에서 실행 큐에 컴포넌트를 할당하는 동작을 설명하기 위해 제공되는 블록도이다.
도 3은 본 발명의 일실시예에 따른 컴포넌트 스케쥴링 장치에서 컴포넌트를 실행 큐에 재할당하는 동작을 설명하기 위해 제공되는 흐름도이다.
도 4는 본 발명의 일실시예에 따른 컴포넌트 스케쥴링 장치에서 델타 시간에 기초하여 컴포넌트를 스케쥴링하는 동작을 설명하기 위해 제공되는 도면이다.
도 5는 본 발명의 일실시예에 따른 컴포넌트 스케쥴링 장치의 구성을 도시한 블록도이다.
이하에서는 첨부된 도면을 참조하여, 본 발명의 실시예를 설명하기로 한다.
도 1은 본 발명의 일실시예에 따른 컴포넌트 스케쥴링 장치에서 수행하는 컴포넌트 스케쥴링 방법을 설명하기 위해 제공되는 흐름도이다.
도 1을 참조하면, 101 단계에서, 컴포넌트 스케쥴링 장치는 시간 주기(time period) 및 선행 관계(precedence relation)로 식별된 복수의 컴포넌트들을 수신할 수 있다.
일례로, 컴포넌트 스케쥴링 장치는, 컴포넌트 리스트를 수신할 수 있다. 여기서, 컴포넌트 리스트는 복수의 컴포넌트들을 포함하며, 각 컴포넌트의 시간 주기와 각 컴포넌트의 선행 관계를 포함할 수 있다.
여기서, 선행 관계는, 컴포넌트들 간에 시간적으로 어떤 컴포넌트가 이전에 처리되어야 하는지 여부를 나타내는 정보이다. 그러면, 컴포넌트 스케쥴링 장치는 각 컴포넌트의 선행 관계에 기초하여 각 컴포넌트의 우선 순위를 결정할 수 있다.
예를 들어, 컴포넌트 1의 선행 관계는 컴포넌트 3을 포함, 컴포넌트 2의 선행 관계는, 컴포넌트 3 및 4를 포함, 컴포넌트 4의 선행 관계는 컴포넌트 3을 포함할 수 있다. 다시 말해, 컴포넌트 스케쥴링 장치는 각 컴포넌트의 선행 관계에 기초하여 컴포넌트 1 이전에 컴포넌트 3이 수행되어야 하고, 컴포넌트 2 이전에 컴포넌트 3 및 4가 수행되어야 하고, 컴포넌트 4 이전에 컴포넌트 3이 수행되어야 함을 확인할 수 있다. 이에 따라, 컴포넌트 스케쥴링 장치는, 컴포넌트의 우선 순위를 컴포넌트 3이 가장 높고, 다음으로 컴포넌트 4, 컴포넌트 2가 높고, 컴포넌트 1 이 가장 낮은 것으로 결정할 수 있다. 그러면, 컴포넌트 스케쥴링 장치는, 컴포넌트들을 우선 순위에 따라 정렬할 수 있다. 예를 들어, 컴포넌트 스케쥴링 장치는 컴포넌트들을 내림차순 또는 오름차순으로 정렬할 수 있다.
그리고, 102 단계에서, 컴포넌트 스케쥴링 장치는 각 컴포넌트의 델타 시간을 계산할 수 있다. 이때, 컴포넌트 스케쥴링 장치는, 각 컴포넌트의 시간 주기를 이용하여 각 컴포넌트의 델타 시간을 계산할 수 있다. 여기서, 델타 시간은 컴포넌트의 마감 시간(deadline)까지 컴포넌트의 실행 시간을 의미하며, 컴포넌트의 마감 시간은, 컴포넌트의 시간 주기의 끝(end of time period)를 의미한다. 예를 들어, 컴포넌트 1의 시간 주기가 50ms인 경우, 컴포넌트 1은 50ms 마다 실행되어야 하므로, 컴포넌트 1의 마감 시간은 50ms가 될 수 있다.
일례로, 컴포넌트 스케쥴링 장치는, 아래의 수학식 1에 따라, 현재 순위에 대응하는 컴포넌트의 시간 주기, 그리고 이전 순위에 대응하는 컴포넌트의 델타 시간에 기초하여 현재 순위에 대응하는 컴포넌트의 델타 시간을 계산할 수 있다. 여기서, 현재 순위에 대응하는 컴포넌트는 델타 시간을 계산하고자 하는 대상이 되는 컴포넌트이고, 이전 순위에 대응하는 컴포넌트는, 시간 주기와 선행 관계에 기초하여 현재 순위에 대응하는 컴포넌트 이전에 실행됐거나 또는 이전에 실행되어야 컴포넌트를 의미할 수 있다.
Figure 112011066644653-pat00001
수학식 1에서, 현재 순위에 대응하는 컴포넌트가 k인 경우, Pk는 현재 순위에 대응하는 컴포넌트의 시간 주기, △ i 는 이전 순위에 대응하는 컴포넌트의 델타 시간이다. 수학식 1에 따르면, 컴포넌트 스케쥴링 장치는, 현재 순위에 대응하는 컴포넌트의 시간 주기에서 이전 순위에 대응하는 컴포넌트의 델타 시간의 합을 감산하여 현재 순위에 대응하는 컴포넌트의 델타 시간을 계산할 수 있다.
예를 들어, 컴포넌트 1의 시간 주기는 50ms이고, 컴포넌트 2의 시간 주기는 100ms인 경우, 컴포넌트 스케쥴링 장치는, 컴포넌트 1의 시간 주기 50ms에서 이전 컴포넌트의 델타 시간의 합 0을 감산하여 컴포넌트 1의 델타 시간 50ms을 계산할 수 있다. 여기서, 컴포넌트 1은 시작 컴포넌트로서, 컴포넌트 1 이전에 어떤 컴포넌트도 존재하지 않으므로, 컴포넌트 1의 이전 순위에 대응하는 컴포넌트의 델타 시간의 합은 0이 될 수 있다.
그리고, 컴포넌트 스케쥴링 장치는, 컴포넌트 2의 시간 주기 100ms에서 이전 순위에 대응하는 컴포넌트의 델타 시간의 합인 50ms를 감산하여 컴포넌트 2의 델타 시간 50ms을 계산할 수 있다. 여기서, 컴포넌트 2를 기준으로 이전 순위에 대응하는 컴포넌트는 컴포넌트 1 하나만 존재하므로, 이전 순위에 대응하는 컴포넌트의 델타 시간의 합은 컴포넌트 1의 델타 시간이 될 수 있다.
이때, 각 컴포넌트의 델타 시간을 계산한 경우, 컴포넌트 스케쥴링 장치는, 컴포넌트 리스트에 포함된 복수의 컴포넌트들 중 시간 주기가 동일한 컴포넌트들을 선택할 수 있다. 그리고, 선택된 컴포넌트들을 하나의 실행기(executor)에 할당할 수 있다. 다시 말해, 컴포넌트 스케쥴링 장치는, 선택된 컴포넌트들을 하나의 컴포넌트 세트(component set)로 묶어서 하나의 실행기를 이용하여 처리할 수 있다.
그리고, 103 단계에서, 컴포넌트 스케쥴링 장치는, 각 컴포넌트의 델타 시간과 선행 관계에 기초한 우선 순위를 이용하여 복수의 컴포넌트들을 실행 큐(execution queue)에 할당할 수 있다.
이어, 104 단계에서, 컴포넌트 스케쥴링 장치는, 실행 큐에 할당된 컴포넌트들을 모두 실행할 수 있다. 이때, 컴포넌트 스케쥴링 장치는, 델타 시간에 기초하여 컴포넌트를 미리 설정된 시간 슬롯 동안 실행할 수 있다. 여기서, 시간 슬롯은 컴포넌트가 마감 시간까지 실행되는 시간을 구분한 시간 구간이다.
예를 들어, 컴포넌트 1의 델타 시간이 50ms이고, 시간 슬롯 0ms에서 컴포넌트 1의 실행이 시작된 경우, 컴포넌트 스케쥴링 장치는, 시간이 경과하여 시간 슬롯이 델타 시간 50ms가 될 때까지 컴포넌트 1을 실행할 수 있다. 이때, 컴포넌트 1의 시간 주기가 50ms인 경우, 시간 슬롯이 델타 시간 50ms가 됨에 따라 컴포넌트 1의 실행이 완료될 수 있다. 그러면, 컴포넌트 스케쥴링 장치는, 실행이 완료된 컴포넌트를 종료 큐(finish queue)에 할당할 수 있다.
도 2는 본 발명의 일실시예에 따른 컴포넌트 스케쥴링 장치에서 실행 큐에 컴포넌트를 할당하는 동작을 설명하기 위해 제공되는 블록도이다.
도 2에 따르면, 컴포넌트 스케쥴링 장치는, 델타 시간이 계산된 각 컴포넌트(201)를 실행 큐(202)에 할당할 수 있다. 이때, 컴포넌트 스케쥴링 장치는 각 컴포넌트의 우선 순위와 델타 시간에 기초하여 각 컴포넌트(201)를 실행 큐(202)에 할당할 수 있다.
그리고, 컴포넌트 스케쥴링 장치는, 실행 큐(202)에 할당된 컴포넌트들을 실행할 수 있다(203). 이때, 컴포넌트 스케쥴링 장치는, 실행 큐(202)를 통해 실행이 완료된 하나 이상의 컴포넌트를 종료 큐(204)에 재할당할 수 있다. 예를 들어, 컴포넌트 스케쥴링 장치는, 종료 큐(204)에 할당된 컴포넌트의 주기와 델타 시간을 비교하여 종료 큐(204)에 할당된 컴포넌트를 실행 큐(202)에 재할당할 수 있다.
일례로, 도 4를 참고하면, 컴포넌트 1(c1)의 주기는 50ms, 컴포넌트 2(c2)의 주기는 50ms, 컴포넌트 3(c3)의 주기는 100ms, 컴포넌트 4(c4)의 주기는 250ms이고, 각 컴포넌트의 우선 순위가 c1 -> c2 -> c3 -> c4인 경우, 컴포넌트 스케쥴링 장치는 위의 수학식 1을 이용하여 c1의 델타 시간을 50ms, c2의 델타 시간을 50ms, c3의 델타 시간을 50ms, c4의 델타 시간을 150ms로 계산할 수 있다.
그리고, 컴포넌트 스케쥴링 장치는, 델타 시간이 작은 순으로 실행 큐(402)의 가로 방향에 컴포넌트를 배치하고, 우선 순위가 높은 순으로 실행 큐(402)의 세로 방향에 컴포넌트를 배치할 수 있다. 이때, 컴포넌트 스케쥴링 장치는, c1(403)과 c2(404)는 50ms로 시간 주기가 동일하므로 컴포넌트 세트로 구성하여 하나의 실행기(executor)에 할당할 수 있다. 예를 들어, 컴포넌트 스케쥴링 장치는, 델타 시간을 고려하여 실행 큐(402)의 가로 방향에 c2, c2 -> c3 -> c4 순으로 컴포넌트를 배치할 수 있다. 그리고, 컴포넌트 스케쥴링 장치는, 컴포넌트의 우선 순위를 고려하여 우선 순위가 높은 c1 -> c2 순으로 실행 큐(402)의 세로 방향에 배치할 수 있다.
그러면, 컴포넌트 스케쥴링 장치는, 실행 큐(402)에 할당된 모든 컴포넌트들을 실행할 수 있다. 이때, 컴포넌트 스케쥴링 장치는, 시간 슬롯이 0ms(401)를 가리킬 때 c1(403), c2(404), c3(405), c4(406)의 실행이 시작하고, 실행이 시작된 이후 시간이 경과하여 시간 슬롯이 현재 컴포넌트인 c1(403) 및 c2(404)의 델타 시간 50ms가 될 때까지 c1(403), c2(404), c3(405), c4(406)를 실행할 수 있다. 이때, 시간 슬롯이 50ms가 되면, 시간 주기가 50ms에 해당하는 c1(403), c2(404)는 실행이 완료될 수 있다.
그러면, 시간 슬롯이 50ms(407)인 경우, 컴포넌트 스케쥴링 장치는, 실행이 완료된 c1(410), c2(411)를 종료 큐(409)에 할당할 수 있다. 다시 말해, 컴포넌트 스케쥴링 장치는, 시간 슬롯이 0ms(401)에서 실행 큐(402)에 위치하는 c1(403) 및 c2(404)를 시간 슬롯이 50ms(407)가 됨에 따라 종료 큐(409)로 이동시킬 수 있다.
그리고, 컴포넌트 스케쥴링 장치는, 종료 큐에 할당된 컴포넌트의 주기와 델타 시간을 비교하여 종료 큐에 할당된 컴포넌트를 실행 큐에 재할당할 수 있다. 이어, 컴포넌트 스케쥴링 장치는, 실행 큐에 재할당된 컴포넌트들을 실행할 수 있다. 그리고, 컴포넌트 스케쥴링 장치는, 실행이 완료된 하나 이상의 컴포넌트를 종료 큐에 할당하고, 다시 종료 큐에 할당된 컴포넌트를 실행 큐에 재할당하는 과정을 반복할 수 있다. 이하에서는 도 3을 참고하여, 컴포넌트를 실행 큐에 재할당하는 과정을 상세히 설명하기로 한다.
도 3은 본 발명의 일실시예에 따른 컴포넌트 스케쥴링 장치에서 컴포넌트를 실행큐에 재할당하는 동작을 설명하기 위해 제공되는 흐름도이다.
먼저, 301 단계에서, 컴포넌트 스케쥴링 장치는 실행 큐(execution queue)를 통해 실행이 완료된 하나 이상의 컴포넌트를 종료 큐(finish queue)에 할당할 수 있다.
이어, 컴포넌트 스케쥴링 장치는, 종료 큐에 할당된 컴포넌트의 델타 시간을 비교할 수 있다.
일례로, 도 4를 참고하면, 시간 슬롯(time slot)이 50ms인 경우, 컴포넌트 스케쥴링 장치는, 실행이 완료된 c1(410) 및 c2(411)를 종료 큐(409)에 할당할 수 있다. 그리고, 컴포넌트 스케쥴링 장치는, 종료 큐(409)에 할당된 c2(411)의 시간 주기와 실행 큐(408)에 남아있는 c3(413)의 델타 시간을 비교할 수 있다. 이때, 컴포넌트 스케쥴링 장치는, 종료 큐에 할당된 컴포넌트들의 우선 순위에 기초하여 종료 큐에 할당된 컴포넌트의 시간 주기와 실행 큐에 할당된 컴포넌트의 델타 시간을 비교할 수 있다. 예를 들어, 컴포넌트 스케쥴링 장치는, 종류 큐(409)에 할당된 모든 컴포넌트를 대상으로, 실행 큐(408)의 맨 앞에 위치하는 컴포넌트 c3(413)의 델타 시간과 종료 큐(409)의 마지막에 위치하는 컴포넌트 c2(11)의 시간 주기를 비교할 수 있다.
그리고, 303 단계에서, 컴포넌트 스케쥴링 장치는, 종료 큐에 할당된 컴포넌트의 시간 주기와 실행 큐에 할당된 컴포넌트의 델타 시간을 비교한 결과에 기초하여 종료 큐에 할당된 컴포넌트를 실행 큐에 재할당할 수 있다. 이때, 컴포넌트 스케쥴링 장치는, 종료 큐에 할당된 컴포넌트 중 실행 큐에 할당된 컴포넌트의 델타 시간보다 작거나 같은 주기를 가진 컴포넌트를 실행 큐에 재할당할 수 있다.
예를 들어, c2(411)의 시간 주기가 c3(413)의 델타 시간보다 작거나 같은 경우, 컴포넌트 스케쥴링 장치는, 종료 큐(409)에 할당된 c2(411)를 실행 큐(408)에 재할당할 수 있다. 마찬가지로, c1(410)의 시간 주기가 c3(413)의 델타 시간보다 작거나 같은 경우, 컴포넌트 스케쥴링 장치는, 종료 큐(409)에 할당된 c1(410)을 실행 큐(408)에 재할당할 수 있다. 그러면, 실행 큐(408)의 맨 앞에는 c1(410), c2(411), 및 c3(413)가 위치할 수 있다.
이어, 304 단계에서, 컴포넌트 스케쥴링 장치는, 실행 큐에 재할당된 컴포넌트를 미리 설정된 시간 슬롯 동안 실행할 수 있다.
예를 들어, 도 4를 참고하면, 시간 슬롯이 50ms인 경우, 컴포넌트 스케쥴링 장치는, 실행 큐(408)의 맨 앞에 해당하는 c1(410), c2(411), c3(413)의 마감 시간인 50ms 동안 실행 큐(408)에 할당된 모든 컴포넌트들 c1(410), c2(411), c3(413), c4(414)를 실행할 수 있다. 다시 말해, 컴포넌트 스케쥴링 장치는 시간 슬롯이 50ms에서 100ms가 될 때까지 c1(410), c2(411), c3(413), c4(414)를 실행할 수 있다
도 3에서 설명한 바와 같이, 컴포넌트 스케쥴링 장치는, 실행 큐를 통해 실행이 완료된 컴포넌트를 종료 큐에 할당하고, 종료 큐에 할당된 컴포넌트를 실행 큐에 재할당하여 실행 큐에 할당된 컴포넌트들을 실행하는 동작을 계속 반복할 수 있다.
이때, 도 4를 참고하면, 시간 슬롯이 100ms(415)이고, 실행 큐(416)에 c4(421)가 남아 있고, 종료 큐(417)에 c1(418), c2(419), 및 c3(420)가 남아 있는 경우, 컴포넌트 스케쥴링 장치는, 종료 큐(417)에 할당된 마지막 컴포넌트 c3(420)의 시간 주기 100ms와 실행 큐(421)의 맨 앞에 위치하는 컴포넌트 c4(421)의 델타 시간 150ms을 비교할 수 있다. 그리고, c3(420)의 시간 주기 100ms가 c4(421)의 델타 시간 150ms보다 작거나 같은 경우, 컴포넌트 스케쥴링 장치는, c3(420)를 실행 큐에 재할당할 수 있다. 이때, 실행 큐의 맨 앞에 위치하는 c4(421)의 남아 있는 잔여 델타 시간 150ms이 c3(420)의 시간 주기 100ms보다 큰 경우, 컴포넌트 스케쥴링 장치는, 실행 큐의 맨 앞에 c3(420)를 배치할 수 있다.
이어, 컴포넌트 스케쥴링 장치는, 위의 수학식 1에 기초하여 c3(420)의 델타 시간을 재계산할 수 있다. 예를 들어, c3의 이전 순위에 해당하는 컴포넌트가 없기 때문에, 컴포넌트 스케쥴링 장치는, c3(420)의 델타 시간을 100ms로 재계산할 수 있다. 그리고, 컴포넌트 스케쥴링 장치는, c1(418), c2(419)의 시간 주기와 실행 큐의 맨 앞에 위치하는 c3(420)의 델타 시간을 비교하고, 비교 결과에 따라 c1(418), c2(419)를 실행 큐에 재할당할 수 있다. 이때, 실행 큐의 맨 앞에 위치하는 c3(420)의 델타 시간 100ms이 c1(418)의 시간 주기 50ms, c2(419)의 시간 주기 50ms보다 큰 경우, 컴포넌트 스케쥴링 장치는, c1(418), c2(419)를 실행 큐의 맨 앞에 배치할 수 있다. 이처럼, 컴포넌트 스케쥴링 장치는, 종료 큐에 할당된 컴포넌트를 실행 큐에 재할당하면서, 실행 큐에 남아 있는 컴포넌트와 재할당된 컴포넌트의 위치를 재배치할 수 있다.
그리고, 시간 슬롯이 150ms(422)가 된 경우, 컴포넌트 스케쥴링 장치는, 실행이 완료된 컴포넌트 c1(425)과 c2(426)를 종료 큐(424)에 할당하고, 종료 큐에 할당된 컴포넌트를 다시 실행 큐에 재할당할 수 있다. 이때, 재할당된 컴포넌트 c1(425)과 c2(426)의 시간 주기와 실행 큐의 맨 앞에 위치하는 컴포넌트 c3(427)의 남아 있는 잔여 델타 시간이 50ms로 동일하므로, 컴포넌트 스케쥴링 장치는, c1(425), c2(426), c3(427)를 우선 순위에 기초하여 실행 큐의 맨 앞에 배치할 수 있다.
이처럼, 컴포넌트 스케쥴링 장치는, 실행 큐에 할당된 컴포넌트를 시간 슬롯 동안 실행 및 컴포넌트를 실행 큐에 재할당하고, 재할당된 컴포넌트를 다음 시간 슬롯 동안 실행하는 과정에서, 컴포넌트를 재할당할 때마다 실행 큐에 할당된 컴포넌트의 델타 시간을 재계산하고, 델타 시간과 우선 순위에 기초하여 실행 큐 내에서 컴포넌트의 위치를 재배열할 수 있다. 다시 말해, 컴포넌트 스케쥴링 장치는, 컴포넌트를 실행 큐에 재할당할 때마다 컴포넌트를 동적으로 스케쥴링할 수 있다.
도 5는 본 발명의 일실시예에 따른 컴포넌트 스케쥴링 장치의 구성을 도시한 블록도이다.
도 5에 따르면, 컴포넌트 스케쥴링 장치(500)는, 컴포넌트 수신부(501), 델타 시간 계산부(502), 컴포넌트 할당부(503), 컴포넌트 실행부(504) 및 컴포넌트 재할당부(505)를 포함할 수 있다.
먼저, 컴포넌트 수신부(501)는 시간 주기 및 선행 관계로 식별된 복수의 컴포넌트들을 수신할 수 있다. 여기서, 컴포넌트(component)는 로봇 시스템에서의 소프트웨어 모듈로서, 로봇 시스템에서 실행되는 작업(task)을 포함할 수 있다.
일례로, 컴포넌트 수신부(501)는 컴포넌트 리스트를 수신할 수 있다. 여기서, 컴포넌트 리스트는, 실행하고자 하는 복수의 컴포넌트, 각 컴포넌트의 시간 주기, 및 각 컴포넌트의 선행 관계를 포함할 수 있다. 여기서, 선행 관계는 복수의 컴포넌트 중 어떤 컴포넌트가 먼저 실행되어야 하는지를 나타내는 시간 순서로서, 바로 앞에 실행되어야 하는 컴포넌트에 대한 정보를 포함할 수 있다.
이때, 컴포넌트 수신부(501)는 각 컴포넌트의 선행 관계에 기초하여 컴포넌트 리스트에 포함된 복수의 컴포넌트들 각각의 우선 순위를 결정할 수 있다.
그리고, 델타 시간 계산부(502)는 각 컴포넌트의 시간 주기를 이용하여 복수의 컴포넌트들 각각의 델타 시간을 계산할 수 있다.
이때, 위의 수학식 1에 따라, 델타 시간 계산부(502)는 현재 순위에 대응하는 컴포넌트의 주기와 이전 순위에 대응하는 컴포넌트의 델타 시간에 기초하여 현재 순위에 대응하는 컴포넌트의 델타 시간을 계산할 수 있다.
그리고, 컴포넌트 할당부(503)는 델타 시간과 우선 순위에 기초하여 복수의 컴포넌트들을 실행 큐(execution queue)에 할당할 수 있다. 이때, 컴포넌트 할당부(503)는 컴포넌트의 시간 주기가 동일한 컴포넌트를 묶어서 하나의 실행기(executor)에 할당할 수 있다.
예를 들어, 컴포넌트 할당부(503)는 델타 시간이 빠른 순서에 따라 실행 큐의 맨 앞부터 가로 방향으로 차례로 컴포넌트들을 할당할 수 있다. 이때, 실행 큐의 맨 앞에 할당된 컴포넌트가 복수개인 경우, 각 컴포넌트의 우선 순위를 고려하여 실행 큐의 맨 앞에 할당된 컴포넌트를 실행 큐의 세로 방향으로 할당할 수 있다.
그러면, 컴포넌트 실행부(504)는 실행 큐에 할당된 복수의 컴포넌트를 실행할 수 있다.
이때, 컴포넌트 실행부(504)는 델타 시간에 기초하여 컴포넌트를 미리 설정된 시간 슬롯 동안 실행할 수 있다. 예를 들어, 실행 큐의 맨 앞에 위치하는 하나 이상의 컴포넌트 델타 시간이 50ms인 경우, 컴포넌트 실행부(504)는 시간 슬롯이 0ms에서 50ms가 될 때까지 실행 큐에 할당된 컴포넌트들을 실행할 수 있다. 이때, 컴포넌트 실행부(504)는 선행 관계에 기초하여 결정된 각 컴포넌트의 우선 순위에 따라 컴포넌트를 실행할 수 있다.
그러면, 컴포넌트 할당부(503)는 실행 큐를 통해 실행이 완료된 컴포넌트를 종료 큐에 할당할 수 있다.
예를 들어, 컴포넌트 1과 2의 시간 주기가 50ms, 컴포넌트 3의 시간 주기가 100ms인 경우, 시간 슬롯이 0ms에서 실행 큐에 할당된 컴포넌트가 실행되어 시간 슬롯이 50ms가 되면, 컴포넌트 1 및 2의 실행은 완료될 수 있다. 그러면, 컴포넌트 할당부(503)는 실행이 완료된 컴포넌트 1 및 2를 종료 큐(finish queue)에 할당할 수 있다. 이때, 컴포넌트 3은 실행 큐에 남아 있을 수 있다. 이때, 컴포넌트 할당부(503)는 각 컴포넌트의 우선 순위에 기초하여 컴포넌트를 종료 큐에 할당할 수 있다. 예를 들어, 컴포넌트 1의 우선 순위가 컴포넌트 2이 우선 순위보다 높은 경우, 컴포넌트 할당부(503)는 컴포넌트 1을 종료 큐의 맨 앞에 할당하고, 컴포넌트 1 다음에 컴포넌트 2가 위치하도록 컴포넌트 2를 종료 큐에 할당할 수 있다.
그리고, 컴포넌트 재할당부(505)는 종료 큐에 할당된 컴포넌트의 주기와 실행 큐에 할당된 컴포넌트의 델타 시간을 비교할 수 있다. 이어, 컴포넌트 재할당부(505)는 비교 결과에 따라 종료 큐에 할당된 컴포넌트를 실행 큐에 재할당할 수 있다.
이때, 컴포넌트 재할당부(505)는 종료 큐에 할당된 컴포넌트 중 실행 큐에 할당된 컴포넌트의 델타 시간보다 작거나 같은 시간 주기를 가진 컴포넌트를 실행 큐에 재할당할 수 있다.
일례로, 컴포넌트 재할당부(505)는 컴포넌트 c3의 델타 시간과 종료 큐의 마지막에 위치하는 컴포넌트 c2의 시간 주기를 비교할 수 있다. 이때, c2의 시간 주기가 c3의 델타 시간보다 작거나 같은 경우, 컴포넌트 재할당부(505)는 c2를 실행 큐에 재할당할 수 있다. 이때, c2의 우선 순위가 c3의 우선 순위보다 높은 경우, 컴포넌트 재할당부(505)는 실행 큐의 세로 방향으로 c2가 c3보다 앞에 위치하도록 c2를 실행 큐에 재할당할 수 있다. 동일한 방식으로, 컴포넌트 재할당부(505)는 c1을 실행 큐에 재할당할 수 있다.
다른 예로, 컴포넌트 재할당부(505)는 컴포넌트 c3의 델타 시간과 종료 큐에 할당된 모든 컴포넌트 c1 및 c2의 시간 주기를 각각 비교할 수 있다. 그리고, 컴포넌트 재할당부(505)는 시간 주기가 델타 시간보다 작거나 같은 컴포넌트를 각 컴포넌트의 우선 순위에 기초하여 실행 큐에 재할당할 수 있다. 예를 들어, c1 및 c2의 시간 주기가 c3의 델타 시간보다 작고, c1의 우선 순위가 c2보다 높고, c2의 우선 순위가 c3보다 높은 경우, 컴포넌트 재할당부(505)는 실행 큐의 세로 방향으로 c3 앞에 c2가 위치하고, c2 앞에 c1이 위치하도록 c1 및 c2를 실행 큐에 재할당할 수 있다.
그러면, 컴포넌트 실행부(504)는 실행 큐에 할당된 컴포넌트를 시간 슬롯 동안 실행할 수 있다. 예를 들어, 실행 큐의 맨 앞에 위치하는 c1, c2, c3의 시간 슬롯이 50ms에서 컴포넌트의 실행을 시작하고, 델타 시간 50ms인 경우, 컴포넌트 실행부(504)는 델타 시간 50ms가 경과하여 시간 슬롯이 100ms가 될 때까지 실행 큐에 할당된 c1, c2, c3를 실행할 수 있다.
이상에서 설명한 컴포넌트 스케쥴링은 하나의 타이머(Timer)에 의해 수행될 수 있다. 예를 들어, OPRoS 컴포넌트 엔진에서, 복수의 컴포넌트를 실행하기 위해 할당된 복수의 실행기(executor)에 대해 하나의 타이머를 이용하여 컴포넌트를 실행할 수 있다. 다시 말해, 컴포넌트 스케쥴링 장치는 복수의 컴포넌트를 실행하기 위해 복수의 실행기(executor) 마다 대응하는 복수의 타이머를 구비하지 않고, 하나의 타이머만으로 복수의 실행기에 할당된 컴포넌트를 실행할 수 있다.
이하에서는, 하나의 타이머를 사용하여 컴포넌트를 스케쥴링 하는 경우에 오버헤드(overhead), 지터(jitter), 및 전파 지연(propagation delay)에 대한 컴포넌트 스케쥴링 장치의 성능에 대해 설명하기로 한다.
먼저, 본 컴포넌트 스케쥴링 장치는 아래의 표 1에 기초한 시뮬레이션 환경에 따라 스케쥴링 장치의 성능을 평가한다.
파라미터(Parameter) 값(Value)
운영 체제(Operating system) Microsoft Windows XP Professional SP3
컴포넌트 실행 엔진(Component execution engine) OPRoS Component Engine v.20101130
CPU Intel
Figure 112011066644653-pat00002
CoreTM2 Duo CPU E6750 @ 2.66GHz
메모리(RAM) DDRII 2GB
그리고, 컴포넌트 c1과 c3의 시간 주기는 각각 50ms이고, c2의 시간 주기는 100ms이고, 컴포넌트 c4의 시간 주기는 200ms를 가정하고, 본 컴포넌트 스케쥴링 장치의 성능을 평가하고자 한다. 이때, 컴포넌트 스케쥴링 장치는 하나의 쓰레드(thread)를 이용하여 컴포넌트 스케쥴링을 수행한다.
표 1에 시뮬레이션 환경에 따라 컴포넌트 스케쥴링을 수행한 경우, 오버헤드, 지터, 및 전파 지연에 대한 성능 결과는 아래의 표 2와 같을 수 있다.
Engine Overhead (us) Jitter (us) Propagation Delay (us)
average maximum average maximum average maximum minimum
original scheduling 105 1 939 542613 1082794 146 424 146 504 146 383
?time scheduling 1.4 82 528 1795 6 014 6 055 6 012
표 2에서, original scheduling은 기존의 OPRoS 실행 엔진을 이용한 스케쥴링에 이고, 델타 시간 스케쥴링은 본 발명의 일실시예에 따른 컴포넌트 스케쥴링 방법을 나타낸다.
표 2에 따르면, 본 발명의 일실시예에 따른 컴포넌트 스케쥴링 방법은 기존의 스케쥴링보다 오버헤드, 지터, 및 전파 지연이 모두 크게 감소함을 확인할 수 있다. 다시 말해, 표 2에 따르면, 본 발명의 일실시예에 따른 컴포넌트 스케쥴링 방법은 기존의 스케쥴링보다 시스템의 성능이 향상됨을 확인할 수 있다.
표 2의 오버헤드, 지터, 및 전파 지연에 대한 성능은 아래의 수학식 2 내지 4를 이용하여 평가될 수 있다.
이때, 아래의 수학식 2를 이용하여 지터에 대한 성능을 평가할 수 있다. 여기서, 지터(jitter)는 컴포넌트의 실행이 지연되는 시간을 의미한다.
Figure 112011066644653-pat00003
수학식 2에서, t* i,j 는 컴포넌트의 실행을 시작한 시간, periodi ,j는 i번째 컴포넌트를 j번 반복 실행한 시간 주기이다.
그리고, 수학식 3을 이용하여 오버헤드에 대한 성능이 평가될 수 있다.
Figure 112011066644653-pat00004
수학식 3에서, ts i ,j는 컴포넌트의 실행을 시작하는 시간, tf i ,j는 컴포넌트의 실행을 종료하는 시간이다.
이어, 수학식 4를 이용하여 전파 지연에 대한 성능이 평가될 수 있다.
Figure 112011066644653-pat00005
수학식 4에서, endReceiverj는 마지막 컴포넌트, StartSender,j는 첫번째 컴포넌트로서, 전파 지연은 어플리케이션에서 첫번째 컴포넌트부터 마지막 컴포넌트까지 데이터를 가져오는 시간의 양을 의미할 수 있다.
이상에서 설명한 바와 같이, 본 발명의 일실시예에 따른 컴포넌트 스케쥴링 방법 및 장치는, 각 컴포넌트의 선행 관계과 델타 시간에 기초하여 컴포넌트에 대해 동적으로 스케쥴링을 수행함에 따라 실시간 특성을 만족할 수 있다. 또한, 타이머를 조절하여 지터의 증가를 방지하여 각 컴포넌트의 시간 주기를 노치지 않을 수 있다. 이로 인해, 데이터에 민감한 어플리케이션의 성능을 향상시킬 수 있다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
501: 컴포넌트 수신부
502: 델타 시간 계산부
503: 컴포넌트 할당부
504: 컴포넌트 실행부
505: 컴포넌트 재할당부

Claims (16)

  1. 시간 주기(time period) 및 선행 관계(precedence relation)로 식별된 복수의 컴포넌트들을 수신하는 단계;
    상기 시간 주기를 이용하여 상기 복수의 컴포넌트들 각각의 델타 시간을 계산하는 단계;
    상기 델타 시간과 선행 관계에 기초한 우선 순위를 이용하여 상기 복수의 컴포넌트들을 실행 큐에 할당하는 단계;
    상기 실행 큐에 할당된 컴포넌트를 실행하는 단계;
    상기 실행 큐를 통해 실행이 완료된 컴포넌트를 종료 큐에 할당하는 단계;
    상기 종료 큐에 할당된 컴포넌트의 주기와 상기 실행 큐에 할당된 컴포넌트의 델타 시간을 비교하는 단계; 및
    비교 결과에 따라, 상기 종료 큐에 할당된 컴포넌트를 상기 실행 큐에 재할당하는 단계
    를 포함하는 컴포넌트 스케쥴링 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 실행 큐에 재할당하는 단계는,
    상기 종료 큐에 할당된 컴포넌트 중 상기 실행 큐에 할당된 컴포넌트의 델타 시간보다 같거나 작은 시간 주기를 가진 컴포넌트를 상기 실행 큐에 재할당하는 것을 특징으로 하는 컴포넌트 스케쥴링 방법.
  4. 제1항에 있어서,
    상기 비교하는 단계는,
    상기 종료 큐에 할당된 컴포넌트들의 우선 순위에 기초하여 상기 종료 큐에 할당된 컴포넌트의 주기와 상기 실행 큐에 할당된 컴포넌트의 델타 시간을 비교하는 것을 특징으로 하는 컴포넌트 스케쥴링 방법.
  5. 제1항에 있어서,
    상기 컴포넌트를 실행하는 단계는,
    상기 델타 시간에 기초하여 상기 컴포넌트를 미리 설정된 시간 슬롯 동안 실행되는 것을 특징으로 하는 컴포넌트 스케쥴링 방법.
  6. 제1항에 있어서,
    상기 컴포넌트를 실행하는 단계는,
    상기 선행 관계에 기초한 우선 순위 기초하여 상기 컴포넌트를 실행하는 것을 특징으로 하는 컴포넌트 스케쥴링 방법.
  7. 제1항에 있어서,
    상기 델타 시간을 계산하는 단계는,
    현재 순위에 대응하는 컴포넌트의 시간 주기와 이전 순위에 대응하는 컴포넌트의 델타 시간에 기초하여 현재 순위에 대응하는 컴포넌트의 델타 시간을 계산하는 것을 특징으로 하는 컴포넌트 스케쥴링 방법.
  8. 제1항의 방법을 실행하기 위한 프로그램이 기록된 컴퓨터에서 판독 가능한 기록 매체.
  9. 시간 주기(time period) 및 선행 관계(precedence relation)로 식별된 복수의 컴포넌트들을 수신하는 컴포넌트 수신부;
    상기 시간 주기를 이용하여 상기 복수의 컴포넌트들 각각의 델타 시간을 계산하는 델타 시간 계산부;
    상기 델타 시간과 선행 관계에 기초한 우선 순위를 이용하여 상기 복수의 컴포넌트들을 실행 큐를 통해 실행이 완료된 컴포넌트를 종료 큐에 할당하는 컴포넌트 할당부; 및
    상기 실행 큐에 할당된 컴포넌트를 실행하는 컴포넌트 실행부; 및
    상기 종료 큐에 할당된 컴포넌트의 주기와 상기 실행 큐에 할당된 컴포넌트의 델타 시간을 비교하고, 비교 결과에 따라, 상기 종료 큐에 할당된 컴포넌트를 상기 실행 큐에 재할당하는 컴포넌트 재할당부
    를 포함하는 컴포넌트 스케쥴링 장치.
  10. 삭제
  11. 삭제
  12. 제9항에 있어서,
    상기 컴포넌트 재할당부는,
    상기 종료 큐에 할당된 컴포넌트 중 상기 실행 큐에 할당된 컴포넌트의 델타 시간보다 같거나 작은 시간 주기를 가진 컴포넌트를 상기 실행 큐에 재할당하는 것을 특징으로 하는 컴포넌트 스케쥴링 장치.
  13. 제9항에 있어서,
    상기 컴포넌트 재할당부는,
    상기 종료 큐에 할당된 컴포넌트들의 우선 순위에 기초하여 상기 종료 큐에 할당된 컴포넌트의 시간 주기와 상기 실행 큐에 할당된 컴포넌트의 델타 시간을 비교하는 것을 특징으로 하는 컴포넌트 스케쥴링 장치.
  14. 제9항에 있어서,
    상기 컴포넌트 실행부는,
    상기 델타 시간에 기초하여 상기 컴포넌트를 미리 설정된 시간 슬롯 동안 실행되는 것을 특징으로 하는 컴포넌트 스케쥴링 장치.
  15. 제9항에 있어서,
    상기 컴포넌트 실행부는,
    상기 선행 관계에 기초한 우선 순위 기초하여 상기 컴포넌트를 실행하는 것을 특징으로 하는 컴포넌트 스케쥴링 장치.
  16. 제9항에 있어서,
    상기 델타 시간 계산부는,
    현재 순위에 대응하는 컴포넌트의 주기와 이전 순위에 대응하는 컴포넌트의 델타 시간에 기초하여 현재 순위에 대응하는 컴포넌트의 델타 시간을 계산하는 것을 특징으로 하는 컴포넌트 스케쥴링 장치.
KR1020110085894A 2011-08-26 2011-08-26 델타 시간 기반의 컴포넌트 스케줄링 방법 및 장치 KR101335083B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110085894A KR101335083B1 (ko) 2011-08-26 2011-08-26 델타 시간 기반의 컴포넌트 스케줄링 방법 및 장치
US13/430,549 US8924976B2 (en) 2011-08-26 2012-03-26 Task scheduling method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110085894A KR101335083B1 (ko) 2011-08-26 2011-08-26 델타 시간 기반의 컴포넌트 스케줄링 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20130025000A KR20130025000A (ko) 2013-03-11
KR101335083B1 true KR101335083B1 (ko) 2013-12-05

Family

ID=48176791

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110085894A KR101335083B1 (ko) 2011-08-26 2011-08-26 델타 시간 기반의 컴포넌트 스케줄링 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101335083B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010043794A (ko) * 1998-06-05 2001-05-25 샌제이브 사이두 추상형 지역 탐색 기술을 사용한 컴퓨터 구현 방식의스케줄링 시스템 및 프로세스
KR20100048843A (ko) * 2008-10-31 2010-05-11 한국전자통신연구원 로봇용 소프트웨어 컴포넌트 장치 및 이를 이용한 쓰레드 처리 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010043794A (ko) * 1998-06-05 2001-05-25 샌제이브 사이두 추상형 지역 탐색 기술을 사용한 컴퓨터 구현 방식의스케줄링 시스템 및 프로세스
KR20100048843A (ko) * 2008-10-31 2010-05-11 한국전자통신연구원 로봇용 소프트웨어 컴포넌트 장치 및 이를 이용한 쓰레드 처리 방법

Also Published As

Publication number Publication date
KR20130025000A (ko) 2013-03-11

Similar Documents

Publication Publication Date Title
US11507420B2 (en) Systems and methods for scheduling tasks using sliding time windows
US7162720B2 (en) Providing predictable scheduling of programs using repeating precomputed schedules on discretely scheduled and/or multiprocessor operating systems
US20120096468A1 (en) Compute cluster with balanced resources
KR101666395B1 (ko) 멀티코어 환경에서 우선순위 기반의 실시간 운영체제의 태스크 스케줄링 방법
US8930954B2 (en) Scheduling parallel data tasks
US8832703B2 (en) Dynamically changing job allocation priority based on a restoration rate for each user and time frame
US20120066683A1 (en) Balanced thread creation and task allocation
US8621472B2 (en) Job scheduling with optimization of power consumption
RU2538920C2 (ru) Способ распределения задач сервером вычислительной системы, машиночитаемый носитель информации и система для реализации способа
KR101644800B1 (ko) 컴퓨팅 시스템 및 방법
US20130290972A1 (en) Workload manager for mapreduce environments
US20120079486A1 (en) Integration of dissimilar job types into an earliest deadline first (edf) schedule
US10079774B2 (en) Hierarchical fairshare of multi-dimensional resources
KR20120082598A (ko) 클라우드 컴퓨팅에서 다중 워크플로우를 위한 비용기반 스케줄링 방법 및 그 시스템
CN113316767A (zh) 处理器处的松弛度感知、动态优先级变化
RU2008149050A (ru) Аппаратно-реализуемый способ планирования зданий (варианты), система планирования зданий и машиночитаемый носитель
KR20170023280A (ko) 멀티코어 프로세서 시스템 및 상기 시스템에서의 공유 캐시 관리 방법
US9740530B2 (en) Decreasing the priority of a user based on an allocation ratio
KR101335083B1 (ko) 델타 시간 기반의 컴포넌트 스케줄링 방법 및 장치
JP7267819B2 (ja) 並列タスクスケジューリング方法
KR100981017B1 (ko) 정적 태스크 정의 기능을 가진 시스템을 위한 우선순위 재정의 및 대기큐 관리 방법과 상기 방법을 실행하는 시스템
CN109298917B (zh) 一种适用于实时系统混合任务的自适应调度方法
CN110865886A (zh) 面向多概率性参数实时任务的和谐感知多处理器调度方法
JPS63300350A (ja) マルチプロセッサシステムのタスクスケジュ−ル方式
KR20160066417A (ko) 자원할당장치 및 그 동작 방법 그리고 이에 적용되는 프로그램

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

Payment date: 20160927

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190110

Year of fee payment: 6