广工操作系统实验报告Word下载.docx

上传人:b****5 文档编号:15857623 上传时间:2022-11-16 格式:DOCX 页数:39 大小:316.71KB
下载 相关 举报
广工操作系统实验报告Word下载.docx_第1页
第1页 / 共39页
广工操作系统实验报告Word下载.docx_第2页
第2页 / 共39页
广工操作系统实验报告Word下载.docx_第3页
第3页 / 共39页
广工操作系统实验报告Word下载.docx_第4页
第4页 / 共39页
广工操作系统实验报告Word下载.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

广工操作系统实验报告Word下载.docx

《广工操作系统实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《广工操作系统实验报告Word下载.docx(39页珍藏版)》请在冰豆网上搜索。

广工操作系统实验报告Word下载.docx

在多道程序系统中,一个作业被提交后必须经过处理机调度后,方能获得处理机执行。

对调度的处理又都可采用不同的调度方式和调度算法。

调度算法是指:

根据系统的资源分配策略所规定的资源分配算法。

短进程优先调度算法是指对短进程优先调度的算法,它是从后备队列中选择一个或者若干个进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。

四、重要数据结构或源程序中疑难部分的说明,需附详细注释

#include"

stdio.h"

#include<

stdlib.h>

conio.h>

#definegetpch(type)(type*)malloc(sizeof(type))

#defineNULL0

structpcb

{/*定义进程控制块PCB*/

charname[10];

//进程名

charstate;

//状态

intsuper;

//优先数

intntime;

//需要运行时间

intrtime;

//运行时间

structpcb*link;

}*ready=NULL,*p;

typedefstructpcbPCB;

intnum;

sort()/*建立对进程进行短进程优先排列函数*/

{

PCB*first,*second;

intinsert=0;

if((ready==NULL)||((p->

ntime)<

(ready->

ntime)))/*需要运行时间最小者,插入队首*/

{

p->

link=ready;

ready=p;

}

else/*进程比较需要运行时间,插入适当的位置中*/

first=ready;

second=first->

link;

while(second!

=NULL)

if((p->

(second->

ntime))/*若插入进程比当前进程需要运行时间小,*/

{/*插入到当前进程前面*/

p->

link=second;

first->

link=p;

second=NULL;

insert=1;

}

else/*插入进程需要运行时间最大,则插入到队尾*/

first=first->

second=second->

if(insert==0)first->

}

voidinput()/*建立进程控制块函数*/

inti;

//clrscr();

/*清屏*/

printf("

\n请输入进程数:

"

);

scanf("

%d"

&

num);

for(i=0;

i<

num;

i++)

\n进程号No.%d:

\n"

i);

p=getpch(PCB);

\n输入进程名:

%s"

p->

name);

\n输入进程需要运行时间:

p->

ntime);

rtime=0;

state='

w'

;

link=NULL;

sort();

/*调用sort函数*/

voidmain()/*主函数*/

inti,len,h=0;

charch;

input();

ch=getchar();

\n调度序列为:

p=ready;

for(i=num;

i>

0;

i--)

{printf("

%s"

p=p->

printf("

\n\n进程已经完成.\n"

五、程序运行结果

七、结果分析与实验小结

结果正确。

短进程优先需要把进程按左右运行时间排序,然后让其按顺序执行即可。

实验二作业调度

一、实验目的:

用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。

二、实验内容:

1.写并调试一个单道处理系统的作业等待模拟程序。

2.作业等待算法:

分别采用先来先服务(FCFS)、响应比高者优先(HRN)的调度算法。

3.由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的CPU时限等因素。

4.每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:

作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。

作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。

每个作业的最初状态总是等待W。

5.对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。

5、重要数据结构或源程序中疑难部分的说明,需附详细注释

编写一个程序将输入的进程按其提交时间进行排列,按排列顺序进行调度,计算其开始时间、完成时间、周转时间等数值

先来先服务

#include"

intctime;

//提交时间

intstime;

//开始时间

intftime;

//完成时间

intttime;

//周转时间

floatdtime;

//带权周转时间

voidsort()/*建立对进程先来先服务排列函数*/

ctime)<

ctime)))/*达到时间最小者,插入队首*/

else/*进程比较到达时间,插入适当的位置中*/

ctime))/*若插入进程比当前进程到达时间小,*/

else/*插入进程到达时间最大,则插入到队尾*/

\n输入提交时间:

ctime);

{PCB*first,*second;

inti,x,y;

floats1=0,s2=0;

//输出

进程名\t开始时间\t完成时间\t周转时间\t带权周转时间\n"

second=ready;

first->

ftime=0;

{if(second->

ctime>

first->

ftime)/*计算完成时间,周转时间等*/

second->

stime=second->

ctime;

else

stime=first->

ftime;

ftime=(second->

ntime)+(second->

stime);

ttime=(second->

ftime)-(second->

x=second->

ttime;

y=second->

ntime;

dtime=(float)x/(float)y;

%s\t%d\t%d\t%d\t%f\n"

second->

name,second->

stime,second->

ftime,second->

ttime,second->

dtime);

s1=s1+second->

s2=s2+second->

dtime;

if(se

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1