KR100315401B1 - Interrupt handling method in real-time OS - Google Patents

Interrupt handling method in real-time OS Download PDF

Info

Publication number
KR100315401B1
KR100315401B1 KR1019980052953A KR19980052953A KR100315401B1 KR 100315401 B1 KR100315401 B1 KR 100315401B1 KR 1019980052953 A KR1019980052953 A KR 1019980052953A KR 19980052953 A KR19980052953 A KR 19980052953A KR 100315401 B1 KR100315401 B1 KR 100315401B1
Authority
KR
South Korea
Prior art keywords
interrupt
software
service routine
level
hardware
Prior art date
Application number
KR1019980052953A
Other languages
Korean (ko)
Other versions
KR20000038091A (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 KR1019980052953A priority Critical patent/KR100315401B1/en
Publication of KR20000038091A publication Critical patent/KR20000038091A/en
Application granted granted Critical
Publication of KR100315401B1 publication Critical patent/KR100315401B1/en

Links

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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag

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)

Abstract

본 발명의 목적은 인터럽트를 하드웨어 인터럽트와 소프트웨어 인터럽트로 분리하여 처리함으로써, 인터럽트의 디세이블(disable), 마스크(mask) 시간을 최소화하고 이를 통한 전체 시스템의 실시간 성격을 보장해 주며 손쉽게 인터럽트 서비스 루틴을 구현할 수 있기 위한 실시간 운영체계를 위한 인터럽트 처리방법을 제공함에 있다. 상술한 바와 같이 본 발명은 실시간 운영체계 상에서 발생하는 인터럽트의 처리 방법을 하드웨어 인터럽트 처리 루틴과 소프트웨어 인터럽트 처리 루틴으로 분리하여 일반적인 인터럽트의 처리기간 중에 발생하는 인터럽트 디세이블, 마스크 기간을 단축하여 인터럽트의 수행 지연을 최소화하고, 이에 따른 운영체계의 실시간성 보장과 시스템 성능 향상을 할 수 있고, 또한 다양한 구조의 인터럽트 서비스 루틴의 개발을 손쉽게 할 수 있는 데 효과가 있다.It is an object of the present invention to separate interrupts into hardware interrupts and software interrupts, thereby minimizing the disable and mask times of interrupts, thereby ensuring the real-time nature of the entire system, and easily implementing interrupt service routines. The present invention provides an interrupt handling method for a real-time operating system. As described above, the present invention divides the interrupt processing method generated in the real-time operating system into a hardware interrupt processing routine and a software interrupt processing routine to shorten the interrupt disable and mask periods occurring during the normal interrupt processing period, thereby performing the interrupt. Minimizing the delay, thereby ensuring the real-time performance of the operating system and improving the system performance, it is also effective to facilitate the development of various interrupt service routines.

Description

실시간 운영체계에서 하드웨어 인터럽트 서비스 루틴과 소프트웨어 인터럽트 서비스 루틴으로 분리하여 처리하는 인터럽트 처리방법{Interrupt handling method in real-time OS}Interrupt handling method in real-time operating system divided into hardware interrupt service routine and software interrupt service routine

본 발명은 실시간 운영체계를 위한 인터럽트를 처리하는 방법에 관한 것으로, 특히 인터럽트를 하드웨어 인터럽트 서비스 루틴과 소프트웨어 인터럽트 서비스 루틴으로 분리하여 처리함으로써 인터럽트의 디세이블, 마스크 시간을 최소화하고 이를 통한 전체 시스템의 실시간 성격을 보장해 주는 실시간 운영체계를 위한 인터럽트 처리방법에 관한 것이다.The present invention relates to a method for processing an interrupt for a real-time operating system. In particular, the interrupt is divided into a hardware interrupt service routine and a software interrupt service routine, thereby minimizing the disabling and mask time of the interrupt and thereby real-time the entire system. Interrupt handling method for real-time operating system that guarantees personality.

일반적으로, 인터럽트의 처리는 실시간 운영체계의 전체 성능에 큰 영향을 주는 것으로 특별히 실시간 운영체계의 경우에는 인터럽트의 처리기간 중에 발생하는 인터럽트 디세이블(disable) 기간과 인터럽트 마스크(mask) 기간을 단축하여 인터럽트의 수행 지연을 최소화해야 한다. 또한, 다양한 구조의 인터럽트 서비스 루틴의 개발을 손쉽게 할 수 있는 구조로 인터럽트 처리 루틴이 구성되어야 한다.In general, interrupt processing greatly affects the overall performance of the real-time operating system. In particular, in the case of a real-time operating system, the interrupt disable period and the interrupt mask period that occur during the interrupt processing period are shortened. Minimize the execution delay of interrupts. In addition, the interrupt processing routine should be configured in a structure that facilitates the development of various types of interrupt service routines.

