如果在
时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在
时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的
时间片后,它被移到队列的末尾。
时间片轮转调度中唯一有趣的一点是时间片的长度。从一个
进程切换到另一个进程是需要一定时间的--保存和装入
寄存器值及内存映像,更新各种表格和队列等。假如
进程切换(process switch) - 有时称为
上下文切换(context switch),需要5毫秒,再假设
时间片设为20毫秒,则在做完20毫秒有用的工作之后,CPU将花费5毫秒来进行进程切换。CPU时间的20%被浪费在了管理开销上。
为了提高CPU效率,我们可以将
时间片设为500毫秒。这时浪费的时间只有1%。但考虑在一个
分时系统中,如果有十个交互用户几乎同时按下回车键,将发生什么情况?假设所有其他进程都用足它们的
时间片的话,最后一个不幸的进程不得不等待5秒钟才获得运行机会。多数用户无法忍受一条简短命令要5秒钟才能做出响应。同样的问题在一台支持
多道程序的个人计算机上也会发生。
结论可以归结如下:
时间片设得太短会导致过多的
进程切换,降低了CPU效率;而设得太长又可能引起对短的交互请求的响应变差。将
时间片设为100毫秒通常是一个比较合理的折衷。