본문 바로가기
장비&모션제어

MS 윈도우 기반 리얼타임OS - InTime

by ictlab 2009. 9. 24.


원문 : http://www.tpikorea.com/micronet-intime-techguide-RTOS.htm

INtime FAQ
http://www.tpikorea.com/micronet-intime-faq.htm




http://www.tenasys.com/technologies/rthypervisor/  
INtime Tech
INtime Top

리얼타임 OS란 무엇인가?

 리얼타임 OS란 무엇인가?
리얼타임 OS는 결코 어플리케이션을 고속으로 동작시키기 위한 OS도 아니고, CPU 가속기도 아닙니다.
어플리케이션을 고속으로 처리시키려면 고속 클락의 CPU를 사용하면 실현됩니다.
리얼타임 OS의 역할은 어플리케이션 시스템의 개발자나 프로그래머가 실행 타이밍이나 실행 시간을 계산한 대로 실행시킬 수 있는 것입니다.
다른 말로 하면 동작할 때마다 그러한 타이밍이나 시간이 흩어지지 않게 할 수 있는 OS라고도 할 수 있습니다.
영어 표현에서는 Deterministic(확정론적인) 태스크 스케쥴러라고 합니다.
산업용 시스템에서는 이것이 지극히 소중한 일로 이 시간이 흩어지면 정도가 높은 제어를 실시할 수 없거나, 가끔 장치나 기계를 망가뜨려 버리기도 합니다.
이것을 실현하기 위해서 리얼타임 OS에서는 각각의 응용 프로그램(스레드라든지 태스크라든지라고 말합니다)에 우선 순위(priority)를 붙이는 것으로, 프로그램의 실행 순위를 결정합니다.
복수의 프로그램이 동시에 동작 가능 상태가 되었을 때에는 리얼타임 OS는 우선도의 높은 프로그램을 먼저 실행시킵니다.
아무리 고속의 Pentium4 프로세서를 사용해도 Windows에서는 진짜 리얼타임(하드 리얼타임)을 실현할 수 없는 것은 자주 체험하고 있을 것입니다.
한편, CPU로서는 저속의 8비트 마이크로컴퓨터를 사용해도 리얼타임시스템을 만들 수 있습니다.
고속 CPU와 리얼타임 OS의 편성이 고성능의 리얼타임 시스템입니다.
또 하나의 리얼타임 OS로서의 요건은 인터럽트 처리가 응용 프로그램 레벨로 프로그래밍 할 수 있는 것입니다.
리얼타임 시스템에서는 복수의 프로그램을 효율적으로 동작시키기 위해서 어느A 프로그램이 이벤트라든지 사실상 기다리는 사이는 CPU 능력을 다른 프로그램을 실행시키기 위해서 할당합니다.
그리고 다시 처리를 해야 할 상황이 되면 우선 순위를 판단해 방금전의 프로그램을 재개하는 것입니다.
이 때 사실적 상태을 체크하기 위해서 정기적으로 프로그램이 스캔 하도록 하면 그 만큼 CPU 파워를 쓸데 없게 소비하게 됩니다.
리얼타임 OS에서는 이런 경우에 인터럽트의 기능을 사용해 최적인 프로그램을 합니다만, 그러기 위해서는 어플리케이션으로서 인터럽트 프로그램을 기술할 수 없으면 안됩니다.
Windows 시스템의 경우는 인터럽트 프로그램은 일반적으로 커널 모드의 드라이버 프로그램으로서 기술해, 일반적으로 고도의 프로그래밍 기술을 필요로 합니다.
INtime에서는 이 인터럽트 프로그램을 유저 모드로 실행시키도록 프로그래밍 할 수 있습니다.
이것은 위에도 말한 것처럼 드라이버 소프트웨어를 용이하게 작성할 수 있게 됩니다.

 INtime이란 무엇인가?
  INtime은 한마디로 말하면, Windows PC에 리얼타임성을 부가하는 확장 소프트웨어입니다.
