内核状态
RUNNING
系统的运行状态简单的说就是表示有线程处于活动状态并在使用CPU。在多处理器系统中,可以有多个线程处于运行状态;在单处理器系统中,只能有一个线程处于运行状态。
READY
就绪状态表示线程现在可以运行了,只不过还未运行,因为现在有另外一个线程(同优先级或更高优先级)正在运行。如果有两个线程都有能力使用处理器,其中一个线程的优先级为10而另外一个线程的优先级为7,那么优先级为10的线程将进入运行状态而优先级为7的线程将进入就绪状态。
阻塞状态(blocked states)
我们应该如何称呼阻塞状态?其实在系统中并不是只有一种阻塞状态,在实际系统中可以有数十种阻塞状态。
为什么会有这么多种呢?因为内核一直保留着线程为何被阻塞的原因。
在前面我们已经讲到了两种阻塞状态——当线程等待互斥体时被阻塞,这时线程就是MUTEX状态。当一个线程由于等待信号变量而被阻塞的话,这时线程就是SEM状态。这些状态简要的说明了线程是阻塞于哪个队列或资源。
如果有多个线程阻塞于某个互斥体(属于MUTEX阻塞状态),系统内核就不会特别留意它们,直到拥有该互斥体的线程释放了该互斥体。那时,这些阻塞线程之一就进入READY状态,系统内核在必要情况下完成调度决定。
为什么说必要情况下呢?如果释放互斥体的线程还有其他事要做并且相对于等待线程有更高的优先级,这时,我们就要遵守第二条规则了。“最高优先级的就绪线程运行”。也就是说,调度顺序没有改变,较高优先级的线程继续运行。
Related posts:
最近评论