첨단 군사 체계를 위한 측정 장치의 필요성에 따라 낮은 지연을 추구하는 실시간 특성인 시간 결정성과 수행의 정확성은 매우 중요해 졌으며, 이러한 이유로 리눅스와 같은 범용 운영체제에 실시간 기능을 추가하는 시장 요구가 증대하게 되었다. 따라서 RTLinux와 RTAI가 리눅스기반의 이중 커널로 개발되었다. RT-Linux의 경우 경성실시간성을 제공하지만 어셈블러를 사용해야함으로 개발자가 다루기 어려운 단점이 존재한다. 또한 RTAI의 경우 연성 실시간성만을 제공하는 단점이 있다. 이러한 단점을 해결하기 위해 RTiK-Linux를 개발하였다. 본 논문에서는 리눅스에 경성 실시간 특징을 가지며 새로운 이중 커널 구조인 실시간 이식 커널인 RTiK-Linux를 제안한다. 먼저 관련 연구에 대한 소개를 하고, 타이머 설정 값과 거의 일치하는 분해능을 보장하는 설계 방법론을 기술한다. 그리고 경험적 측정으로 얻어진 결과를 보이고, 제안하는 RTiK-Linux를 검증 및 평가하기 위하여 그 결과를 분석한다.
첨단 군사 체계를 위한 측정 장치의 필요성에 따라 낮은 지연을 추구하는 실시간 특성인 시간 결정성과 수행의 정확성은 매우 중요해 졌으며, 이러한 이유로 리눅스와 같은 범용 운영체제에 실시간 기능을 추가하는 시장 요구가 증대하게 되었다. 따라서 RTLinux와 RTAI가 리눅스기반의 이중 커널로 개발되었다. RT-Linux의 경우 경성 실시간성을 제공하지만 어셈블러를 사용해야함으로 개발자가 다루기 어려운 단점이 존재한다. 또한 RTAI의 경우 연성 실시간성만을 제공하는 단점이 있다. 이러한 단점을 해결하기 위해 RTiK-Linux를 개발하였다. 본 논문에서는 리눅스에 경성 실시간 특징을 가지며 새로운 이중 커널 구조인 실시간 이식 커널인 RTiK-Linux를 제안한다. 먼저 관련 연구에 대한 소개를 하고, 타이머 설정 값과 거의 일치하는 분해능을 보장하는 설계 방법론을 기술한다. 그리고 경험적 측정으로 얻어진 결과를 보이고, 제안하는 RTiK-Linux를 검증 및 평가하기 위하여 그 결과를 분석한다.
According to the necessity of measuring equipments for advanced military systems, real-time characteristics such as time determinism and execution accuracy pursuing low-latencies have become very important. With this reason, the market demand for real-time features in the general purpose operating s...
According to the necessity of measuring equipments for advanced military systems, real-time characteristics such as time determinism and execution accuracy pursuing low-latencies have become very important. With this reason, the market demand for real-time features in the general purpose operating system such as Linux has been enlarging. To meet these requirements, RTLinux and RTAI has been developed as dual-kernels based on Linux. However, developers should use assembler languages to facilitate real-time in RT-Linux, it is very difficult to deal with it. RTAI has disadvantage that it only provides soft real-time. To solve these problems, RTiK-Linux was developed. In this paper, we propose a new dual-kernel with hard real-time capabilities in Linux, called RTiK-Linux(Real-Time implemented Kernel for Linux). We first introduce related researches and then describe the design methodologies to guarantee the resolution which almost accords with the timer settings. Finally, we present the results of experimental measurements and analyze them in order to validate and evaluate the proposed RTiK-Linux.
According to the necessity of measuring equipments for advanced military systems, real-time characteristics such as time determinism and execution accuracy pursuing low-latencies have become very important. With this reason, the market demand for real-time features in the general purpose operating system such as Linux has been enlarging. To meet these requirements, RTLinux and RTAI has been developed as dual-kernels based on Linux. However, developers should use assembler languages to facilitate real-time in RT-Linux, it is very difficult to deal with it. RTAI has disadvantage that it only provides soft real-time. To solve these problems, RTiK-Linux was developed. In this paper, we propose a new dual-kernel with hard real-time capabilities in Linux, called RTiK-Linux(Real-Time implemented Kernel for Linux). We first introduce related researches and then describe the design methodologies to guarantee the resolution which almost accords with the timer settings. Finally, we present the results of experimental measurements and analyze them in order to validate and evaluate the proposed RTiK-Linux.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 시간 제약에 민감한 응용에 적합하고, 또한 데이터 측정의 결과를 표시하기 위한 기존 운영체제의 다양한 기능을 활용하도록 윈도우 기반의 경성 실시간 커널인 RTiK를 리눅스용으로 개발이 가능하도록 리눅스 드라이브 모듈로 설계하였다.
기존의 리눅스에 실시간성을 부여한 이중 커널들은 타이머의 높은 분해능을 기반으로 인터럽트 지연 시간 및 스케줄링 지연 시간을 줄여 시간 제약 실시간 태스크의 예측성과 시간 결정성을 확보하는데 목적을 두었다. 본 연구에서 제안하는 RTiK-Linux 또한 이들 리눅스 기반의 실시간 태스크 지원하는 관점에서 유사한 기능을 지원하면서, 리눅스 동적 모듈 형태로 개발되어 용이한 이식성과 높은 분해능을 지원한다.
본 논문은 리눅스 커널에 드라이브 모듈로 동적으로 탑재되는 실시간 커널인 RTiK-Linux의 설계 및 검증에 관한 것으로 제 2장에서 관련 연구에 대하여 소개한다. 제 3장에서는 RTiK-Linux의 설계 방법론을 기술하고, 제 4장은 실험 및 환경을 소개하고 제 5장에서 결론을 맺는다.
본 논문에서는 범용 운영체제에 이중 커널을 통한 실시간성을 부여하는 RTiK-Linux 이식 커널의 설계 방법론을 제안하고, 이를 통해 실험 측정 결과를 분석하여 RTiK-Linux의 분해능을 검증하였다.
제안 방법
그 커널은 두 가지 스케줄링 정책인 SCHED_FIFO와 SCHED_RR를 제공하고 그리고 SCHED_NORMAL에서 “nice”를 사용하여 우선순위 조정할 수 있는 기능으로서 실시간성을 제공한다.
따라서 리눅스 커널을 완전한 선점성을 부여하기 위하여 기존 리눅스에 PREEMPT_RT 패치를 통하여 경성 실시간성을 지원한다[8][11]. 이러한 패치는 높은 분해능을 가진 범용 클럭 이벤트 계층으로 완전한 선점을 가능하게 하여 리눅스 커널이 경성 실시간을 갖도록 하였다. PREEMPT_RT 패치는 필수적인비 선점과 태스크 스케줄러 등 극히 일부분을 제외한 커널의 대부분에 적용되었다.
그러나 현재는 커널 문맥으로 IRQ를 등록 하는 것도 가능하다. 또한 기존의 리눅스 타이머 API가 높은 분해능을 가진 커널 타이머를 위하여 별개의 구조로 변환되어 높은 분해능으로 사용자 공간에서 POSIX 타이머를 사용 가능하게 하였다. PREEMPT_RT 패치는 인터럽트 지연을 개선하였고, 완벽한 선점 가능 커널을 제공하게 되었다.
하지만 리눅스의 경우 Local APIC Timer를 사용하고 있기 때문에, RTiK-Linux가 이를 이용하여 실시간 주기 분해능을 가지기 위해서는 기존에 수행되던 기능들과 상호 충돌이 없도록 구현해야 한다. 이를 위해서 리눅스 시스템 초기화 시 RTiK-Linux를 위한 인터럽트 핸들러를 IDT(Interrupt Descriptor Table)에 등록시켜 RTiK-Linux의 핸들러를 수행하도록 하였다. 즉, RTiK-Linux 모듈이 등록될 때 기존의 리눅스에서 수행되던 리눅스의 Local APIC Timer 핸들러를 대신해 RTiK-Linux에서 등록 시킨 Local APIC Timer 핸들러를 수행하게 된다.
본 논문에서는 0.1ms 주기로 타이머 인터럽트가 발생하도록 설정하였다. 기존의 리눅스에서 사용하던 벡터는 0xef이지만 RTiK-Linux의 모듈의 등록을 통해 인터럽트 벡터가 0x70으로 바꿔지게 된다.
리눅스의 다양한 기능성을 활용할 목적으로 이중 커널 형태로 설계된 RTiK-Linux 확장 커널의 동작 과정을 [그림 6]을 통하여 살펴본다. 먼저 RTiK-Linux 모듈이 리눅스 커널에 삽입되고, 삽입과 동시에 필요한 초기화를 수행한다.
9를 올려 실험하였다. 본 연구에서 제안하는 RTiK-Linux의 타이머 분해능에 대한 실효성을 검증하기 위하여 두 가지 방법으로 실험 하였다. 한 가지는 리눅스에 입출력의 부하를 가한 상태에서 RTiK-Linux의 주기를 0.
본 연구에서 제안하는 RTiK-Linux의 타이머 분해능에 대한 실효성을 검증하기 위하여 두 가지 방법으로 실험 하였다. 한 가지는 리눅스에 입출력의 부하를 가한 상태에서 RTiK-Linux의 주기를 0.1ms로 설정한 뒤 그 결과를 통해 분해능을 측정하였고, 다른 실험은 RTiK-Linux를 RTLinux 및 RTAI에 동일한 환경에서 구축하여 각각의 분해능을 상호 비교를 하는 방법으로 실험하였다.
실험 데이터를 얻기 위해서 이중 커널의 공유 메모리를 이용하였다. 타이머 인터럽트의 발생 및 인터럽트 지연 시간을 고려한 Local APIC Timer의 발생 간격을 공유메모리에 기록하면, 리눅스 모니터링 응용 프로세스에서 수집하여 그 결과를 분석하도록 하였다.
실험 데이터를 얻기 위해서 이중 커널의 공유 메모리를 이용하였다. 타이머 인터럽트의 발생 및 인터럽트 지연 시간을 고려한 Local APIC Timer의 발생 간격을 공유메모리에 기록하면, 리눅스 모니터링 응용 프로세스에서 수집하여 그 결과를 분석하도록 하였다. 실험에서 설정한 부하의 설정은, 임의의 장치에 읽기/쓰기를 수행하는 장치 모듈을 리눅스 커널에 0, 1, 5, 10개를 적재하여 위와 동일한 실험 방법으로 측정하였다.
타이머 인터럽트의 발생 및 인터럽트 지연 시간을 고려한 Local APIC Timer의 발생 간격을 공유메모리에 기록하면, 리눅스 모니터링 응용 프로세스에서 수집하여 그 결과를 분석하도록 하였다. 실험에서 설정한 부하의 설정은, 임의의 장치에 읽기/쓰기를 수행하는 장치 모듈을 리눅스 커널에 0, 1, 5, 10개를 적재하여 위와 동일한 실험 방법으로 측정하였다.
다음 실험은 RTiK-Linux와 RTLinux 및 RTAI를 동일한 조건에서 분해능에 대한 실험으로서, 타이머 레지스터에 주기 설정 값을 각각 0.1ms, 1ms 및 10ms로 하여 각각 10,000번씩 실험했을 때의 분해능의 최대값 및 최소값을 측정하였다.
대상 데이터
본 연구의 실험은 인텔 펜티엄4 2.66GHz PC에 Linux-2.6.9를 올려 실험하였다. 본 연구에서 제안하는 RTiK-Linux의 타이머 분해능에 대한 실효성을 검증하기 위하여 두 가지 방법으로 실험 하였다.
성능/효과
그 결과 RTLinux[6]와 RTAI[7] 및 Preemted-RT[8] 등이 Linux상에서 이중 커널 구조로 실시간성을 지원하기 위해 개발되었다. 본 논문에서 제안하는 RTiK-Linux 커널은 원래 윈도우용 실시간 커널인 RTiK를 Linux에 맞게 개발한 것으로서, 참고문헌[2]에서 RTiK은 윈도우에 일정한 부하를 부과하여 테스트한 결과 실시간 주기성이 오차 범위에 속하는 분해능을 입증하였다.
기존의 리눅스에 실시간성을 부여한 이중 커널들은 타이머의 높은 분해능을 기반으로 인터럽트 지연 시간 및 스케줄링 지연 시간을 줄여 시간 제약 실시간 태스크의 예측성과 시간 결정성을 확보하는데 목적을 두었다. 본 연구에서 제안하는 RTiK-Linux 또한 이들 리눅스 기반의 실시간 태스크 지원하는 관점에서 유사한 기능을 지원하면서, 리눅스 동적 모듈 형태로 개발되어 용이한 이식성과 높은 분해능을 지원한다.
상위에 RTiK 커널을 두고, 커널 모드의 실시간 쓰레드를 관리 한다. RTiK는 윈도우 쓰레드의 수행한 결과, 0.1ms~15ms까지의 분해능에서 오차 범위 내에 정확하게 수행됨을 보였다.
기존의 리눅스에서 사용하던 벡터는 0xef이지만 RTiK-Linux의 모듈의 등록을 통해 인터럽트 벡터가 0x70으로 바꿔지게 된다. 그리고 RTiK-Linux를 위해 등록시킨 타이머 인터럽트 핸들러 안에서 기존 리눅스가 가지고 있던 4ms 주기의 타이머인터럽트 핸들러가 호출됨으로써 상호 충돌 방지를 보장하였다.
결과에서 보듯이 리눅스의 일정 부하가 걸리더라도 RTiK-Linux의 실시간성 분해능 오차가 미미하여 크게 영향을 미치지 않음을 알 수 있다.
[표 1]에서 보듯이, 동일한 조건에서 0.1ms, 1ms, 그리고 10ms에 대해서 RTiK-Linux의 경우 최대 각각 약 7%, 0.1%, 0.01%의 오차범위를 가지고, RTLinux의 경우 각각 약 4%, 0.2%, 0.5% 1ms의 오차범위를 가지는 것을 알 수 있다. 이를 통해 RTiK-Linux와 RTLinux는 유사한 분해능을 보이고 있음을 알 수 있다.
그러나 RTAI는 각 주기 설정 값에 대한 분해능의 오차 범위가 주기 설정 값을 크게 벗어나는 것을 확인할 수 있다. 즉, RTAI는 타이머 주기 설정 값이 작을수록 분해능의 오차 범위가 크게 벗어나며, 주기 설정 값이 커질수록 분해능이 설정 값에 근접하는 것을 알 수 있다. 이를 통해 RTAI의 경성 실시간성 지원이 부적합함을 알 수 있다.
이를 통해 RTAI의 경성 실시간성 지원이 부적합함을 알 수 있다. 실험 결과에서 RTiK-Linux는 리눅스의 이중 커널구조로서, RTAI 보다는 실시간성을 위한 분해능이 뛰어남을 알 수 있고, 또한 RTLinux 와 비슷한 분해능을 가지지만, 다양한 범용 운영체제의 이식성이 뛰어나고, 리눅스에서 더욱 쉽게 적용할 수 있다는 장점이 있다.
후속연구
또한 리눅스 커널 패치를 통한 불편한 설치 과정을 요구하는 단점이 있다. 그러나 본 논문에서 제안하는 RTiK-Linux는 RTAI 보다 분해능이 실시간성을 충분히 보장하며, RTLinux보다 더 편리한 이식과정을 제공하는 데 본 연구의 기여도가 있다.
본 연구의 결과물은 특정 군사용 측정 장비의 실시간데이터 수집에 목적을 두었으나, 앞으로 다양한 경성 실시간 기반 환경을 지원하기 위하여 실시간 응용에 적응할 수 있는 확장 기능에 관한 연구가 필요하다.
질의응답
핵심어
질문
논문에서 추출한 답변
실시간 시스템의 정의는 무엇입니까?
실시간 시스템이란 제한된 응답시간이나 오동작을 포함한 결과의 위험성에 관한 명확한 규정을 만족하는 시스템으로 정의되며, 또한 외부의 사건에 의하여 임의의 연산이 시작된 이후 그 연산의 결과가 주어진 연산 시간이나 외부의 특정 기준 시간에 의존하는 시스템으로 정의한다. 실시간 시스템은 시간적 제한 조건을 만족시키지 못한 경우, 실시간 시스템의 사용 특성에 따라 작게는 시스템의 잘못된 동작, 크게는 큰 위험에 직면하는 사건을 유발하게 된다.
리눅스는 무엇입니까?
리눅스는 시분할 라운드 로빈 정책과 우선순위 기반의 공정성과 응답성을 중요시하는 범용 운영체제이다. 태스크 실행 권한은 우선순위 기반 비 선점이며, 시간 정밀도는 250Hz(즉, 4ms) 주기성의 연성 실시간 시스템으로 분류된다.
기존 리눅스에 PREEMPT_RT 패치의 적용은 어떠한 변화를 나타냈는가?
따라서 리눅스 커널을 완전한 선점성을 부여하기 위하여 기존 리눅스에 PREEMPT_RT 패치를 통하여 경성 실시간성을 지원한다[8][11]. 이러한 패치는 높은 분해능을 가진 범용 클럭 이벤트 계층으로 완전한 선점을 가능하게 하여 리눅스 커널이 경성 실시간을 갖도록 하였다. PREEMPT_RT 패치는 필수적인비 선점과 태스크 스케줄러 등 극히 일부분을 제외한 커널의 대부분에 적용되었다.
참고문헌 (13)
충남대산학협력단, "점검장비용 실시간 윈도우즈 운영체제 개발," (주)LIG 넥스원 최종보고서, 2010(10).
이진욱, "윈도우 기반의 점검장비에 실시간성을 지원하는 실시간 이식 커널의 설계 및 구현," 한국콘텐츠학회논문지, 제10권, 제10호, pp.36-44, 2010.
C. L. Liu and J. Layland, "Scheduling algorithms for multiprogramming in a hard real-time environment," Journal of the ACM, Vol.20, No.2, pp.46-61, 1973.
Pavel Moryc, "Task jitter measurement under RTLinux operating system," Proceeding of the IMCSIT, ISSN 1896-7094, pp.849-858, 2007.
M. Bergsma, M. Holenderski, J. B. Reinder, and Johan J. Lukkien, "Extending RT AI/Linux with Fixed-Priority Scheduling with Deferred Preemption," OSPERT, pp.5-14, 2009.
Carsten Emde, "Long-term monitoring of app arent latency in PREEMPT RT Linux real-time systems," OSADL, 2010.
Intel, "Intel 64 and IA-32 Architectures Sof tware Developer's Manual Volume 1: Basic Architecture", 2009(9).
Intel, "Intel 64 and IA-32 Architectures Soft ware Developer's Manual Vol.3: System Programming Guides," 2009(9).
이 논문을 인용한 문헌
저자의 다른 논문 :
연구과제 타임라인
LOADING...
LOADING...
LOADING...
LOADING...
LOADING...
활용도 분석정보
상세보기
다운로드
내보내기
활용도 Top5 논문
해당 논문의 주제분야에서 활용도가 높은 상위 5개 콘텐츠를 보여줍니다. 더보기 버튼을 클릭하시면 더 많은 관련자료를 살펴볼 수 있습니다.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.