此为《现代操作系统》的一道题目,个人感觉答案看的不是很懂,故写下自己的理解。下面为中 英文版的答案截图:
首先明确
1.优先级反转发生在:低优先级的线程L位于临界区时,一个高优先级的线程H突然就绪要被调用,此时L被挂起,即被阻塞,无法离开临界区,但因为L仍然拥有临界区的锁,导致H无法访问临界区,所以H将永远等待。
2.用户级线程的特点:内核不知道线程的存在,一个线程处于阻塞时整个进程都会被阻塞
对于用户级线程,分为两种情况:
1.不同进程中的线程。此时相当于进程的优先级反转,有可能发生。
2.同一个进程里的线程。一个线程处于阻塞时整个进程都会被阻塞,所以不可能在低优先级线程运行的时候发生高优先级线程突然就绪【从阻塞到就绪】的情况。也不可能发生高优先级线程剥夺低优先级线程,因为剥夺后低优先级的线程处于阻塞态,会导致整个进程阻塞。
那么是不是说在用户级线程里优先级没有意义呢?
并不是,两个处于就绪态的线程,肯定是优先级高的运行,但是前提是当时的在运行的线程主动放弃CPU