下载此文档

实验一、进程调度实验报告.doc


文档分类:IT计算机 | 页数:约17页 举报非法文档有奖
1/17
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/17 下载此文档
文档列表 文档介绍
该【实验一、进程调度实验报告 】是由【书生教育】上传分享,文档一共【17】页,该文档可以免费在线阅读,需要了解更多关于【实验一、进程调度实验报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。实验一、进度调换实验报告
实验一、进度调换实验报告
1/17
实验一、进度调换实验报告
优选文档
广东技术师范学院实验报告
学院:
计算机科学学
专业:
计算机科学与
班级:
成绩:

技术(师范)
姓名:
学号:
组别:
组员:
实验地址:
实验日期:
指导教师签字:
预习情况
操作情况
考勤情况
数据办理情况
实验名称:实验一、进度调换实验
一、实验目的
用高级语言编写和调试一个进度调换程序,以加深对进度的看法及进度调换算法的理解
二、实验种类
综合性实验。综合高级语言编程、进度调换模型、进度调换算法及数据结构等多方面的知识
三、实验内容和步骤
,采用“最高优先数优先”调换算法对五个进度进行调换。
“最高优先数优先”调换算法的基本思想是把CPU分配给就绪队列中优先数最高
的进度。
静态优先数是在创办进度时确定的,并在整个进度运行时期不再改变。
动向优先数是指进度的优先数在创办进度时能够给定一个初始值,并且能够按必然
原则更正优先数。比方:在进度获得一次CPU后就将其优先数减少1。也许,进度等待
的时间高出某一时限时增加其优先数的值,等等
该题依照老师给的代码用VisualC++运行,结果以及解析以下:
.
实验一、进度调换实验报告
实验一、进度调换实验报告
17/17
实验一、进度调换实验报告
优选文档
结果解析:依照上述输入的三个进度的信息能够获得:优先级最高的是进度cc
最先调换进度cc的状态为运行态,需要执行的时间为10当前就绪队列状态为:进度
先级比较高,处于就绪队列前面,而进度bb先级是三者中最低的,所以处于就绪队列的最后。而此时这两个进度的状态都为就绪态。
实验一、进度调换实验报告
实验一、进度调换实验报告
3/17
实验一、进度调换实验报告
.
实验一、进度调换实验报告
实验一、进度调换实验报告
17/17
实验一、进度调换实验报告
优选文档
结果解析:当进度cc了一个时间片此后而它已占用CPU时间已达到所需要的运行时间,则将它的优先级减1此后,再将三个进度按优先级的大小排列,从中选择优先级大的进度进入运行状态,则该次进入运行态的是进度aa
依照这种方式素来运行下去:
直到:
实验一、进度调换实验报告
实验一、进度调换实验报告
5/17
实验一、进度调换实验报告
.
实验一、进度调换实验报告
实验一、进度调换实验报告
17/17
实验一、进度调换实验报告
优选文档
结果解析:当进度bb的CPU占用时间等于它需要的执行时间时,进度bb度达成。则这时进度调换中还有两个进度:进度aa进度cc
结果解析:当调换进度中只剩下进度aa程cc这时依照进度优先级的大小,进度
入运行态。当进度aa调换时,进度调换程序中直剩下进度cc这时进度cc进入运行态,而当前就绪队列将为空。
实验一、进度调换实验报告
实验一、进度调换实验报告
7/17
实验一、进度调换实验报告
.
实验一、进度调换实验报告
实验一、进度调换实验报告
17/17
实验一、进度调换实验报告
优选文档
直到:
结果解析:当进度i的CPU占用时间等于所需要的执行时间时,进度cc调换达成,则这时进度调换中已经没有需要调换的进度了,则整个进度调换达成。
2、编写并调试一个模拟的进度调换程序,采用“轮转法”调换算法对五个进度进行
调换。
轮转法能够是简单轮转法、可变时间片轮转法,或多队列轮转法。
简单轮转法的基本思想是:所有就绪进度按FCFS排成一个队列,总是把办理机分
配给队首的进度,各进度占用CPU的时间片相同。若是运行进度用完它的时间片后还为
达成,就把它送回到就绪队列的尾端,把办理机重新分配给队首的进度。直至所有的进
程运行达成。
将老师给的源程序更正成简单的时间片轮转法
流程图以下:
实验一、进度调换实验报告
实验一、进度调换实验报告
9/17
实验一、进度调换实验报告
.
实验一、进度调换实验报告
实验一、进度调换实验报告
17/17
实验一、进度调换实验报告
开始
初始化PCB,输入进度信息
各进度按FCFS原则排队等待调换
所有队列都
为空
就绪队列首进度投入运行
时间片到,运行进度已
占用CPU时间+1
运行进度已占用
CPU时间已达到所
需的运行时间
插入新的
进度
把运行进度插入到下一
个队列的队尾
时间片轮转法
#include<>
#include<>
#include<>
#definegetpch(type)(type*)malloc(sizeof(type))
#defineNULL0
#defineTIME2//时间片长度
/////////////
优选文档
进度达成,撤
消该进度
实验一、进度调换实验报告
实验一、进度调换实验报告
11/17
实验一、进度调换实验报告
.
实验一、进度调换实验报告
实验一、进度调换实验报告
17/17
实验一、进度调换实验报告
优选文档
typedefstructpcb{//////进度管理块
charname[10];///////进度名字
charstate;///////进度状态
intqueue;//////进度所在的队列
intntime;/////进度需要运行的时间
intrtime;//////进度已经运行的时间
intetime;////进度在本队列可运行的时间片
structpcb*link;
}PCB;
PCB*ready=NULL,*pinsert=NULL,*pfend=NULL,*p=NULL;/*就绪队
列,进度插入地址的变量*/
intgeti()//使用户仅能输入整数
{
charch;
inti=0;
fflush(stdin);
ch=getchar();
while(ch=='\n'){
printf("\tf输入不能够为空..请重新输入\n");
fflush(stdin);
ch=getchar();
}
while(ch!='\n'){
if(ch>'9'||ch<'0'){
printf("\t输入有误!!输入只能为正整数,请重新输入...\n");
fflush(stdin);
i=0;
ch=getchar();
实验一、进度调换实验报告
实验一、进度调换实验报告
13/17
实验一、进度调换实验报告
.
实验一、进度调换实验报告
实验一、进度调换实验报告
17/17
实验一、进度调换实验报告
优选文档
}else{
i=i*10+(ch-'0');
ch=getchar();
}
}
returni;
}
voidfindpos()///////更新状态量
{
PCB*ps=pfend;
if(!ps||!ps->link||(ps->link->queue-ps->queue)>1)
pinsert=ps;
else{
while(ps->link&&ps->link->queue!=(pfend->queue+2))
ps=ps->link;
pinsert=ps;
}
}
voidinsert()//////插入进度
{
if(!ready){
ready=p;
pfend=p;
pinsert=p;
}elseif(ready->queue==1)//////第一队列存在
实验一、进度调换实验报告
实验一、进度调换实验报告
15/17
实验一、进度调换实验报告
.
实验一、进度调换实验报告
实验一、进度调换实验报告
17/17
实验一、进度调换实验报告
优选文档
{p->link=pfend->link;pfend->link=p;pfend=p;findpos();
}
Else
{
p->link=ready;
ready=p;
findpos();
}
}
voidinput()/*建立进度控制块函数*/
{
inti,num;
printf("\n请输入进度的个数:");
num=geti();
for(i=0;i<num;i++)
{
printf("\n进度号No.%d:\n",i+1);
p=getpch(PCB);
printf("\n输入进度名:");
scanf("%s",p->name);
printf("\n输入进度运行时间:");
p->ntime=geti();
实验一、进度调换实验报告
实验一、进度调换实验报告
17/17
实验一、进度调换实验报告
.
实验一、进度调换实验报告
实验一、进度调换实验报告
17/17
实验一、进度调换实验报告
优选文档
printf("\n");
p->rtime=0;
p->state='w';
p->queue=1;
p->etime=TIME;
p->link=NULL;
insert();/*调用insert函数*/
}
}
voiddisp(PCB*pr)/*建立进度现实函数,用于显示目前进度*/
{
printf("\nname\tstate\tqueue\tntime\trtime\t在队列可停留时间\t\n");
printf("|%s\t",pr->name);
printf("|%c\t",pr->state);
printf("|%d\t",pr->queue);
printf("|%d\t",pr->ntime);
printf("|%d\t",pr->rtime);
printf("|%d\t",pr->etime);
printf("\n");
}
voidcheck()/*建立进度查察函数*/
{
PCB*pr;
printf("\n****当前正在运行的进度是:%s",ready->name);/*显示当前运行的进
程*/
disp(ready);
pr=ready->link;
printf("\n****当前就绪队列状态为:\n");/*显示就绪队列状态*/
实验一、进度调换实验报告
实验一、进度调换实验报告
19/17
实验一、进度调换实验报告
.
实验一、进度调换实验报告
实验一、进度调换实验报告
17/17
实验一、进度调换实验报告

实验一、进程调度实验报告 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数17
  • 收藏数0 收藏
  • 顶次数0
  • 上传人书生教育
  • 文件大小755 KB
  • 时间2023-02-25