작성
·
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