DOI QR코드

DOI QR Code

RTiK과 DPC 제어를 통한 윈도우즈 기반의 검사장비에서 MIL-STD-1553B 통신의 실시간 구현

Implementation for Real-Time of MIL-STD-1553B Communication in Inspection Equipment Based on Windows with RTiK and DPC Control

  • Kim, Jong-Jin (Dept. of Research and Development Tawazun Technology and Innovation) ;
  • Lee, Sang-Gil (Dept. of Computer Science Engineering Chungnam National University) ;
  • Lee, Cheol-Hoon (Dept. of Computer Science Engineering Chungnam National University)
  • 투고 : 2020.11.26
  • 심사 : 2021.02.01
  • 발행 : 2021.02.28

초록

It is very important to support real-time on the inspection equipment based on Windows. In particular, in the system using MIL-STD-1553B communication, which is widely used in military weapon systems, real-time is required for inspection equipment that uses mostly platforms based on Windows such as Industrial PCs. However, in order to use a complete real-time operating system such as VxWorks, the purchase cost is expensive and the implementation is complicated on the system, so it is not suitable for inspection equipment that requires simple functions to just check go or no-go. Therefore, in this paper, a Real-Time implanted Kernel(RTiK) in the Windows kernel is implanted in order to improve these defects, and real-time performance is implemented for periodically MIL-STD-1553B communication by Deferred Procedure Call(DPC) of Windows. Also, it was verified that the period of up to 2ms was guaranteed with a RDTSC into the EDX:EAX registers for measuring the periodicity.

키워드

1. 서론

네트워크 및 통신 분야의 기술이 발전에 따라 정보서비스, 자동차, 우주항공 및 군사무기 분야에서 임베디드 시스템 사용되는 시장이 비약적으로 성장해 나아가고 있다. 기존 임베디드 환경에서는 시스템성능이 대한 제약으로 마이크로 컨트롤러 기반의 운영체제가 사용되었으나 지속적인 하드웨어 성능이 발전함에 따라서 범용 운영체제를 사용하게 되었다. 이와 같은 기기를 사용하는 시스템에서는 실시간 성능을 지원하기 위해 정확한 주기에 정확한 결과 값을 반환하거나, 일정한 주기마다 정해진 일을 수행하는 것이 운영체제에서 제공해야 하는 중요한 역할이기도 하다[1,2]. 이러한 실시간 성능을 보장하기 위해 주로 임베디드 시스템에서는 실시간 운영체제(Real-Time Operating System)을 사용한다 [3]. 이러한 실시간 운영체제는 안정적이 스케줄러가 태스크들을 관리하기 때문에 실시간 성능을 요구하는 시스템에서 개발자 및 사용자가 윈도우 운영체제와는 별도로 하드웨어를 제작하여 실시간 운영체제를 포팅 해야한다[4, 5, 6, 7].

군사무기 분에서도 각 구성품(component)들의 동작 상태를 실시간적으로 점검하거나 성능을 확인하기 위해 실시간으로 데이터를 획득하고 저장하는 동시에 평가하는 검사장비(inspection equipment)를 주로 사용한다. 이러한 검사장비에 실시간성을 부여하기 위해 VxWorks와 같은 실시간 운영체제를 사용하거나, 개발환경의 편의성과 호환성의 장점으로 인해 윈도우 운영체제 기반에 실시간성을 지원하는 RTX나 INtime과 같은 서드파티(third party) 운영체제가 지금까지 많이 사용되고 있다[8,9]. 하지만 이들 제품은 구매가격이 고가이어서 사용자나 개발자에게 비용 측면에서 큰 부담을 준다. 따라서 윈도우 운영체제 기반의 검사장비 개발 시, RTX나 INtime과 같은 서드파티 운영체제를 대체할 수 있고 상대적으로 개발 비용을 줄이면서 윈도우 운영체제 환경에서 실시간성이 보장되는 커널에 대한 연구가 필요하다 [10,11].

