Priority inversion

This example demonstrates a classic RTOS problem "Priority inversion". 

There are four tasks in this demo, task1 and task2 have the same medium priority 2, task3 has
highest priority 3, while task4 has the lowest priority 1, after RTX scheduler starts, task3
first get chance to run, and will delay 1s for task1, task2 to run, and for task4 to get mutex,
after task4 get mutex, task4 can run when task1 and task2 delay, and when task4 is running, task1
and task2 also can run with the higher priority than task4, the three tasks will be run normally
as they should be until the delay time 1s of task3 expired, after delay time of task3 expired,
it run statement os_mut_wait(mutex,0xffff); to get the mutex, but at this moment, mutex is kept
by task4, task3 cannot get it, now, the priority inversion occurs, priority of task4 will be 
promoted to 3, and the task1, task2 will be blocked until task4 release mutex, and its priority 
drops to 1.