死锁:
当每个进程持有一个资源并等待任何其他进程持有的其他资源时,就会发生死锁。发生死锁的必要条件是互斥、保持等待、不抢占和循环等待。在这种情况下,没有进程持有一个资源并等待另一个资源被执行。例如,在下图中,进程 1 持有资源 1 并等待进程 2 获取的资源 2,进程 2 正在等待资源 1。因此进程 1 和进程 2 都处于死锁状态。
饥饿:
饥饿是当高优先级进程继续执行而低优先级进程被无限期阻塞时发生的问题。在负载较重的计算机系统中,源源不断的高优先级进程可以防止低优先级进程获得 CPU。在资源匮乏的情况下,高优先级进程不断利用资源。饥饿问题可以使用老化来解决。在长时间等待进程的老化优先级逐渐增加。
死锁和饥饿的区别:
编号 | 死锁 | 饥饿 |
---|---|---|
1 | 所有进程一直在等待对方完成,没有一个被执行 | 高优先级的进程一直在执行,低优先级的进程被阻塞 |
2 | 资源被进程阻塞 | 资源被高优先级进程持续使用 |
3 | 必要条件 互斥、保持等待、不抢占、循环等待 | 给进程分配优先级 |
4 | 也称为循环 | 等待也称为活锁 |
5 | 可以通过避免死锁的必要条件来防止 | 它可以通过Aging来防止 |
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/264495.html