본 논문에서는 이러한 문제점을 해결하기 위해 윈도우 운영체제 기반으로 설계 및 제작되는 검사장비에 커널 모드(ring0)에서 디바이스 드라이버(device driver)형태로 윈도우 운영체제에 이식되어 동작하고, MIL-STD-1553B 통신 시 지연처리호출(Deferred Procedure Call, DPC)를 통해 실시간 성능 제공이 가능하게 구현하였다[12]. 이를 위해 이미 개발된 실시간 이식커널(RTiK)을 이용하여 검사장비에 탑재된 MIL-STD-1553B 통신 보드를 통해 유도무기와 통신이 수행될 때, 실시간 성능이 보장하도록 구현하였다.

본 논문은 2장에서 서드파티 운영체제 사용 환경에 대해 설명한다. 3장에서는 윈도우 운영체제에 실시간 성능을 제공하기 위한 DPC의 제어 방안과 MIL-STD-1553B 통신에서의 실시간 성능 보장을 위한 개발을 설명한다. 4장에서는 RDTSC를 적용하여 실시간 성능을 측정하기 위한 방법을 설명하고, 실험 데이터를 측정하여 실시간 성능이 입증됨은 보인다. 마지막 5장에서는 결론 및 향후 연구에 대해 기술한다.

2. 관련연구

2.1 서드파티

2.1.1 RTX

RTX는 IntervalZero사에서 윈도우 운영체제에 이식되어 실시간성을 제공하기 위해 개발된 확장 소프트웨어이다. RTX는 순수 실시간 운영체제가 아니라 윈도우 운영체제의 대중성과 다양한 라이브러리의 장점을 최대한 이용하기 위해, 범용 운영체제인 윈도우 운영체제에 부가 시스템으로 추가되어 실시간성 제공한다[5,8]. RTX는 산업전자, 계측기, 의료, 시뮬레이터, 로보틱스, 항공 및 군사무기 분야에서 많이 사용되어 있다.

2.1.2 INtime

INtime은 TenAsys사에서 윈도우 운영체제와 함께 실시간 응용 프로그램을 유저 모드(Ring3)에서 동작하여 응용 프로그램 두 개를 동시에 실행한다 [9]. 또한 탑재된 실시간 운영체제의 애플리케이션이 서로 독립적으로 실행될 수 있도록 비대칭 멀티프로세싱 접근법을 사용한다.

2.2 Local APIC

APIC(Advanced Programmable Interrupt Controller)는 x86아키텍처에서 제공하는 인터럽트 컨트롤러이다. 즉 하드웨어 인터럽트를 인터럽트 핸들러의 주소를 가지고 있는 IDT(Interrupt Descriptor Table)로 전달해 주는 기능을 수행한다. 또한 APIC 는 Local APIC와 I/OIPIC로 구성되어 있는데 I/O APIC는 외부장치로부터 IRQ신호를 받아서 Local APIC에 전달하고 이것을 Local APIC가 프로세서에 전달하여 인터럽트를 처리하는 기능을 수행한다[13, 14, 15, 16].

2.3 지연처리호출(DPC)

지연처리호출(DPC, Deferred Procedure Call)은 하드웨어 인터럽트의 ISR(Interrupt Service Routine)이 CPU를 사용할 때 중요한 기능을 우선적으로 처리하고 나머지는 그 이후에 수행하도록 IRQL(Interrupt Request Level)를 별도로 제공하는 윈도우 운영체제의 운영 메커니즘을 말한다[17,18].

Fig.1과 같이 IRQL이 높은 인터럽트가 발생하면, CPU는 현재 진행 중인 쓰레드(thread)를 저장하고 해당 인터럽트를 처리하게 되고, 현재 발생한 다양한 인터럽트 중에서 중요하거나 또는 우선 처리되지 않아도 되는 경우가 발생하는데, 이때 지연처리호출을 이용하여 이러한 중요도에 따른 단계별 제어가 가능하다.

Fig. 1. Change state of IRQL during Interrupt processing time.

2.4 RTiK

RTiK은 x86기반의 윈도우 운영체제에 실시간 성능을 제공하기 위해 디바이스 드라이버 형태로 이식된다. Fig.2와 같이 커널 모드에서 동작하여 하드웨어 접근이나 윈도우 운영체제의 커널 영역에 접근이 가능하게 한다[5].

MTMDCW_2021_v24n2_199_f0002.png 이미지

Fig. 2. Architecture of RTiK implanted into the Windows Kernel.

