KR100983061B1 - 서로 다른 크리티컬리티의 인터럽트 요청 실행을제어하는데 적합한 인터럽트 제어 함수 - Google Patents

서로 다른 크리티컬리티의 인터럽트 요청 실행을제어하는데 적합한 인터럽트 제어 함수 Download PDF

Info

Publication number
KR100983061B1
KR100983061B1 KR1020077011313A KR20077011313A KR100983061B1 KR 100983061 B1 KR100983061 B1 KR 100983061B1 KR 1020077011313 A KR1020077011313 A KR 1020077011313A KR 20077011313 A KR20077011313 A KR 20077011313A KR 100983061 B1 KR100983061 B1 KR 100983061B1
Authority
KR
South Korea
Prior art keywords
interrupt
critical
processor
execution
interrupts
Prior art date
Application number
KR1020077011313A
Other languages
English (en)
Other versions
KR20070073916A (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=33462908&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR100983061(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 엠스타 소프트웨어 알앤디 (센젠) 리미티드, 엠스타 프랑스 에스에이에스, 엠스타 세미콘덕터인크, 엠스타 세미콘덕터, 인코퍼레이티드 filed Critical 엠스타 소프트웨어 알앤디 (센젠) 리미티드
Publication of KR20070073916A publication Critical patent/KR20070073916A/ko
Application granted granted Critical
Publication of KR100983061B1 publication Critical patent/KR100983061B1/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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

컴퓨터 운영시스템(OS)(5)의 제어하에서, 서로다른 임계성(criticality)을 가진 작업(3,17)을 실행하는데 필요한 프로세서(7)에 의해서 다른 임계성 (criticality)을 가진 인터럽트 요청(11,12) 실행을 제어하는데 적합한 인터럽트 제어기(1)로서, 서로 다른 인터럽트 소스로부터 발생된 크리티컬(11)과 비크리티컬(12) 인터럽트를 인식하고, 각각의 크리티컬(3)과 비크리티컬(17) 작업을 실행하기 위해서 프로세서(7)가 필요할 때 인식하는데 적합한 인터럽트 제어기이다. 또한 비크리티컬 인터럽트 요청(12)보다는 크리티컬 인터럽트 요청(11)을 프로세서(7)에 통과시키고, 크리티컬 인터럽트 요청(11)이나 크리티컬 작업(3)을 실행시키기 위해 필요한 프로세서(7)가 공존할 때 프로세서에 비크리티컬 인터럽트 요청(12)을 차단하고, 그리고 어떠한 크리티컬 인터럽트 요청(11)과 실행되어야 할 크리티컬 작업(3)을 가진 프로세서(7) 가 없을 때에는 비크리티컬 인터럽트 요청(12)을 프로세서에 통과시키는데 더 적합한 인터럽트 제어기이다.
인터럽트 제어기(1)는 하드웨어 형태이고 작동은 프로세서(7)에게 투명(transparent)한 것이 더 바람직하다.
인터럽트 제어기, 크리티컬(critical), 작업(task), IRQ

Description

서로 다른 크리티컬리티의 인터럽트 요청 실행을 제어하는데 적합한 인터럽트 제어 함수{INTERRUPT CONTROL FUNCTION ADAPTED TO CONTROL THE EXECUTION OF INTERRUPT REQUESTS OF DIFFERING CRITICALITY}
본 발명은 프로세서의 인터럽트의 실행을 제어하는 방법에 대한 것으로, 보다 더 자세하게는 크리티컬(critical) 또는 비크리티컬(non-critical) 프로세스를 지원하기 위해 디자인된 시스템의 프로세서의 인터럽트의 실행을 제어하는 방법에 대한 것이다.
대부분의 일반적인 컴퓨터시스템, 예를 들어 개인용컴퓨터는 실시간 요청을 엄격하게 대처할 필요가 없다. 설사 애플리케이션들, 예를 들어 프로세서에게 커다란 프로세싱 부하를 가하는 미디어스트리밍이 있을 지라도 마찬가지이다. 만약 기계의 프로세싱 능력을 초과하는 요청이 들어온 경우, 짧은 기간 동안,(만약 적절한 에러 복귀 시스템이 있다면) 시청자가 넘어갈 수 있을 정도로 재생되는 스트림에 약간의 화질저하가 있을 것이다.
반면에, 그러한 시스템은 융통성과 재사용성에 강점이 있도록 예를 들어 Ms윈도우나 리눅스 같은 개방형 OS(open operating systems)를 사용한다. 이러한 시스템들은, 하드웨어의 구성에 관계없이, 누구든지 같은 OS하에서 작동하는 어떠한 컴퓨터에도 작동 될 소프트웨어를 쓰도록 허용한다. 그 결과 다른 애플리케이션들간에 빈번한 충돌이 있고, 때때로 유저들은 가상 및 실제 하드웨어간의 성능 및 구성 차이점 때문에 소프트웨어가 제대로 구동하도록 만드는 것이 어려운 것을 발견한다.
프로세서가 엄격한 실시간 제약을 충족하기 위해서 필요로 하고 실패의 결과가(어쩔때는 말 그대로) 치명적일 수 있는 프로세서 애플리케이션들이 또한 있다. 예를 들면 비행기의 비행 제어 시스템; 엔진 관리 시스템; 그리고 모바일통신 장치에 사용되는 프로세서들이 있다. 이러한 애플리케이션들에서는 상기 애플리케이션들은 일반적으로 프로세서에서 구동되도록 허용된 소프트웨어를 매우 주위깊게 제어하고; 혹독하게 테스트하고; 그리고 때때로 소프트웨어가 다른 프로세서들에서 구동하도록 하기 위해서 하드웨어와 분리한다. 또한 모바일폰과 같은 애플리케이션들에서는 애플리케이션들이 다른 장치에서 핸드폰으로 포트되기 쉽게하기 위해서, 그리고 보다 폭넓은 풀의 프로그래머들이 애플리케이션 소프트웨어를 산출하도록 하기 위해서 리눅스 같은 개방OS에 배치해야 하는 부담이 있다.
이와 동시에, 크리티컬 실시간 소프트웨어 또한 실행시켜야 하는 동일한 프로세서 코어상의 개방형 OS하에서 애플리케이션을 구동시키려는 욕구를 충족시키면서 , 모바일폰에서 하드웨어의 크기를 감소시키고, 비용과 전력소비를 최소하하여야하는 부담이 있다.
크리티컬한 작업이 양보되지 않도록 하기 위해서 작업(task)들을 비교해서 인터럽트에 우선순위를 부여하는 것이 가능하다. 인터럽트들은 서로 비례해서 다른 우선순위가 부여될 수 있고, 프로세서는 이러한 우선순위에 따라 반응할 것이다. 그래서, 더 높은 우선순위를 가진 인터럽트에게 우선권을 주고, 현재 낮은 우선순위의 인터럽트의 ISR(Interrupt Service Routine)은 유예되고 더 높은 우선순위의 인터럽트가 완료된 후에 수행될 것이다.
이러한 방식에서, 둘 또는 그 이상의 다른 우선순위의 인터럽트들은 서로 선취할(pre-empt) 것이고 프로세서에서 유예된 ISR온상을 야기한다. 이러한 작업은 또한 다른 상대적 우선순위를 부여받게 되고, 프로세서의 OS는 작업을 수행할 때 이러한 우선순위들을 를 고려할 것이다. 그러나, 프로세서의 인터럽트 함수는 항상
인터럽트에 작업보다 높은 우선순위를 줄 것이고, 이러한 배치는 모든 인터럽트 및 작업들의 대기시간을 최소화하고, 인터럽트들와 작업들의 대기시간이나 수행시간이 일정하게 되는 것을 보장한다.
그러나, 만약 추가적인 비크리티컬 애플리케이션이 같은 프로세서에 의해서 유지되어야 하고 그리고 이러한 애플리케이션들이 또한 유사한 인터럽드와 작업들을 포함하고 있다면, 크리티컬한 시스템의 인터럽트 및 작업들과 같은 기반에서 이것들을 지원하는 것만이 가능하고, 따라서 프로세서의 인터럽트 함수는 비크리티컬한 애플리케이션의 인터럽트에 크리티컬한 시스템의 작업(task)들보다 우선권을 자동적으로 부여하고, 이는 크리티컬한 시스템의 실행을 미루게 하는 경향이 있다.
크리티컬한 프로세스의 작동의 저하없이 같은 프로세서의 코어에서 구동하도록 크리티컬과 비크리티컬한 프로세스를 허용할 수 있는 배열을 제공하도록 하는 것이 본 발명의 목적이다.
본 발명은 컴퓨터 운영시스템(OS)의 제어하에서, 서로다른 긴급성(criticality)을 가진 작업을 실행하는데 필요한 프로세서에 의해서 다른 긴급성(criticality)을 가진 인터럽트 요청 실행을 제어하는데 적합한 인터럽트 제어 함수를 제공함으로써 이루어진다.
여기서, 인터럽트 제어 시스템은 서로 다른 인터럽트 소스로부터 발생된 크리티컬과 비크리티컬 인터럽트를 인식하고, 각각의 크리티컬과 비크리티컬 작업을 실행하기 위해서 프로세서가 필요할 때를 인식한다.
상기 인터럽트 제어 시스템은 비크리티컬 인터럽트 요청보다는 크리티컬 인터럽트 요청을 프로세서에 패스하고, 크리티컬 인터럽트 요청이나 크리티컬 작업을 실행시키기 위해 필요한 프로세서가 공존할 때 프로세서에 비크리티컬 인터럽트 요청을 차단하고, 그리고 어떠한 크리티컬 인터럽트 요청과 실행되어야 할 크리티컬 작업을 가진 프로세서가 없을 때에는 비크리티컬 인터럽트 요청을 프로세서에 패스하도록 최적화 되었다.
따라서, 본 발명은 크리티컬과 비크리티컬 인터럽트들로 된 인터럽트 분류와 크리티컬과 비크리티컬 작업으로 된 작업분류를 포함한다. 그리고 절대적인 우선권을 크리티컬 인터럽트에 부여하고, 그리고 나서 비크리티컬 인터럽트와 비크리티컬 작업보다 앞서도록 크리티컬 작업에 우선권을 부여하는 제어 함수를 제공한다. 이러한 방식에 의하면 크리티컬 시스템의 대기시간 요구는 충족될 수 있다.
인터럽트 제어 함수는 소프트웨어로서 구성될 수 있으나, 하드웨어로 구성되는 것이 더 바람직하다. 그리고 인터럽트 제어 함수는 모든 인터럽트 요청을 수신하고 요청된 우선권에 따라서 이것들을 프로세서로 패스시킨다. 그러므로, 크리티컬과 비크리티컬 인터럽트간의 우선권의 제어는 프로세서 자체에게 투명한(transparent) 프로세스이고, 프로세서에서 오버해드 요구사항이 없다.
도1은 본 발명의 일 예에 따른 인터럽트 제어 함수를 포함한 타이밍 크리티컬 시스템의 개념도
도2는 도1의 타이밍 크리티컬 시스템의 내부에서 발생하는 작업의 개념도를 보여주는 모식도.
도3은 멀티플 크리티컬 ISR들을 제어하는 도1의 시스템의 작동을 보여주는 모식도
도4는 크리티컬 ISR들과 크리티컬 작업들을 제어하는 도1의 시스템의 작동을 보여주는 모식도
도5는 크리티컬 작업들과 비크리티컬 ISR들을 제어하는 도1의 시스템의 작동을 보여주는 모식도
도6은 비크리티컬 ISR들의 집합을 제어하는 도1의 시스템의 작동을 보여주는 모식도; 그리고
도7은 크리티컬 인터럽트 제어기의 소프트웨어의 경쟁의 작동을 보여주는 모식도이다.
이하 첨부한 도면을 첨부하여 본 발명의 일 예를 자세히 서술한다.
도1은 프로세서(7)를 포함하는 컴퓨터 플랫폼(4), 메모리(20)와 일반적인 컴퓨터 OS(operating system)(5)를 포함하는 컴퓨터 시스템을 도시한다. 실시간으로, 타이밍 크리티컬 시스템(8)은 플랫폼(4)에서 타이밍 크리티컬이 아닌 추가적인 애플리케이션들(6)과 함께 구동된다.
타이밍 크리티컬 시스템(timing critical system)(8)은 그와 연관된 한 개 이상의 IRQ(interrupt request) 소스를 가지고 있는데, 이것들은 크리티컬 인터럽트(11)로 디자인되고, 그리고 각각의 소스는 세팅된 플래그(flag)(13)에 의해서 크리티컬로 표시(mark)된다.
각각의 크리티컬 인터럽트(11)는 인터럽트 서비스 루틴(ISR)(2)과 관련성을 가지고 있는데, 이것은 크리티컬 인터럽트(11)에 의해서 유발될 때, 프로세서(7)에 의해서 수행된다.타이밍 크리티컬 시스팀(8)은 또한 크리티컬 인터럽트(11)보다 낮은 우선순위를 가지고 있는 관련된 크리티컬 작업(3)을 가지고 있다.
기타 애플리케이션(6) 또한 그와 연관된 한 개 이상의 인터럽트 요청 소스(IRQs)를 가지고 있는데, 이것들은 비크리티컬 인터럽트(12)로서 디자인되고, 그리고 플래그(13)가 세팅되지 않음으로써 비크리티컬로 표시된다. 각각의 비크리티컬 인터럽트(12)는 비크리티컬 인터럽트(12)에 의해서 유발 될 때, 프로세서(7)에 의해서 수행되는 관련된 비크리티컬 인터럽트 서비스 루틴(ISR)(9)을 가지고 있다.
기타 애플리케이션들은 또한 연관된 비크리티컬 작업(17)들을 가지고 있다.
도1에서 ISR과 작업(task)들이 쌓여있는 순서(stacking order)에서 나타나듯 이, 비크리티컬 인터럽트(12)는 크리티컬 인터럽트(11)와 크리티컬 작업(13)보다 낮은 우선순위를 가지고 있고, 비 크리티컬 작업(17)은 크리티컬 인터럽트(11)와 크리티컬 작업(13) 및 비크리티컬 인터럽트(9)보다 낮은 우선순위를 가지고 있다.
각각 카테고리(크리티컬 또는 비크리티컬인)에서 각각의 인터럽트는 같은 카테고리 내에서의 다른 인터럽트에 비례하여 우선순위가 주어지고, 그리고 각각의 카테고리 (크리티컬과 비크리티컬인)에서 각각의 작업은 같은 카테고리 내에서의 다른 작업에 비례하여 우선순위가 주어진다.
이러한 상대적인 우선순위는 각각의 카테고리안에서 인터럽트가 수행되는 순서를 결정한다.
그래서 시스템에서의 같은 우선순위 크기는 크리티컬과 비크리티컬 인터럽트 양쪽에서 사용될 수 있다. 그러나, 전술한대로, 같은 우선순위 크기에서 크리티컬 작업은 항상 비크리티컬 작업보다 더 높은 우선순위가 주어진다.
인터럽트 제어기(1)는 모든 크리티컬 인터럽트(11)와 비크리티컬 인터럽트(12)를 수신받고 그리고 프로세서(7)에 인터럽트 어플리케이션을 제어한다.
크리티컬 인터럽트가 수신될 때, 마스크함수(21)를 통해서 우선순위인코더(22)로 패스하는데, 여기서 셋플래그(13)는 플래그비교기(23)에 의해 감지된다. 그리고, 현재 활성화된 특정 인터럽트를 제외한 모든 비크리티컬 인터럽트(12)들을 마스킹하는 불능 함수(disable function)(24)를 실행한다.
만약 현재 활성화된 인터럽트가 크리티컬 인터럽트(11)라면, 오직 더 높은 우선순위의 새로운 크리티컬 인터럽트인 경우에만 선점(pre-empty)된다. 만약 현재 활성화된 인터럽트가 비크리티컬 인터럽트라면, 새로운 크리티컬 인터럽트는 우선순위 레벨에 관계없이 선점될 것이다.
만약 현재 활성화된 인터럽트가 없다면, 모든 비크리티컬 인터럽트들은 마스킹된다. 이러한 배열은 모든 크리티컬 인터럽트(11)가 그들의 상대적인 우선순위 안에서, 기타 애플리케이션(6)과 연관된 모든 다른 비크리티컬 인터럽트(12)의 선행작업, 현재 또는 후의 작업에 관계없이 즉시 서비스되는 것을 보장한다. 그리하여 대기시간 조건을 보장하게 된다.
불능함수에 의한 비크리티컬 인터럽트의 자동 마스킹은, 한번 크리티컬 인터럽트에 의해 영향을 받으면, 후술할 대로 크리티컬 시스템(8)에 의해서 리셋된 이후로 활성화 상태로 유지된다. 이러한 동안, 비 크리티컬 인터럽트(12)는 마스킹함수(21)에 계류된다.
일단 모든 활성화 크리티컬 인터럽트(11)가 실행되면, 프로세서는 자연스럽게 어떤 이전과 현재 그리고 이전의 비크리티컬 인터럽트(14,15)의 집합들(크리티컬 인터럽트에 의해서 프로세서(7)에서 인터럽트 될 것인)을 완료하도록 돌아온다.
그러나 어떤 새로운 비크리티컬 인터럽트들은 실행되지 않을 것이다. 이것은 인터럽트 14와 15가 E와 D로 표시되는 도6에서 도시된다.
첫번째 기회에서, 활성화된 인터럽트가 안 남아있을 때, 프로세서(7)는 제어권을 OS(5)에 돌려주고, 그리고 OS는 비크리티컬 작업(10)전에 크리티컬 작업(3)을 실행한다. 따라서 프로세서(7)에 의해 최소 우선순위의 크리티컬 작업(25)전에 실행되는 어떠한 크리티컬 작업들도 OS에 의해서 호출된다. 호출된 작업(25)은 시스 템의 의무적인 형태이고, 프로세서(7)에게 인터럽트 제어기(1)에 패스하고 비활성화 인터럽트가 더 이상 마스크된 상태가 아니도록 하기 위해서 불능함수를 리셋하도록 하는 불능신호를 리셋한다.
인터럽트 제어기는 그러고 나서 어떤 비크리티컬 인터럽트(12) 프로세스에 이르고, 이것들을 실행시키기 위해서 프로세서(7)에 패스한다. 활성화된 비크리티컬 인터럽트(12)가 더 이상 안 남아있을 때, 프로세서(7)는 제어권을 OS(5)에 돌려주고, 그리고 OS(5)는 어떤 기다리고 있는 비크리티컬 작업(10)들을 그들의 상대적인 우선순위에 따라 실행한다. 이러는 동안, 어떤 인터럽트, 크리티컬이건 비크리티컬이건이든 프로세서의 사용을 대체할 것이다.
인터럽트(11,12) 또는 작업(10)이 대기되지 않는 동안에는, OS(5)는 제어권을 완전한 시스템에서 가장 낮은 우선순위 작업(16)에 돌려줘서, 시스템을 절전모드 또는 휴식(idle)모드로 세팅한다.
기타 애플리케이션(6)들이 모든 비크리티컬 애플리케이션의 형태로 분류된 경우일지라도, ISRs(9)이거나 낮은 우선순위의 비크리티컬작업(17) 심지어는 낮은 우선순위의 비크리티컬 작업(10)형태로 이것들에 의해 호출됨으로써 관련된 프로세스에 다른 우선순위를 할당하는 것이 가능하다.
더 상세하게는, 마스킹함수(21)는 독자적인 인터럽트 소스와 관련된 인터럽트를 카운트하는 인터럽트카운터(CNT) 포함한다. 그리고 나서, 비크리티컬 인터럽트가 마스킹되었다 할지라도, 상기 카운터는 인터럽트가 놓치지 않는 것을 보장한다. 더욱이, 카운터는 미리 결정된 카운트위에 인터럽트를 산출하도록 배열하는 것 이 가능한데, 이 카운터는 크리티컬 인터럽트이거나 증가된 우선순위의 비크리티컬 인터럽트일 수 있는 인터럽트일 수 있다.
도2는 어떻게 도1의 서로 다른 ISR들과 작업들간의 우선순위들이 서로 연결되고 OS와 크리티컬과 비크리티컬 인터럽트 IRQ들에 의해서 제어되는지를 더 명확하게 도시된 화면을 제공한다.
도3는 3개의 크리티컬 인터럽트 A,B 그리고 비크리티컬 인터럽트D에 뒤이은 C의 효과를 도시한다. 각각의 인터럽트들은 숫자형태로 도시된 대로 다른 우선순위를 가진다. 0은 가장 높은 우선순위이다.
도3에서 첫번째 줄은 모든 인터럽트들이 프로세서에 의해서 똑같이 취급되는 알려진 시스템의 형태를 나타낸다. 그리고, 어떻게 인터럽트의 우선순위가 인터럽트A가 인터럽트D에 의해서 선점되기까지 인터럽트B와 C보다 높은 우선순위를 가지도록 하는 이유가 되는 결정적인 요인이 되는지를 보여준다. 일단 ISR D가 완료되면, 프로세서는 ISR A를 ISR B와 ISR C가 실행되기 전에 완료한다. 모든 작업들 T3와 T12/10은 우선순위에 따른 인터럽트들을 따른다.
이와 비교하여, 도3의 아랫줄은 도1에 도시된 크리티컬 작업 T3이 실행되기 전에, 크리티컬 인터럽트 A,B 그리고 C에 그들 고유의 상대적인 우선순위를 부여한 시스템의 다른 형태를 도시한다.
인터럽트제어기(1)에 제어권을 복귀시켜, 비크리티컬 작업(T10)을 실행하기 위해 OS에 제어권을 복귀시키기 전에, ISR D를 실행하기 위해서 비크리티컬 인터럽트 D를 가능하게 하도록 한다.
도4는 윗줄에 도시된 알려진 시스템에서, 인터럽트가 수행되는 순서를 변경하는 낮은 우선순위를 가지나 아랫줄에 도시된 도1의 시스템에는 영향이 없는 비크리티컬 인터럽트D를 제외하고는 도3과 유사하다.
도5는 작업 T3가 실행되는 동안, 비크리티컬 인터럽트 D가 생기기 전에 세개의 크리티컬 인터럽트 A,B 그리고 C가 연속적으로 실행되는 상황을 도시한다.
윗줄은 프로세서가 작업 T3를 가로채서 비크리티컬 인터럽트D에 대응하는 알려진 시스템을 도시한다.
그림에서 아랫줄은 도1의 시스템이 비크리티컬 인터럽트D를 크리티컬 작업 T3가 완료될 때까지 미루는 방법을 도시한다.
도6은 크리티컬 인터럽트 A의 결과로서 비크리티컬 인터럽트의 네스팅(nesting)을 도시한다.
윗줄은 알려진 시스템을 도시하는데, 인터럽트들은 그들이 우선순위에 따라서 정확하게 처리되고, 그리고 더 높은 우선순위의 제2 인터럽트(E) 다음에는 제1 인터럽트(D)를 인터럽트한다.
더 낮은 우선순의의 인터럽트(A)는 ISR(E)의 완료에 영향을 미치지 못한다. 그러나, 인터럽트(A)는 제1 인터럽트(D)보다 더 높은 우선순위이므로, 그래서 ISR(A)는 프로세서가 일단 ISR(E)를 완료한 바로 다음에 실행된다.
인터럽트(D)보다 낮은 우선순위의 마지막 인터럽트(F)는 그러고 나서 수신되나, 이것은 ISR(D)가 완료될 때까지 유예된다. 그러고 나서 작업 T는 그들의 우선순위에 따라서 실행된다.
이와 비교해서, 도1의 시스템은 즉각 우선순위를 크리티컬 인터럽트 A에 부여하고 그리고 ISR(E)의 완료를 연기하도록 서비스한다. 더 나아가, 비크리티컬 인터럽트(F)는 크리티컬 인터럽트(A)가 마스크 된 후에 인터럽트 제어기에 수신되므로, 이러한 새로운 비크리티컬 인터럽트(F)는 크리티컬 작업(T3)가 실행될 이후까지는 실행되지 않는다.
도 7은 도1의 시스템의 소프트웨어의 에뮬레이션의 동작을 도시한다. 상기 도는
소프트웨어 관리 응답 SWMgr이 서로 다른 크리티칼과 비크리티컬 인터럽트들의 숫자에 따라 응답하는 것을 도시한다. 시스템의 휴식(idle)상태에서 시작한 후, 초기 비크리티컬 인터럽트(D)는 크리티컬 여부가 체크된다. 그리고 나서 프로세서에 의해서 실행되도록 패스된다.
크리티컬 인터럽트(A)가 그 후에 발생하면, 크리티컬 여부를 다시 체크하고, 이것은 크리티컬이므로 소프트웨어 마스킹은 비크리티컬 인터럽트로 변경된다.
그 후 두개의 추가적인 비크리티컬 인터럽트E와 F를 수신하는 프로세스 동안, ISR A는 실행된다. 시스템이 크리티컬 인터럽트(A)에 의해서 인터럽트 되는 동안 진행되는 ISR(D)를 완료하기 전에, 인터럽트(E)보다 우선순위가 높은 인터럽트(F)와 관련된 정보를 시스템이 저장한다.
시스템은 그리고 나서 더 낮은 우선순위의 비크리티컬 인터럽트(E)에 대한 정보를 저장하는데, 비록 양자택일(대안)의 배열일지라도, 인터럽트 E와 F에 대한 정보는 동시에 저장될 수 있다. 저장된 인터럽트 E와 F 둘 다 크리티컬 인터럽 트(A) 이후에 도달하기 때문에, 이것들은 실행되지 않고, 대신에 OS에 제어권이 돌아간다.
그리고 나서 OS는 크리티컬 작업(T3)를 실행한다. 그러나 반복된 비크리티컬 인터럽트(E)는 그 후에 수신된다. 시스템은 인터럽트(E)의 크리티컬 여부를 리뷰하고, 그것은 비크리티컬이므로, 이러한 인터럽트를 연기하고 크리티컬 작업(T3)를 계속한다.
일단 크리티컬 작업(T3)가 완료되면, 가장 낮은 우선순위의 크리티컬 작업(T12)의 실행에 의해서 나타나듯이, 시스템은 비크리티컬 인터럽트의 소프트웨어 마스킹으로 제거하고, 그리고 나서 상대적인 우선순위에 따라서 실행되며, 이와 함께 인터럽트(E)가 마침내 두번 실행된다. 그리고 나서 시스템은 휴식(idle)모드에 들어가기 전에 가장 낮은 우선순위의 비크리티컬 작업(T10)를 실행한다.
복잡한 시스템에서 각각의 작업과 인터럽트들을 평가하고, 개별적인 기반에서 배정하는 것은 실용적이지는 않을 수 있다.. 오히려, 전체 시스템을 적절하게 크리티컬과 비크리티컬로 판단된 서브시스템으로 나누는 것이 더 실용적일 것이다.
이러한 다소 열악한 접근법에서, 크리티컬 서브시스템내의 모든 작업과 인터럽트들은 각각의 크리티컬한 플래그 세팅을 가지고 있고, 반면에 비크리티컬 서브시스템에서의 모든 작업과 인터럽트들이 그들의 인터럽트한 플래그 세팅을 가지고 있지 않는다.
구체적으로, 모바일 전화기를 예로 들면, 크리티컬 서브시스템의 예로서는 전화기로부터의 콜 실행을 제어하는 소프트웨어이고, 비크리티컬 서브시스템의 예 는 전화기의 디스플레이에 나타나는 아이콘 애니메이션이다.
서브시스템 기반에 의해서 조합하게 크리티컬 여부가 결정되면, 크리티컬이라고 판단된 서브시스템들의 몇몇 작업들 및/또는 인터럽트들이 비크리티컬이라고 판단된 서브시스템의 몇몇 작업들 및/또는 인터럽트들보다 시스템에게 덜 중요할 수 있다. 이러한 문제점을 개선하기 위해서, 불능함수(24)의 리셋 작업의 우선순위를 올리는 것이 가능하다.

Claims (18)

  1. 컴퓨터 운영시스템(OS)의 제어하에서 서로 다른 크리티컬리티(criticality)를 가진 작업을 실행하는데 필요한 프로세서에 의해서 다른 크리티컬리티(criticality)의 인터럽트 실행을 관리하는 방법에 있어서,
    서로 다른 인터럽트 소스들로부터 발생된 크리티컬과 비크리티컬 인터럽트 요청들을 인식하고, 각각의 크리티컬과 비크리티컬 작업들을 실행하기 위해서 프로세서가 필요할 때를 인식하고,
    비크리티컬 인터럽트 요청들보다는 크리티컬 인터럽트 요청을 프로세서에 전달(Pass)하고, 비크리티컬 인터럽트 요청들이 크리티컬 인터럽트 요청들과 공존하거나 크리티컬 작업을 실행시키기 위해 필요한 프로세서가 필요한 경우 상기 프로세서에 비크리티컬 인터럽트 요청들을 차단하고, 어떠한 비크리티컬 인터럽트 요청들이 크리티컬 인터럽트 요청들과 공존하지 않고 상기 프로세서가 실행되어야 할 크리티컬 작업을 가지지 않은 때에는 비크리티컬 인터럽트 요청을 상기 프로세서에 전달(Pass)하는 인터럽트 실행을 관리하는 방법.
  2. 제1항에 있어서,
    제1우선순위 레벨이 제2우선순위레벨보다 높다면, 제2 우선순위 레벨을 가진 제2 인터럽트에 대응한 제2 크리티컬 ISR보다 우선하여 제1 우선순위 레벨을 가진 제1 크리티컬 인터럽트에 대응한 제1크리티컬 인터럽트 서비스 루틴(ISR)을 실행하도록 프로세서에 지시하는 인터럽트 실행을 관리하는 방법.
  3. 제2항에 있어서,
    상기 제1우선순위 레벨이 제2 우선순위 레벨보다 낮다면, 상기 프로세서가 상기 제2 크리티컬ISR을 실행할 때, 제1 크리티컬 인터럽트의 발생을 저장하고,
    인터럽트 제어 시스템은 OS가 제2 ISR을 실행하지 않는 동안에, 제1크리티컬 ISR을 실행하도록 OS에 지시하는 인터럽트 실행을 관리하는 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 프로세서가 크리티컬 ISR 또는 크리티컬 작업을 실행하는 동안, 비크리티컬 인터럽트가 수신된다면, 비크리티컬 인터럽트의 발생이 저장되어, OS가 수신한 신호이후에 인터럽트 제어 시스템이 비크리티컬 ISR을 실행하도록 OS를 지시하는 인터럽트 실행을 관리하는 방법.
  5. 제3항에 있어서,
    상기 인터럽트의 발생은 상기 인터럽트의 소스와 관련된 카운터를 증가시키면서 저장되고, 제어기는 인터럽트 제어 시스템이 인터럽트에 대응하여ISR을 실행하도록 OS를 지시할 때 감소되는 인터럽트 실행을 관리하는 방법.
  6. 제5항에 있어서,
    상기 인터럽트의 발생이 저장되어 관련된 카운터가 오버플로우가 되면, 오버플로우 인터럽트가 생성되고, 상기 오버플로 인터럽트는 크리티컬 인터럽트로 또는 비크리티컬 인터럽트로 디자인 될 수 있는 인터럽트 실행을 관리하는 방법.
  7. 제1항 내지 제3항 중 어느 한 항에 있어서,
    인터럽트는 각각에 관련된 플래그를 가지고, 상기 플래그가 제1상태에 있다면 상기 인터럽트는 상기 크리티컬 인터럽트로 식별되고, 상기 플래그가 제2상태에 있다면 상기 인터럽트는 비크리티컬 인터럽트로 식별되는 인터럽트 실행을 관리하는 방법.
  8. 제7항에 있어서,
    비크리티컬 인터럽트들의 마스킹에 의해 상기 제1상태 플래그에 응답하는 인터럽트 실행을 관리하는 방법.
  9. 제8항에 있어서,
    일단 모든 크리티컬 작업들이 실행되면, 비크리티컬 인터럽트들이 마스킹되지 않도록 리셋하는 인터럽트 실행을 관리하는 방법.
  10. 제9항에 있어서,
    상기 프로세서로부터의 지시에 따라 리셋되는 인터럽트 실행을 관리하는 방법.
  11. 제10항에 있어서,
    크리티컬 작업으로부터 리셋 지시가 일어나는 인터럽트 실행을 관리하는 방법.
  12. 제11항에 있어서,
    상기 리셋 지시를 생성하는 상기 크리티컬 작업은 모든 크리티컬 작업들의 우선순위들 중에서 가장 낮은 레벨을 가지는 인터럽트 실행을 관리하는 방법.
  13. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 프로세서로 인터럽트의 전달을 제어하는 하드웨어 인터럽트 제어기로 구현되는 인터럽트 실행을 관리하는 방법.
  14. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 프로세서에서 구동되는 소프트웨어로 구현되는 인터럽트 실행을 관리하는 방법.
  15. 제1항 내지 제3항 중 어느 한 항에 있어서,
    인터럽트 제어 함수의 제어하에서 인터럽트를 수신하는 프로세서와 결합된 인터럽트 실행을 관리하는 방법.
  16. 프로세서와 제 15항에 기재된 인터럽트 실행을 관리하는 방법을 결합한 타이밍 크리티컬 시스템.
  17. 제 16항에 기재된 크리티컬 시스템을 포함하는 모바일 전화 핸드셋.
  18. 삭제
KR1020077011313A 2004-10-18 2005-10-17 서로 다른 크리티컬리티의 인터럽트 요청 실행을제어하는데 적합한 인터럽트 제어 함수 KR100983061B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0423094.2 2004-10-18
GBGB0423094.2A GB0423094D0 (en) 2004-10-18 2004-10-18 Interrupt control

Publications (2)

Publication Number Publication Date
KR20070073916A KR20070073916A (ko) 2007-07-10
KR100983061B1 true KR100983061B1 (ko) 2010-09-17

Family

ID=33462908

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077011313A KR100983061B1 (ko) 2004-10-18 2005-10-17 서로 다른 크리티컬리티의 인터럽트 요청 실행을제어하는데 적합한 인터럽트 제어 함수

Country Status (7)

Country Link
US (1) US7689749B2 (ko)
EP (1) EP1836569B1 (ko)
KR (1) KR100983061B1 (ko)
CN (1) CN101069158A (ko)
GB (1) GB0423094D0 (ko)
TW (1) TWI361383B (ko)
WO (1) WO2006043040A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7730248B2 (en) * 2007-12-13 2010-06-01 Texas Instruments Incorporated Interrupt morphing and configuration, circuits, systems and processes
US8255602B2 (en) * 2008-09-09 2012-08-28 Texas Instruments Incorporated Effective mixing real-time software with a non-real-time operating system
GB2458005B (en) * 2009-02-12 2010-01-20 Gzero Ltd Removing non-essential programs identified by a server from memory
JP5403822B2 (ja) * 2010-05-24 2014-01-29 本田技研工業株式会社 情報提供装置および情報提供方法
CN101887383B (zh) * 2010-06-30 2013-08-21 中山大学 一种进程实时调度方法
US20120198464A1 (en) * 2011-01-31 2012-08-02 Toyota Jidosha Kabushiki Kaisha Safety controller and safety control method
US8725923B1 (en) * 2011-03-31 2014-05-13 Emc Corporation BMC-based communication system
DE102014116144A1 (de) 2014-11-05 2016-05-12 Hella Kgaa Hueck & Co. Elektronische Einrichtung zum Sperren von Unterbrechungsanforderungen
US11036541B2 (en) * 2017-09-19 2021-06-15 Microsoft Technology Licensing, Llc Interrupt management for a hypervisor
CN109933549B (zh) * 2019-01-30 2022-04-05 中山大学 一种适用于risc-v处理器的中断控制器
CN113419450A (zh) * 2021-06-29 2021-09-21 北京猎户星空科技有限公司 一种电机foc控制及运行方法、装置、电子设备及介质
CN114281492A (zh) * 2021-11-12 2022-04-05 北京智芯微电子科技有限公司 中断处理方法、装置、芯片、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930009633B1 (ko) * 1988-09-12 1993-10-08 닉스도르프 콤퓨터아게 데이타 처리장치의 인터럽트 처리방법
US20040205755A1 (en) * 2003-04-09 2004-10-14 Jaluna Sa Operating systems

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4734882A (en) * 1985-04-01 1988-03-29 Harris Corp. Multilevel interrupt handling scheme
DE3705577A1 (de) 1987-02-21 1988-09-01 Bosch Gmbh Robert Verfahren zur prioritaetsabhaengigen bearbeitung von unterschiedlichen anforderungen eines rechners
DE59509024D1 (de) 1995-09-20 2001-03-22 Siemens Ag Interruptbehandlungssystem eines Betriebssystems
US5995745A (en) * 1996-12-23 1999-11-30 Yodaiken; Victor J. Adding real-time support to general purpose operating systems
US5919255A (en) * 1997-03-12 1999-07-06 Texas Instruments Incorporated Method and apparatus for processing an interrupt
US6061709A (en) * 1998-07-31 2000-05-09 Integrated Systems Design Center, Inc. Integrated hardware and software task control executive
US6212592B1 (en) * 1998-09-17 2001-04-03 Micron Technology, Inc. Computer system for processing system management interrupt requests
US6601122B1 (en) * 2000-04-17 2003-07-29 International Business Machines Corporation Exceptions and interrupts with dynamic priority and vector routing
US7165134B1 (en) * 2000-06-28 2007-01-16 Intel Corporation System for selectively generating real-time interrupts and selectively processing associated data when it has higher priority than currently executing non-real-time operation
US7222203B2 (en) * 2003-12-08 2007-05-22 Intel Corporation Interrupt redirection for virtual partitioning
US7149831B2 (en) * 2004-09-27 2006-12-12 Hewlett-Packard Development Company, L.P. Batch processing of interrupts
US7627705B2 (en) * 2005-12-30 2009-12-01 Stmicroelectronics Pvt. Ltd. Method and apparatus for handling interrupts in embedded systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930009633B1 (ko) * 1988-09-12 1993-10-08 닉스도르프 콤퓨터아게 데이타 처리장치의 인터럽트 처리방법
US20040205755A1 (en) * 2003-04-09 2004-10-14 Jaluna Sa Operating systems

Also Published As

Publication number Publication date
US7689749B2 (en) 2010-03-30
KR20070073916A (ko) 2007-07-10
TW200625172A (en) 2006-07-16
CN101069158A (zh) 2007-11-07
GB0423094D0 (en) 2004-11-17
US20080195785A1 (en) 2008-08-14
EP1836569B1 (en) 2013-11-27
TWI361383B (en) 2012-04-01
EP1836569A1 (en) 2007-09-26
WO2006043040A1 (en) 2006-04-27

Similar Documents

Publication Publication Date Title
KR100983061B1 (ko) 서로 다른 크리티컬리티의 인터럽트 요청 실행을제어하는데 적합한 인터럽트 제어 함수
US7739685B2 (en) Decoupling a central processing unit from its tasks
US20140282507A1 (en) Systems and methods of using a hypervisor with guest operating systems and virtual processors
CN112416546A (zh) 多任务调度方法、电子装置和计算机存储介质
CN107203428B (zh) 一种基于Xen的VCPU多核实时调度算法
CN111414246B (zh) 具备tee扩展的计算平台上的跨安全世界实时功能调用方法及装置
EP0783734A1 (en) System and method for providing cooperative interrupts in a preemptive task scheduling environment
US8528006B1 (en) Method and apparatus for performing real-time commands in a non real-time operating system environment
KR20130066900A (ko) 연성 실시간 운영체제의 실시간성 확보방법
EP1892625B1 (en) Finer grained operating system scheduling
JP2005276097A (ja) 割り込み依頼プログラムおよびマイクロコンピュータ
US10853133B2 (en) Method and apparatus for scheduling tasks to a cyclic schedule
EP2495656B1 (en) Enhanced prioritising and unifying interrupt controller
US6990669B1 (en) Real-time scheduler
KR100848323B1 (ko) 임베디드 운영체제 커널의 실시간 성능을 향상시키는 방법
TWI676935B (zh) 處理中斷優先級的電路系統
CN115098230A (zh) 管理线程的方法及装置
KR20130048504A (ko) 임계성에 기초한 파티션 스케쥴링 장치 및 방법
KR101334842B1 (ko) 가상화 지원 단말 플랫폼을 위한 가상머신 관리장치 및 방법
TWI463406B (zh) 具搶占功能的即時中斷處理系統及其方法
US20230305872A1 (en) Efficient central processing unit overcommit for virtual machines with symmetric multi-processing
WO2024193308A1 (zh) 中断处理的方法、装置和电子设备
US20230236901A1 (en) Safe critical section operations for virtual machines with virtual central processing unit overcommit
JPH06187171A (ja) 割込みにおけるスケジューリング方式
CN117234678A (zh) 控制程序部分的流程的方法和装置、编程方法、编程装置

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
N231 Notification of change of applicant
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: 20130827

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140828

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170629

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190903

Year of fee payment: 10