KR100324264B1 - 실시간운영체제의인터럽트마스킹방법 - Google Patents

실시간운영체제의인터럽트마스킹방법 Download PDF

Info

Publication number
KR100324264B1
KR100324264B1 KR1019970040739A KR19970040739A KR100324264B1 KR 100324264 B1 KR100324264 B1 KR 100324264B1 KR 1019970040739 A KR1019970040739 A KR 1019970040739A KR 19970040739 A KR19970040739 A KR 19970040739A KR 100324264 B1 KR100324264 B1 KR 100324264B1
Authority
KR
South Korea
Prior art keywords
interrupt
message queue
operating system
kernel
time operating
Prior art date
Application number
KR1019970040739A
Other languages
English (en)
Other versions
KR19990017724A (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 구자홍
Priority to KR1019970040739A priority Critical patent/KR100324264B1/ko
Publication of KR19990017724A publication Critical patent/KR19990017724A/ko
Application granted granted Critical
Publication of KR100324264B1 publication Critical patent/KR100324264B1/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
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

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

Abstract

본 발명은 외부사건에 빠르고 효율적으로 대처함과 아울러 명료한 커널을 작성할 수 있는 실시간 운영체제의 인터럽트 마스킹 방법에 관한 것이다.
본 발명의 실시간 운영체제의 인터럽트 마스킹 방법은 인터럽트의 수만큼 인터럽트 메시지 큐를 할당하는 단계와; 메시지를 인터럽트 메시지 큐에 삽입하는 단계와; 특정의 인터럽트 메시지 큐를 접근할 때에 특정 인터럽트 메시지 큐에 할당된 인터럽트만을 마스킹하는 단계를 포함한다.
본 발명의 실시간 운영체제의 인터럽트 마스킹 방법은 외부사건에 빠르고 효율적으로 대처함과 아울러 명료한 커널을 작성할 수 있다.

Description

실시간 운영체제의 인터럽트 마스킹 방법
본 발명은 실시간 운영체제에 관한 것으로, 특히 외부사건에 빠르고 효율적으로 대처함과 아울러 명료한 커널을 작성할 수 있는 실시간 운영체제의 인터럽트 마스킹 방법에 관한 것이다.
커널(Kernel)은 컴퓨터 운영체제의 가장 핵심적인 요소로서 운영체제의 다른 모든 부분에 여러 가지 기본적인 서비스를 제공한다. 이 커널은 쉘과 대비될 수 있는데, 쉘은 운영체제의 가장 바깥 부분에 위치하고 있으면서 사용자 명령에 대한 처리를 담당한다. '커널'과 '쉘'이라는 용어는 IBM의 메인 프레임을 제외하고 유닉스 등의 기타 운영체제에서 사용되고 있다.
일반적으로, 커널에는 종료된 입출력 연산 등, 커널의 서비스를 경쟁적으로 요구하는 모든 요청들을 처리하는 인터럽트 처리기, 어떤 프로그램들이 어떤 순서로 커널의 처리시간을 공유할 것인지를 결정하는 스케쥴러, 스케쥴이 끝나면 실제로 각 프로세스들에게 컴퓨터의 사용권을 부여하는 수퍼바이저 등이 포함되어 있다. 또한, 커널은 메모리나 저장장치 내에서 운영체제의 주소공간을 관리하고, 이들을 모든 주변장치들과 커널의 서비스들을 사용하는 다른 사용자들에게 고루 나누어 주는 메모리 관리자를 가지고 있다. 커널의 서비스는 운영체제의 다른 부분이나, 흔히 시스템 호출이라고 알려진 일련의 프로그램 인터페이스들을 통해 요청된다.
커널을 유지하기 위한 코드는 지속적으로 사용되기 때문에 자주 사용되지 않는 운영체제의 나머지 부분에 의해 덮어 씌워져 훼손되지 않도록 보호된 메모리 영역에 적재되는 것이 일반적이다.
마이크로 커널(micro kernel)을 기반으로 하는 실시간 운영체제는 인터럽트 지연 시간을 최소화하기 위하여 인터럽트 처리를 일반 태스크에게 맡기게 된다.
인터럽트가 발생하면 인터럽트 처리 문맥에서는 단순히 메시지 패싱(Massage passing)을 통해 인터럽트로부터의 메시지를 기다리며 특정 메시지 큐(Massage queue)에 대하여 잠든 태스크(Sleep task)를 깨운 후에 바로 복귀하여 인터럽트 지연 시간을 최소화한다. 따라서, 실질적으로 인터럽트가 처리되는 시점은 인터럽트 핸들러 태스크(Interrupt handler Task)가 스케쥴링(Scheduling)되었을 때이다.
여기서, '메시지'란 한 프로그램 객체가 다른 객체의 실행을 요청하는 수단으로서, 메시지는 요청을 받고, 실행되어야 할 객체의 이름, 그리고 이 요청을 위해 지정될 필요가 있는 매개변수나 값 등을 지정하게 된다. '인터럽트'는 컴퓨터에 장착된 장치나 컴퓨터 내의 프로그램으로부터 오는 신호로서 운영체제가 하던 일을 멈추고 다음에 무엇을 할 것인지를 결정하게 된다. 인터럽트 신호가 감지되면 컴퓨터는 실행되고 있던 프로그램을 재개하거나 다른 프로그램의 실행을 시작하게 된다.
"RTEMS"라는 실시간 운영체제에서 채택하고 있는 방법은 인터럽트 처리 문맥에서 인터럽트 핸들러 태스크로의 메시지 패싱 기술을 사용하고 있는데, 메시지 패싱 기술은 필수적으로 메시지를 수신하는 태스크(핸들러 태스크)의 스테이터스 (Status)를 변경시켜야 하고 따라서 태스크 자료구조뿐만 아니라 핸들러 태스크가 잠든 메시지 큐의 슬립 큐(Sleep queue)와 레디 큐(Ready queue)도 변경시켜야 한다.
그런데 슬립 큐(Sleep queue)와 레디 큐(Ready queue)는 실시간 운영체제의 전역범위를 가지는 자료구조이고, 커널(kernel) 내의 다양한 부분에서 접근하는 자료구조임으로 아토믹 처리(Atomic operation)를 수행하여 그 자료의 자료구조가 손상되는 것을 방지하고 있다.
도 1을 참조하면, 종래의 실시간 운영체제의 인터럽트 마스킹 방법은 실시간 운영체제의 커널 내에서 슬립 큐와 레디 큐 등 인터럽트로부터 보호해야 할 커널의 자료구조가 나누어져 있음으로 필연적으로 인터럽트를 마스킹해야 한다. 따라서 마스킹해야 하는 코드 부분을 분산시켜야 한다. 이러한 문제로, 실시간 운영체제 소스 코드의 관리가 어려운 단점이 있다.
그리고 종래의 실시간 운영체제의 인터럽트 마스킹 방법은 인터럽트를 마스킹해야 될 코드 부분이 명확치 않기 때문에 트라이 앤드 에러(Try and Error) 방식으로 코드구조를 접근하는 경우가 흔히 발생하기 때문에 한번에 두 개 이상, 많게는 모든 인터럽트가 커널 내의 특정 부분에서 마스킹되어야 하는 상황이 발생한다. 이는 결국, 종래의 실시간 운영체제의 인터럽트 마스킹 방법에서 외부 사건에 신속하고 효율적으로 반응하지 못하는 문제점을 초래한다.
따라서, 본 발명의 목적은 외부사건에 빠르고 효율적으로 대처함과 아울러 명료한 커널을 작성할 수 있는 실시간 운영체제의 인터럽트 마스킹 방법을 제공하는데 있다.
도 1은 종래의 인터럽트 핸들러 태스크를 이용한 실시간운영체제의 인터럽트 마스킹 방법의 처리수순을 나타내는 도면.
도 2은 본 발명의 실시예에 따른 실시간 운영체제의 인터럽트 마스킹 방법에서 인터럽트 메시지 큐의 구조를 나타내는 도면.
도 3는 본 발명의 실시예에 따른 실시간 운영체제의 인터럽트 마스킹 방법의 처리 수순을 나타내는 도면.
상기 목적을 달성하기 위하여, 본 발명의 실시간 운영체제의 인터럽트 마스킹 방법은 인터럽트의 수만큼 인터럽트 메시지 큐를 할당하는 단계와; 메시지를 인터럽트 메시지 큐에 삽입하는 단계와; 특정의 인터럽트 메시지 큐를 접근할 때에 특정 인터럽트 메시지 큐에 할당된 인터럽트만을 마스킹하는 단계를 포함한다.
본 발명의 실시간 운영체제의 인터럽트 마스킹 방법은 인터럽트의 수만큼 인터럽트 메시지 큐를 할당하는 단계와; 메시지를 인터럽트 메시지 큐에 삽입하는 단계와; 특정의 인터럽트 메시지 큐를 접근할 때에 특정 인터럽트 메시지 큐에 할당된 인터럽트만을 마스킹하는 단계와; 모든 인터럽트 메시지 큐에 삽입된 메시지들을 처리하는 단계와; 사용자 모드로의 복귀에 앞서 스케쥴링을 수행하는 단계를 포함한다.
상기 목적 외에 본 발명의 다른 목적 및 특징들은 첨부도면을 참조한 실시예에 대한 설명을 통하여 명백하게 드러나게 될 것이다.
이하, 도 2 및 도 3을 참조하여 본 발명의 바람직한 실시예에 대하여 설명하기로 한다.
도 3은 본 발명의 실시예에 따른 실시간 운영체제의 인터럽트 마스킹 방법에서 인터럽트 메시지 큐의 구조를 나타내는 도면이다.
도 3을 참조하면, 인터럽트 메시지 큐(Interrupt message queue)는 각 인터럽트 종류당 하나씩 할당된다. 모든 인터럽트는 인터럽트 처리 문맥에서 인터럽트 핸들러 태스크를 깨우기 위하여, 인터럽트 핸들러 태스크가 메시지를 기다리며 잠든 메시지 큐에 메시지를 전달하게 된다. 각 인터럽트 처리 문맥에서는 커널의 자료구조의 일관성을 위하여, 이 메시지들을 해당 태스크의 메시지 큐에 삽입하는 것이 아니라 직접 해당 인터럽트의 인터럽트 메시지 큐에 삽입한다. 그리고 인터럽트 처리 문맥에서 바로 복귀한다. 따라서, 커널의 어느 부분에서도 슬립 큐와 레디 큐와 같은 일관성이 유지되어야 할 자료구조를 인터럽트 마스킹 없이 자유롭게 억세스할 수 있다.
인터럽트 메시지 큐를 총 인터럽트 개수만큼 설정함으로서 특정 N 번째 인터럽트가 발생했을 때 인터럽트 처리 문맥에서는 자기 자신의 인터럽트만 마스킹함으로서 커널 자료구조를 안전하게 유지할 수 있다.
특히 각 인터럽트가 접근하는 인터럽트 메시지 큐는 1개 이하로 제한한다.
도 3은 본 발명의 실시예에 따른 실시간 운영체제의 인터럽트 마스킹 방법에서 인터럽트 태스크를 이용한 인터럽트 처리 메커니즘을 나타내는 도면이다.
도 3을 참조하면, 인터럽트 메시지 큐에 삽입된 메시지들은 커널 모드에서 사용자 모드로 복귀가 일어날 때, 인터럽트 메시지 큐에서 꺼내져서 수신자 태스크 (Receiver task)가 메시지를 기다리며 잠든 메시지 큐에 삽입된다. 이러한 과정은 수신자 태스크를 깨움으로 반드시 슬립 큐와 레디 큐등을 건드리게 되지만 슬립 큐, 레디 큐는 커널의 다른 어떤 부분에서도 건드리지 않고, 또 선점점(Preemption point)이 제한되어 있음으로 커널 데이터 구조(Kernel Data Structure)는 안전하게 유지된다.
인터럽트 메시지 큐 N을 접근할 때에는 단지 인터럽트 N만을 마스킹하여 인터럽트 메시지 큐 N이 보호되도록 하여 다른 어떤 인터럽트도 마스킹할 필요가 없다. 그 이유는 다른 종류의 인터럽트들이 서로 다른 인터럽트 메시지 큐를 접근하기 때문이다.
모든 인터럽트 메시지 큐에 저장된 메시지들을 처리한 후 커널은 사용자 모드로의 복귀에 앞서 재스케쥴링을 수행한다.
이렇게 사용자 모드의 복귀에 앞서 재스케쥴링이 수행되면 선점형 멀티태스킹(Preemptive multitasking)에 있어서, 선점점(Preemption point)을 커널에서 사용자 문맥으로의 복귀시점으로 제한하는 것이 전체적으로 커널의 선점성 (Preemptibility)을 떨어뜨릴 수 있지만 커널 내부에서 인터럽트에 의한 태스크간의 무분별한 문맥 교환의 수를 제한할 수 있는 장점이 있다.
커널이 인터럽트 메시지 큐 N을 처리하고 있는 동안 발생하여 인터럽트 메시지 큐에 삽입된 제1 인터럽트(Interrupt 1)부터 제N-1 인터럽트(Interrupt N-1)까지의 메시지들은 다음 번의 커널 모드에서 사용자 모드로의 복귀 때 처리된다. 이는 커널이 제1 인터럽트 메시지 큐(Interrupt message queue 1)부터 최고차 인터럽트 메시지 큐(Interrupt message queue MAX)까지 저장된 인터럽트 메시지들을 순차적으로 처리하고 모든 인터럽트 메시지 큐가 처리된 후에는 인터럽트 메시지 큐를 처리하고 있던 중간에 들어온 인터럽트 메시지들을 더 이상 처리하지 않기 때문이다.
결과적으로, 본 발명의 실시간 운영체제의 인터럽트 마스킹 방법은 특정 인터럽트가 처리되는 시간을 대폭 줄임으로서 로스트 인터럽트(Lost interrupt)를 줄이게 되어 외부 사건에 신속히, 그리고 정확히 대처할 수 있도록 한다.
그리고 본 발명의 실시간 운영체제의 인터럽트 마스킹 방법은 특정 인터럽트로부터 보호되어야 할 자료구조가 명확하고 이에 따른 인터럽트가 마스킹되는 시점이 명확하게 됨으로서 이 기법을 채택한 실시간 운영체제는 재생성(readability)이 뛰어나고 관리하기가 용이하다.
상술한 바와 같이, 본 발명의 실시간 운영체제의 인터럽트 마스킹 방법은 외부사건에 빠르고 효율적으로 대처함과 아울러 명료한 커널을 작성할 수 있다.
이상 설명한 내용을 통해 당업자라면 본 발명의 기술사상을 일탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다. 따라서, 본 발명의 기술적 범위는 명세서의 상세한 설명에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의해 정하여 져야만 할 것이다.

Claims (6)

  1. 인터럽트의 수만큼 인터럽트 메시지 큐를 할당하는 단계와,
    메시지를 상기 인터럽트 메시지 큐에 삽입하는 단계와;
    특정의 상기 인터럽트 메시지 큐를 접근할 때에 상기 특정 인터럽트 메시지 큐에 할당된 상기 인터럽트만을 마스킹하는 단계를 포함하는 것을 특징으로 하는 실시간 운영체제의 인터럽트 마스킹 방법.
  2. 인터럽트의 수만큼 인터럽트 메시지 큐를 할당하는 단계와;
    메시지를 상기 인터럽트 메시지 큐에 삽입하는 단계와;
    특정의 상기 인터럽트 메시지 큐를 접근할 때에 상기 특정 인터럽트 메시지 큐에 할당된 상기 인터럽트만을 마스킹하는 단계와;
    상기 모든 인터럽트 메시지 큐에 삽입된 메시지들을 처리하는 단계와;
    사용자 모드로의 복귀에 앞서 스케쥴링을 수행하는 단계를 포함하는 것을 특징으로 하는 실시간 운영체제의 인터럽트 마스킹 방법.
  3. 제 2 항에 있어서,
    상기 메시지를 삽입하는 단계는 커널 모드에서 사용자 모드로 복귀할 때 수행되는 것을 특징으로 하는 실시간 운영체제의 인터럽트 마스킹 방법.
  4. 제 2 항에 있어서,
    선점점(Preemption point)을 커널에서 사용자 문맥으로의 복귀 시점으로 제한하는 것을 특징으로 하는 실시간 운영체제의 인터럽트 마스킹 방법.
  5. 제 2 항에 있어서,
    N(단, N은 임의의 양의 정수) 번째 상기 인터럽트 메시지 큐가 처리되고 있는 동안에 제1 내지 제N-1 번째 상기 인터럽트 메시지 큐들 각각에 대응하여 삽입된 제1 내지 제N-1 인터럽트까지의 메시지들은 다음 번의 커널 모드에서 사용자 모드로 전환될 때 처리되는 것을 특징으로 하는 실시간 운영체제의 인터럽트 마스킹 방법.
  6. 제 1 항 또는 제 2 항에 있어서,
    상기 메시지는 실행되어야 할 프로그램의 이름과 매개변수 및 값을 지정하는 내용을 포함하는 것을 특징으로 하는 실시간 운영체제의 인터럽트 마스킹 방법.
KR1019970040739A 1997-08-25 1997-08-25 실시간운영체제의인터럽트마스킹방법 KR100324264B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970040739A KR100324264B1 (ko) 1997-08-25 1997-08-25 실시간운영체제의인터럽트마스킹방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970040739A KR100324264B1 (ko) 1997-08-25 1997-08-25 실시간운영체제의인터럽트마스킹방법

Publications (2)

Publication Number Publication Date
KR19990017724A KR19990017724A (ko) 1999-03-15
KR100324264B1 true KR100324264B1 (ko) 2002-07-02

Family

ID=37460922

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970040739A KR100324264B1 (ko) 1997-08-25 1997-08-25 실시간운영체제의인터럽트마스킹방법

Country Status (1)

Country Link
KR (1) KR100324264B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100812346B1 (ko) 2006-02-06 2008-03-11 삼성전자주식회사 재구성 어레이에서의 인터럽트 처리 방법 및 장치

Also Published As

Publication number Publication date
KR19990017724A (ko) 1999-03-15

Similar Documents

Publication Publication Date Title
US6560626B1 (en) Thread interruption with minimal resource usage using an asynchronous procedure call
US5390329A (en) Responding to service requests using minimal system-side context in a multiprocessor environment
US5515538A (en) Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US7752620B2 (en) Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions
US5452452A (en) System having integrated dispatcher for self scheduling processors to execute multiple types of processes
US6957432B2 (en) Real-time scheduler
EP1012715B1 (en) Hardware assisted method of context switching
US5666523A (en) Method and system for distributing asynchronous input from a system input queue to reduce context switches
US5911065A (en) System and method for providing cooperative interrupts in a preemptive task scheduling environment
Fidge Real-time schedulability tests for preemptive multitasking
US7296271B1 (en) Replaceable scheduling algorithm in multitasking kernel
RU2312388C2 (ru) Способ организации многопроцессорной эвм
US20050066149A1 (en) Method and system for multithreaded processing using errands
EP1297432B1 (en) Method and apparatus for a scheduling driver to implement a protocol utilizing time estimates for use with a device that does not generate interrupts
KR100324264B1 (ko) 실시간운영체제의인터럽트마스킹방법
WO1992003779A1 (en) Method of efficient communication between coprocessors
Cooling et al. Task scheduler co-processor for hard real-time systems
US6012082A (en) CPU-cycle stealing for multi-tasking operating system
Harbour et al. An application-level implementation of the sporadic server
WO1992003783A1 (en) Method of implementing kernel functions
JP3764282B2 (ja) プログラム制御システムの制御装置
Hunt Interrupts and Ada
Rivas et al. Early experience with an implementation of the POSIX. 13 minimal real-time operating system for embedded applications
Stagnaro et al. Axs: AN Ada Coprocessor-Based Real-Time Kernel
Hoare Computer Science Department

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: 20090105

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee