假设您有两个进程: P1和P2。P1具有高优先级,P2具有低优先级。P1和P2有一个共享的信号量(即,它们都在同一信号量上执行等待和posts )。这些进程可以按任意顺序交错(例如,可以在P1之前启动P2 )。
简要说明进程在以下情况下是否会死锁:
二、这两个进程都作为分时任务在Linux系统上运行
三、这两个进程都作为可变任务在Windows 7系统上运行
四.这两个进程都作为实时任务在Windows 7系统上运行。
我认为P1和P2只能导致优先级反转。根据死锁的要求之一(循环等待:存在两个或更多进程的循环链,等待其他进程持有的资源),优先级反转不等于死锁。此外,P1和P2只有一个信号量,这意味着不会有循环,所以它们永远不会导致死锁。因此,所有的答案都是否定的。对吗?如果不是,那么答案是什么?
发布于 2017-01-25 02:26:47
你是对的,只有一个信号量是不可能发生死锁的。
只有当P1持有P2所需的一些资源并需要P2持有的资源时,才会发生两个进程的死锁。因此P1在P2释放资源之前无法继续,而P2在P1释放资源之前无法继续。因此,他们都被困在等待对方,但不让对方前进。正如您已经提到的,circular wait condition不能用一个信号量来实现。
此外,等待P2释放资源的P1也不是优先级反转。当Px具有P1和P2之间的优先级,并且P1等待P2释放资源,而P2等待Px,因为它具有更高的优先级时,就会发生优先级反转。因此,P1等待具有较低优先级的Px,尽管它并不打算这样做(没有共享资源或其他任何东西)。
https://stackoverflow.com/questions/41646581
复制相似问题