操作系统综合实验(共7页).doc
精选优质文档-倾情为你奉上华北科技学院计算机系综合性实验实 验 报 告 课程名称 操作系统B 实验学期 2011 至 2012 学年 第 2 学期学生所在系部 基础部 年级 2009 专业班级 计算B091 学生姓名 周文 学号 8 任课教师 杜杏菁 实验成绩 计算机系制 操作系统B课程综合性实验报告 开课实验室: 基础六机房 年 月 日实验题目进程调度算法程序设计一、实验目的通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。二、设备与环境1. 硬件设备:PC机一台2. 软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如C C+Java 等编程语言环境。三、实验内容(1)用C语言(或其它语言,如Java)实现对N个进程采用某种进程调度算法(如动态优先权调度)的调度。(2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段:² 进程标识数ID。² 进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。² 进程已占用CPU时间CPUTIME。² 进程还需占用的CPU时间ALLTIME。当进程运行完毕时,ALLTIME变为0。² 进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,进程将进入阻塞状态。² 进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个时间片后,将转换成就绪状态。² 进程状态STATE。² 队列指针NEXT,用来将PCB排成队列。(3)优先数改变的原则:² 进程在就绪队列中呆一个时间片,优先数增加1。² 进程每运行一个时间片,优先数减3。(4)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。(5)分析程序运行的结果,谈一下自己的认识。四、实验结果及分析1.实验代码#include <stdio.h>#define Number 5void main()int dNumber,fNumber;float wanNumber,zhouNumber,daiNumber;int i;bool zhuangtNumber;/完成状态int daodaNumber,fuwuNumber;int t=0;int j,k,nextproS;printf("SJF短作业进程优先调度算法: n");printf("请输入5个进程到达时间和服务时间n");printf("到达时间 t 服务时间n");for(i=0;i<Number;i+)scanf("%d %d",&di,&fi);for(i=0;i<Number;i+)zhuangti = false;wani = 0;zhoui = 0;daii =0;daodai = di;fuwui = fi;int first=0;/ 获取最先到达的进程下标firstfor(i=1;i<Number;i+)if(daodafirst>di)first=i;zhuangtfirst=true;wanfirst = fuwufirst + daodafirst;t += daodafirst+fuwufirst;for(j=1;j<Number;j+)nextproS = Number+1;for(k=0 ; k<Number; k+ )if(!zhuangtk)/判断第k个是否服务过if( daodak <= t ) / 到达if( nextproS =Number+1 )nextproS = k;/第一次执行此句elseif( fuwunextproS > fuwuk ) nextproS = k;/获取服务时间最小的进程wannextproS = fuwunextproS + t;t += fuwunextproS;zhuangtnextproS=true; float Az=0,Adq=0;for(i=0;i<Number;i+)zhoui=wani-daodai;Az += zhoui;daii=zhoui/fuwui;Adq += daii;printf("进程ID t 完成时间 t 周转时间 t 带权周转时间n");for(i=0;i<Number;i+)printf("%d t %4.2f tt %4.2f tt %4.2fn",i+1,wani,zhoui,daii);printf("n平均周转时间为:%4.2f n",Az/Number);printf("平均带权周转时间为:%4.2f n",Adq/Number);2.实验结果3.实验结果分析 本实验利用书本上的例子,定义5个进程A、B、C、D、E的到达时间分别为0、1、2、3、4,服务时间分别为4、3、5、2、4。通过短作业优先(SJF)调度算法对进程进行调度。 本例中SJF算法将从后备队列中选择一个或若干个估计运行时间最短的作业D,将它调入内存中运行。通过对SJF算法程序的编写最终得到如上图所示的实验结果。4.实验心得教 师 评 价评定项目ABCD评定项目ABCD算法正确界面美观,布局合理程序结构合理操作熟练语法、语义正确解析完整实验结果正确文字流畅报告规范题解正确其他:评价教师签名:年 月 日专心-专注-专业