z****i 发帖数: 245 | 1 在Operating.Systems.Design.and.Implementation书上, 2.2.4 有一段话
Consider a computer with two processes, H, with high priority and L, with
low priority, which share a critical region. The scheduling rules are such
that H is run whenever it is in ready state. At a certain moment, with L in
its critical region, H becomes ready to run (e.g., an I/O operation
completes). H now begins busy waiting, but since L is never scheduled while
H is running, L never gets the chance to leave its critical region, so H
loops forever. This situation is sometimes referred to as the priority
inversion problem.
所以这是两个process的情况
http://en.wikipedia.org/wiki/Priority_inversion
wiki上是3个process的情况
到底哪个是对的? 谢谢 面试的时候碰到了,答了课上学的2个process的,对方说错
了。
Ps:回来查书,可不可以给那两个面试官发信,说我答的是课本上的答案? |
s********k 发帖数: 6180 | 2 本来这个就和OS的implementation有关吧,3个那个是当年vxworks出问题的经典问题,
两个这个更像一个deadlock的问题,比如H拿不到所有的resource(L的mutex)其实就
不应该run。
in
while
【在 z****i 的大作中提到】 : 在Operating.Systems.Design.and.Implementation书上, 2.2.4 有一段话 : Consider a computer with two processes, H, with high priority and L, with : low priority, which share a critical region. The scheduling rules are such : that H is run whenever it is in ready state. At a certain moment, with L in : its critical region, H becomes ready to run (e.g., an I/O operation : completes). H now begins busy waiting, but since L is never scheduled while : H is running, L never gets the chance to leave its critical region, so H : loops forever. This situation is sometimes referred to as the priority : inversion problem. : 所以这是两个process的情况
|
l******d 发帖数: 530 | 3 这书上讲的情况不大对“H now begins busy waiting”,H不一定是busy waiting,跟
os实现有关。大多数priority inversion的概念都是有3个priority level的,low
priority得到high priority想要的resource,但是一直被其它medium priority的抢占。
btw,这是啥方向的面试题,感觉像是real-time system的 |
z****i 发帖数: 245 | 4 这本书是Andrew S Tanenbaum的,也算经典了,题目是个简单的常见题目,realtime方
面的,我答的是两个process的,阿三面试官说错误,还两个面试官都面到了。
占。
【在 l******d 的大作中提到】 : 这书上讲的情况不大对“H now begins busy waiting”,H不一定是busy waiting,跟 : os实现有关。大多数priority inversion的概念都是有3个priority level的,low : priority得到high priority想要的resource,但是一直被其它medium priority的抢占。 : btw,这是啥方向的面试题,感觉像是real-time system的
|
l******d 发帖数: 530 | 5 我猜Andrew S Tanenbaum在教科书里是为了简化用了2个process的情况。在real-time
community里priority inversion基本都是3个不同priority的process才出现的。
你是real-time方向的?这个方向的专业不是基本都要us citizenship吗
【在 z****i 的大作中提到】 : 这本书是Andrew S Tanenbaum的,也算经典了,题目是个简单的常见题目,realtime方 : 面的,我答的是两个process的,阿三面试官说错误,还两个面试官都面到了。 : : 占。
|
s********k 发帖数: 6180 | 6 就像我前面说的,2个的情况更简单而且大多数应该被解决了,更像一个deadlock,一
个resource是priority,一个是mutex,结果两个process分别拿到一个resource。
2个的问题只要H process不busy waiting而是yield就解决了(或者priority
inheritance),这样L完了之后释放mutex然后H再run。
但是3个的问题H只是yield解决不了,L还是不能运行(因为middle一直在运行),所以
mutex不能释放,这样就只能priority inheritance才能解决。
所以我觉得3个应该才是最经典的问题
【在 z****i 的大作中提到】 : 这本书是Andrew S Tanenbaum的,也算经典了,题目是个简单的常见题目,realtime方 : 面的,我答的是两个process的,阿三面试官说错误,还两个面试官都面到了。 : : 占。
|
z****i 发帖数: 245 | 7 可不可以给那两个面试官发信,说我答的是课本上的答案?
我也觉得是,如果是round robin, H process 会yield, 这个应该跟OS的scheduling
有关。
【在 s********k 的大作中提到】 : 就像我前面说的,2个的情况更简单而且大多数应该被解决了,更像一个deadlock,一 : 个resource是priority,一个是mutex,结果两个process分别拿到一个resource。 : 2个的问题只要H process不busy waiting而是yield就解决了(或者priority : inheritance),这样L完了之后释放mutex然后H再run。 : 但是3个的问题H只是yield解决不了,L还是不能运行(因为middle一直在运行),所以 : mutex不能释放,这样就只能priority inheritance才能解决。 : 所以我觉得3个应该才是最经典的问题
|