인프런 커뮤니티 질문&답변

madlife9161님의 프로필 이미지
madlife9161

작성한 질문수

FreeRTOS 프로그래밍

소스코드 분석-vTaskSuspend

강의 "소스코드 분석-vTaskSuspend" 관련 질문 드립니다!

작성

·

310

·

수정됨

1

안녕하세요 강사님 :) 스케줄링 관련 질문이 있어 글을 남깁니다.

Task2보다 우선 순위가 높은 Task1 이 vTaskDelay(1000)로 1초 동안 blocked 상태였다가 다시 ready상태로 돌아왔을 때, 혹은 vTaskSuspend() 함수로 인해 blocked상태였다가 vTaskResume() 을 통해 다시 ready상태가 됐을 때 만약 자신보다 우선순위가 낮은 Task2가 running 상태라면 우선순위가 더 높은 Task1이 ready상태이니 Task2는 running 상태에서 쫒겨나고, Task1이 running 상태가 되는 것이 맞습니까?

그리고 이 때 Task2는 어떤 작업에 의해 어떤 상태가 되는지(blocked? ready?)도 궁금합니다!!

답변 2

1

홍영기님의 프로필 이미지
홍영기
지식공유자

안녕하세요. madlife9161님!

TASK1(higher) 태스크가 휴면상태에서 깨어나면, 커널에서는 이 태스크가 가장 우선순위가 높은지(HPT(Highest Priority Task) ? 판단해서 맞다면 선점을 시켜서 TASK1(higher) 태스크가 실행(running) 상태로 바뀌고 그전에 실행되고 있던 태스크(TASK2)는 ready 상태로 전환됩니다. 물론 시간이 흘러 이 TASK2 가 HPT(Highest Priority Task) 가 되면 다시 실행될 수 있겠지요.

0

madlife9161님의 프로필 이미지
madlife9161
질문자

답변 감사합니다ㅎㅎ!

madlife9161님의 프로필 이미지
madlife9161

작성한 질문수

질문하기