万树IT:操作系统——进程调度之短进程优先

1、什么是进程调度  无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。   

 

       2、处理机调度分类

高级、中级和低级调度作业从提交开始直到完成,往往要经历下述三级调度:

高级调度:(High-Level Scheduling)又称为作业调度,它决定把后备进程调入内存运行;

低级调度:(Low-Level Scheduling)又称为进程调度,它决定把就绪队列的某进程获得CPU;

中级调度:(Intermediate-Level Scheduling)又称为在虚拟存储器中引入,在内、外存对换区进行进程对换。

3、短进程优先最短CPU运行期优先调度算法

 (SCBF--Shortest CPU Burst First)

该算法从就绪队列中选出下一个“CPU执行期最短”的进程,为之分配处理机。

例如,在就绪队列中有四个进程P1、P2、P3和P4,它们的下一个执行

期分别是16、12、4和3个单位时间,执行情况如下图:

P1、P2、P3和P4的周转时间分别为35、19、7、3,平均周转时间为16。

该算法虽可获得较好的调度性能,但难以准确地知道下一个CPU执行期,而只能根据每一个进程的执行历史来预测。

 

    4、C语言模式实现

  1》、常量声明和数据结构定义

#include "stdio.h"

#include <stdlib.h>

#include "string.h"

#define NULL 0

 

typedef struct pcb

{

    char name[10]; //进程名称

    int ArrivalTime; //到达时间 

    int StartTime;   //开始运行时间

    int FinishTime;  //结束运行时间

    int WholeTime;   //运行所需时间

 

    struct pcb *link; //下一个指针 

}pcb; 

int N;  //运行的进程数量 

void input();

pcb *ready=NULL,*p=NULL,*finish = NULL;  

//ready 是初始时的状态,finish 是结束时状态 

int M;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值