动态优先权的进程调度算法模拟
华北科技学院计算机系综合性实验
实 验 报 告
课程名称 计算机操作系统 实验学期 2010 至 2011 学年 第 2 学期 学生所在系部 基础部 年级 2008级 专业班级 信息与计算科学 学生姓名 范玉文 学号 200809014212 任课教师 杜杏菁 实验成绩
计算机系制
华北科技学院计算机系综合性实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
《操作系统》课程综合性实验报告
开课实验室:第六实验室 2011年 6 月 15日
进程调度算法程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
实验题目
一、实验目的
通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。
二、设备与环境
1. 硬件设备:PC机一台
2. 软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如C \C++\Java 等编程语言环境。
三、实验内容
(1)用C语言(或其它语言,如Java)实现对N个进程采用某种进程调度算法(如动态优先权调度)的调度。
(2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段: , 进程标识数ID。
, 进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。
, 进程已占用CPU时间CPUTIME。
, 进程还需占用的CPU时间ALLTIME。当进程运行完毕时,ALLTIME变为0。 , 进程的阻塞时间STARTBLOCK,
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示当进程再运行STARTBLOCK个时间片后,进程将进入
阻塞状态。
, 进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个时间片后,将转
换成就绪状态。
, 进程状态STATE。
, 队列指针NEXT,用来将PCB排成队列。
(3)优先数改变的原则:
, 进程在就绪队列中呆一个时间片,优先数增加1。
, 进程每运行一个时间片,优先数减3。
(4)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。
(5)
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
程序运行的结果,谈一下自己的认识。
第 1 页
华北科技学院计算机系综合性实验报告
四、实验结果及分析
1.实验设计说明
2.实验代码
#include
#define N 5
void init();
void print();
int getRunning();
void sort();
int run(int time);
enum STATE{Ready,Run,Block,RunOut};
struct PROCESS
{
int ID;
int Priority;
int Cputime;
int Alltime;
int Startblock;
int Blocktime;
enum STATE State;
}Process[N];
int READY[N];//存储就绪队列 int BLOCK[N];//存储阻塞队列 int RUNOUT[N][2];//存储运行完的进程和相应的时间片数
int main()
{
int Time=0;
init();
printf("Time:%d\n",Time);
sort();
print();
while(1)
{
Time++;
getchar();//要从键盘上得到一个字符才继续运行,以此实现键盘控制逐步进行
的目的
printf("Time:%d\n",Time);
if(run(Time))
break;
}
return 0;
}
void init()//无问题了
第 2 页
华北科技学院计算机系综合性实验报告 {
int i;
for(i=0;i=0)
printf("\tRUNNING PROG: %d\n",getRunning());
printf("\tREADY_QUEUE:");
for(i=0;i=0)
printf("->%d",Process[READY[i]].ID);
else{
break;
}
}
printf("\n\tBLOCK_QUEUE:");
for(i=0;i=0)
printf("->%d",Process[BLOCK[i]].ID);
else
{
break;
第 3 页
华北科技学院计算机系综合性实验报告
}
}
printf("\n=====================================================\n");
printf("ID\t");
for(i=0;i=0)
printf("->%d(%d)",Process[RUNOUT[i][0]].ID,RUNOUT[i][1]);
else{
printf("\n");
break;
}
}
printf("\n");
}
int getRunning()
{
int i;
for(i=0;ij;--k)
{
READY[k]=READY[k-1];
}
READY[j]=i;
break;
}
}
}
else if(Process[i].State==Block)//找出阻塞队列放入BLOCK[]中
{
for(j=0;j=Process[BLOCK[j]].Blocktime)
{ continue; }
else
{
for(k=N-1;k>j;--k)
{
BLOCK[k]=BLOCK[k-1];
}
BLOCK[j]=i;
break;
}
}
}
}
}
int run(int time)
{
第 6 页
华北科技学院计算机系综合性实验报告
int i,runNum;//run的次数
runNum=READY[0];
if(runNum<0&&BLOCK[0]<0)
{
printf("Every process is OVER!\n");
return 1;
}
else
{
if(runNum>=0)
{
Process[runNum].Priority-=3;
Process[runNum].Alltime-=1;
Process[runNum].Cputime+=1;
Process[runNum].State=Run;
for(i=0;i=0)
第 7 页
华北科技学院计算机系综合性实验报告
{
Process[runNum].Startblock-=1;
if(Process[runNum].Startblock==0)
{
Process[runNum].State=Block;
}
}
}
else if(BLOCK[0]>=0)
{
for(i=0;i1->2->3->0->4
BLOCK_QUEUE:
===================================================== ID 0 1 2 3 4 PRIORITY 9 38 30 29 0 CPUTIME 0 0 0 0 0 ALLTIME 3 3 6 3 4 STARTBLOCK 2 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE Ready Ready Ready Ready Ready
第 8 页
华北科技学院计算机系综合性实验报告
RUNOUT LIST:
Time:1
RUNNING PROG: 1
READY_QUEUE:->1->2->3->0->4
BLOCK_QUEUE:
===================================================== ID 0 1 2 3 4 PRIORITY 10 35 31 30 1 CPUTIME 0 1 0 0 0 ALLTIME 3 2 6 3 4 STARTBLOCK 2 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE Ready Run Ready Ready Ready
RUNOUT LIST:
Time:2
RUNNING PROG: 1
READY_QUEUE:->1->2->3->0->4
BLOCK_QUEUE:
===================================================== ID 0 1 2 3 4 PRIORITY 11 32 32 31 2 CPUTIME 0 2 0 0 0 ALLTIME 3 1 6 3 4 STARTBLOCK 2 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE Ready Run Ready Ready Ready
RUNOUT LIST:
Time:3
RUNNING PROG: 1
READY_QUEUE:->2->3->0->4
第 9 页
华北科技学院计算机系综合性实验报告
BLOCK_QUEUE:
===================================================== ID 0 1 2 3 4 PRIORITY 12 29 33 32 3 CPUTIME 0 3 0 0 0 ALLTIME 3 0 6 3 4 STARTBLOCK 2 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE Ready Run Ready Ready Ready
RUNOUT LIST:->1(3)
Time:4
RUNNING PROG: 2
READY_QUEUE:->3->2->0->4
BLOCK_QUEUE:
===================================================== ID 0 1 2 3 4 PRIORITY 13 29 30 33 4 CPUTIME 0 3 1 0 0 ALLTIME 3 0 5 3 4 STARTBLOCK 2 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE Ready RunOut Run Ready Ready
RUNOUT LIST:->1(3)
Time:5
RUNNING PROG: 3
READY_QUEUE:->2->3->0->4
BLOCK_QUEUE:
===================================================== ID 0 1 2 3 4 PRIORITY 14 29 31 30 5
第 10 页
华北科技学院计算机系综合性实验报告 CPUTIME 0 3 1 1 0 ALLTIME 3 0 5 2 4 STARTBLOCK 2 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE Ready RunOut Ready Run Ready
RUNOUT LIST:->1(3)
Time:6
RUNNING PROG: 2
READY_QUEUE:->3->2->0->4
BLOCK_QUEUE:
===================================================== ID 0 1 2 3 4 PRIORITY 15 29 28 31 6 CPUTIME 0 3 2 1 0 ALLTIME 3 0 4 2 4 STARTBLOCK 2 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE Ready RunOut Run Ready Ready
RUNOUT LIST:->1(3)
Time:7
RUNNING PROG: 3
READY_QUEUE:->2->3->0->4
BLOCK_QUEUE:
===================================================== ID 0 1 2 3 4 PRIORITY 16 29 29 28 7 CPUTIME 0 3 2 2 0 ALLTIME 3 0 4 1 4 STARTBLOCK 2 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0
第 11 页
华北科技学院计算机系综合性实验报告 STATE Ready RunOut Ready Run Ready
RUNOUT LIST:->1(3)
Time:8
RUNNING PROG: 2
READY_QUEUE:->3->2->0->4
BLOCK_QUEUE:
===================================================== ID 0 1 2 3 4 PRIORITY 17 29 26 29 8 CPUTIME 0 3 3 2 0 ALLTIME 3 0 3 1 4 STARTBLOCK 2 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE Ready RunOut Run Ready Ready
RUNOUT LIST:->1(3)
Time:9
RUNNING PROG: 3
READY_QUEUE:->2->0->4
BLOCK_QUEUE:
===================================================== ID 0 1 2 3 4 PRIORITY 18 29 27 26 9 CPUTIME 0 3 3 3 0 ALLTIME 3 0 3 0 4 STARTBLOCK 2 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE Ready RunOut Ready Run Ready
RUNOUT LIST:->1(3)->3(9)
Time:10
RUNNING PROG: 2
第 12 页
华北科技学院计算机系综合性实验报告
READY_QUEUE:->2->0->4
BLOCK_QUEUE:
===================================================== ID 0 1 2 3 4 PRIORITY 19 29 24 26 10 CPUTIME 0 3 4 3 0 ALLTIME 3 0 2 0 4 STARTBLOCK 2 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE Ready RunOut Run RunOut Ready
RUNOUT LIST:->1(3)->3(9)
Time:11
RUNNING PROG: 2
READY_QUEUE:->2->0->4
BLOCK_QUEUE:
===================================================== ID 0 1 2 3 4 PRIORITY 20 29 21 26 11 CPUTIME 0 3 5 3 0 ALLTIME 3 0 1 0 4 STARTBLOCK 2 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE Ready RunOut Run RunOut Ready
RUNOUT LIST:->1(3)->3(9)
Time:12
RUNNING PROG: 2
READY_QUEUE:->0->4
BLOCK_QUEUE:
===================================================== ID 0 1 2 3 4
第 13 页
华北科技学院计算机系综合性实验报告 PRIORITY 21 29 18 26 12 CPUTIME 0 3 6 3 0 ALLTIME 3 0 0 0 4 STARTBLOCK 2 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE Ready RunOut Run RunOut Ready
RUNOUT LIST:->1(3)->3(9)->2(12)
Time:13
RUNNING PROG: 0
READY_QUEUE:->0->4
BLOCK_QUEUE:
===================================================== ID 0 1 2 3 4 PRIORITY 18 29 18 26 13 CPUTIME 1 3 6 3 0 ALLTIME 2 0 0 0 4 STARTBLOCK 1 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE Run RunOut RunOut RunOut Ready
RUNOUT LIST:->1(3)->3(9)->2(12)
Time:14
RUNNING PROG: 0
READY_QUEUE:->4
BLOCK_QUEUE:->0
===================================================== ID 0 1 2 3 4 PRIORITY 15 29 18 26 14 CPUTIME 2 3 6 3 0 ALLTIME 1 0 0 0 4 STARTBLOCK 0 -1 -1 -1 -1
第 14 页
华北科技学院计算机系综合性实验报告 BLOCKTIME 3 0 0 0 0 STATE Block RunOut RunOut RunOut Ready
RUNOUT LIST:->1(3)->3(9)->2(12)
Time:15
RUNNING PROG: 4
READY_QUEUE:->4
BLOCK_QUEUE:->0
===================================================== ID 0 1 2 3 4 PRIORITY 15 29 18 26 11 CPUTIME 2 3 6 3 1 ALLTIME 1 0 0 0 3 STARTBLOCK 0 -1 -1 -1 -1 BLOCKTIME 2 0 0 0 0 STATE Block RunOut RunOut RunOut Run
RUNOUT LIST:->1(3)->3(9)->2(12)
Time:16
RUNNING PROG: 4
READY_QUEUE:->4
BLOCK_QUEUE:->0
===================================================== ID 0 1 2 3 4 PRIORITY 15 29 18 26 8 CPUTIME 2 3 6 3 2 ALLTIME 1 0 0 0 2 STARTBLOCK 0 -1 -1 -1 -1 BLOCKTIME 1 0 0 0 0 STATE Block RunOut RunOut RunOut Run
RUNOUT LIST:->1(3)->3(9)->2(12)
Time:17
第 15 页
华北科技学院计算机系综合性实验报告
RUNNING PROG: 4
READY_QUEUE:->0->4
BLOCK_QUEUE:
===================================================== ID 0 1 2 3 4 PRIORITY 15 29 18 26 5 CPUTIME 2 3 6 3 3 ALLTIME 1 0 0 0 1 STARTBLOCK 0 -1 -1 -1 -1 BLOCKTIME 0 0 0 0 0 STATE Ready RunOut RunOut RunOut Run
RUNOUT LIST:->1(3)->3(9)->2(12)
Time:18
RUNNING PROG: 0
READY_QUEUE:->4
BLOCK_QUEUE:
===================================================== ID 0 1 2 3 4 PRIORITY 12 29 18 26 6 CPUTIME 3 3 6 3 3 ALLTIME 0 0 0 0 1 STARTBLOCK 0 -1 -1 -1 -1 BLOCKTIME 0 0 0 0 0 STATE Run RunOut RunOut RunOut Ready
RUNOUT LIST:->1(3)->3(9)->2(12)->0(18) Time:19
RUNNING PROG: 4
READY_QUEUE:
BLOCK_QUEUE:
=====================================================
第 16 页
华北科技学院计算机系综合性实验报告 ID 0 1 2 3 4 PRIORITY 12 29 18 26 3 CPUTIME 3 3 6 3 4 ALLTIME 0 0 0 0 0 STARTBLOCK 0 -1 -1 -1 -1 BLOCKTIME 0 0 0 0 0 STATE RunOut RunOut RunOut RunOut Run
RUNOUT LIST:->1(3)->3(9)->2(12)->0(18)->4(19) Time:20
Every process is OVER!
Press any key to continue
4.实验结果分析
该程序采用动态优先权进行进程的调度,初始化一定的初始值,然后每按一下回车执行一步,实
现了逐步进行的要求。
5.实验心得
本次综合作业让我再一次锻炼了C语言的运用和进程调度的模拟设计,虽然时间较紧,最近也比
较忙,但还是抽出了时间把它完成了,总的来说,收获还是很大的。
评定项目 A B C D 评定项目 A B C D 评师教价
第 17 页
华北科技学院计算机系综合性实验报告
算法正确 界面美观~布局合理 程序结构合 操作熟练
理
语法、语义正 解析完整
确
实验结果正 文字流畅
确
报告
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
题解正确 其他:
评价教师签名:
年 月 日
第 18 页