调度算法的意义
程序运行时,通常会有多个过程或线程同时竞争 CPU,然而如果只有一个 CPU 可用,那就必须抉择下一个要运行的过程。在操作系统中实现抉择工作的一部分叫做调度程序。
然而过程也有辨别,
CPU 密集型:大多工夫在计算
IO 密集型:大多工夫在 IO 期待切换(因为当初 CPU 的性能进步,次要是 IO 密集型)
调度算法的目标就是为了 放弃零碎所有局部尽可能繁忙 。
次要有四个指标掂量调度算法的好坏,吞吐量、周转工夫、CPU 利用率、响应工夫。
并且调度程序须要思考到 CPU 利用率,因为过程的切换比拟高,用户态必须切换到内核态,而后保留以后过程的状态,包含在过程表中存储寄存器值以便当前从新装载。
调度算法分类:批处理、交互式、实时
批处理零碎的调度
先来先服务
First-come first-served,依照过程申请的程序应用 CPU。相当于有一个就绪过程的繁多队列。
长处:易于了解便于在程序中使用。
毛病:如果某个过程过大,会导致前面过程饥饿。
短作业优先:
毛病:对长过程不敌对。
最短剩余时间优先
是短作业优先的抢占式版本,总是抉择残余运行工夫最短的那个过程运行,须要对整个事件同以后过程的剩余时间比拟,如果右小于以后过程的,以后过程就会被挂起,运行新的过程。
交互式零碎的调度
轮转调度
每个过程都会被分一个时间段,即工夫片,容许该过程在该工夫片内运行。调度程序须要保护一张可运行过程列表。:
毛病:工夫片设置的过长会导致短的交互申请的响应工夫变长,过短会导致过多过程切换升高 CPU 效率。
优先级调度
优先级能够是动态赋予也能够是动静赋予。比方将优先级设为该过程在上一时间片所占局部的倒数。
毛病:可能会导致低优先级过程产生饥饿景象。须要偶然堆优先级进行调整。
彩票调度
实时零碎的调度
实时零碎是工夫起主导作用的零碎。
硬实时
即必须满足相对的截止工夫。将程序划分为一组过程实现,每个过程的行为都是能够预测和提前把握的。