관리 메뉴

Leo's Garage

RTOS - Real Time Operating System - 1 본문

Study/RTOS

RTOS - Real Time Operating System - 1

LeoBehindK 2023. 2. 21. 21:56
728x90
반응형

RTOS - Real Time Operating System

쉽게 말해서 실시간 컴퓨팅을 보장하는 운영체제를 뜻한다고 생각하면 된다.

RTOS는 일반적으로 임베디드 시스템에서 활용하는데, 보통 임베디드 시스템의 경우 일반 PC보다 성능이 낮다. 

그런데 어떻게 성능이 낮은데 실시간을 보장하냐고 할 수도 있지만 High Performance를 보장하는 것과 Real Time을 보장하는 것은 같은 의미가 아니다. High Performance 시스템의 경우 0.1초만에 Task를 수행할 수 있는데 다른 Task에 의해 우선순위를 잃게 되면 2초가 걸릴 수도 있는 시스템이다. 이와 반면에 Real Time System은 어떤 상황에서도 1초 안에 해당 Task를 완료해야 한다면 그것을 최우선 과제로 두고 운영되는 시스템이다.

보통 RTOS는 윈도우나 리눅스처럼 범용 OS로 운영되지 않는다. 시스템 혹은 제품에 필요한 최소한의 기능을 설치해서 정확한 시간에 정확한 동작만을 수행하는 것을 목표로 한다. 

Multi Task

int c; // key 변수
main() 
{
	while(1)
    {
    	c = getButtonkey(); 
        ...
    }
}

getButtonkey()
{
	return(HW_KEY);
}

위의 구조에서는 getButtonkey()를 Function Call 하는 방법으로만 실행할 수 있다. 

int c; // key 변수
main() 
{
	int tid;
    
    taskCreate("task_Buttonkey",...);
}

task_Buttonkey()
{
	while(1)
    {
    	c = HW_KEY;
    }
}

multi tasking 구조에서는 task_Buttonkey의 동시 실행이 가능하다.

Task는 Process라고 부르기도 하고 job이라고 하기도 한다.

실제로 물리적인 CPU는 하나인데 Task는 가성의 CPU를 각자 가지고 있는 것처럼 행동하는 것을 의미한다.

그리고 가상 CPU를 특징 짓는 요소 중 하나로 각 가상 CPU 별로 Stack이 구분되어 있다. 

 

이론적으로 Task A와 Task B간은 Kernel Service인 Inter Process Communication을 통해 통신한다. 

- Inter Task Communication이라고도 한다.

 

Task State Diagram

- Multi Tasking 환경에서는 Kernel은 실행 중에 상태를 계속해서 변경한다.

Task는 아래 3가지 상태 중 하나에 위치한다.

- Running

- Ready

- Blocked (waiting)

 

Scheduling

 

1. Preemptive Kernel

낮은 우선 순위의 Task가 수행 중일 때, ISR(Interrupt Service Routine)이 발생하여 높은 우선 순위의 Task가 실행되면, 그 Task가 수행되고 이후에 낮은 우선 순위의 Task가 마저 실행되는 형태

 

이처럼 Preemptive Kernel은 우선순위에 따라 Task를 중지시키고 다른 Task를 수행시킬 능력이 있다. 

다만, 이 경우에 높은 우선순위 Task가 자주 불릴 경우, 해당 Task가 CPU를 다수 점유할 수 있다. 

시스템 응답성이 중요한 경우에 사용되며, 실 시간 운영체제에 주로 사용되는 구조이다. (Windows 95/98, Unix, RTOS...)

 

2. Non-Preemptive Kernel

이 경우에는 ISR에 높은 우선순위의 Task 요청이 들어와도 기존에 수행하고 있던 낮은 우선순위의 Task를 전부 수행한 후에 높은 우선순위의 Task를 수행한다.

이런 시스템은 실시간 시스템에는 사용할 수 없다. (Windows 3.1)

 

3. TCB(Tasck Control Block)

Task마다 특정 자료구조 형태를 가지고 있다. 

위의 구조는 하나의 예시이고, 운영체제에 따라서 각각 특정한 자료구조를 가지고 있다. 

 

4. Context Switching

실제로 Task 수행 중에 ISR이 발생하여 높은 우선순위의 Task가 수행될 때, 그리고 높은 우선순위의 Task가 종료되고 다시 낮은 우선순위의 Task를 수행할 때, 이러한 Task의 정보를 TCB에 저장하고 다시 불러오는 과정을 반복하게 된다.

이러한 것을 Context Switching이라고 한다. 

 

5. Round-Robin Scheduling

모든 Task들이 CPU를 공평하게 나눠서 사용하는 개념

각 Task들이 점유하는 시간을 Time Quantum이라고 하며, 보통 1ms ~ 20ms 사이를 많이 사용한다. [너무 짧으면 Context Switching하는데 자원 낭비가 심함]

아주 단순한 비선점형 스케줄링을 만들 때 유용

 

6. Priority Scheduling

Task 중요도에 따라서 우선적으로 수행하겠다는 개념

RTOS에서 필수적으로 지원하는 방법이다.

Preemitive Scheduling의 특성을 받았다. 

Preemption이 될 때, 신규 Task의 상태가 None -> Create가 되는 Case와 Blocked -> Wake(Ready)가 되는 Case가 있다. 

 

728x90
반응형

'Study > RTOS' 카테고리의 다른 글

RTOS - Real Time Operating System - 3  (0) 2023.02.27
RTOS - Real Time Operating System - 2  (0) 2023.02.22
Comments