您的位置:首页 > 其它

优先级反转问题是否可能在用户级线程中发生

2016-04-16 00:55 549 查看
此为《现代操作系统》的一道题目,个人感觉答案看的不是很懂,故写下自己的理解。下面为中 英文版的答案截图:





首先明确

1.优先级反转发生在:低优先级的线程L位于临界区时,一个高优先级的线程H突然就绪要被调用,此时L被挂起,即被阻塞,无法离开临界区,但因为L仍然拥有临界区的锁,导致H无法访问临界区,所以H将永远等待。

2.用户级线程的特点:内核不知道线程的存在,一个线程处于阻塞时整个进程都会被阻塞

对于用户级线程,分为两种情况:

1.不同进程中的线程。此时相当于进程的优先级反转,有可能发生。

2.同一个进程里的线程。一个线程处于阻塞时整个进程都会被阻塞,所以不可能在低优先级线程运行的时候发生高优先级线程突然就绪【从阻塞到就绪】的情况。也不可能发生高优先级线程剥夺低优先级线程,因为剥夺后低优先级的线程处于阻塞态,会导致整个进程阻塞。

那么是不是说在用户级线程里优先级没有意义呢?

并不是,两个处于就绪态的线程,肯定是优先级高的运行,但是前提是当时的在运行的线程主动放弃CPU
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息