이 때 사용하는 종래의 방법은 인터럽트 서비스 루틴을 최소화하여서 인터럽트의 디세이블, 마스크 기간을 단축하는 방법을 사용하기도 하고, 인터럽트와 프로세스 스케줄러를 연관지어 전체 스케줄링의 효과를 높이는 방법을 사용하기도 한다. 이러한 기존의 방법들은 복잡한 구조의 인터럽트를 처리할 때에는 특별한 효과를 보기 어렵다.The conventional method used at this time may use a method of minimizing an interrupt service routine to shorten an interrupt disable and a mask period, or use a method of associating an interrupt with a process scheduler to increase the overall scheduling effect. These existing methods have no special effect when dealing with complex structured interrupts.

종래의 인터럽트 처리방법에서는 인터럽트가 발생하면 그 인터럽트를 하드웨어 인터럽트 서비스 루틴만으로 처리하였다. 즉, 모든 인터럽트 처리를 인터럽트 마스크 상태로 처리하였다. 따라서, 인터럽트가 발생하여 종료할 때까지의 기간이인터럽트 마스크 기간이 되며, 이 인터럽트 마스크 기간동안에는 현재 처리중인 인터럽트 레벨 이하의 레벨을 가지는 인터럽트에 대해서는 전혀 응답을 할 수 없는 상태가 된다. 즉, 종래에는 인터럽트의 처리시 발생하는 인터럽트 마스크 기간이 인터럽트 처리기간에 비례적으로 길어질 수밖에 없으며, 이렇게 발생하는 지연은 실시간 운영체계에서 최소화해야 하는 기술적 과제를 갖는다. 또한 기존의 인터럽트 처리 방식은 하나 이상 같은 레벨에 존재할 복잡한 구조의 인터럽트를 처리하는 데에도 곤란함이 많았다.In the conventional interrupt processing method, when an interrupt occurs, the interrupt is processed only by a hardware interrupt service routine. In other words, all the interrupt processes are processed in the interrupt mask state. Therefore, the period until the interrupt is generated and terminates becomes the interrupt mask period, and during this interrupt mask period, no response can be made to an interrupt having a level lower than the interrupt level currently being processed. That is, in the related art, the interrupt mask period generated during the interrupt processing is inevitably lengthened in proportion to the interrupt processing period, and the delay that occurs is a technical problem to be minimized in the real-time operating system. In addition, the conventional interrupt handling method has been difficult to deal with interrupts of complex structure that exist at the same level or more.

본 발명의 목적은 인터럽트를 하드웨어 인터럽트 처리 루틴과, 소프트웨어 인터럽트 처리 루틴으로 분리하여 처리함으로써, 인터럽트의 디세이블, 마스크 시간을 최소화하고 이를 통한 전체 시스템의 실시간 성격을 보장해 주며 손쉽게 인터럽트 서비스 루틴을 구현할 수 있기 위한 실시간 운영체계에서 인터럽트 처리방법을 제공함에 있다.The object of the present invention is to separate interrupts into hardware interrupt processing routines and software interrupt processing routines, thereby minimizing the disabling and masking time of the interrupts, ensuring the real-time characteristics of the entire system, and easily implementing interrupt service routines. The purpose is to provide an interrupt handling method in a real-time operating system.

도 1은 본 발명의 실시예에 적용되는 하드웨어 시스템의 구성도,1 is a configuration diagram of a hardware system applied to an embodiment of the present invention;

도 2는 본 발명에 따른 실시간 운영체계에서 발생한 인터럽트를 처리하는 과정을 도시한 전체 흐름도,2 is an overall flowchart illustrating a process of processing an interrupt generated in a real-time operating system according to the present invention;

도 3은 본 발명이 적용되는 하드웨어 시스템 상에서 소프트웨어 인터럽트를 처리하는 과정을 도시한 흐름도.3 is a flowchart illustrating a process of processing a software interrupt on a hardware system to which the present invention is applied.

<도면의 주요부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>

1 : 분산 구조의 타켓 시스템 2 : 가입자 호 처리 프로세서1: Target System of Distributed Structure 2: Subscriber Call Processing Processor

3 : 운용보전 프로세서 4 : 주처리 프로세서 보드3: operation maintenance processor 4: main processing processor board

5 : 주처리 장치 6 : 주기억 장치5: main processing unit 6: main memory unit

