面试题答案
一键面试1. 调度算法问题
- 优先调度算法:若采用基于优先级的调度算法,且高优先级进程不断进入系统,低优先级进程可能长时间得不到执行机会,从而导致饥饿。例如,实时系统中为保证关键任务的及时响应,会给实时任务分配高优先级,若实时任务持续产生,普通任务就易饥饿。
- 短作业优先算法:在短作业优先调度算法中,如果不断有新的短作业进入系统,长作业就可能长时间等待,因为调度程序总是优先选择短作业执行,长作业会面临饥饿风险。
2. 资源分配不合理
- 资源集中分配:当系统资源集中分配给某些特定进程时,其他进程可能因无法获取所需资源而长期处于等待状态,进而导致饥饿。比如,在多线程编程中,锁资源若总是被特定线程获取,其他线程会饥饿。
- 资源竞争激烈:在资源有限且进程对资源竞争激烈的情况下,一些进程可能由于竞争不过其他进程而始终无法获得足够资源执行,从而陷入饥饿。例如多个进程同时竞争打印机等独占性资源时,部分进程可能长时间获取不到。
3. 进程自身特性
- I/O 与 CPU 混合型进程:对于 I/O 与 CPU 混合型进程,如果 I/O 操作频繁,在进行 I/O 操作时会释放 CPU 资源。当系统中有大量此类进程且 I/O 设备繁忙时,这些进程会频繁交替占用和释放 CPU,使得纯 CPU 进程可能长时间得不到 CPU 资源,从而饥饿。
- 计算密集型长进程:计算密集型的长进程由于执行时间长,如果调度算法不合理,在有较多短进程或高优先级进程不断进入系统时,长进程可能长时间得不到执行机会而饥饿。