首页 > 编程知识 正文

最短进程优先Shortest Process FirstSPF调度算法,基于优先数进程调度算法

时间:2023-05-04 10:05:06 阅读:190125 作者:1134

一.实验目的

在批处理系统、分时系统、实时系统中,一般进程的数量多于处理器的数量,各进程都在争夺处理器。 这就需要进程调度器按照合适的调度方式和调度算法,从很多处于准备就绪状态的进程中选择一个进程来分配处理器并使其运行。

本实验采用高级语言编制调试进程调度器,通过模拟进程调度的过程,加深对进程概念和进程调度算法的理解,帮助学生理解进程调度工作

二.实验内容

1 .设计5个进程同时运行的模拟调度程序,每个程序用一个PCB表示。

2 .仿真调度器可以选择两种调度算法实现。

3 .在程序运行过程中,可以在屏幕上显示各种进程的状态变化。

4 .实验后写实验报告。

三.实验方法

1 .算法设计思路

最短进程优先调度算法每次从就绪队列中选择下一个“CPU执行时间最短”的进程并分配处理器。 在决定调度进程之前,它会比较所有准备好的作业,然后选择运行时间最短的作业进行运行

2 .程序内主要数据结构和函数的说明

程序主要使用了C标准模板库的sort排序函数。 此函数自定义compare比较函数,并按关键字从小到大对每个作业的到达时间进行排序。 这样做的目的是找出第一个运行的作业

3 .主要模块

本实验包括四个模块,数据的输入模块、初始进程的选择模块、数据的处理计算模块、数据的输出模块,其中最重要的是数据的处理模块,不仅具有数据的计算功能

四.源代码

# include ' iostream ' # include ' algorithm ' usingnamespacestd; struct node{ string name; 双尾arr; //到达时间双精度; //运行时间}ai[100] boolcompare(nodea,node b ) if ) a.arr==b.arr ) return a.ingb.ing; return a.arrb.arr; (}int main ) ) { int n; 请输入cout '进程数: '; cinn; cout '是' n '个进程的名称、到达时间、执行时间' endl; for(intI=0; in; I ) cinai [ I ].name ai [ I ].arrai [ I ].ing; }sort(ai,ai n,compare ); cout '进程名称t到达时间t运行时间t开始时间t结束时间t周转时间t周转时间' endl; double sta=ai[0].arr; for(intI=0; in; I ) { double jiesu=sta ai[i].ing; double zhouz=jiesu-ai[i].arr; double Dzhouz=zhouz/ai[i].ing; coutendl; coutai[i].name't '; coutai[i].arr'tt '; coutai[i].ing'tt '; coutsta'tt '; coutjiesu'tt '; coutzhouz'tt '; coutDzhouzendl; if(in-2 ) { int mmax=i 1; for(intj=mmax1; ai[j].arr=jiesujn; j () if ) AI[j].ingai[mmax].ing ) { mmax=j; } } //coutmmaxendl; node temp=ai[mmax]; ai[mmax]=ai[i 1]; ai[i 1]=temp; } sta=jiesuai[i 1].arr? jiesu:ai[i 1].arr; (五)程序执行结果和分析

1 .运行结果

2 .结果分析

与预期结果一致,初步认定算法的实现

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。