最短进程优先(Shortest Process First,SPF)调度算法
来源:互联网 发布:双核单片机 编辑:程序博客网 时间:2024/05/24 06:32
一、实验目的
在批处理系统、分时系统和实时系统中,进程数目一般都大于处理机的个数,导致各个进程互相争夺处理机。这就需要进程调度程序按照相应的调度方式和调度算法,从处于就绪状态的诸多进程中选择一个进程将处理机分配给它,使之执行。
本实验利用高级语言编写和调试进程调度程序,模拟进程调度的过程,从而加深对进程概念和进程调度算法的理解,帮助学生加深了解处理器调度的工作。
二、实验内容
1. 设计有五个进程并发执行的模拟调度程序,每个程序由一个PCB表示。
2. 模拟调度程序可任选两种调度算法实现。
3. 程序执行中应能在屏幕上显示出各种进程的状态变化。
4. 实验过后书写实验报告。
三、实验方法
1. 算法设计思路
最短进程优先调度算法每次从就绪队列中选出下一个“CPU执行期最短”的进程,为之分配处理机。我这里就是每次在决定调度进程前,比较就绪的所有作业,选择运行时间最短的作业运行
2.程序中主要的数据结构和函数说明
程序主要使用了c++标准模板库中的sort排序函数,其中自定义了compare比较函数,并以每个作业的到达时间为关键字从小到大排序,做这一步的目的是为找出第一个运行的作业
3.主要模块
本实验包含四个模块,数据的输入模块,初始时对一个进程的选择模块,对数据的处理计算模块,数据的输出模块,其中最重要的是对数据的处理这一模块,其不单单实现了对数据的计算功能,还实现了在已经就绪的进程中选择运行时间最短的作业运行
四、源程序代码
#include"iostream"#include"algorithm"using namespace std;struct node{ string name; double arr; //到达时间 double ing; //运行时间}ai[100];bool compare(node a,node b){ if(a.arr==b.arr) return a.ing<b.ing; return a.arr<b.arr;}int main(){ int n; cout<<"请输入进程个数:"; cin>>n; cout<<"请输入"<<n<<"个进程的名字、到达时间、运行时间"<<endl; for(int i=0;i<n;i++) { cin>>ai[i].name>>ai[i].arr>>ai[i].ing; } sort(ai,ai+n,compare); cout<<"进程名 \t到达时间\t运行时间\t开始时间\t结束时间\t周转时间\t带权周转时间"<<endl; double sta=ai[0].arr; for(int i=0;i<n;i++) { double jiesu=sta+ai[i].ing; double zhouz=jiesu-ai[i].arr; double Dzhouz=zhouz/ai[i].ing; cout<<endl; cout<<ai[i].name<<"\t"; cout<<ai[i].arr<<"\t\t"; cout<<ai[i].ing<<"\t\t"; cout<<sta<<"\t\t"; cout<<jiesu<<"\t\t"; cout<<zhouz<<"\t\t"; cout<<Dzhouz<<endl; if(i<n-2) { int mmax=i+1; for(int j=mmax+1;ai[j].arr<=jiesu&&j<n;j++) { if(ai[j].ing<ai[mmax].ing) { mmax=j; } } //cout<<mmax<<endl; node temp=ai[mmax]; ai[mmax]=ai[i+1]; ai[i+1]=temp; } sta=jiesu>ai[i+1].arr?jiesu:ai[i+1].arr; }}
五、程序运行结果及分析
1. 运行结果
2.结果分析
与预期的结果一致,初步认定算法实现
0 0
- 最短进程优先(Shortest Process First,SPF)调度算法
- 百度2017年暑假实习生编程题目(第三题)---3、进程调度算法 短作业优先(SJF, Shortest Job First)又称为“短进程优先
- 证明SJF(Shortest Job First:最短作业优先算法)策略生成的调度方案理论最优
- 最短路径(SPF - Shortest Path Firsh) - Dijkstra算法
- 最短作业优先调度算法
- 进程调度算法 短作业优先 SJF
- 短进程优先的调度算法详解
- 短进程优先的调度算法详解
- RIP和OSPF(Open Shortest Path First开放式最短路径优先) 区别
- Dijkstra最短路径算法(SPF)
- 最短作业优先调度算法(SJF算法)的C++实现
- 短进程优先算法
- Java模拟最短作业优先、时间片轮转、最高响应比三种进程调度算法
- 短作业优先调度算法
- 短作业优先调度算法
- 最短作业优先算法(不完善)
- 最短路径算法(Shortest-path Algorithms)
- 进程调度之SPF
- react-native-country-picker-modal手机通讯录
- comet4j 消息推送配置
- SpringBoot基本讲解(配置文件)
- 指示函数与符号函数
- android仿微信选择器同时展示视频和图片
- 最短进程优先(Shortest Process First,SPF)调度算法
- JNI/NDK开发指南(十)
- 剑指offer——包含min函数的栈
- 2017算法课.08(Assign Cookies )
- 阿里云linux centos 一键部署web环境--图文详解
- 欢迎使用CSDN-markdown编辑器
- 动态规划练习一 02:最大子矩阵
- java学习之路之接口(3)--工厂设计模式
- 2016-2017 ACM-ICPC, Egyptian Collegiate Programming Contest (ECPC 16)【solved:9 / 11】