INtime을 인스톨 한 PC에서는 INtime 커널과 INtime 관련 소프트웨어는 Windows의 서비스로서 동작하고 있습니다만, INtime 커널 자신은 단독으로도 동작 가능한 32비트 리얼타임 커널입니다.
INtime 커널은 인텔사의 리얼타임 OS 「iRMX」와 같은 커널을 사용하고 있어 산업계에서는 25년 이상의 실적이 있는 커널로 산업용 시스템으로서 24시간 365일의 연속 운전에도 견딜 수 있는 신뢰성의 높은 소프트웨어입니다.
INtime를 인스톨 한 Windows PC를 산업용 시스템의 제어장치로서 사용하는 경우에는 통상 제어나 연산, 데이터 수집, 통신등의 리얼타임성을 필요로 하는 응용 프로그램은 INtime 관리하의 프로세스/스레드로서 또 맨 머신 인터페이스(HMI,GUI) 기능이나 데이타베이스 기능, 고도의 네트워크 기능 등은 Windows 관리하의 프로그램으로서 구성합니다.
각 각의 응용 프로그램은 마이크로소프트의 VisulaStudio를 사용하고, 주로 VC/C++언어로 기술합니다.
 INtime의 특징
  INtime 카탈로그나 INtime 웹페이지로 INtime의 특징을 말하고 있습니다만, 여기에서는 조금 다른 관점으로부터 INtime의 특징이나, 다른 리얼타임 OS와의 차이에 대해 말해 보겠습니다.
  1) INtime은 인텔사가 개발한 iRMX 커널을 사용하고 있는  인텔의 x86/CPU에 특화한 소프트웨어입니다.
다른 리얼타임 OS에는 다양한 CPU로 동작하도록 만들어져 있는 것도 있습니다만, 이 점은 단점인 것과 동시에, x86/CPU의 특성을 살리고 있다고 하는 의미에서는 장점이기도 합니다.
  2) INtime을 인스톨 한 Windows 시스템에서는 Windows와 INtime, 2개의 OS(커널)가 동작하는 멀티 OS(커널)의 시스템이 됩니다.
리얼타임 OS로 이러한 구조를 도입하고 있는 것은 적습니다만, INtime의 경우에는 이 2개의 OS를 CPU가 가지고 있는 하드웨어 멀티태스킹의 기능으로 하드적으로 가고 있습니다.
다른 말로 하면 1개의 CPU 하드웨어를 2개의 가상 CPU로서 사용하고 있게 됩니다.
따라서 Windows와 INtime의 변환은 하드웨어적으로 바뀝니다만, 그 때문에 소프트웨어적으로 바꾸는 경우에 비해 변환 시간이 약간 늦어지고 있습니다.
그렇지만 그 시간은 수μ초에 대해서+1~+2μ초 정도이기 때문에 거의 문제가 되지 않습니다.
  3) 리얼타임 OS를 사용한 시스템에서는 응용 프로그램으로부터 I/O공간에 자유롭게 액세스 할 수 있는 것을 얻을 수 있습니다.
Windows의 프로그램에서는 자유롭게 I/O공간에 액세스 하지 못하고, 커널 모드로 동작하는 디바이스 드라이버가 경유 되어, 쓰기나 신뢰성에 불만이 남습니다.
INtime에서의 응용 프로그램은 Windows와 같이 보호된 유저 모드(링 3)로 동작합니다만, 응용 프로그램으로부터 직접 I/O공간에 I/O 할 수 있습니다.
이것은 INtime이 Windows와는 다른 가상 CPU를 사용하는 하드웨어 멀티태스킹을 사용하고 있기 때문에 실현될 수 있는 것입니다.
  4) 사실 이것은 시스템의 신뢰성이나 디버거 기능과도 큰 관계가 있습니다.
다른 리얼타임 OS의 상당수는 I/O공간에 직접 입출력을 실시할 수 있듯이 하기 위해, x86/CPU로 동작하는 경우에 Windows의 드라이버와 같이 커널 모드(링 0)로 어플리케이션이 동작하게 되어 있습니다.
Windows 시스템의 크래쉬가 디바이스 드라이버의 불편으로 발생하듯이, 커널 모드로 달리는 응용 프로그램에 불편이 있으면 OS나 시스템 영역을 파괴해 시스템 전체에 데미지를 받는 일이 있습니다.
이러한 어플리케이션의 버그가 완전하게 다 취할 수 있지 않은 상태로 테스트를 해도 시스템이 크래쉬 해 버리면 디버거조차 동작할 수 없습니다.
그에 대한 INtime의 경우는 유저 모드(보호 모드)로 동작하기 때문에, 응용 프로그램이 불완전한 상태로 폭주하는 일이 있어도 OS나 다른 어플리케이션은 보호되고 있기 때문에 시스템이 정지하거나 디버거가 정지하는 일은 없습니다.
INtime에서는 Windows의 GUI 기능을 사용한 리얼타임 디버거를 이용해 어플리케이션의 고도의 디버그를 셀프로 실시할 수 있습니다.
  5) 또, 같은 이유로 INtime 시스템에서는 리얼타임용의 드라이버 소프트를 유저 모드(링 3)로 일반의 어플리케이션 소프트를 작성하는 것과 같은 감각으로 개발할 수 있습니다.
아날로그 입출력이나 디지털 입출력과 같은 비교적 단순한 I/O는 어플리케이션으로부터 직접 입출력할 수 있기 때문에 드라이버는 불필요합니다. C언어의 표준 함수를 사용해 입출력합니다.
....
 다른 리얼타임 OS라는 비교
  한마디로 리얼타임 OS라고 말해도, 휴대 전화나 디지털 가전등의 비교적 소규모의 시스템에 사용되는 iTRON와 같이 리얼타임 OS라고 하는 것보다 리얼타임 모니터와 같은 것으로부터, 공작기계나 제조 장치, 플랜트 제어등과 같은 비교적 대규모 시스템에 사용되는 INtime나 VxWorks와 같은 본격적 리얼타임 OS까지 다양합니다.
현재 일반의 유저에게 잘 사용되고 있는 리얼타임 OS와 그 특징을 표에 정리해 보았습니다.

  INtime RTX VxWorks QNX RT-Linux WindowsCE iTRON
대상 CPU x86 x86 다수 x86 x86 다수 다수
비트수 32 32 8,16,32 32 32 16,32 8,16,32
Disk 有,無
GUI WindowsXP WindowsXP 독자 특수 Linux WinCE

자주 잡지등에서 다른 리얼타임 OS도 포함해 소개하고 있는 경우가 있습니다만, 그러한 많게는 특정의 기업이나 어플리케이션으로 사용되는 것은 있어도, 일반의 유저에게는 극단적으로 정보가 적거나 서포트가 한정되어 있거나 해 실제로 도입하는 것은 그만큼 용이하지는 않습니다.
예를 들면 휴대 전화로 잘 사용되고 있는 신비안 등은 라이센스량은 많습니다만, 주로 휴대 전화기 메이커가 채용하고 있어 라이센스수가 수백이라든지 수천에서는 상대에게도 해 주지 않는다고 생각합니다. 또, 그 기술은 휴대 전화기 메이커내에서 닫고 있어 공개되고 있지 않으므로 범용의 리얼타임 OS라고는 말하지 못하고, 일반의 유저가 선정의 대상이 되는 리얼타임 OS가 아닙니다.
이러한 「특수」리얼타임 OS에 종사하는 엔지니어도 많이 있습니다만, 대부분은 파견형의 소프트 회사로부터 파견된 엔지니어가 단지 「특수한」어플리케이션의 프로그래머로서 개발에 종사하고 있는 것만으로 다른 시스템에의 응용할 수 있는 상황이되지 못하고 않습니다.

리얼타임 OS를 비교하는데 있어서 자주 태스크의 변환 시간이나 인터럽트의 응답성등의 리얼타임 성능에 관심을 갖고 계십니다만, WindowsCE를 제외하고 그러한 성능차이는 거의 없습니다.
원래 성능 비교를 하기 위해서는 CPU나 주파수등의 조건을 갖춘 논의가 필요합니다만, 만일 그러한 하드웨어의 조건을 같게 하면 거의 같은 성능을 얻을 수 있는 것입니다. 그 이유는 어느 리얼타임 OS도 대략적으로 말하면, 그러한 성능을 실현하는 구조는 거의 같기 때문에입니다.
따라서 최근에는 잡지나 논문등에서도 그러한 성능 비교를 하는 것은 거의 없어졌습니다. 오히려, 개발툴이나, GUI 기능(맨 머신 시스템)을 이용할 수 있는 주변기기나 드라이버의 종류, 거기에 디버그 툴의 기능의 좋음과 좋지 않음이 관심적으로 되어 있습니다.

 

INtime에서 본 다른 리얼타임 OS의 평가】          ···오해와 비판을 두려워하지 말고···

 

1.    iTRON
iTRON는 비교적 소규모의 원 보드 마이크로컴퓨터 등에 짜넣어져서 사용되는 리얼타임 커널로, 통상 라이센스 프리입니다.                      

      표준에서는 Disk I/O시스템이나 GUI 라이브러리, TCP/IP는 제공되지 않기 때문에 그러한 사용법에는 향하지 않습니다. 단 TCP/IP에 대해서는 제공하고 있는 벤더가 있는 것 같습니다. 일반적으로 iTRON를 달리게 하는 표준의 하드웨어는 없기 때문에 통상은 어플리케이션 소프트 웨어의 개발에 앞서 CPU 보드의 개발을 실시하는지, iTRON에 대응한 보드를 선정할 필요가 있습니다.
잡지나 기술서에서는 자주 이 OS(모니터)가 다루어집니다만   INtime이 대상으로 하고 있는 규모의 시스템에서는 검토의 대상으로는 되지 않습니다.

2.    WindowsCE
당초 리얼타임 OS로 이름을 붙여 등장한 WindowsCE는 마이크로소프트의 의도와는 별도로(혹은 혹시 의도대로) PDA등의 소형 정보 단말에 사용되는 것은 있어도 리얼타임 OS로서의 기능을 살려 쓰여지는 방법은 되지 않았다고 말할 수 있습니다. 그 이유는 몇 개인가 있습니다만, 다른 리얼타임 OS 정도의 리얼타임 성능이 나오지 않는 것도 이유의 하나입니다. 1 ms보다 빠른 리얼타임성은 실현될 수 없는 것 같습니다. 이것은 최근 마이크로소프트가 WindowsCE와 iTRON를 조합한 더블 OS를 제안하고 있는 것 부터도 알 수 있습니다.
또, WindowsCE는 다른 Windows 제품과 같이 시중에서 패키지로서 판매되고 있지 않습니다. 그것은 WindowsCE가 OEM 제품이며, 하드웨어를 특정하지 않으면 WindowsCE 소프트웨어의 구성이 정해지지 않기 때문입니다. 즉 PDA의 카시오페아로 사용되고 있는 WindowsCE는 카시오페아 전용의 WindowsCE이며, 다른 WindowsCE기로 사용할 수 없습니다. WindowsCE를 짜넣는 용도의OS로서 사용하기 위해서는 iTRON등과 같이 하드웨어의 개발로부터 실시하지 않으면 안됩니다.

3.    QNX
QNX는 북미를 중심으로 예상 이상으로 보급해 버린 리얼타임 OS입니다. 강력한 판매 체제의 탓도 있어 많이 보급되어 있습니다. 비교적 규모의 큰 범용의 리얼타임 OS로서 붙이는 누적 라이센스에서는 VxWorks에 뒤잇는 2번째지요. QNX의 훌륭함은 풍부한 라이브러리와 다양한 드라이버군입니다. 특히 GUI 라이브러리는 Windows의 화면 표시를 견딜지도 모릅니다.
QNX가 동작하는 하드웨어 플랫폼은 x86CPU의 PC아키텍쳐입니다만, QNX에서는 GUI에 QNX 독자적인 방식을 채용했기 때문에, 어느 PC에서도 동작한다고 말하는 것은 아닙니다. PC로 사용되고 있는 그래픽 팁 혹은 그래픽 보드는 CPU 이상으로 기술 혁신의 격렬한 분야에서 신제품의 PC가 시장에 나올 때마다 하드웨어가 변경이 되어 있다고 해도 과언이 아닙니다. 통상 이러한 그래픽 하드웨어의 드라이버 소프트는 하드웨어 메이커가 준비를 해 제공합니다만, 그것은 주로 Windows용의 드라이버입니다.
QNX용의 그래픽 드라이버는 QNX 벤더가 개발하던지 유저 자신이 준비할 수 밖에 없습니다. 그렇지만 이 그래픽 드라이버의 개발에는 대단한 노력과 비용이 들며, 실제는 그래픽 하드웨어를 고정해 사용하게 되어, 결과적으로 어느 PC에서도 동작하는 것이 불가능한 것입니다.

4.    VxWorks
제일 팔리고 있는 리얼타임 OS입니다. 주요한 CPU 팁에도 대응하고 있고, iTRON와 같은 비교적 소규모의 편입 보드 컴퓨터용의 리얼타임 모니터 레벨로부터, 예를 들면 INtime과 같은 하드 디스크나 그래픽 기능을 가지는 비교적 규모의 큰 시스템까지 대응하고 있습니다. 하드웨어 플랫폼으로서는 PC 이외에 VME 보드 컴퓨터라든지 유저 고유의 보드 컴퓨터로 사용할 수 있도록 구성할 수 있습니다. (어느 쪽인가 하면 PC아키텍쳐로 사용하는 케이스보다 VME 보드 컴퓨터로 사용되는 케이스가 많은 듯 합니다)
VxWorks는 GUI 기능으로서 X-Windows와 같은 Unix 호환기능을 사용할 수 있습니다만, 이 경우도 그래픽 드라이버는 VxWorks의 벤더 혹은 유저 자신으로 준비할 필요가 있습니다. 그래픽 팁을 변경하면 새로운 팁의 드라이버 소프트를 준비하지 않으면 시스템이 동작하지 않게 됩니다. 그 때문에 장기 안정공급을 필요로 하는 산업용 시스템에서는, 그래픽 팁이나 보드를 시작해 하드웨어의 재고 관리를 하거나 매점을 하지 않으면 안됩니다. 기술 혁신이 격렬한 컴퓨터 부품은 극히 짧은 주기에 신제품에 옮겨지고 있기 때문에, 시장으로부터 장기간 안정에 부품을 입수하는 것이 곤란하기 때문에입니다.

5.    RTX
RTX는 INtime에 잘 닮은 Windows와 협조 동작을 하는 리얼타임 커널입니다. RTX도 INtime도 GUI 하부조직으로서 Windows(2000/XP)가 동작하기 때문에 VxWorks나 QNX와 같은 그래픽 팁의 드라이버의 문제가 없습니다. 세세한 부분을 제외하고 RTX와 INtime는 사양적으로 잘 닮은 OS입니다만, 다음과 같은 차이가 있습니다.

     I.. INtime에서는 Windows와 INtime 커널의 변환은 x86CPU의 하드웨어 기능을 사용해서 가고 있습니다만, RTX에서는 HAL 레벨로 소프트웨어적으로 가고 있습니다.

      II.. INtime 커널과 INtime 어플리케이션은 Windows와는 완전하게 독립한 환경에서 동작하고 있습니다. 그 때문에 INtime 어플리케이션은 동작이 보호된 유저 모드(링 3)로 동작하기 때문에 어플리케이션의 버그 등에 대해 터프합니다.
한편, RTX의 경우에는 RTX 커널과 RTX 어플리케이션은 Windows 커널과 같은 환경의 커널 모드(링 0)로 Windows의 드라이버로서 동작하고 있습니다. 이것은 리얼타임 어플리케이션이 OS와 같은 특권 모드로 동작하는 것을 의미해, 어플리케이션의 버그등에서 시스템 전체를 크래쉬 시키는 위험성이 있습니다.

       III. 상기는 디버거에 차이가 나옵니다. 개발 도중의 아직 버그를 포함한 상태로 어플리케이션을 디버그 하는 경우, INtime에서는 어플리케이션의 버그에 의해서 시스템이 크래쉬 할 것은 없기 때문에, 하나의 어플리케이션으로서의 디버거를 사용할 수 있습니다. 따라서 Windows도 정지할 것은 없습니다. INtime에는 표준으로 다이나믹 원시 코드 디버거가 부속되어 있습니다.
RTX의 경우는 어플리케이션의 버그에 의해서 시스템이 정지해 버릴 가능성이 있기 때문에, 고도의 디버거에서도 그것 자신이 정지해 버릴 가능성이 있습니다. RTX에서는 이것을 피하기 위해서 다른 PC를 타겟으로 접속해 리모트로 디버그를 실시하는지, Windows 및 RTX 커널을 정지시켜 정적인 디버그로 대응합니다.

      IV. INtime의 개발과 기능 추가(버전 업)에는 일본인의 엔지니어도 종사하고 있습니다. 따라서 소프트웨어 자체나 방대한 헬프 파일, 메뉴얼등이 완전하게 일본어화 되고 있습니다.  또, 일본내에서의 기술 서포트도 신속하고 고도의 서비스를 제공하고 있습니다.

최신의 INtime2.23이후에서는 리얼타임 어플리케이션은 종래의 INtime-API 이외에, iWIN32API나 RTX-API도 서포트하고 있습니다. Windows만으로 소프트 리얼타임 시스템을 구축하고 있는 고객이나, RTX로 시스템이 실현되고 있는 고객도 용이하게 INtime로 이행할 수 있습니다.

 

그 외의 테마
  • 시퀀서(PLC)
  • iRMX에 대해
  • 셀프 개발 환경
  • 산업용 시스템에 INtime를 사용하는 목적
  • 왜 Windows를 선택하는지
  • 마이크로 넷이 제공하는 산업용 시스템 솔루션과 INtime
  • 인텔사와의 관계
  • 마이크로소프트사와의 관계
  • INtime와 iRFW(iRMX for Windows)의 차이
  • 디버거에 대해
  • INcase에 대해
  • INtime의 장기 안정공급에 대해

 

 

 

 

 

 

 

자동화 장비 PC 제어를 위한 통합 개발툴  XMachineStudio

https://ictlab.tistory.com/331