当计算机系统是多道程序设计系统时,通常就会有多个进程或线程同时竞争CPU。只要有两个或更多的进程处于就绪状态,这种情形就会发生。如果只有一个CPU可用,那么就必须选择下一个要运行的进程。操作系统内核使用一种称为进程切换(process switch),有时称为上下文切换(context switch)的较高形式的异常控制流来实现多任务,完成进程切换的工作的这一部分称为调度程序(scheduler),该程序使用的算法称为调度算法(scheduling algorithm).
调度的基本准则包括CPU利用率、系统吞吐量、周转时间、等待时间、响应时间等。
系统吞吐量表示单位时间内CPU完成作业的数量。
周转时间为作业完成时刻减去作业到达的时刻。
等待时间是指进程处于等待处理器状态的时间之和,等待时间越长,用户满意度越低。
响应时间是指从用户提交到系统首次产生响应所用的时间。
典型的调度算法包括:先来先服务调度算法(FCFS)、短作业优先调度算法(SIF)、优先级调度算法、高响应比调度算法、时间片轮转算法、多级反馈队列调度算法。其中短作业优先调度算法的平均等待时间、平均周转时间最少。既有利于短作业又兼顾长作业的调度方式是最高响应比优先调度算法。