资源描述
福建农林大学计算机与信息学院
(程序设计类课程)
实验报告
课程名称:
操作系统
姓 名:
系:
计算机
专 业:
计算机科学与技术
年 级:
2009
学 号:
指导教师:
职 称:
2011年11月4日
实验项目列表
序号
实验项目名称
成绩
指导教师
1
Linux基本操作与编程
2
作业调度算法模拟
3
Linux文件操作与内存管理算法模拟
4
5
6
7
8
9
10
11
12
福建农林大学计算机与信息学院实验报告
系: 计算机科学与技术 专业: 计算机科学与技术 年级: 2009
姓名: 学号: 实验室号_田514__ 计算机号 39
实验时间: 2011.11.18 指导教师签字: 成绩:
实验二:作业调度算法模拟
一、 实验目的和要求
1) 掌握作业调度的主要功能及算法。
2) 通过模拟作业调度算法的设计加深对作业管理基本原理的理解。
二、 实验内容和原理
(1)编写程序p.c,其功能是从键盘输入两个实数,输出这两个实数的平方和,生成 可执行文件为pow。记录编译的命令和结果。
(2)作业调度算法(FCFS)编程模拟:
编制一段程序,对所输入的若干作业,按FCFS算法模拟调度,观察、记录并分析调度的输出结果情况。
(3)作业调度算法(SJF)编程模拟:编程实现由短作业优先算法对模拟作业的调度,并观察分析运行结果。
三、 实验环境
1. 硬件环境:
计算机设备:P4+256MB内存
2. 软件环境:
VM+红旗Linux 4.0 桌面版
Turbo 3.1 for Windows
四、 算法描述及实验步骤
(1)include "math.h"
int main()
{
float x,y;
scanf("%f,%f",&x,&y);
printf("%6.3f",x*x+y*y);
return 0;
}
(3)#include <stdio.h>
#include <stdlib.h>
#define SIZE 4
struct Job_type
{
int no; //作业号
int tb; //作业开始时间(分)
int tr; //运行时间(分)
} x;
Job_type job[]={1,0,70,2,20,20,3,40,40,4,30,5}; //此数据适合FCFS
//Job_type job[]={1,0,70,2,0,20,3,0,40,4,0,5}; //此数据适合SJF
void load()
{ int i;
//printf("\nEnter the Jobs' datas:\n");
//for(i=0;i<SIZE;i++)
//scanf("%d,%d,%d",&job[i].no,&job[i].tb,&job[i].tr);
printf("输入作业顺序:\n");
for(i=0;i<SIZE;i++)
printf("\t%d\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);
}
void fcfs()
{ int i,j,t=0,tw=0,tt=0;
for(i=0;i<SIZE-1;i++)
for(j=i+1;j<SIZE;j++)
if(job[i].tb>job[j].tb)
{x=job[i];
job[i]=job[j];
job[j]=x;
}
printf("FCFS调度结果:\n");
printf("开始时间 作业号 到达时间 运行时间 完成时间 等待时间 周转时间\n");
for(i=0;i<SIZE;i++)
{
printf(" %d",t);
t=t+job[i].tr;
tw=t-job[i].tb-job[i].tr; //作业等待时间
tt=t-job[i].tb; //周转时间
printf("\t%d\t%d\t%d\t%d\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr,t,tw,tt);
}
}
void sjf() //短作业调度函数
{ int i,j,t=0,tw=0;
for(i=0;i<SIZE-1;i++)
for(j=i+1;j<SIZE;j++)
if(job[i].tr>job[j].tr)
{x=job[i];
job[i]=job[j];
job[j]=x;
}
printf("短作业优先调度结果:\n");
printf("开始时间 作业号 到达时间 运行时间 总时间 等待时间\n");
for(i=0;i<SIZE;i++)
{
printf(" %d",t);
t=t+job[i].tr;
tw=t-job[i].tb-job[i].tr; //作业等待时间
printf("\t%d\t%d\t%d\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr,t,tw);
}
}
void main()
{
load();
fcfs();
sjf();
}
五、调试过程
调试正确
六、实验结果
(1)
(3)
七、总结
通过本次实验基本掌握作业调度的主要功能及算法,经过了对模拟作业调度算法的设计加深对作业管理基本原理的理解。但是也有一些不太了解的地方。
展开阅读全文