面试题答案
一键面试常见避免进程饥饿的资源分配策略及原理
- 先来先服务(FCFS, First - Come, First - Served)
- 策略简述:按照进程到达的先后顺序分配资源,先到达的进程先获得资源并执行。
- 工作原理:操作系统维护一个进程队列,当进程进入系统时,将其加入队列尾部。当资源可用时,从队列头部取出进程分配资源。这样保证了每个进程按照到达顺序依次得到服务,不会因为新进程的不断涌入而使早期到达的进程长时间等待,从而避免饥饿。
- 时间片轮转(RR, Round - Robin)
- 策略简述:为每个进程分配一个固定长度的时间片,在时间片内进程可以使用资源执行任务,时间片用完后,进程被剥夺资源,排到就绪队列末尾等待下一轮调度。
- 工作原理:系统设置一个时间片大小,比如100ms。当一个进程被调度执行时,它最多能运行100ms,之后无论是否完成任务,都会被暂停,放入就绪队列尾部。下一个就绪队列头部的进程获得时间片开始执行。这种方式使得每个进程都能在一定时间间隔内获得执行机会,避免了长进程一直占用资源导致短进程饥饿。
- 多级反馈队列调度(MFQ, Multilevel Feedback Queue Scheduling)
- 策略简述:将进程根据不同优先级放入多个队列,优先级高的队列时间片短,优先级低的队列时间片长。新进程进入最高优先级队列,若在该队列时间片内未完成,则降入下一级队列。
- 工作原理:系统有多个就绪队列,如Q1、Q2、Q3...,Q1优先级最高。新进程首先进入Q1,在Q1的短时间片内运行,若完成则结束;若未完成,进入Q2。Q2时间片比Q1长,若在Q2仍未完成再进入Q3,以此类推。这样既能保证重要的短进程优先快速执行,又能保证长进程在较低优先级队列中也能逐步获得足够资源执行,避免长进程饥饿。同时,对于新到达的进程也有机会快速执行,不会被老进程一直压制。
- 公平共享调度(FSS, Fair - Share Scheduling)
- 策略简述:根据进程所属的用户或组,按比例分配资源,确保每个用户或组能公平地获得系统资源,而不是单个进程间的公平。
- 工作原理:操作系统为每个用户或组设定一个资源分配权重,比如用户A权重为2,用户B权重为1。系统会按照这个权重比例来分配CPU时间等资源。假设总资源为3个单位时间,那么用户A理论上能获得2个单位时间,用户B获得1个单位时间。在用户或组内部再采用其他调度算法(如FCFS或RR)分配资源给各个进程。这样可以避免某个用户或组因为其他用户或组的大量进程而长期得不到资源,实现了用户或组间的公平,间接避免了进程饥饿。