7 : 이더넷(ethernet) 8 : SPCA7: ethernet 8: SPCA

9 : 인터럽트 기능 제어 장치 10 : SCSI Hard Disk9: Interrupt function control device 10: SCSI Hard Disk

11 : 교환망 12 : 통신망11: switching network 12: communication network

13 : 호스트 시스템13: host system

이와 같은 본 발명의 목적을 달성하기 위한 실시간 운영체계에서 인터럽트 처리방법은, 인터럽트가 발생하면 인터럽트 디스에이블시키고, 상기 발생한 인터럽트의 레벨을 구하고, 상기 발생한 인터럽트 레벨 이하의 인터럽트를 마스크하는 제 1 단계와;In the real-time operating system for achieving the object of the present invention, an interrupt processing method includes a first step of disabling an interrupt when an interrupt occurs, obtaining a level of the generated interrupt, and masking an interrupt below the generated interrupt level; ;

상기 발생한 인터럽트 레벨의 서비스 루틴 중 인터럽트 마스크 상태에서 처리하여야 하는 하드웨어 인터럽트 서비스 루틴이 존재하는 지를 검사하는 제 2 단계와;A second step of checking whether there is a hardware interrupt service routine to be processed in an interrupt mask state among the generated interrupt level service routines;

상기 제 2 단계의 검사결과 하드웨어 인터럽트 서비스 루틴이 존재하면 인터럽트 인에이블시키고 상기 하드웨어 인터럽트 서비스 루틴을 수행하며 다시 인터럽트 디세이블시키고 인터럽트 언마스크하며, 상기 제 2 단계의 검사결과 하드웨어 인터럽트 서비스 루틴이 존재하지 않으며 바로 인터럽트 언마스크하는 제 3 단계 와;If the result of the check in the second step is a hardware interrupt service routine, enable the interrupt, perform the hardware interrupt service routine, disable the interrupt again, interrupt unmask, and the result of the check in the second step does not exist hardware interrupt service routine And a third step of immediately unmasking the interrupt;

소프트웨어 인터럽트 처리루틴이 호출되어, 상기 발생한 인터럽트 레벨의 서비스 루틴 중 인터럽트 언마스크 상태에서 처리할 수 있는 소프트웨어 인터럽트 서비스 루틴이 존재하는 지를 검사하는 제 4 단계와;A fourth step of calling a software interrupt processing routine to check whether there is a software interrupt service routine which can be processed in an interrupt unmask state among the generated interrupt level service routines;

상기 제 4 단계의 검사결과 소프트웨어 인터럽트 서비스 루틴이 존재하면 인터럽트 인에이블시키고 상기 소프트웨어 인터럽트 서비스 루틴을 수행하고 다시 인터럽트 디세이블시킨 후 종료하고, 제 4 단계의 검사결과 소프트웨어 인터럽트 서비스 루틴이 존재하지 않으며 바로 종료하는 제 5 단계를 포함한 것을 특징으로 한다.If the check result of the software interrupt service routine of the fourth stage is present, enable the interrupt, perform the software interrupt service routine, disable the interrupt again, and terminate. The check result of the check of the fourth stage does not exist. And a fifth step of terminating.

양호하게는, 상기 제 4 단계는, 상기 발생한 인터럽트 레벨의 소프트웨어 인터럽트 서비스 플래그를 조사하여 소프트웨어 인터럽트 서비스 루틴이 수행 중인 지를 검사하여 , 수행 중이면 바로 종료하고, 수행중이 아니면 상기 발생 인터럽트 레벨의 소프트웨어 인터럽트 서비스 플래그를 수행 상태로 세팅한 후 상기 발생한 인터럽트 레벨의 소프트웨어 인터럽트 서비스 루틴이 등록되었는 지를 검사하며;Preferably, the fourth step examines the software interrupt service flag of the generated interrupt level to check whether a software interrupt service routine is being executed and immediately terminates if it is being executed, and if not, to execute the software of the generated interrupt level. Setting an interrupt service flag to a running state and then checking whether a software interrupt service routine of the generated interrupt level is registered;

상기 제 5 단계는, 종료 직전 상기 발생 인터럽트 레벨의 소프트웨어 인터럽트 서비스 플래그를 미수행 상태로 리셋하는 것을 특징으로 한다.The fifth step is characterized by resetting the software interrupt service flag of the generated interrupt level to the non-executed state immediately before termination.

이하 첨부한 도면을 참조하여 본 발명을 상세히 설명하면 다음과 같다.Hereinafter, the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명에 따른 하드웨어 시스템 구성도를 도시한 것이다.1 is a block diagram illustrating a hardware system according to the present invention.

