版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一 先来先服务FCFS和短作业优先SJF进程调度算法班级:2013级软件3班 姓名:陈夏玲 学号:1325112005【实验目的】:通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。【实验内容】1、需求分析(1) 输入的形式和输入值的范围;进程的个数num:大于0的整数进程的到达时间ArrivalTimei:大于等于0的整数进程的服务时间ServiceTimei; 大于0的整数(2) 输出的形式输出计算出来的每个进程的周转时间、带权周转时间、所有进程的平均周转时间以及带权平均周转时间。(3) 程序所能达到的功能;先来先服务FCFS和短作业优
2、先SJF分别调度进程运行,计算每个进程的周转时间和带权周转时间,并且计算所有进程的平均周转时间和带权平均周转时间(4) 测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果。2、概要设计设计程序模拟进程的先来先服务FCFS和短作业优先SJF调度过程。假设有n个进程分别在T1, ,Tn时刻到达系统,它们需要的服务时间分别为S1, ,Sn。分别采用先来先服务FCFS和短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间、周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。Ø 变量初始化;Ø 接收用户输入n,T1, ,Tn,S1, ,Sn
3、;算法选择1-FCFS,2-SJF;Ø 按照选择算法进行进程调度,计算进程的完成时间、周转时间和带权周转时间;Ø 计算所有进程的平均周转时间和平均带权周转时间;Ø 按格式输出调度结果。3、详细设计 2个算法void FCFS(int *ArrivalTime, int *ServiceTime, int num)int i = 0;int j = 0;int *FinishTime = new intnum;int *WholeTime = new intnum;double *WeightWholeTime = new doublenum;double Aver
4、ageWholeTime = 0;double AverageWeightWholeTime = 0;int lastFinishTime = 0;for (i = 0; i<num; i+)if (ArrivalTimei>lastFinishTime)FinishTimei = ArrivalTimei + ServiceTimei;elseFinishTimei = lastFinishTime + ServiceTimei;lastFinishTime = FinishTimei;WholeTimei = FinishTimei - ArrivalTimei;WeightW
5、holeTimei = WholeTimei / (double)ServiceTimei;cout << "完成时间为:" << endl;for (i = 0; i<num; i+)cout << FinishTimei << " "cout << endl;cout << "周转时间如下:" << endl;int allWholeTime = 0;for (i = 0; i<num; i+)allWholeTime = allWho
6、leTime + WholeTimei;cout << WholeTimei << " "cout << endl;AverageWholeTime = allWholeTime / (double)num;cout << "平均周转时间为:" << AverageWholeTime << endl;cout << "带权周转时间如下:" << endl;double allWeightWholeTime = 0;for (i = 0; i
7、<num; i+)allWeightWholeTime = allWeightWholeTime + WeightWholeTimei;cout << WeightWholeTimei << " "cout << endl;AverageWeightWholeTime = allWeightWholeTime / num;cout << "平均带权周转时间为:" << AverageWeightWholeTime << endl;cout << endl;void
8、SJF(int *ArrivalTime, int *ServiceTime, int num)int i = 0;int j = 0;bool *done = new boolnum;int *copyArrivalTime = new intnum;for (i = 0; i<num; i+)copyArrivalTimei = ArrivalTimei;int *copyServiceTime = new intnum;for (i = 0; i<num; i+)copyServiceTimei = ServiceTimei;for (i = 0; i<num; i+)
9、donei = false;int *FinishTime = new intnum;int *copyFinishTime = new intnum;int *WholeTime = new intnum;double *WeightWholeTime = new doublenum;double AverageWholeTime = 0;double AverageWeightWholeTime = 0;int lastFinishTime = 0;int tempTime = 0;int tempService = 0;cout << endl;for (i = 0; i&l
10、t;num; i+)if (i != 0)for (j = i; j<num; j+)if (copyServiceTimej<copyServiceTimei)if (copyArrivalTimej<lastFinishTime)tempTime = copyArrivalTimei;tempService = copyServiceTimei;copyArrivalTimei = copyArrivalTimej;copyServiceTimei = copyServiceTimej;copyArrivalTimej = tempTime;copyServiceTime
11、j = tempService;copyFinishTimei = lastFinishTime + copyServiceTimei;lastFinishTime = copyFinishTimei;cout << endl;for (i = 0; i<num; i+)for (j = 0; j<num; j+)if (ArrivalTimei = copyArrivalTimej)FinishTimei = copyFinishTimej;WholeTimei = FinishTimei - ArrivalTimei;WeightWholeTimei = Whole
12、Timei / (double)ServiceTimei;cout << "完成时间为:" << endl;for (i = 0; i<num; i+)cout << FinishTimei << " "cout << endl;cout << "周转时间如下:" << endl;int allWholeTime = 0;for (i = 0; i<num; i+)allWholeTime = allWholeTime + WholeTim
13、ei;cout << WholeTimei << " "cout << endl;AverageWholeTime = allWholeTime / (double)num;cout << "平均周转时间为:" << AverageWholeTime << endl;cout << "带权周转时间如下:" << endl;double allWeightWholeTime = 0;for (i = 0; i<num; i+)allWe
14、ightWholeTime = allWeightWholeTime + WeightWholeTimei;cout << WeightWholeTimei << " "cout << endl;AverageWeightWholeTime = allWeightWholeTime / num;cout << "平均带权周转时间为:" << AverageWeightWholeTime << endl;cout << endl;4、调试分析 (1)调试过程中遇到的问题以及
15、解决方法,设计与实现的回顾讨论和分析;发现程序老是只能执行一般 原因是 算法函数的结尾多加了一个while(1);虽然不知道为什么,但是解决了(2)经验和体会。程序老有错误解决不了时,我就觉的我电脑坏了5、用户使用说明照截图那样输入就行了 很好理解的,就算不理解,看到黑框框也理解了6、测试结果列出测试结果,包括输入和输出。7、附录#include "stdafx.h"#include <iostream>using namespace std;void main()void FCFS(int *ArrivalTime, int *ServiceTime, int
16、 num);void SJF(int *ArrivalTime, int *ServiceTime, int num);cout << "请输入进程的个数" << endl;int num;int i = 0;int j = 0;cin >> num;int *ArrivalTime = new intnum;int *ServiceTime = new intnum;cout << "请依次输入进程的到达时间" << endl;for (i = 0; i<num; i+)cin >
17、> ArrivalTimei;cout << "请依次输入进程的服务时间" << endl;for (i = 0; i<num; i+)cin >> ServiceTimei;int opt;char ch = 'y'docout << "请选择以下算法,输入序号.n"cout << "1: FCFS 先来先服务 2: SJF 短作业优先 3:quitn"cin >> opt;while (opt < 1 | opt > 3
18、)cout << "选项不存在,请重新选择.n"cin >> opt;switch (opt)case 1:cout << "FCFS算法" << endl;FCFS(ArrivalTime, ServiceTime, num);cout << endl;break;case 2:cout << "SJF算法" << endl;SJF(ArrivalTime, ServiceTime, num);break;case 3:break;cout <
19、< "是否继续(y/n) "cin >> ch;while (ch != 'y' && ch != 'n')cout << "选项不存在,请重新选择.n"cin >> ch; while (ch = 'y');/*cout << "FCFS算法" << endl;FCFS(ArrivalTime, ServiceTime, num);cout << endl;cout << &quo
20、t;SJF算法" << endl;SJF(ArrivalTime, ServiceTime, num)*/;while (1);void FCFS(int *ArrivalTime, int *ServiceTime, int num)int i = 0;int j = 0;int *FinishTime = new intnum;int *WholeTime = new intnum;double *WeightWholeTime = new doublenum;double AverageWholeTime = 0;double AverageWeightWholeT
21、ime = 0;int lastFinishTime = 0;for (i = 0; i<num; i+)if (ArrivalTimei>lastFinishTime)FinishTimei = ArrivalTimei + ServiceTimei;elseFinishTimei = lastFinishTime + ServiceTimei;lastFinishTime = FinishTimei;WholeTimei = FinishTimei - ArrivalTimei;WeightWholeTimei = WholeTimei / (double)ServiceTim
22、ei;cout << "完成时间为:" << endl;for (i = 0; i<num; i+)cout << FinishTimei << " "cout << endl;cout << "周转时间如下:" << endl;int allWholeTime = 0;for (i = 0; i<num; i+)allWholeTime = allWholeTime + WholeTimei;cout << WholeTime
23、i << " "cout << endl;AverageWholeTime = allWholeTime / (double)num;cout << "平均周转时间为:" << AverageWholeTime << endl;cout << "带权周转时间如下:" << endl;double allWeightWholeTime = 0;for (i = 0; i<num; i+)allWeightWholeTime = allWeightW
24、holeTime + WeightWholeTimei;cout << WeightWholeTimei << " "cout << endl;AverageWeightWholeTime = allWeightWholeTime / num;cout << "平均带权周转时间为:" << AverageWeightWholeTime << endl;cout << endl;void SJF(int *ArrivalTime, int *ServiceTime, int
25、 num)int i = 0;int j = 0;bool *done = new boolnum;int *copyArrivalTime = new intnum;for (i = 0; i<num; i+)copyArrivalTimei = ArrivalTimei;int *copyServiceTime = new intnum;for (i = 0; i<num; i+)copyServiceTimei = ServiceTimei;for (i = 0; i<num; i+)donei = false;int *FinishTime = new intnum;
26、int *copyFinishTime = new intnum;int *WholeTime = new intnum;double *WeightWholeTime = new doublenum;double AverageWholeTime = 0;double AverageWeightWholeTime = 0;int lastFinishTime = 0;int tempTime = 0;int tempService = 0;cout << endl;for (i = 0; i<num; i+)if (i != 0)for (j = i; j<num;
27、j+)if (copyServiceTimej<copyServiceTimei)if (copyArrivalTimej<lastFinishTime)tempTime = copyArrivalTimei;tempService = copyServiceTimei;copyArrivalTimei = copyArrivalTimej;copyServiceTimei = copyServiceTimej;copyArrivalTimej = tempTime;copyServiceTimej = tempService;copyFinishTimei = lastFinishTime + copyServiceTimei;lastFinishTime = copyFinishTimei;cout << endl;for (i = 0; i<num; i+)for (j = 0; j<num; j+)if (ArrivalTimei = copyArrivalTimej)FinishTimei = copyFinishTimej;WholeTimei = Finish
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CRIA 17003.2-2024功能鞋 第2部分:防寒评价技术规范
- T/TMAC 163-2025新能源汽车电子后视镜技术要求
- T/GDAF 005-2022广东公共安全技术防范标准化试点管理规范
- T/CI 344-2024低温冷风微量润滑平面磨削加工工艺规范
- T/CAAMTB 94-2022汽车车窗玻璃用加速固化聚氨酯胶粘剂
- T/CPMIA 0107-2026注射成型车间智能制造执行系统 (MES)
- AI在体育教育中的应用
- 2025~2026学年安徽宣城市郎溪县人教版六年级下册期末数学试卷【附答案】
- 2025-2026学年吉林省舒兰市初中数学九年级期末下册自测模拟重点试题(附答案)
- PHP微信开发面试题及详细答案(实战版)
- 2026年重庆丰都县社区工作者招聘考试【结构化面试题库+高分答题模板】(含考官评分要点)
- 统编版九年级上册 道德与法治 第二单元《进入新时代》单元检测试卷(含答案)
- 2026新教材语文 7 培养德智体美劳全面发展的社会主义建设者和接班人 课件
- 2026江西九江长途汽车运输集团有限公司劳动合同制员工招聘4人考试模拟试题及答案解析
- 冷库工程监理实施细则
- 四上2-8《呵护我们的器官》教学课件
- 2025四川简阳农商行社会招聘笔试历年典型考题及考点剖析附带答案详解
- 变压器装配工岗中理论实操考核试卷含答案
- 2026国家能源集团榆林化工煤制油重大项目筹建处招聘岗位(74人)笔试历年难易错考点试卷带答案解析
- 2026年国家能源投资集团有限责任公司校园招聘考试题库及答案解析
- 2026年三星 (中国) 半导体有限公司招聘(西安有岗)笔试备考题库及答案详解
评论
0/150
提交评论