유저 모드에서 윈도우 운영체제에 실시간 성능을 제공하는 방법으로, RTiK은 Fig.2와 같이 사용자는 RTiK에서 제공하는 API를 이용하여 실시간 쓰레드의 수행 코드를 작성하고, 생성된 실시간 쓰레드 (RTiK Thread)는 커널 영역으로부터 전달될 신호를 기다린다. 그리고 Fig.3과 같이 이벤트 기반 RTiK의 타이머가 활성화되면, 사용자가 설정한 주기로 타이머 인터럽트가 발생하며, 지연처리호출과정에서 유저 모드에 신호를 전달해 주게 된다. 이때 유저 모드의 실시간 쓰레드는 윈도우 운영체제에서 관리하는 프로세스와 쓰레드의 우선순위 중 가장 높은 우선순위로 동작된다. 따라서 윈도우 운영체제에서 동작하는 다른 프로세스나 쓰레드의 영향을 완전히 받지않고 다만 설정된 주기를 지키며 동작함으로써 유저 모드에 실시간성을 제공해 줄 수 있다[19].

MTMDCW_2021_v24n2_199_f0003.png 이미지

Fig. 3. Architecture of a event-based RTiK.

2.5 MIL-STD-1553B

항공무기체계와 유도무기체계로 주로 사용되는 MIL-STD-1553B 통신은 1Mbps 통신 속도를 가진 양방향 시리얼 통신방식이다. MIL-STD-1553B버스는 Fig.4와 같이 항공기 내의 서로 다른 종류의 전자장비들간의 규약된 통신 프로토콜을 사용하여 메시지를 전송하는 통신이다 [20]. 주로 군사용과 우주용으로 사용되는 통신규격으로 높은 신뢰성이 요구되는 장비에 사용된다.

MTMDCW_2021_v24n2_199_f0004.png 이미지

Fig. 4. Block diagram of MIL-STD-1553B communication Interface.

MIL-STD-1553B 버스는 BC(Bus Controller), RT(Remote Terminal)와 MT(Monitoring)로 구성되고 BC가 데이터 버스를 제어하고 RT는 BC에 의해 제어되어 데이터를 전송하거나 수신한다. MT는버스상의 모든 데이터를 모니터링을 수행한다[21].

3. MIL-STD-1553B 통신에서 실시간성 구현

3.1 RTiK의 지연처리호출을 통한 실시간성 설계

윈도우 운영체제 기반의 검사장비에 실시간성을 제공하기 위해 2장에서 설명한 바와 같이 커널 모드에 RTiK을 탑재하고, x86 하드웨어가 제공하는 Local APIC의 제어를 위해 윈도우 운영체제와 독립적인 HAL(Hardware Abstraction Layer)을 사용한다.

Fig.5와 같이 윈도우 운영체제의 IDT에 인터럽트 오브젝트를 등록하여 Local APIC타이머 인터럽트가 발생하면 윈도우 운영체제로부터 할당받은 인터럽트 오브젝트(Interrupt Object)로 분기하도록 설계함으로써 MIL-STD-1553B 통신에 주기적인 동작이 실행되도록 구현하였다. 또한 RTiK의 ISR(Interrupt Service Routine)내에서 지연처리호출(DPC)을 요청하여 더 높은 우선순위의 인터럽트에 대한 인터럽트 지연시간을 최소화하여 윈도우 운영체제에 실시간성을 지원하도록 구현하였다.

MTMDCW_2021_v24n2_199_f0005.png 이미지

Fig. 5. The operation process of the DPC for Interrupt service based on the Windows using RTiK.

그리고 윈도우 운영체제로부터 IDT의 벡터넘버 (vector number)를 할당받아서 인터럽트 오브젝트를 등록하기 전 지연처리호출(DCP) 사용을 위한 초기화 작업을 수행한다. Fig.6과 같이 RTiK의 ISR에 해당하는 InterruptISR()함수에서 지연처리호출을 요청하여 윈도우 운영체제의 I/O매니저에게 제공하는 IoRequestDPC()함수를 이용해 지연처리호출을 요청하도록 처리하였다.

MTMDCW_2021_v24n2_199_f0006.png 이미지

Fig. 6. The implemented function for InterruptISR and IoRequestDPC.