타겟 시스템(1)은 가입자의 호 처리를 위한 프로세스(2)와 운용 보전을 위한 프로세스(3)가 교환 망(11)으로 연결되어있다. 여기에서 가입자의 호 처리를 위한 프로세스(2)와 운용 보존을 위한 프로세스(3)는 공통적으로 주처리 프로세스 보드인 AMPA(4)을 갖고 있고, 이 보드 내에서는 주처리 장치인 CPU(5)을 갖고 있고, 이것은 주기억 장치(6)상에서 동작하면서, 통신망(12)과의 접속 장치인 이더넷 (ethernet)(7)과 교환 망(11)과의 접속 장치인 SPCA(8)를 제어하는 기능을 수행한다. 또한 각 프로세서마다 인터럽트 기능 제어 장치(9)를 갖고 이를 통하여 인터럽트를 인에이블(enable), 디세이블(disable), 마스크(mask), 언마스크(unmask)하고, 발생한 인터럽트의 레벨을 구할 수 있는 구조로 이루어져있다.In the target system 1, a process 2 for call processing of a subscriber and a process 3 for operation maintenance are connected to the switching network 11. Here, the process (2) for the subscriber's call processing and the process (3) for the preservation of operation have a common AMPA (4), which is the main processing process board. It operates on the main memory device 6, and performs a function of controlling the Ethernet 7, which is a connection device with the communication network 12, and the SPCA 8, which is a connection device with the switching network 11. do. In addition, each processor has an interrupt function control device 9 through which an interrupt can be enabled, disabled, masked, unmasked, and the level of the interrupt generated can be obtained. Consists of

특별히, 운용 보전 프로세스(3)에서는 보조기억 장치와의 연결을 위해서 SCSI Hard disk(10)가 추가적으로 존재한다. 이러한 타겟 시스템(1)상에서 인터럽트 발생 시 처리되는 결과는 타겟 시스템(1)의 운영체계에서 통신망(12)을 통하여 호스트 시스템(13)에 전달되어 최종적으로 시스템 운영자에게 그 내용이 전달된다.In particular, in the operation maintenance process (3) there is an additional SCSI hard disk (10) for connecting to the secondary storage device. The result processed when the interrupt occurs on the target system 1 is transmitted to the host system 13 through the communication network 12 in the operating system of the target system 1, and finally the contents thereof are transmitted to the system operator.

본 발명에서는 인터럽트가 발생하면, 하드웨어 인터럽트 처리 루틴과 소프트웨어 인터럽트 처리 루틴으로 분리하여 처리하는데, 하드웨어 인터럽트 처리 루틴에서는 마스크된 상태에서만 처리 가능한 기능들만을 모아서 서비스하고, 소프트웨어 인터럽트 처리 루틴에서는 마스크하지 않아도 처리 가능한 기능들을 모아서 서비스하도록 한다. 예룰 들어 이더넷 인터럽트의 경우, 기존의 방법에서는 이의 처리를 모두 하드웨어 인터럽트 서비스 루틴으로 처리하였지만, 본 발명에서는 하드웨어 레지스터 값 변경, 전역 변수의 값 변경 등과 같이 중요 부분만을 짧게 하드웨어 인터럽트 서비스 루틴으로 처리하고, 나머지 실제 메시지 복사 등 시간은 많이 걸리나 외부 인터럽트를 서비스하면서 처리할 수 있는 기능들을 분리하여 소프트웨어 인터럽트 서비스 루틴으로 처리한다. 따라서, 본 발명에서의 인터럽트 마스크 기간은 전체 인터럽트 처리기간이 아닌 하드웨어 인터럽트 처리기간으로 단축시킬 수 있다.In the present invention, when an interrupt occurs, the hardware interrupt processing routine and the software interrupt processing routine are separated and processed. In the hardware interrupt processing routine, only the functions that can be processed in the masked state are collected and serviced, and the software interrupt processing routine does not need to mask the processing. Collect the possible functions to service. For example, in the case of Ethernet interrupt, in the conventional method, all of these processes are handled by a hardware interrupt service routine. However, in the present invention, only an important part such as a hardware register value change or a global variable value is shortened to a hardware interrupt service routine. It takes a long time, such as copying the rest of the actual message, but separates the functions that can be handled while servicing external interrupts and processes them with software interrupt service routines. Therefore, the interrupt mask period in the present invention can be shortened to the hardware interrupt processing period rather than the entire interrupt processing period.

