采用静态优先权优先算法的进程调度程序Word文档下载推荐.docx

上传人:b****1 文档编号:13367547 上传时间:2022-10-10 格式:DOCX 页数:21 大小:367.05KB
下载 相关 举报
采用静态优先权优先算法的进程调度程序Word文档下载推荐.docx_第1页
第1页 / 共21页
采用静态优先权优先算法的进程调度程序Word文档下载推荐.docx_第2页
第2页 / 共21页
采用静态优先权优先算法的进程调度程序Word文档下载推荐.docx_第3页
第3页 / 共21页
采用静态优先权优先算法的进程调度程序Word文档下载推荐.docx_第4页
第4页 / 共21页
采用静态优先权优先算法的进程调度程序Word文档下载推荐.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

采用静态优先权优先算法的进程调度程序Word文档下载推荐.docx

《采用静态优先权优先算法的进程调度程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《采用静态优先权优先算法的进程调度程序Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。

采用静态优先权优先算法的进程调度程序Word文档下载推荐.docx

3.2测试用例及运行结果7

第4部分源代码9

第5部分总结及参考文献16

5.1总结16

5.2参考文献17

第1部分课设简介

1.1课程设计题目

1.2课程设计目的

操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。

1)进一步巩固和复习操作系统的基础知识。

2)培养学生结构化程序、模块化程序设计的方法和能力。

3)提高学生调试程序的技巧和软件设计的能力。

4)提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。

1.3课程设计内容

设计并实现一个采用静态优先权算法的进程调度演示程序

1.4时间安排

1)分析设计贮备阶段(1天)

2)编程调试阶段(7天)

3)写课程设计报告、考核(2天)

第2部分实验原理分析

2.1问题描述

(1)每一个进程有一个PCB,其内容可以根据具体情况设定。

(2)进程数、进入内存时间、要求服务时间、优先级等均可以在界面上设定

(3)可读取样例数据(要求存放在外部文件中)进行进程数、进入内存时间、时间片长度、作业大小、进程优先级的初始化

(4)可以在运行中显示各进程的状态:

就绪、执行(由于不要求设置互斥资源与进程间的同步关系,故只有两种状态)

(5)采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相应的阻塞队列

(6)有性能比较功能,可比较同一组数据在不同调度算法下的平均周转时间

(7)具有一定的数据容错性

2.2程序设计流程图

2.3解决方法

通过数组容纳所有数据,根据冒泡排序把数据按从小到大顺序排列,在分析a[0]和其他数据的大小,如果a[0]的完成时间大于其他数据就按照冒泡的排列顺序,如果小,就比较其他数据的优先级,按优先级大小排序。

第3部分主要的功能模块

3.1主要的函数

voidfcfs()

{

inti,j,n,min,px;

floatsum1,sum2;

printf("

\t请输入有n个进程(0<

n<

=50):

\t"

);

scanf("

%d"

&

n);

while(n>

50||n<

=0)

{

printf("

n\t请重新输入:

"

scanf("

}

\n\n"

structGzuo{

intid;

//进程名字

intdt;

//到达时刻

intst;

//服务时间

intwct;

//完成时刻

floatzt;

//周转时间

floatdczt;

//带权周转时间

};

Gzuoa[N];

for(i=0;

i<

n;

i++)

a[i].id=i+1;

\t到达时间:

a[i].dt);

\t服务时间:

a[i].st);

\n"

for(j=n-1;

j>

=0;

j--)

{

for(i=0;

j;

{

if(a[i].dt>

a[i+1].dt)

{

min=a[i].dt;

a[i].dt=a[i+1].dt;

a[i+1].dt=min;

min=a[i].st;

a[i].st=a[i+1].st;

a[i+1].st=min;

min=a[i].id;

a[i].id=a[i+1].id;

a[i+1].id=min;

}

}

a[0].wct=a[0].st+a[0].dt;

a[0].zt=(float)a[0].st;

a[0].dczt=a[0].zt/a[0].st;

for(i=1;

if(a[i].dt>

a[i-1].wct)

a[i].wct=a[i].dt+a[i].st;

a[i].zt=(float)a[i].st;

a[i].dczt=a[i].zt/a[i].st;

}

else

a[i].wct=a[i-1].wct+a[i].st;

a[i].zt=(float)(a[i].wct-a[i].dt);

}

3.2测试用例及运行结果

第4部分源代码

#include"

stdio.h"

#defineN50

voidmain()

{voidfcfs();

voidyxj();

inta;

while(true)

\t\t/*************************/"

\n\t\t/*1、先到先服务调度*/"

\n\t\t/*2、优先级优先调度*/"

\n\t\t/*0、退出*/\n"

\n\n\t请选择菜单项:

a);

switch(a)

case1:

fcfs();

break;

case2:

yxj();

default:

break;

if(a<

0&

&

a>

2)break;

}

\t1、按id号依次输出\n"

\t2、按完成顺序依次输出\n"

\n\t请选择输出顺序:

px);

\nid:

到达时间\t服务时间\t完成时间\t周转时间\t带权周转时间\n"

sum1=0;

sum2=0;

switch(px)

{

for(i=0;

{

printf("

%d:

%d\t\t%d\t\t%d\t\t%.0f\t\t%.2f\n"

a[i].id,a[i].dt,a[i].st,a[i].wct,a[i].zt,a[i].dczt);

sum1+=a[i].zt;

sum2+=a[i].dczt;

printf("

\n平均周转时间:

%.2f\n"

sum1/n);

\n平均带权周转时间:

%.2f\n\n"

sum2/n);

break;

for(j=0;

j<

j++)

for(i=0;

if(a[i].id==j+1)

{

printf("

sum1+=a[i].zt;

sum2+=a[i].dczt;

}

voidyxj()

intb=0,z;

\n\t\

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

当前位置:首页 > 教学研究 > 教学反思汇报

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

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