STM32F407_FreeRTOS_1_Kernel System과 전경/배경 시스템
STM32F407_FreeRTOS_1_커널 시스템과 전경/배경 시스템
앞선 포스팅은 본격적으로 FreeRTOS를 시작하기에 앞서 필수로 알아야하는 내용과 알면 좋은 내용과 같은 기본 내용을 간단하게 정리해봤습니다.
이번 포스팅은 기본 내용 중 커널 시스템과 전경/배경 시스템에 대해서 더 자세하게 정리해봤습니다.
1. 전경/배경 시스템(Foreground/Background System)
1.1 전경/배경 시스템(Foreground/Background System)이란?
- 임베디드 프로그램이 한 개의 SuperLoop로 구성된 배경 프로세스(Background Process)와
Timer, Ext-interrupt ISR과 같은 전경 프로세스(Foreground Process)로 구성되어 있는 시스템.- 임베디드 하드웨어의 각 기능들을 초기화하는 setup을 시작으로 loop 함수에 의해 각 각의 하드웨어가 순차적을 처리됨.
- 타이머나 외부 인터럽트와 같은 하드웨어 인터럽트를 처리하는 인터럽트 처리함수(ISR)가 있음.
1.2 전경/배경 시스템(Foreground/Background System) 특징
- 각 기능들에 대한 함수를 순차적으로 처리함.
- 순차적 <-이 단어에 주목해야합니다.
- 위의 사진과 같이 ‘회색’->’갈색’->’분홍색’->’노랑색’->’초록색’->’하늘색’ 순으로 loop가 진행됩니다.
- 어느 상황에서도(막말로 하늘에 천재지변이 닥쳐도) 위의 loop 순서는 제품 동작중엔 절대로 변경불가합니다.
- ‘회색’일을 하는 도중, ‘노란색’일을 해야하지만, 바로는 못하고 중간에 있는 모든 일들을 끝내고 할 수 있습니다.
- ‘초록색’일을 빨리 해야하는데 ‘분홍색’일이 너무 오래 걸려서 못하고 있는 상황도 나올 수 있습니다.
- 전경/배경 시스템은 구조가 간단하다는 장점은 있지만
각 각의 일에 대해 유연성 및 Deadline에 대한 결정성을 보장하지 못하는 단점이 있습니다.
(난 이 일을 빨리 시작하고 싶은데 그러지 못하고 빨리 끝내고 싶은데 앞선 일을 다하지 못하면 빨리 끝낼 수 없어.)
2. 커널 시스템(Kernel System)
2.1 커널 시스템(Kernel System)이란?
- 임베디드 프로그램에 커널(Kernel)을 추가하고 내가 해야하는 기능들을 각 각의 함수(Task)로 나누어서 구성하는 시스템.
- 각 각의 Task에는 각 기능들에 대한 setup과 loop로 구성(main loop가 여러개!)
- 그 외에도 각 각의 Task에 우선순위(Priority)를 두어 뭐가 더 중요한지 정의하고
Task를 수행하는 것은 커널(Kernel)에 맡김.
2.2 커널 시스템(Kernel System) 특징
- 각 기능들에 대한 함수(Task)를 커널이 알아서 처리함.
- Superloop란 개념이 없습니다. 내가 만든 Task가 모두 loop입니다.
- 각 각의 Task가 개별적으로 loop를 돌면서 작업에 대한 처리를 하게 됩니다.,
- ‘회색’일을 하는 도중, ‘노란색’일을 해야할 때, 커널의 Scheduler가 알아서 ‘회색’일을 멈추고 바로
‘노란색’일을 하도록 처리해줍니다. 전에 하고 있는 일을 끝내지 못해도 중간에 급한 일을 먼저 할 수 있습니다. - ‘초록색’일을 빨리 해야하는데 ‘분홍색’일이 너무 오래 걸려서 못하고 있습니다.
만약, ‘분홍색’일이 기한(Deadline)넘어도 끝내지 못한다면, 커널의 Scheduler가 강제로 다음 일을 하도록 처리해줍니다.
- ‘회색’일을 하는 도중, ‘노란색’일을 해야할 때, 커널의 Scheduler가 알아서 ‘회색’일을 멈추고 바로
- 위와 같이 커널 시스템은 각 각의 일(Task)에 대한 유연성 및 결정성을 보장해줍니다.
내가 만든 Task의 최적의 실행 시간이 초과되거나 최악의 Deadline을 넘지 않도록 해주는 것이 커널의 핵심 역할입니다. - 단점도 존재합니다.
- 전경/배경 시스템보다 Memory를 많이 잡아먹습니다.(Kernel 부분)
- 커널을 사용하면 약 2.5%정도의 시간을 더 허비합니다.
- 하지만, 위의 2가지를 포기함으로써 돌아오는 이점은 엄청납니다. 점점 하다보면 Kernel이 얼마나 스마트한지 느낄 수 있겠습니다.
3. 정리
커널 시스템과 전경/배경 시스템에 대한 내용과 그 둘을 비교하는 내용을 정리했습니다.
커널 시스템을 왜? 써야되는지에 대해 질문을 던진다면, 전경/배경 시스템을 알고 그 둘을 비교하였을때 알 수 있는 메리트에 대해
설명하면 될 것 같습니다.
다음은 Task, Scheduler, Context Switching에 대해 정리해보겠습니다.
댓글남기기