KR100384339B1 - 태스크 스케쥴링 방법 - Google Patents

태스크 스케쥴링 방법 Download PDF

Info

Publication number
KR100384339B1
KR100384339B1 KR10-2000-0021200A KR20000021200A KR100384339B1 KR 100384339 B1 KR100384339 B1 KR 100384339B1 KR 20000021200 A KR20000021200 A KR 20000021200A KR 100384339 B1 KR100384339 B1 KR 100384339B1
Authority
KR
South Korea
Prior art keywords
task
preparation
pointer
bits
priority
Prior art date
Application number
KR10-2000-0021200A
Other languages
English (en)
Other versions
KR20000037391A (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 KR10-2000-0021200A priority Critical patent/KR100384339B1/ko
Publication of KR20000037391A publication Critical patent/KR20000037391A/ko
Application granted granted Critical
Publication of KR100384339B1 publication Critical patent/KR100384339B1/ko

Links

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
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 멀티태스킹(multitasking) 기능을 가진 컴퓨터 시스템에서 수행 준비 상태에 있는 태스크(task)의 수에 관계없이 일정 시간 내에 태스크를 스케쥴링(scheduling)하는 태스크 스케쥴링 방법에 관한 것이다. 수행 준비 상태에 있는 태스크들은 준비큐에 연결되고, 상기 태스크들의 우선권에 대응하는 준비그룹과 준비테이블의 비트(bit)는 '1'로 세팅되어, 최고 우선권을 결정하는 단계에서는 준비그룹에서 최고 우선권을 결정한 후, 이에 대응하는 준비테이블에서 최고 우선권을 결정하게 된다. 본 발명은 준비큐에 태스크를 연결함으로써 하나의 우선권에 복수개의 태스크가 존재할 수 있으며 태스크를 삽입하거나 제거하는 시간이 일정하며 또한 최고 우선권을 결정하는데 걸리는 시간이 일정하여 실시간 처리가 요구되는 응용분야에서 유용하다.

Description

태스크 스케쥴링 방법{method for scheduling a task}
본 발명은 멀티태스킹(multitasking) 기능을 가지는 컴퓨터 시스템에서 cpu에 의해 수행되는 태스크(task)의 스케쥴링 방법에 관한 것으로, 더욱 상세하게는 멀티태스킹 기능을 가지는 컴퓨터 시스템에서 동시에 여러 개의 태스크들이 생성되어 수행 준비 상태에 있을 때, 어떤 태스크를 실제 수행할 것인가를 결정하는 스케쥴링 방법에 관한 것이다.
이러한 태스크 스케쥴링은 일반적으로 컴퓨터 시스템의 운영체제(operating system)에 의해 수행되며, 운영체제는 수행 준비 상태에 있는 태스크들중 우선권이 가장 높은 태스크를 결정하여 cpu의 컨트롤을 넘겨주게 된다. 수행중인 태스크는 그 수행이 종료되거나 자신보다 우선권이 높은 태스크가 수행 준비 상태가 되거나 주어진 일정시간(즉, time quantum)이 만료되는 등의 사건이 발생하면 cpu의 컨트롤을 다른 태스크에게 넘겨주게 되는데, 운영체제는 최고 우선권을 가진 태스크를 결정하기 위해 수행 준비 단계에 있는 태스크들의 우선권을 비교하여야 한다. 이때 소요되는 시간은 태스크의 수에 비례하게 된다.
따라서, 태스크 스케쥴링에 소요되는 시간은 수행 준비 상태에 있는 태스크의 수에 영향을 받게 되는데, 이는 실시간 처리를 요하는 응용 분야에서는 특히 치명적인 요소가 된다.
본 발명이 이루고자 하는 기술적 과제는, 수행 준비 상태에 있는 태스크의 수에 관계없이 일정 시간내에 스케쥴링 함으로써, 시간결정성을 보장하는 태스크 스케쥴링 방법을 제공하는데 있다.
도1 는 태스크 및 r=4일 때 태스크의 우선권의 구조를 도시한 도면이며,
도2 은 r=4일 때 준비그룹, 준비테이블 및 준비큐를 포함한 준비리스트의 구조를 도시한 도면이고,
도3 은 준비큐에 우선권 p인 태스크를 삽입하는 과정을 도시한 플로우 차트이며,
도4 는 준비리스트에 태스크를 삽입하는 과정을 도시한 플로우 차트이며,
도5 는 준비큐에서 우선권 p인 태스크를 제거하는 과정을 도시한 플로우 차트이며,
도6 은 준비리스트에서 태스크를 제거하는 과정을 도시한 플로우 차트이며,
도7 은 ROM에 저장된 맵테이블[] 및 언맵테이블[]의 구조를 도시한 도면이며,
도8 은 최고 우선권을 결정하는 과정을 도시한 플로우차트이다.
전술한 기술적 과제를 이루기 위해, 준비테이블은 2r개의 비트를 가진 2r개의 이진수로 구성된 어레이 구조로서 각각의 비트는 우선권을 나타내고, 준비그룹은 상기 준비테이블의 각 이진수에 대응하는 비트로 구성되며, 준비리스트는 상기 준비테이블 및 상기 준비그룹외에, 상기 준비테이블의 각 비트에 대응하는 22r개의 양방향 연결 고리(double linked-list)구조 셀(cell)을 가진 준비큐(queue)를 포함하도록 한다. 태스크의 우선권(p)은 2r개의 비트로 구성되어 좌측 r개의 비트는 상기 준비그룹에서의 위치를 나타내고 우측 r개의 비트는 상기 준비테이블에서의 위치를 나타낸다. 우선권(p)은 그 숫자가 낮을 수록 우선권이 높은 것이어서, 준비그룹에서 우측의 비트가 우선권이 높으며 준비테이블에서도 우측의 비트가 우선권이 높다.
수행 준비 상태가 된 우선권이 p인 태스크를 상기 준비리스트에 삽입하는 경우에는, 상기 우선권 p에 대응하는 상기 준비테이블 및 상기 준비그룹의 비트를 '1'로 세팅하고, 상기 우선권 p에 대응하는 상기 준비큐[p]에 삽입한다.
더욱 상세하게는, k번째 이진수는 k번째 비트만이 '1'이고 나머지 비트는 '0'인 2r개의 비트를 가진 2r개의 이진수로 구성되어 ROM에 저장된 맵테이블[]을 이용하여, 다음 식에 따라 태스크의 우선권(p)에 대응하는 상기 준비그룹 및 상기 준비테이블의 비트를 '1'로 세팅하는 단계와,
준비그룹 |= 맵테이블[p>>r]
준비테이블[p>>r] |= 맵테이블[p mask[r]]
(여기서, | 는 bitwise OR 연산자이고, 는 bitwise AND 연산자이고, >>는 우측으로 비트를 이동(shift)하는 연산자이고, mask[r]은 하위 r개의 비트는 '1'이고 나머지 비트는 '0'인 이진수)
상기 태스크의 우선권(p)에 대응하는 상기 준비큐[p]의 마지막 태스크 포인터가 NULL인지 판단하는 단계와,
상기 마지막 태스크 포인터가 NULL이면, 상기 태스크의 이전 태스크 포인터 및 다음 태스크 포인터를 NULL로 세팅하고, 상기 준비큐[p]의 처음 태스크 포인터 및 마지막 태스크 포인터는 상기 태스크를 가리키도록 세팅하는 단계와,
상기 마지막 태스크 포인터가 NULL이 아니면, 상기 태스크의 이전 태스크 포인터 및 다음 태스크 포인터는 상기 준비큐[p]의 마지막 태스크 포인터 및 NULL로 각각 세팅하고, 상기 태스크의 이전 태스크 포인터가 가리키는 태스크의 다음 태스크 포인터 및 상기 준비큐[p]의 마지막 태스크 포인터는 상기 태스크를 가리키도록 세팅하는 단계로 이루어지는 것이 바람직하다.
수행이 중단되거나 더 높은 우선권의 태스크가 수행 준비 상태가 되는 등의 사건이 발생하여 우선권이 p인 태스크를 상기 준비리스트에서 제거하는 경우에는, 상기 태스크를 상기 준비큐[p]에서 제거하고, 상기 태스크가 속하였던 상기 준비큐[p]에 다른 태스크가 있는지 검색한 후, 다른 태스크가 없으면 상기 준비큐[p]에 대응하는 상기 준비테이블의 비트를 '0'으로 세팅하고, 상기 비트가 속하는 이진수의 모든 비트가 '0'인지 검색한 후, 상기 이진수의 모든 비트가 '0'이면 상기 이진수에 대응하는 상기 준비그룹의 비트를 '0'으로 세팅한다.
더욱 상세하게는, 제거하고자 하는 태스크의 다음 태스크 포인터가 NULL인지 판단한 후, 상기 다음 태스크 포인터가 NULL이면, 상기 태스크가 속한 준비큐[p]의 마지막 태스크 포인터를 상기 태스크의 이전 태스크 포인터로 세팅하고, 상기 다음 태스크 포인터가 NULL이 아니면, 상기 태스크의 다음 태스크 포인터가 가리키는 태스크의 이전 태스크 포인터를 상기 태스크의 이전 태스크 포인터로 세팅하는 단계와,
상기 태스크의 이전 태스크 포인터가 NULL인지 판단한 후, 상기 이전 태스크 포인터가 NULL이면, 상기 태스크가 속한 준비큐[p]의 처음 태스크 포인터를 상기 태스크의 다음 태스크 포인터로 세팅하고, 상기 이전 태스크 포인터가 NULL이 아니면, 상기 태스크의 이전 태스크 포인터가 가리키는 태스크의 다음 태스크 포인터를 상기 태스크의 다음 태스크 포인터로 세팅하는 단계와,
상기 태스크가 속하였던 준비큐[p]의 마지막 태스크 포인터가 NULL인지 판단한 후, 상기 마지막 태스크 포인터가 NULL이면, 다음 식에 의해 상기 태스크의 우선권(p)에 대응하는 상기 준비테이블의 비트를 '0'으로 세팅하는 단계와,
준비테이블[p>>r] = ~맵테이블[p mask[r]]
(여기서, ~는 bitwise NOT 연산자)
상기 준비테이블의 비트를 '0'으로 세팅한 경우에 준비테이블[p>>r]이 '0'인지 판단한 후, 상기 준비테이블[p>>r]이 '0'이면, 다음 식에 의해 상기 태스크의 우선권(p)에 대응하는 상기 준비그룹의 비트를 '0'으로 세팅하는 단계로 이루어 지는 것이 바람직하다.
준비그룹 = ~맵테이블[p>>r]
준비리스트를 이용하여 최고 우선권(P)를 결정하는 경우에는, 상기 준비그룹에서 그 값이 '1'인 비트들 중 가장 우측에 위치한 비트를 구하고, 상기 비트에 대응하는 상기 준비테이블의 이진수에서 그 값이 '1'인 비트들 중 가장 우측에 위치한 비트를 구함으로써 우선권이 가장 높은 태스크를 결정한다.
더욱 상세하게는, 상기 준비그룹의 비트들을 이등분하여 우반부가 '0'이면 좌반부를, '0'이 아니면 우반부를 채택하는 단계와,
루프(loop)를 형성하여 r보다 작은 임의의 양의 정수 k값에 따라 상기 단계에서 채택된 좌반부 또는 우반부를 다시 이등분하여 상기 단계를 (r-k)번 반복하는 단계와,
이진수 0에서 22k-1까지의 값들에서 '1'이 처음 나타나는 비트 위치값을 각 인덱스(index)의 값으로 하는 ROM에 저장된 언맵테이블[]을 이용하여, 다음 식에 의해 상기 준비그룹에서 그 값이 '1'인 비트들 중 가장 우측에 위치한 비트의 위치(y)를 구하는 단계와,
y = i + 언맵테이블[b]
(여기서, b는 상기 준비그룹을 반복하여 이등분하는 단계를 통해 최종 채택된 부분이고, i는 상기 준비그룹에서 b의 우측에 있는 비트수)
상기 y값에 대응하는 준비테이블[y]의 비트들을 이등분하여 우반부가 '0'이면 좌반부를, '0'이 아니면 우반부를 채택하는 단계와,
상기 k값에 따라 상기 단계에서 채택된 좌반부 또는 우반부를 다시 이등분하여 상기 단계를 (r-k)번 반복하는 단계와,
상기 언맵테이블을 이용하여, 다음 식에 의해 상기 준비테이블[y]에서 그 값이 '1'인 비트들 중 가장 우측에 위치한 비트의 위치(x)를 구하고, 최고 우선권(P)을 결정하는 단계로 이루어지는 것이 바람직하다.
x = j + 언맵테이블[c]
P = (y<<r) + x
(여기서, c는 상기 준비테이블[y]를 반복하여 이등분하는 단계를 통해 최종 채택된 부분이고, j는 상기 준비테이블[y]에서 c의 우측에 있는 비트수이고, <<는 좌측으로 비트를 이동(shift)하는 연산자)
k값은 r보다 작은 임의의 값이며, k값을 크게 하면 루프를 돌며 반복하는 횟수가 줄어 시간을 단축할 수 있으나 언맵테이블[]의 크기가 증가하게되고, k값을 작게 하면 언맵테이블[]의 크기가 줄지만 루프를 도는 횟수가 증가해 시간이 지연되므로, 사용자는 메모리의 공간과 소요되는 시간 사이에서 적절히 절충하여 결정할 수 있다.
이하, 본 발명에 의한 태스크 스케쥴링 방법을 첨부한 도면을 참조하여 다음과 같이 설명한다.
도 1는 태스크와 r=4일 때 태스크의 우선권(p)의 구조를 도시한 것이다. 태스크는 이전 태스크 포인터와 다음 태스크 포인터를 가지며, 이를 통해 동일한 우선권을 가진 태스크들이 하나의 셀에 연결된다. 태스크의 우선권(p)의 좌측 r개의비트는 준비그룹에서의 비트위치를 나타내며, 우측 r개의 비트는 준비테이블에서의 셀의 위치를 나타낸다.
도 2는 r=4일 때 준비테이블과 준비그룹 및 준비큐의 구조를 도시한 것이다. 준비테이블의 각 비트는 우선권을 나타내며, 낮은 숫자일수록 높은 우선권을 나타낸다.상기 준비테이블의 각 비트는 준비큐의 각 셀에 대응한다. 준비큐의 각 셀은 마지막 태스크 포인터와 처음 태스크 포인터를 가지며 NULL로 초기화된다. 상기 마지막 태스트 포인터와 상기 처음 태스크 포인터는 각각 상기 셀의 우선권에 해당하는 태스크들의 처음과 마지막을 가리킨다. 태스크가 없으면 NULL이되고 태스크가 하나인 경우에는 처음 태스크 포인터와 마지막 태스크 포인터 모두 상기 태스크를 가리킨다.
도 3은 준비큐에 우선권이 p인 태스크 삽입 과정을 도시한 플로우 차트이다. 먼저, 준비큐[p]의 마지막 태스크 포인터가 NULL인지 판단한다. 상기 마지막 태스크 포인터가 NULL이면, 상기 준비큐[p]에 다른 태스크가 없는 것이므로 상기 태스크의 이전 태스크 포인터와 다음 태스크 포인터를 NULL로 세팅하고, 준비큐[p]의 처음 태스크 포인터 및 마지막 태스크 포인터는 상기 태스크를 가리키게 세팅한다. 상기 준비큐[p]의 마지막 태스크 포인터가 NULL이 아니면, 다른 태스크가 있는 것이므로 상기 태스크의 이전 태스크 포인터와 마지막 태스크 포인터를 각각 준비큐[p]의 마지막 태스크 포인터와 NULL로 세팅하고, 준비큐[p]의 마지막 태스크 포인터는 상기 태스크를 가리키게 세팅하며, 상기 태스크의 이전 태스크 포인터가 가리키는 태스크의 다음 태스크 포인터를 상기 태스크를 가리키게 세팅한다.
도 4는 준비리스트에 우선권이 p인 태스크를 삽입하는 과정을 도시한 플로우 차트이다. 맵테이블[p>>r]은 우선권 p를 오른쪽으로 r만큼 이동(shift)시킴으로써, 우선권 p에서 준비그룹에서의 위치를 나타내는 비트만이 남도록 한 후, 맵테이블[]에 의해 해당 위치의 비트만이 '1'이고 나머지는 '0'인 이진수를 만든다. 이를 준비그룹과 bitwise OR의 연산을 하여 준비그룹에서 상기 태스크의 우선권 p에 해당하는 비트를 '1'로 세팅하게 된다. 맵테이블[p mask[r]]은 우선권 p에서 준비테이블에서의 위치를 나타내는 비트만이 남도록 한후, 맵테이블[]에 의해 해당 위치의 비트만이 '1'이고 나머지는 '0'인 이진수를 만든다. 이를 준비테이블[p>>r]과 bitwise OR의 연산을 하여 준비테이블[p>>r]에서 상기 태스크의 우선권 p에 해당하는 비트를 '1'로 세팅하게 된다. 상기 과정이 끝나면 준비큐[p]에 상기 태스크를 삽입한다.
도 5는 준비큐에서 우선권이 p인 태스크를 제거하는 과정을 도시한 플로우 차트이다. 먼저 태스크의 다음 태스크 포인터가 NULL인지 판단한다. 상기 다음 태스크 포인터가 NULL이면, 상기 태스크가 연결된 태스크들중 마지막 태스크이므로, 준비큐[p]의 마지막 태스크 포인터를 상기 태스크의 이전 태스크 포인터로 세팅하고, 상기 다음 태스크 포인터가 NULL이 아니면, 상기 태스크 다음에 다른 태스크가 있으므로, 상기 태스크의 다음 태스크 포인터가 가리키는 태스크의 이전 태스크 포인터를 상기 태스크의 이전 태스크 포인터로 세팅한다. 다음은 상기 태스크의 이전 태스크 포인터가 NULL인지 판단한다. 상기 이전 태스크 포인터가 NULL이면, 상기 태스크는 연결된 태스크들중 처음 태스크이므로, 준비큐[p]의 처음 태스크 포인터를 상기 태스크의 다음 태스크 포인터로 세팅하고, 상기 이전 태스크 포인터가 NULL이 아니면, 상기 태스크 이전에 다른 태스크가 있으므로, 상기 태스크의 이전 태스크 포인터가 가리키는 태스크의 다음 태스크 포인터를 상기 태스크의 다음 태스크 포인터로 세팅한다.
도 6은 준비리스트에서 우선권이 p인 태스크를 제거하는 과정을 도시한 플로우 차트이다. 먼저 준비큐[p]에서 상기 태스크를 제거한 후, 상기 준비큐[p]의 마지막 태스크 포인터가 NULL인지 판단한다. 상기 마지막 태스크 포인터가 NULL이면, 상기 준비큐[p]에는 태스크가 하나도 없는 것이므로 준비테이블[p>>r]에서 해당 비트를 '0'으로 세팅하고, 상기 준비테이블[p>>r]이 '0'인지 판단한 후, 상기 준비테이블[p>>r]이 '0'이면 상기 준비테이블[p>>r]에 태스크가 하나도 없는 것이므로 준비그룹에서 해당 비트를 '0'으로 세팅한다.
도 7은 맵테이블[]과 언맵테이블[]을 도시한 것이다. 맵테이블[]은 태스크를 삽입 또는 제거 하는 단계에서 사용되며, 언맵테이블[]은 최고 우선권을 결정하는 단게에서 사용된다. 맵테이블[]은 r값에 따라 크기가 정해지며, 언맵테이블은 k값에 따라 그 최소 크기가 정해진다. k값이 작을수록 언맵테이블의 데이타양도 작아지며 k값이 클수록 언맵테이블의 테이타양도 커진다.
도 8은 최고 우선권을 결정하는 과정을 도시한 플로우 차트이다. 먼저, 준비그룹에서 우선권이 가장 높은 비트의 위치 y를 결정한다. 임시 변수 b에 준비그룹을 넣고 이를 이등분한 것을 다시 b에 넣게 된다. 임시 변수 i는 b를 이등분 할 때마다 우측에서 좌측으로 이동한 비트수를 누적하게 된다. b mask[2a](여기서,a=r-1)이 '0'인지 판단한 후, '0'이면 b의 우반부에 '1'인 비트가 없으므로, 좌반부를 b에 넣고 i는 2a만큼 증가시키고, '0'이 아니면 b의 우반부에 '1'인 비트가 있으므로, 우반부를 b에 넣고 i는 증가시키지 않는다. 임의로 정한 k값에 대하여 a가 k-1과 같을 때까지 루프(loop)를 반복한다. 준비그룹에서의 최고 우선권의 위치 y는 상기 i와 언맵테이블[b]의 합으로 구할 수 있다. 다음은, 준비테이블[y]에서 우선권이 가장 높은 비트의 위치 x를 결정한다. 이는 상기 준비그룹에서 우선권이 가장 높은 비트의 위치를 구하는 과정과 동일하다. 마지막으로, 상기 과정을 통해 구한 x와 y를 가지고 최고 우선권을 결정하게 된다.
이상에서 설명한 바와 같이, 본 발명에 의한 태스크 스케쥴링 방법을 사용하면, 태스크를 삽입 또는 삭제 할 때 다른 태스크들과 우선권을 비교할 필요없이 해당 준비큐에 삽입하면 되므로, 동일한 우선권의 태스크가 복수개 생성되어도 관계없으며, 태스크의 수에 관계없이 소요되는 시간은 일정한 효과가 있다. 또한, 최고 우선권 결정 단계에서 k값을 적당히 조정함으로써 소요되는 시간과 메모리 공간 사이에서의 절충이 가능한 효과가 있다.

Claims (4)

  1. 각각의 비트(bit)가 태스크(task)의 우선권을 나타내는 어레이(array)구조의 준비테이블과 상기 준비테이블의 각 이진수에 대응하는 대응하는 준비그룹을 포함하는 준비리스트와, 태스크의 우선권을 이용하여 멀티태스킹(multita sking) 기능을 가진 컴퓨터시스템에서 cpu에 의해 수행될 태스크를 결정하는 태스크 스케쥴링(scheduling)방법에 있어서,
    상기 태스크의 우선권은 상기 준비그룹에서의 위치를 나타내는 r개의 비트와 상기 준비테이블에서의 위치를 나타내는 r개의 비트로 구성되고, 상기 준비테이블은 2r개의 비트를 가진 2r개의 이진수로 구성된 어레이 구조로서 각각의 비트는 우선권을 나타내고, 상기 준비그룹은 상기 준비테이블의 각 이진수에 대응하는 비트로 구성되며, 상기 준비리스트는 상기 준비테이블의 각 비트에 대응하는 22r개의 양방향 연결 고리(double linked-list)구조 셀(cell)을 가진 준비큐(queue)를 포함하도록 하는, 태스크의 우선권과 준비리스트를 조직화 하는 단계와;
    우선권이 p인 태스크를 상기 준비리스트에 삽입할 때, 상기 우선권 p에 대응하는 상기 준비테이블 및 상기 준비그룹의 비트를 '1'로 세팅하고, 상기 우선권 p에 대응하는 상기 준비큐[p]에 삽입하는 단계와;
    우선권이 p인 태스크를 상기 준비리스트에서 제거할 때, 상기 태스크를 상기 준비큐[p]에서 제거하고, 상기 태스크가 속하였던 상기 준비큐[p]에 다른 태스크가있는지 검색한 후, 다른 태스크가 없으면 상기 준비큐[p]에 대응하는 상기 준비테이블의 비트를 '0'으로 세팅하고, 상기 비트가 속하는 이진수의 모든 비트가 '0'인지 검색한 후, 상기 이진수의 모든 비트가 '0'이면 상기 이진수에 대응하는 상기 준비그룹의 비트를 '0'으로 세팅하는 태스크 제거 단계와;
    상기 준비그룹에서 그 값이 '1'인 비트들 중 가장 우측에 위치한 비트를 구하고, 상기 비트에 대응하는 상기 준비테이블의 이진수에서 그 값이 '1'인 비트들 중 가장 우측에 위치한 비트를 구함으로써 우선권이 가장 높은 태스크를 결정하는 최고 우선권 결정 단계를 포함하는 것을 특징으로 하는 태스크 스케쥴링 방법.
  2. 제1 항에 있어서,
    상기 태스크 삽입 단계는,
    m번째 이진수는 m번째 비트만이 '1'이고 나머지 비트는 '0'인 2r개의 비트를 가진 2r개의 이진수로 구성되어 ROM에 저장된 어레이구조의 맵테이블을 이용하여, 다음 수학식1
    준비그룹 |= 맵테이블[p>>r]
    준비테이블[p>>r] |= 맵테이블[p mask[r]]
    (여기서, | 는 bitwise OR 연산자이고, 는 bitwise AND 연산자이고, >>는 우측으로 비트를 이동(shift)하는 연산자이고, mask[r]은 하위 r개의 비트는 '1'이고 나머지 비트는 '0'인 이진수)
    에 따라 태스크의 우선권 p에 대응하는 상기 준비그룹 및 상기 준비테이블의 비트를 '1'로 세팅하는 단계와;
    상기 태스크의 우선권 p에 대응하는 상기 준비큐[p]의 마지막 태스크 포인터가 NULL인지 판단하는 단계와;
    상기 마지막 태스크 포인터가 NULL이면, 상기 태스크의 이전 태스크 포인터 및 다음 태스크 포인터를 NULL로 세팅하고, 상기 준비큐[p]의 처음 태스크 포인터 및 마지막 태스크 포인터는 상기 태스크를 가리키도록 세팅하는 단계와;
    상기 마지막 태스크 포인터가 NULL이 아니면, 상기 태스크의 이전 태스크 포인터 및 다음 태스크 포인터는 상기 준비큐[p]의 마지막 태스크 포인터 및 NULL로 각각 세팅하고, 상기 태스크의 이전 태스크 포인터가 가리키는 태스크의 다음 태스크 포인터 및 상기 준비큐[p]의 마지막 태스크 포인터는 상기 태스크를 가리키도록 세팅하는 단계를 포함하는 것을 특징으로하는 태스크 스케쥴링 방법.
  3. 제1 항에 있어서,
    상기 태스크 제거 단계는,
    제거하고자 하는 태스크의 다음 태스크 포인터가 NULL인지 판단한 후, 상기 다음 태스크 포인터가 NULL이면, 상기 태스크가 속한 준비큐[p]의 마지막 태스크 포인터를 상기 태스크의 이전 태스크 포인터로 세팅하고, 상기 다음 태스크 포인터가 NULL이 아니면, 상기 태스크의 다음 태스크 포인터가 가리키는 태스크의 이전태스크 포인터를 상기 태스크의 이전 태스크 포인터로 세팅하는 단계와;
    상기 태스크의 이전 태스크 포인터가 NULL인지 판단한 후, 상기 이전 태스크 포인터가 NULL이면, 상기 태스크가 속한 준비큐[p]의 처음 태스크 포인터를 상기 태스크의 다음 태스크 포인터로 세팅하고, 상기 이전 태스크 포인터가 NULL이 아니면, 상기 태스크의 이전 태스크 포인터가 가리키는 태스크의 다음 태스크 포인터를 상기 태스크의 다음 태스크 포인터로 세팅하는 단계와;
    상기 태스크가 속하였던 준비큐[p]의 마지막 태스크 포인터가 NULL인지 판단한 후, 상기 마지막 태스크 포인터가 NULL이면, 다음 수학식2
    준비테이블[p>>r] = ~맵테이블[p mask[r]]
    (여기서, ~는 bitwise NOT 연산자)
    에 의해 상기 태스크의 우선권 p에 대응하는 상기 준비테이블의 비트를 '0'으로 세팅하는 단계와;
    상기 준비테이블의 비트를 '0'으로 세팅한 경우에 준비테이블[p>>r]이 '0'인지 판단한 후, 상기 준비테이블[p>>r]이 '0'이면, 다음 수학식3
    준비그룹 = ~맵테이블[p>>r]
    에 의해 상기 태스크의 우선권 p에 대응하는 상기 준비그룹의 비트를 '0'으로 세팅하는 단계를 포함하는 것을 특징으로 하는 태스크 스케쥴링 방법.
  4. 제1 항에 있어서,
    상기 최고 우선권 결정 단계는,
    상기 준비그룹의 비트들을 이등분하여 우반부가 '0'이면 좌반부를, '0'이 아니면 우반부를 채택하는 단계와;
    루프(loop)를 형성하여 r보다 작은 임의의 양의 정수 k값에 따라 상기 단계에서 채택된 좌반부 또는 우반부를 다시 이등분하여 상기 단계를 반복하는 단계와;
    이진수 0에서 22k-1까지의 값들에서 '1'이 처음 나타나는 비트 위치값을 각 인덱스(index)의 값으로 하는 ROM에 저장된 어레이구조의 언맵테이블을 이용하여, 다음 수학식4
    y = i + 언맵테이블[b]
    (여기서, b는 상기 준비그룹을 반복하여 이등분하는 단계를 통해 최종 채택된 부분이고, i는 상기 준비그룹에서 b의 우측에 있는 비트수)
    에 의해 상기 준비그룹에서 그 값이 '1'인 비트들 중 가장 우측에 위치한 비트의 위치(y)를 구하는 단계와;
    상기 y값에 대응하는 준비테이블[y]의 비트들을 이등분하여 우반부가 '0'이면 좌반부를, '0'이 아니면 우반부를 채택하는 단계와;
    상기 k값에 따라 상기 단계에서 채택된 좌반부 또는 우반부를 다시 이등분하여 상기 단계를 반복하는 단계와;
    상기 언맵테이블을 이용하여, 다음 수학식5
    x = j + 언맵테이블[c]
    P = (y<<r) + x
    (여기서, c는 상기 준비테이블[y]를 반복하여 이등분하는 단계를 통해 최종 채택된 부분이고, j는 상기 준비테이블[y]에서 c의 우측에 있는 비트수이고, <<는 좌측으로 비트를 이동(shift)하는 연산자)
    에 의해 상기 준비테이블[y]에서 그 값이 '1'인 비트들 중 가장 우측에 위치한 비트의 위치(x)를 구하고, 최고 우선권(P)를 결정하는 단계를 포함하는 것을 특징으로 하는 태스크 스케쥴링 방법.
KR10-2000-0021200A 2000-04-21 2000-04-21 태스크 스케쥴링 방법 KR100384339B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2000-0021200A KR100384339B1 (ko) 2000-04-21 2000-04-21 태스크 스케쥴링 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2000-0021200A KR100384339B1 (ko) 2000-04-21 2000-04-21 태스크 스케쥴링 방법

Publications (2)

Publication Number Publication Date
KR20000037391A KR20000037391A (ko) 2000-07-05
KR100384339B1 true KR100384339B1 (ko) 2003-05-16

Family

ID=19666074

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0021200A KR100384339B1 (ko) 2000-04-21 2000-04-21 태스크 스케쥴링 방법

Country Status (1)

Country Link
KR (1) KR100384339B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100625246B1 (ko) * 2003-12-19 2006-09-20 한국전자통신연구원 패킷 스케줄러의 주기적인 자원 할당 방법 및 그 데이터구조를 기록한 기록매체
KR101541156B1 (ko) 2013-11-13 2015-08-03 한국전자통신연구원 다차원 기법의 시공간 결정적 태스크 스케줄링 장치 및 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0895803A (ja) * 1994-09-22 1996-04-12 Nec Yonezawa Ltd タスクスケジュール方法
JPH09160790A (ja) * 1995-12-12 1997-06-20 Matsushita Electric Ind Co Ltd タスクスケジュール装置及びタスクスケジュール方法
JPH10177489A (ja) * 1996-12-17 1998-06-30 Matsushita Electric Ind Co Ltd タスクのスケジュール方法
KR19990050550A (ko) * 1997-12-17 1999-07-05 이계철 실시간 태스크 스케쥴링 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0895803A (ja) * 1994-09-22 1996-04-12 Nec Yonezawa Ltd タスクスケジュール方法
JPH09160790A (ja) * 1995-12-12 1997-06-20 Matsushita Electric Ind Co Ltd タスクスケジュール装置及びタスクスケジュール方法
JPH10177489A (ja) * 1996-12-17 1998-06-30 Matsushita Electric Ind Co Ltd タスクのスケジュール方法
KR19990050550A (ko) * 1997-12-17 1999-07-05 이계철 실시간 태스크 스케쥴링 방법

Also Published As

Publication number Publication date
KR20000037391A (ko) 2000-07-05

Similar Documents

Publication Publication Date Title
US8250107B2 (en) Techniques for graph data structure management
CN101194245B (zh) 具有宽寄存器组体系结构的分组处理器
US6735600B1 (en) Editing protocol for flexible search engines
CN112085644B (zh) 多列数据排序方法、装置、可读存储介质和电子设备
CN106354477A (zh) 半导体器件
US6847958B2 (en) Method of managing index data in main memory database
US6266665B1 (en) Indexing and searching across multiple sorted arrays
US8782082B1 (en) Methods and apparatus for multiple-keyword matching
CN111651137B (zh) 排序方法、装置、电子装置以及计算机设备
CN106202224B (zh) 搜索处理方法及装置
EP0790557A2 (en) Task managemant apparatus
CN110442574B (zh) 一种数据处理方法、电子设备和计算机可读存储介质
US7484068B2 (en) Storage space management methods and systems
KR100384339B1 (ko) 태스크 스케쥴링 방법
Helmbold et al. Two processor scheduling is in NC
CN103294714B (zh) 索引字段的字段属性值的存储位置的确定方法以及装置
Nagayama et al. Minimization of average path length in BDDs by variable reordering
EP0318984B1 (en) Interrogating device
KR101541156B1 (ko) 다차원 기법의 시공간 결정적 태스크 스케줄링 장치 및 방법
US20080209183A1 (en) Fast sparse list walker
US7185340B1 (en) Multiphase system and method of performing operations on data structures
US20040111247A1 (en) Optimization of timing models using bus compression
Sibeyn External connected components
JPS6162974A (ja) ベクトルプロセツサ
Rajasekaran et al. A Comprehensive Analysis of Stack and Queue Data Structures and Their Uses

Legal Events

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

Payment date: 20110503

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee