首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Linux和Windows中的死锁

关于Linux和Windows中的死锁
EN

Stack Overflow用户
提问于 2017-01-14 11:41:20
回答 1查看 2.1K关注 0票数 0

假设您有两个进程: P1和P2。P1具有高优先级,P2具有低优先级。P1和P2有一个共享的信号量(即,它们都在同一信号量上执行等待和posts )。这些进程可以按任意顺序交错(例如,可以在P1之前启动P2 )。

简要说明进程在以下情况下是否会死锁:

二、这两个进程都作为分时任务在Linux系统上运行

三、这两个进程都作为可变任务在Windows 7系统上运行

四.这两个进程都作为实时任务在Windows 7系统上运行。

我认为P1和P2只能导致优先级反转。根据死锁的要求之一(循环等待:存在两个或更多进程的循环链,等待其他进程持有的资源),优先级反转不等于死锁。此外,P1和P2只有一个信号量,这意味着不会有循环,所以它们永远不会导致死锁。因此,所有的答案都是否定的。对吗?如果不是,那么答案是什么?

EN

回答 1

Stack Overflow用户

发布于 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,尽管它并不打算这样做(没有共享资源或其他任何东西)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41646581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档