KR20070121839A - 멀티―스레딩 시스템에서 이벤트를 세팅하기 위한 기술 - Google Patents
멀티―스레딩 시스템에서 이벤트를 세팅하기 위한 기술 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming 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
본 발명은 일반적으로 컴퓨터 처리, 특히 멀티-스레딩 시스템에서 이벤트들을 세팅하기 위한 기술들에 관한 것이다.
운영체계는 하나의 공통 타입의 멀티-스레딩 시스템이다. 운영체계는 다양한 시스템 자원들(예컨대, 하드웨어 유닛들, 저장 장치들, 인터페이스들 등)을 관리하며 운영체계상에서 실행되는 애플리케이션들이 시스템 자원들을 액세스하도록 하는 서비스들을 제공한다. 운영체계는 전형적으로 적절하게 인보크, 스케줄링 및 처리되는 스레드들을 통해 이들 서비스들을 제공한다. 스레드는 수행될 태스크로서 보일 수 있다.
실시간 운영체계들은 운영체계들의 한 클래스이며, 무선 장치(예컨대, 셀룰라 전화), 개인휴대단말(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항에 있어서, 상기 현재의 스레드의 우선순위를 상기 높은 우선순위 레벨로 세팅하기전에 상기 원래의 우선순위 레벨을 저장하기 위한 코드를 더 저장하는, 프로세서 판독가능 매체.
- 제 1항에 있어서, 상기 적어도 하나의 이벤트 세팅 코드는 상기 적어도 하나의 이벤트를 세팅하기 위한 코드를 포함하며, 여기서 하나의 이벤트는 동시에 세팅되는, 프로세서 판독가능 매체.
- 제 1항에 있어서, 상기 적어도 하나의 이벤트 세팅 코드는 상기 적어도 하나의 이벤트의 각각에 대한 단일 이벤트를 한번 세팅하는 함수를 호출하기 위한 코드를 포함하는, 프로세서 판독가능 매체.
- 제 1항에 있어서, 상기 적어도 하나의 이벤트 세팅 코드는 상기 적어도 하나 의 이벤트의 각각을 개별적으로 세팅하기 위한 함수를 운영체계에서 호출하기 위한 코드를 포함하는, 프로세서 판독가능 매체.
- 제 1항에 있어서, 상기 현재 스레드의 우선순위를 세팅하기 위한 상기 코드는 상기 현재의 스레드의 우선순위를 높은 가능한 우선순위 레벨로 세팅하기 위한 코드를 포함하는, 프로세서 판독가능 매체.
- 제 1항에 있어서, 상기 현재의 스레드의 우선순위를 세팅하기 위한 상기 코드, 상기 적어도 하나의 이벤트를 세팅하기 위한 상기 코드, 및 상기 현재의 스레드의 우선순위를 복원하기 위한 상기 코드는 하나 이상의 이벤트들을 세팅하기 위하여 스레드에 의하여 호출가능한 함수의 일부분인, 프로세서 판독가능 매체.
- 제 7항에 있어서, 상기 함수는 운영체계에 대한 커널(kernel)위의 추상 계층(abstraction layer)에 상주하는, 프로세서 판독가능 매체.
- 이벤트들을 세팅하기 위한 방법으로서,현재의 태스크의 우선순위를 높은 우선순위 레벨로 세팅하는 단계;적어도 하나의 이벤트를 세팅하는 단계; 및상기 현재의 태스크의 우선순위를 원래의 우선순위 레벨로 복원하는 단계를 포함하는, 이벤트 세팅 방법.
- 제 9항에 있어서, 상기 현재의 태스크의 우선순위를 상기 높은 우선순위 레벨로 세팅하기전에 상기 원래의 우선순위 레벨을 저장하는 단계를 더 포함하는, 이벤트 세팅 방법.
- 제 9항에 있어서, 상기 적어도 하나의 이벤트 세팅 단계는 상기 적어도 하나의 이벤트를 세팅하는 단계를 포함하며, 여기서 하나의 이벤트는 동시에 세팅되는, 이벤트 세팅 방법.
- 제 9항에 있어서, 상기 현재의 태스크의 우선순위를 상기 높은 우선순위 레벨로 세팅하는 상기 단계는 상기 현재의 태스크의 우선순위를 상기 높은 가능한 우선순위 레벨로 세팅하는 단계를 포함하는, 이벤트 세팅 방법.
- 현재의 태스크의 우선순위를 높은 우선순위 레벨로 세팅하는 수단;적어도 하나의 이벤트를 세팅하는 수단; 및상기 현재의 태스크의 우선순위를 원래의 우선순위 레벨로 복원하는 수단을 포함하는, 장치.
- 제 13항에 있어서, 상기 현재의 태스크의 우선순위를 상기 높은 우선순위 레벨로 세팅하기전에 상기 원래의 우선순위 레벨을 저장하는 수단을 더 포함하는, 장 치.
- 제 13항에 있어서, 존재하는 경우에 상기 세팅된 적어도 하나의 이벤트에 기초하여 실행을 준비하는 태스크들을 식별하는 수단; 및실행을 준비하는 상기 태스크들중에서 높은 우선순위를 가진 태스크를 스케줄링하는 수단을 더 포함하는, 장치.
- 이벤트들을 세팅하기 위한 방법으로서,스케줄러를 일시적으로 비유효하게 만드는 단계;적어도 하나의 이벤트를 세팅하는 단계; 및상기 스케줄러를 정상 유효성(normal effectiveness)으로 복원하는 단계를 포함하는, 이벤트 세팅 방법.
- 제 16항에 있어서, 상기 스케줄러를 일시적으로 비유효하게 만드는 상기 단계는 현재의 태스크의 우선순위를 높은 우선순위 레벨로 세팅하는 단계를 포함하는, 이벤트 세팅 방법.
- 제 17항에 있어서, 상기 스케줄러를 정상 유효성으로 복원하는 상기 단계는 상기 현재의 태스크의 우선순위를 원래의 우선순위 레벨로 복원하는 단계를 포함하는, 이벤트 세팅 방법.
- 제 16항에 있어서, 상기 적어도 하나의 이벤트 세팅 단계는 상기 적어도 하나의 이벤트를 세팅하는 단계를 포함하며, 여기서 하나의 이벤트는 동시에 세팅되는, 이벤트 세팅 방법.
- 태스크들을 스케줄링하도록 동작하는 스케줄러; 및상기 스케줄러를 일시적으로 비유효하게 만들고, 적어도 하나의 이벤트를 세팅하며, 상기 스케줄러를 정상 유효성으로 복원하도록 동작하는 처리 모듈을 포함하며;상기 스케줄러는 상기 세팅된 적어도 하나의 이벤트에 따라 상기 태스크들을 스케줄링하도록 동작하는, 장치.
- 제 20항에 있어서, 상기 처리 모듈은 상기 스케줄러를 비유효하게 만들기 위하여 현재의 태스크의 우선순위를 높은 우선순위 레벨로 세팅하도록 동작하는, 장치.
- 제 21항에 있어서, 상기 처리 모듈은 상기 스케줄러를 정상 유효성으로 복원시키기 위하여 상기 현재의 태스크의 우선순위를 원래의 우선순위 레벨로 복원하도록 동작하는, 장치.
- 제 20항에 있어서, 상기 처리 모듈은 상기 적어도 하나의 이벤트 세팅하도록 동작하며, 여기서 하나의 이벤트는 동시에 세팅되는, 장치.
- 제 20항에 있어서, 상기 스케줄러는 존재하는 경우에 상기 세팅된 적어도 하나의 이벤트에 기초하여 실행을 준비하는 태스크들을 식별하고 실행을 준비하는 태스크들중에서 높은 우선순위를 가진 태스크를 스케줄링하도록 동작하는, 장치.
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)
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)
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 |
-
2005
- 2005-04-13 US US11/105,913 patent/US8255912B2/en active Active
-
2006
- 2006-04-12 KR KR1020077026350A patent/KR101004861B1/ko not_active IP Right Cessation
- 2006-04-12 EP EP06750367A patent/EP1869552A2/en not_active Ceased
- 2006-04-12 WO PCT/US2006/014306 patent/WO2006110914A2/en active Application Filing
- 2006-04-12 CN CN2006800200919A patent/CN101194231B/zh not_active Expired - Fee Related
- 2006-04-12 JP JP2008506796A patent/JP2008538043A/ja not_active Withdrawn
- 2006-04-13 TW TW095113191A patent/TWI327291B/zh active
-
2013
- 2013-02-26 JP JP2013035676A patent/JP2013152725A/ja not_active Withdrawn
-
2014
- 2014-12-24 JP JP2014260693A patent/JP6009529B2/ja not_active Expired - Fee Related
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 |