MST
星途 面试题库

面试题:进程管理之多核处理器下线程调度策略

在多核处理器环境下,常见的线程调度策略有哪些?请简要阐述每种调度策略的特点及适用场景。
42.1万 热度难度
操作系统进程管理

知识考点

AI 面试

面试题答案

一键面试

1. 先来先服务(FCFS,First-Come, First-Served)

  • 特点:按照线程到达就绪队列的先后顺序进行调度,先进入队列的线程先获得CPU执行时间,非抢占式,一旦一个线程开始执行,它会一直运行直到完成或者因为I/O等原因主动放弃CPU。
  • 适用场景:适用于长任务且对响应时间要求不高的场景,比如后台批处理任务,因为它调度简单,系统开销小。

2. 短任务优先(SJF,Shortest Job First)

  • 特点:优先调度预计执行时间最短的线程,可分为抢占式(最短剩余时间优先,SRTF)和非抢占式。非抢占式下,新线程到达就绪队列时,只有当前线程执行完才会调度新线程;抢占式下,若新到达线程预计执行时间比当前正在执行线程的剩余时间短,则抢占CPU。
  • 适用场景:能有效降低线程平均等待时间,适用于大多数短任务的场景,如轻量级的交互式任务。

3. 时间片轮转(RR,Round Robin)

  • 特点:系统将CPU时间划分为一个个固定长度的时间片,就绪队列中的线程轮流获得一个时间片来执行,时间片用完后,即使线程未执行完也会被剥夺CPU,重新进入就绪队列等待下一轮调度,是一种抢占式调度。
  • 适用场景:适用于交互式系统,能保证每个线程都能在一定时间内获得CPU执行机会,提供较好的响应性,如日常办公软件、网页浏览等应用场景。

4. 优先级调度(Priority Scheduling)

  • 特点:为每个线程分配一个优先级,调度时总是选择优先级最高的线程执行。可分为抢占式和非抢占式,抢占式下,当有更高优先级线程进入就绪队列时,当前线程可能被抢占;非抢占式下,只有当前线程执行完毕或主动放弃CPU,高优先级线程才会获得执行机会。
  • 适用场景:适用于有不同优先级需求的场景,比如系统内核任务、关键业务处理任务优先级较高,而一些后台辅助任务优先级较低,通过优先级调度可以保证关键任务优先执行。

5. 多级反馈队列调度(Multilevel Feedback Queue Scheduling)

  • 特点:设置多个就绪队列,每个队列有不同的优先级和时间片长度。新线程首先进入最高优先级队列,按照时间片轮转调度;若在一个时间片内未执行完,则降入下一级队列。低优先级队列中的线程只有在高优先级队列全部为空时才会获得调度。
  • 适用场景:综合了多种调度策略的优点,既能处理短任务,又能照顾长任务,适用于各种类型任务混合的场景,现代操作系统如Linux等广泛采用。