[2025~] Embedded/Free RTOS

[Free RTOS_016] 커널의 시계

heylo 2025. 3. 7. 14:01

커널의 시계(TICK)


정기적(PERIODIC)으로 일어나는 인터럽트


태스크 지연 (delayed), 타임아웃(timeout)을 제공


태스크 지연의 분해능(clock resolution)은 클럭 틱(TICK) 하나


클럭틱 단위 정확도로 지연 가능한 것은 아님


선점형 커널에서 가능

 

 


커널 내부에는 스케줄러가 있습니다.


스케줄러의 디스패처가 하는 일이 

테스크들에게 시간을 할당해 주는 겁니다.


그럼 커널에게는 시계가 필요하겠죠!
터널은 시계의 수단으로 

하드웨어 타이머 장치를 이용합니다.

하드웨어 타이머 장치를 올바르게 설정을 해서 

타이머 장치가 주기적으로 인터럽트를 발생하게끔 해줍니다. 

하드웨어 타이머 인터럽트가 발생될 때마다 
타이머 인터럽트 핸들러가 실행되겠죠.

보통 타이머 ISR 내부에는 

Static Unsigned Long Tick 이라는 변수를 증분하는 코드가 들어갑니다.
Tick++ 이런식으로 코드가 들어가는 것이죠.
Tick 변수의 변화가 시간의 흐름을 나타내는 것이죠.

 


임의의 시간을 확인하는 Tick 변수의 값은 현재의 시간을 나타냅니다.
한편 우리는 주파수를 헤르츠로 표시하는데


헤르츠가 1000이다라는 뜻은 
초당 인터럽트가 1000번 발생한다는 뜻입니다.


예를 들어 특정 변수 값이 2만 1000일 경우 
현재 시간이 21초임을 알려주고 있다고 할 수 있겠네요. 

 


그림에 따르면 하드웨어 타이머가 

인터럽트를 1초당 1000개씩 발생합니다.
커널은 이를 통해 밀리세컨드 단위 해상도를 갖는 

스케줄을 보유하게 된 셈입니다.
오차의 범위도 1000분의 1초가 된다는 점도 알아두면 좋겠죠.

 

 


만약에 인터럽트가 1,000개가 아니고 100개씩 발생된다면 
그만큼 스케줄러의 해상도는 낮아지겠죠.

타이머 해상도가 RTOS 커널의 동작에 미치는 영향에 대해서 앞으로 알아봅시다.

OS에서의 타이머는 시계로서의 활용 목적 외에 
태스크 지연, 각종 커널 이벤트의 타임아웃 등을 

처리하는 용도로도 사용됩니다.