死锁和饥饿
僵局与饥饿的主要区别在于两者之间的因果关系;正是僵局导致了饥饿。死锁和饥饿之间另一个有趣的区别是,死锁是一个问题,而饥饿有时可以帮助摆脱死锁。在计算机世界中,当编写一个计算机程序时,会有不止一个进程/线程它将一个接一个地并发运行,以完成对程序所需的服务。因此,为了拥有一个公平的系统,程序员必须确保所有进程/线程都能获得或获得足够的资源访问权。否则,就会出现僵局,然后就会导致饥荒。一般来说,一个公平的系统不包含任何死锁或饥饿。当许多线程在竞争有限的资源时,就会发生死锁和饥饿。
死锁是什么?
死锁是当两个线程或进程相互等待对方完成任务时发生的一种情况.他们只会挂断电话,而不会停止或完成他们的任务。在计算机科学中,死锁随处可见。在一个事务数据库,当两个进程各自在自己的事务中更新相同的两行信息,但顺序相反时,将导致死锁。在并发编程中,当两个竞争的操作相互等待对方继续前进时,就可能发生死锁。在电信系统中,死锁可能是由于丢失或损坏信号.
目前,死锁是多处理系统和并行计算中的主要问题之一。作为解决方案,一个锁定系统叫做进程同步是为软件和硬件实现的。
饥饿是什么?
从医学词典中,饥饿是指严重或完全缺乏维持生命所需的营养物质的结果。同样,在计算机科学中,饥饿也是遇到的问题当多个线程或进程等待同一资源时,称为死锁.
为了摆脱死锁,一个进程或线程应该放弃或回滚,以便另一个线程或进程可以使用资源。如果这种情况持续发生,并且同一个进程或线程每次都必须放弃或回滚,而让其他进程或线程使用资源,那么被回滚的所选进程或线程将经历一种称为“饥饿”的情况。因此,为了摆脱僵局,饥饿是解决办法之一.因此,有时被称为饥饿类似于一个活动锁.当有许多高优先级的进程或线程时,低优先级的进程或线程总是会在死锁中挨饿。
可能会有很多饥饿,比如饥饿的资源而且饥饿在CPU.关于饥饿有很多常见的例子。它们是读者-作家的问题和用餐哲学家的问题,这是比较著名的。五位沉默的哲学家坐在一张圆桌旁,桌上摆着几碗意大利面。叉子放在每一对相邻的哲学家之间。每个哲学家必须轮流思考和吃饭。然而,哲学家只有当他有左右叉子时才能吃意大利面。
死锁和饥饿的区别是什么?
•过程:
•在死锁中,两个线程或进程将彼此等待,都不会继续前进。
•在饥饿状态下,当两个或多个线程或进程等待相同的资源时,其中一个会回滚,让其他线程或进程先使用该资源,然后饥饿的线程或进程将再次尝试。因此,所有线程或进程都将向前进行。
•回滚:
•在死锁中,高优先级的线程/进程和低优先级的线程/进程都将无限地等待对方。它永远不会结束。
•但是,在饥荒中,低优先级的任务会等待或后退,而高优先级的任务会继续。
•等待或锁定:
•死锁是一个循环等待。
饥饿是一种活动锁,有时有助于摆脱僵局。
•僵局和饥饿:
•僵局会导致饥饿,但饥饿不会导致僵局。
•原因:
•由于互斥、保持和等待、没有抢占或循环等待,将会发生死锁。
•由于资源稀缺、资源管理不受控制和流程优先级,会出现饥饿。
简介:
死锁和饥饿
死锁和饥饿是由于在编程和硬件实现过程中发生的数据竞争和竞争条件而产生的一些问题。在死锁中,两个线程将无限地相互等待而不执行,而在饥饿中,一个线程将回滚并让另一个线程使用资源。死锁会导致饥饿,而饥饿会帮助线程摆脱死锁。
图片由:
Jeson……说
非常感谢. .