KR100848323B1 - 임베디드 운영체제 커널의 실시간 성능을 향상시키는 방법 - Google Patents

임베디드 운영체제 커널의 실시간 성능을 향상시키는 방법

Info

Publication number
KR100848323B1
KR100848323B1 KR1020060125136A KR20060125136A KR100848323B1 KR 100848323 B1 KR100848323 B1 KR 100848323B1 KR 1020060125136 A KR1020060125136 A KR 1020060125136A KR 20060125136 A KR20060125136 A KR 20060125136A KR 100848323 B1 KR100848323 B1 KR 100848323B1
Authority
KR
South Korea
Prior art keywords
task
kernel
locked
real
region
Prior art date
Application number
KR1020060125136A
Other languages
English (en)
Other versions
KR20070061464A (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 한국전자통신연구원
Publication of KR20070061464A publication Critical patent/KR20070061464A/ko
Application granted granted Critical
Publication of KR100848323B1 publication Critical patent/KR100848323B1/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
    • 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/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Abstract

본 발명은 모바일 응용 및 정보가전 응용 분야에 임베디드 시스템의 운영체제 커널로 리눅스를 이용할 때, 리눅스 커널의 실시간 응답성을 향상시키기 위하여 각 응용이 요구하는 실시간 성능의 수준으로 임베디드 운영체제 커널의 실시간 성능을 향상시키는 방법에 관한 것이다.
본 발명의 목적 및 기술적 과제를 달성하기 위해, 본 명세서에서는 뮤텍스락(Mutex Lock) 기법, 인터럽트 처리기의 스레드(thread) 기법 및 자발적 선점 기법을 개시한다.

Description

임베디드 운영체제 커널의 실시간 성능을 향상시키는 방법{Method for enhancing real time response in embedded OS kernel}
도 1은 리눅스 커널의 실시간 성능 측정 구간을 제시한 도면이다.
도 2는 뮤텍스-락 기법의 구현 과정을 제시한 도면이다.
도 3은 자발적 선점 기법의 구현 과정을 제시한 도면이다.
도 4는 인터럽트 처리기의 스레드화 기법의 구현 과정을 제시한 도면이다.
본 발명은 모바일 응용 및 정보가전 응용 분야에 임베디드 시스템의 운영체제 커널로 리눅스(Linux)를 이용할 때, 각 응용이 요구하는 실시간 성능의 수준으로 임베디드 운영체제 커널의 실시간 성능을 향상시키는 방법에 관한 것이다.
최근에 쏟아져 나오고 있는 모바일 응용 및 정보가전 응용을 보면, 모바일 응용에는 사용자가 게임을 하며 콜 처리까지 하기 위해 사용되는 임베디드 운영체제의 즉각적인 응답성이 요구되고, 정보가전 응용에는 이전의 응용 제품들과 달리 컨버전스(convergence)화되어 제품들끼리 서로 통신을 하고 협력하는 작업을 하는 것이 주된 경향이다.
근래 각광 받는 홈 서버의 경우를 보더라도 홈 서버에서 인터넷 쇼핑, 사용자 요구 비디오 스트리밍(VOD), 집 외부에서의 인터넷 접속으로 홈 서버를 통한 집 내부의 정보가전 제어 등의 많은 응용이 함께 구동되며, 실시간성을 요구하는 응용들이 점차 늘어나고 있는 추세이다. 또한, 이러한 실시간성의 요구와 더불어 이러한 정보가전 응용 제품들의 가격을 낮출 수 있는데 기여할 수 있는 리눅스 제품군들도 많은 성장세를 보이고 있다.
기존 MS나 전용 실시간 운영체제를 이용한 모바일 응용 및 정보가전 응용 제품의 출시는 기존 제품을 사용하여 안정성은 누릴 수 있으나, 높은 비용으로 인한 부담을 가질 수밖에 없다. 이의 대안으로 리눅스를 운영체제로 이용하는 것인데, 리눅스를 이용할 경우에는 이미 오픈된 여러 솔루션을 사용하기 때문에 비용적인 강점을 갖는다.
하지만, 리눅스의 태생적 한계로 인해 최근 요구되는 실시간 성능에 문제점을 보이고 있는데, 리눅스의 태생적 한계란 리눅스가 전통 유닉스 커널과 유사하게 단일체 커널(monolithic kernel)로 구성되어 사용자 모드에서 커널 모드로의 진입 시에는 시스템 내의 이벤트 발생에 즉각적인 반응을 할 수 없기 때문에 실시간 성능이 떨어진다는 점이 그것이다.
본 발명은 임베디드 시스템의 운영체제 커널로 리눅스를 이용하는 경우의 상기한 문제점을 해결하기 위해 창안된 것으로, 본 발명의 목적 및 이루고자하는 기술적 과제는 리눅스 운영체제 커널의 응답성 향상을 위한 임베디드 운영체제 커널 의 실시간 성능을 향상시키는 방법을 제공하는 것에 있다.
본 발명의 기술적 사상을 구체화하고 상기와 같은 목적 및 기술적 과제를 달성하기 위해 본 명세서에서 개시하는 임베디드 운영체제 커널의 실시간 성능을 향상시키는 방법은
(a)소정의 태스크가 이미 선점 중인 리눅스 커널의 특정 잠김 영역에 상기 태스크가 아닌 다른 태스크들이 진입하는 것을 판단하는 단계; 및 (b)상기 다른 태스크들이 진입하는 것으로 판단되는 경우, 상기 다른 태스크들이 다른 잠김 영역을 선점하도록 처리하는 단계를 포함하여 본 발명의 목적 및 기술적 과제를 달성한다.
본 발명의 기술적 사상을 구체화하고 상기와 같은 목적 및 기술적 과제를 달성하기 위해 본 명세서에서 개시하는 임베디드 운영체제 커널의 실시간 성능을 향상시키는 또 다른 방법은
(a)리눅스 커널의 특정 잠김 영역이 소정의 태스크에 의해 선점된 상태에서, 다른 태스크가 상기 특정 잠김 영역내의 일부 영역을 선점할 수 있도록 선점 코드를 상기 다른 태스크에 삽입하는 단계; 및 (b)상기 일부 영역에서 상기 삽입된 선점 코드를 즉각적으로 호출하여 상기 다른 태스크가 상기 일부 영역을 바로 선점하는 단계를 포함하여 하여 본 발명의 목적 및 기술적 과제를 달성한다.
본 발명의 기술적 사상을 구체화하고 상기와 같은 목적 및 기술적 과제를 달성하기 위해 본 명세서에서 개시하는 임베디드 운영체제 커널의 실시간 성능을 향상시키는 또 다른 방법은
(a)인터럽트를 발생시키는 하드웨어를 검색하여 검색된 하드웨어에 대해 인터럽트 처리의 우선순위를 부여하는 단계; (b)상기 우선순위가 부여된 인터럽트 처리의 처리기를 스레드화 하는 단계; 및 (c)상기 스레드화된 처리기에 의한 인터럽트가 발생할 때마다 상기 우선순위에 따라 스레드를 구동시키는 단계를 포함하여 하여 본 발명의 목적 및 기술적 과제를 달성한다.
이하, 본 발명의 기술적 사상을 명확화하기 위한 발명의 구성을 본 발명의 실시예에 근거하여 첨부 도면을 참조하여 상세히 설명하되, 도면의 구성요소들에 참조번호를 부여함에 있어서 동일 구성요소에 대해서는 비록 다른 도면상에 있더라도 동일 참조번호를 부여하였으며 당해 도면에 대한 설명시 필요한 경우 다른 도면의 구성요소를 인용할 수 있음을 미리 밝혀둔다.
본 발명은 모바일 응용 및 정보가전 응용 제품 등 임베디드 시스템의 실시간 성능의 향상을 지원하는데, 이를 위해 본 발명에서는 실시간성의 기준으로 삼을 수 있는 지표의 하나인 태스크(task)의 선점 지연시간을 보장하도록 즉, 태스크의 선점 지연시간의 최대치를 보장한다. 기존의 리눅스 커널은 이 보장 시간이 수십 밀리 초까지 걸리는 경우가 있어 임베디드 시스템에 탑재될 때 실시간 성능 측면에서 많은 문제점을 노출했다.
여기서, 태스크의 선점 지연시간은, 도 1에 제시된 바와 같이, 인터럽트 처리 지연시간, 스케줄러 도달 지연시간과 스케줄러 처리 지연시간을 합한 것으로 실질적인 의미는 갑작스럽게 시스템에서 구동시켜야할 긴급한 태스크가 발생되었을 경우에 구동되던 태스크의 CPU 자원을 선점하여 긴급한 태스크에게 서비스를 해 줄 때까지의 걸리는 시간이다.
인터럽트 도달 지연시간은 하드웨어적으로 인터럽트가 발생하여 임베디드 운영체제 커널까지의 도달 지연시간인데, 이 시간은 하드웨어적으로 조금씩 다르며 매우 작기 때문에 무시한다. 그 다음으로 인터럽트 처리 지연시간은 통상적으로 인터럽트 핸들러의 처리 지연시간으로 알려져 있는 것인데, 각 인터럽트마다 그리고 각 인터럽트의 처리 방법에 따라 달라지는 시간이다.
스케줄러 도달 지연시간은, 인터럽트가 발생하여 인터럽트 핸들러의 처리 이후에 바로 태스크에게 서비스가 되는 것이 아니라 스케줄러를 거쳐 긴급한 태스크에게 CPU의 자원이 서비스되는데, 이때 스케줄러까지 도달할 때까지의 지연시간이다. 리눅스 커널에서는 이 시간이 많이 소요된다. 스케줄러 처리 지연시간은 스케줄러가 스케줄링을 하는 동안의 소요되는 시간을 의미한다.
따라서 이러한 지연시간을 가급적 짧게 그리고 지연시간의 최대치의 보장이 임베디드 시스템의 운영체제로 리눅스 커널을 사용할 경우의 실시간성을 확보하기 위한 키 포인트라 하겠으며, 이를 위해 본 발명은 뮤텍스-락(Mutex-Lock) 기법, 인터럽트 처리기의 스레드(thread)화 기법, 자발적 선점 기법을 제공한다.
도 2는 뮤텍스락 기법을 설명하기 위한 도면이다.
본 기법에 대한 이해의 편의를 위해 기존 리눅스 커널의 동작 방식을 우선 설명한다.
리눅스 커널에서는 선점형 커널을 구성하기 위해 SMP(Symmetric Multi Processor)에서 사용하던 스핀-락(spin-lock) 방식을 이용하고 있는데, 스핀-락 방 식에 의하면, 선점형 커널의 커널 코드 영역의 보호해야 할 최소한의 데이터 영역(선점 불가능 구간, 잠김 영역)이 보호된다.
그러나 스핀-락 방식에 의하면, 하나의 태스크 TA가 특정 잠김 영역(locked region)을 선점하고 있는 경우, 다른 태스크 TB 또는 TC는 TA가 선점하고 있는 특정 잠김 영역에 접근하려 하는 것이 아님에도 불구하고 특정 잠김 영역을 선점한 태스크 TA에 의해서 특정 잠김 영역 이외의 모든 잠김 영역도 선점되기 때문에, 태스크 TB와 TC는 상기 특정 잠김 영역이 아닌 기타 다른 잠김 영역도 접근할 수가 없다.
따라서 본 발명은 이러한 현상으로 인한 리눅스 커널의 응답성 저하를 막기 위해 뮤텍스-락 기법을 제안한다.
본 발명이 제안하는 뮤텍스-락 기법이란 태스크 TA가 특정 잠김 영역을 선점하고 있더라도 태스크 TB는 그 특정 잠김 영역이 아닌 다른 잠김 영역에 접근하도록 하여 작업을 수행하게 할 수 있는 기법을 말한다.
잠김 영역은 원래 커널 내의 자료 구조(커널 내에 존재하는 각종 변수)의 일관성 내지는 무결성(consistency)을 훼손하지 않기 위해 지정된다. 따라서 잠김 영역 내에 특정한 태스크 TA가 진입하게 되면 TA가 그 잠김 영역을 빠져나올 때까지 TA가 아닌 다른 태스크들은 그 잠김 영역을 선점할 수 없게 된다. 이때 선점할 수 없는 부분은 CPU이며, 이는 즉, TA가 아닌 다른 태스크들은 CPU를 사용할 수 없다는 의미이다. 그러므로 실시간 시스템에 있어서의 즉각적인 응답성이 저하될 수밖에 없다.
따라서 본 발명은 이를 개선하기 위해 TA가 이미 선점 중인 특정 잠김 영역에 TA가 아닌 다른 태스크 TB가 진입하더라도 TB가 상기 특정 잠김 영역이 아닌 다른 잠김 영역을 선점할 수 있도록 하여 리눅스 커널의 응답성을 높이도록 한다.
이를 위해 태스크 TA가 선점 중인 상기 특정 잠김 영역이 TB로 선점되는 경우가 발생할 경우에, 상기 특정 잠김 영역 내에 특정한 자료 구조를 두어 그 특정 잠금 영역을 선점하고 있는 태스크 TA의 자료 구조의 일관성 내지는 무결성을 훼손하지 않도록 다른 태스크들이 그 특정 잠김 영역에 재진입할 수 없도록 한다.
본 발명이 제안하는 뮤텍스-락 기법은 또한 만일 태스크 TA가 선점하고 있는 상기 특정 잠김 영역에 다른 태스크 TC가 접근하려고 할 때는 이전 스핀-락 방식과 마찬가지로 다른 태스크 TC의 접근을 허락지 않고 블록킹(blocking) 시키는 것도 포함한다.
즉, 태스크 TA가 특정 잠김 영역에 먼저 접근하여 수행되고 있을 때, 다른 태스크인 TC가 TA가 수행되고 있는 상기 특정 잠김 영역에 도달한 경우 TA가 이미 잠금 영역안의 코드들을 수행하고 있으므로 늦게 도달한 TC는 블록킹이 됨을 의미하는 것이고, 이는 TA가 상기 특정 잠김 영역을 빠져나간 다음에 TC가 수행될 수 있음을 의미한다.
특정 잠김 영역안에 먼저 도달한 태스크가 있는 경우, 그 특정 잠김 영역에서 먼저 도달한 태스크가 아닌 다른 태스크가 수행되기 위해서는 인터럽트의 발생에 의해서 가능하다.
본 발명에 의한 뮤텍스-락 기법을 구현하기 위해서는 각 잠김 영역마다 그 영역을 소유하고 있는 태스크를 구분하는 변수가 필요하고, 각 잠김 영역의 진입을 대기하는 태스크들을 정렬하는 대기자 리스트(waiter list)가 필요하다. 각 잠김 영역에 대해 진입을 대기하는 태스크들은 이후 해당 잠김 영역으로 진입할 경우 처리 우선순위대로 진입 가능하도록 정렬되어 대기자 리스트를 구성한다. 대기자 리스트는 만일 신규 태스크가 해당 잠김 영역에 진입을 시도하는 경우 신규 태스크의 처리 우선순위에 따라 재정렬된다.
이러한 방식으로 각 잠김 영역에 대해 대기자 리스트(자료구조)를 구성하면, 각 잠김 영역을 소유하고 있는 태스크가 락 구간 속에서 다른 태스크에 의한 선점이 일어나도 해당 잠김 영역의 소유 태스크가 있는지의 여부를 상기 변수에 의해 알 수 있으므로, 아직 락 구간의 수행을 마치지 못한 잠김 영역안으로 신규 태스크가 진입하는 것을 막을 수 있다.
이때, 신규 태스크는 대기자 리스트에 대기자로 새로이 등록되고 소정 시간이 경과 후 해당 잠김 영역을 소유하고 있는 태스크가 해당 잠김 영역의 소유 태스크인지를 상기 변수를 통해 알 수 있다.
도 3은 자발적 선점 기법을 설명하기 위한 도면이다.
스케줄링은 실시간 응답성 향상의 중요한 부분으로, 어떤 이벤트에 대해 즉각적 응답을 위해서는 최대한 스케줄러가 빨리 호출되어야 하며 또한 스케줄러도 최소한의 컴퓨팅으로 우선순위가 높은 태스크에게 서비스를 해줄 수 있어야만 한다. 리눅스 커널의 스케줄러는 주기적으로 타이머 인터럽트에 의해 호출되고, 비주기적인 인터럽트에 의해 호출되기도 한다. 리눅스 커널의 버전이 2.6이고 x86 기반 이면 1ms의 주기로 스케줄러가 호출될 수 있다.
그러나 호출 주기 시간이 상당히 긴 시간인 경우, 호출 주기 시간이내라도 필요한 스케줄러의 호출이 요구된다면 호출이 가급적 빨리 일어나게 하여 응답성을 향상시킬 수 있다. 따라서 필요한 경우에 스케줄러를 호출 주기 시간보다 빨리 호출하여 응답성을 높일 수 있도록 본 발명에 의한 자발적 선점 기법을 사용하여 응답성을 높이도록 한다.
리눅스 커널은 커널 모드에서는 선점이 되지 않는 비선점형 커널 코드를 가지고 있는데, 이는 시스템의 응답성을 저하할 소지가 많이 있다. 따라서 본 발명에 의한 자발적 선점 기법은 커널의 특정 잠김 영역이 태스크 TA에 의해 선점되고 있어도, 다른 태스크 TB가 TA의 선점 영역내의 일부 영역(안전한 포인트)에서 선점되어도 되는지를 체크하여 선점되어야할 필요성이 있다면 선점해주는 기법이다.
이 경우의 선점은 선점 코드를 다른 태스크 TB에 삽입하여 이루어진다. 즉, 리눅스 커널내의 스케줄러가 호출되어 스케줄링될 필요가 있는 코드가 호출될 필요가 있는 경우에는, 해당 안전 포인트에서 즉각적으로 상기 선점 코드를 호출하여 TB가 바로 선점되게 된다. 이때 선점 코드란 리눅스 커널에서 스케줄링되어 선점되는 함수인 schedule() 코드를 지칭한다.
도 4는 인터럽트 처리기의 스레드화 기법에 관해 설명하기 위한 도면이다.
기존 모바일 응용 및 정보가전 응용에 적용하던 리눅스의 인터럽트 처리 구조는 상반부와 하반부로 나뉘어져 있다. 그 동작 메커니즘은 인터럽트가 발생될 경우 상반부에서 최소한의 작업만을 하고 가급적 짧은 시간내에 하반부에 제어권을 넘겨서 응답성을 높인다. 그런 후, 나머지 처리해야할 부분은 시스템의 남는 시간에 하반부 처리를 하도록 한다.
그러나 실시간 성능을 지원하기 위해 리눅스의 상반부 및 하반부 처리부는 우선순위 처리를 지원하지 않는 문제점을 안고 있다. 어떤 인터럽트를 처리하는 동안 발생하는 다른 인터럽트 간에는 우선순위 개념이 없어서 더 높은 우선순위를 가지는 인터럽트에 대한 우선적 처리 구조에 문제가 생기고, 이는 선점 지연시간이 늘어남을 의미한다.
따라서 본 발명은 인터럽트 구조에서 인터럽트 처리기가 우선순위를 가질 수 있도록 상하반부 인터럽트 처리기를 모두 스레드(thread)화 하여 우선순위에 따른 인터럽트 처리가 가능하게 한다.
인터럽트는 보통 하드웨어의 입출력이나 특별한 이벤트에 의해서 반응하게 되는데 그 예로 키보드, 마우스나 화면 입출력 및 네트워크 패킷 송수신 이벤트 등을 들 수 있다. 보통 x86 컴퓨터 구조에서는 16개까지의 인터럽트가 처리 가능한데, 그 중 0번은 타이머로 시스템의 시간을 알려주고 이를 기반으로 컴퓨터의 모든 기능의 동작 타이밍을 제공하는 중요한 역할을 하며 그 이후로는 번호가 바뀔 수 있다.
리눅스 커널의 경우, 각각의 인터럽트 번호(Interrupt Request Number, IRQ #)마다 인터럽트 처리기(Interrupt Service Routine, ISR)를 두어 인터럽트를 처리하고 있다. 리눅스 커널에서의 인터럽트 처리는 이러한 처리 방식이 가장 일반적이지만, 앞에서 설명한 바와 같이 인터럽트 사이에 우선순위가 부여된 경우에는 이러 한 처리 방식에 문제가 발생한다.
따라서 본 발명은 특정 인터럽트를 처리하고 있다가도 처리 우선순위가 높은 태스크의 인터럽트를 처리하기 위해서 상기 각 인터럽트 처리기를 스레드(thread)화 시킨다. 스레드화가 된 각 스레드들은 스케줄러에 의해 제어가 되므로 각 인터럽트에 부여된 인터럽트 처리에 대한 우선순위의 반영이 가능해져서 응답성의 향상을 꾀할 수 있다.
스레드화의 구체적 절차는 우선 시스템이 부팅되면서 해당 하드웨어를 검색하고, 검색된 하드웨어에 대해 인터럽트 처리 번호(즉, 처리 우선순위)를 부여한다. 그리고 각 인터럽트 처리기가 기존에 존재하는 것을 이용하여 처리기만 스레드로 만들어서 구동시킨다. 그 이후로는 이벤트에 의해서 인터럽트가 발생할 때마다 상기 우선순위에 따른 해당 인터럽트의 스레드가 구동되게 된다.
인터럽트 처리기의 스레드화는 구체적으로 리눅스 커널에서 인터럽트를 구현하는 do_IRQ 함수를 스레드화하여 구현한다. do_IRQ는 리눅스 커널에서 인터럽트 컨텍스트(context)가 시작되는 부분이며, 리눅스 커널이 처음 시작될 때 인터럽트를 인식하고 인식되는 만큼의 인터럽트에 대해 스레드를 생성한다.
이때 스레드는 한번만 생성하여 시스템이 끝날때까지 이벤트에 대해서 해당 인터럽트만 처리할 수 있도록 한다. 그리고 do_IRQ를 데몬(daemon)으로 항시 돌아갈 수 있는 커널 스레드로 만든다. 그런 다음 원래 리눅스 커널의 메커니즘에 따라 커널 스레드로 자동적으로 컨트롤이 오게 되면, 커널 스레드에서 상반부(top half)에 해당하는 부분을 do_hardirq로 하반부(bottom half)에 해당하는 부분을 do_softirq로 나누어 처리한다. 여기서 do_hardirq는 즉각적인 하드웨어 인터럽트로 타이머, 마우스, 네트워크, 사운드카드, 비디오 입출력 등의 전반부 처리를 하고 do_softirq 는 나머지 하반부 처리를 하게 된다.
본 방법발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예를 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다.
그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 균등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
본 발명에 의하면 소정의 태스크가 이미 특정 태스크가 선점 중인 리눅스 커널의 잠김 영역이 아닌 다른 잠김 영역을 선점할 수 있도록 하여 리눅스 커널의 실시간 처리에 대한 응답성을 향상시킬 수 있다.
아울러 소정의 태스크가 특정 태스크가 선점 중인 리눅스 커널의 잠김 영역의 일부 영역을 선점할 수 있도록 하여 리눅스 커널의 실시간 처리에 대한 응답성을 향상시킬 수 있다.
그리고 인터럽트 처리기를 스레드화하고 그 스레드에 우선순위를 부여하여 인터럽트 처리에 대한 우선순위의 반영이 가능해져서 리눅스 커널의 실시간 처리에 대한 응답성의 향상을 꾀할 수 있다.

Claims (5)

  1. (a)소정의 테스크가 이미 선점 중인 리눅스 커널의 특정 잠김 영역에 상기 태스크가 아닌 다른 태스크들이 진입하는 것을 판단하는 단계; 및
    (b)상기 다른 태스크들이 진입하는 것으로 판단되는 경우, 상기 다른 태스크들이 다른 잠김 영역을 선점하도록 처리하는 단계를 포함하여, 상기 리눅스 커널의 실시간 처리에 대한 응답성을 향상시키는 것을 특징으로 하는 임베디드 운영체제 커널의 실시간 성능을 향상시키는 방법.
  2. (a)리눅스 커널의 특정 잠김 영역이 소정의 태스크에 의해 선점된 상태에서, 다른 태스크가 상기 특정 잠김 영역내의 일부 영역을 선점할 수 있도록 선점 코드를 상기 다른 태스크에 삽입하는 단계; 및
    (b)상기 일부 영역에서 상기 삽입된 선점 코드를 즉각적으로 호출하여 상기 다른 태스크가 상기 일부 영역을 바로 선점하는 단계를 포함하여, 상기 리눅스 커널의 실시간 처리에 대한 응답성을 향상시키는 것을 특징으로 하는 임베디드 운영체제 커널의 실시간 성능을 향상시키는 방법.
  3. (a)인터럽트를 발생시키는 하드웨어를 검색하여 검색된 하드웨어에 대해 인터럽트 처리의 우선순위를 부여하는 단계;
    (b)상기 우선순위가 부여된 인터럽트 처리의 처리기를 스레드화 하는 단계; 및
    (c)상기 인터럽트가 발생할 때마다 상기 우선순위에 따라 상기 스레드화된 처리기를 구동시키는 단계를 포함하여, 리눅스 커널의 실시간 처리에 대한 응답성을 향상시키는 것을 특징으로 하는 임베디드 운영체제 커널의 실시간 성능을 향상시키는 방법.
  4. 제 1 항에 있어서, 상기 (b)단계는
    (b1)상기 리눅스 커널의 잠김 영역마다 진입을 대기하는 상기 다른 태스크들이 해당 잠김 영역으로 진입할 경우, 상기 다른 태스크들을 처리 우선순위대로 정렬하는 단계; 및
    (b2)상기 해당 잠김 영역을 소유하는 태스크가 있거나 상기 각 잠김 영역을 이미 선점하고 있는 태스크가 있는 경우에는 상기 정렬된 다른 태스크들의 상기 해당 잠김 영역의 진입을 차단하는 단계;
    (b3)상기 우선순위를 참조하여 상기 다른 잠김 영역에 진입시키는 단계를 포함하여 이루어지는 것을 특징으로 하는 임베디드 운영체제 커널의 실시간 성능을 향상시키는 방법.
  5. 제 1 항 내지 제 4 항 중 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1020060125136A 2005-12-08 2006-12-08 임베디드 운영체제 커널의 실시간 성능을 향상시키는 방법 KR100848323B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20050120024 2005-12-08
KR1020050120024 2005-12-08

Publications (2)

Publication Number Publication Date
KR20070061464A KR20070061464A (ko) 2007-06-13
KR100848323B1 true KR100848323B1 (ko) 2008-07-24

Family

ID=38357302

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060125136A KR100848323B1 (ko) 2005-12-08 2006-12-08 임베디드 운영체제 커널의 실시간 성능을 향상시키는 방법

Country Status (1)

Country Link
KR (1) KR100848323B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101331957B1 (ko) * 2012-01-11 2013-11-21 엘아이지넥스원 주식회사 범용 운영체제의 실시간성 쓰레드 처리를 위한 커널 구성 방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080064608A (ko) * 2007-01-05 2008-07-09 삼성전자주식회사 SPI(Simple PriorityInheritance) 방식에 따른 멀티태스킹 방법 및임베디드 시스템
KR101407725B1 (ko) * 2012-10-16 2014-06-13 충남대학교산학협력단 실시간 통신이 가능한 점검장치
WO2023121104A1 (ko) * 2021-12-20 2023-06-29 주식회사 알티스트 리눅스 커널의 인터럽트 처리 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950020162A (ko) * 1993-12-20 1995-07-24 양승택 Unix 운영체제에서의 임계영역 지원방법
US5469571A (en) * 1991-07-15 1995-11-21 Lynx Real-Time Systems, Inc. Operating system architecture using multiple priority light weight kernel task based interrupt handling
US5966543A (en) * 1997-06-26 1999-10-12 International Business Machines Corporation Method of using collaborative spinlocks to provide exclusive access to a resource in a multiprocessor computer system
US6085215A (en) * 1993-03-26 2000-07-04 Cabletron Systems, Inc. Scheduling mechanism using predetermined limited execution time processing threads in a communication network
KR20010087868A (ko) * 2000-03-09 2001-09-26 김광수 리눅스 운영 체제 부팅 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5469571A (en) * 1991-07-15 1995-11-21 Lynx Real-Time Systems, Inc. Operating system architecture using multiple priority light weight kernel task based interrupt handling
US6085215A (en) * 1993-03-26 2000-07-04 Cabletron Systems, Inc. Scheduling mechanism using predetermined limited execution time processing threads in a communication network
KR950020162A (ko) * 1993-12-20 1995-07-24 양승택 Unix 운영체제에서의 임계영역 지원방법
US5966543A (en) * 1997-06-26 1999-10-12 International Business Machines Corporation Method of using collaborative spinlocks to provide exclusive access to a resource in a multiprocessor computer system
KR20010087868A (ko) * 2000-03-09 2001-09-26 김광수 리눅스 운영 체제 부팅 방법

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Embedded Linux, http://www.lynuxworks.com/corporate/news/2004/ linux-kernel-2.6.php, 2004.08.
정보과학회논문지(A) 제26권 제9호, "실시간 시스템을 위한 선점형 사용자 레벨 쓰레드의 설계", 서양민 등 공저, 1999. 9
한국인터넷정보학회 2002 추계학술발표대회 논문집 제3권 제2호, "임베디드 네트워크 디바이스를 위한 향산된 실시간 리눅스 커널에 관한 연구", 최창규 등 공저, 2002. 11

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101331957B1 (ko) * 2012-01-11 2013-11-21 엘아이지넥스원 주식회사 범용 운영체제의 실시간성 쓰레드 처리를 위한 커널 구성 방법

Also Published As

Publication number Publication date
KR20070061464A (ko) 2007-06-13

Similar Documents

Publication Publication Date Title
US5469571A (en) Operating system architecture using multiple priority light weight kernel task based interrupt handling
US10896065B2 (en) Efficient critical thread scheduling for non privileged thread requests
US5630128A (en) Controlled scheduling of program threads in a multitasking operating system
US5247675A (en) Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system
US9448864B2 (en) Method and apparatus for processing message between processors
US8615765B2 (en) Dividing a computer job into micro-jobs
KR100983061B1 (ko) 서로 다른 크리티컬리티의 인터럽트 요청 실행을제어하는데 적합한 인터럽트 제어 함수
JP2009541848A (ja) コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置
KR20040068600A (ko) 운영 시스템 기능 실행 방법 및 시스템, 전자 기기
KR100848323B1 (ko) 임베디드 운영체제 커널의 실시간 성능을 향상시키는 방법
US6148325A (en) Method and system for protecting shared code and data in a multitasking operating system
WO2023241307A1 (zh) 管理线程的方法及装置
US8117624B2 (en) Method and apparatus for performing real-time commands in a non real-time operating system environment
KR100651722B1 (ko) 실시간 성능 지원을 위한 리눅스 커널의 구성 방법 및실시간 성능 테스트 방법
US20060277547A1 (en) Task management system
JP5299869B2 (ja) コンピュータマイクロジョブ
Garcia-Martinez et al. A comprehensive approach in performance evaluation for modern real-time operating systems
Bunt Scheduling techniques for operating systems
Mejia-Alvarez et al. Interrupt handling in classic operating systems
Lee et al. Interrupt handler migration and direct interrupt scheduling for rapid scheduling of interrupt-driven tasks
JP3169316B2 (ja) タスクスケジューリング方法
JPH06324888A (ja) スケジューリングシステム
KR20220114653A (ko) 프로세서 자원 할당 방법, 컴퓨팅 유닛 및 비디오 감시 장치
Deshmukh et al. Comparison of Open Source RTOSs Using Various Performance Parameters
Lister et al. The System Nucleus

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee