KR20070121839A - 멀티―스레딩 시스템에서 이벤트를 세팅하기 위한 기술 - Google Patents

멀티―스레딩 시스템에서 이벤트를 세팅하기 위한 기술 Download PDF

Info

Publication number
KR20070121839A
KR20070121839A KR1020077026350A KR20077026350A KR20070121839A KR 20070121839 A KR20070121839 A KR 20070121839A KR 1020077026350 A KR1020077026350 A KR 1020077026350A KR 20077026350 A KR20077026350 A KR 20077026350A KR 20070121839 A KR20070121839 A KR 20070121839A
Authority
KR
South Korea
Prior art keywords
event
priority
setting
thread
scheduler
Prior art date
Application number
KR1020077026350A
Other languages
English (en)
Other versions
KR101004861B1 (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 KR20070121839A publication Critical patent/KR20070121839A/ko
Application granted granted Critical
Publication of KR101004861B1 publication Critical patent/KR101004861B1/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
    • 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)
  • Mobile Radio Communication Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)
  • Telephonic Communication Services (AREA)
  • Telephone Function (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

다중 스레딩 시스템에서 스레드들의 주간 스케줄링없이 하나 이상의 이벤트들을 세팅하기 위하여, 스케줄러는 먼저 비유효하게 된다. 그 다음에, 이벤트들은 예컨대 단일 이벤트를 세팅하는 함수를 반복적으로 호출함으로서, 즉 세팅된 각각이 이벤트에 대하여 한번 호출함으로서 세팅된다. 그 다음에, 스케줄러는 그것의 정상 유효성으로 복원된다. 스케줄러는 높은 가능한 우선순위 레벨에 처리되는 현재의 스레드의 우선순위를 인위적으로 세팅함으로서 비유효하게 될 수 있다. 이는 이벤트들이 세팅되는 시간동안 현재의 스레드보다 다른 스레드가 먼저 수행되는 것을 방지한다. 모든 이벤트들이 세팅된후에, 현재의 스레드의 우선순위는 원래의 우선순위 레벨로 복원되며, 이는 스케줄러를 그것의 정상 유효성으로 복원시킨다.

Description

멀티―스레딩 시스템에서 이벤트를 세팅하기 위한 기술{TECHNIQUES FOR SETTING EVENTS IN A MULTI―THREADED SYSTEM}
본 발명은 일반적으로 컴퓨터 처리, 특히 멀티-스레딩 시스템에서 이벤트들을 세팅하기 위한 기술들에 관한 것이다.
운영체계는 하나의 공통 타입의 멀티-스레딩 시스템이다. 운영체계는 다양한 시스템 자원들(예컨대, 하드웨어 유닛들, 저장 장치들, 인터페이스들 등)을 관리하며 운영체계상에서 실행되는 애플리케이션들이 시스템 자원들을 액세스하도록 하는 서비스들을 제공한다. 운영체계는 전형적으로 적절하게 인보크, 스케줄링 및 처리되는 스레드들을 통해 이들 서비스들을 제공한다. 스레드는 수행될 태스크로서 보일 수 있다.
실시간 운영체계들은 운영체계들의 한 클래스이며, 무선 장치(예컨대, 셀룰라 전화), 개인휴대단말(PDA) 등과 같은 많은 전자장치들을 위하여 공통으로 사용된다. 실시간 운영체계의 주요 속성은 선행 우선순위-기반 스케줄링이다. 이러한 타입의 스케줄링은 실행을 준비하는 모든 스레드들중 가장 높은 우선순위를 가진 스레드가 우선 처리되도록 스레드들을 스케줄링한다. 각각의 스레드는 특정 우선순위, 및 가능한 경우에 스레드가 처리될 수 있기 전에 세팅될 필요가 있는 이벤트 와 연관된다. 이벤트가 세팅될때마다, 운영체계는 어느 스레드들이 실행을 준비하는지(즉, 임의의 이벤트에 대하여 대기하지 않거나 또는 세팅된 이벤트에 대하여 대기하는지)를 결정하고 준비된 가장 높은 우선순위 스레드를 스케줄링한다. 높은 우선순위를 가진 다른 스레드가 현재 처리되는 스레드 대신에 처리될 수 있다.
실시간 운영체계는 액티브 스레드가 단일 이벤트를 동시에 세팅하도록 할 수 있다. 그러나, 액티브 스레드는 다중 이벤트들이 세팅하게 할 수 있으며, 액티브 스레드가 이들 이벤트들을 세팅하는 순서는 이하에 기술된 바와같이 스레드들이 스케줄링되는 순서에 영향을 미칠 수 있다. 시스템 성능은 이벤트들이 세팅되는 순서로 인하여 스레드들이 적절하지 않은 순서로 스케줄링되는 경우에 저하될 수 있다.
따라서, 다중-스레딩 시스템에서 이벤트들을 세팅하기 위한 기술에 대한 필요성이 요구된다.
다중-스레딩 시스템(예컨대, 실시간 운영체계)에서 스케줄러에 의한 스레드들의 중간 스케줄링없이 이벤트들을 세팅하기 위한 기술들이 여기에 기술된다. 다중-스레딩 시스템에서 하나 이상의 이벤트들을 세팅하기 위하여, 스케줄러는 우선 비유효하게 된다. 그 다음에, 이벤트들은 예컨대 단일 이벤트를 세팅하기 위한 함수를 반복적으로 호출함으로서 세팅된다. 이러한 함수는 세팅될 각각의 이벤트에 대하여 한번 호출될 수 있다. 그 다음에, 스케줄러는 그것의 보통 유효성으로 복원된다.
일 실시예에 있어서, 스케줄러는 시스템에서 높은 우선순위 레벨, 예컨대 가장 높은 가능한 우선순위 레벨로 처리되는 현재의 스레드의 우선순위를 인위적으로 세팅함으로서 비유효하게 된다. 이는 다른 스레드가 스케줄링되는 것을 방지하며, 이벤트들이 세팅되는 시간동안 다른 스레드가 현재의 스레드보다 먼저 처리되는 것을 방지한다. 모든 이벤트들이 세팅된후에, 현재의 스레드의 우선순위는 원래의 우선순위 레벨로 복원된다. 그 다음에, 이는 높은 우선순위를 가진 다른 스레드가 현재의 스레드보다 먼저 처리될 수 있기 때문에 보통의 유효성으로 스케줄러를 복원시킨다.
여기에 기술된 이벤트 세팅 기술들은 소프트웨어 시스템, 하드웨어 시스템 또는 하드웨어 및 소프트웨어를 가진 시스템을 위하여 사용될 수 있다. 예컨대, 중간 스케줄링없이 이벤트들을 세팅하는 코드들은 스레드들에 의하여 호출될 수 있는 소프트웨어 함수로서 실행될 수 있다. 이러한 함수는 단일 이벤트를 동시에 세팅하기 위하여 다른 소프트웨어 함수(예컨대, 운영체계에 의하여 제공된)를 차례로 호출할 수 있다.
본 발명의 다양한 양상들 및 실시예들이 이하에서 더 상세히 기술될 것이다.
본 발명의 특징들 및 성질들은 동일한 도면부호가 동일한 수단을 나타내는 도면들을 참조로하여 이하의 실시예를 고려할때 더욱더 명백해 질 것이다.
도 1은 전형적인 다중-스레딩 시스템을 도시한다.
도 2A 및 도 2B는 도 2A 및 도 2B에서 다른 순서로 세팅된, 두개의 이벤트에 대하여 대기하는 두개의 스레드의 스케줄링을 도시한다.
도 2C는 중간 스케줄링 없이 세팅되는, 두개의 이벤트에 대하여 대기하는 두개의 스레드의 스케줄링을 도시한다.
도 3은 중간 스케줄링 없이 이벤트들을 세팅하는 프로세스를 도시한다.
도 4는 우선순위를 조작함으로서 중간 스케줄링 없이 이벤트들을 세팅하는 프로세스를 도시한다.
도 5는 도 4의 프로세스의 구현예를 도시한다.
도 6은 다중-스레딩 시스템을 도시한다.
도 7은 무선장치의 블록도를 도시한다.
도 8은 저장 시스템의 블록도를 도시한다.
용어 "전형적으로"는 여기에서 "예로서의 사용"을 의미하는 것으로 사용된다. "전형적으로"로 여기에 기술된 일부 실시예들 또는 설계들은 반드시 다른 실시예들 또는 설계들에 비하여 바람직하거나 또는 유리한 것으로 해석되지 않아야 한다.
도 1은 여기에 기술된 이벤트 세팅 기술들이 사용될 수 있는 전형적인 다중-스레딩 시스템(100)을 도시한다. 스레드들(110x, 110y, 110z)은 애플리케이션들(도 1에 도시안됨)에 의하여 호출되어 스케줄링 및 실행될 수 있다. 스레드는 스레드일 수 있는 엔티티에 의하여 수행될 태스크이다. 스레드는 (1) 태스크를 위하여 실행될 소프트웨어 코드, 및 (2) 태스크, 예컨대 레지스터, 스택, 변수 등에 대 한 상태 정보와 연관될 수 있다. 스레드는 임의의 주어진 시간에서 가능한 다중 상태들(예컨대, "펜딩" 상태, "준비" 상태, 및 "액티브" 상태)중 하나를 가질 수 있다. 여기에 사용된 바와같이, "펜딩" 상태는 그것이 스케줄링될 수 있기 전에 이벤트에 대하여 대기하는 스레드이며, "준비" 스레드는 실행을 준비하여(즉, 임의의 이벤트에 대하여 대기하지 않음) 스케줄링될 수 있는 스레딩이며, "액티브" 스레드는 스케줄링되어 현재 실행중인 스레드이다.
각각의 스레드(110)는 스레드의 중요도를 지시하는 우선순위 레벨/값과 연관된다. 각각의 스레드의 우선순위는 예컨대 스레드를 인보크하는 애플리케이션에 할당된 우선순위에 의하여 결정될 수 있다. 우선순위 값들의 범위는 시스템을 위하여 사용될 수 있으며, 높은 우선순위 값은 높은 중요도에 대응할 수 있다. 그 다음에, 각각의 스레드에 대한 우선순위 값은 스레드의 상대 중요도에 기초하여 가능한 우선순위 값들의 범위로부터 선택된다. 각각의 스레드(110)는 0, 1 또는 다수의 펜딩 이벤트들과 연관된다. 이벤트는 스레드의 상태 또는 조건을 지시한다. 운영체계와 관련하여, 이벤트는 또한 신호, 플래그, 메시지 또는 임의의 다른 용어들로서 언급된다. 펜딩 이벤트는 스레드(들)이 스케줄링될 수 있기 전에 적어도 하나의 스레드가 대기하는 이벤트이다.
스케줄러(120)는 스레드들(110)을 수신하고, 실행을 위한 스레드들을 스케줄링한다. 전형적으로, 단지 하나의 스레드(110)가 임의의 주어진 시간에 스케줄링되며, 스케줄링된 스레드는 액티브 스레드가 되며 실행된다. 스케줄러(120)는 (1) 이들 스레드들에 대한 펜딩 이벤트들 및 우선순위 값들 및 (2) 현재 실행중인 액티 브 스레드(130)에 의하여 세팅된 이벤트들에 기초하여 스레드들(110)을 스케줄링한다. 스케줄러(120)는 임의의 주어진 시간에 가장 높은 우선순위를 가지고 실행을 준비하는 스레드가 실행되도록 스레드들을 추가로 스케줄링한다.
액티브 스레드(130)는 스케줄러(120)에 의하여 스케줄링되고 현재 실행중인 스레드이다. 액티브 스레드(130)는 액티브 스레드에 대하여 적용가능하고 다른 펜딩 스레드들(110)을 스케줄링하는 스케줄러(120)에 의하여 사용될 수 있는 이벤트들을 세팅한다. 액티브 스레드(130)는 연관된 상태 또는 조건이 발생할때마다 각각의 이벤트를 세팅할 수 있다.
다중-스레딩 시스템(100)은 소프트웨어 시스템, 하드웨어 시스템, 또는 소프트웨어 및 하드웨어 둘다를 가진 시스템일 수 있다. 명확화를 위하여, 이하의 설명중 일부분은 스케줄러(120)가 운영체계(예컨대, 실시간 운영체계)의 부분인 특정 다중-스레딩 시스템과 관련된다.
운영체계는 스레드(예컨대, 액티브 스레드(130))로 하여금 단일 이벤트를 동시에 세팅하도록 할 수 있다. 이벤트가 세트될때마다, 운영체계는 바로 세팅된 이벤트에 적절한 동작들을 수행한다. 예컨대, 운영체계는 액티브 스레드(130)에 의하여 세팅된 이벤트들에 기초하여 펜딩 스레드들을 스케줄링할 수 있다. 이벤트가 세팅될때마다, 운영체계는 바로 세팅된 이벤트에 대하여 대기하는 펜딩 스레드들 및 현재 처리되는 스레드를 포함하는, 실행을 준비하는 모든 스레드들을 포함한다. 그 다음에, 운영체계는 실행을 위하여 가능 높은 우선순위를 가진 준비 스레드를 스케줄링한다.
액티브 스레드(130)는 그들이 발생하는 이벤트들, 즉 운영체계에 의하여 요구되는 경우에 단일 이벤트를 동시에 세팅할 수 있다. 일반적으로, 액티브 스레드(130)는 액티브 스레드의 상태에 따라 현재의 스레드의 처리동안 임의의 수의 이벤트들 및 임의의 특정 이벤트를 세팅할 수 있다. 액티브 스레드(130)는 (1) 스케줄링되기를 대기하는 펜딩 스레드들 또는 (2) 이들 펜딩 스레드들이 대기하는 이벤트들을 알지 못할 수 있다. 결과적으로, 액티브 스레드(130)는 펜딩 스레드들 및 이들의 펜딩 이벤트들에 기초하여 결정된 우선순위 순서로 이벤트들의 세팅을 시도하지 않는다.
액티브 스레드(130)는 현재의 스레드의 처리동안 또는 이 처리의 완료시에 다중 이벤트들을 세팅할 수 있다. 게다가, 스케줄러(120)는 이벤트가 세팅될때마다 스레드들(110)을 스케줄링할 수 있다. 이러한 경우에, 스레드들(110)은 이하에 기술된 바와같이 이벤트들이 세팅된 순서에 따라 다른 순서들로 스케줄링될 수 있다.
도 2A는 두개의 이벤트들에 대하여 두개의 펜딩 스레드들에 대한 스케줄링 예를 도시한다. 이러한 예에서, 액티브 스레드(130)는 낮은 우선순위(10)를 가진 초기 스레드(W)이다. 스레드 X는 높은 우선순위(30)를 가지며 이벤트 A에 대하여 대기하며, 스레드 Y는 중간 우선순위(20)를 가지며 이벤트 B에 대하여 대기한다. 스레드들 X 및 Y는 그들이 메모리로의 그 자체의 기록들을 수행하도록 액티브 스레드(130)가 메모리에의 기록을 완료하는 동안 대기할 수 있다. 이벤트 A는 "기록 완료" 이벤트일 수 있으며, 이벤트 B는 "이용가능 메모리 드라이버" 이벤트일 수 있다. 이러한 경우에, 액티브 스레드(130)는 그것이 현재의 기록으로 완료될때 양 이벤트들을 세팅할 수 있다. 그러나, 액티브 스레드(130)는 운영체계에 의하여 억제될 수 있으며 단지 하나의 이벤트를 동시에 세팅할 수 있다. 액티브 스레드(130)는 이들 두개의 이벤트에 대하여 대기중인 펜딩 스레드들 X 및 Y의 우선순위들의 정보를 가지지 않는다. 액티브 스레드(130)는 이들 두개의 이벤트들을 임의의 순서로, 즉 하나의 이벤트를 동시에 세팅할 수 있다.
도 2A에 도시된 예에서, 액티브 스레드(130)는 먼저 이벤트 A를 세팅하고 이후에 이벤트 B를 세팅한다. 세팅된 이벤트 A의 지시를 수신할때, 스케줄러(120)는 스레드 X가 지금 실행을 준비하고 현재의 스레드 W보다 높은 우선순위를 가지기 때문에 스레드 X를 스케줄링한다. 스레드 X는 현재의 스레드 W보다 먼저 처리되며, 액티브 스레드(120)로서 실행한다. 그 다음에, 스레드 W는 준비 상태로 이동하며 이벤트 B를 세팅하기 위한 기회를 획득하지 못한다. 스레드 X가 완료되고 펜딩 상태로 다시 돌아간후에, 스케줄러(120)는 단지 준비중인 스레드인 스레드 W를 스케줄링한다. 스레드 W는 다시 액티브되며 이벤트 B를 세팅한다. 세팅된 이벤트 B의 지시를 수신할때, 스케줄러(120)는 스레드 Y가 지금 실행을 준비하고 스레드 W보다 높은 우선순위를 가진 이후로 스레드 Y를 스케줄링한다. 스레드 Y는 스레드 W보다 우선 처리되며, 액티브 스레드(130)로서 실행된다. 이러한 예에서, 스레드들 X 및 Y는 스레드 X가 스레드 Y보다 높은 우선순위를 가지고 스레드 Y전에 스케줄링되기 때문에 적정 순서로 스케줄링된다.
도 2B는 다른 순서로 세팅된 두개의 이벤트들로 인하여 다른 순서로 두개의 펜딩 스레드들 X 및 Y의 스케줄링을 도시한다. 이러한 예에서, 액티브 스레드(130)는 먼저 이벤트 B를 세팅하고 이후에 이벤트 A를 세팅한다. 세팅된 이벤트 B의 지시를 수신할때, 스케줄러(120)는 스레드 Y가 지금 실행을 준비하는지를 결정하고, 스레드 Y가 현재의 스레드 W 보다 높은 우선순위를 가진 이후로 스레드 Y를 스케줄링한다. 스레드 Y는 스레드 W보다 먼저 처리되며, 액티브 스레드(130)로서 실행된다. 스레드 Y가 완료되고 펜딩 상태로 되돌아간후에, 스케줄러(120)는 다시 액티브가 되고 이벤트 B를 세팅하는 스레드 W를 스케줄링한다. 세팅된 이벤트 A의 지시를 수신한후에, 스케줄러(120)는 스레드 X가 지금 실행을 준비하는지를 결정하고, 스레드 X가 스레드 W보다 높은 우선순위를 가진 이후에 스레드 X를 스케줄링한다. 이러한 예에서, 스레드들 X 및 Y는 원하지 않는 순서로 스케줄링된다. 비록 스레드 W가 이벤트들을 세팅한후에 다른 스레드 X 또는 Y가 스케줄링될 수 있을지라도, 낮은 우선순위를 가진 스레드 Y는 두개의 이벤트들이 잘못된 순서로 세팅되고, 즉 본 예에서 잘못된 것으로 세팅되기 때문에 스레드 X 전에 스케줄링된다.
도 2A 및 도 2B에 도시된 바와같이, 펜딩 스레드들은 이벤트들이 세팅되는 순서에 따라 다른 순서들(및 때때로 원치 않은 순서)로 스케줄링될 수 있다. 개선된 성능은 각각의 이벤트가 세팅된후에 스케줄러가 중간 스케줄링을 수행하지 않는 방식으로 이벤트들을 세팅함으로서 수행될 수 있다.
도 3은 스케줄러(120)에 의한 스레드들의 중간 스케줄링없이 임의의 수의 이벤트들을 세팅하는 프로세스(300)를 도시한다. 프로세스(300)는 액티브 스레드(130)에 의하여 수행될 수 있다.
임의의 이벤트가 세팅되어야 하는지의 여부에 대한 결정이 초기에 이루어진다(블록 312). 만일 대답이 "아니오"이면, 프로세스(300)는 블록(312)으로 진행하며 대기한다. 그렇치 않고 만일 하나 이상의 이벤트가 세팅되고 대답이 "예"이면(블록(312)에서), 스케줄러는 이벤트들이 세팅되는 기간동안 비유효하게 된다(블록 314). 스케줄러는 예컨대 (1) 현재의 스레드의 우선순위를 조작하거나, (2) 하드웨어 타이머 인터럽트를 통해 에이징하는 타이머들에 기초하여 스케줄링을 방지하는 인터럽트들(예컨대, 시간 틱(tick) 인터럽트)를 로크하거나 또는 (3) 이러한 플래그가 세팅되는 동안 스레드들을 스케줄링하지 않도록 스케줄러에 명령하기 위한 적절한 플래그를 세팅하는 것과 같은 다양한 메커니즘을 사용하여 비유효하게 될 수 있다. 그 다음에, 모든 이벤트들은 세팅되며, 예컨대 시스템에 의하여 요구되는 경우에 동시에 하나의 이벤트가 세팅된다(블록 316). 모든 이벤트들이 세팅된후에, 스케줄러는 그것의 보통 유효성들로 복원된다(블록 318). 이들 스케줄러는 세팅된 모든 이벤트들에 기초하여 적절한 순서로 스레드들을 스케줄링할 수 있다.
이벤트들을 세팅하기 위하여 스케줄러를 비유효하게 만드는 특정 실시예가 이하에 기술된다. 이러한 실시예는 스케줄러가 비유효하게 되도록 현재의 스레드의 우선순위를 조작한다.
도 4는 우선순위를 조작함으로서 스케줄러(120)에 의한 스레드들의 중간 스케줄링없이 임의의 수의 이벤트들을 세팅하는 프로세스(400)를 도시한다. 프로세스(400)는 하나 이상의 이벤트들이 세팅되어야 할때마다 액티브 스레드(130)에 의하여 수행될 수 있다. 프로세스(400)는 도 3의 프로세스(300)의 블록들(314, 316, 318)과 관련하여 사용될 수 있다. 프로세스(400)는 이벤트들을 세팅하기 위하여 액티브 스레드(130)에 의하여 호출되는 함수(예컨대, 세트 이벤트 함수)로서 실행될 수 있다.
초기에, 도 2A 및 도 2B에서 예로서 기술된 스레드 W인 현재의 스레드의 우선순위 레벨은 임시 위치에 저장된다(블록 412). 현재의 스레드의 우선순위는 높은 우선순위 레벨, 예컨대 시스템에서 가장 높은 가능한 우선순위 레벨로 인위적으로 세팅된다(블록 414). 현재의 스레드보다 높은 우선순위를 가진 펜딩 스레드는 특정 이벤트에 대하여 대기할 수 있다. 선점 우선순위 기반 스케줄링을 가진 실시간 운영체계에 대하여, 펜딩 스레드는 스케줄링되며 이러한 특정 이벤트가 세팅되는 경우에 현재의 스레드보다 먼저 처리된다. 이벤트들이 세팅되는 동안 다른 스레드가 현재 스레드보다 선점적 지위를 갖는 것을 방지하기 위하여, 현재의 스레드의 우선순위는 가장 높은 가능한 우선순위 레벨로 일시적으로 상승될 수 있다.
그 다음에, 이벤트는 단일 이벤트를 세팅하는 함수(예컨대, 세트 이벤트 함수)를 호출함으로서 세팅된다(블록 416). 이러한 이벤트의 세팅은 스케줄링 알고리즘을 실행하도록 스케줄러를 트리거링할 수 있으며, 실행을 준비하는 모든 스레드들중에서 가장 높은 우선순위를 가진 스레드를 스케줄링한다. 그러나, 현재의 스레드의 우선순위가 가장 높은 가능한 레벨로 상승되기 때문에, 다른 스레드는 스케줄링되지 않으며 현재의 스레드는 계속해서 처리될 것이다. 다른 이벤트가 세팅될 필요가 있는지의 여부에 대한 결정이 이루어진다(블록 418). 만일 대답이 "예"이면, 프로세스(400)는 예컨대 단일 이벤트를 세팅하는 세트 이벤트 함수를 다시 호출하여 다른 이벤트를 세팅하기 위하여 블록(416)으로 되돌아 간다. 그렇치 않은 경우에, 만일 세팅할 다른 이벤트들이 존재하지 않고 대답이 "아니오"이면(블록(418)에서), 현재의 스레드의 우선순위는 원래의 우선순위 레벨로 복원된다(블록 420).
현재의 스레드의 우선순위는 적절한 함수(예컨대, 세트 스레드 우선순위 함수)를 호출함으로서 변화될 수 있다. 이러한 함수의 호출은 전형적으로 스레드들을 적절하게 스케줄링하는 스케줄러를 트리거링한다. 현재의 스레드가 블록(414)에서 가장 높은 가능한 우선순위 레벨로 세팅될때, 다른 스레드는 현재의 스레드가 가장 높은 레벨을 가지기 때문에 스케줄링되지 않는다. 현재의 스레드가 블록(420)에서 원래의 우선순위 레벨로 복원될때, 스케줄러는 정상 스케줄링을 수행하며, 현재의 스레드보다 준비중이고 높은 우선순위를 가진 다른 스레드가 먼저 수행될 수 있다.
도 2C는 여기에서 설명된 기술들을 사용하여 동시에 세팅된 두개의 이벤트들과 두개의 펜딩 스레드들 X 및 Y의 스케줄링을 도시한다. 이러한 예에서, 스케줄러(120)는 예컨대 원래의 우선순위 레벨에서 스레드 W를 유지함으로서 액티브 스레드(130)가 실행중인 동안 유효하다. 이벤트 A 및 B를 세팅하기전에, 액티브 스레드(130)는 예컨대 가장 높은 가능한 레벨로 스레드 W의 우선순위를 상승시킴으로서 스케줄러(120)를 비유효하게 한다. 그 다음에, 액티브 스레드(130)는 비록 스레드 Y가 준비중일지라도 스레드 Y의 스케줄링을 트리거링하지 않는 이벤트 B를 세팅한다. 그 다음에, 액티브 스레드(130)는 비록 스레드 X 및 Y가 준비중일지라도 스레 드 X 또는 Y의 스케줄링을 트리거링하지 않는 이벤트 A를 세팅한다. 그 다음에, 액티브 스레드(130)는 스레드 W의 우선순위를 원래의 레벨로 복원함으로서 스케줄러(120)를 그것의 보통 유효성으로 복원한다. 그 다음에, 스케줄러(120)는 준비중인 두개의 스레드 X 및 Y중에서 가능 높은 우선순위 레벨을 가진 스레드 X를 스케줄링한다. 스레드 X가 완료될때, 스케줄러는 스레드 Y를 스케줄링한다.
도 5는 운영체계와 관련한 도 4의 프로세스(400)의 전형적인 구현을 도시한다. 운영체계는 기본 서비스들을 제공하기 위하여 호출될 수 있는 다양한 소프트웨어 함수들을 가진 커널(kernel)을 포함한다. 이러한 하나의 소프트웨어 함수는 스레드가 단일 이벤트를 세팅하도록 하는 세트 이벤트 함수일 수 있다. 운영체계는 규격(off-the-shefl) 운영체계일 수 있으며, 커널의 소프트웨어 함수들을 수정할 수 없거나 또는 용이하게 수정할 수 있다.
추상 계층(abstraction layer)은 부가 기능을 제공하고 및/또는 커스터마이제이션(customization)을 위하여 커널의 상부에서 실행될 수 있다. 추상 계층은 스레드가 임의의 수의 이벤트들을 세팅하도록 하는 세트 이벤트 함수와 같은 부가 소프트웨어 함수들을 포함할 수 있다. 추상 계층위의 애플리케이션 계층에서 실행되는 스레드들은 커널의 소프트웨어 함수들을 호출할 수 있는 추상 계층의 소프트웨어 함수들을 호출할 수 있다. 프로세서(400)는 각각의 이벤트가 세팅되는 동안 커널의 세트 이벤트 함수를 한번 호출할 수 있는 추상 계층의 세트 이벤트 함수에 의하여 실행될 수 있다.
도 5는 도 4의 프로세스(400)의 특정 구현을 도시한다. 다른 구현이 또한 가능하며 이는 본 발명의 범위내에 있다.
프로세스들(300, 400)은 스레드로 하여금 스케줄러에 의한 중간 스케줄링없이 모든 이벤트들을 동시에 세팅하도록 한다. 비록 각각의 이벤트가 세팅된후에 스케줄러가 스레드들의 스케줄링을 시도할 수 있을지라도, 스케줄러는 비유효하게 되며 다른 스레드는 스케줄링되지 않는다. 프로세스(400)는 현재의 스레드가 이벤트들의 세팅동안 먼저 수행되지 않도록 현재의 스레드의 우선순위를 변경함으로서 스케줄러를 비유효하게 한다.
스케줄러를 비유효하게 하는 다른 메커니즘이 또한 사용될 수 있다. 예컨대, 스케줄러는 비동기된(asynchronous timed) 이벤트들이 재스케줄링되는 것을 방지하는 시간-기반 메커니즘으로 비유효하게 될 수 있다. 예로서, 사용자 인터페이스(UI) 스레드는 초당 상태 지시자를 플래시(flash)하기를 원할 수 있다. 그 다음에, 운영체계는 초당 아이콘을 플래시하기 위하여 UI 스레드를 웨이크-업(wake-up)한다. 만일 UI 스레드가 스레드들 X, Y 및 W보다 높은 우선순위를 가지면, 이들 스레드들보다 어웨이크된 UI 스레드가 먼저 수행될 것이다. 인터럽트 로킹은 타이머 인터럽트가 벡터링되지 않기 때문에 UI 스레드의 스케줄링을 방지할 수 있으며, 따라서 UI 스레드는 결코 웨이크업되지 않는다. 스케줄러를 비유효하게 만드는 다른 메커니즘은 스케줄러가 스케줄링하기를 원할때마다 스케줄러가 검사하는 플래그(예컨대, Do_Not_Schedule flag)를 세팅한다. 스케줄러는 플래그가 세팅되는 경우에 스케줄링하는 것이 억제되며, 플래그가 비세팅/클리어되는 경우에 스케줄링을 진행한다. 액티브 스레드는 스케줄러를 디스에이블하기를 원할때마다 이러한 플래 그를 세팅할 수 있으며, 스케줄러를 재인에이블하기 위하여 플래그를 세팅하지 않는다. 스케줄러가 디스에이블되는 동안, 다중 이벤트들은 중간 스케줄링없이 세팅될 수 있다.
명확화를 위하여, 이벤트 세팅 기술들은 운영체계와 관련하여 기술되었다. 일반적으로, 이들 기술들은 우선순위 및 이벤트들에 기초하여 태스크들이 스케줄링되는 임의의 다중 스레딩 시스템을 위하여 사용될 수 있다. 다중 스레딩 시스템은 소프트웨어 시스템, 하드웨어 시스템, 또는 하드웨어 및 소프트웨어를 가진 시스템일 수 있다.
도 6은 이벤트 세팅 기술들이 사용될 수 있는 다중 스레딩 시스템(600)을 도시한다. 태스크들(610x, 610y, 610z)은 도 6에 도시되지 않은 하나 이상의 엔티티들로부터 수신되어 스케줄링 및 실행된다. 태스크들(610)은 스레드들, 프로세스들 등일 수 있다. 태스크들(610)은 하나 이상의 프로세서들 또는 애플리케이션들에 의하여 생성되고 및/또는 하나 이상의 인터페이스들을 통해 수신될 수 있다.
스케줄러(620)는 태스크들(610)을 수신하고 처리 모듈(630)에 의하여 처리하기 위한 이들 태스크들을 스케줄링한다. 스케줄러(620)는 (1) 이들 태스크들에 대한 우선순위 값 및 펜딩 이벤트들 및 (2) 처리 모듈(630)에 의한 이벤트 세트에 기초하여 태스크들(610)을 스케줄링할 수 있다. 스케줄러(620)는 임의의 주어진 시간에 실행을 준비하는 모든 태스크들중에서 가장 높은 우선순위를 가진 태스크가 처리 모듈(630)에 의하여 처리되도록 태스크들(610)을 스케줄링할 수 있다. 처리 모듈(630)은 스케줄러(620)에 의하여 스케줄링되는 각각의 태스크(610)를 처리한 다. 처리 모듈(630)은 또한 적절하게 이벤트들을 세팅한다.
스케줄러(620)는 다양한 방식으로 구현될 수 있다. 예컨대, 스케줄러(620)는 컴퓨팅 장치 또는 퍼스널 전자 장치를 위하여 사용된 운영체계가 일부분일 수 있다. 스케줄러(620)는 처리 모듈(630)에 대한 태스크들(610)을 스케줄링하도록 지정된 제어기일 수 있다. 따라서, 스케줄러(620)는 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있다.
처리 모듈(630)은 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있다. 처리 모듈(630)은 스케줄링된 태스크들에 대한 임의의 타입의 처리를 수행할 수 있다. 예컨대, 처리 모듈(630)은 저장 제어기, 메모리 드라이버, 버스 드라이버, 직접 메모리 액세스(DMA) 제어기, 디지털 신호 프로세서(DSP), 감소된 명령 세트 컴퓨터(RISC), 마이크로프로세서 등일 수 있다.
여기에서 기술된 이벤트 세팅 기술들 및 다중 스레딩 시스템들은 다양한 전자장치들에서 실행될 수 있다. 예컨대, 이들 기술들 및 다중-스레딩 시스템들은 컴퓨터 시스템, 개인 전자장치 등에서 사용될 수 있다. 개인 전자장치는 무선 장치, PDA 등일 수 있다.
도 7은 이벤트 세팅 기술들이 사용될 수 이는 무선 장치(700)의 블록도를 도시한다. 무선장치(700)는 셀룰라 전화, 단말, 핸드세트, 또는 임의의 다른 장치일 수 있다. 무선 장치(700)는 코드분할 다중접속(CDMA) 시스템, 이동통신세계화 시스템(GSM) 등과 통신할 수 있다.
무선장치(700)는 수신 경로 및 전송 경로를 통해 양방향 통신을 제공한다. 수신 경로에 대하여, 기지국들에 의하여 전송된 순방향 링크 신호들은 안테나(712)에 의하여 수신되고, 듀플렉서(D)(714)를 통해 라우팅되며, 수신 유닛(RCVR)(716)에 제공된다. 수신 유닛(716)은 수신된 신호를 컨디셔닝 및 디지털화하며, 추가 처리를 위하여 디지털 섹션(720)에 입력 샘플들을 제공한다. 전송 경로에 대하여, 송신기 유닛(TMTR)(718)은 전송될 디지털 섹션(720) 데이터를 수신하고, 데이터를 처리 및 컨디셔닝하며 역방향 링크 신호를 생성하며, 이 역방향 링크 신호는 듀플렉서(714)를 통해 라우팅되고 안테나(712)를 통해 기지국들에 전송된다.
디지털 섹션(720)은 예컨대 모뎀 프로세서(722), 비디오/그래픽 프로세서(724), 애플리케이션 프로세서(726), 제어기/마이크로제어기(730), 외부 버스 인터페이스들(EBI)(740, 742), 및 입력/출력(I/O) 유닛(744)과 같은 다양한 처리 유닛들 및 인터페이스 유닛들을 포함한다. 모뎀 프로세서(722)는 데이터 전송 및 수신을 위한 처리(예컨대, 인코딩, 변조, 복조, 디코딩 등)을 수행한다. 비디오/그래픽 프로세서(724)는 정지화상, 동영상, 동문자(moving text), 비디오 게임 그래픽, 3-D 아바타 등에 대하여 처리를 수행한다. 애플리케이션 프로세서(726)는 예컨대 다방향 통화, 웹 브라우징, 미디어 플레이어, 사용자 인터페이스 등과 같은 애플리케이션에 대한 처리를 수행한다. EBI(740)는 디지털 섹션(720) 및 비휘발성 주메모리(750)사이에의 데이터 전송을 용이하게 하며, 비휘발성 주메모리(750)는 RAM, SRAM, DRAM, SDRAM 등일 수 있다. EBI(742)는 디지털 섹션(720) 및 비휘발성 메모리(752)사이의 데이터 전송을 용이하게 하며, 비휘발성 메모리는 플래시 메모리 또는 ROM일 수 있다. I/O 유닛(744)은 LCD 유닛, 키패드, 스피커, 마이크로폰 등과 같은 외부 I/O 장치들(도 7에 도시안됨)과 인터페이싱한다. 디지털 섹션(720)내의 다양한 유닛들은 하나 이상의 버스들(732)을 통해 서로 통신할 수 있다.
디지털 섹션(720)은 하나 이상의 DSP, 마이크로-프로세서, RISC 등으로 구현될 수 있다. 디지털 섹션(720)은 하나 이상의 주문형 집적회로(ASIC) 또는 임의의 다른 타입의 집적회로(IC)로 제조될 수 있다. 다중 스레딩 시스템(100 및/또는 600)은 디지털 섹션(720)내에서 구현될 수 있다. 다중 스레딩 시스템(100)의 예로서, 마이크로프로세서(730)는 실시간 운영체계상에서 실행될 수 있으며, 스레드(110)는 디지털 섹션(720)내의 다양한 프로세서들에 의하여 인보크될 수 있다. 다중 스레딩 시스템(600)의 다른 예로서, 마이크로프로세서(730)는 스케줄러(620)를 실행할 수 있으며, EBI(740)은 처리 모듈(630)을 실행할 수 있으며, 태스크들(610)은 디지털 섹션(720)내의 다양한 프로세서들에 의하여 생성될 수 있다.
도 8은 이벤트 세팅 기술들이 사용될 수 있는 저장 시스템(800)의 블록도를 도시한다. 저장 시스템(800)은 마스터 제어기(810) 및 다정 저장 장치들(820)을 포함한다. 마스터 제어기(810)는 독립형 컴퓨팅 장치, 컴퓨팅 장치의 부분 등일 수 있다. 메모리 유닛(812)은 마스터 제어기(810)에 의하여 사용된 데이터들 및 코드들을 저장한다.
마스터 제어기(810)는 하나 이상의 외부 인터페이스들(814)을 통해 외부 장치들(도 8에 도시안됨)과 통신한다. 마스터 제어기(810)는 하나 이상의 내부 인터페이스들(816)을 토해 저장 장치들(820)에 접속된다. 각각의 인터페이스는 버스 또는 임의의 다른 통신 링크일 수 있다. 각각의 저장 장치(820)는 마스터 제어기(810)에 직접 접속되거나 또는 다른 저장 장치를 통해 마스터 제어기(810)에 접속될 수 있다.
마스터 제어기(810)는 저장 장치들(820)에 대한 액세스들을 스케줄링하는 스케줄러를 실행할 수 있다. 마스터 제어기(810)는 외부 인터페이스들(814)을 통해 태스크들을 수신할 수 있다. 이들 태스크들은 저장장치들(820)의 액세스를 요구하는 외부 프로세서들 및/또는 애플리케이션들로부터 발생할 수 있다. 그 다음에, 마스터 제어기(810)는 태스크들에 대한 우선순위들 및 펜딩 이벤트들, 저장장치들의 유효성, 이들 저장장치들에 대한 이벤트 세트 등에 기초하여 태스크들을 스케줄링한다. 마스터 제어기(810)는 준비중인 가장 높은 우선순위가 각각의 저장장치를 액세스하도록 태스크들을 스케줄링할 수 있다.
일 실시예에 있어서, 개별 처리 모듈은 각각의 저장장치(820)의 액세스들을 관리한다. 각각의 저장장치에 대한 처리 모듈은 저장장치로 데이터를 기록하고 저장장치로부터 데이터를 판독하는 역할을 하는 드라이버일 수 있다. 처리 모듈은 처리 모듈의 상태 및/또는 연관된 저장장치에 기초하여 이벤트들을 세팅할 수 있다. 각각의 저장장치(820)에 대하여, 마스터 제어기(810)는 이벤트가 저장장치와 관련하여 세팅될때마다 저장장치(820)를 액세스하는 가장 높은 우선순위 준비 태스크를 스케줄링할 수 있다. 각각의 저장장치에 대한 처리 모듈은 스케줄러에 의한 중간 스케줄링없이 이벤트들을 세팅하기 위하여 (예컨대 현재의 태스크의 우선순위를 조작함으로서) 마스터 제어기(810)내의 스케줄러를 비유효하게 하도록 프로세 스(300 또는 400)를 실행할 수 있다.
다른 실시예에 있어서, 저장장치들(820)은 마스터 제어기(810)에 의하여 스케줄링되는 태스크들을 나타낸다. 예컨대, 다중 저장장치들은 주어진 외부 인터페이스에 대한 액세스를 요구할 수 있다. 그 다음에, 마스터 제어기(810)는 저장장치들의 우선순위들, 외부 인터페이스에 대한 이벤트 세트 등에 기초하여 이러한 외부 인터페이스를 사용하는 저장장치들을 스케줄링할 수 있다.
여기에서 설명된 기술들은 전술한 바와같이 이벤트들을 세팅하기 위하여 사용될 수 있다. 이들 기술들은 인터럽트들을 세팅하고, 신호들 또는 메시지들을 전송하며, 플래그들을 세팅하기 위하여 사용될 수 있다.
여기에서 설명된 기술들은 다양한 수단에 의하여 구현될 수 있다. 예컨대, 이들 기술들은 소프트웨어, 하드웨어 또는 이들의 조합으로 구현될 수 있다. 소프트웨어 구현을 위하여, 기술들은 여기에서 설명된 동작들을 수행하는 모듈들(예컨대, 함수, 절차 등)으로 구현될 수 있다. 소프트웨어 코드들은 메모리 유닛(예컨대, 도 7의 메모리(750) 또는 도 8의 메모리(812))에 저장되며 프로세서(예컨대 도 7의 마이크로프로세서 또는 도 8의 제어기(810)에 의하여 실행된다. 메모리 유닛은 프로세서내에 또는 프로세서 외부에서 구현될 수 있다.
하드웨어 구현을 위하여, 이벤트들을 세팅하는 모듈 또는 함수는 하나 이상이 ASIC, DSP, 디지털 신호 처리 장치(DSPD), 프로그램가능 로직 장치(PLD), 필드 프로그램가능 게이트 어레이(FPGA), 프로세서, 제어기, 마이크로-제어기, 마이크로프로세서, 전자 장치, 여기에 기술된 기능들을 수행하도록 설계된 다른 전자장치, 또는 이들의 조합내에서 구현될 수 있다.
기술된 실시예들의 이전 설명은 당업자로 하여금 본 발명을 실시 또는 사용하도록 제공된다. 이들 실시예들에 대한 다양한 수정들이 당업자에게 명백할 것이며, 여기에 기술된 일반적인 원리는 본 발명의 사상 및 범위를 벗어나지 않고 다른 실시예들에 적용될 수 있다. 따라서, 본 발명은 여기에 기술된 실시예들에 제한되지 않고 여기에 기술된 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위를 따른다.

Claims (24)

  1. 현재의 스레드의 우선순위를 높은 우선순위 레벨로 세팅하기 위한 코드;
    적어도 하나의 이벤트를 세팅하기 위한 코드; 및
    상기 현재의 스레드의 우선순위를 원래의 우선순위 레벨로 복원하기 위한 코드를 저장하는, 프로세서 판독가능 매체.
  2. 제 1항에 있어서, 상기 현재의 스레드의 우선순위를 상기 높은 우선순위 레벨로 세팅하기전에 상기 원래의 우선순위 레벨을 저장하기 위한 코드를 더 저장하는, 프로세서 판독가능 매체.
  3. 제 1항에 있어서, 상기 적어도 하나의 이벤트 세팅 코드는 상기 적어도 하나의 이벤트를 세팅하기 위한 코드를 포함하며, 여기서 하나의 이벤트는 동시에 세팅되는, 프로세서 판독가능 매체.
  4. 제 1항에 있어서, 상기 적어도 하나의 이벤트 세팅 코드는 상기 적어도 하나의 이벤트의 각각에 대한 단일 이벤트를 한번 세팅하는 함수를 호출하기 위한 코드를 포함하는, 프로세서 판독가능 매체.
  5. 제 1항에 있어서, 상기 적어도 하나의 이벤트 세팅 코드는 상기 적어도 하나 의 이벤트의 각각을 개별적으로 세팅하기 위한 함수를 운영체계에서 호출하기 위한 코드를 포함하는, 프로세서 판독가능 매체.
  6. 제 1항에 있어서, 상기 현재 스레드의 우선순위를 세팅하기 위한 상기 코드는 상기 현재의 스레드의 우선순위를 높은 가능한 우선순위 레벨로 세팅하기 위한 코드를 포함하는, 프로세서 판독가능 매체.
  7. 제 1항에 있어서, 상기 현재의 스레드의 우선순위를 세팅하기 위한 상기 코드, 상기 적어도 하나의 이벤트를 세팅하기 위한 상기 코드, 및 상기 현재의 스레드의 우선순위를 복원하기 위한 상기 코드는 하나 이상의 이벤트들을 세팅하기 위하여 스레드에 의하여 호출가능한 함수의 일부분인, 프로세서 판독가능 매체.
  8. 제 7항에 있어서, 상기 함수는 운영체계에 대한 커널(kernel)위의 추상 계층(abstraction layer)에 상주하는, 프로세서 판독가능 매체.
  9. 이벤트들을 세팅하기 위한 방법으로서,
    현재의 태스크의 우선순위를 높은 우선순위 레벨로 세팅하는 단계;
    적어도 하나의 이벤트를 세팅하는 단계; 및
    상기 현재의 태스크의 우선순위를 원래의 우선순위 레벨로 복원하는 단계를 포함하는, 이벤트 세팅 방법.
  10. 제 9항에 있어서, 상기 현재의 태스크의 우선순위를 상기 높은 우선순위 레벨로 세팅하기전에 상기 원래의 우선순위 레벨을 저장하는 단계를 더 포함하는, 이벤트 세팅 방법.
  11. 제 9항에 있어서, 상기 적어도 하나의 이벤트 세팅 단계는 상기 적어도 하나의 이벤트를 세팅하는 단계를 포함하며, 여기서 하나의 이벤트는 동시에 세팅되는, 이벤트 세팅 방법.
  12. 제 9항에 있어서, 상기 현재의 태스크의 우선순위를 상기 높은 우선순위 레벨로 세팅하는 상기 단계는 상기 현재의 태스크의 우선순위를 상기 높은 가능한 우선순위 레벨로 세팅하는 단계를 포함하는, 이벤트 세팅 방법.
  13. 현재의 태스크의 우선순위를 높은 우선순위 레벨로 세팅하는 수단;
    적어도 하나의 이벤트를 세팅하는 수단; 및
    상기 현재의 태스크의 우선순위를 원래의 우선순위 레벨로 복원하는 수단을 포함하는, 장치.
  14. 제 13항에 있어서, 상기 현재의 태스크의 우선순위를 상기 높은 우선순위 레벨로 세팅하기전에 상기 원래의 우선순위 레벨을 저장하는 수단을 더 포함하는, 장 치.
  15. 제 13항에 있어서, 존재하는 경우에 상기 세팅된 적어도 하나의 이벤트에 기초하여 실행을 준비하는 태스크들을 식별하는 수단; 및
    실행을 준비하는 상기 태스크들중에서 높은 우선순위를 가진 태스크를 스케줄링하는 수단을 더 포함하는, 장치.
  16. 이벤트들을 세팅하기 위한 방법으로서,
    스케줄러를 일시적으로 비유효하게 만드는 단계;
    적어도 하나의 이벤트를 세팅하는 단계; 및
    상기 스케줄러를 정상 유효성(normal effectiveness)으로 복원하는 단계를 포함하는, 이벤트 세팅 방법.
  17. 제 16항에 있어서, 상기 스케줄러를 일시적으로 비유효하게 만드는 상기 단계는 현재의 태스크의 우선순위를 높은 우선순위 레벨로 세팅하는 단계를 포함하는, 이벤트 세팅 방법.
  18. 제 17항에 있어서, 상기 스케줄러를 정상 유효성으로 복원하는 상기 단계는 상기 현재의 태스크의 우선순위를 원래의 우선순위 레벨로 복원하는 단계를 포함하는, 이벤트 세팅 방법.
  19. 제 16항에 있어서, 상기 적어도 하나의 이벤트 세팅 단계는 상기 적어도 하나의 이벤트를 세팅하는 단계를 포함하며, 여기서 하나의 이벤트는 동시에 세팅되는, 이벤트 세팅 방법.
  20. 태스크들을 스케줄링하도록 동작하는 스케줄러; 및
    상기 스케줄러를 일시적으로 비유효하게 만들고, 적어도 하나의 이벤트를 세팅하며, 상기 스케줄러를 정상 유효성으로 복원하도록 동작하는 처리 모듈을 포함하며;
    상기 스케줄러는 상기 세팅된 적어도 하나의 이벤트에 따라 상기 태스크들을 스케줄링하도록 동작하는, 장치.
  21. 제 20항에 있어서, 상기 처리 모듈은 상기 스케줄러를 비유효하게 만들기 위하여 현재의 태스크의 우선순위를 높은 우선순위 레벨로 세팅하도록 동작하는, 장치.
  22. 제 21항에 있어서, 상기 처리 모듈은 상기 스케줄러를 정상 유효성으로 복원시키기 위하여 상기 현재의 태스크의 우선순위를 원래의 우선순위 레벨로 복원하도록 동작하는, 장치.
  23. 제 20항에 있어서, 상기 처리 모듈은 상기 적어도 하나의 이벤트 세팅하도록 동작하며, 여기서 하나의 이벤트는 동시에 세팅되는, 장치.
  24. 제 20항에 있어서, 상기 스케줄러는 존재하는 경우에 상기 세팅된 적어도 하나의 이벤트에 기초하여 실행을 준비하는 태스크들을 식별하고 실행을 준비하는 태스크들중에서 높은 우선순위를 가진 태스크를 스케줄링하도록 동작하는, 장치.
KR1020077026350A 2005-04-13 2006-04-12 멀티―스레딩 시스템에서 이벤트를 세팅하기 위한 기술 KR101004861B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/105,913 US8255912B2 (en) 2005-04-13 2005-04-13 Techniques for setting events in a multi-threaded system
US11/105,913 2005-04-13

Publications (2)

Publication Number Publication Date
KR20070121839A true KR20070121839A (ko) 2007-12-27
KR101004861B1 KR101004861B1 (ko) 2010-12-28

Family

ID=36936427

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077026350A KR101004861B1 (ko) 2005-04-13 2006-04-12 멀티―스레딩 시스템에서 이벤트를 세팅하기 위한 기술

Country Status (7)

Country Link
US (1) US8255912B2 (ko)
EP (1) EP1869552A2 (ko)
JP (3) JP2008538043A (ko)
KR (1) KR101004861B1 (ko)
CN (1) CN101194231B (ko)
TW (1) TWI327291B (ko)
WO (1) WO2006110914A2 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8255912B2 (en) * 2005-04-13 2012-08-28 Qualcomm Incorporated Techniques for setting events in a multi-threaded system
US8149698B1 (en) * 2006-01-09 2012-04-03 Genband Us Llc Providing a schedule for active events to be processed by a processor
US9063778B2 (en) * 2008-01-09 2015-06-23 Microsoft Technology Licensing, Llc Fair stateless model checking
US8676976B2 (en) * 2009-02-25 2014-03-18 International Business Machines Corporation Microprocessor with software control over allocation of shared resources among multiple virtual servers
US9207943B2 (en) * 2009-03-17 2015-12-08 Qualcomm Incorporated Real time multithreaded scheduler and scheduling method
US8572617B2 (en) * 2009-07-21 2013-10-29 Sas Institute Inc. Processor-implemented systems and methods for event handling
US8893049B2 (en) * 2009-08-28 2014-11-18 International Business Machines Corporation Creation and prioritization of multiple virtual universe teleports in response to an event
US8904399B2 (en) * 2010-03-15 2014-12-02 Qualcomm Incorporated System and method of executing threads at a processor
TWI493923B (zh) * 2010-11-09 2015-07-21 Univ Nat Cheng Kung 處理資訊的裝置與其方法
US8589934B2 (en) * 2011-04-01 2013-11-19 Arm Limited Controlling priority levels of pending threads awaiting processing
KR20130063825A (ko) * 2011-12-07 2013-06-17 삼성전자주식회사 운영체제에서 동적으로 선점 구간을 조정하는 장치 및 방법
US8930965B1 (en) * 2012-02-28 2015-01-06 Marvell International Ltd Event-driven state-machine sequencer
CN104572036B (zh) * 2013-10-12 2020-08-11 腾讯科技(深圳)有限公司 事件的处理方法及装置
US20160210174A1 (en) * 2015-01-15 2016-07-21 Microsoft Corporation Hybrid Scheduler and Power Manager
US9697043B2 (en) * 2015-02-02 2017-07-04 Mediatek Inc. Methods and computer systems for performance monitoring of tasks
US10761714B2 (en) * 2015-11-23 2020-09-01 Google Llc Recognizing gestures and updating display by coordinator
US11216287B2 (en) * 2017-06-02 2022-01-04 Apple Inc. Selective rendering mode
CN118152106A (zh) * 2018-10-11 2024-06-07 华为技术有限公司 资源调度方法和终端设备

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04287233A (ja) * 1991-03-18 1992-10-12 Hitachi Ltd 事象処理制御方法
JP3655648B2 (ja) * 1994-03-07 2005-06-02 富士通株式会社 プロセススイッチ制御装置およびプロセス制御方法
US6055559A (en) * 1994-03-07 2000-04-25 Fujitsu Limited Process switch control apparatus and a process control method
SE9404294D0 (sv) * 1994-12-09 1994-12-09 Ellemtel Utvecklings Ab sätt och anordning vid telekommunikation
US6006247A (en) * 1995-03-21 1999-12-21 International Business Machines Corporation Method and system for scheduling threads and handling exceptions within a multiprocessor data processing system
US6105053A (en) * 1995-06-23 2000-08-15 Emc Corporation Operating system for a non-uniform memory access multiprocessor system
JPH09160790A (ja) * 1995-12-12 1997-06-20 Matsushita Electric Ind Co Ltd タスクスケジュール装置及びタスクスケジュール方法
US5706515A (en) * 1996-03-25 1998-01-06 Sun Microsystems, Inc. System and method for implementing an atomic wait for notification operation
US6128640A (en) * 1996-10-03 2000-10-03 Sun Microsystems, Inc. Method and apparatus for user-level support for multiple event synchronization
US6101524A (en) * 1997-10-23 2000-08-08 International Business Machines Corporation Deterministic replay of multithreaded applications
FI108478B (fi) * 1998-01-21 2002-01-31 Nokia Corp Sulautettu jõrjestelmõ
US6115715A (en) * 1998-06-29 2000-09-05 Sun Microsystems, Inc. Transaction management in a configuration database
US6061709A (en) * 1998-07-31 2000-05-09 Integrated Systems Design Center, Inc. Integrated hardware and software task control executive
JP2000194573A (ja) 1998-12-24 2000-07-14 Toshiba Corp スレッド制御システムおよびスレッド制御方法
US6587955B1 (en) * 1999-02-26 2003-07-01 Sun Microsystems, Inc. Real time synchronization in multi-threaded computer systems
KR100617228B1 (ko) 1999-03-19 2006-08-31 엘지전자 주식회사 실시간 운영체계 커널의 이벤트 전달 체계 구현방법
US6874144B1 (en) * 1999-04-05 2005-03-29 International Business Machines Corporation System, method, and program for implementing priority inheritance in an operating system
US6754690B2 (en) * 1999-09-16 2004-06-22 Honeywell, Inc. Method for time partitioned application scheduling in a computer operating system
US6823517B1 (en) * 2000-01-27 2004-11-23 Andrew E. Kalman Multi-tasking-real-time operating system for microprocessors with limited memory that constrains context switching to occur only at task level
US20010027464A1 (en) * 2000-03-27 2001-10-04 General Instrument Corporation Operating system abstraction interface for broadband terminal platform firmware
US20010034751A1 (en) * 2000-04-21 2001-10-25 Shinichiro Eto Real-time OS simulator
US6845504B2 (en) * 2001-02-08 2005-01-18 International Business Machines Corporation Method and system for managing lock contention in a computer system
US20020165999A1 (en) * 2001-03-07 2002-11-07 Ajile Systems, Inc. Apparatus and method for interfacing hardware events with software events
US6904483B2 (en) * 2001-03-20 2005-06-07 Wind River Systems, Inc. System and method for priority inheritance
US7117496B1 (en) * 2001-05-09 2006-10-03 Ncr Corporation Event-based synchronization
US7065765B2 (en) * 2001-12-05 2006-06-20 International Business Machines Corporation Serializing event handling in a threaded system with no wait states
CN1327347C (zh) 2002-01-24 2007-07-18 皇家飞利浦电子股份有限公司 在多处理环境中执行进程
US7448036B2 (en) * 2002-05-02 2008-11-04 International Business Machines Corporation System and method for thread scheduling with weak preemption policy
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7278141B2 (en) * 2003-04-23 2007-10-02 International Business Machines Corporation System and method for adding priority change value corresponding with a lock to a thread during lock processing
US20040226016A1 (en) * 2003-05-08 2004-11-11 Samsung Electronics Co., Ltd. Apparatus and method for sharing resources in a real-time processing system
US7380247B2 (en) * 2003-07-24 2008-05-27 International Business Machines Corporation System for delaying priority boost in a priority offset amount only after detecting of preemption event during access to critical section
US8438569B2 (en) * 2004-10-14 2013-05-07 International Business Machines Corporation Broadcasting a condition to threads executing on a plurality of on-chip processors
US7765547B2 (en) * 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
US8255912B2 (en) * 2005-04-13 2012-08-28 Qualcomm Incorporated Techniques for setting events in a multi-threaded system

Also Published As

Publication number Publication date
JP2013152725A (ja) 2013-08-08
JP2015097106A (ja) 2015-05-21
EP1869552A2 (en) 2007-12-26
CN101194231A (zh) 2008-06-04
TW200710734A (en) 2007-03-16
TWI327291B (en) 2010-07-11
JP2008538043A (ja) 2008-10-02
KR101004861B1 (ko) 2010-12-28
JP6009529B2 (ja) 2016-10-19
US8255912B2 (en) 2012-08-28
WO2006110914A3 (en) 2007-03-01
CN101194231B (zh) 2012-05-23
US20060236322A1 (en) 2006-10-19
WO2006110914A2 (en) 2006-10-19

Similar Documents

Publication Publication Date Title
KR101004861B1 (ko) 멀티―스레딩 시스템에서 이벤트를 세팅하기 위한 기술
EP2893444B1 (en) Quota-based resource management
EP1735705B1 (en) Improvements in or relating to an operating system for a computing device
JP5323828B2 (ja) 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路
EP1698972A2 (en) Processor and information processing method
EP1686474A2 (en) Processor and information processing method
US9274832B2 (en) Method and electronic device for thread scheduling
KR101702698B1 (ko) 적응형 프로세스 중요도
KR101551321B1 (ko) 휴대용 컴퓨팅 디바이스에서 요청들을 스케쥴링하기 위한 방법 및 시스템
KR20130063825A (ko) 운영체제에서 동적으로 선점 구간을 조정하는 장치 및 방법
US6907606B1 (en) Method for implementing event transfer system of real time operating system
WO2013156823A1 (en) Information processing device and method for protecting data in a call stack
CN110858164B (zh) 进程间通信方法、装置及计算机可读介质
TW202008159A (zh) 處理中斷優先級的電路系統
CN116302379A (zh) 微内核架构、调度方法、微内核系统及存储介质
CN114691339A (zh) 一种进程调度方法及计算设备
Anderson et al. The DASH Local Kernel Structure
CN116360941A (zh) 一种面向多核dsp的并行计算资源自组织调度方法及系统
Chen et al. Zinix-A Function-Modularized Kernel for Multiprocessor Embedded Systems
Labrosse Embedded Operating Systems
KR19990017724A (ko) 실시간 운영체제의 인터럽트 마스킹 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20131129

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141128

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150930

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20161125

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee