윈도우 기반의 점검장비에 실시간성을 지원하는 실시간 이식 커널의 설계 및 구현 Design and Implementation of Real-time Implanted Kernel, RTiK to Support Real-time for a Test Set based on Windows원문보기
최근 다양한 신무기가 개발됨에 따라 개발된 무기들을 시험하기 위한 점검장비의 실시간성이 필수적으로 요구되고 있다. 하지만 윈도우 기반의 점검장비는 실시간성을 지원하지 못하기 때문에 RTX나 INtime같은 고가의 서드파티 운영체제를 사용함으로써 실시간성을 지원하며, 이는 점검장비 프로그램 개발비용의 증가를 초래하고 있다. 본 논문은 윈도우에 디바이스 드라이버 형태로 이식되어 동작하는 실시간 이식 커널인 RTiK을 제안한다. RTiK은 x86 하드웨어에서 제공하는 Local APIC를 이용하여 윈도우 별도의 타이머를 제공한다. 윈도우 독립적인 타이머 인터럽트의 발생으로 실시간성이 필요한 서비스를 주기적으로 동작시켜주며 마감시한을 보장해줌으로써 윈도우에 실시간성을 제공해준다. 또한 인터럽트지연시간을 줄이기 위해 윈도우에서 제공하는 지연처리호출(Deferred Procedure Call)을 사용하였으며 지연처리호출에서 실행시켜줄 개발자 정의 함수를 실시간 이식커널 내부에 접근하지 않고 구현 및 수정할 수 있도록 Export Driver를 사용했다. 본 논문에서는 x86하드웨어에서 동작하는 윈도우 기반의 점검장비에 실시간성을 지원하는 실시간 이식커널을 설계 및 구현하고, 0.1ms 주기성 보장에 대해 오실로스코프로 검증한다.
최근 다양한 신무기가 개발됨에 따라 개발된 무기들을 시험하기 위한 점검장비의 실시간성이 필수적으로 요구되고 있다. 하지만 윈도우 기반의 점검장비는 실시간성을 지원하지 못하기 때문에 RTX나 INtime같은 고가의 서드파티 운영체제를 사용함으로써 실시간성을 지원하며, 이는 점검장비 프로그램 개발비용의 증가를 초래하고 있다. 본 논문은 윈도우에 디바이스 드라이버 형태로 이식되어 동작하는 실시간 이식 커널인 RTiK을 제안한다. RTiK은 x86 하드웨어에서 제공하는 Local APIC를 이용하여 윈도우 별도의 타이머를 제공한다. 윈도우 독립적인 타이머 인터럽트의 발생으로 실시간성이 필요한 서비스를 주기적으로 동작시켜주며 마감시한을 보장해줌으로써 윈도우에 실시간성을 제공해준다. 또한 인터럽트 지연시간을 줄이기 위해 윈도우에서 제공하는 지연처리호출(Deferred Procedure Call)을 사용하였으며 지연처리호출에서 실행시켜줄 개발자 정의 함수를 실시간 이식커널 내부에 접근하지 않고 구현 및 수정할 수 있도록 Export Driver를 사용했다. 본 논문에서는 x86하드웨어에서 동작하는 윈도우 기반의 점검장비에 실시간성을 지원하는 실시간 이식커널을 설계 및 구현하고, 0.1ms 주기성 보장에 대해 오실로스코프로 검증한다.
Recently, as new weapons are being developed, test equipments to test their functions inevitably require real-time features. However, since test equipments based on Windows can not support real-time requirements, we have no choice but to use third-party solutions such as RTX or INtime. This leads to...
Recently, as new weapons are being developed, test equipments to test their functions inevitably require real-time features. However, since test equipments based on Windows can not support real-time requirements, we have no choice but to use third-party solutions such as RTX or INtime. This leads to increase the development cost of each test equipment. This paper suggests an real-time implemented kernel(RTiK) which operates as a device driver on Windows. RTiK provides another timer using the Local APIC of x86 microprocessors. It supports real-time requirements by periodically executing the required services using Windows-independent timer interrupts to guarantee task deadlines. To reduce the interrupt latency, we used deferred procedure calls provided by Windows. We also used the export driver to implement and modify user-defined functions without accessing the RTiK internals. Using an oscilloscope, we prove that the RTiK kernel proposed in this paper guarantees up to 0.1ms periods.
Recently, as new weapons are being developed, test equipments to test their functions inevitably require real-time features. However, since test equipments based on Windows can not support real-time requirements, we have no choice but to use third-party solutions such as RTX or INtime. This leads to increase the development cost of each test equipment. This paper suggests an real-time implemented kernel(RTiK) which operates as a device driver on Windows. RTiK provides another timer using the Local APIC of x86 microprocessors. It supports real-time requirements by periodically executing the required services using Windows-independent timer interrupts to guarantee task deadlines. To reduce the interrupt latency, we used deferred procedure calls provided by Windows. We also used the export driver to implement and modify user-defined functions without accessing the RTiK internals. Using an oscilloscope, we prove that the RTiK kernel proposed in this paper guarantees up to 0.1ms periods.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 윈도우의 실시간성 제공을 위해 디바이스 드라이버 형태로 윈도우에 이식되어 동작하는 실시간 이식 커널을 설계 및 구현하였다. 실시간 이식 커널은 인텔 x86 하드웨어에서 제공하는 Local APIC를 이용하여 윈도우 독립적인 타이머 인터럽트를 발생시킨다.
본 논문의 구성은, 관련연구에서 윈도우의 실시간성 제공을 위한 서드파티 운영체제에 대해 알아보고, 실시간 이식 커널이 이용하는 x86하드웨어와 지연처리호출, Export Driver에 대해 기술한다. 3장에서는 실시간 이식 커널의 설계 및 구현에 대해 기술하고, 4장에서 실시간 이식 커널의 성능을 분석하였으며, 마지막 5장에서 결론을 맺는다.
제안 방법
[표 3]은 실시간 이식커널의 타이머에 의한 실시간 쓰레드의 주기적 동작을 동시에 동작하는 다른 프로세스의 개수에 따른 주기변화를 나타낸 표이다. 0.1, 1, 15ms의 주기를 각각 실험하였으며 워크로드에 대한 주기변화를 확인하기 위해 While문을 무한 반복하는 윈도우 프로세스를 생성하였다.
실시간 이식커널은 주기적인 타이머 인터럽트를 통해 실시간성을 보장할 수 있지만 낮은 우선순위의 인터럽트는 인터럽트 지연시간이 길어질 수 있다. 따라서 본 논문에서는 실시간 이식커널이 윈도우가 제공하는 지연처리호출 루틴을 사용하도록 설계 및 구현하였다. 지연처리호출 메커니즘을 사용하려면 윈도우로부터 IDT의 벡터넘버를 할당 받고 인터럽트 오브젝트를 등록하기 전에 지연처리호출을 위한 초기화 작업이 필요하다.
본 논문에서는 IP470 레지스터의 포트0에 해당하는 8개의 채널을 이용해 실험하였고, 타이머 인터럽트 발생시 0x01을 세팅하고 다음 인터럽트 발생시 0x00을 세팅하여 동작하는 모습을 볼 수 있도록 실험하였다. 또한 디스크를 사용하는 응용 프로그램을 동시에 실행시켰을 때의 반응속도를 확인하기 위해 텍스트 파일을 만들어 입력과 저장을 반복하는 프로세스를 생성해 동시에 실행시키며 실험했다.
1ms의 주기로 동작하며 인터럽트 지연시간을 줄이기 위해 윈도우에서 제공하는 지연처리호출(Deferred Procedure Call)을 사용하였다. 또한 지연처리호출에서 주기적으로 수행하는 실시간 서비스를 개발자가 실시간 이식커널의 내부에 접근하지 않고 점검장비 프로그램을 개발할 수 있어야 하므로 Export Driver를 이용하여 개발자가 실시간 이식커널의 내부에 접근하지 않고 지연처리호출에서 실행시켜, 실시간성을 필요로 하는 점검장비 프로그램을 개발할 수 있도록 하였다.
본 논문에서는 IP470 레지스터의 포트0에 해당하는 8개의 채널을 이용해 실험하였고, 타이머 인터럽트 발생시 0x01을 세팅하고 다음 인터럽트 발생시 0x00을 세팅하여 동작하는 모습을 볼 수 있도록 실험하였다. 또한 디스크를 사용하는 응용 프로그램을 동시에 실행시켰을 때의 반응속도를 확인하기 위해 텍스트 파일을 만들어 입력과 저장을 반복하는 프로세스를 생성해 동시에 실행시키며 실험했다.
유도탄의 수락시험을 위한 휴대용 점검장비를 타겟으로 하여 윈도우를 설치하고 실시간 이식커널을 이식하여 실험하였다. 실시간 이식 커널의 동작 및 주기를 확인하기 위해 휴대용 점검장비에 Acromag APC 8625 PCI Carrier 보드를 사용하였고, IP470 Digital OutPut Module을 사용하여 포트에 신호를 출력하였다.
실시간 이식 커널은 인텔 x86 하드웨어에서 제공하는 Local APIC를 이용하여 윈도우 독립적인 타이머 인터럽트를 발생시킨다. 실시간 이식커널의 타이머는 최소 0.1ms의 주기로 동작하며 인터럽트 지연시간을 줄이기 위해 윈도우에서 제공하는 지연처리호출(Deferred Procedure Call)을 사용하였다. 또한 지연처리호출에서 주기적으로 수행하는 실시간 서비스를 개발자가 실시간 이식커널의 내부에 접근하지 않고 점검장비 프로그램을 개발할 수 있어야 하므로 Export Driver를 이용하여 개발자가 실시간 이식커널의 내부에 접근하지 않고 지연처리호출에서 실행시켜, 실시간성을 필요로 하는 점검장비 프로그램을 개발할 수 있도록 하였다.
타겟에서 실시간 이식커널을 동작시켰으며 호스트에서 모니터링을 하였다. 유도탄의 수락시험을 위한 휴대용 점검장비를 타겟으로 하여 윈도우를 설치하고 실시간 이식커널을 이식하여 실험하였다. 실시간 이식 커널의 동작 및 주기를 확인하기 위해 휴대용 점검장비에 Acromag APC 8625 PCI Carrier 보드를 사용하였고, IP470 Digital OutPut Module을 사용하여 포트에 신호를 출력하였다.
쓰레드의 우선순위가 낮더라도 기아상태를 방지하기 위해 CPU를 할당해주기 때문에 실시간 쓰레드의 마감 시한(Dead-Line)을 보장하지 못하므로 실시간성을 지원하지 못한다. 이러한 문제를 해결하기 위해 실시간 이식커널은 Local APIC 타이머를 통해 윈도우 독립적인 타이머 인터럽트를 발생시킴으로써 실시간 쓰레드의 주기적인 수행을 가능하게 하였다.
본 논문에서는 윈도우가 제공하는 지연처리호출을 사용하여 ISR의 작업을 하드웨어 인터럽트 레벨보다 낮은 Dispatch레벨에서 처리함으로써 낮은 우선순위의 인터럽트를 방해하지 않고, 인터럽트 지연시간을 줄였다. 이를 위해 윈도우의 I/O 관리자와 커널이 제공하는 API를 이용해 IDT에 실시간 이식커널을 위한 인터럽트 오브젝트를 등록하고 지연처리호출을 사용하였으며 Export Driver를 이용해 개발자가 지연처리호출의 내부수정 없이 실시간성을 필요로 하는 점검장비 프로그램을 개발할 수 있도록 하였다.
인터럽트 오브젝트에 저장되어 있는 인터럽트의 핸들러 주소를 참조하여 주기적으로 발생되는 타이머 인터럽트의 핸들러를 수행한다. 이러한 인터럽트 처리 과정을 위해 윈도우의 IDT에 실시간 이식 커널을 위한 인터럽트 오브젝트를 등록시켜야 한다.
실시간 이식커널 타이머의 주기를 확인하기 위해 [그림 8]과 같이 실험환경을 구성하였다. 정확한 주기측정을 위해 IP470 모듈을 이용하여 점검장비의 포트에 신호를 출력해주고 오실로스코프로 확인하였다.
윈도우에 실시간성을 제공하는 실시간 이식 커널을 구현하기 위해 [표 2]와 같은 실험환경을 구성하였다. 타겟에서 실시간 이식커널을 동작시켰으며 호스트에서 모니터링을 하였다. 유도탄의 수락시험을 위한 휴대용 점검장비를 타겟으로 하여 윈도우를 설치하고 실시간 이식커널을 이식하여 실험하였다.
대상 데이터
Acromag APC 8625 PCI Carrier 보드에 탑재되어 동작하는 IP470 Digital OutPut Module의 물리적 주소에 맵핑되어 있는 가상주소, 즉 해당포트를 통해 시그널을 출력하였다. IP470은 총 6개의 포트를 사용하며 각각의 포트는 8개의 채널을 사용한다.
성능/효과
또한 디스크를 사용하는 응용프로그램이 동시에 실행되어도 실시간 이식 커널은 영향을 받지 않고 설정된 주기대로 동작하는 것을 확인할 수 있다.
본 논문에서는 윈도우가 제공하는 지연처리호출을 사용하여 ISR의 작업을 하드웨어 인터럽트 레벨보다 낮은 Dispatch레벨에서 처리함으로써 낮은 우선순위의 인터럽트를 방해하지 않고, 인터럽트 지연시간을 줄였다. 이를 위해 윈도우의 I/O 관리자와 커널이 제공하는 API를 이용해 IDT에 실시간 이식커널을 위한 인터럽트 오브젝트를 등록하고 지연처리호출을 사용하였으며 Export Driver를 이용해 개발자가 지연처리호출의 내부수정 없이 실시간성을 필요로 하는 점검장비 프로그램을 개발할 수 있도록 하였다.
가장 밑에 보이는 보라색의 구형파는 7ms의 주기를 나타내는 것으로 7ms마다 신호를 출력하는 함수와 신호를 출력하지 않는 함수를 번갈아 호출함으로써 한 구간인 14ms동안에 7ms동안은 신호출력을 유지하고, 나머지 7ms동안에는 신호를 출력하지 않는 상태를 반복한 결과를 나타낸다. 실험 결과와 같이 실시간 이식 커널이 윈도우의 스케줄러 및 다른 프로세스에 영향을 받지 않고 항상 설정된 주기를 지키며 동작함을 확인할 수 있다.
실험결과 윈도우에서 동작하는 프로세스가 많아질수록 윈도우의 스케줄링을 위한 인터럽트에 의해 인터럽트 지연시간이 길어져 실시간 쓰레드의 미미한 영향을 미치지만 주기가 커질수록 거의 영향을 받지 않고 동작 하는 것을 확인할 수 있다.
10개의 워크로드는 사용자 영역에서 동작하는 다수의 병령 프로세스들로써 각각의 프로세스는 While문을 무한 반복한다. 오실로스코프의 한 구간은 0.1ms이며, 오차 없이 신호출력구간과 신호를 출력하지 않은 구간이 각각 0.1ms동안 유지되는 것을 확인할 수 있다. 이것은 실시간 이식커널이 윈도우의 스케줄링에 영향을 받지 않고 항상 설정된 주기를 지키며 동작함으로써 윈도우에 실시간성을 제공할 수 있음을 의미한다.
후속연구
최근 유도무기를 비롯한 무기의 발달에 따라 각국에서는 다양한 신무기들의 개발이 활발히 이루어지고 있다. 개발된 신무기는 여러가지 조건들에 대해 요구된 동작이 제대로 동작하는지 성능검증을 하기 위해 수락 시험을 수행해야 한다. 특히 유도무기체계 사업에서는 실시간으로 데이터를 획득하고 평가하는 휴대용 점검 장비를 선호한다.
향후 연구과제로는 우선순위 기반 실시간 쓰레드 스케줄러를 구현함으로써 다수의 실시간 쓰레드의 우선순위에 의한 동작을 보장하는 것이다. 또한 다양한 API를 제공함으로써 개발자로 하여금 보다 편리하게 실시간 이식커널을 사용하도록 하는 연구와 여러 장비에서의 성능검증이 필요하다.
향후 연구과제로는 우선순위 기반 실시간 쓰레드 스케줄러를 구현함으로써 다수의 실시간 쓰레드의 우선순위에 의한 동작을 보장하는 것이다. 또한 다양한 API를 제공함으로써 개발자로 하여금 보다 편리하게 실시간 이식커널을 사용하도록 하는 연구와 여러 장비에서의 성능검증이 필요하다.
질의응답
핵심어
질문
논문에서 추출한 답변
실시간 이식커널의 타이머가 윈도우에서 제공하는 지연처리호출 사용하는 이유는?
실시간 이식커널의 타이머는 최소 0.1ms의 주기로 동작하며 인터럽트 지연시간을 줄이기 위해 윈도우에서 제공하는 지연처리호출(Deferred Procedure Call)을 사용하였다. 또한 지연처리호출에서 주기적으로 수행하는 실시간 서비스를 개발자가 실시간 이식커널의 내부에 접근하지 않고 점검장비 프로그램을 개발할 수 있어야 하므로 Export Driver를 이용하여 개발자가 실시간 이식커널의 내부에 접근하지 않고 지연처리호출에서 실행시켜, 실시간성을 필요로 하는 점검장비 프로그램을 개발할 수 있도록 하였다.
범용 운영체제인 윈도우에 실시간성 제공을 위한 대표적 서드파티 운영체제는 어떤 것이 있는가?
범용 운영체제인 윈도우에 실시간성 제공을 위한 대표적 서드파티 운영체제로 RTX와 INtime이 있다. RTX는 윈도우에 고성능 실시간 제어가 가능한 실시간 운영체제의 기능을 부가해주는 확장 소프트웨어로서, 순수 실시간 운영체제가 아니라 윈도우의 대중성 및 풍부한 GUI Library 등의 장점을 최대한 이용하며 실시간성을 보완하여 주는 소프트웨어이다.
점검장비 개발시 고가의 서드파티 운영체제를 대체하여 개발비용을 절감하기 위해 윈도우의 실시간성 지원에 관한 연구가 필요한 이유는 무엇인가?
현재 휴대용 점검장비는 실시간성의 제공을 위해 VxWorks와 같은 실시간 운영체제를 사용하거나 윈도우 기반하에 실시간 지원을 위한 RTX나 INtime과 같은 서드파티 운영체제를 사용하고 있다. 하지만 이러한 제품들은 고가의 구입비용과 라이선스 비용으로 인해 개발비용의 증가를 초래할 수 있다. 따라서 점검장비 개발시 고가의 서드파티 운영체제를 대체하여 개발비용을 절감하기 위해 윈도우의 실시간성 지원에 관한 연구가 필요하다.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.