아....

키보드를 들어버렸다 ㅋㅋㅋ 꽤나 긴 포스팅이 될 것 같은뎅 ㅠㅠ

사실 예전부터 정리한다 정리한다 하다가 못한 부분인데

졸업고사도 있고 하니, 다시 공부하는 김에 이곳에서 정리하여 둔다.

많은 이들이 Real-Time Operating System 을 이해하는데 조금이나바 도움이 되었으면 한다.

1. Foreground/Background System 

흔히들 Superloop 방식으로 많이 알고 있다. 왜??? while(1) 때문에 ㅋㅋㅋ
프로그램을 저 무한루프 안에 다가 다 때려 박아 주니까 ㅋㅋ 저 루프를 슈퍼루프 라고 부른다 ㅋㅋ
Atmega 계열, PIC 계열 등의 저급 MCU 코딩에 주로 사용하였을 것이다.

소형이면서 복잡하지 않은 시스템에 적합하다.

그렇다면 도대체 이놈의 슈퍼 루프가 전경(Foreground) 이냐 배경(Background) 이냐? ㅋㅋ

이것을 잘 알아두면 이야기가 쉽다. 또 프로그램을 어떻게 짜야할지도 감이 온다. 

답은!!! 백그라운드 이다. 즉 무한루프 안에서 여러가지 함수들이 쭈우우우욱 콜 콜 콜 되고 있어야한다는 소리.

그럼 전경은 뭐임????

정답은 !!!! ISR 입니다. Interrupt Service Routine !

Background 에서 열심히 작업을 하는데, 꼭 필요한 시기에 작업을 이행 해 주어야 할 것 만 같을때!!
이때 치고들어오는 것이지요. (배경, 너는 좀 쉬고있어. 내가 급하니까 재빠르게 좀 처리할께 의 느낌)

 말로만 들으니 감이 안오는가???

그림 나갑니다 ~ ㅋㅋ

 
백그라운드가 쭉쭉 일하는데 인터럽트가 걸리면 무조건 멈추고 인터럽트부터 처리를 해주고 다시 백그라운드로 복귀하고 있지용 ㅋㅋㅋ

코드를 어떻게 짜야할지 감이 오시나요??

예전에 우리 연구실에 있던 대장 노스페이스 아이가 아트메가 코드를 짜고있길래 뒤에서 보고 있었지요.
메인문에 슈퍼루프가 떡 하니 있는데 그 안에서 하는 일이 하나도 없더이다. ㅋㅋㅋㅋㅋ
그래서 물어보았죠. 왜 너는 메인문에 코드가 하나도 없냐? ㅋ
대장 왈 : 모든것은 인터럽트에서 처리해야하니까요 

알려주려해도 말을 듣지않아서 걍 말아버렸습니다만, 여러분들은 이런 생각을 하시면 안됩니다.

배경이란말이 왜 붙어있을까요? 저 슈퍼루프에서 시퀀셜하게 프로그램은 계속 돌아가고 있어야합니다.
인터럽트는 최소한의 시간에만 머물수있도록 해주어야 이 시퀀스들이 깨지질 않죠. 훗날 코드를 보며 이야기 할 기회가 있으면 그 때 자세히 알려드릴게요.

일단 전경/배경 시스템의 장점

1. 프로그램의 구조가 직관적이며 이해하기가 상대적으로 쉽다.
2. 간단한 프로그램에 짜기에 용의하다.
3. 커널에 의한 메모리손실이나 수행시간적 손실이 없다.

단점

1. 프로그램이 복잡해 질수록 코드를 짜기가 어렵다.
2. 모든 함수는 우선 순위가 같기때문에 프로그래머 자신이 순서대로 잘 돌수있게 코드를 잘 짜주어야 한다.
(즉, 손이 많이 간다는 소리지요잉~ ㅋㅋㅋ)
 

다음번에는 전경/배경/ 시스템에 반대되는 개념인 Kernel System 에 대해서 작성하겠습니다.
실질적으로는 여기서 부터가 정말 RTOS 기초의 시작이겠군요 ㅋㅋ
그럼 다음시간에 ~ 

 
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by J.Bear