KR20130051076A - 응용프로그램 스케줄링 방법 및 장치 - Google Patents

응용프로그램 스케줄링 방법 및 장치 Download PDF

Info

Publication number
KR20130051076A
KR20130051076A KR1020110116219A KR20110116219A KR20130051076A KR 20130051076 A KR20130051076 A KR 20130051076A KR 1020110116219 A KR1020110116219 A KR 1020110116219A KR 20110116219 A KR20110116219 A KR 20110116219A KR 20130051076 A KR20130051076 A KR 20130051076A
Authority
KR
South Korea
Prior art keywords
task
bound
value
scheduling
cpu
Prior art date
Application number
KR1020110116219A
Other languages
English (en)
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 KR1020110116219A priority Critical patent/KR20130051076A/ko
Priority to US13/657,237 priority patent/US20130117757A1/en
Publication of KR20130051076A publication Critical patent/KR20130051076A/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
    • 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)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 발명은 응용프로그램 스케줄링 기술에 관한 것으로, 운영체제의 스케줄러에서 특정 응용프로그램의 태스크 실행 명령을 입력 받은 경우, 해당 태스크에 대한 CPU-BOUND 및 IO-BOUND 태스크 특성 정보의 입력 여부를 확인하여 태스크 특성 정보를 기반으로 우선순위와 타임 슬라이스를 활용하여 CPU 스케줄링을 수행하는 것을 특징으로 한다. 본 발명에 의하면, 운영체제 자체적으로 인지하기 힘든 각각의 태스크에 대한 특정 정보를 입력 받아 최적의 스케줄링을 수행 가능하게 할 수 있다.

Description

