KR100471746B1 - 연성 실시간 태스크 스케줄링 방법 및 그 기록매체 - Google Patents

연성 실시간 태스크 스케줄링 방법 및 그 기록매체 Download PDF

Info

Publication number
KR100471746B1
KR100471746B1 KR10-2002-0044065A KR20020044065A KR100471746B1 KR 100471746 B1 KR100471746 B1 KR 100471746B1 KR 20020044065 A KR20020044065 A KR 20020044065A KR 100471746 B1 KR100471746 B1 KR 100471746B1
Authority
KR
South Korea
Prior art keywords
time
task
class
real
application task
Prior art date
Application number
KR10-2002-0044065A
Other languages
English (en)
Other versions
KR20040011006A (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-2002-0044065A priority Critical patent/KR100471746B1/ko
Publication of KR20040011006A publication Critical patent/KR20040011006A/ko
Application granted granted Critical
Publication of KR100471746B1 publication Critical patent/KR100471746B1/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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 범용 운영체제에서 멀티미디어 응용 프로그램 등과 같은 특정 응용 프로그램을 원활하게 지원하기 위한 태스크 스케줄링 방법에 관한 것으로서, 특히 시스템에 어느 정도 부하가 걸렸을 때에도 사용자가 원하는 응용 프로그램은 일정 수준 이상의 서비스 품질을 유지할 수 있도록 해주는 범용 운영체제의 태스크 스케줄링 기술에 관한 것이다.

Description

연성 실시간 태스크 스케줄링 방법 및 그 기록매체{A soft real-time task scheduling method and the storage media thereof}
본 발명은 범용 운영체제에서 멀티미디어 응용 프로그램 등과 같은 특정 응용 프로그램을 원활하게 지원하기 위한 태스크 스케줄링(task scheduling) 방법 및 그 기록매체에 관한 것으로서, 특히 시스템에 어느 정도 부하가 걸렸을 때에도 사용자가 원하는 응용 프로그램은 일정 수준 이상의 서비스 품질을 유지할 수 있도록 해주는 운영체제의 태스크 스케줄링 기술에 관한 것이다.
리눅스, 유닉스, 윈도우즈 등과 같은 종래의 범용 운영체제는 주로 사무실 내에서 업무를 수행하기 위한 목적으로 개발된 응용 프로그램을 가정하여 설계된 것으로서, 다중 프로세스(multi-process) 또는 다중 사용자(multi-user) 시스템에서 동시에 수행되는 복수의 응용 프로그램들 사이에 공평하게 자원을 분배하여야 한다는 점이 특히 중요한 요구사항이었다. 따라서, 범용 운영체제는 종래로 태스크 스케줄링에 있어서 통상 시분할 방식(time-sharing scheduling)에 의존하는데, 이 시분할 방식의 스케줄링은 시간을 분할하여 시스템 자원을 할당하는 방식으로 복수의 태스크 간에 자원을 공평하게 분배할 수 있는 반면 시간 요소를 고려하지 않아 태스크가 작업을 완료하여야 하는 기한에 대한 제한을 두지 않는 특징을 갖는다.
그러나, 최근에 인터넷 및 디지털 정보가전 시대가 도래하고 고대역폭의 통신이 가능해지면서 사람들이 사용하는 응용 프로그램에도 변화가 발생하여 디지탈 비디오 파일이나 디지탈 오디오 파일을 재생하는 것과 같은 멀티미디어 분야의 응용 프로그램도 많이 사용되고 있다. 이러한 멀티미디어 응용 프로그램은 종래의 업무용 응용 프로그램과는 달리 실시간성(real-time property)이 특히 중요한데, 시분할 방식의 스케줄링을 사용하는 종래의 범용 운영체제는 실시간 문제를 전혀 고려하지 않고 설계된 것이기 때문에 이러한 멀티미디어 응용 프로그램에 대해서 사용자가 기대하는 수준의 서비스 품질(quality of service: QoS)을 일반적으로 보장하지 못한다.
예들 들어, 초당 25 프레임 및 320 픽셀 * 240 픽셀의 화면크기를 갖는 동영상 데이터가 MPEG4 인코딩되어 인터넷을 통해 제공되는 경우를 생각해 보자. 이 때, 사용자의 시스템 성능이 2000 MIPS이고 이 동영상 데이터를 처리하는데 300 MIPS가 필요하다고 가정하면, 이 시스템은 이 동영상 데이터를 무난하게 처리할 것으로 기대된다. 그러나, 이 시스템에서 동작 중인 태스크의 개수가 30개라고 하면 운영체제가 시분할 방식의 태스크 스케줄링을 할 때 각 태스크에 공평하게 대략 66 MIPS 정도의 자원을 할당할 것이므로 이 동영상 데이터를 처리하는 응용 프로그램에 대해서는 프로세싱 성능이 부족하고, 설사 운영체제 차원에서 자체적으로 우선순위에 따른 스케줄링을 하더라도 기한(time limit)에 대한 고려가 없기 때문에 이렇게 많은 태스크가 동시에 동작하는 상황에서는 이 응용 프로그램에 대해서 적절한 서비스 품질이 보장되지 못한다.
이에, 본 발명은 시스템에 어느 정도 이상의 부하가 걸렸을 때에도 사용자가 원하는 응용 프로그램은 일정 수준 이상의 서비스 품질을 유지할 수 있는 태스크 스케줄링 방법, 및 이 방법을 구현하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체를 제공하는 데에 그 목적이 있다.
삭제
이하, 첨부된 도면을 참조하여 본 발명을 상세히 설명한다.
도 1은 본 발명에 따른 태스크 스케줄링 방법을 적용한 운영체제의 동작 실시예를 도시한 도면이다. 먼저, 응용 프로그램(110)은 프로세서 점유량 설정 모듈(120) 및 바람직하게는 소정의 협상 과정(negotiation process)을 통해서 응용 태스크에 대한 프로세서의 점유량을 예약하고 또한 응용 태스크의 주기특성 정보를 제공한다. 이어서, 프로세서 점유량 설정 모듈(120)은 응용 태스크에 대해서 예약된 프로세서 점유량 및 주기특성 정보를 스케줄링 모듈(140)로 제공하고, 스케줄링 모듈(140)은 이들 정보를 참조하여 후술하는 바와 같이 응용 프로그램(110)에 대한 스케줄링을 수행한다. 또한, 상태감시모듈(130)은 응용 프로그램(110)의 상태를 모니터링하고 그 내용을 스케줄링 모듈(140)로 보고하는데, 이는 스케줄링 동작의 성능을 최적화하기 위한 것으로 본 발명에 있어서 선택적인 사항인 것으로 이해되어야 한다.
전술하였던, 응용 프로그램(110)이 응용 태스크의 주기특성을 제공하는 부분에 대해서 이하 보다 상세히 설명한다. 멀티미디어 응용 프로그램과 같은 응용 프로그램은 프로그램의 목적상 태스크에 주기특성이 내재되어 있는데, 예를 들면 초당 25 프레임으로 MPEG 인코딩된 동영상 데이터를 재생하기 위한 태스크는 동작에 있어서 속성상 40 msec의 주기를 갖게 된다. 응용 프로그램(110)이 프로세서 점유량을 설정하고 주기특성을 제공하는 동작은 도시된 바와 같이 스케줄러의 프로세서 점유량 설정 모듈(120)에 대해서 이루어지는데, 이 때 응용 프로그램(110)에 의해 제공되는 정보는 예컨대 다음의 표 1에 제시된 바와 같다.
주기(Ti) 태스크가 일정 패턴을 갖는 작업을 반복할 때 이 패턴이 나타나는 시간 간격
최악 수행시간(Ci) 태스크의 한 주기내에서 필요로하는 프로세서 사용시간의 최대값
주기넘김 정책 주기넘김을 명시적으로 할 것인지, 아니면 암묵적으로 할 것인지에 대한 정책
적응 정책 태스크의 상태를 동적으로 반영할 때 사용하는 정책
표 1에서 주기(Ti)와 최악 수행시간(Ci)은 해당 태스크의 프로세서 점유량을 포함한 실시간적 특성을 기술하기 위한 것이다. 전술한 바와 같이, 주기(Ti)는 응용 프로그램의 목적상 태스크에 내재되어 있는 특성이고, 최악 수행시간(Ci)은 하나의 주기 내에서 특정 태스크가 작업을 수행할 때 소요되는 프로세서 사용시간의 최대값이다. 전술한 예에서, 태스크는 하나의 프레임에 대하여 40 msec의 주기를 갖는데, 한 주기 내에서 동영상 프레임 데이터를 디코딩(decoding)하여 재생함에 있어서 최소 0.5 msec에서 최대 15 msec가 소요된다면 이 경우 최악 수행시간(Ci)은 15 msec로 설정될 것이다. 다만, 최악 수행시간(Ci)은 주어진 상황에 대해서 명확하게 미리 얻어지는 것이 아닌 경우가 많을 것인데, 이러한 경우 바람직하게는 응용 프로그램(110)은 최악 수행시간(Ci) 값에 대해 소정의 초기값을 제공하고 적절한 최악 수행시간(Ci) 값은 상태감시모듈(130)을 참조하여 후술되는 적응 메커니즘을 통해서 얻어진다.
표 1의 주기넘김 정책은 멀티미디어 응용 프로그램과 같은 특정 응용 프로그램에 있어서 주기적인 특성을 알리기 위한 정책으로서, 이 주기넘김 정책을 적절히 설정함으로써 기존에 작성된 응용 프로그램을 수정하지 않고도 본 발명에 따라 실시간 태스크 적으로 수행하도록 할 수 있다. 주기넘김 정책에는 명시적인 방법과 암묵적인 방법이 있는데, 이에 대해서는 본 명세서의 이후에 보다 상세히 설명한다.
표 1의 마지막 항목인 적응 정책은 응용 프로그램(110)의 수행 시에 멀티미디어의 고유 특성에 의해서 나타나는 변화를 모니터링하여 태스크 스케줄링에 반영함으로써 보다 양호한 서비스 품질을 제공하기 위해서 제공되는데, 이 항목에 대해서도 본 명세서의 이후에 보다 상세히 설명한다.
도 2는 본 발명에 따른 태스크 스케줄링 방법의 실시예를 도시한 도면으로서, 도 1에서 스케줄링 모듈(140)이 응용 프로그램(110)을 스케줄링하는 방식을 도 2를 참조하여 설명한다. 스케줄링 모듈(140)은 응용 프로그램(110)의 태스크를 그 속성에 따라 소정의 클래스로 나누어 관리하는데, 본 명세서의 실시예에서는 실시간 클래스(real-time class), 허용초과 클래스(overrun class), 그리고 비실시간 클래스(non-real-time class)로 구분한다. 실시간 클래스는 멀티미디어 응용 프로그램과 같은 실시간 태스크들의 클래스이고, 허용초과 클래스는 실시간 태스크들 중에서 스케줄링 모듈(140)과의 약속을 위반한 태스크들의 클래스이며, 비실시간 클래스는 전술한 실시간 클래스와 허용초과 클래스에 속하지 않는 나머지 태스크들의 클래스이다.
본 발명에 따른 스케줄링 모듈(140)은 복수의 서브 스케줄러(sub-scheduler)를 포함하는데, 도 2에 도시된 실시예에서는 최상위 수준 서브 스케줄러(210), 실시간 클래스 서브 스케줄러(220), 허용초과 클래스 서브 스케줄러(230), 그리고 비실시간 클래스 서브 스케줄러(240)를 포함한다. 이하, 각 서브 스케줄러에 대해서 설명하고, 이들 서브 스케줄러들이 협조동작하여 태스크 스케줄링을 구성하는 부분에 대해서 설명한다.
최상위 수준 서브 스캐줄러(210)는 프로세서 자원을 소정의 프로세서 배분 비율에 따라서 전술한 태스크 클래스에 할당하는 역할을 담당한다. 도 2에 표시된 기호 Rrt, Rov, Rnrt는 각각 실시간 클래스, 허용초과 클래스, 비실시간 클래스에 할당된 프로세서 배분 비율로서, 정의에 의해 Rrt, Rov, Rnrt의 합은 1이다. 본 발명에서는 복수의 태스크 클래스가 공통의 프로세서 자원을 공유하는데, 각각의 태스크 클래스에 할당된 프로세서 자원은 이 프로세서 배분 비율에 비례하여 설정되고, 따라서 도 2에서 최상위 수준 서브 스케줄러(210)는 이러한 비례공유 원칙에 따라 최상위 수준 스케줄링을 수행한다.
전술한 프로세서 배분 배율은 일반적으로 시스템 관리자에 의해 미리 설정되는데, 선택적으로 상황에 따라 조정될 수도 있다. 즉, 실시간 클래스에 속하고자 하는 태스크의 개수가 많거나 하는 경우에는 사용자가 적절히 조정할 수도 있고 혹은 시스템 소프트웨어가 동적으로 조정할 수도 있다.
최상위 수준 서브 스캐줄러(210)가 전술한 프로세서 배분 비율에 따라서 이번에 스케줄링할 태스크 클래스를 결정하는 일 실시예로서, 본 명세서에서는 공지의 크레딧/데빗 알고리즘(Credit/Debit algorithm)을 사용한다. 공지의 크레딧/데빗 알고리즘은 도 3의 의사코드(pseudo code)와 같이 표현될 수 있는데, 도 3에 표시된 기호 Trt, Tov, Tnrt는 각각 실시간 클래스, 허용초과 클래스, 비실시간 클래스가 보유하는 크레딧의 양을 계수하는 계정을 나타내고, 기호 Tu는 태스크 스케줄링의 기본 단위(time quantum)를 나타내며, 기호 τrt, τov, τnrt는 각각 실시간 클래스, 허용초과 클래스, 비실시간 클래스의 식별자(task_class)를 나타낸다. 한편, 도 3의 의사코드는 크레딧/데빗 알고리즘을 개략적으로 나타낸 것으로서 실제로 구현함에 있어서는 각 변수들의 초기값을 포함한 여러 요소들이 추가적으로 고려되어야 한다.
도 3의 크레딧/데빗 알고리즘의 의사코드로부터 태스크 클래스 간의 우선순위 우열을 알 수 있는데, 실시간 클래스가 가장 높은 우선순위를 가지고 있고 허용초과 클래스가 그 다음의 우선순위를 가지며 비실시간 클래스가 가장 낮은 우선순위를 갖는다는 것을 알 수 있다.
이러한 방법으로 다음으로 스케줄링할 태스크 클래스가 선정되면 최상위 수준 서브 스캐줄러(210)는 선택된 클래스의 서브 스캐줄러(220, 230, 240)에게 Tu의 시간동안 프로세서를 사용할 수 있도록 배정하고, 배정된 서브 스케줄러(220, 230, 240)는 소정의 태스크 스케줄링 알고리즘을 사용하여 해당 클래스에 속하는 태스크들 중에서 특정 태스크를 선정하여 Tu를 사용할 수 있도록 한다.
도 2에서 실시간 클래스 서브 스케줄러(220)와 허용초과 클래스 서브 스케줄러(230)는 실시간 태스크를 스캐줄링하기 위한 서브 스케줄러로서 사용하는 스케줄링 알고리즘도 실시간 특성에 맞도록 최소기한(Earliest Deadline First : EDF) 스케줄링 알고리즘 등으로 설정되는 것이 바람직하다. 다만, 허용초과 클래스 서브 스케줄러(230)에 대해서는 클래스의 특성상 EDF 스케줄링 알고리즘과 같은 실시간 응용에 최적화된 스케줄링 알고리즘 외에도 다소 루스(loose)한 알고리즘을 사용하는 것도 가능하다.
또한, 비실시간 클래스 서브 스케줄러(240)는 통상의 시분할 스케줄링 알고리즘, 예컨대 라운드로빈(Round-Robin) 방식이나 선입선출(First-In First-Out) 방식을 사용하더라도 무방한데, 실제 구현에 있어서는 범용 운영체제에서 사용되는 통상의 시분할 스케줄러가 비실시간 클래스 서브 스케줄러(240)의 역할을 담당하도록 설정할 수 있다.
최상위 수준 서브 스캐줄러(210)에 의해 선택된 태스크 클래스에 때로는 수행할 태스크가 존재하지 않는 경우가 있을 수 있는데, 예컨대 해당 클래스 내에 현재 동작중인 태스크가 존재하지 않거나 혹은 해당 클래스 내의 모든 태스크가 블록상태(blocked state)에 있는 경우와 같이 프로세서 사용이 필요한 태스크가 존재하지 않는 경우인데, 이러한 경우에는 바람직하게는 선택된 태스크 클래스에서 주어진 시간 Tu를 소모하는 것이 아니라 바로 복귀하여 전술한 바와 같은 클래스 선택 작업을 다시 수행하여 새로운 태스크 클래스를 선정한다.
도 1에서 응용 프로그램(110)과 프로세서 점유량 설정 모듈(120) 사이에서 스케줄링 모듈(140)의 프로세서 점유량을 협상 및 설정하는 부분에 대해서 보다 상세히 설명한다. 이 과정은 응용 프로그램(110)으로부터의 프로세서 점유량 요구에 대하여 프로세서 점유량 설정 모듈(120)이 수락 여부를 결정하고 필요한 시스템 자원, 특히 프로세서 점유량을 스케줄링 모듈(140)에 대해서 예약하는 과정이다.
본 명세서의 실시예에서 프로세서 점유량 설정 모듈(120)에 의한 수락 여부의 판단은 요구된 프로세서 점유량이 현재 시스템에서 할당가능한 프로세서 용량을 초과하는지 여부를 검사함으로써 이루어진다. 이를 위해, 먼저 시스템에서 각각의 클래스 별로 할당가능한 프로세서 점유량이 계산되어야 하는데, 이는 시스템 관리자가 설정한 실시간 태스크 클래스의 프로세서 배분 비율(Rrt, Rov, Rnrt ) 및 현재 시스템이 받아들인 각 태스크 클래스별 예약량에 의해서 결정되고, 이 계산은 전술한 최소기한(EDF) 스케줄링 알고리즘을 사용할 때 매우 간단하다.
실시간 클래스에 대해서 현재 할당가능한 프로세서 점유량을 계산하는 과정 및 프로세서 점유량의 예약 요구를 검토하는 과정을 설명하면 다음과 같다. 실시간 클래스에 포함되어 있는 실시간 태스크 각각의 주기와 최악 수행시간을 Ti와 Ci라고 하면, 현재 시스템에서 할당가능한 실시간 클래스를 위한 프로세서 점유량은 다음의 수학식 1에 의해 결정된다.
이어서, 특정 실시간 태스크 k의 예약 요구를 검토하는데, 수학식 1의 할당가능한 값에 대해서 태스크 k의 주기(Tk)와 최악 수행시간(Ck)이 다음의 수학식 2를 만족하면 실시간 태스크 k의 예약 요구가 수락된다.
이렇게 예약 요구가 수락된 실시간 태스크들은 이후에는 도 2에 도시된 실시간 클래스 서브 스캐줄러(220)에 의해서 스케줄링된다.
도 1에서 상태감시모듈(130)이 응용 프로그램(110)의 상태를 모니터링하여 이를 스케줄링 모듈(140)의 태스크 스케줄링 동작에 반영하는 본 발명의 적응 메커니즘(adaptive mechanism)에 대해서 기술한다. 이러한 적응 메커니즘이 필요한 이유는 통상의 멀티미디어 응용 프로그램들은 한 주기 내에서 필요로하는 수행시간이 일정하지 않기 때문에, 최악의 수행시간(Ci)을 매 주기마다 항상 보장해주게 되면 많은 프로세서 자원이 낭비되는 문제가 발생하기 때문이다.
더욱이, 멀티미디어 응용 프로그램은 설정된 기한 내에 동작을 완료하지 못하더라도 재생의 품질이 약간 저하되는 것 등의 결과만을 가져오는 소위 연성 실시간 태스크(soft real-time task)의 특성을 갖고 있기 때문에, 전술한 바와 같은 심각한 자원낭비 문제를 감수하면서 항상 최악의 수행시간을 철저하게 지켜줄 필요성은 그다지 높지 않다. 따라서, 응용 프로그램(110)이 수행시에 실제로 필요로하는 프로세서 시간을 모니터링하고 이에 따라 적절한 프로세서 시간을 보장한다면 항상 최악 수행시간(Ci)을 보장하도록 프로세서 점유량을 예약하는 것에 비해 보다 많은 실시간 태스크의 예약을 수용할 수 있다.
이에 따르면, 각 태스크들이 처음에 수행을 시작하면서 초기에 예약한 프로세서 점유량은 상태감시모듈(130)의 상태 모니터링 결과에 따라서 적응적으로 감소하거나 혹은 증가한다. 그러나, 이에 의해서 문제가 발생할 수 있는데, 응용 태스크에 대해서 항상 최악의 수행시간을 보장해주지 못하기 때문에 간혹 실시간 클래스의 일부 태스크가 스케줄링 모듈(140)이 허용한 프로세서 점유량을 초과하여 사용하려고 하는 경우가 발생한다. 이러한 허용초과 이벤트는 운영체제 커널 내부에서 태스크를 관리하기 위해서 사용하는 자료구조에 태스크 스케줄링마다 이를 기록하는 영역을 둠으로써 감지된다.
허용초과 이벤트(overrun event)가 발생한 경우에 해당 태스크를 처리하는 부분에 대해서 보다 상세히 설명한다. 특정 태스크가 (i)번째 주기에서 허용초과 이벤트를 발생시키면 이 태스크는 일단 실행이 블록되고 허용초과 클래스의 태스크로서 전환된다. 이어서, 실시간 클래스의 다른 태스크에 대해서 스케줄링이 이루어지고, 최상위 수준 서브 스케줄러(210)가 실시간 클래스의 스케줄링을 종료하고 허용초과 클래스로 최상위 수준 스케줄링을 수행하면 앞서 허용초과 이벤트를 발생시켰던 태스크는 허용초과 클래스 서브 스케줄러(210)에 의해 스케줄링되어 계속해서 나머지 작업을 실행하고, 이후의 주기, 예컨대 (i+1)번째 주기에서는 원래대로 실시간 클래스로 복귀되어 관리된다.
본 명세서의 실시예에서 사용되는 적응정책은 전술한 표 1에서 제시된 적응정책에 따른다. 본 명세서에서 실시예로서 제시하는 적응정책은 두 가지인데, 하나는 지수평균(exponential average) 정책이고 다른 하나는 표준편차(standard deviation) 정책이다. 지수평균 정책에 따르면 다음 주기에서 특정 태스크에 대해서 예약되는 프로세서 점유량은 다음의 수학식 3을 사용하여 계산된다.
수학식 3에서 Yi는 (i)번째 주기에서 예약된 프로세서 점유량을 의미하고, Xi는 (i)번째 주기에서 모니터링된 실제 프로세서 점유량을 의미한다. 변수 a는 0보다 크고 1보다 작은 상수로서 적응 속도를 조절하기 위한 값이다. 수학식 3은 본 발명에 있어서 지수평균 정책의 일 실시예로서 이해되어야 한다.
한편, 표준편차 정책에 따르면 다음 주기에서 특정 태스크에 대해서 예약되는 프로세서 점유량은 현재까지 실제 사용된 프로세서 점유량의 평균과 그 표준편차를 더한 값으로 계산되는데, 다음의 수학식 4와 같다.
수학식 4에서 Yi+1은 (i+1)번째 주기에서 예약된 프로세서 점유량을 의미하고, mean(X)i는 (i)번째 주기까지 모니터링된 실제 프로세서 점유량의 평균값을 의미하며, σi는 (i)번째 주기까지 실제 사용된 프로세서 점유량의 표준편차를 의미한다. 수학식 4는 본 발명에 있어서 표준편차 정책의 일 실시예로서 이해되어야 한다.
적응정책의 실시예로서 제시한 앞의 두 가지 방식 이외에도 여러가지 방법의 적응정책이 사용될 수 있다. 또한, 전술한 허용초과 이벤트가 발생했을 때 해당 태스크에 대해서는 실시예에 따라서 통상의 적응정책을 적용할 수도 있고 혹은 최악 수행시간(Ci)에 기초하여 프로세서 점유량을 예약하는 것과 같은 특별한 적응정책을 적용할 수도 있다.
앞의 표 1을 참조하여 전술한 주기넘김 정책에 대해서 설명한다. 주기넘김은 태스크가 한 주기 내에서 소정의 작업을 완료한 후 스케줄링 모듈(140)에 대해서 다음 주기가 시작되면 일깨워달라고 지시하는 동작을 의미하는데, 이는 상태감시모듈(130)에게는 응용 프로그램(110)의 상태를 모니터링 및 보고하는 바람직한 시점으로서 선택될 수 있다. 즉, 각 태스크가 발생시키는 주기넘김 이벤트를 통해 현재 주기에서 태스크가 실제 점유하는 시간의 종료시점을 검출함으로써 특정 태스크가 현재 주기에서 실제로 사용한 프로세서 점유량을 알아낼 수 있다.
표 1을 참조하여 주기넘김에는 명시적인 방법과 암묵적인 방법의 두 가지가 있다고 전술한 바 있다. 응용 프로그램(110)을 본 명세서에서 개시하는 방식에 맞도록 처음부터 작성하는 경우에는 응용 프로그램(110)의 실시간 태스크는 주기넘김 방법으로서 예컨대 "다음주기 기다림(wait next period)"과 같은 특정의 시스템 콜을 호출하도록 작성하는 것이 바람직한데, 이를 통해 명시적으로 주기넘김 이벤트를 스케줄링 모듈(140)로 알려줄 수 있다.
한편, 기존에 작성된 응용 프로그램을 수정하지 않고 본 발명을 적용하여 실시간 태스크 적으로 수행시키는 데에는 약간은 다른 방법이 필요하다. 이러한 경우, 도 1에서 응용 프로그램(110)의 태스크에 대해서 프로세서 점유량을 설정 및 예약하는 과정은 별도의 프로세스에 의해서 대리될 수 있다. 즉, 기존에 작성된 응용 프로그램(110)을 실시간 태스크 적으로 만들어서 프로세서 점유량을 예약할 수 있도록 하기 위해서는 제3의 별도 프로세스가 응용 프로그램(110)의 태스크에 대해서 주기(Ti) 및 최악 수행시간(Ci)을 대리하여 전달하도록 할 수 있다.
기존의 응용 프로그램(110)은 명시적인 주기넘김 이벤트를 발생시키지 않도록 작성된 경우가 일반적인데, 이러한 경우 표 1의 주기넘김 정책은 "암묵적"으로 설정되어야 한다. 그런데, 이렇게 하면 응용 프로그램(110)의 태스크를 관리함에 있어서 특정 태스크가 허용된 프로세서 점유량을 초과하여 사용하는 경우에 이 태스크를 허용초과 클래스로 옮기는 과정이 생략되고, 대신 이 시점을 암묵적으로 주기넘김 이벤트가 발생한 시점으로 간주할 수 있다.
그런데, 전술한 바와 같이 암묵적인 주기넘김을 사용하는 경우에는 상태감시모듈(130)의 상태 모니터링 및 보고, 그리고 이에 따른 스케줄링 적응이 불가능해지므로 본 발명에서는 멀티미디어 응용 프로그램의 일반적인 프로그래밍 방법론을 이용한 한 가지 선택가능한 대안을 제시하고자 한다. 즉, 보통의 멀티미디어 응용 프로그램은 각 프레임 사이의 재생 간격을 맞추기 위해서 운영체제의 간격 타이머 시스템 콜을 이용하는데, 예컨대 초당 25 프레임으로 인코딩된 멀티미디어 데이터를 재생하기 위해서는 멀티미디어 응용 프로그램은 운영체제의 타이머 시스템 콜을 이용하여 40 msec의 시간 간격을 설정한다. 따라서, 이러한 멀티미디어 응용 프로그램의 실시간 태스크가 타이머 시스템 콜을 호출 및 참조하는 시점을 암묵적으로 현재 주기의 끝으로 보면 응용 프로그램(110)의 상태 모니터링 및 보고 동작을 구현할 수 있다.
또한, 이와 같은 적응정책을 통해서 실제 동작시에 적절한 프로세싱 점유량을 얻기 위한 정보를 획득한 경우에는 이 정보를 해당 멀티미디어 파일이나 프로그램 데이타 파일 등에 기록 및 첨부함으로써 이후의 실행에 있어서 효과적으로 재사용할 수 있다.
본 발명의 스케줄링 방법에 의하면 시스템에 어느 정도 부하가 걸렸을 때에도 사용자가 원하는 응용 프로그램은 소망하는 일정 수준 이상의 서비스 품질을 유지할 수 있는 효과가 있다.
또한, 본 발명의 스케줄링 방법에 의하면 시스템에 어느 정도 부하가 걸렸을 때에도 멀티미디어 실행 결과에 있어서 소망하는 일정 수준 이상의 서비스 품질을 유지할 수 있는 효과가 있다.
또한, 본 발명의 스케줄링 방법에 의하면 기존의 응용 프로그램을 수정하지 않더라도 전술한 효과를 달성할 수 있는 장점이 있다.
도 1은 본 발명에 따른 태스크 스케줄링 방법을 적용한 운영체제의 동작 실시예를 도시한 도면.
도 2는 본 발명에 따른 태스크 스케줄링 방법의 실시예를 도시한 도면.
도 3은 본 발명을 위한 크레딧/데빗 알고리즘의 의사코드를 도시한 도면.
<도면의 주요 부분에 대한 부호의 설명>
110: 응용 프로그램
120: 프로세서 점유량 설정 모듈
130: 상태 감시 모듈
140: 스케줄링 모듈
210: 최상위 수준 서브 스케줄러
220: 실시간 클래스 서브 스케줄러
230: 허용초과 클래스 서브 스케줄러
240: 비실시간 클래스 서브 스케줄러

Claims (14)

  1. 범용 운영체제에서 복수의 응용 태스크를 실시간 클래스, 허용초과 클래스, 비실시간 클래스로 분류 관리하고 각각의 클래스에 대해 특정의 프로세서 배분비율에 따라 응용 태스크를 스케줄링하는 방법으로서,
    실시간 클래스의 응용 태스크 별로 주기특성 및 소망 프로세싱 요구량을 제공받는 기본설정 단계; 상기 프로세서 배분비율에 따라 금번에 수행할 클래스를 선택하는 메인 스케줄링 단계; 및 상기 선택된 클래스 내에서 특정 응용 태스크를 선정하여 금번 단위시간에 대한 프로세서 자원을 할당하는 서브 스케줄링 단계를 포함하여 구성되며,
    실시간 태스크에 속하는 응용 태스크에 대한 상기 소망 프로세싱 요구량은 상기 기본설정 단계에서 상기 응용 태스크의 1주기 내 최대 수행시간에 따라 초기설정되고 응용 태스크의 실행에 따라 주기별 실제 프로세싱 점유량을 모니터링하여 그 결과에 따라 차후 주기에 대해 재설정되며,
    상기 메인 스케줄링 단계에서 실시간 클래스가 선택되면 실시간 클래스의 응용 태스크를 서브 스케줄링하고 상기 응용 태스크의 주기특성에 따른 특정 주기에서 상기 응용 태스크의 실제 프로세싱 점유량이 상기 응용태스크에 대해 설정된 소망 프로세싱 요구량을 초과하는 경우에 상기 응용 태스크를 블로킹한 후 허용초과 클래스로 이동시키고,
    상기 메인 스케줄링 단계에서 허용초과 클래스가 선택되면 허용초과 클래스의 응용 태스크를 서브 스케줄링하여 상기 미실행 부분을 수행하고 상기 응용 태스크의 수행완료 시에 상기 응용 태스크를 실시간 클래스로 복귀시키는 것을 특징으로 하는 태스크 스케줄링 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 제1항에 있어서, 상기 서브 스케줄링 단계는 실시간 클래스에 대하여 최소기한(Earliest Deadline First) 스케줄링 알고리즘을 적용하고 비실시간 클래스에 대하여 시분할 스케줄링 알고리즘을 적용하는 것을 특징으로 하는 태스크 스케줄링 방법.
  6. 삭제
  7. 삭제
  8. 제1항에 있어서, 상기 허용초과 클래스의 응용 태스크를 실시간 클래스로 복귀시키는 시점은 상기 응용 태스크의 주기특성에 따른 다음 주기인 것을 특징으로 하는 태스크 스케줄링 방법.
  9. 삭제
  10. 제1항에 있어서, 상기 소망 프로세싱 요구량의 재설정은 수학식
    또는
    [여기서, Yi는 (i)번째 주기에 대해 설정된 소망 프로세싱 요구량; Xi는 (i)번째 주기에서 모니터링된 실제 프로세싱 점유량; mean(X)i는 (i)번째 주기까지 모니터링된 실제 프로세서 점유량의 평균값; σi는 (i)번째 주기까지 모니터링된 실제 프로세서 점유량의 표준편차]으로 이루어지는 것을 특징으로 하는 태스크 스케줄링 방법.
  11. 삭제
  12. 제1항에 있어서, 상기 실제 프로세싱 점유량은 상기 응용 태스크의 주기넘김 이벤트 또는 간격 타이머 시스템 콜을 검출하여 모니터링하는 것을 특징으로 하는 태스크 스케줄링 방법.
  13. 삭제
  14. 제1항, 제5항, 제8항, 제10항, 제12항 중 어느 하나의 항에 따른 태스크 스케줄링 방법을 구현하는 프로그램을 기록한 컴퓨터로 판독가능한 정보기록매체.
KR10-2002-0044065A 2002-07-26 2002-07-26 연성 실시간 태스크 스케줄링 방법 및 그 기록매체 KR100471746B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0044065A KR100471746B1 (ko) 2002-07-26 2002-07-26 연성 실시간 태스크 스케줄링 방법 및 그 기록매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0044065A KR100471746B1 (ko) 2002-07-26 2002-07-26 연성 실시간 태스크 스케줄링 방법 및 그 기록매체

Publications (2)

Publication Number Publication Date
KR20040011006A KR20040011006A (ko) 2004-02-05
KR100471746B1 true KR100471746B1 (ko) 2005-03-16

Family

ID=37319339

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0044065A KR100471746B1 (ko) 2002-07-26 2002-07-26 연성 실시간 태스크 스케줄링 방법 및 그 기록매체

Country Status (1)

Country Link
KR (1) KR100471746B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100791296B1 (ko) * 2006-03-03 2008-01-04 삼성전자주식회사 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
KR101366802B1 (ko) * 2007-01-05 2014-02-21 삼성전자주식회사 실시간 운영체제를 위한 스케쥴링 방법 및 장치
KR101827289B1 (ko) 2011-11-08 2018-03-23 한국전자통신연구원 실시간 운영체제에서 태스크 스케줄링 방법

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0969054A (ja) * 1995-08-31 1997-03-11 Nec Corp ジョブクラス判定方式
KR19980086596A (ko) * 1997-05-22 1998-12-05 제프리 엘. 포맨 컴퓨터 자원에 대한 비례적인 사용 및 응답 시간의 스케쥴링
US5944778A (en) * 1996-03-28 1999-08-31 Hitachi, Ltd. Periodic process scheduling method
KR20010006756A (ko) * 1999-03-25 2001-01-26 포만 제프리 엘 시스템 자원을 스케쥴링하는 방법 및 시스템
JP2001022595A (ja) * 1999-07-06 2001-01-26 Nec Corp リアルタイム処理タスク制御装置及びそのプログラムを記録したコンピュータ読取り可能な記録媒体
JP2001043096A (ja) * 1999-07-29 2001-02-16 Atr Adaptive Communications Res Lab ソフトリアルタイムにおけるスケジューリング方法
KR20010023653A (ko) * 1997-09-04 2001-03-26 벤자민 에프 커틀러 프로세서 자원분배기 및 방법

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0969054A (ja) * 1995-08-31 1997-03-11 Nec Corp ジョブクラス判定方式
US5944778A (en) * 1996-03-28 1999-08-31 Hitachi, Ltd. Periodic process scheduling method
KR19980086596A (ko) * 1997-05-22 1998-12-05 제프리 엘. 포맨 컴퓨터 자원에 대한 비례적인 사용 및 응답 시간의 스케쥴링
KR20010023653A (ko) * 1997-09-04 2001-03-26 벤자민 에프 커틀러 프로세서 자원분배기 및 방법
KR20010006756A (ko) * 1999-03-25 2001-01-26 포만 제프리 엘 시스템 자원을 스케쥴링하는 방법 및 시스템
JP2001022595A (ja) * 1999-07-06 2001-01-26 Nec Corp リアルタイム処理タスク制御装置及びそのプログラムを記録したコンピュータ読取り可能な記録媒体
JP2001043096A (ja) * 1999-07-29 2001-02-16 Atr Adaptive Communications Res Lab ソフトリアルタイムにおけるスケジューリング方法

Also Published As

Publication number Publication date
KR20040011006A (ko) 2004-02-05

Similar Documents

Publication Publication Date Title
JP5452496B2 (ja) 階層的予約資源スケジューリング・インフラストラクチャ
US6385638B1 (en) Processor resource distributor and method
Rajkumar et al. Resource kernels: A resource-centric approach to real-time and multimedia systems
CA2179842C (en) Dynamic hierarchical resource scheduling for continuous media
US6779181B1 (en) Micro-scheduling method and operating system kernel
US7665090B1 (en) System, method, and computer program product for group scheduling of computer resources
Goyal et al. A hierarchical CPU scheduler for multimedia operating systems
US6223201B1 (en) Data processing system and method of task management within a self-managing application
Molano et al. Real-time filesystems. Guaranteeing timing constraints for disk accesses in RT-Mach
KR20040058299A (ko) 예산 잉여를 태스크에 할당하는 방법 및 시스템
US20050246705A1 (en) Method for dynamically allocating and managing resources in a computerized system having multiple consumers
KR20020097154A (ko) 작업에 예산을 할당하기 위한 방법 및 시스템
Buttazzo Rate monotonic vs. EDF: Judgment day
US10643193B2 (en) Dynamic workload capping
JP2000056992A (ja) タスクスケジューリングシステム、方法及び記録媒体
JP3664021B2 (ja) サービスレベルによる資源割当方式
KR100471746B1 (ko) 연성 실시간 태스크 스케줄링 방법 및 그 기록매체
US20080022287A1 (en) Method And System For Transferring Budgets In A Technique For Restrained Budget Use
US20070083863A1 (en) Method and system for restrained budget use
CN112286673B (zh) 一种节点资源调配方法及装置
JPH11175357A (ja) タスク管理方法
Marchand et al. Providing Memory QoS Guarantees for Real-Time Applications
WO2021129917A1 (en) Method for allocating processor resource, computing unit and video surveillance arrangement
Taranovsky CPU Scheduling in Multimedia Operating Systems
Bavier The Tyche CPU Scheduler

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
N231 Notification of change of applicant
FPAY Annual fee payment

Payment date: 20130503

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140124

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee