KR100930009B1 - 인터럽트 처리방법 - Google Patents

인터럽트 처리방법 Download PDF

Info

Publication number
KR100930009B1
KR100930009B1 KR1020080052472A KR20080052472A KR100930009B1 KR 100930009 B1 KR100930009 B1 KR 100930009B1 KR 1020080052472 A KR1020080052472 A KR 1020080052472A KR 20080052472 A KR20080052472 A KR 20080052472A KR 100930009 B1 KR100930009 B1 KR 100930009B1
Authority
KR
South Korea
Prior art keywords
interrupt
interrupt handler
memory address
address information
thread
Prior art date
Application number
KR1020080052472A
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 KR1020080052472A priority Critical patent/KR100930009B1/ko
Application granted granted Critical
Publication of KR100930009B1 publication Critical patent/KR100930009B1/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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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

Landscapes

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

Abstract

본 발명은 컴퓨터 운영체제에서의 인터럽트 처리방법에 관한 것이다.
본 발명에 따른 인터럽트 처리방법은 컴퓨터 운영체제에서 발생되는 인터럽트에 대한 현재의 인터럽트 핸들러 쓰레드의 메모리 주소정보를 인터럽트 발생 시 실행을 위해 웨이크업 되는 타겟 프로세스의 메모리 주소정보로 설정하는 단계, 현재의 인터럽트 핸들러 쓰레드의 메모리 주소정보 및 발생되는 인터럽트에 대하여 초기 설정된 인터럽트 핸들러 쓰레드의 메모리 주소정보 간의 일치 여부를 판별하는 단계, 각 메모리 주소정보 간의 일치 여부에 따라, 발생되는 인터럽트에 대한 인터럽트 핸들러를 타겟 프로세스의 컨텍스트에서 호출하여 실행시키는 단계 및 호출되는 인터럽트 핸들러에 의해 타겟 프로세스가 웨이크업 되었는지를 판단하는 단계를 포함한다.
본 발명에 따른 인터럽트 처리방법은 인터럽트에 의한 선점지연시간을 줄일 수 있고 인터럽트 핸들러와 관련된 데이터 접근 시 캐시 히트율을 높일 수 있으며, 우선순위 역전현상을 막을 수 있다.
인터럽트, 인터럽트 핸들러 쓰레드(Interrupt handler thread), 컨텍스트 스위치(Context switch), 캐시 히트율(Cache hit ratio), 우선순위 역전현상

Description

인터럽트 처리방법{METHOD OF INTERRUPT PROCESSING}
본 발명은 컴퓨터 운영체제에서의 인터럽트 처리방법에 관한 것이다. 보다 구체적으로는, 인터럽트 핸들러 쓰레드를 이용하는 인터럽트 처리방법에 관한 것이다.
도 1은 컴퓨터 시스템에서의 일반적인 인터럽트 처리방법을 개략적으로 나타낸 도면이다.
도 1을 참조하면, 컴퓨터 시스템의 운영체제에서 인터럽트가 발생했을 때 인터럽트를 처리하기 위해 호출되는 인터럽트 핸들러(Interrupt handler)는 인터럽트 발생 당시 일반적으로, 컴퓨터 시스템에서 실행 중이던 프로세스의 컨텍스트(Context)에서 실행된다. 즉, 도 1에서 도시된 바와 같이, 프로세스(100)가처리되는 과정에서 인터럽트가 발생하게 되면, 인터럽트 핸들러(110)는 실행 중이던 프로세스(100)의 컨텍스트에서 실행하게 된다. 인터럽트 핸들러(110)는 인터럽트를 처리하면서 해당 인터럽트를 기다리고 있는 타겟 프로세스(130)를 웨이크업 시킬 수 있다. 또한, 웨이크업 된 타겟 프로세스(130)의 우선순위가 이전 프로세스(100)의 우선순위보다 높을 경우, 컴퓨터 시스템의 운영체제 스케줄러는 이전 프로세 스(100)에서 타겟 프로세스(130)로 컨텍스트 스위치(Context Switch)(120)를 수행하여 타겟 프로세스(130)의 연산을 실행 할 수 있게 한다.
도 1에서 도시된 일반적인 인터럽트 처리방법에 따르면, 인터럽트 핸들러(110)가 인터럽트 발생 당시 실행 중이던 프로세스(100)의 컨텍스트에서 실행된다. 이에 따라, 운영체제는 인터럽트 핸들러(110)가 실행되는 동안 비선점(non-preemptible) 상태가 될 수 있다. 즉, 인터럽트 핸들러(110)의 실행구간은 비선점 영역이 될 수 있다. 따라서, 인터럽트 핸들러(110)가 실행되는 동안에는 더 중요한 또 다른 인터럽트가 발생되더라도 즉시 실행되지 못하는 문제가 발생 될 수 있다.
도 2는 인터럽트 핸들러 쓰레드(interrupt handler thread)를 이용하여 인터럽트를 처리하는 종래의 인터럽트 처리방법을 개략적으로 나타낸 도면이다.
도 2를 참조하면, 종래의 인터럽트 처리방법은 인터럽트 발생 당시 실행되고 있는 프로세스(200)의 컨텍스트로부터 독립적인 인터럽트 핸들러 쓰레드(221)의 컨텍스트에서 인터럽트 핸들러(220)가 실행되도록 한다. 따라서, 이와 같은 인터럽트 처리방법은, 인터럽트 핸들러(220)가 실행되는 동안 운영체제가 선점 가능한 상태로 실행될 수 있도록 할 수 있다.
그러나, 도 2에서 도시된 바와 같이, 종래의 인터럽트 처리방법은 타겟 프로세스(230)를 실행시키기 위한 컨텍스트 스위치(210, 213)의 횟수를 증가시켜야 되기 때문에, 인터럽트 발생 시점에서부터 타겟 프로세스(230)의 실행이 시작되는 시점까지의 선점지연시간(240)이 더욱 증가되는 문제가 발생될 수 있다.
또한, 도 2에서 도시된 바와 같이, 인터럽트 핸들러(220)는 인터럽트 핸들러 쓰레드(221)의 컨텍스트에서 실행되고, 두 번째 컨텍스트 스위치(213)가 수행된 후에 타겟 프로세스(230)의 실행이 시작된다. 이때, 인터럽트 핸들러 쓰레드(221) 컨텍스트와 타겟 프로세스(230) 컨텍스트 사이에서 컨텍스트 스위칭(213)이 발생됨에 따라, 인터럽트 핸들러 쓰레드(221)의 컨텍스트에서 실행되어 캐시(cache)에 남아있는 인터럽트 핸들러(220) 함수의 실행 결과에 대한 데이터들이 모두 플러시(flush) 될 수 있다. 따라서, 타겟 프로세스(230)의 실행이 시작된 이후, 타겟 프로세스(230)에서 인터럽트 핸들러(220) 함수의 실행 결과에 대한 데이터 접근 시, 캐시 히트율(cache hit ratio)이 현저히 저하되게 된다.
한편, 컴퓨터 운영체제에서 인터럽트가 발생되는 경우, 발생된 인터럽트에 해당하는 인터럽트 핸들러 쓰레드를 웨이크업 시킨 후, 운영체제의 스케줄러를 통해 실행 가능한 프로세스들 간의 우선순위를 비교하여 우선순위가 가장 높은 프로세스를 선택한다. 이에 따라, 해당 인터럽트 핸들러 쓰레드의 우선순위 및 현재 실행중인 프로세스의 우선순위의 상관관계에 따라 인터럽트 핸들러의 실행 시점이 달라질 수 있게 된다. 도 3에서 도시된 바와 같이, P2 프로세스가 현재 실행 중인 상태에서 P1 프로세스를 웨이크업 시키게 되는 인터럽트가 발생하는 경우를 가정한다. 여기서, P1 프로세스의 우선순위는 P2 프로세스의 우선순위 보다 높으며, 인터럽트에 대한 인터럽트 핸들러 쓰레드(int)의 우선순위가 P1 프로세스 및 P2 프로세스의 우선순위 보다 낮다. 이러한 경우, 도 3에서 도시된 바와 같이, P2 프로세스의 실행 중에 인터럽트가 발생되면 즉시 해당 인터럽트 핸들러 쓰레드(int)에서 인터럽트 핸들러가 실행되고, P2 프로세스에서 P1 프로세스로 컨텍스트 스위칭이 실 행되어야 한다.
그러나, 실제적으로 도 4에서 도시된 바와 같이, 인터럽트 발생 시 웨이크업 된 인터럽트 핸들러 쓰레드(int)의 우선순위가 현재 실행중인 P2 프로세스의 우선순위보다 낮을 경우, 인터럽트 핸들러 쓰레드(int)는 P2 프로세스를 즉시 선점하지 못하게 되고, P2 프로세스의 실행이 종료되어야만 인터럽트 핸들러 쓰레드(int)의 실행이 시작되고, P1 프로세스가 P2 프로세스를 선점 할 수 있게 된다.
따라서, 인터럽트에 의해 실제로 웨이크업 되는 타겟 프로세스의 우선순위가 현재 실행중인 프로세스의 우선순위보다 높은 상황임에도 불구하고 해당 인터럽트 핸들러 쓰레드의 우선순위가 현재 실행중인 프로세스의 우선순위보다 낮은 상황이 되면, 인터럽트 핸들러 쓰레드는 현재 실행중인 프로세스를 즉시 선점하지 못하고 지연되는 문제가 발생될 수 있게 된다.
이러한 문제점을 해결하기 위한 본 발명의 목적은 인터럽트에 의한 선점지연시간을 줄이고, 인터럽트 핸들러와 관련된 데이터에 대한 캐시 히트율을 높이고, 프로세스 간의 우선순위 역전현상을 방지할 수 있는 인터럽트 처리방법을 제공하는 것이다.
본 발명에 따른 인터럽트 처리방법은 (a) 컴퓨터 운영체제에서 발생되는 인터럽트에 대한 현재의 인터럽트 핸들러 쓰레드의 메모리 주소정보를 인터럽트 발생 시 실행을 위해 웨이크업 되는 타겟 프로세스의 메모리 주소정보로 설정하는 단계, (b) 현재의 인터럽트 핸들러 쓰레드의 메모리 주소정보 및 발생되는 인터럽트에 대하여 초기 설정된 인터럽트 핸들러 쓰레드의 메모리 주소정보 간의 일치 여부를 판별하는 단계, (c) 각 메모리 주소정보 간의 일치 여부에 따라, 발생되는 인터럽트에 대한 해당 인터럽트 핸들러를 타겟 프로세스의 컨텍스트에서 호출하여 실행시키는 단계 및 (d) 호출되는 인터럽트 핸들러에 의해 타겟 프로세스가 웨이크업 되었는지를 판단하는 단계를 포함한다.
(d) 단계 이후,
인터럽트 핸들러에 의해 타겟 프로세스가 웨이크업 되는 경우, 타겟 프로세스의 연산이 실행되는 단계를 더 포함하는 것이 바람직하다.
(a) 단계에서,
컴퓨터 운영체제에서 실행중인 복수의 프로세스가 인터럽트에 대하여 대기중인 경우, 복수의 프로세스 중 현재의 인터럽트 핸들러 쓰레드의 우선순위 보다 높은 프로세스를 타겟 프로세스로 예측하는 타겟 프로세스 예측단계를 더 포함하는 것이 바람직하다.
타겟 프로세스 예측단계는,
현재의 인터럽트 핸들러 쓰레드의 메모리 주소정보 및 초기 설정된 인터럽트 핸들러 쓰레드의 메모리 주소정보 간의 일치 여부를 판별하는 단계 및 각 메모리 주소정보가 서로 일치되지 않는 경우, 복수의 프로세스 및 현재의 인터럽트 핸들러 쓰레드 간의 우선순위를 비교하여 현재의 인터럽트 핸들러 쓰레드 보다 높은 프로 세스를 타겟 프로세스로 예측하는 단계를 포함하는 것이 바람직하다.
각 메모리 주소정보 간의 일치 여부를 판별하는 단계에서,
각 메모리 주소정보가 서로 일치하는 경우, 현재의 인터럽트 핸들러 쓰레드의 메모리 주소정보로 설정된 프로세스를 타겟 프로세스로 선택하는 것이 바람직하다.
(b) 단계는,
현재의 인터럽트 핸들러 쓰레드를 웨이크업시키는 단계 및 웨이크업된 현재의 인터럽트 핸들러 쓰레드 및 초기 설정된 인터럽트 핸들러 쓰레드에 대한 메모리 주소정보를 비교하여 일치 여부를 판별하는 단계를 포함하는 것이 바람직하다.
(c) 단계는,
각 메모리 주소정보 간의 일치 여부에 따라, 인터럽트 핸들러가 현재의 인터럽트 핸들러 쓰레드로부터 호출되도록 하는 플래그를 설정하는 단계 및 플래그의 설정 여부에 따라, 호출된 인터럽트 핸들러를 타겟 프로세스의 컨텍스트에서 실행시키는 단계를 포함하는 것이 바람직하다.
플래그가 설정되는 경우,
현재의 인터럽트 핸들러 쓰레드의 메모리 주소정보를 초기 설정된 인터럽트 핸들러 쓰레드의 메모리 주소정보로 설정하는 단계를 더 포함하는 것이 바람직하다.
(c) 단계에서,
타겟 프로세스의 컨텍스트에서 복수 개의 인터럽트 핸들러를 호출하여 실행 하는 경우, 복수 개의 인터럽트 핸들러를 순차적으로 호출하여 실행하되, 호출된 인터럽트 핸들러의 실행과 함께 다음으로 실행될 인터럽트 핸들러를 호출하는 단계를 더 포함하는 것이 바람직하다.
본 발명에 따른 인터럽트 처리방법은 인터럽트에 의한 선점지연시간을 줄일 수 있고, 인터럽트 핸들러와 관련된 데이터 접근 시, 캐시 히트율을 높일 수 있으며, 우선순위 역전현상을 막을 수 있다.
이하에서는, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예에 따른 인터럽트 처리방법에 대해 설명한다.
도 5는 본 발명의 바람직한 실시 예에 따른 인터럽트 처리방법을 나타낸 순서도이다.
도 5를 참조하면, 본 발명의 실시 예에 따른 인터럽트 처리방법은 컴퓨터 운영체제에서 발생되는 인터럽트에 대한 현재의 인터럽트 핸들러 쓰레드의 메모리 주소정보를 인터럽트 발생 시 실행을 위해 웨이크업 되는 타겟 프로세스의 메모리 주소정보로 설정하는 단계(S1), 현재의 인터럽트 핸들러 쓰레드의 메모리 주소정보 및 발생되는 인터럽트에 대하여 초기 설정된 인터럽트 핸들러 쓰레드의 메모리 주소정보 간의 일치 여부를 판별하는 단계(S2), 각 메모리 주소정보 간의 일치 여부에 따라, 타겟 프로세스의 컨텍스트에서 발생된 인터럽트에 대한 인터럽트 핸들러를 호출하여 실행시키는 단계(S3) 및 호출되는 인터럽트 핸들러에 의해 타겟 프로 세스가 웨이크업 되었는지를 판단하는 단계(S4)를 포함한다. 또한, 인터럽트 핸들러에 의해 타겟 프로세스가 웨이크업 되는 경우, 타겟 프로세스의 연산이 실행되는 단계(S5)를 더 포함할 수 있다.
도 6 내지 도 8은 도 5에서 도시된 인터럽트 처리방법을 보다 구체적으로 나타낸 도면이다.
본 발명의 실시 예를 설명하기에 앞서 먼저, 도 6 내지 도 8에서 나타낸 함수에 대해 정의한다. 먼저, thread[k]는 k번째 인터럽트에 대한 현재의 인터럽트 핸들러 쓰레드의 메모리 주소정보를 의미한다. orig_thread[k]는 k번째 인터럽트에 대하여 초기 설정된 인터럽트 핸들러 쓰레드의 메모리 주소정보를 의미한다. 마지막으로, handler(k)는 k번째 인터럽트에 대하여 호출되어 실행되는 인터럽트 핸들러를 의미한다.
먼저, 도 6에서 도시된 바와 같이, 실행중인 i번째 프로세스가 k번째 인터럽트를 기다리며 슬립상태로 진입될 준비가 완료되어 있다라고 가정한다(700). 이에 앞서, k번째 인터럽트에 대한 현재의 인터럽트 핸들러 쓰레드의 메모리 주소정보(thread[k])를 i번째 프로세스의 메모리 주소정보로 설정될 수 있도록 한다(710). 즉, 인터럽트 발생 시 실행을 위해 웨이크업 되는 타겟 프로세스의 메모리 주소정보를 현재의 인터럽트 핸들러 쓰레드의 메모리 주소정보(thread[k])로 설정될 수 있도록 한다(710). 이후, i번째 프로세스는 슬립상태로 진입될 수 있다(720).
이후, 도 7에서 도시된 바와 같이, 다른 프로세스의 실행 중에 k번째 인터럽 트가 발생 될 경우(721), k번째 인터럽트를 핸들링할 인터럽트 핸들러 쓰레드가 웨이크업 될 수 있다(722). 여기서, k번째 인터럽트 핸들러 쓰레드의 메모리 주소정보(thread[k])는 i번째 프로세스의 메모리 주소정보로 설정되어 있으므로, i번째 프로세스가 웨이크업 될 수 있다. 이후, k번째 인터럽트 핸들러 쓰레드의 메모리 주소정보(thread[k]) 및 초기 설정된 인터럽트 핸들러 쓰레드의 메모리 주소정보(orig_thread[k]) 간의 일치 여부를 판별한다(723). 이러한 과정을 통해 k번째 인터럽트에 대한 인터럽트 핸들러 쓰레드(thread[k])의 설정이 초기 설정과 달라졌는지를 확인 할 수 있다. 따라서, k번째 인터럽트에 대한 인터럽트 핸들러 쓰레드의 메모리 주소정보(thread[k])는 초기 설정된 인터럽트 핸들러 쓰레드의 메모리 주소정보(orig_thread[k])가 아닌, i번째 프로세스의 메모리 주소정보로 설정되어 있으므로, k번째 인터럽트 핸들러(handler(k))가 i번째 프로세스의 컨텍스트에서 직접 실행될 수 있게 된다. 이러한 과정이 수행됨을 표시하기 위해 각 메모리 주소 간의 일치 여부를 판별(723)한 후, 일치되지 않는 경우, k번째 인터럽트 핸들러(handler(k))가 k번째 인터럽트 핸들러 쓰레드(thread[k])로부터 호출되어 i번째 프로세스에서 실행되도록 표시하기 위한 플래그를 설정한다(724). 이후, k번째 인터럽트 핸들러 쓰레드의 메모리 주소정보(thread[k])를 초기 설정된 인터럽트 핸들러 쓰레드의 메모리 주소정보(orig_thread[k])로 설정한다(725). 이후, i번째 프로세스가 포함된 실행 가능한 프로세스들 가운데 실행시킬 프로세스를 선택하기 위한 재스케줄링을 실행한다(726). 반면, k번째 인터럽트 핸들러 쓰레드의 메모리 주소정보(thread[k])와 초기 설정된 인터럽트 핸들러 쓰레드의 메모리 주소정 보(orig_thread[k])가 일치할 경우, i번째 프로세스의 컨텍스트에서 인터럽트 핸들러가 호출되는 것이 아니라, 해당 인터럽트 핸들러 쓰레드의 컨텍스트에서 인트럽트 핸들러가 호출될 수 있게 된다. 즉, 플래그를 설정하는 과정 없이 바로 재스케줄링을 실행하게 된다(726).
이후, 도 6에서 도시된 바와 같이, i번째 프로세스가 웨이크업 되는 경우, i번째 프로세스에서 해당 플래그가 설정되어 있는지를 확인하게 된다(730). 여기서, 플래그가 설정된 경우는 k번째 인터럽트에 대한 인터럽트 핸들러(handler(k))가 아직 실행되지 않은 상태에서 i번째 프로세스가 웨이크업 되었음을 의미한다. 반면, 플래그가 설정되어 있지 않는 경우, k번째 인터럽트에 대한 인터럽트 핸들러(handler(k))가 이미 실행된 상태에서 i번째 프로세스가 웨이크업 되었음을 의미한다. 따라서, 플래그가 설정된 경우, 플래그의 설정이 해제되고(740), i번째 프로세스의 컨텍스트에서 k번째 인터럽트 핸들러(handler(k))가 호출되어 실행될 수 있게 된다(750). 이후, i번째 프로세스가 i번째 프로세스의 컨텍스트에서 호출된 k번째 인터럽트 핸들러(handler(k))에 의해 웨이크업 되었는지를 판단하게 된다(760). 여기서, k번째 인터럽트 핸들러(handler(k))에 의해 i번째 프로세스가 웨이크업 되었을 경우, i번째 프로세스가 타겟 프로세스로써 정확히 예측되었음을 의미한다. 따라서, i번째 프로세스는 본래의 연산을 실행하게 된다(770). 반면, i번째 프로세스가 k번째 인터럽트 핸들러(handler(k))에 의해 웨이크업 되지 않을 경우, i번째 프로세스의 메모리 주소정보는 k번째 인터럽트 핸들러 쓰레드의 메모리 주소정보로 설정된다(710). 이후, i번째 프로세스는 다시 슬립상태로 진입되게 된다(720).
도 8은 컴퓨터 운영체제에서 실행중인 복수 개의 프로세스가 하나의 인터럽트에 대해 대기 상태에 있는 경우, 타겟 프로세스를 예측하는 방법을 설명하기 위한 도면이다.
설명에 앞서 먼저, j번째 프로세스가 k번째 인터럽트를 기다리며 슬립상태로 진입된 후, k번째 인터럽트에 대한 인터럽트 핸들러 쓰레드의 메모리 주소정보(thread[k])가 j번째 프로세스의 메모리 주소정보로 설정되어 있다라고 가정한다. i번째 프로세스 또한, k번째 인터럽트를 기다리며 슬립상태로 진입될 준비가 완료되었다고 가정한다. 이러한 경우, 먼저, k번째 인터럽트에 대한 인터럽트 핸들러 쓰레드의 메모리 주소정보(thread[k]) 및 초기 설정된 인터럽트 핸들러 쓰레드의 메모리 주소정보(orig_thread[k])가 일치하는지에 대한 여부를 판별하게 된다(703). 즉, k번째 인터럽트에 대한 인터럽트 핸들러 쓰레드의 메모리 주소정보(thread[k])가 초기 설정 그대로 남아있는지를 확인한다. 여기서, 각 메모리 주소정보가 일치되는 경우, k번째 인터럽트에 대한 인터럽트 핸들러 쓰레드의 메모리 주소정보(thread[k])는 i번째 프로세스로 즉시 설정될 수 있다. 그러나, 이미 j번째 프로세스의 메모리 주소정보가 k번째 인터럽트 핸들러 쓰레드의 메모리 주소정보(thread[k])로 설정 되어 있으므로, k번째 인터럽트 핸들러 쓰레드의 메모리 주소정보(thread[k])는 i번째 프로세스의 메모리 주소정보로 설정되지 못하게 된다. 따라서, i번째 프로세스의 우선순위가 k번째 인터럽트 핸들러 쓰레드의 우선순위 보다 높은지를 비교하게 된다(705). 여기서, i번째 프로세스의 우선순위가 더 높을 경우, i번째 프로세스는 k번째 인터럽트를 기다리는 복수개의 프로세스 가운데 우 선순위가 가장 높은 프로세스로 판별된다. 따라서, i번째 프로세스를 타겟 프로세스로써 예측하게 된다. 이에 따라, k번째 인터럽트에 대한 인터럽트 핸들러 쓰레드의 메모리 주소정보(thread[k])를 i번째 프로세스의 메모리 주소정보로 설정한다(710). 이후, i번째 프로세스는 슬립상태로 진입된 이후, 도 6 및 도 7을 통해 전술된 처리방법에 따라 k번째 인터럽트에 대한 실행이 이루어 질 수 있게 된다. 따라서, k번째 인터럽트 핸들러 쓰레드의 메모리 주소정보(thread[k])는 복수개의 프로세스가 k번째 인터럽트를 기다리고 있는 상황에서 우선순위가 가장 높은 프로세스로써 설정될 수 있게 된다.
도 9는 복수 개의 인터럽트 핸들러 쓰레드의 실행이 필요한 인터럽트의 처리방법을 나타낸 도면이다.
예를 들어, 리눅스 운영체제에 있어서, 네트워크 인터럽트가 발생 될 경우, hardirq 핸들러 및 softirq 핸들러와 같이 두 개로 분리된 인터럽트 핸들러가 실행된다. 이와 같이, 복수개의 인터럽트 핸들러 쓰레드의 실행이 필요한 경우, 타겟 프로세스에서는 복수개의 인터럽트 핸들러 함수가 호출되어야 한다. 이러한 리눅스 운영체제에서의 네트워크 인터럽트와 관련하여 도9를 통해 도시된 두 함수에 대해 다음과 같이 정의한다. 먼저, 도 9에서 도시된hardirq_handler(k)는 k번째 인터럽트에 대한 hardirq 인터럽트 핸들러 쓰레드로부터 호출되어 실행되는 hardirq인터럽트 핸들러를 의미한다. 그리고, softirq_handler(k)는 k번째 인터럽트에 대한 softirq 인터럽트 핸들러 쓰레드로부터 호출되어 실행되는 softirq 인터럽트 핸들러를 의미한다. 또한, k번째 인터럽트가 발생될 경우, hardirq 인터럽트 핸들러가 실행된 이후, softirq 인터럽트 핸들러가 실행된다 라고 가정한다.
도 9에서 도시된 플래그 설정 여부를 확인하는 단계(730) 이전의 과정들은 도 6 및 도7을 통해 전술된 과정과 동일하므로 생략한다.
먼저, i번째 프로세스에서 플래그가 설정되어 있는지를 확인한다(730). 플래그가 설정되어있는 경우, 플래그의 설정을 해제(740)한 후, i번째 프로세스의 컨텍스트에서 k번째 인터럽트에 대한 인터럽트 핸들러를 호출하여 실행시킨다(751). 여기서, hardirq 인터럽트 핸들러 쓰레드 및 softirq 인터럽트 핸들러 쓰레드의 메모리 주소정보는 i번째 프로세스의 메모리 주소정보로 설정되어 있으므로, 각각의 인터럽트 핸들러는 i번째 프로세스의 컨텍트스에서 순차적으로 호출되어 실행될 수 있게 된다. 먼저, handirq 인터럽트 핸들러가 i번째 프로세스의 컨텍스트에서 호출되어 실행된다(751). hardirq 인터럽트 핸들러를 실행하는 동안 커널은 hardirq 인터럽트 핸들러가 다음으로 실행될 softirq 인터럽트 핸들러 쓰레드를 웨이크업 시켰는지를 확인하게 된다(761). 여기서, hardirq 인터럽트 핸들러에 의해 softirq 인터럽트 핸들러 쓰레드가 웨이크업 되지 않았을 경우, hardirq 인터럽트 핸들러의 실행이 종료된 이후, i번째 프로세스는 슬립상태로 진입하게 된다. 반면, hardirq 인터럽트 핸들러가 softirq 인터럽트 핸들러 쓰레드를 웨이크업 시켰을 경우, i번째 프로세스의 컨텍스트에서 다음으로 실행 될 softirq 인터럽트 핸들러를 호출하여 실행하도록 한다(753). softirq 인터럽트 핸들러의 실행이 종료된 이후, i번째 프로세스가 softirq 인터럽트 핸들러에 의해 웨이크업 되었는지를 확인하게 된다(763). softirq 인터럽트 핸들러에 의해 i번째 프로세스가 웨이크업 되지 않았을 경우, i번째 프로세스는 다시 슬립상태로 진입하게 된다. 반면, softirq 인터럽트 핸들러에 의해 i번째 프로세스가 웨이크업 되었을 경우, i번째 프로세스는 본래의 연산을 실행하게 된다(770).
따라서, 본 발명에 따른 인터럽트 처리방법은 도 10에서 도시된 바와 같이, 인터럽트 발생 시 인터럽트 핸들러(1020)를 인터럽트 핸들러 쓰레드의 컨텍스트가 아닌, 타겟 프로세스의 컨텍스트(1030)에서 실행시킴으로써, 컨텍스트 스위칭(1010) 횟수를 감소시킬 수 있다. 이에 따라, 인터럽트에 의한 선점지연시간(1040)을 최소화 시킬 수 있다.
또한, 도 11에서 도시된 바와 같이, 타겟 프로세스(1031)의 예측이 틀린 경우, 컨텍스트 스위칭(1013)을 다시 실행시켜 타겟 프로세스(1033)를 정확히 실행 시킬 수 있다. 또한, 이러한 경우, 타겟 프로세스의 예측이 맞은 경우에 비해 선점지연시간이 증가될 수 있으나, 도 2에서 도시된 종래의 인터럽트 처리방법을 통한 선점지연시간(240)을 보다 증가되지 않는다. 또한, 도 12에서 도시된 바와 같이 복수개의 인터럽트 핸들러 쓰레드를 실행시키는 경우, 컨텍스트 스위칭을 횟수를 도 13에서 도시된 종래의 인터럽트 처리방법 보다 감소시킬 수 있으므로 인터럽트에 의한 선점지연시간을 줄일 수 있게 된다.
또한, 인터럽트 핸들러와 타겟 프로세스는 어드레스 영역을 공유하여 실행됨에 따라, 인터럽트 핸들러의 실행 결과에 대한 데이터 접근 시 캐시 히트율을 높일 수 있다.
또한, 도 14에서 도시된 바와 같이, 타겟 프로세스(P3)의 우선순위가 이전 프로세스(P4)의 우선순위보다 높은 경우에 있어서, 인터럽트 핸들러 쓰레드(1211)의 우선순위가 이전 프로세스(1211)의 우선순위보다 낮은 경우라도 인터럽트 핸들러 쓰레드(1211)는 타겟 프로세스(P3)의 컨텍스트에서 실행되므로, 타겟 프로세스(P3)는 이전 프로세스(P4)를 즉시 선점하여 실행될 수 있다. 이에 따라, 인터럽트 발생 시 잘못된 우선순위 역전현상을 방지할 수 있다.
본 발명에 따른 인터럽트 처리방법을 실행하기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체에 대한 설명은 본 발명의 일 실시 예에 따른 인터럽트 스케줄링 방법에 대한 상세한 설명으로 대체한다.
이상에서 보는 바와 같이, 본 발명이 속하는 기술 분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시 될 수 있다는 것을 이해할 수 있을 것이다. 그러므로, 이상에서 기술한 실시 예는 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 하고, 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
도 1 내지 도 5는 종래의 인터럽트 처리방법에 대해 개략적으로 나타낸 도면.
도 6 내지 도 11은 본 발명의 바람직한 실시 예에 따른 인터럽트 처리방법을 나타낸 도면.
도 12는 본 발명의 바람직한 실시 예에 따라 복수개의 인터럽트 핸들러를 실행시키기 위한 인터럽트 처리방법에 대해 개략적으로 나타낸 도면.
도 13은 종래의 인터럽트 처리방법 중 복수개의 인터럽트 핸들러를 실행시키기 위한 인터럽트 처리방법에 대해 개략적으로 나타낸 도면.
******** 도면의 주요부분에 대한 부호의 설명 ********
1000, 1001, 1100: 이전 프로세스
1030, 1033: 타겟 프로세스
1010, 1011, 1013, 1111: 컨텍스트 스위칭
1020, 1021, 1123, 1125: 인터럽트 핸들러
1040, 1041, 1143: 선점지연시간

Claims (10)

  1. (a) 컴퓨터 운영체제에서 발생되는 인터럽트에 대한 현재의 인터럽트 핸들러 쓰레드의 메모리 주소정보를 상기 인터럽트 발생 시 실행을 위해 웨이크업 되는 타겟 프로세스의 메모리 주소정보로 설정하는 단계;
    (b) 상기 현재의 인터럽트 핸들러 쓰레드의 메모리 주소정보 및 상기 발생되는 인터럽트에 대하여 초기 설정된 인터럽트 핸들러 쓰레드의 메모리 주소정보 간의 일치 여부를 판별하는 단계;
    (c) 상기 각 메모리 주소정보 간의 일치 여부에 따라, 상기 발생되는 인터럽트에 대한 해당 인터럽트 핸들러를 상기 타겟 프로세스의 컨텍스트에서 호출하여 실행시키는 단계; 및
    (d) 상기 호출되는 인터럽트 핸들러에 의해 상기 타겟 프로세스가 웨이크업 되었는지를 판단하는 단계를 포함하는, 컴퓨터 운영체제에서의 인터럽트 처리방법.
  2. 제1항에 있어서,
    상기 (d) 단계 이후,
    상기 인터럽트 핸들러에 의해 상기 타겟 프로세스가 웨이크업 되는 경우, 상기 타겟 프로세스의 연산이 실행되는 단계를 더 포함하는, 컴퓨터 운영체제에서의 인터럽트 처리방법.
  3. 제1항에 있어서,
    상기 (a) 단계에서,
    상기 컴퓨터 운영체제에서 실행중인 복수의 프로세스가 상기 인터럽트에 대하여 대기중인 경우, 상기 복수의 프로세스 중 상기 현재의 인터럽트 핸들러 쓰레드의 우선순위보다 높은 프로세스를 상기 타겟 프로세스로 예측하는 타겟 프로세스 예측단계를 더 포함하는, 컴퓨터 운영체제에서의 인터럽트 처리방법.
  4. 제3항에 있어서,
    상기 타겟 프로세스 예측단계는,
    상기 현재의 인터럽트 핸들러 쓰레드의 메모리 주소정보 및 상기 초기 설정된 인터럽트 핸들러 쓰레드의 메모리 주소정보 간의 일치 여부를 판별하는 단계; 및
    상기 각 메모리 주소정보가 서로 일치되지 않는 경우, 상기 복수의 프로세스 및 상기 현재의 인터럽트 핸들러 쓰레드 간의 우선순위를 비교하여 상기 현재의 인터럽트 핸들러 쓰레드 보다 높은 프로세스를 상기 타겟 프로세스로 예측하는 단계를 포함하는, 컴퓨터 운영체제에서의 인터럽트 처리방법.
  5. 제4항에 있어서,
    상기 각 메모리 주소정보 간의 일치 여부를 판별하는 단계에서,
    상기 각 메모리 주소정보가 서로 일치하는 경우, 상기 현재의 인터럽트 핸들 러 쓰레드의 메모리 주소정보로 설정된 프로세스를 상기 타겟 프로세스로 선택하는, 컴퓨터 운영체제에서의 인터럽트 처리방법.
  6. 제1항에 있어서,
    상기 (b) 단계는,
    상기 현재의 인터럽트 핸들러 쓰레드를 웨이크업시키는 단계; 및
    상기 웨이크업 된 현재의 인터럽트 핸들러 쓰레드 및 상기 초기 설정된 인터럽트 핸들러 쓰레드에 대한 메모리 주소정보를 비교하여 일치 여부를 판별하는 단계를 포함하는, 컴퓨터 운영체제에서의 인터럽트 처리방법.
  7. 제1항에 있어서,
    상기 (c) 단계는,
    상기 각 메모리 주소정보 간의 일치 여부에 따라, 상기 인터럽트 핸들러가 상기 현재의 인터럽트 핸들러 쓰레드로부터 호출되도록 하는 플래그를 설정하는 단계; 및
    상기 플래그의 설정 여부에 따라, 상기 호출된 인터럽트 핸들러를 상기 타겟 프로세스의 컨텍스트에서 실행시키는 단계를 포함하는, 컴퓨터 운영체제에서의 인터럽트 처리방법.
  8. 제7항에 있어서,
    상기 플래그가 설정되는 경우,
    상기 현재의 인터럽트 핸들러 쓰레드의 메모리 주소정보를 상기 초기 설정된 인터럽트 핸들러 쓰레드의 메모리 주소정보로 설정하는 단계를 더 포함하는, 컴퓨터 운영체제에서의 인터럽트 처리방법.
  9. 제1항에 있어서,
    상기 (c) 단계에서,
    상기 타겟 프로세스의 컨텍스트에서 복수 개의 상기 인터럽트 핸들러를 호출하여 실행하는 경우, 상기 복수 개의 인터럽트 핸들러를 순차적으로 호출하여 실행하되, 상기 호출된 인터럽트 핸들러의 실행과 함께 다음으로 실행될 인터럽트 핸들러를 호출하는 단계를 더 포함하는, 컴퓨터 운영체제에서의 인터럽트 처리방법.
  10. 제1항 내지 제9항 중 어느 한 항의 컴퓨터 운영체제에서의 인터럽트 처리방법을 실행하기 위한 프로그램이 기록된, 컴퓨터로 읽을 수 있는 기록매체.
KR1020080052472A 2008-06-04 2008-06-04 인터럽트 처리방법 KR100930009B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080052472A KR100930009B1 (ko) 2008-06-04 2008-06-04 인터럽트 처리방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080052472A KR100930009B1 (ko) 2008-06-04 2008-06-04 인터럽트 처리방법

Publications (1)

Publication Number Publication Date
KR100930009B1 true KR100930009B1 (ko) 2009-12-07

Family

ID=41683862

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080052472A KR100930009B1 (ko) 2008-06-04 2008-06-04 인터럽트 처리방법

Country Status (1)

Country Link
KR (1) KR100930009B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005196459A (ja) 2004-01-07 2005-07-21 Fujitsu Ltd 割込み制御プログラムおよびその記録媒体ならびに割込み制御方法
KR20060062305A (ko) * 2004-12-03 2006-06-12 한국전자통신연구원 실시간 성능 지원을 위한 리눅스 커널의 구성 방법 및실시간 성능 테스트 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005196459A (ja) 2004-01-07 2005-07-21 Fujitsu Ltd 割込み制御プログラムおよびその記録媒体ならびに割込み制御方法
KR20060062305A (ko) * 2004-12-03 2006-06-12 한국전자통신연구원 실시간 성능 지원을 위한 리눅스 커널의 구성 방법 및실시간 성능 테스트 방법

