先来先服务FCFS和短作业优先SJF进程调度算法_第1页
先来先服务FCFS和短作业优先SJF进程调度算法_第2页
先来先服务FCFS和短作业优先SJF进程调度算法_第3页
先来先服务FCFS和短作业优先SJF进程调度算法_第4页
先来先服务FCFS和短作业优先SJF进程调度算法_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统实验报告姓名:*班级:*学号:*学院:软件学院实验一 先来先服务FCFS和短作业优先SJF进程调度算法1、实验目的通过这次实验,加深对进程概念的理解,进一步掌握进程状态的 转变、进程调度的策略及对系统性能的评价方法。2、试验内容问题描述:设计程序模拟进程的先来先服务FCFS和短作业优先SJF调度过 程。假设有n个进程分别在Ti,,Tn时刻到达系统,它们需要的 服务时间分别为Si,,Sn。分别采用先来先服务FCFS和短作业 优先SJF程调度算法进行调度,计算每个进程的完成时间、周 转时间和带权周转时间,并且统计n个进程的平均周转时间和平 均带权周转时间。3、程序要求:1 )进程个数n;每

2、个进程的到达时间 Ti,,Tn和服务时间Si,,Sn ;选择算法 1-FCFS , 2-SJF。2)要求采用先来先服务FCFS和短作业优先SJF分别调度进程 运行,计算每个进程的周转时间和带权周转时间, 并且计算所有进程 的平均周转时间和带权平均周转时间;3 )输出:要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3 :进程B开始运行”等等;4)输出:要求输出计算出来的每个进程的周转时间、带权周转时间、所有进程的平均周转时间以及带权平均周转时间4、需求分析(1) 输入的形式和输入值的范围算法选择:FCFS- “ 1 ”,选 SJF- “2”真实进程数各进程的到达时间各进程的服务时间(

3、2) 输出的形式模拟整个调度过程、周转时间、带权周转时间、所有进程的平均周转时间以及带权平均周转时间。(3) 程序所能达到的功能输入进程个数Num,每个进程到达时间 ArrivalTimei,服务时间ServiceTimei。采用先来先服务FCFS或者短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间、周转时间和带权周转时间,并且统计Num个进程的平均周转时间和平均带权周转时间测试驶进穩名J ABCDE平均到迭时间01234眼番时闾43524FCFS(a)完咸时囱47121418461011140 |带权周转时间1225. 53,52.&完披吋间! 49迪613周转时间163&帯权周

4、转时间2. 673.11.52, 252.15、调试分析(1) 调试过程中遇到的问题以及解决方法,设计与实现的回顾讨论和分析1开始的时候没有判断进程是否到达,导致短进程优先算法运行结果 错误,后来加上了判断语句后就解决了改问题。1基本完成的设计所要实现的功能,总的来说,FCFS编写容易,SJF需要先找到已经到达的进程,再从已经到达的进程里找到进程服务时 间最短的进程,再进行计算。3根据我所写的FCFS和SJF算法,如果用户输入的数据没有按照到达时间的先后顺序,程序将出现问题?解决办法:利用冒泡排序,根据达到时间的先后顺序进行排序。3从第二个进程开始,算法需要判断已在等待的进程,如果分批进行判断

5、与处理,规律性不强,代码很难实现?解决办法:通过牺牲效率的方式,进行一个个判断与处理。为此,引入变量当前时间、用零标记已处理过进程等方式,实现已在等待进程 的判断与判断。(2) 算法的改进设想改进:即使用户输入的进程到达时间没有先后顺序也能准确的计算出 结果。(就是再加个循环,判断各个进程的到达时间先后,组成一个 有序的序列)(3) 经验和体会通过本次实验,深入理解了先来先服务和短进程优先进程调度算法的 思想,培养了自己的动手能力,通过实践加深了记忆。6、测试结果(1)FIFS 算法:文件流输入算法选择,进程个数,进程的达到时间和服务时间I 2)I |g 01 I1F 520 1 2 3 43

