크리에이티브 커먼즈 라이선스
Creative Commons License

아.. 제목부터가 굉장히 거부감 들게 생겼네 ㅋㅋ

이것은 뭐 엄청나게 외우고 확실하게 이해를 해야만 프로그래밍 할수 있는 것은 아닙니다 ㅋ

하지만 한번쯤은 들어보시고 생각을 해보시면 훗날 생길수 있는 문제들에 대해 접근할 때 유용하실 것이라 생각됩니다. ㅋㅋ 물론 이것때문에 문제가 된다면 오실로스코프로 조낸 찍어가면서 봐야하는 큰 문제이기 때문에 많이 접하실 일을 없을 것같아요 ㅋㅋㅋ

그리고 커널을 사용함에도 불구하고 저런 부분이 크리티컬한 문제로 다가오는 경우라면???

ㅋㅋ 엄청나게 대단한 일을 하시는 분이실 테니까 저보다 잘 아실테구요 ㅋㅋ

근데 왠만한 펌웨어에서는 크게 문제가 되질 않습니다 ㅋㅋ 또 내가 잘 몰라도 커널이 알아서 스케쥴링 잘 해줄것이라 믿어 의심치 않고 있어요 ㅋㅋ

사설은 여기까지 ㅋㅋ
이제 또 한번 설을 풀어 볼까요 ㅋㅋㅋ

( 아 요고 쓰고 2개만 더 쓰면 계획했던 RTOS 포스팅이 일단락 되는군요 ~ 긴 여정이였습니다)

(1) 인터럽트 지연시간 (Interrupt Latency)

간단합니다.

크리티컬 섹션을 처리하기 위해서 인터럽을 비활성화 해놓고 처리가 끝나면 다시 활성화 한다고 하였지요??

이렇게 인터럽트가 비활성화 되어있으면 돌아야하는 인터럽스 서비스 루틴이 실행이 안되고 지연이 되는 것이지요? ㅋㅋ

즉, 인터럽트가 비활성화 되어있음으로 인해 인터럽트가 지연되는 시간을 의미합니다.

인터럽트가 비활성화 된 최대 시간 + ISR 에서 최초 명령을 시작하려는 시간 = Interrup Latency

(2) 인터럽트 응답시간 (Interrupt Response)

초점은 같습니다. 하지만 한가지를 더 고려해 주는것이지요~

인터럽트 지연시간을 지나 인터럽트로 들어가는 시점까지가 아니라 실지로 ISR 에 사용자가 싸놓은 첫번째 코드를 실행할때가지 얼마의 시간이 걸렸는가??? 입니다.

뭔 차이가 있냐구요?/ ㅋㅋ

잘 생각해보세요~ ㅋㅋ 인터럽스 서비스 루틴의 코드를 실행하기 위해서는 원래 돌고있던 테스크에 해당되는 CPU 문맥을 저장해 놓아야 하잖아요 ㅋㅋ 그 시간까지 고려를 해서 생각한 시간이 인터럽트 응답시간입니다 ㅋ

즉!!!

인터럽트 응답시간 > 인터럽트 지연시간

의 공식은 항상 성립하는 참인 명제가 되는 것이지요~


인터럽트 지연시간 + CPU 문맥을 저장하는 시간 = Interrupt Response

가 되는 것입니다~

전경/배경 시스템과 비선점형 커널에서는 위와 같지만, 선점형 커널에서는 한가지가 더 추가됩니다.
위의 두개의 상황은 따로 커널이 제공하는 특별한 함수를 호출하지 않아도 큰 무리가 없지만, 선점형 커널에서는 ISR 이 진행중인것을 알려주어 커널로 하여금 인터럽트가 중첩되는 것을 알 수 있도록 해주는 함수를 실행해야 하거든요

그래서 아래와같이 공식이 살짝 바뀌어용~

인터럽트 지연시간 + CPU 가 문맥을 저장하는 시간 + 커널의 ISR 진입함수 실행시간
                                                                                           = Interrupt Response


(3) 인터럽트 복귀시간 (Interrupt Recovery)

이제 초점이 살짝 바뀝니다
지금까지는 인터럽트 진입 시점에 관해 논했다고 하면 이제 인터럽스 서비스 루틴이 끝나고 원래 실행 테스크나 배경 시스템으로 돌아오려는 시점에 대해서 논하게 됩니다.

ISR 이 끝난 시점에서 얼마나 빠르게 원래 돌던 코드로 돌아올수 있는지를 말하는 것이지요

반대로 생각하면 되겠지요??

CPU 가 문맥을 복구하는 시간 + 인터럽트로부터 복귀 명령을 수행하는 시간 = Interrupt Recovery

이것도 전경/배경 시스템 , 비선점형 커널에 해당되는 것이구요 선점형 커널에서는 하나의 시간이 더 필요하지요~
선점형 커널과 나머지 커널간의 차이점을 앞선 강의에서 이해하셨다면 답을 유추 하시는 분도 있으실 것이라 생각됩니다.

바로 !!!! 최상위 우선순위 태스크를 결정하는 시간 이지요~

최상위 우선순위 태스크를 결정하는 시간 + 최상위 우선순위의 Context Swtching 시간 + 인터럽트로부터 복귀 명령을 수행하는 시간 = Interrupt Recovery

이해가 되셨습니까???

한번만 딱 읽고 이해하시기는 약간 어려울 수도 있습니다.
하지만 앞선 내용을 찬찬히 이해하시고 한번더 읽어보시면 무리없이 이해하실 수가 있어요 ㅋㅋ

그래서 해당되는 내용의 그림을 요 아래쪽에 배치한것입니다~

그림보고 글을 읽다보니까 다 아는 것같긴 한데 확실히 머리에 안박히더라구용

그래서 위의 글을 먼저 읽으시고 그림을 보시고 "아 저쉐끼 그림을 왜 아래다 놔뒀어 그림보니 알아먹기 좋구만" 하시면서 위에서 다시한번 스윽 훑어보시고 살펴보시면 여러분의 지식이 되실것이라 믿어 의심치 않습니다 ㅋㅋㅋ

(아... 이러다 세상 모든 사람들이 나와 같은 수준의 지식을 갖겠군 ㅋㅋㅋ 그사이에 저는 더욱 발전해서 더 많은 내용을 포스팅 하겠습니다 ㅋㅋㅋ 스스로 자극을 받는 요론 자세 ㅋㅋㅋㅋ)



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


티스토리 툴바