Similar Documents

Publication Publication Date Title
EP1685486B1 (en) Interrupt handling in an embedded multi-threaded processor to avoid priority inversion and maintain real-time operation
US8584138B2 (en) Direct switching of software threads by selectively bypassing run queue based on selection criteria
JP5411587B2 (ja) マルチスレッド実行装置、マルチスレッド実行方法
US8695002B2 (en) Multi-threaded processors and multi-processor systems comprising shared resources
KR100959548B1 (ko) 인터럽트 스케줄링 방법
US9286091B2 (en) Semiconductor device improving performance of virtual machines
EP2133793B1 (en) A multithreaded processor and a mechanism and a method for executing one hard real-time task in a multithreaded processor
US20070266387A1 (en) Multithreaded computer system and multithread execution control method
US8555284B2 (en) Method, a mechanism and a computer program product for executing several tasks in a multithreaded processor
CN113010275B (zh) 一种中断处理方法和装置
US20100050184A1 (en) Multitasking processor and task switching method thereof
US20060168430A1 (en) Apparatus and method for concealing switch latency
EP1890225A1 (en) Methods and apparatus for handling switching among threads within a multithread processor
US20230127112A1 (en) Sub-idle thread priority class
US20050132038A1 (en) Resource reservation system and resource reservation method and recording medium storing program for executing the method
CN110955503A (zh) 任务调度方法及装置
US20080307419A1 (en) Lazy kernel thread binding
US11307973B2 (en) Method and device for testing robustness and stability of SMM, and storage medium
JPWO2003040948A1 (ja) コンピュータ及び制御方法
KR100930009B1 (ko) 인터럽트 처리방법
US20110231637A1 (en) Central processing unit and method for workload dependent optimization thereof
Xu et al. Towards fault-tolerant real-time scheduling in the seL4 microkernel
Brandenburg et al. Accounting for interrupts in multiprocessor real-time systems
JPH0895798A (ja) データ処理装置
JP2010165209A (ja) マルチスレッドプロセッサ装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121031

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131030

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee