1、
福建农林大学计算机与信息学院
(程序设计类课程)
实验报告
课程名称:
操作系统
姓 名:
系:
计算机
专 业:
计算机科学与技术
年 级:
2009
学 号:
指导教师:
职 称:
2011年11月4日
实验项目列表
序号
实验项目名称
成绩
指导教师
1
Linux基本操作与编程
2
作业调度算法模拟
3
Linux文件操作与内存管理算法模拟
4
5
6
7
8
2、
9
10
11
12
福建农林大学计算机与信息学院实验报告
系: 计算机科学与技术 专业: 计算机科学与技术 年级: 2009
姓名: 学号: 实验室号_田514__ 计算机号 39
实验时间: 2011.11.18 指导教师签字: 成绩:
实验二:作业调度算法模拟
一、 实验目的和要求
1) 掌握作业调度的主要功能及算法。
2) 通过模拟作业调度算法的设计加深对作业管理基
3、本原理的理解。
二、 实验内容和原理
(1)编写程序p.c,其功能是从键盘输入两个实数,输出这两个实数的平方和,生成 可执行文件为pow。记录编译的命令和结果。
(2)作业调度算法(FCFS)编程模拟:
编制一段程序,对所输入的若干作业,按FCFS算法模拟调度,观察、记录并分析调度的输出结果情况。
(3)作业调度算法(SJF)编程模拟:编程实现由短作业优先算法对模拟作业的调度,并观察分析运行结果。
三、 实验环境
1. 硬件环境:
计算机设备:P4+256MB内存
2. 软件环境:
VM+红旗Linux 4.0 桌面版
Turbo 3.1 for Win
4、dows
四、 算法描述及实验步骤
(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
#include
#define SIZE 4
struct Job_type
{
int no; //作业号
int tb; //作业开始时间(分)
5、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;i6、b[i].no,&job[i].tb,&job[i].tr);
printf("输入作业顺序:\n");
for(i=0;ijob[j].tb)
{x
7、job[i];
job[i]=job[j];
job[j]=x;
}
printf("FCFS调度结果:\n");
printf("开始时间 作业号 到达时间 运行时间 完成时间 等待时间 周转时间\n");
for(i=0;i8、"\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;ijob[j].tr)
{x=job[i];
job[i]=job[j];
job[j]=x;
}
9、
printf("短作业优先调度结果:\n");
printf("开始时间 作业号 到达时间 运行时间 总时间 等待时间\n");
for(i=0;i