进程调度算法模拟实验

上传人:第*** 文档编号:57527382 上传时间:2018-10-22 格式:PDF 页数:11 大小:347.45KB
返回 下载 相关 举报
进程调度算法模拟实验_第1页
第1页 / 共11页
进程调度算法模拟实验_第2页
第2页 / 共11页
进程调度算法模拟实验_第3页
第3页 / 共11页
进程调度算法模拟实验_第4页
第4页 / 共11页
进程调度算法模拟实验_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《进程调度算法模拟实验》由会员分享,可在线阅读,更多相关《进程调度算法模拟实验(11页珍藏版)》请在金锄头文库上搜索。

1、华北科技学院计算机系综合性实验华北科技学院计算机系综合性实验实实 验验 报报 告告课程名称课程名称操作系统操作系统 C C实验学期实验学期20122012至至 20132013学年学年 第第2 2 学期学期学生所在系部学生所在系部计算机系计算机系年级年级专业班级专业班级学生姓名学生姓名学号学号任课教师任课教师杜杏菁杜杏菁实验成绩实验成绩计算机系制计算机系制华北科技学院计算机系综合性实验报告第 1 页操作系统操作系统 C C课程综合性实验报告课程综合性实验报告开课实验室:开课实验室:基础六机房基础六机房2013年年 6 月月 3 日日实验题目进程调度算法模拟进程调度算法模拟一、实验目的通过对进程

2、调度算法的模拟, 进一步理解进程的基本概念, 加深对进程运行状态和进程调度过程、调度算法的理解。二、设备与环境1. 硬件设备:PC 机一台2. 软件环境:安装 Windows 操作系统或者 Linux 操作系统,并安装相关的程序开发环境,如 CC+Java 等编程语言环境。三、实验内容(1)用 C 语言(或其它语言,如 Java)实现对 N 个进程采用某种进程调度算法(如动态优先权调度)的调度。(2)每个用来标识进程的进程控制块 PCB 可用结构来描述,包括以下字段:进程标识数 ID。进程优先数 PRIORITY,并规定优先数越大的进程,其优先权越高。进程已占用 CPU 时间 CPUTIME。

3、进程还需占用的 CPU 时间 ALLTIME。当进程运行完毕时,ALLTIME 变为 0。进程的阻塞时间 STARTBLOCK,表示当进程再运行 STARTBLOCK 个时间片后,进程将进入阻塞状态。进程被阻塞的时间 BLOCKTIME,表示已阻塞的进程再等待 BLOCKTIME 个时间片后,将转换成就绪状态。进程状态 STATE。队列指针 NEXT,用来将 PCB 排成队列。(3)优先数改变的原则:进程在就绪队列中呆一个时间片,优先数增加 1。进程每运行一个时间片,优先数减 3。(4)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列

4、中的进程和处于阻塞队列中的进程。华北科技学院计算机系综合性实验报告第 2 页四、实验结果及分析1.实验代码#include “iostream.h“#include “windows.h“typedef structint ID;/进程标识数int PRIORITY;/进程优先数int CPUTIME;/进程已占用 CPU 时间intALLTIME; /进程还需占用的 CPU 时间int STARTBLOCK;/进程的阻塞时间int BLOCKTIME; /进程被阻塞的时间int STATE;/进程状态0-运行 1-阻塞 2-就绪 3-结束 4-未到达int REACH;/到达时间int TI

5、ME;/结束时间PROCESS;void textcolor (int color)SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), color );void main()int i,time,max,l,l1,time1,flag=0,total=0,N,server10,sum=0;PROCESS pro10;textcolor(13);coutN;couttime;coutproi.IDproi.PRIORITYproi.REACH;cinproi.ALLTIMEproi.STARTBLOCKproi.BLOCKTIME

6、;serveri=proi.ALLTIME;if(proi.REACH=0) proi.STATE=0;else proi.STATE=4;dotextcolor(12);coutmaxmax=proi.PRIORITY;if(proi.STATE=0) l1=i;if(l!=-1if(l1!=-1) prol1.STATE=2;flag=0;for(i=0;iN;i+)if(proi.STATE!=3)flag=1;break;if(flag=0) break;while(1);textcolor(12);coutendl“当前时刻:“total;华北科技学院计算机系综合性实验报告第 6 页

7、coutendl“=各进程状态为=“endl;textcolor(15);cout“IDPRIORITYCPUTIMEALLTIMESTARTBLOCKBLOCKTIMESTATE“endl;for(i=0;iN;i+)coutproi.ID“proi.PRIORITY“proi.CPUTIME“;coutproi.ALLTIME“proi.STARTBLOCK“proi.BLOCKTIME“proi.STATE;coutendl;coutendl“各进程运行结束!“endl;cout“进程号到达时间结束时间周转时间带权周转时间“endl;textcolor(10);for(i=0;iN;i+

8、)cout“proi.ID“proi.REACH“proi.TIME“proi.TIME-proi.REACH“(float)(proi.TIME-proi.REACH)/serveriendl;sum+=proi.TIME-proi.REACH;cout“平均周转时间为:“(float)sum/Nendl;textcolor(15);2.实验结果华北科技学院计算机系综合性实验报告第 7 页华北科技学院计算机系综合性实验报告第 8 页3.实验结果分析该程序采用时间片算法进行进程调度。 在运行界面中可以手动输入进程的个数和时间片的长度,然后输入各个进程的标识数 ID、进程优先数 PRIORITY

9、、进程到达的时间 REACH、进程还需占用的 CPU 时间 ALLTIME 、进程的阻塞时间 STARTBLOCK、进程被阻塞的时间BLOCKTIME,然后根据到达时间确定各个进程的状态 。接下来是 dowhile 循环语句。在该循环中实现进程的调度。每隔一个时间片间隔就显示一次各个进程的状态并记录当前时刻。 当进程上一个状态是未到达并且到达的时刻小于当前时刻时,进程变为阻塞状态。然后根据多个进程的状态进行处理。在一个时间片内,当进程处于运行状态是, 如果进程需要运行时间小于时间片则该进程在该时间片内结束, 将该进程状态改为结束并记录结束时间;否则就改变进程占用 cpu 时间、还需要运行时间和

10、进程阻塞时间,如果进程阻塞时间为 0 则表示进程进入阻塞状态。进程运行一次优先数减去 3。在一个时间片内,当进程处于阻塞状态时,进程的被阻塞时间减去 1,如果进程的被阻塞时间变为 0 则表示进程将变为就绪状态。在一个时间片内,当进程处于就绪状态是进程的优先数加 1,。然后根据上述处理后各个进程的状态进行最后变换。 如果进程上个状态是运行阶段则变为华北科技学院计算机系综合性实验报告第 9 页就绪状态,如果进程上个状态是就绪阶段则变为运行状态。然后再判断进程的状态,如果是结束状态就终止操作,否则就再次进行上述操作实行 dowhile 循环。当各个进程都变为结束状态后再次显示出各进程此时的状态。最后

11、计算各进程的周转时间和带权周转时间,并显示。4.实验心得该实验是采用时间片算法对进程进行调度。通过该实验,我对进程调度有了更深的体会,同时对时间片理解更加深刻了。在理解编码的过程中,巩固了以前学过的知识,对书本上的知识和老师教授的知识理解更加透彻了。 时间片的转轮调度算法可以广泛采用多级队列进行调度, 当就绪队列只有一个进程是运行该进程, 如果进程没结束就进入阻塞队列; 如果就绪队列由有多个进程,那么就根据优先数进行进程调度,优先数大的进程先执行。该实验还存在不足之处,当就绪队列有多个进程时,由于编码问题,在一个时间片内会并行执行多个程序。华北科技学院计算机系综合性实验报告第 10 页教教师师评评价价评定项目评定项目A AB BC CD D评定项目评定项目A AB BC CD D算法正确界面美观,布局合理程序结构合理操作熟练语法、语义正确解析完整实验结果正确文字流畅报告规范题解正确其他:评价教师签名:年月日

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号