操作系统C进程调度算法实验_第1页
操作系统C进程调度算法实验_第2页
操作系统C进程调度算法实验_第3页
免费预览已结束,剩余8页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华北科技学院计算机系综合性实验实验报告课程名称操作系统C实验学期 2012 至 2013 学年 第 2 学期学生所在系部计算机系年级 2010专业班级网络B10学生姓名学号任课教师杜杏菁实验成绩计算机系制操作系统C课程综合性实验报告开课实验室:基础六机房2013年 6月 3日实验题目进程调度算法模拟一、实验目的通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、 调度算法的理解。二、设备与环境1. 硬件设备:PC机一台2. 软件环境:安装 Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如CC+Java等编程语言环境。三、实验内容(1)

2、 用C语言(或其它语言,如 Java)实现对N个进程采用某种进程调度算法(如动态优先权 调度)的调度。(2) 每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段:进程标识数ID。进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。进程已占用 CPU时间CPUTIME。进程还需占用的 CPU时间ALLTIME。当进程运行完毕时,ALLTIME变为0。进程的阻塞时间 STARTBLOCK,表示当进程再运行 STARTBLOCK个时间片后,进程将进 入阻塞状态。进程被阻塞的时间 BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME 个时间片后,将转换成就绪状态。进程

3、状态STATE。队列指针NEXT,用来将PCB排成队列。(3)优先数改变的原则:进程在就绪队列中呆一个时间片,优先数增加1。进程每运行一个时间片,优先数减3。(4)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包 括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。四、实验结果及分析1实验代码#i nclude <stdio.h>#in clude<iostream>using n amespace std;struct programchar n ame;int atime;int stime;int ftime;int rti

4、me; 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;i< n-1-j;i+)if(ai.atime>ai+1.atime)t.atime=ai.atime;ai.atime=ai+1.atime;

5、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=tim

6、e+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

7、 i,m;n “);struct program pro4;/*创建进程 */printf(”* 先来先服务算法 *n");printf(”请输入进程的数目:n");scan f("%d",&m);i=m;for(i=0;i<m;i+)printf("请输入进程%d的进程名,到达时间,服务时间n",i+1);cin> >proi. name»proi.atime»proi.stime;xia nshi(pro,m);fcfs(pro,m);getchar();2实验结果进程的初始化,先输入

8、进程的数目。创建3个进程,并且分别给它们的进程ID、到达时间、服务时间赋值。首先根据到达时间重新将进程按由小到大的顺序排序,然后再使用FCFS算法,模拟进程快调度过程。3实验结果分析本次进程调度算法采用的是先来先服务(FCFS)调度算法,这是一种最简单的调度算法,该算法既可以用于作业调度,也可以用于进程调度。再作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。再进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发

9、生某事件而后才放弃处理机。此次实验输入了 n个进程为例子。它们的名称分别为a,b,c,达到时间分别为 2,0,1需要服务的时间分别为3,2,5。然后根据它们的到达时间进行重新排列,插入就绪队列之中。之后,再通过 FCFS算法为它们分配处理机,进行处理。将它们的完成时间记录到自身的成员变量ftime之中,然后通过公式:周转时间 =完成时间-达到时间,计算出周转时间。再通过公式:带权周转时间=周转时间/服务时间。计算出带权周转时间。可以看出,采用FCFS算法,先来的进程优先服务,它们的带权周转时间都要比之后的进程要短。五、实验心得经过这次课程设计,把课本中的理论知识转化为实践,在一定程度上加深了对

10、优先级数调度和循环调度算法的理解,同时提高了我的动手编程能力。虽然在编程的过程中, 遇到了很多的困难。但是我掌握了很多东西。我掌握了先来先服务的进程调度算法,掌握了程控制块的定义,也掌握了对就绪队列, 完成队列中节点的选择和插入。操作系统中的一个核心的问题就是进程调度问题。对于不同的作业条件,情况,特点,都有不同的需求和特性。所以采用合理的有针对性 的进程调度算法至关重要。采用的正确的进程调度算法,不仅可以让多个进程并发执行,而且还可以最大化的利用处理机的工作时间。这种高效率的调度策略使得计算机能够很良好的协调各个进程或作业之间的调度,从而使得计算机的运算速度有了极大地提高。此外,我也对其它的调度方法同样有了一个深刻的了解,而且在对C语言的使用上有了一个新的高度,希望在以后的试验中做的更好。在将来的学习中,我将继续努力加深理解操作系统的工作原理。计算机操作系统中运用到了很多知识,我想我们从这门课中学到的东西不仅仅只是书本上这么点东西,可以说操作系统是所有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论