在 RR 调度策略中,如果一个低优先级线程锁定一个互斥体并因为另一个高优先级线程正在等待而被调度程序移除,会发生什么?
它还会释放低优先级线程持有的锁吗?
例如,考虑 3 个线程在 RR 调度策略中优先级为 10,20 和 30 的进程中运行。
现在在给定的时间点,低优先级线程 1 锁定互斥锁,并且仍在执行平均,而高优先级线程弹出并等待线程 1 持有的互斥锁。现在线程 2 进入图片,它也需要锁定相同的互斥锁通过线程 1。
据我所知,根据调度算法,睡眠或等待互斥锁、信号量等的线程被删除,而其他线程,即使是低优先级也被允许执行。这个对吗?如果是这样,在上面的示例中,最终高优先级线程等待低优先级线程完成,这没有任何意义。如果所有线程都像我上面所说的那样设计,这就是系统的工作方式吗?
或者线程优先级应该以这样一种方式设置,即高优先级的不会依赖于低优先级的互斥锁?
也有人可以解释一下调度在进程级别是如何工作的吗?我们如何为流程设置优先级?