1,同步问题
 
1.2,优先级的反转
 
当一个高优先级的进程通过信号量机制访问共享资源时,发现这个资源正在被低优先级的进程所持有。 而且因为内核数据通常是用锁保护起来的,所以高优先级的进程不得不等待低优先级的进程用完资源。 这也就造成了高优先级进程被低优先级进程阻塞。
 
1.3,示例
 
假如有这么三个进程:A,B,C 它们的优先级顺序:A<B<C C进程需要使用一个共享资源:X,但此时A进程正持有X资源,C进程不得不等待A进程完成任务释放资源; 但此时,B进程到达了,抢占了A进程; 间接的,B进程影响了A进程的执行,只有当B执行完了,然后轮到A进程,A执行完毕之后释放资源,才会轮到C进程执行。
 
1.4,优先级继承协议
 
根据这个协议,所有正在访问资源的进程获得需要访问它的更高优先级进程的优先级,直到它们用完了有关资源为止,之后优先级就会恢复到初始值。 对于上面的例子,如果采用优先级继承协议,结果应是这样的:
 
 
 首先根据协议,进程A会获得和C进程一样的优先级 防止被B进程抢占执行,等到A进程执行完毕之后,优先级变回初始值并释放资源X 从而让进程C得以执行。之后就轮到B进程执行了。