实现作业调度算法先来先服务最短作业最短剩余时间.doc

实现作业调度算法先来先服务最短作业最短剩余时间.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实现作业调度算法先来先服务最短作业最短剩余时间

PAGE1 / NUMPAGES7 0956104 朱文君 操作系统 上机报告 一、实验目的: 1.学习处理器各种调度算法的基本思想; 2.通过上机实习,编写程序实现处理器的调度加深对各种算法的理解。 二、实验内容: 1.实验平台:Microsoft Visual C++ 6.0编程环境、Microsoft Office Word软件平台; 2.用C语言编程实现处理器的调度算法: ①先来先服务算法 ②最短作业优先算法 ③最短剩余时间优先算法; 三、实验步骤: (一)先来先服务算法 1.说明:先来先服务算法(First Come First Served,FCFS)按照作业进入系统后备作业队列的先后次序来挑选作业,先进入系统的作业将优先被挑选进入主存,创建用户进程,分配所需资源,然后,移入就绪队列。 2.算法实现:#includestdio.h void main() { int i,a,T=0,N,add; float sum=0; printf(输入进程数:); scanf(%d,N); for(i=1;i=N;i++) { printf(\n第%d个进程所需的时间:,i); scanf(%d,a); T=T+a; sum+=T; printf(\n是否有新的进程进入,输入新的进程数:); scanf(%d,add); N=N+add; } printf(\n T=%f,sum/N); } 3.运行结果演示: (二)最短作业优先算法 1.说明:最短作业优先算法(Shortest Job First,SFJ)以进入系统的作业所要求的CPU运行时间的长短为标准,总是选取预计计算时间最短的作业投入运行。 2.算法实现: #includestdio.h int De_a(int x,int y,int a[]) { int i; if(x==y) a[x]=0; else { for(i=x;iy;i++) { a[i]=a[i+1]; } a[i]=0; } return 1; } void main() { int N,M,i,j,k,add,flag,a[1000]={0}; float T=0.000,W=0.000,sum=0; printf(输入进程数:); scanf(%d,N); for(i=1;i=N;i++) { printf(\n第%d个进程所需的时间:,i); scanf(%d,a[i]); } M=N; for(i=1;i=N;i++) { a[0]=a[1]; for(j=1;j=M;j++) { if(a[0]=a[j]) { a[0]=a[j]; flag=j; } } T=T+(float)a[flag]; sum+=T; W=W+(float)T/a[flag]; printf( %f ,W); De_a(flag,M,a); printf(\n是否有新的进程进入,输入新的进程数:); scanf(%d,add); for(k=1;k=add;k++) { printf(\n第%d个进程所需的时间:,i); scanf(%d,a[k+M-1]); } N=N+add; M=M+add-1; } printf(平均作业周转时间T=%f\n,sum/N); printf(平均带权作业周转时间W=%f\n,W/N); } 3.运行结果演示: (三)最短剩余时间优先算法 1.说明:最短剩余时间优先算法(Shortest Remaining Time First,SRTF)即当前某进程/线程正在运行,如果有新进程/线程移入就绪队列,若它所需要的CPU运行时间比当前运行进程/线程所需要的剩余CPU时间还短,抢占式最短作业优先算法强行剥夺当前执行者的控制权,调度新进程/线程执行。 2.算法实现: #includestdio.h #define N 100 void main() { int n,j,k,i,sum=0,flag=1,q,m,x;//sum时间总和 char p; struct { int arrivetime; int cputime; int resttime; }process[N]={{100,100,100},{100,100,100},{100,100,100},{100,100,100},{100,100,100},{100,100,100}}; printf(输入

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档