忙式等待 | 阻塞等待 |
---|
进程同步时遇到的问题,意味着一个进程正在等待满足一个没有闲置处理器的严格循环的条件,也叫做不进入等待状态的等待,消耗CPU | 进程得不到共享资源时将进入阻塞状态,不消耗CPU |
相同点 | 不同点 |
-进程都不具备继续向前推进的条件- | -处于忙等待的进程不主动放弃 CPU- |
饥饿 | 死锁 |
---|
资源分配不均匀引起,不一定处于等待状态、有可能忙等 | 资源竞争引起,进入无限等待的状态,占有资源,不会释放资源 |
进程等待时间明显影响了进程推进和响应,饥饿到一定程度的进程,它所赋予的任务即使完成也不具有实际意义时,称为饿死 | 两个或两个以上进程竞争资源,无限期等待其它进程占有、从而永远无法得到的资源 |
在忙式等待下发生的饥饿称为活锁 | 死锁时刻:无限等待发生时,等待发生前(已注定死锁) |
死锁可以被认为是饥饿的极端情况 | 参与死锁的进程均等待资源,死锁过程中至少有两个进程占有资源,死锁进程是系统当前进程的一个子集 |
当所有的进程进入死锁状态,而又有新的进程来请求资源,可能得不到资源,就会发生饥饿 | 死锁的必要条件:资源独占,不可抢占,保持申请,循环等待/当每类资源只有一个实例时,上述必要条件为充要条件 |
饥饿不能导致死锁,因为一直有低优先级的进程在等待,其他高优先级的进程先完成 | 预防(静态方式)、避免(动态方式)、破坏死锁:资源独占性是设备属性问题不可消除,可以破坏后三个条件 |
饥饿与死锁
(1)死锁进程处于等待状态,忙式等待的进程并非处于等待状态,但却有可能被饿死;
(2)死锁进程等待永远不会释放的资源,饿死进程等待可能被释放,但却不会分给自己的资源,其等待时间没有上限;
(3)死锁一定发生了循环等待,饿死不然;
(4)死锁至少涉及两个进程,饿死进程可能只有一个。