응용프로그램 스케줄링 방법 및 장치{METHOD AND APPARATUS FOR SCHEDULING APPLICATION PROGRAM}
본 발명은 하드웨어의 운영체제를 통한 스케줄링 기술에 관한 것으로서, 특히 운영체제의 스케줄러로 입력된 태스크 특성 정보를 기반으로 우선순위(priority)와 타임 슬라이스(time slice)를 활용하여 중앙처리장치(CPU) 자원의 스케줄링을 수행하는데 적합한 응용프로그램 스케줄링 방법 및 장치에 관한 것이다.
최근 들어 하드웨어는 고밀도 직접 기술, 조립 기술 및 냉각 기술 등의 기술적 진보로 인해 더욱 더 발전하고 있으며, 그에 따라 적어도 하나의 하드웨어에서 다양한 작업을 수행할 수 있는 운영체제가 탑재되고 있는 추세이다. 여기서 운영체제는 다수의 응용 프로그램(태스크)의 실행과 관리를 수행하게 되며, 응용 프로그램의 실행에 있어서 그 실행 및 관리 정책에 따라 성능 차이를 가져올 수 있다.
이러한 운영체제 내에서 성능 차이를 가져올 수 있는 중요한 요소가 스케줄러를 통한 스케줄링이다. 스케줄링 기법은 응용 프로그램이 실제 구동되는 단위로 볼 수 있는 태스크들을 가장 효율적으로 실행시켜주는 것을 의미하는데, 운영체제에서 볼 때는 시스템 수준의 태스크와 다양한 응용 태스크들이 동시에 돌아가는 상황에서 제한된 자원인 CPU 자원을 시간단위로 할당하여 사용할 수 있도록 한다.
일반적인 운영체제에서 스케줄러를 통해 태스크를 스케줄링할 경우, 활용하는 중요한 요소는 우선순위(priority)와 타임 슬라이스(time slice)로서, 스케줄러는 스케줄링 가능한 상태의 태스크 중 타임 슬라이스(각 태스크별 남아있는 CPU 사용시간)가 남아있고 우선순위가 가장 높은 태스크를 찾아 우선적으로 CPU를 할당하게 된다.
이와 같이 특정 태스크가 CPU를 할당 받아 실행되면 해당 태스크의 타임 슬라이스는 실행되는 만큼 줄어들게 되고, 타임 슬라이스가 모두 소진되거나 더 높은 우선순위의 태스크가 여러 가지 이유로 생기면 스케줄러는 실행되던 태스크의 실행을 멈추고 나머지 태스크 중에서 가장 우선순위가 높은 태스크를 찾아 다시 실행하게 되는 과정을 반복하여 거치게 된다.
이러한 스케줄링 기법은 실로 다양한 방법이 존재하지만 아직도 해결하지 못한 부분 중의 하나가 CPU-BOUND 태스크와 IO-BOUND 태스크를 운영체제가 스스로 판단하여 스케줄링에 반영하는 부분이다.
여기서 CPU-BOUND는 수행하는 컴퓨팅 작업이 CPU의 속도에 의해 결정되는 상태를 말하는 것이고, IO-BOUND는 수행하는 컴퓨팅 작업이 데이터의 입출력 시간에 의해 결정되는 상태를 말하며, 데이터 요구시간이 처리시간 보다 길 때 발생할 수 있다.
그러므로 CPU 스케줄링에 있어서는 대부분의 시간을 입출력 요청을 보내고 기다리는데 사용하고, CPU 사용 시간이 짧은 IO-BOUND가 CPU-BOUND 보다 높은 우선순위를 가질 수 있다.
운영체제가 태스크를 CPU-BOUND와 IO-BOUND로 명확하게 잘 구분할 수 있다면 스케줄링에 큰 도움이 되어 운영체제가 탑재되는 시스템의 성능 향상을 기할 수 있다. 일반적으로 IO-BOUND 태스크는 파일시스템 IO, 디바이스 IO 등을 주로 많이 하는 일종의 이벤트 처리적 성격이 강하고 짧은 시간 CPU를 잡고 일을 하게 되므로, 타임 슬라이스는 짧게 우선순위는 높게 주고, 반대로 CPU-BOUND 태스크는 수식계산, 그래픽계산 등 주로 CPU를 많이 잡고 계산을 하는 성격이 강하므로 한번 CPU를 잡았을 때 되도록 오랜 시간 CPU를 사용하여 캐쉬 기능 등에 의해 성능이 높아질 수 있도록 타임 슬라이스는 길게 주고, 우선순위는 낮게 주는 방법을 택할 수 있다.
하지만, 운영체제에서 수행되는 태스크를 정확하게 IO-BOUND 태스크와 CPU-BOUND 태스크로 딱 구분하여 나누기는 쉽지 않다. 그 이유는 에디터와 같이 대부분 IO-BOUND에 속하는 태스크도 있지만 에디팅도 수행함과 동시에 계산을 하는 태스크도 있을 수 있으므로 운영체제 입장에서는 태스크의 특성을 나누기가 쉽지 않아 스케줄링 기법에 반영하기 어려운 점이 있다.
E. Seo et al, Catching Two Rabits: Adaptive Real-Time Support for Embedded Linux, Software: Practice and Experience, 2009, Vol 39, No 5, 531-550쪽
상기한 바와 같이 동작하는 종래 기술에 의한 운영체제의 스케줄링 방식에 있어서는, CPU-BOUND 태스크와 IO-BOUND 태스크를 운영체제가 스스로 판단하여 스케줄링에 반영하고 있으므로, 해당 태스크의 특성이 불분명한 경우에는 이에 대한 판단이 쉽지 않으며, 잘못 판단된 경우에는 전체적인 시스템 성능의 저하를 가져 올 수 있다는 문제점이 있었다.
이에 본 발명의 실시예는, 운영체제의 스케줄러로 입력된 태스크 특성 정보를 기반으로 우선순위와 타임 슬라이스를 활용하여 CPU 스케줄링을 수행할 수 있는 응용프로그램 스케줄링 방법 및 장치를 제공할 수 있다.
또한 본 발명의 실시예는, 운영체제의 스케줄러에서 특정 응용프로그램의 태스크 실행 명령을 입력 받은 경우, 해당 태스크에 대한 CPU-BOUND 및 IO-BOUND 태스크 특성 정보의 입력 여부를 확인하고, 입력된 태스크 특성 정보를 기반으로 우선순위와 타임 슬라이스를 활용하여 CPU 자원의 스케줄링을 수행할 수 있는 응용프로그램 스케줄링 방법 및 장치를 제공할 수 있다.
본 발명의 일 실시예에 따른 응용프로그램 스케줄링 방법은, 적어도 어느 한 응용프로그램의 실행 명령을 입력 받는 과정과, 상기 응용프로그램에 대한 입출력 바운드(IO_BOUND) 및 중앙처리장치 바운드(CPU_BOUND)의 태스크 특성 정보를 입력 받는 과정과, 상기 태스크 특성 정보를 적용하여 상기 응용프로그램에 대한 스케줄링을 수행하는 과정을 포함할 수 있다.
그리고 상기 태스크 특성 정보를 입력 받는 과정은, 상기 입출력 바운드 및 중앙처리장치 바운드의 파라미터 인수 값을 입력 받는 것을 특징으로 할 수 있다.
그리고 상기 태스크 특성 정보를 입력 받는 과정은, 운영체제의 어플리케이션 프로그래밍 인터페이스(API)를 통해 상기 입출력 바운드 및 중앙처리장치 바운드의 인수 값을 입력 받는 것을 특징으로 할 수 있다.
그리고 상기 스케줄링을 수행하는 과정은, 상기 태스크 특정 정보가 반영된 태스크를 스케줄링 가능 태스크 셋에 삽입한 후, 타임 슬라이스와 우선순위를 토대로 스케줄링하여 CPU 자원을 할당할 수 있다.
그리고 상기 스케줄링을 수행하는 과정은, 태스크가 갖는 기본 타임 슬라이스의 값에 중앙처리장치 바운드 인수값을 비율적으로 더하는 과정과, 입출력 바운드 인수값으로 상기 기본 타임 슬라이스의 값을 비율적으로 빼는 과정을 포함할 수 있다.
그리고 상기 스케줄링을 수행하는 과정은, 태스크가 갖는 기본 우선순위 값에 입출력 바운드 인수값을 비율적으로 더하는 과정과, 중앙처리장치 바운드 인수값으로 상기 기본 우선순위 인수값을 비율적으로 빼는 과정을 더 포함할 수 있다.
그리고 상기 스케줄링을 수행하는 과정은, 이벤트 또는 인터럽트가 발생하여 블록화된 태스크를 대기중인 태스크 셋에 삽입하는 과정과, 스케줄링 가능 태스크 셋에 접근하여 다른 태스크를 실행하는 과정을 더 포함할 수 있다.
그리고 상기 스케줄링을 수행하는 과정은, 대기중인 태스크 셋에 포함된 이벤트 또는 인터럽트가 발생하여 블록화된 태스크에 상기 태스크 특정 정보를 적용하는 과정과, 상기 태스크 특정 정보가 적용된 태스크를 스케줄링 가능 태스크 셋에 삽입하여 스케줄링을 수행하는 과정을 더 포함할 수 있다.
그리고 상기 태스크 특정 정보를 적용하는 과정은, 태스크가 갖는 기본 타임 슬라이스의 값의 변동 없이 기본 우선순위 값에 입출력 바운드 인수값을 비율적으로 더하는 과정과, 중앙처리장치 바운드 인수값으로 상기 기본 우선순위 인수값을 비율적으로 빼는 과정을 포함할 수 있다.
그리고 상기 태스크 특정 정보는, 운영체제별 타임 슬라이스 값을 스케일링하는 운영체제 적응 인수값을 포함할 수 있다.
본 발명의 일 실시예에 따른 응용프로그램 스케줄링 장치는, 적어도 어느 한 응용프로그램의 실행 명령을 입력 받고, 상기 응용프로그램에 대한 입출력 바운드(IO_BOUND) 및 중앙처리장치 바운드(CPU_BOUND)의 태스크 특성 정보를 입력 받는 입력부와, 상기 태스크 특성 정보를 적용하여 상기 응용프로그램에 대한 스케줄링을 수행하는 스케줄러와, 상기 스케줄러의 제어하에 태스크 실행을 제어하는 태스크 제어부를 포함할 수 있다.
그리고 상기 입력부는, 상기 입출력 바운드 및 중앙처리장치 바운드의 파라미터 인수 값을 입력 받는 파라미터 입력부를 포함할 수 있다.
그리고 상기 입력부는, 운영체제의 어플리케이션 프로그래밍 인터페이스(API)를 통해 상기 입출력 바운드 및 중앙처리장치 바운드의 인수 값을 입력 받는 API 입력부를 더 포함할 수 있다.
그리고 상기 스케줄러는, 상기 태스크 특정 정보가 반영된 태스크를 스케줄링 가능 태스크 셋에 삽입한 후, 타임 슬라이스와 우선순위를 토대로 스케줄링하여 CPU 자원을 할당할 수 있다.
그리고 상기 스케줄러는, 태스크가 갖는 기본 타임 슬라이스의 값에 중앙처리장치 바운드 인수값을 비율적으로 더하고, 입출력 바운드 인수값으로 상기 기본 타임 슬라이스의 값을 비율적으로 빼는 것을 특징으로 할 수 있다.
그리고 상기 스케줄러는, 태스크가 갖는 기본 우선순위 값에 입출력 바운드 인수값을 비율적으로 더하고, 중앙처리장치 바운드 인수값으로 상기 기본 우선순위 인수값을 비율적으로 빼는 것을 특징으로 할 수 있다.
그리고 상기 스케줄러는, 이벤트 또는 인터럽트가 발생하여 블록화된 태스크를 대기중인 태스크 셋에 삽입하고, 스케줄링 가능 태스크 셋에 접근하여 다른 태스크를 실행할 수 있다.
그리고 상기 스케줄러는, 대기중인 태스크 셋에 포함된 이벤트 또는 인터럽트가 발생하여 블록화된 태스크에 상기 태스크 특정 정보를 적용하고, 상기 태스크 특정 정보가 적용된 태스크를 스케줄링 가능 태스크 셋에 삽입하여 스케줄링을 수행할 수 있다.
그리고 상기 태스크 특정 정보는, 태스크가 갖는 기본 타임 슬라이스의 값의 변동 없이 기본 우선순위 값에 입출력 바운드 인수값을 비율적으로 더하고, 중앙처리장치 바운드 인수값으로 상기 기본 우선순위 인수값을 비율적으로 빼는 것을 특징으로 할 수 있다.
그리고 상기 태스크 특정 정보는, 운영체제별 타임 슬라이스 값을 스케일링하는 운영체제 적응 인수값을 포함할 수 있다.
상기와 같은 본 발명의 실시예에 따른 응용프로그램 스케줄링 방법 및 장치에 따르면 다음과 같은 효과가 하나 혹은 그 이상이 있다.
본 발명의 실시예에 따른 응용프로그램 스케줄링 방법 및 장치에 의하면, 운영체제 자체적으로 태스크의 특성을 인지하여 최적 스케줄링을 이룰 수 없었던 문제를 태스크 특성 정보를 입력 받아 해결할 수 있다.
즉, 운영체제에서 태스크를 스케줄링할 시 주요 스케줄링 요소인 타임 슬라이스와 우선순위를 적절히 활용하여 성능적인 이점을 얻을 수 있도록 사용자로부터 입력된 태스크 특성을 운영체제가 인지하여 보다 성능이 높은 시스템을 구성하는 사용자 입력 기반 최적 스케줄링을 수행할 수 있다.
다만, 응용 프로그램 개발자나 사용자가 태스크의 특성을 개략적으로는 알지만 정확한 입력 값을 알기 어렵다 할지라도, 태스크 특성 값의 입력을 달리하여 보다 개선되는 스케줄링 인수(factor)를 기반으로 시스템의 성능을 향상시킬 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 응용프로그램 스케줄링 장치의 구조를 도시한 블록도,
도 2는 본 발명의 실시예에 따른 응용프로그램 스케줄링 장치의 최적화 스케줄링 절차를 도시한 흐름도,
도 3은 본 발명의 실시예에 따른 이벤트에 의한 태스크 특성의 반영 절차를 도시한 흐름도.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
본 발명의 실시예는, 운영체제의 스케줄러로 입력된 태스크 특성 정보를 기반으로 우선순위와 타임 슬라이스를 활용하여 CPU 스케줄링을 수행하는 것으로서, 운영체제의 스케줄러에서 특정 응용프로그램의 태스크 실행 명령을 입력 받은 경우, 해당 태스크에 대한 CPU-BOUND 및 IO-BOUND 태스크 특성 정보의 입력 여부를 확인하고, 입력된 태스크 특성 정보를 기반으로 우선순위와 타임 슬라이스를 활용하여 CPU 자원의 스케줄링을 수행하는 것이다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명하기로 한다.
도 1은 본 발명의 실시예에 따른 응용프로그램 스케줄링 장치의 구조를 도시한 블록도이다.
도 1을 참조하면, 응용프로그램 스케줄링 장치(100)는 적어도 하나의 하드웨어와, 하드웨어 내에 설치된 운영체제(Operating System)를 포함할 수 있으며, 태스크 명령 입력부(110), API 입력부(120), 파라미터 입력부(130), 스케줄러(140), 태스크 제어부(150) 등을 포함할 수 있다.
이러한 각 구성 요소들은 각각의 하드웨어로 이루어지거나, 운영체제 내 기능 단위 블록으로 나누어진 소프트웨어가 될 수 있다.
구체적으로 태스크 명령 입력부(110)는 사용자가 특정 응용프로그램을 실행하기 위해 응용프로그램 스케줄링 장치(100)와 연결된 마우스 버튼 혹은 키보드 등과 같은 입력 장치들로 실행 명령을 입력 하는 경우, 특정 응용프로그램의 해당 태스크 실행 명령을 생성하여 스케줄러(140)로 전달할 수 있다.
API 입력부(120)는 응용프로그램 개발자가 프로그램의 특성을 이해하고 운영체제로부터 API를 제공 받아 IO_BOUND 및 CPU_BOUND의 태스크 특성을 응용프로그램상에 입력할 수 있다. 이에 API 입력부(120)는 IO_BOUND 및 CPU_BOUND의 태스크 특성 정보를 스케줄러(140)로 전달할 수 있다. 이와 같이 API 입력부(120)는 운영체제가 제공하는 인터페이스를 통해 응용 프로그램 개발자가 입출력 바운드 인수(IO_BOUND_FACTOR)와 중앙처리장치 바운드 인수(CPU_BOUND_FACTOR)를 입력 받아 이를 운영체제가 인지하도록 할 수 있다.
그리고 파라미터 입력부(130)는 사용자가 응용프로그램을 수행시키는 경우, 파라미터 값으로서, IO_BOUND와 CPU_BOUND 값을 각각 입력할 수 있다. 즉, 사용자가 응용프로그램을 실행 시키는 경우, 실행 전후로 해당 응용프로그램에 대한 파라미터 값을 입력 시킬 수 있다. 이는 응용프로그램 스케줄링 장치(100)에 미도시된 디스플레이 장치를 통해 사용자에게 응용프로그램 실행 시 파라미터 입력 화면을 제공하여 사용자가 입력을 수행하도록 할 수 있다.
이와 같이 파라미터 입력부(130)는 사용자가 태스크를 수행함과 동시에 파라미터를 통해 IO_BOUND_FACTOR와 CPU_BOUND_FACTOR를 각각 입력 받아 이를 운영체제가 인지하도록 할 수 있다.
스케줄러(140)는 다수의 응용프로그램의 실행과 관리를 수행하는 것으로서, 태스크 명령 입력부(110)로부터 태스크 실행 명령을 전달 받은 경우, 해당 태스크를 실행시키게 되며, 이때, 기 설정된 실행 및 관리 정책을 토대로 해당 태스크에 대한 스케줄링을 수행할 수 있다. 즉, 스케줄링 가능한 응용프로그램(태스크) 중 각 태스크별로 남아있는 CPU 사용시간인 타임 슬라이스가 남아 있고, 우선순위가 가장 높은 태스크를 찾아서 우선적으로 CPU를 할당하는 방식으로 스케줄링을 수행할 수 있다.
그리고 스케줄러(140)는 스케줄링을 수행하는 경우, 파라미터 입력부(130) 및 API 입력부(120)로부터 해당 태스크에 대한 CPU-BOUND와 IO-BOUND 태스크 특성 정보를 전달 받은 경우, 전달 받은 CPU-BOUND 및 IO-BOUND 태스크 특성 정보를 토대로 스케줄링을 수행할 수 있다.
이와 같이 스케줄러(140)는 파라미터 입력부(130) 또는 API 입력부(120)로부터 CPU-BOUND와 IO-BOUND 태스크 특성 정보인 IO_BOUND_FACTOR와 CPU_BOUND_FACTOR를 전달 받을 수 있으며, 이를 기 설정된 실행 및 관리 정책에 적용하여 스케줄링을 수행할 수 있다.
한편, 기 설정된 실행 및 관리 정책은 아래와 같이 적용될 수 있다.
-타임 슬라이스
time_slice = time_slice + (time_slice * CPU_BOUND_FACTOR * OS_adaptation_factor) - (time_slice * IO_BOUND_FACTOR * OS_adaptation_factor)
- 우선순위
priority = priority + (priority * IO_BOUND_FACTOR * OS_adaptation_factor) - (priority * CPU_BOUND_FACTOR * OS_adaptation_factor)
여기서, time_slice는 타임 슬라이스, priority는 우선순위이며, IO_BOUND_FACTOR와 CPU_BOUND_FACTOR는 IO_BOUND 태스크와 CPU_BOUND 태스크의 특성을 사용자 또는 응용 프로그램을 개발하는 사람이 삽입할 수 있도록 하는 부분이다.
타임 슬라이스는 태스크가 갖는 기본 타임 슬라이스의 값에 CPU_BOUND_FACTOR의 값을 비율적으로 더하여 더 많은 타임 슬라이스 값을 갖도록 하며(그리고 IO_BOUND_FACTOR의 값에 따라 비율적으로 낮춰준다), 마찬가지로 우선순위 값도 태스크가 갖는 기본 우선순위 값에 IO_BOUND_FACTOR의 값을 비율적으로 더하여 더 높은 우선순위 값을 갖도록 할 수 있다(그리고 CPU_BOUND_FACTOR값에 따라 비율적으로 낮춰준다). 마찬가지로 OS_Apdaptation_Factor는 전술한 이유와 같다.
이때, 타임 슬라이스 및 우선순위에 포함된 운영체제 적응인수(OS_Adaptation_Factor)는 운영체제마다 사용하는 타임 슬라이스 값의 스케일이 다를 수 있으므로 이를 운영체제 개발자가 알맞게 적용하도록 값을 스케일링 할 수 있다.
이와 같이, 스케줄러(140)는 통계 수치와 프로세스 숫자의 증가를 기반으로 하여 가중치를 계산하고 이를 기반으로 CPU 누적 점유시간 계산을 변경할 수 있으며, 이를 통해 복수의 프로세서들 사이에서 생기는 경쟁 상황에서의 응답성 및 성능을 개선시킬 수 있다.
그리고 태스크 제어부(150)는 스케줄러(140)로부터 전달 받은 스케줄링 정보를 토대로 CPU를 할당 받아 태스크를 실행할 수 있다.
운영체제의 스케줄러(140)를 이용한 동작 절차에 대해서는 도 2 내지 도 3을 통해 구체적으로 설명하도록 한다.
도 2는 본 발명의 실시예에 따른 응용프로그램 스케줄링 장치의 최적화 스케줄링 절차를 도시한 흐름도이다.
도 2를 참조하면, 응용프로그램 스케줄링 장치(100)의 운영체제가 구동되고 있는 상태에서 태스크 명령 입력부(110)로 사용자가 응용프로그램 실행 명령을 입력하는 경우, 스케줄러(140)는 200단계에서 태스크 명령 입력부(110)로부터 태스크 실행 명령을 입력 받게 된다. 이때, API 입력부(120) 또는 파라미터 입력부(130)는 IO_BOUND 및 CPU_BOUND의 특성 정보인 IO_BOUND_FACTOR 및 CPU_BOUND_FACTOR를 각각 입력 받게 된다.
각각 입력되는 값은 모두 0 ~ 1사이의 실수 값으로 표현 가능하며 1은 그 특성이 매우 강함을 표현하고 0의 값을 갖는 경우는 그 특성이 아예 없음을 의미한다.
이에 202단계에서는 스케줄러(202)에서 IO_BOUND_FACTOR 및 CPU_BOUND_FACTOR 값을 전달 받게 되며, 스케줄러(202)는 해당 태스크의 실행 및 관리를 위한 정보를 생성할 때 전달 받은 태스크 특성 정보를 타임 슬라이스 값과 우선순위 값에 반영하게 된다.
그리고 204단계에서 이미 사용자 입력 기반 태스크 특성이 반영된 해당 태스크의 정보를 스케줄링 가능한 태스크 셋에 삽입하여 스케줄링을 대기하게 된다. 이에 스케줄러(140)는 206단계에서 스케줄링 가능 태스크 셋에서 타임 슬라이스가 남아 있는 실행 가능 태스크를 확인하고, 208단계에서 가장 우선순위가 높은 태스크를 선택하여 CPU 할당을 수행하게 된다.
그리고 210단계에서 해당 태스크가 스케줄링이 되면, CPU를 할당 받아 태스크 제어부(150)를 통해 실행하게 되고, 태스크의 실행이 완료되거나 특정 이벤트가 발생할 때까지 수행된다. 이후, 212단계에서 해당 태스크의 이벤트 발생 또는 실행의 종료 여부를 판단하여 214단계에서 종료된 경우에는 태스크 실행을 완료한 것으로서, 스케줄링 가능 태스크 셋에서 해당 태스크 정보를 삭제한 후 종료하거나, 206단계로 복귀하여 다른 태스크 셋에 대한 스케줄링을 수행하게 된다.
그러나 214단계에서 종료된 것이 아닌 이벤트가 발생한 경우로서, 예컨대, 해당 태스크가 파일시스템에서 파일 정보를 읽어오는 경우, 실행 중에 파일시스템에서 정보를 읽어와야 하는 이벤트가 발생하는 것으로 생각할 수 있다. 이는 태스크가 종료된 것이 아니므로 218단계로 진행하여 수행중인 태스크의 블록(block) 여부를 판단하게 된다.
이에 수행중인 태스크가 블록화 되지 않은 경우에는 태스크 스케줄링 상태를 유지하게 되나, 수행중인 해당 태스크는 파일시스템으로부터 파일의 정보를 읽어오기까지 하드웨어 내부의 시간으로는 오랜 시간을 기다려야 하므로 블록화되며, 이와 같이 블록화된 경우에는 220단계로 진행하여 대기중인 태스크 셋에 삽입되게 된다.
그리고 다시 다른 태스크를 수행하기 위해서는 206단계로 복귀한 후, 스케줄링 가능 태스크 셋에 접근하여, 다른 태스크를 스케줄링을 통해 실행하게 된다.
도 3은 본 발명의 실시예에 따른 이벤트에 의한 태스크 특성의 반영 절차를 도시한 흐름도이다.
도 3을 참조하면, 300단계에서 스케줄러(140)는 실행중인 태스크를 통해 이벤트(인터럽트) 발생을 확인하게 된다. 이는 해당 태스크가 파일시스템에서 파일 정보를 읽어오는 경우처럼 실행 중에 파일시스템에서 정보를 읽어와야 하는 이벤트가 발생하는 것일 수 있다.
이에 수행중인 해당 태스크가 파일시스템으로부터 파일의 정보를 읽어오기까지 대기함에 따라 타임 슬라이스가 남아있는 채로 스케줄링 가능 태스크 셋에 있지 못하고 블록화 된다.
대기중인 태스크셋에 해당 태스크가 남아 있는 경우에도 시간은 계속 흘러가고 상대적으로 다른 태스크는 실행이 되며, 해당 태스크의 우선순위는 높여주어 해당 태스크가 실행 준비가 완료되면 즉각적으로 수행될 수 있도록 해줄 필요가 있다.
이를 위해 타이머 인터럽트에 의해 시간이 흘러 CPU를 사용하지 못한 만큼 우선순위를 높여주어 태스크의 특성을 인지한 상태에서 성능적인 손해가 없도록 해주기 위해 304단계에서는 타이머 인터럽트나 사용자 정의 이벤트 등에 의해 필요한 경우 다음과 같이 해당 태스크의 특성을 우선순위에 반영하게 된다.
- 우선순위: priority = priority + (priority * IO_BOUND_FACTOR * OS_adaptation_factor) - (priority * CPU_BOUND_FACTOR * OS_adaptation_factor)
하지만 타임 슬라이스는 해당 태스크가 블록되어 있는 경우, 입출력(IO) 작업과 연관성이 높으므로 늘려줄 필요가 없다.
이에 306단계에서 기 설정된 시간 동안 이벤트 관련 태스크의 실행 가능 여부를 판단하여 기 설정된 시간이 만료되도록 태스크 실행 준비가 완료되지 않은 경우에는 308단계로 진행하여 이벤트 처리를 완료한 것으로 처리하게 된다.
그러나 실행이 가능한 상태인 경우에는 310단계로 진행하여 해당 태스크를 스케줄링 가능한 태스크 셋에 삽입하고, 312단계에서 스케줄링 가능 태스크 셋에서 타임 슬라이스가 남아 있는 실행 가능 태스크를 확인하여 스케줄러(140)를 통한 스케줄링을 수행하게 된다.
이상 설명한 바와 같이, 본 발명의 실시예에 따른 응용프로그램 스케줄링 방법 및 장치는, 운영체제의 스케줄러로 입력된 태스크 특성 정보를 기반으로 우선순위와 타임 슬라이스를 활용하여 CPU 스케줄링을 수행하는 것으로서, 운영체제의 스케줄러에서 특정 응용프로그램의 태스크 실행 명령을 입력 받은 경우, 해당 태스크에 대한 CPU-BOUND 및 IO-BOUND 태스크 특성 정보의 입력 여부를 확인하고, 입력된 태스크 특성 정보를 기반으로 우선순위와 타임 슬라이스를 활용하여 CPU 자원의 스케줄링을 수행한다.
한편 본 발명의 상세한 설명에서는 구체적인 실시예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시예에 국한되지 않으며, 후술되는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
100: 응용프로그램 스케줄링 장치 110: 태스크 명령 입력부
120: API 입력부 130: 파라미터 입력부
140: 스케줄러 150: 태스크 제어부

