여러 RTOS (pSOS, VxWorks, QNX)에 대한 경험이 있지만 MicroC/OS II (ucos ii)를 처음 사용했습니다. 나는 ucos ii에 고유 한 것이 태스크를위한 고유 ID 대신 태스크를 고유하게 식별하는 우선 순위를 사용하고 모든 태스크가 다른 우선 순위를 가져야하므로 라운드 로빈 스케줄링이 지원되지 않는다는 것을 알고 있습니다. 그 정도는 이해합니다. 여기에 질문이 있습니다 :MicroC/OS II (ucos ii)의 우선 순위 변경 작업 ID가 변경됩니까?
OSTaskChangePrio()로 작업의 우선 순위를 변경하면 코드 또는 방금 우선 순위를 변경 한 작업의 우선 순위 (작업 ID)를 저장 한 다른 작업에 문제가 발생하지 않습니다. 실제로 우선 순위를 변경하면 작업의 ID가 변경됩니다. 어떻게 이것이 문제가되지 않습니까?
한 가지 예를 들자면 다른 작업을 시작하는 작업이 끝나면 우선 순위를 낮추고 싶을 수도 있습니다. 작업 ID를 효과적으로 변경하면 작업을 식별하는 방법으로 사용할 수 없다는 것을 의미합니다. 또한 ucos ii가 우선 순위 반전을 수행 할 때 ucos가 다른 작업에서 볼 수있는 작업 ID (우선 순위)를 실제로 변경시키는 지 여부도 불분명합니다. 즉, 우선 순위 역전이 발생하는 동안 원래 태스크 ID (우선 순위)를 사용하여 그 태스크 ID (우선 순위)가 없기 때문에 해당 태스크를 식별하기 위해 OS 호출이 실패합니까? – JonN