轮转(Round Robin)CPU调度算法如何处理I/O密集型进程?
轮转(Round Robin)调度算法处理I/O密集型进程的逻辑解析
针对你的两个问题,直接给出明确结论和逻辑:
问题1:调度器会在该进程执行I/O时为其分配时间片吗?
不会。轮转调度的时间片仅针对处于就绪队列的进程。当进程发起I/O请求后,会从CPU运行态切换到阻塞态,脱离就绪队列。此时调度器不会再为该进程分配时间片,直到它的I/O操作完成,重新回到就绪队列,才会参与下一轮的时间片分配。
问题2:当该进程处于I/O阶段时,若时间片到期,调度器会等待I/O完成还是直接调度下一个进程?
直接调度下一个就绪队列中的进程。轮转调度的核心规则是时间片到期就切换进程,但如果进程主动发起I/O(像你的例子中2ms后就进入I/O),它会提前让出CPU,此时调度器会立刻选取就绪队列中的下一个进程执行,根本不会等到原本的时间片到期。
补充你的例子的完整执行流程(假设时间片为5ms):
- 进程被调度到CPU,执行2ms后发起I/O请求,进入阻塞态。
- 调度器立即从就绪队列选取下一个进程,分配5ms时间片让其执行。
- 8ms后,原进程I/O完成,从阻塞态回到就绪队列等待调度。
- 当当前运行的进程时间片到期或主动让出CPU时,调度器按轮转顺序为就绪队列中的进程(包括原进程)分配时间片。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