도 2는 본 발명에 따른 하드웨어 인터럽트 처리 루틴의 동작 흐름도를 도시한 것이다.2 is a flowchart illustrating an operation of a hardware interrupt processing routine according to the present invention.

우선 인터럽트가 발생하면, 더 이상 인터럽트가 발생하지 못하도록 인터럽트를 디세이블한다(14). 이후에 발생한 인터럽트의 레벨을 구한(15) 다음, 해당 레벨 이하의 인터럽트를 마스크(mask)한다(16).First, when an interrupt occurs, it is disabled 14 to prevent further interrupts. After that, the level of the interrupt generated after that is obtained (15), and then the interrupt below the level is masked (16).

이렇게 인터럽트를 마스크한 이후에는 해당 레벨 이하의 레벨을 갖는 인터럽트는 발생하지 못한다. 예를 들어 이더넷(ethernet)(7) 장치의 인터럽트 레벨이 4이고 SPCA(8) 장치의 인터럽트 레벨이 5라고 가정할 때, 현재 발생한 하드웨어 인터럽트가 레벨이 5 인 SPCA(8) 장치로부터 발생한 것이라면 인터럽트의 마스크 (mask) 기간 동안에는 이더넷(7) 장치는 인터럽트를 발생하지 못하게 된다. 따라서, 이러한 인터럽트 마스크 기간이 길어진다면 이더넷을 이용하는 실시간 작업은 큰 장애를 받게 된다.After masking an interrupt in this way, an interrupt with a level below the level cannot be generated. For example, assuming that the interrupt level of an Ethernet (7) device is 4 and the interrupt level of an SPCA (8) device is 5, the interrupt if the currently occurring hardware interrupt is from an SPCA (8) device of level 5 During the mask period, the Ethernet 7 device does not generate an interrupt. Thus, if this interrupt mask period is prolonged, real-time operation using Ethernet is a major obstacle.

인터럽트 마스크한 이후에는 현재 발생한 인터럽트 레벨에 해당하는 등록된 하드웨어 인터럽트 서비스 루틴 테이블의 값을 구한다(17). 그리고 이 값에 따라 등록된 하드웨어 인터럽트 서비스 루틴이 있는가를 검사한다(18). 이러한 인터럽트 레벨에 따른 하드웨어 인터럽트 서비스 루틴에는 해당 레벨의 인터럽트를 처리하는 데 있어서, 인터럽트 마스크 상태에서만 처리해야 하는 기능들만을 모아서 등록해 놓는다.After the interrupt mask, the value of the registered hardware interrupt service routine table corresponding to the interrupt level currently generated is obtained (17). It then checks whether there is a registered hardware interrupt service routine according to this value (18). The hardware interrupt service routine according to the interrupt level collects and registers only the functions that need to be handled only in the interrupt mask state in order to handle the interrupt of the level.

이때 등록된 하드웨어 인터럽트 처리 루틴이 존재하지 않는다면 22단계로 바로 이동하고, 만약 등록된 하드웨어 처리 루틴이 존재한다면 해당 인터럽트를 인에이블시키고(19) 해당 레벨에 등록된 모든 하드웨어 인터럽트 서비스 루틴을 수행한다(20). 이렇게 등록된 모든 하드웨어 인터럽트 서비스 루틴이 수행된 후에는 인터럽트를 디세이블한 후(21), 해당 레벨 이하의 인터럽트를 언마스크하고(22), 소프트웨어 인터럽트 처리 루틴을 호출하며(23), 인터럽트 발생 이전의 레벨로 환원하고(24), 하드웨어 인터럽트 처리 루틴을 종료한다.If there is no registered hardware interrupt handling routine, go directly to step 22, if there is a registered hardware handling routine, enable the corresponding interrupt (19) and perform all hardware interrupt service routines registered at the corresponding level ( 20). After all registered hardware interrupt service routines have been performed, disable interrupts (21), unmask interrupts below that level (22), call software interrupt handling routines (23), and before interrupts are generated. Return to the level of (24), and terminate the hardware interrupt processing routine.

도 3은 본 발명에 따른 소프트웨어 인터럽트 처리 루틴을 도시한 동작 흐름 도이다.3 is an operational flow diagram illustrating a software interrupt processing routine in accordance with the present invention.

도 2에서 발생한 하드웨어 인터럽트 레벨(HIL)에 해당하는 소프트웨어 인터럽트 서비스 플래그(SIS[HIL]) 값을 확인한다(24). 여기서, SIS(Software Interrupt in Service)[HIL]은 현재 동작 중인 소프트웨어 인터럽트 처리 루틴이 있는 지를 나타내는 플래그 값으로, SIS[HIL]이 0이 아니면 이미 소프트웨어 인터럽트 처리 루틴이 수행 중인 상태를 나타내며 SIS[HIL]이 0이면 현재 수행 중인 소프트웨어 인터럽트 처리 루틴이 없는 상태를 나타낸다. 이러한 SIS[HIL] 값은 해당 인터럽트 레벨이 중복되어 수행되는 소프트웨어 처리를 방지하기 위해 사용된다.The software interrupt service flag SIS [HIL] value corresponding to the hardware interrupt level HIL generated in FIG. 2 is checked (24). Here, Software Interrupt in Service (SIS) [HIL] is a flag value indicating whether there is a software interrupt processing routine currently in operation. If SIS [HIL] is not 0, it indicates that the software interrupt processing routine is already running. ] = 0 indicates that no software interrupt processing routine is currently running. This SIS [HIL] value is used to prevent software processing that is performed with duplicated interrupt levels.

즉, SIS[HIL] 값이 0이 아니면 이미 소프트웨어 처리 루틴이 수행 중이기 때문에 바로 소프트웨어 처리 루틴을 종료한다.That is, if the SIS [HIL] value is not 0, the software processing routine is terminated immediately because the software processing routine is already running.

그러나, SIS[HIL] 값이 0이면 우선 그 값을 1로 세팅하고(25), 해당 인터럽트 레벨에 등록된 소프트웨어 인터럽트 서비스 루틴 테이블의 값을 구한다(26). 그 값에 따라 등록된 소프트웨어 인터럽트 서비스 루틴이 있는가를 검사한다(27). 이때 등록된 소프트웨어 인터럽트 서비스 루틴이 존재하지 않는다면 31단계로 바로 이동하고, 만약 등록된 소프트웨어 인터럽트 서비스 루틴이 존재하면 인터럽트를 인에이블 시키고(28), 해당 레벨에 등록된 모든 소프트웨어 인터럽트 서비스 루틴을 수행한다(29).However, if the SIS [HIL] value is 0, the value is first set to 1 (25), and the value of the software interrupt service routine table registered at the corresponding interrupt level is obtained (26). According to the value, it is checked whether there is a registered software interrupt service routine (27). If there is no registered software interrupt service routine, go directly to step 31. If there is a registered software interrupt service routine, enable the interrupt (28) and perform all software interrupt service routines registered at the level. (29).

이렇게 소프트웨어 인터럽트 서비스 루틴이 수행된 후에는 인터럽트를 디세이블한 후(30), SIS[HIL] 값을 0으로 세팅하고(31) 소프트웨어 인터럽트 서비스 루틴을 종료한다.After the software interrupt service routine is performed in this manner, after disabling the interrupt (30), the SIS [HIL] value is set to 0 (31) and the software interrupt service routine is terminated.

종래의 인터럽트 처리방법에서는 하드웨어 인터럽트 서비스 루틴에서 모든 인터럽트 처리과정을 수행하기 때문에, 즉, 인터럽트 디세이블, 마스크 상태에서 모든 인터럽트 처리과정을 수행하기 때문에, 인터럽트가 발생하여 종료할 때까지가 인터럽트 디세이블, 마스크 기간이 되며, 이 때문에 전체 디세이블, 마스크 기간이 증가하게 된다. 즉, 모든 인터럽트 처리과정 중에는 인터럽트 디세이블, 마스크하지 않아도 처리할 수 있는 많은 기능들이 있으나, 이러한 기능들도 인터럽트 디세이블, 마스크 상태에서 처리하기 때문에, 전체 디세이블, 마스크 기간이 늘어나 시스템의 성능에 악영향을 미치게 된다.In the conventional interrupt processing method, since all interrupt processing is performed in the hardware interrupt service routine, that is, all interrupt processing is performed in the interrupt disable and mask states, until interrupt generation occurs and the interrupt is disabled. , The mask period is increased, which increases the total disable period and the mask period. In other words, there are many functions that can be handled without interrupt disabling and masking during all interrupt processing, but these functions are handled under interrupt disabling and masking status. Will adversely affect.

