CPU调度策略
如何设计调度算法?
这个算法应满足
- 尽快结束任务:周转时间(从任务进入到任务结束)短
- 用户操作尽快响应:相应时间(从操作发生到响应)短
- 系统内耗时间少:吞吐量(完成的任务量)
总原则:系统专注于任务执行,又能合理调配任务…
两种基础的CPU调度策略
- 短作业优先
短作业优先策略,主要是为了减少周转时间
基本思路: 运行时间短的进程优先执行,但是可能会造成饥饿现象
- 轮转策略
轮转策略,减少相应时间
基本思路: 给每一个进程设置一个时间片,当时间片用完后,就切换进程,总的响应时间最大为n*时间片
,只要设置合理的时间片大小,就能有效的减少响应随时间。
两种基本的策略都无法解决前台与后台的矛盾,前台需要减少响应时间,但是后台需要减少周转时间,如何才能既设置好合理的调度算法?
一个实际的schedule函数
void Schedule(void)
{
while(1)
{
c=-1;
next=0;
i=NR_TASKS;
p = &task[NR_TASKS];
while(--i) // 找出最大的counter
{
if((*p->state &