操作系统实验《磁盘调度算法》文档格式.docx
《操作系统实验《磁盘调度算法》文档格式.docx》由会员分享,可在线阅读,更多相关《操作系统实验《磁盘调度算法》文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
(3)实验类型:
说明是验证型实验、设计型实验、创新型实验还是综合型实验。
2、正文内容
实验报告的正文内容须包括以下内容:
(1)实验目的:
目的要明确,要抓住重点,符合实验指导书中的要求。
(2)实验内容:
说明本实验的主要内容。
(3)实验原理:
简要说明本实验项目所涉及的理论知识。
(4)实验环境:
实验用的软硬件环境(配置)。
(5)实验方案:
对于验证性型实验,写明依据何种原理、操作方法进行实验;
对于设计型和综合型实验,写明依据何种原理、操作方法进行实验,并画出硬件组成图、软件流程图、设计思路和设计方法,再配以相应的文字说明;
对于创新型实验,除符合设计型和综合型实验要求外,还应注明其创新点、特色。
(6)实验步骤:
写明实验的实施步骤,包括实验过程中的记录、数据。
(7)实验结果与分析:
写明实验的最终结果,并对结果进行分析,做出结论。
(8)实验中遇到的问题及解决方法:
写明实验过程中遇到的问题及所采取的解决方法。
(9)实验总结(在封底上):
写出对本次实验的心得体会、思考和建议。
一、实验目的:
通过该实验加深和提高对进程调度知识的掌握。
二、实验内容与要求:
用C语言实现下列要求,并写出实验报告,报告内容包括:
题目、目的、内容和要求、程序清单、运行情况(输入、输出)、总结。
现有一批给定的进程P1、P2、P3、P4、P5,它们到达时间和要求运行时间如下:
进程
到达时间
运行时间
P1
5
p2
1
3
p3
2
p4
6
p5
4
(1)分别输出采用短进程优先调度算法SPF、先来先服务FCFS调度算法时,各进程的周转时间、带权周转时间及平均周转时间和平均带权周转时间,比较两种算法哪个性能好。
(2)输出两种调度算法的进程完成顺序。
三、实验原理:
根据先来先服务和短作业优先算法的理论,用C语言程序实现这两个算法,并根据两个算法得出的平均周转时间和平均带权周转时间的比较得出两个算法的好坏。
四、实验环境:
VC++6.0编程环境
五、实验方案:
根据两个算法的理论,编写C语言程序,实现各自的理论。
六、实验步骤:
程序源代码:
#include<
stdio.h>
intAT[5]={0,1,2,3,4};
//定义各进程到达时间数组
intMT[5]={5,3,2,6,1};
//定义各进程运行时间数组
intST[5];
//开始时间数组
intFT[5];
//结束时间数组
intZZ[5];
//周转时间数组
floatDQZZ[5];
//带权周转时间数组
floatT,W;
//T:
平均周转时间;
W:
平均带权周转间
floatZ=0,D=0;
inti,j,k=0,time=0;
inta,A[5],B[5];
floatC[2],E[2];
voidShow()
{
for(i=0;
i<
5;
i++)
{
Z=Z+ZZ[i];
D=D+DQZZ[i];
}
T=Z/5;
W=D/5;
printf("
进程到达时间运行时间开始时间完成时间周转时间带权周转时间\n"
);
printf("
%-9d%-9d%-9d%-9d%-12d%-12d%-12.2f"
i+1,AT[i],MT[i],ST[i],FT[i],ZZ[i],DQZZ[i]);
\n"
平均周转时间为:
%4.2f\t平均带权周转时间为:
%4.2f\n"
T,W);
voidClear()//将数据恢复到初始状态
ZZ[i]=0;
ST[i]=0;
FT[i]=0;
DQZZ[5]=0;
T=W=0;
Z=D=0;
time=0;
}
voidFCFS()//先来先服务算法
ST[i]=time;
time=time+MT[i];
FT[i]=time;
ZZ[i]=FT[i]-AT[i];
DQZZ[i]=(float)ZZ[i]/MT[i];
Show();
C[0]=T;
C[1]=W;
进程完成顺序为:
p%-6d"
i+1);
voidSJF()//短作业优先算法
A[i]=MT[i];
for(i=1;
for(j=1;
j<
5-i;
j++)
{
if(A[j]>
A[j+1])
{
a=A[j];
A[j]=A[j+1];
A[j+1]=a;
}
}
for(j=0;
if(A[i]==MT[j])
B[k]=j;
k++;
ST[j]=time;
time=time+MT[j];
FT[j]=time;
ZZ[j]=FT[j]-AT[j];
DQZZ[j]=(float)ZZ[j]/MT[j];
break;
Show();
E[0]=T;
E[1]=W;
B[i]+1);
\n\n"
voidCompare()
if(C[0]>
E[0]&
&
C[1]>
E[1])
短作业进程调度算法优于先来先服务算法\n\n"
else
先来先服务算法优于短作业进程调度算法\n\n"
voidmain()
先来先服务算法进程调度情况:
FCFS();
Clear();
printf("
短作业优先算法进程调度情况:
SJF();
Compare();
七、实验结果与分析:
运行截图:
通过程序的运行结果与理论分析对照可知该程序的的正确性,通过比较平均周转时间和平均带权周转时间,可知短作业优先算法要好于先来先服务算法。
八、实验中遇到的问题及解决方法:
在解决短作业优先算法的时候,最后得出的平均周转时间为先来先服务算法和短作业优先算法的理论值之和。
最后发现,在先调用了先来先服务算法之后没有将一些变量值置零,就直接调用了短作业优先算法,导致结果为两算法的理论值之和。
最后在调用先来先服务算法之后,通过调用清零函数clear()使各变量的值恢复到初始值。
【实验总结】
通过本次操作系统上机,加深和提高了对进程调度知识的掌握。
通过各种进程调度算法,了解计算机内部是如何实现进程调度的。
通过对各种进程调度算法的比较,发现各种调度算法的优劣之处。
【指导教师评语及成绩】
成绩:
指导教师(签字):
年月日