操作系统A综合实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华北科技学院计算机系综合性实验

实验报告

课程名称操作系统A

实验学期 2010 至 2011 学年第 5 学期学生所在系部计算机系

年级 09 专业班级信管B091

学生姓名郑印学号 200907034117 任课教师杜杏青

实验成绩

计算机系制

实验报告须知

1、学生上交实验报告时,必须为打印稿(A4纸)。页面空间不够,可以顺延。

2、学生应该填写的内容包括:封面相关栏目、实验地点、时间、目的、设备环境、

内容、结果及分析等。

3、教师应该填写的内容包括:实验成绩、教师评价等。

4、教师根据本课程的《综合性实验指导单》中实验内容的要求,评定学生的综合

性实验成绩;要求在该课程期末考试前将实验报告交给任课教师。综合性实验中,所涉及的程序,文档等在交实验报告前,拷贝给任课教师。任课教师统一刻录成光盘,与该课程的期末考试成绩一同上交到系里存档。

5、未尽事宜,请参考该课程的实验大纲和教学大纲。

《操作系统A》课程综合性实验报告

开课实验室:年月日

实验题目进程调度算法程序设计

一、实验目的

通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。

二、设备与环境

1. 硬件设备:PC机一台

2. 软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如C \C++\Java 等编程语言环境。

三、实验内容

用C语言实现对N个进程采用某种进程调度算法(如动态优先权调度)的调度。

四、实验结果及分析

1.实验设计说明

本实验为进程调度中的短作业优选(非抢占式)算法的实现。定义结构struct jincheng,其中

d表示其进程名,数组啊a[2]表示其到达时间和所需求的服务时间。b[5],c[5],e[5]分别表示进程的完成时间,周转时间,平均周转时间。t表示时间刻表。

开始时,选输出各进程,进程A到达,执行晚后,其服务时间置0,根据时间刻t,判断是否所有进程都到达,若没有,则判断哪些进程到达,从中找出最短的服务时间(不包括已调度的进程),执行,若全部到达,则从全部进程中找到最短服务时间的进程(不包括已调度的进程),执行。

最后输出各进程的完成时间,周转时间,平均周转时间。及他们的平均时间。

2.实验代码

/***********spf(非抢占)************/

#include

void main()

{

struct jincheng

{

char d;

int a[2];

}v[5]={{'A',0,3},{'B',2,6},{'C',4,4},{'D',6,5},{'E',8,2}} ; //定义进程的到达时间和服务时间int t=0,i=0,j,m,n=0,p,q,s=0,g[5];

int b[5]; //表示完成时间

int c[5]; //表示周转时间

float e[5],k=0,l,h; //表示带权周转时间

/*********要调度的进程*************************/

printf("进程到达时间和服务时间: \n");

printf("进程到达时间服务时间\n");

for(i=0;i<5;i++)

{

printf("%c %d %d\n",v[i].d,v[i].a[0],v[i].a[1]);

g[i]=v[i].a[1];

}

/****************进程调度的实现******************/

for(j=0;j<5;j++)

{

t=t+v[n].a[1];

b[n]=t;

v[n].a[1]=0;

if(t

{

for(p=0;p<5;p++)

{

if(t

{

q=v[p-1].a[1];

n=p-1;

break;

}

}

for(m=0;m

{

if(q>v[m].a[1] && v[m].a[1]!=0)

n=m;

}

}

else

{

for(m=0;m<5;m++)

{

if(v[m].a[1]!=0)

{q=v[m].a[1];n=m;break;}

}

for(m=0;m<5;m++)

{

if(q>v[m].a[1] && v[m].a[1]!=0)

n=m;

}

}

}

printf("\n");

printf("进程的完成时间\n");

for(i=0;i<5;i++)

{

printf("%c ",v[i].d);

}

printf("\n");

for(i=0;i<5;i++)

{

printf("%d ",b[i]);

c[i]=b[i]-v[i].a[0];

}

printf("\n");

printf("\n");

printf("进程的周转时间\n");

for(i=0;i<5;i++)

{

printf("%d ",c[i]);

s=s+c[i];

e[i]=c[i]/(g[i]*1.0);

}

printf("\n");

printf("\n");

printf("进程的带权周转时间\n");

for(i=0;i<5;i++)

{

printf("%.2f ",e[i]);

k=k+e[i];

}

l=s/5.0;

h=k/5.0;

printf("\n");

printf("\n");

printf("平均周转时间:%.2f\n",l); printf("平均带权周转时间:%.2f\n",h);

相关文档
最新文档