그러나, 본 발명에서는 인터럽트 처리과정에서 마스크 상태에서 처리해야 할기능들을 모아서 하드웨어 인터럽트 서비스 루틴으로 등록하고, 마스크되지 않은 상태에서도 처리 가능한 기능들을 모아서 소프트웨어 인터럽트 서비스 루틴에 등록하며, 인터럽트가 발생하면 우선 인터럽트 마스크 상태에서 하드웨어 인터럽트 서비스 루틴을 수행하고, 인터럽트 언마스크 상태에서 소프트웨어 인터럽트 서비스 루틴을 수행함으호써, 마스크 기간을 대폭적으로 축소시킬 수 있다. 또한, 이로써 실시간 시스템에서의 인터럽트 응답시간을 향상시킬 수 있다. 또한, 서비스 루틴을 수행하는 동안에 적절하게 인터럽트 인에이블 동작과 디세이블 동작을 수행함으로써, 전체적인 인터럽트 디세이블 기간을 단축할 수 있습니다.However, in the present invention, the functions to be processed in the mask state in the interrupt processing are collected and registered in the hardware interrupt service routine, and the functions that can be processed even in the unmasked state are collected and registered in the software interrupt service routine. By executing the hardware interrupt service routine in the mask state and the software interrupt service routine in the interrupt unmask state, the mask period can be greatly reduced. This also improves interrupt response times in real-time systems. In addition, by performing interrupt enable and disable operations appropriately during service routines, the overall interrupt disable period can be shortened.

상술한 바와 같이 본 발명은 실시간 운영체제 상에서 발생하는 인터럽트의 처리 방법을 하드웨어 인터럽트 처리 루틴과 소프트웨어 인터럽트 처리 루틴으로 분리하여 일반적인 인터럽트의 처리기간 중에 발생하는 인터럽트 디세이블, 마스크 기간을 단축하여 인터럽트의 수행 지연을 최소화 하고, 이에 따른 운영체제의 실시간성 보장과 시스템 성능 향상을 할 수 있고, 또한 다양한 구조의 인터럽트 서비스 루틴의 개발을 손쉽게 할 수 있는 데 효과가 있다.As described above, the present invention divides the interrupt processing method generated in the real-time operating system into a hardware interrupt processing routine and a software interrupt processing routine to reduce interrupt disable and mask periods occurring during a general interrupt processing period, thereby delaying interrupt execution. Minimize the number, and guarantee the real-time performance of the operating system and improve the system performance, and also make it easy to develop the interrupt service routine of various structures.

Claims (2)

인터럽트가 발생하면 인터럽트 디스에이블시키고, 상기 발생한 인터럽트의 레벨을 구하고, 상기 발생한 인터럽트 레벨 이하의 인터럽트를 마스크하는 제 1 단계와;Disabling an interrupt when an interrupt occurs, obtaining a level of the generated interrupt, and masking an interrupt below the generated interrupt level; 상기 발생한 인터럽트 레벨의 서비스 루틴 중 인터럽트 마스크 상태에서 처리하여야 하는 하드웨어 인터럽트 서비스 루틴이 존재하는 지를 검사하는 제 2 단계와;A second step of checking whether there is a hardware interrupt service routine to be processed in an interrupt mask state among the generated interrupt level service routines; 상기 제 2 단계의 검사결과 하드웨어 인터럽트 서비스 루틴이 존재하면 인터럽트 인에이블시키고 상기 하드웨어 인터럽트 서비스 루틴을 수행하며 다시 인터럽트 디세이블시키고 인터럽트 언마스크하며, 상기 제 2 단계의 검사결과 하드웨어 인터럽트 서비스 루틴이 존재하지 않으며 바로 인터럽트 언마스크하는 제 3 단계와;If the result of the check in the second step is a hardware interrupt service routine, enable the interrupt, perform the hardware interrupt service routine, disable the interrupt again, interrupt unmask, and the result of the check in the second step does not exist hardware interrupt service routine And a third step of immediately unmasking the interrupt; 소프트웨어 인터럽트 처리루틴이 호출되어, 상기 발생한 인터럽트 레벨의 서비스 루틴중 인터럽트 언마스크 상태에서 처리할 수 있는 소프트웨어 인터럽트 서비스 루틴이 존재하는 지를 검사하는 제 4 단계와;A fourth step of calling a software interrupt processing routine to check whether there is a software interrupt service routine that can be processed in an interrupt unmask state among the generated interrupt level service routines; 상기 제 4 단계의 검사결과 소프트웨어 인터럽트 서비스 루틴이 존재하면 인터럽트 인에이블시키고 상기 소프트웨어 인터럽트 서비스 루틴을 수행하고 다시 인터럽트 디세이블시킨 후 종료하고, 제 4 단계의 검사결과 소프트웨어 인터럽트 서비스 루틴이 존재하지 않으면 바로 종료하는 제 5 단계를 포함한 것을 특징으로 하는 실시간 운영체계에서 인터럽트 처리방법.If the check result software interrupt service routine exists in the fourth step, enable the interrupt, perform the software interrupt service routine, disable the interrupt again, and exit. If the check result software interrupt service routine does not exist in the fourth step, immediately Interrupt processing method in a real-time operating system, characterized in that it comprises a fifth step of terminating. 제 1 항에 있어서,The method of claim 1, 상기 제 4 단계는, 상기 발생한 인터럽트 레벨의 소프트웨어 인터럽트 서비스 플래그를 조사하여 소프트웨어 인터럽트 서비스 루틴이 수행 중인 지를 검사하여, 수행 중이면 바로 종료하고, 수행중이 아니면 상기 발생 인터럽트 레벨의 소프트웨어 인터럽트 서비스 플래그를 수행 상태로 세팅한 후 상기 발생한 인터럽트 레벨의 소프트웨어 인터럽트의 서비스 루틴이 등록되었는 지를 검사하며;In the fourth step, the software interrupt service flag of the generated interrupt level is examined to check whether a software interrupt service routine is being executed, and if it is being performed, the process is terminated immediately. Checking whether a service routine of a software interrupt of the generated interrupt level has been registered after setting to a running state; 상기 제 5 단계는, 종료 직전 상기 발생 인터럽트 레벨의 소프트웨어 인터럽트 서비스 플래그를 미수행 상태로 리셋하는 것을 특징으로 하는 실시간 운영체계에서 인터럽트 처리방법.The fifth step may include resetting the software interrupt service flag of the generated interrupt level to a non-executed state immediately before termination.
KR1019980052953A 1998-12-03 1998-12-03 Interrupt handling method in real-time OS KR100315401B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019980052953A KR100315401B1 (en) 1998-12-03 1998-12-03 Interrupt handling method in real-time OS

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980052953A KR100315401B1 (en) 1998-12-03 1998-12-03 Interrupt handling method in real-time OS

