操作系统作业调度实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二作业调度
一.实验题目
1、编写并调试一个单道处理系统的作业等待模拟程序。
作业调度算法:分别采用先来先服务(FCFS),最短作业优先(SJF)的调度算法。
(1)先来先服务算法:按照作业提交给系统的先后顺序来挑选作业,先提交的先被挑选。
(2)最短作业优先算法:是以进入系统的作业所提出的“执行时间”为标准,总是优先选取执行时间最短的作业。
二.实验目的:
本实验要求用高级语言(C语言实验环境)编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解
三 .实验过程
<一>单道处理系统作业调度
1)单道处理程序作业调度实验的源程序:
执行程序:
2)实验分析:
1、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业
完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU 时限等因素。
2、每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、
所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待
W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。
3、对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周
转时间,以及这组作业的平均周转时间及带权平均周转时间。
3)流程图:
二.最短作业优先算法
三.高响应比算法
图一.先来先服务流程图
4)源程序:
#include <>
#include <>
#include <>
#define getpch(type) (type*)malloc(sizeof(type))
#define NULL 0
int n;
float T1=0,T2=0;
int times=0;
struct jcb .\n",p->name);
free(p); .wait...",time);
if(times>1000)
{printf("\nruntime is too long...error...");getch();} }
else
{
running(min,m); .wait...",time);
times++;
if(times>100){printf("\nruntime is too long...error");getch();} }
else{
running(min,m); 来先服务算法.");
printf("\n\t\t\t2.最短作业优先算法.");
printf("\n\t\t\t3.响应比高者优先算法");
printf("\n\t\t\t0.退出程序.");
printf("\n\n\t\t\t\t选择所要操作:");
scanf("%d",&m);
switch(m)
{
case 1:
fcfs(m);
getch();
system("cls");
mune();
break;
case 2:
sjf(m);
getch();
system("cls");
mune();
break;
case 3:
hrn(m);
getch();
system("cls");
mune();
break;
case 0:
system("cls");
break;
default:
printf("选择错误,重新选择.");
getch();
system("cls");
mune();
}
}
main() 择操作的界面
2.输入操作初始信息:
3.先来先服务算法作业调度结果: (调度顺序:a->b->c->d->e)
4.最短作业优先算法作业调度结果(调度顺序: a->d->b->e->c)
5.高响应比算法作业调度结果: (调度顺序 a->b->d->c->e)