이 과정이 완료되면 IRQL이 인위적으로 낮아지며 사용자가 정의한 함수를 호출함으로써 커널 모드 Fig.2에서와 같이 쓰레드를 생성할 수 있게 되며, 통신주기에 맞게 주기적으로 사용자가 정의한 통신함수에 실시간 성능을 지킬 수 있게 설계 및 구현되었다.

3.2 검사장비 통신 프로그램 설계

유도무기체계의 검사장비는 유도조종장치, 항법장치, 구동장치와 같은 주요 전자 구성품들의 전기적기능과 알고리즘 성능을 점검하는 기능을 주로 수행한다. 검사장비로 점검 기능을 수행할 때 MIL-STD-1553B 통신을 통해 실시간으로 유도무기의 각 구성품들을 제어하고 그 결과 데이터를 수신하여 확인하는데, 이 때 각 구성품과 동시 다발적으로 주기적인 통신을 수행하기 위해 실시간 성능이 필수적으로 요구된다.

검사장비는 Fig.7과 같이 산업용 컴퓨터(Industry PC)가 장착된 윈도우 운영체제 플랫폼에 이산신호 입출력 보드(Discrete Input/output board), 아날로그 입출력 보드(Analog Input/output board) 및 MIL- STD-1553B 통신 보드를 탑재하여 유도무기의 각구성품들과 케이블을 통해 연결된다. 기존에는 윈도우 운영체제 기반에 실시간 성능을 제공하기 위해 RTX와 INtime과 같은 서드파티를 주로 사용하였지만 비용대비 효과 측면에서 개발자에게 큰 부담을 주었다.

MTMDCW_2021_v24n2_199_f0007.png 이미지

Fig. 7. The software architecture of Inspection Equipment based on the Windows using RTiK.

이러한 문제점을 해결하기 위해, 본 논문에서는 Fig.7과 같이 디바이스 드라이버 형태로 구현된 RTiK을 윈도우 운영체제에 이식하고, MIL-STD-1553B 통신 시 데이터가 HAL(Hardware Abstraction Level)을 통해 하드웨어의 자원을 접근이 가능 있도록 Local APIC의 제어를 통해 실시간성을 제공하도록 구현하였다.

그리고 MIL-STD-1553B 통신이 수행될 때, RTiK을 통해 검사장비와 유도무기의 구성품간 주기적으로 데이터의 전송이 발생되는 주기를 Fig.8과 같이 RDTSC(Read Time-Stamp Counter) 명령어를 사용하여 실시간 쓰레드를 통해 측정하도록 실험용 코드를 구현하였다[22]. 2ms 주기로 설정된 타이머 인터럽트가 발생하면 유저 모드의 실시간 쓰레드가 수행되고 이때 쓰레드가 수행될 때마다 클럭 틱(clock tick)값을 배열에 저장하고 RTiK의 수행이 종료될 때 파일에 저장된 클럭 틱 값의 차이를 계산하여 통신 주기를 측정하였다.

MTMDCW_2021_v24n2_199_f0008.png 이미지

Fig. 8. The test code for measuring the period during MIL-STD-1553B communication.

3.3 MIL-STD-1553B 보드에 실시간성 설계 및 구현

2장 관련연구에서 설명한 바와 같이, MIL-STD- 155B통신은 BC가 통신 선로(busline)을 통제하여 데이터를 송신하거나 수신하도록 제어한다. 그리고 검사장비의 BC에 의해 호출된 유도무기의 구성품 (component)의 RT가 검사장비와 일대일 통신방식으로 주기적인 통신을 수행한다. 이때 주기적인 통신이 수행되도록 실시간성이 요구되는데, 이와 같은 실시간성 제공을 위해 Fig.9와 같이 RTiK 쓰레드에 송신 명령과 수신 명령이 주기적으로 수행되도록 구현하였다.

MTMDCW_2021_v24n2_199_f0009.png 이미지

Fig. 9. The design code to transmit and receive data through MIL-STD-1553B communication between Inspection equipment and components.

2ms의 통신주기를 설정하고 주기적으로 데이터송신과 수신이 실시간적으로 수행되도록 구현하였고, BC와 RT에 이식된 RTiK이 활성화(activation) 되어 MIL-STD-1553B 통신 보드의 하드웨어에 실시간적으로 데이터가 테스트 성능에 필요한 주기로 전송되도록 실시간성을 제공되도록 처리하였다.

4. 실험환경 및 결과

4.1 실험환경 및 실험방법

실시간 성능 제공을 위해 윈도우 운영체제 기반의 검사장비에 DPC제어를 통해 구현된 RTiK을 탑재하고 RTiK을 통해 MIL-STD-1553B 통신의 실시간 성능이 수행되는 것을 측정하기 위해 Fig.10과 같이 실험 환경을 구성하고 실험을 수행하였다.

Fig. 10.The configuration for experimental test between Target equipment and Host equipment.

그리고 검사장비는 Fig.10과 같이 호스트 장비와 타겟 장비로 구성되어 있고 Table1과 같이 실험 환경을 구성하였다.

Table 1. The configuration of Host system and Target system.

MTMDCW_2021_v24n2_199_t0001.png 이미지

RTiK의 실시간 성능을 측정하기 위해 윈도우즈 기반으로 동작하는 타겟 장비에 RTiK을 탑재하였고 MIL-STD-1553B 통신에서 BC 기능을 수행하도록 설정하였고, 호스트 장비를 RT로 설정하여 주기적으로 MIL-STD-1553B 통신을 수행하도록 구현하였다. 또한 실험 데이터 확보를 위해 기존에 사용하던 오실로스코프를 통한 주기성 측정하는 방법 대신에 다른 RDTSC(Read Time-Stamp Counter)명령어를 사용하여 MIL-STD-1553B 통신의 시작과 동시에 통신 주기를 저장하여 측정하였다. 이 때 RTiK 은 Local APIC타이머를 이용해 윈도우의 독립적인 타이머 인터럽트를 주기적으로 발생시켜 MIL-STD-1553B보드가 장착된 윈도우즈에 실시간성을 제공하게 하였다. 타겟 장비는 산업용 컴퓨터(Industry PC) 플랫폼에 MIL-STD-1553B 보드를 장착하여 사용하였다.

실험 방법은 검사장비에 RTiK을 이식한 상태에서 유저 모드에서 MILSTD-1553B 통신을 수행하는 2ms주기의 실시간 쓰레드를 생성하여 태스크의 호출 주기를 측정하였다. 생성된 실시간 쓰레드가 요청한 주기에 맞게 호출되어야 하기 때문에 이를 판단하기 위해서 요청된 주기와의 일치 여부를 비교하였고 이를 통해서 태스크의 주기성이 만족되는지 확인하였다. 또한 상용 소프트웨인 RTX와의 성능 비교를 위하여 동일한 시험환경에서 동일한 주기 측정 방법으로 RTX에 대한 실험을 수행하였고 이를 비교하여 RTiK의 실시간 성능이 제공됨을 확인하였다.

4.2 실험 결과

4.2.1 워크로드가 없는 경우

RTiK은 윈도우의 IDT에 인터럽트 오브젝트와 지연처리호출(DPC)을 등록함으로써 타이머 인터럽트가 발생시 ISR에서 지연처리호출을 요청하여 정상적으로 동작하는 것을 확인하였다. 또한 검사장비에 RTiK을 이식한 후 윈도우즈에는 다른 워크로드(workloads)가 없는 상태에서 실험이 수행되었다. MIL-STD-1553B 통신 주기를 최소 주기인 2ms로 설정하고, 이 때 윈도우즈에는 다른 워크로드(work-loads)가 없는 상태에서 실험을 수행하였다.

RTiK을 이용한 측정 결과는2ms 주기의의 태스크를 통해서 MIL-STD-1553B 통신을 수행할 때, 측정된 태스크 중에서 가장 호출 주기가 큰 태스크는 2.0282315ms이며 측정된 태스크 중에서 가장 호출주기가 작은 태스크는 1.9897935ms로 약 1.5%의 실행 주기 오차를 가지며 동작하는 것을 확인할 수있었다. RTiK과 비교를 위해 윈도우즈에 RTX를 탑재하여 동일한 프로그램과 동일한 방법을 적용하여 MIL-STD-1553B 통신 주기를 측정하였다. RTX를 이용한 측정 결과는 2ms 주기의 태스크를 통해서 통신을 수행할 때, 측정된 태스크 중에서 가장 호출 주기가 큰 태스크는 2.0238722ms이며 측정된 태스크 중에서 가장 호출 주기가 작은 태스크는 1.9182845 ms로 약 1%의 오차를 가지며 동작하는 것을 확인할 수 있었다.

RTiK와 RTX의 환경에서 측정된 데이터를 정리하여 비교하는 데이터는 Table2로 정리하여 나타내었다. Table2에서 알 수 있듯이 워크로드가 없는 상황에서 RTiK과 RTX는 거의 동일한 성능을 가지고있음을 확인할 수 있었다.

Table 2.The results for period of 2ms without workloads using RTiK and RTX based on the Windows on the inspection equipment.

4.2.2 워크로드가 있는 경우

이 실험을 위해 Fig.10과 같이 동일한 시험환경을 구성하고 워크로드(workloads)를 While함수를 무한반복으로 동작하도록 하여 실험이 수행되는 동안 윈도우즈에 부하를 인위적으로 주기 위해 워크로드를 생성하였고, 워크로드가 없는 경우와 동일한 실험 방법으로 MIL-STD-1553B 통신에 대한 주기성을 측정하였다. 일반적으로 워크로드가 많아질수록 윈도우의 인터럽트가 많아져서 인터럽트 처리시간으로 인한 지연시간(delaytime)이 길어지는데, 이 실험에서 알 수 있듯이 다수의 워크로드가 있음에도 불구하고 MIL-STD-1553B 통신을 처리하는 통신 쓰레드에는 영향이 거의 없음을 확인할 수 있었다. 따라서 2ms주기에서는 워크로드에 관계없이 실시간성 제공으로 인해 거의 동일한 동작을 수행하는 것을 확인할 수 있었다.

Table3에서 알 수 있듯이 워크로드가 있는 운영환경에서도 RTiK는 RTX와 거의 동일한 성능을 가지고 동작함을 확인하였다. 이를 통해 실시간 성능제공을 위해 윈도우즈 운영체제에 이식된 RTiK환경에서 MIL-STD-1553B 통신에 실시간 성능을 제공할 수 있는 것을 확인하였다.

Table 3.The results for period of 2ms with workload using RTiK and RTX based on the Windows on the inspection equipment.

따라서 현재 시스템에 워크로드(workloads)가 있는 경우에도 RTiK을 이용하는 경우에 MIL-STD-1553B 통신의 주기가 매우 적은 오차범위 이내로 동작하는 것을 확인할 수 있었으며, 이는 실시간 성능을 제공하여 반드시 사용자가 기대하는 주기에 원하는 성능을 제공하는 것을 확인하였다.

5. 결론 및 향후 연구과제

유도무기체계에서 구성품 또는 유도탄의 기능을 점검하고 검사 성적서를 제공하는 검사장비는 실시간으로 데이터를 획득하고 또한 동시에 데이터를 저장하여 그 결과를 사용자에게 제공하는 기능을 수행하는 장비로써 이 기능을 수행하기 위해 실시간 성능이 매우 중요하고 필수적으로 이 기능이 요구된다. 특히, 윈도우즈 환경하에서 운용되는 유도무기체계의 검사장비에서는 RS-232, RS-422, CAN과 같은 통신뿐만 아니라 군사 분야에서 주로 사용되는 MIL-STD-1553B 통신에서 데이터 분실 없이 주기적으로 송신 및 수신을 하기 위해서 실시간 성능이 중요시된다.

RTiK은 디바이스 드라이버 형태로 구현되어 사용자가 API를 이용하여 쉽게 접근이 가능하다. 또한 이 논문에서는 지연처리호출(DPC)를 통한 윈도우즈 기반으로 검사장비에 탑재되어 실시간성을 제공하도록 함으로써 MIL-STD-1553B 통신 시 최대 2ms의 주기성을 보장하도록 하였다.

또한 MIL-STD-1553B 통신에서 유저 모드에서 동작하는 실시간성을 지원하기 위해 커널 모드에서 동작하는 RTiK을 윈도우 운영체제의 커널에 이식시키고 유저 모드에서 지연처리호출(DPC)을 사용하여 구성품간 장시간의 통신이 수행되는 동안 실시간성이 제공되는지를 실험을 통해 확인하였다. 구현된 RTiK을 사용한 MIL-STD-1553B 통신에서 주기성을 측정하기 위해 RDTSC를 사용하였고, 워크로드 (workloads)가 있는 경우와 워크로드가 없는 경우를 동일한 실험조건에서 수행하여 생성된 실시간 쓰레드의 2ms 주기에 맞게 통신 기능이 정상적으로 동작하는지를 확인할 수 있었으며, 이를 통해서 RTiK이 윈도우 운영체제에 실시간 성능을 제공할 수 있는 것을 확인하였다.

향후 연구로는 Windows10과 같은 상위 버전의 윈도우 운영체제 환경에서도 RTiK이 이식되고 실시간성이 제공될 수 있도록 구현하고, 다양한 검사장비에서 사용자가 보다 편리하게 RTiK을 사용하도록 API 구현에 대한 연구가 필요하다.

[script] var kistiSpellChecker_replaceCKEditorOptionId = setInterval(function() { if ( ! window.CKEDITOR ) return; clearInterval(kistiSpellChecker_replaceCKEditorOptionId); var isMarkTagAllowed = function(config) { if (config.allowedContent === true) return true; if (typeof(config.allowedContent) === 'string' && config.allowedContent.includes('mark') ) { return true; } if (typeof(config.allowedContent) === 'object' && config.allowedContent.keys().includes('mark') ) { return true; } if (typeof(config.extraAllowedContent) === 'string' && config.extraAllowedContent.includes('mark') ) { return true; } if (typeof(config.extraAllowedContent) === 'object' && config.extraAllowedContent.keys().includes('mark') ) { return true; } return false; }; for (var key in CKEDITOR.instances) { var editor = CKEDITOR.instances[key]; var element = editor.element; var config = editor.config; if ( isMarkTagAllowed(config) ) { continue; } config.extraAllowedContent = 'mark; ' + (config.extraAllowedContent || ''); var originEditorKey = null; for (var key in window) { if ( window[key] === editor ) { originEditorKey = key; break; } } var extraProperties = { listSeq: editor.listSeq // KISTI 기계학습데이터 구축 작업화면 대응 }; console.log('listSeq before destroy', editor.listSeq); editor.destroy(); window[originEditorKey] = editor = CKEDITOR.replace(element, config); for (var key in extraProperties) { editor[key] = extraProperties[key]; } console.log('extraProperties after recreate', extraProperties); } }, 100);[/script] [script] var kistiSpellChecker_replaceCKEditorOptionId = setInterval(function() { if ( ! window.CKEDITOR ) return; clearInterval(kistiSpellChecker_replaceCKEditorOptionId); var isMarkTagAllowed = function(config) { if (config.allowedContent === true) return true; if (typeof(config.allowedContent) === 'string' && config.allowedContent.includes('mark') ) { return true; } if (typeof(config.allowedContent) === 'object' && config.allowedContent.keys().includes('mark') ) { return true; } if (typeof(config.extraAllowedContent) === 'string' && config.extraAllowedContent.includes('mark') ) { return true; } if (typeof(config.extraAllowedContent) === 'object' && config.extraAllowedContent.keys().includes('mark') ) { return true; } return false; }; for (var key in CKEDITOR.instances) { var editor = CKEDITOR.instances[key]; var element = editor.element; var config = editor.config; if ( isMarkTagAllowed(config) ) { continue; } config.extraAllowedContent = 'mark; ' + (config.extraAllowedContent || ''); var originEditorKey = null; for (var key in window) { if ( window[key] === editor ) { originEditorKey = key; break; } } var extraProperties = { listSeq: editor.listSeq // KISTI 기계학습데이터 구축 작업화면 대응 }; console.log('listSeq before destroy', editor.listSeq); editor.destroy(); window[originEditorKey] = editor = CKEDITOR.replace(element, config); for (var key in extraProperties) { editor[key] = extraProperties[key]; } console.log('extraProperties after recreate', extraProperties); } }, 100);[/script]

참고문헌

  1. S. Lee, S. Lee, and C. Lee, "A Real-Time Extension Kernel for Linux based on ARM Processor," Journal of the Korea Contents Association, Vol. 17, No. 10, pp. 587-597, 2017. https://doi.org/10.5392/JKCA.2017.17.10.587
  2. J. Lee and J. Kim, "Time-Efficient Voltage Scheduling Algorithms for Embedded Real-Time Systems with Task Synchronization," Journal of Korea Multimedia Society, Vol. 13, No. 1, pp. 30-37, 2010.
  3. J. Ko and B. Choi, "On Benchmarking of Real-Time Mechanisms in Various Periodic Tasks for Real-time Embedded Linux," The Journal of Korea Robotics Society, Vol. 7, No. 4, pp. 292-298, 2012. https://doi.org/10.7746/jkros.2012.7.4.292
  4. I. Shin, K. Nam, S. Lee, D. Woo, S. Kim, and H. Kim, "Real-time Performance Analysis of Free RTOS for Embedded Software," Proceeding of Korea Computer Congress, pp. 1612-1614, 2016.
  5. J. Lee, M. Cho, J. Kim, H. Cho, Y. Park, and C. Lee, "Design and Implementation of Real-time Implanted Kernel, RTiK to Support Real-Time for a Test Set based on Windows," Journal of The Korea Contents Association, Vol. 10, No. 10, pp. 36-44, 2010. https://doi.org/10.5392/JKCA.10.10.036
  6. T. Jeon and C. Kim, "Design of Scheduler Considering Real-Time Characteristic and Fault-Tolerant in Embedded System," Journal of Korea Multimedia Society, Vol. 14, No. 1, pp. 76-84, 2011. https://doi.org/10.9717/kmms.2011.14.1.076
  7. T. Jeon and C. Kim, "A Real-Time Embedded Task Scheduler considering Fault-Tolerant," Journal of Korea Multimedia Society, Vol. 14, No. 7, pp. 940-948, 2011. https://doi.org/10.9717/kmms.2011.14.7.940
  8. http://www.intervalzero.com/, Accessed July 03, 2020.
  9. http://www.tenasys.com/intime-for-windows/, Accessed July 03, 2020.
  10. C. Song, S. Lee, and C. Lee, "Multiprocessor Windows XP Real-time Support," Journal of the Korea Computer Information Society, Vol. 20, No. 1, pp. 21-24, 2012.
  11. J. Kim, C. Song, and C. Lee, "Design of a Real- Time Porting Kernel for RTiK-Linux," Journal of the Korea Contents Association, Vol. 11, No. 9, pp.45-53, 2011. https://doi.org/10.5392/JKCA.2011.11.9.045
  12. Bong-Seok Lee, Windows Device Driver, Hanbit Media, 2009.
  13. Intel, Intel 64 and IA-32 Architectures Software Developer's Manual Volume 1 : Basic Architecture, September, 2009.
  14. Intel, Intel 64 and IA-32 Architectures Software Developer's Manual Volume 3 : System Programming Guide, 2009.
  15. Intel, Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2 : Instruction Set Reference, Intel, 2009.
  16. Intel, Intel 64 Architectures x2AP IC Specification, Intel 2008.
  17. M.E. Russinovich and D.A. Solomon, Microsoft Windows Internals 4th Edition, Microsoft Press, 2006.
  18. http://msdn.microsoft.com/en-us/library/ms 810029, accessed July 03, 2020.
  19. M. Ju, J. Lee, C. Jang, S. Kim, C. Lee "A Method to Support Real-time for User-level Robot Components on Windows," Journal of The Korea Contents Association, Vol. 11, No. 7, pp. 36-44, 2011. https://doi.org/10.5392/JKCA.2011.11.3.036
  20. A.K. Verma, S. Ajit, and M. Kumar, Dependability of Networked Computer-Based Systems, Springer, pp. 113-115, 2011.
  21. ILC DDC, MIL-STD-1553 Designer's Guide, 5th Ed., ILC Data Device Corporation, 1995.
  22. J. Park, A. Jo, H. Kim, J. Choi, Y. Heo, H. Jo at el, "Real-Time Support on the Tablet PC Platform," The Journal of the Korea Contents Association. Vol. 13, No. 11, pp. 541-550, 2013. https://doi.org/10.5392/JKCA.2013.13.11.541