6、45 2 4输出请诜择调度类型;先来先服务(FCFS2、短作业优弟SJF)JL35?|C SfC *9? 1SifC 5( ifC址耳寓*耳耳:r*宦*寧斗*當加结果(爵入當来尊世家系寧車审寧术車寧号萼雲冲各个线程到达时间;0123斗答个践程服务时间:43524各个线程完成呵间;47121斗18各个线程周转时间:46101114各个线程带权周转时间;1.02.02.05*53.5平均周韩时间;9.0平均带权周转时间:2.8SJF算法:文件流输入算法选择,进程个数,进程的达到时间和服务时间输出请选择调度类型:1、先来先服务(FCFS) 2、短诈业优先(SJF)*#*#*#*#*#*#*#*水*

7、*横* *结果*侖入)ijC*水*京*京水* *各个线程到达吋间:012B4各个绒程服务时间:13524各个线程完成吋间:4918613各个结程周转吋间;481639各个线程芾权同审专吋间;1.02 GG6GGG73.21.52*25平均周转时间;8-0平均带权周转吋间:2.12333357、附录(java)public static void main(String args) int xz;System. out.printin(”=作业调度一一实现FCFS 和 SJF 调度算法=);System. out.prin tl n(=);System. out .println(” 请输入进程

8、个数:);Scanner in put = new Scann er(System. in);int sum = in put. next In t();intks=newint sum;/到达时间intfw=newint sum;/服务时间intjs=newint sum;/完成时间intzz=newint sum;/周转时间float dq = new float sum;/ 带权周转时间int min = 0;int px = new int sum;/存放排序的序列System. out .println(输入每个进程的开始时间 );for (int i = 0; i sum; i+)

9、 System. out .println(”请输入第” + (i + 1) + 个进程的开始时间);ksi = in put .n ext In t();System. out .printin(” 输入每个进程的服务时间 );for (int j = 0; j sum; j+) System. out .println(”请输入第” + (j + 1) + 个进程的服务时间);fwj = in put .n ext In t();/下面对进程进行相应的操作 for (int ij_ = 0; ii+) System. out .println(”请选择调度类型:1、先来先服务(FCFS)

10、2、短作业优先(SJF);xz = in put. next In t();if (xz = 1) / /选择了先来现服务 FCFSjs0 = ks0 + fw0;for (int jj = 1; jj sum; jj+) / 1结束时间计算jsjj = jsjj - 1 + fwjj;/ 2周转时间计算for (int jj = 0; jj sum; jj+) zzjj = jsjj - ksjj;/ 3带权周转时间计算for (int jj = 0; jj sum; jj+) dqjj = ( float ) zzjj / fwjj; break else if (xz = 2) / /选

11、择了短作业优先 SJF数组进行排序pxi = fwi;js0 = ks0 + fw0;px0 = fw0;for (int i = 1; i sum; i+) /按照服务时间进行排序放在数组/ 1、完成时间计算for (int i = 0; i sum; i+) /把服务时间放在另外一个数组。用这个px中;for (int j = 1; j pxj + 1) min = pxj + 1;pxj + 1 = pxj;pxj = mi n;int aa=jsO;第一个线程完成时间for (int i = 1; i sum; i+) for (int j = 1; j sum; j+) if (px

12、i = fwj) jsj =aa + fwj;aa=jsj;/ 2周转时间计算for (int jj = 0; jj sum; jj+) zzjj = jsjj - ksjj;/ 3带权周转时间计算for (int jj = 0; jj sum; jj+) dqjj = ( float ) zzjj / fwjj;break ; else / / 输入错误!请输入 1System. out .println(”【错误提示】您选择的不是有效操作!或2进行操作.);con ti nue ;/分别输出到达世间、服务时间、结束时间、周转时间、带权周转时间System.out .println(“*“)

13、;System. out .printin(”*结果输入);System. out .print(”各个线程到达时间:”); for (int i = 0; i sum; i+) System. out .print(ksi + );System. out .print(n各个线程服务时间:”);for (int i = 0; i sum; i+) System. out .print(fwi + );System. out .print(n各个线程完成时间:”);for (int i = 0; i sum; i+) System. out .print(jsi + );System. out .print(n各个线程周转时间:”);for (int i = 0; i sum; i+) System. out .print(zzi + );System. out .print(n各个线程带权周转时间:);for (int i = 0; i sum; i+) System. out .print(dqi + );/平均周转时间System. out .print(n 平均周转时间:”);float sum0 =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论