Claims (20)

  1. 적어도 어느 한 응용프로그램의 실행 명령을 입력 받는 과정과,
    상기 응용프로그램에 대한 입출력 바운드(IO_BOUND) 및 중앙처리장치 바운드(CPU_BOUND)의 태스크 특성 정보를 입력 받는 과정과,
    상기 태스크 특성 정보를 적용하여 상기 응용프로그램에 대한 스케줄링을 수행하는 과정
    을 포함하는 응용프로그램 스케줄링 방법.
  2. 제 1항에 있어서,
    상기 태스크 특성 정보를 입력 받는 과정은,
    상기 입출력 바운드 및 중앙처리장치 바운드의 파라미터 인수 값을 입력 받는 것을 특징으로 하는 응용프로그램 스케줄링 방법.
  3. 제 1항에 있어서,
    상기 태스크 특성 정보를 입력 받는 과정은,
    운영체제의 어플리케이션 프로그래밍 인터페이스(API)를 통해 상기 입출력 바운드 및 중앙처리장치 바운드의 인수 값을 입력 받는 것을 특징으로 하는 응용프로그램 스케줄링 방법.
  4. 제 1항에 있어서,
    상기 스케줄링을 수행하는 과정은,
    상기 태스크 특정 정보가 반영된 태스크를 스케줄링 가능 태스크 셋에 삽입한 후, 타임 슬라이스와 우선순위를 토대로 스케줄링하여 CPU 자원을 할당하는 것을 특징으로 하는 응용프로그램 스케줄링 방법.
  5. 제 1항에 있어서,
    상기 스케줄링을 수행하는 과정은,
    태스크가 갖는 기본 타임 슬라이스의 값에 중앙처리장치 바운드 인수값을 비율적으로 더하는 과정과,
    입출력 바운드 인수값으로 상기 기본 타임 슬라이스의 값을 비율적으로 빼는 과정
    을 포함하는 것을 특징으로 하는 응용프로그램 스케줄링 방법.
  6. 제 1항에 있어서,
    상기 스케줄링을 수행하는 과정은,
    태스크가 갖는 기본 우선순위 값에 입출력 바운드 인수값을 비율적으로 더하는 과정과,
    중앙처리장치 바운드 인수값으로 상기 기본 우선순위 인수값을 비율적으로 빼는 과정
    을 더 포함하는 것을 특징으로 하는 응용프로그램 스케줄링 방법.
  7. 제 1항에 있어서,
    상기 스케줄링을 수행하는 과정은,
    이벤트 또는 인터럽트가 발생하여 블록화된 태스크를 대기중인 태스크 셋에 삽입하는 과정과,
    스케줄링 가능 태스크 셋에 접근하여 다른 태스크를 실행하는 과정
    을 더 포함하는 것을 특징으로 하는 응용프로그램 스케줄링 방법.
  8. 제 1항에 있어서,
    상기 스케줄링을 수행하는 과정은,
    대기중인 태스크 셋에 포함된 이벤트 또는 인터럽트가 발생하여 블록화된 태스크에 상기 태스크 특정 정보를 적용하는 과정과,
    상기 태스크 특정 정보가 적용된 태스크를 스케줄링 가능 태스크 셋에 삽입하여 스케줄링을 수행하는 과정을 더 포함하는 것을 특징으로 하는 응용프로그램 스케줄링 방법.
  9. 제 8항에 있어서,
    상기 태스크 특정 정보를 적용하는 과정은,
    태스크가 갖는 기본 타임 슬라이스의 값의 변동 없이 기본 우선순위 값에 입출력 바운드 인수값을 비율적으로 더하는 과정과,
    중앙처리장치 바운드 인수값으로 상기 기본 우선순위 인수값을 비율적으로 빼는 과정을 포함하는 것을 특징으로 하는 응용프로그램 스케줄링 방법.
  10. 제 1항에 있어서,
    상기 태스크 특정 정보는,
    운영체제별 타임 슬라이스 값을 스케일링하는 운영체제 적응 인수값을 포함하는 것을 특징으로 하는 응용프로그램 스케줄링 방법.
  11. 적어도 어느 한 응용프로그램의 실행 명령을 입력 받고, 상기 응용프로그램에 대한 입출력 바운드(IO_BOUND) 및 중앙처리장치 바운드(CPU_BOUND)의 태스크 특성 정보를 입력 받는 입력부와,
    상기 태스크 특성 정보를 적용하여 상기 응용프로그램에 대한 스케줄링을 수행하는 스케줄러와,
    상기 스케줄러의 제어하에 태스크 실행을 제어하는 태스크 제어부를
    포함하는 응용프로그램 스케줄링 장치.
  12. 제 11항에 있어서,
    상기 입력부는,
    상기 입출력 바운드 및 중앙처리장치 바운드의 파라미터 인수 값을 입력 받는 파라미터 입력부
    를 포함하는 것을 특징으로 하는 응용프로그램 스케줄링 장치.
  13. 제 11항에 있어서,
    상기 입력부는,
    운영체제의 어플리케이션 프로그래밍 인터페이스(API)를 통해 상기 입출력 바운드 및 중앙처리장치 바운드의 인수 값을 입력 받는 API 입력부
    를 더 포함하는 것을 특징으로 하는 응용프로그램 스케줄링 장치.
  14. 제 11항에 있어서,
    상기 스케줄러는,
    상기 태스크 특정 정보가 반영된 태스크를 스케줄링 가능 태스크 셋에 삽입한 후, 타임 슬라이스와 우선순위를 토대로 스케줄링하여 CPU 자원을 할당하는 것을 특징으로 하는 응용프로그램 스케줄링 장치.
  15. 제 11항에 있어서,
    상기 스케줄러는,
    태스크가 갖는 기본 타임 슬라이스의 값에 중앙처리장치 바운드 인수값을 비율적으로 더하고,
    입출력 바운드 인수값으로 상기 기본 타임 슬라이스의 값을 비율적으로 빼는 것을 특징으로 하는 응용프로그램 스케줄링 장치.
  16. 제 11항에 있어서,
    상기 스케줄러는,
    태스크가 갖는 기본 우선순위 값에 입출력 바운드 인수값을 비율적으로 더하고,
    중앙처리장치 바운드 인수값으로 상기 기본 우선순위 인수값을 비율적으로 빼는 것을 특징으로 하는 응용프로그램 스케줄링 장치.
  17. 제 11항에 있어서,
    상기 스케줄러는,
    이벤트 또는 인터럽트가 발생하여 블록화된 태스크를 대기중인 태스크 셋에 삽입하고, 스케줄링 가능 태스크 셋에 접근하여 다른 태스크를 실행하는 것을 특징으로 하는 응용프로그램 스케줄링 장치.
  18. 제 11항에 있어서,
    상기 스케줄러는,
    대기중인 태스크 셋에 포함된 이벤트 또는 인터럽트가 발생하여 블록화된 태스크에 상기 태스크 특정 정보를 적용하고,
    상기 태스크 특정 정보가 적용된 태스크를 스케줄링 가능 태스크 셋에 삽입하여 스케줄링을 수행하는 것을 특징으로 하는 응용프로그램 스케줄링 장치.
  19. 제 18항에 있어서,
    상기 태스크 특정 정보는,
    태스크가 갖는 기본 타임 슬라이스의 값의 변동 없이 기본 우선순위 값에 입출력 바운드 인수값을 비율적으로 더하고,
    중앙처리장치 바운드 인수값으로 상기 기본 우선순위 인수값을 비율적으로 빼는 것을 특징으로 하는 응용프로그램 스케줄링 장치.
  20. 제 11항에 있어서,
    상기 태스크 특정 정보는,
    운영체제별 타임 슬라이스 값을 스케일링하는 운영체제 적응 인수값을 포함하는 것을 특징으로 하는 응용프로그램 스케줄링 장치.