Publications (2)

Publication Number Publication Date
KR20000038091A KR20000038091A (en) 2000-07-05
KR100315401B1 true KR100315401B1 (en) 2002-02-28

Family

ID=19561292

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980052953A KR100315401B1 (en) 1998-12-03 1998-12-03 Interrupt handling method in real-time OS

Country Status (1)

Country Link
KR (1) KR100315401B1 (en)

Also Published As

Publication number Publication date
KR20000038091A (en) 2000-07-05

Similar Documents

Publication Publication Date Title
US6820155B1 (en) Interruption managing device and interruption managing method
US7177967B2 (en) Chipset support for managing hardware interrupts in a virtual machine system
US6715016B1 (en) Multiple operating system control method
US6324684B1 (en) Processor having real-time execution control for debug functions without a debug monitor
KR100791437B1 (en) Method And Apparatus For Managing Thread Excution In A Multithreaded Application
RU2417413C2 (en) Method of delivering interruptions to user mode drivers
JPH113232A (en) Signal generation and distribution for double level multi-thread system
KR20010074544A (en) Flexible interrupt controller that includes an interrupt force register
US6629252B1 (en) Method for determining if a delay required before proceeding with the detected interrupt and exiting the interrupt without clearing the interrupt
CN115599505B (en) User state interrupt request processing method and device
RU2134446C1 (en) Method for controlling primitive program overflow by messages in multiprocessor control system (versions)
KR100315401B1 (en) Interrupt handling method in real-time OS
CN110083473B (en) Improved system and method based on RISC-V architecture bus access error
US6990669B1 (en) Real-time scheduler
CN111045730A (en) Hardware fast interrupt processing system and method for RISC-V architecture
Hills Structured interrupts
US6195715B1 (en) Interrupt control for multiple programs communicating with a common interrupt by associating programs to GP registers, defining interrupt register, polling GP registers, and invoking callback routine associated with defined interrupt register
US5455940A (en) Method for abnormal restart of a multiprocessor computer of a telecommunication switching system
AU1218897A (en) Job scheduling for instruction processor
JPH07311686A (en) Computer system and method for generation and processing of system management interrupt in it
Ma et al. Construction of RISC-V lightweight trusted execution environment based on hardware extension
US7114022B2 (en) Method for generating interrupt signal and media access controller utilizing the same
CN112559117A (en) Timer processing method and device, electronic equipment and computer storage medium
KR20030077696A (en) Method for task level interrupt handling in realtime operating system
CN113553107A (en) Method for guaranteeing secondary development real-time performance by using ARMv8 interrupt packet routing mechanism

Legal Events

Date Code Title Description
A201 Request for examination
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: 20091109

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee