Real Time OS를 왜, 어디서, 어떻게 사용하는지 알고싶습니다.

feelpassion의 이미지

후배랑 둘이서 공부하다가 문득 우리가 이걸 왜 공부하지?
라는 원론적인 질문에 봉착하게 되었습니다.^^;;

a - 왜 RTOS를 쓰지?
b- 빠른 응답이 필요한 미사일 등에 쓰이지...
a- 빠른 응답은 인터럽트로 처리해도 되자나....
글구 미사일빼고는 그렇게 빠른 응답이 필요한 데가 있나?
b- 예를 들면 프레스기에 손이 끼일 수도....^^;;
a- 것두 인터럽트면 끝나자나....
b- 많은 자원을 관리하기가 어렵지 않나?
a- 그런가? 그래도 굳이 OS를 쓰지 않아도 가능하지 않을까?

뭐 이런 식으로 따지다 보니까 짧은 지식으론 RTOS 존재의 당위성에 접근하기가 힘드네요^^;;
고수님들의 정곡을 찌르는 답변 부탁드립니다~~^^;;

bus710의 이미지

펌-

실시간시스템은 시스템 내/외부에서 이벤트가 발생했을 때, 이벤트 발생 시간과 그 이벤트 처리를 시작 할때 까지의 지연 시간이 미리 제시된 시간을 넘지 않는 시스템을 의미합니다. 이벤트 발생과 처리가 실시간으로 이루어지는 시스템입니다. CPU 용량을 높여서 처리속도를 증가시키는 쪽 보다는, 속도는 느리더라도 이벤트 처리 시간을 보장할 수 있게끔 연구하는 분야입니다. 물론 처리속도도 당연히 중요시합니다.

from
http://blog.naver.com/linuxdude/120004460365

=================

라고 하는 군요.^^
아.......물론 수십번 읽어본 글귀가 아닐까....하는 생각도 들었지만.
여하튼 플럭박스는 정말 빠르군요^^

life is only one time

hb_kim의 이미지

OS/RTOS 없이 프로그래밍을 해도 OS/RTOS 를 써서 할수 있는 일을 거의 모두 할수 있습니다. 다만 OS/RTOS 를 쓰면 폼나게 할수 있죠. 아래에 제일 중요하다고 생각하는것 몇가지만...

멀티 태스킹:
OS 없이 여러가지 일을 할수 있는 프로그램을 짜면 프로그램의 복잡도가 일의 갯수의 승수에 비례하게 됩니다. 한번 해보시면 압니다.

시스템 하드웨어 제어:
프로그램을 만드는게 기반 하드웨어의 이해를 돕기 위한 공부차원이 아니라면, 그런 기본적인것은 다른 사람이 이미 해놓은것을 쓰고 그위에 제품에 필요한 기능을 구현해서 얹는게 낫겠죠. 대량 생산되는 제품을 만들때는 가끔 직접 만들어서도 쓸수도 있죠.

부가적인 기능:
제품의 핵심기능에 해당하지 않는 모듈 - 예, 파일 시스템이나, 부수적인 하드웨어의 드라이버 등- 은 직접 만드는것보다는 그냥 구해서 쓰는게 낫겠죠.

OS 와 RTOS 의 차이점은 다른분이 설명해주셨네요. 요새는 CPU 들어간 것중에 아주 간단한것 아니면 거의 RTOS 을 쓴다고 보시면 맞을겁니다.

greeny의 이미지

feelpassion wrote:
후배랑 둘이서 공부하다가 문득 우리가 이걸 왜 공부하지?
라는 원론적인 질문에 봉착하게 되었습니다.^^;;

a - 왜 RTOS를 쓰지?
b- 빠른 응답이 필요한 미사일 등에 쓰이지...
a- 빠른 응답은 인터럽트로 처리해도 되자나....
글구 미사일빼고는 그렇게 빠른 응답이 필요한 데가 있나?
b- 예를 들면 프레스기에 손이 끼일 수도....^^;;
a- 것두 인터럽트면 끝나자나....
b- 많은 자원을 관리하기가 어렵지 않나?
a- 그런가? 그래도 굳이 OS를 쓰지 않아도 가능하지 않을까?

뭐 이런 식으로 따지다 보니까 짧은 지식으론 RTOS 존재의 당위성에 접근하기가 힘드네요^^;;
고수님들의 정곡을 찌르는 답변 부탁드립니다~~^^;;

RTOS가 필요한 프로젝트를 해보면 압니다. -_-;;;
RTOS가 OS없이 쓰는것보다 빠른 응답을 하지는 않겠지요
Real-time특성이 필요한 여러 task 들을 통일된 방법으로
다룰 수 있다 고 하면 대충 맞는 답이 될 것 같습니다.

alsong의 이미지

akudoku wrote:
펌-

실시간시스템은 시스템 내/외부에서 이벤트가 발생했을 때, 이벤트 발생 시간과 그 이벤트 처리를 시작 할때 까지의 지연 시간이 미리 제시된 시간을 넘지 않는 시스템을 의미합니다. 이벤트 발생과 처리가 실시간으로 이루어지는 시스템입니다. CPU 용량을 높여서 처리속도를 증가시키는 쪽 보다는, 속도는 느리더라도 이벤트 처리 시간을 보장할 수 있게끔 연구하는 분야입니다. 물론 처리속도도 당연히 중요시합니다.

from
http://blog.naver.com/linuxdude/120004460365

=================

라고 하는 군요.^^
아.......물론 수십번 읽어본 글귀가 아닐까....하는 생각도 들었지만.
여하튼 플럭박스는 정말 빠르군요^^

RTOS라고 해서 빠른건 아니구요.

A(1초내로) , B(10초내로)작업이 있을때 B에게 CPU시간을 할당하지 않게 할수 있습니다. A를 실행하다가 B로 스케쥴돼어 버리면 1초 내로 못 끝낼수도 있습니다. CPU능력상 가능하데도 불구하고...
개발시에 보다더 정밀하게 process를 제어해서 작업이 RT에 가깝에 튜닝하기 쉽죠. win2000이나 linux에서는 힘들죠.

그나저나 백수 언제 탈출하냐... ㅡㅡ; 배고파라.

cbycby의 이미지

Quote:
a - 왜 RTOS를 쓰지?
b- 빠른 응답이 필요한 미사일 등에 쓰이지...
a- 빠른 응답은 인터럽트로 처리해도 되자나....
글구 미사일빼고는 그렇게 빠른 응답이 필요한 데가 있나?
b- 예를 들면 프레스기에 손이 끼일 수도....^^;;
a- 것두 인터럽트면 끝나자나....
b- 많은 자원을 관리하기가 어렵지 않나?
a- 그런가? 그래도 굳이 OS를 쓰지 않아도 가능하지 않을까?

--> 빠른 응답이 아니라, 정확한 실행 보장에 더 무게를 두어야
할것 같습니다.
만약, 전투기에서 미사일 발사를 해야하는데, 발사 버튼을 누른순간
다른 작업때문에 지연이 발생한다면 이는 크나큰 문제가 될 수 있을것입니다.

http://www.korone.net QT 커뮤니티 사이트

feelpassion의 이미지

감사합니다^^ 많은 도움이 되었습니다^^

남으로 창을 내겠소.
밭이 한참갈이 괭이로 파고 호미론 김을 메지요.
구름이 꼬인다 갈리있소. 새들의 노래는 공으로 들으랴오.
강냉이가 익거든 와자셔도 좋소.
왜 사냐건 웃지요.

mach의 이미지

time constraint

* 일반 운영체제(Linux, Unix, Win32)와 차이점은 모든 작업에 대해, 시간 제약성을 갖는것 입니다.

* 지정된 시간내에 작업을 완결하지 못하면, 실패로 보는 시각입니다.

* 만일 지정된 시간내에 문제를 해결하지 못하고, 아주 근소한 시간 후에 문제를 풀어 정답을 구했다면, 실패입니다.

* 답이 아니라, 일단은 시간입니다.

이러한 기본 생각을 가지고 코딩한다면, 좀 아햏햏해집니다.
이를 보다 쉽게(?) 할 수 있는 기본 플랫폼이 있다면 좋겠지요.
그런 기본 시스템(OS)가 있다면, RTOS입니다.
장점은 그 시스템의 behavior가 예측가능하겠지요. 즉, 어떤 데이터를 처리하는데 걸리는 시간은 얼마, 최대성능은 얼마를 보장할 수 있을것입니다.

* 참고로, 인터럽트가 빠르다고 생각하시면 안됩니다. 느립니다. 인터럽트의 장점은 단지 CPU가 IO말고, 연산(computing)에 주력할 수 있도록 도와주는 메카니즘일뿐. 속도는 다른 연산에 비해 아주 느립니다. 폴링이 빠르지요.그러나, 폴링은 CPU타임을 사용하니까. 항상 IO바운드인지, 아니면 Computing 바운드인지를 고려해야 합니다. 음, DMA도 있군요.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.