KR1020110116219A 2011-11-09 2011-11-09 응용프로그램 스케줄링 방법 및 장치 KR20130051076A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110116219A KR20130051076A (ko) 2011-11-09 2011-11-09 응용프로그램 스케줄링 방법 및 장치
US13/657,237 US20130117757A1 (en) 2011-11-09 2012-10-22 Method and apparatus for scheduling application programs

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110116219A KR20130051076A (ko) 2011-11-09 2011-11-09 응용프로그램 스케줄링 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20130051076A true KR20130051076A (ko) 2013-05-20

Family

ID=48224654

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110116219A KR20130051076A (ko) 2011-11-09 2011-11-09 응용프로그램 스케줄링 방법 및 장치

Country Status (2)

Country Link
US (1) US20130117757A1 (ko)
KR (1) KR20130051076A (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109522101B (zh) * 2017-09-20 2023-11-14 三星电子株式会社 用于调度多个操作***任务的方法、***和/或装置
CN107748696B (zh) * 2017-09-20 2020-05-01 深圳壹账通智能科技有限公司 一种任务调度的方法及终端设备
CN111367652B (zh) * 2020-01-07 2024-05-17 苏州大学 一种嵌入式实时操作***的任务调度处理***和方法
CN111738619B (zh) * 2020-07-06 2023-11-07 腾讯科技(深圳)有限公司 任务调度方法、装置、设备及存储介质
CN115033352A (zh) * 2021-02-23 2022-09-09 阿里云计算有限公司 多核处理器任务调度方法、装置及设备、存储介质

Also Published As

Publication number Publication date
US20130117757A1 (en) 2013-05-09

Similar Documents

Publication Publication Date Title
US9507631B2 (en) Migrating a running, preempted workload in a grid computing system
US8239869B2 (en) Method, system and apparatus for scheduling computer micro-jobs to execute at non-disruptive times and modifying a minimum wait time between the utilization windows for monitoring the resources
US9396028B2 (en) Scheduling workloads and making provision decisions of computer resources in a computing environment
KR101953906B1 (ko) 태스크 스케줄링 방법 및 장치
US20120324454A1 (en) Control Flow Graph Driven Operating System
US9471387B2 (en) Scheduling in job execution
KR101697647B1 (ko) 스케줄링 정책 기반 코어 간 태스크 이주 관리 장치 및 방법
KR20130051076A (ko) 응용프로그램 스케줄링 방법 및 장치
WO2016092856A1 (ja) 情報処理装置、情報処理システム、タスク処理方法、及び、プログラムを記憶する記憶媒体
KR20130080663A (ko) 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치
Sfakianakis et al. Skynet: Performance-driven resource management for dynamic workloads
Huh et al. Cross‐layer resource control and scheduling for improving interactivity in Android
RU2450330C2 (ru) Аппаратно-реализуемый способ выполнения программ
WO2013165460A1 (en) Control flow graph driven operating system
US20190121327A1 (en) Numerical controller
KR100790304B1 (ko) 자바 가상 머신과 운영 체제의 스케줄링 실행방법
KR20130112180A (ko) 모바일 멀티코어 가상화 시스템에서 실시간 처리를 보장하기 위한 스케쥴링 방법
JP5678347B2 (ja) Itシステムの構成方法、そのコンピュータプログラムおよびitシステム
CN111563000B (zh) 一种文件生成方法、智能终端及存储介质
KR20150089665A (ko) 워크플로우 작업 스케줄링 장치
KR101334842B1 (ko) 가상화 지원 단말 플랫폼을 위한 가상머신 관리장치 및 방법
KR20130048504A (ko) 임계성에 기초한 파티션 스케쥴링 장치 및 방법
GB2500434A (en) Scheduling actions based on the state of the resources needed to execute the actions
CN117472570A (zh) 用于调度加速器资源的方法、装置、电子设备和介质
JP2019179419A (ja) プリフェッチコントローラ

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid