资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
华北科技学院计算机系综合性实验实验报告课程名称操作系统C实验学期 2012 至 2013 学年 第 2 学期学生所在系部计算机系年级 2010专业班级网络B10学生姓名学号任课教师杜杏菁实验成绩计算机系制操作系统C课程综合性实验报告开课实验室:基础六机房2013年 6月 3日实验题目进程调度算法模拟一、实验目的通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、 调度算法的理解。二、设备与环境1. 硬件设备:PC机一台2. 软件环境:安装 Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如CC+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)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包 括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。四、实验结果及分析1实验代码#i nclude #in cludeusing n amespace std;struct programchar n ame;int atime;int stime;int ftime;int rtime; float qrtime;/*进程名*/*到达时间*/*服务时间*/*完成时间*/*周转时间*/*带权周转时间*/void xia nshi(struct program a,i nt n) int i,j;struct program t;/*将进程按时间排序*/printf(”根据到达时间重新排序:n);printf(”*进程*到达时间* 服务时间*n “);for(j=0;j n_1;j+)for(i=0;iai+1.atime)t.atime=ai.atime;ai.atime=ai+1.atime;ai+1.atime=t.atime;t. name=ai. name;ai. name=ai+1. name;ai+1. name=t. name;t.stime=ai.stime;ai.stime=ai+1.stime;ai+1.stime=t.stime;for(i=0;i n; i+)prin tf( %c%dai.atime,ai.stime);printf(”n);%d|n ”,ai. name,void fcfs(struct program a,i nt n)int i;int time=0;for(i=0;i n;i+)time=time+ai.stime;ai.ftime=time;ai.rtime=ai.ftime-ai.atime;ai.qrtime=(float)ai.rtime/ai.stime;printf(nFCFS 算法:n);printf(* 进程*到 达 时间*完成时 间* 周转时 间带权周转时间*n);for(i=0;i n;i+)printf( %c%d%.2d%.2d%.2f|n ”,ai. name,ai.atime,ai.ftime,ai.rtime,ai.qrtime);printf(void mai n()int i,m;n “);struct program pro4;/*创建进程 */printf(”* 先来先服务算法 *n);printf(”请输入进程的数目:n);scan f(%d,&m);i=m;for(i=0;i proi. nameproi.atimeproi.stime;xia nshi(pro,m);fcfs(pro,m);getchar();2实验结果进程的初始化,先输入进程的数目。创建3个进程,并且分别给它们的进程ID、到达时间、服务时间赋值。首先根据到达时间重新将进程按由小到大的顺序排序,然后再使用FCFS算法,模拟进程快调度过程。3实验结果分析本次进程调度算法采用的是先来先服务(FCFS)调度算法,这是一种最简单的调度算法,该算法既可以用于作业调度,也可以用于进程调度。再作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。再进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而后才放弃处理机。此次实验输入了 n个进程为例子。它们的名称分别为a,b,c,达到时间分别为 2,0,1需要服务的时间分别为3,2,5。然后根据它们的到达时间进行重新排列,插入就绪队列之中。之后,再通过 FCFS算法为它们分配处理机,进行处理。将它们的完成时间记录到自身的成员变量ftime之中,然后通过公式:周转时间 =完成时间-达到时间,计算出周转时间。再通过公式:带权周转时间=周转时间/服务时间。计算出带权周转时间。可以看出,采用FCFS算法,先来的进程优先服务,它们的带权周转时间都要比之后的进程要短。五、实验心得经过这次课程设计,把课本中的理论知识转化为实践,在一定程度上加深了对优先级数调度和循环调度算法的理解,同时提高了我的动手编程能力。虽然在编程的过程中, 遇到了很多的困难。但是我掌握了很多东西。我掌握了先来先服务的进程调度算法,掌握了程控制块的定义,也掌握了对就绪队列, 完成队列中节点的选择和插入。操作系统中的一个核心的问题就是进程调度问题。对于不同的作业条件,情况,特点,都有不同的需求和特性。所以采用合理的有针对性 的进程调度算法至关重要。采用的正确的进程调度算法,不仅可以让多个进程并发执行,而且还可以最大化的利用处理机的工作时间。这种高效率的调度策略使得计算机能够很良好的协调各个进程或作业之间的调度,从而使得计算机的运算速度有了极大地提高。此外,我也对其它的调度方法同样有了一个深刻的了解,而且在对C语言的使用上有了一个新的高度,希望在以后的试验中做的更好。在将来的学习中,我将继续努力加深理解操作系统的工作原理。计算机操作系统中运用到了很多知识,我想我们从这门课中学到的东西不仅仅只是书本上这么点东西,可以说操作系统是所有的其他计算机知识的基础,但是它也借鉴了很多其他方面的知识,比如通信方面的知识,其实计算机在解决 cpu与接口的矛盾的时候很大程度上的模 仿了通信学科。教 师 评 价评定项目ABCD评定项目ABCD算法正确界面美观,布局合理程序结构合理操作熟练语法、语义正确解析完整实验结果正确文字流畅报告规范题解正确其他:评价教师签名:年 月曰
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号