一组进程处于死锁状态是指组内的每个进程都在等待一个事件,而该事件只可能由组内的另一个进程产生。这里所关心的主要是事件是资源的获取和释放。与死锁相关的另一个问题是无限阻塞或饥饿,即进程在信号量内无穷等待的情况
产生饥饿的主要原因是:在一个动态系统中,对于每类系统资源,操作系统需要确定一个分配策略,当多个进程同时申请某类资源时,由分配策略确定资源分配给进程的次序。有时资源分配策略可能是不公平的,即不能保证等待时间上界的存在。在这种情况下,即使系统没有发生死锁,某些进程也可能会长时间等待。当等待时间给进程推进和响应带来明显影响时,称发生了进程饥饿,当饥饿到一定程度的进程所赋予的任务即使完成也不再具有实际意义时。称该进程被“饿死”。饥饿并不代表系统一定会死锁,但至少有一个进程的执行被无限期推迟
饥饿与死锁的主要差别如下:
1:进入饥饿状态的进程可以只有一个,而因循环等待条件而进入死锁状态的
进程却必须大于或等于两个
2:发生饥饿的进程的状态可能是就绪态(长期得不到处理机),也可能是
阻塞态(如长期得不到所需的IO设备),而发生死锁的进程的状态则
必须是阻塞态