




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学 号: 课 程 设 计题 目进程调度模拟设计先来先服务、优先级法学 院计算机科学与技术专 业班 级姓 名指导教师吴利军2013年1月16日课程设计任务书学生姓名: 专业班级: 指导教师: 吴利军 工作单位: 计算机科学与技术学院 题 目: 进程调度模拟设计先来先服务、优先级法 初始条件:1预备内容:阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解。2实践准备:掌握一种计算机高级语言的使用。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1模拟进程调度,能够处理以下的情形: 能够选择不同的调度算法(要求中给出的调度算法); 能够输入进程的基本信息,如进程名、优先级、到达时间和运行时间等; 根据选择的调度算法显示进程调度队列; 根据选择的调度算法计算平均周转时间和平均带权周转时间。2设计报告内容应说明: 需求分析; 功能设计(数据结构及模块说明); 开发平台及源程序的主要部分; 测试用例,运行结果与运行情况分析; 自我评价与总结:i)你认为你完成的设计哪些地方做得比较好或比较出色;ii)什么地方做得不太好,以后如何改正;iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);iv)完成本题是否有其他方法(如果有,简要说明该方法);时间安排:设计安排一周:周1、周2:完成程序分析及设计。周2、周3:完成程序调试及测试。周4、周5:验收、撰写课程设计报告。(注意事项:严禁抄袭,一旦发现,一律按0分记)指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日进程调度模拟设计先来先服务、优先级法1、 背景:当计算机系统是多道程序设计系统时,通常会有多个进程或线程同时竞争CPU。只要有两个或更多的进程处于就绪状态,这种情形就会发生。如果只有一个CPU可用,那么就必须选择下一个要运行的进程。在操作系统中,完成选择工作的这一部分称为调度程序,该程序使用的算法成为调度算法。进程调度的核心问题是采用什么样的算法把处理机分配给进程,好的算法将提高资源利用率,减少处理机的空闲时间,避免有些作业长期得不到相应的情况发生等,从而设计出受欢迎的操作系统。较常见的几种进程调度算法有:先来先服务调度算法;短作业优先调度算法;时间片轮转调度算法;优先级调度算法;高响应比优先算法和多级反馈队列调度算法等。2、 需求分析:2.1设计目的无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。本次课程设计的主要任务是用高级语言模拟进程调度的算法,包括先来先服务和优先级法。通过输入进程的信息,模拟某种调度算法,得到进程调度的顺序,从而进一步分析进程的调度过程,并通过分析程序的运行,探讨各种调度算法的优劣。2.2 设计内容及要求本系统运用高级语言来实现对进程调度的模拟。系统需要完成的功能有: 进程信息的输入,包括进程的个数、进程名、进程优先级、进程开始时间、进程执行时间等。 进程调度算法的选择,即为用户提供可选的进程调度算法,用户可以根据需要选择调度算法。 根据进程调度的算法和输入的进程信息得到进程的调度顺序,并输出。 计算并输出各个进程的平均周转时间和平均带权周转时间。2.3 算法与设计的思想2.3.1 算法思想: 一个进程的生命期可以划分为一组状态,这些状态刻画了整个进程。系统根据PCB结构中的状态值控制过程。在进程的生命期内,一个进程至少具有5种基本状态,它们是:初始态、执行状态、等待状态、就绪状态和终止状态。通过系统设计,实现进程相关数据结构的创建和查看功能;实现多种进程调度算法:先来先服务算法、优先级调度算法、时间片轮转法等;实现对执行进程的阻塞,对等待进程的唤醒等功能。进程的转换过程如下:初始就绪等待执行终止调度完成等待某个事件发生而睡眠时间片到因等待事件发生而唤醒进程的先来先服务调度算法:首先定义进程结构体,用于记录进程的基本信息,包括进程名,优先级,进程到达时间,进程运行时间,然后将用户输入的进程信息保存到定义的结构数组中,并按进程到达的先后时间对数组进行排序,并记录它们的周转时间、带权周转时间、平均周转时间及平均带权周转时间。进程的优先级调度算法: 同样先定义进程结构替,记录进程信息,将用户输入的进程信息保存在结构体数组中。遍历数组,找出最先到达的进程,若有多个,则取优先级最高的一个,与数组中的第一个位置的进程互换位置,记录此进程执行完的时间,然后从第二个位置开始遍历数组,找到在第一个进程执行结束前到达的进程,若没有,则找到余下进程中到达时间最早的进程,找到优先级最高的一个,若并与数组的第二个位置的进程互换位置。按同样的方法为余下的进程排序。同样记录它们的周转时间,带权周转时间,并算出平均周转时间和平均带权周转时间。 2.3.2设计思想:a) 每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先级数、到达时间、需要运行时间等等。 b) 进程的信息,包括到达时间,优先数及需要的运行时间等都是事先人为地指定。 c) 每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。 3、 功能设计(数据结构及模块说明);3.1 系统流程如下:3.2数据结构及模块说明:(1)输入模块能够满足输入进程基本信息的功能,尽可能提供友好的交互界面。给用户很好的提示,使用户能够方便的操作。(2)算法模块先来先服务算法:可以根据进程到达的先后顺序来确定进程的运行顺序,并算出进程的周转时间,平均周转时间等。优先级法: 根据进程的优先级和进程到达的时间来确定进程的调度顺序,并算出周转时间,带权周转时间等。 (3)输出模块 根据算法得到的进程调度顺序以及算出的其他参数,将其输出。4、 开发平台及源程序的主要部分;4.1软硬件环境l 硬件设备: PC机 l 软件设备:WINDOWSXP、Microsoft Visual C+ 6.04.2 源代码主要部分:(1)信息输入函数:void getInput(char *pname,int *priority,char *begintime,float *runtime)printf(请输入进程名: );scanf(%s,pname);printf(请输入优先级 );scanf(%d,priority);printf(请输入到达时间:);scanf(%s,begintime);printf(请输入运行时间 (min): );scanf(%f,runtime);(2)先来先服务的算法:void fcfs(struct process *pro,int n)int i,j;struct process p;for(i = 0;i n;i +)for(j = 0;j n - i -1;j +)if(!timecompare(proj,proj+1)p = proj + 1;proj + 1 = proj;proj = p;(3)优先级法的算法:void prior(struct process *pro,int n)int i,j,pt,t,bt,m;bt = 0;int aMAXPROCESS;struct process p;float curtime = 1500; /当前时间?for(i = 0;i proi.btime)curtime = proi.btime;for(i = 0;i n;i +)t = 0;pt = 0;for(j = i;j n;j+)if(proj.btime = curtime)at+ = j;if(t = 0)curtime = 1500;for(j = i;j proj.btime)curtime = proj.btime;for(j = i;j n;j+)if(proj.btime = curtime)at+ = j;for(j = 0;j pt)pt = probt.priority;m = bt;if(m != i)p = prom;prom = proi;proi = p;curtime = curtime + proi.runtime;5、 测试用例,运行结果与运行情况分析;5.1测试用例: 进程个数为4 进程名唯一 预计运行结果:先来先服务:c a d b优先级法:c a b d进程名进程到达时间运行时间优先级a2:12342b3:10313c1:15211d2:131125.2运行结果:6、自我评价与总结:通过这次的课程设计熟悉了优先级法以及先来先服务算法在处理进程调度的问题上的应用,熟悉了它们各自的特点以及各自的优缺点。在实验结果中可以看到优先级法在处理特殊进程问题上有很大的意义,可以有效地缩短平均周转时间以及平均带权周转时间,而先来先服务实现简单,两种方法各有所长。 在程序调试的过程中遇到了很多的麻烦,有时编译运行没有问题但结果不对,通过设置断点单步调试却发现只是丢了一个赋值或者拷贝时忘了某些内容,这些小错误耽误了不少时间,所以在以后的编程过程中要养成随时给变量赋初值的习惯。 有些在算法编制的过程中遇到的问题确实有点棘手,但是随着这些问题的解决又使自己在这一方面的能力上有了比较大的提高。但是同时我仍然看到了自己的不足,与别人比起来仍然有不小的差距。自己用的时间比别人长,但是效果又不如别人的好。所以自己还应该继续努力。本科生课程设计成绩评定表班级:物联网1001 姓名:马涛涛 学号:0121010340122序号评分项目满分实得分1学习态度认真、遵守纪律102设计分析合理性103设计方案正确性、可行性、创造性204设计结果正确性405设计报告的规范性106设计验收10总得分/等级评语:注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、60分以下为不及格指导教师签名:20 年月日附录:#include stdafx.h#include stdlib.h#include string.h#define PNNUM 20#define TIME 6 /时间?的?长度#define MAXPROCESS 10/进?程结构1struct processchar namePNNUM; /进?程名?int priority; /优?先级?char begintimeTIME; /开a始?时间?int btime; /开a始?时间?(转a换?为a分?钟)?float runtime; /运?行D时间?float routime; /周转a时间?float qtime; /带?权周转a时间?proMAXPROCESS;/输?入?进?程参?数yvoid getInput(char *pname,int *priority,char *begintime,float *runtime)printf(请?输?入?进?程名?:o);scanf(%s,pname);printf(请?输?入?优?先级?:o);scanf(%d,priority);printf(请?输?入?到?达?时间?:o);scanf(%s,begintime);printf(请?输?入?运?行D时间?(min):o);scanf(%f,runtime);/将?开a始?时间?转a换?为a分?钟void ttoi(struct process *pro,int n)int h,m;char a3,b3;int i;for(i = 0;i pro2.btime ? 0 : 1;/根据Y进?程到?达?时间?排?队void fcfs(struct process *pro,int n)int i,j;struct process p;for(i = 0;i n;i +)for(j = 0;j n - i -1;j +)if(!timecompare(proj,proj+1)p = proj + 1;proj + 1 = proj;proj = p;/计?算?周转a时间?和带?权周转a时间?void calculate(struct process *pro,int n)int i;pro0.routime = pro0.runtime;pro0.qtime = 1;for(i = 1;i = proi.btime)proi.routime =proi - 1.btime + proi - 1.routime + proi.runtime - proi.btime;elseproi.routime = proi.runtime;proi.qtime = proi.routime / proi.runtime;/计?算?平?均周转a时间?和平?均带?权周转a时间?void calAver(struct process *pro,int n,float *avartime,float *avarqtime)int i;float t1,t2;t1 = t2 = 0;for(i = 0;i n;i+)t1 += proi.routime;t2 += proi.qtime;*avartime = t1 / n;*avarqtime = t2 / n;/非?抢占?式?优?先级?法void prior(struct process *pro,int n)int i,j,pt,t,bt,m;bt = 0;int aMAXPROCESS;struct process p;float curtime = 1500; /当前时间?for(i = 0;i proi.btime)curtime = proi.btime;for(i = 0;i n;i +)t = 0;pt = 0;for(j = i;j n;j+)if(proj.btime = curtime)at+ = j;if(t = 0)curtime = 1500;for(j = i;j proj.btime)curtime = proj.btime;for(j = i;j n;j+)if(proj.btime = curtime)at+ = j;for(j = 0;j pt)pt = probt.priority;m = bt;if(m != i)p = prom;prom = proi;proi = p;curtime = curtime + proi.runtime;void print(struct process *pro,int n,float f1,float f2)int i;printf(进?程调度顺3序为a:on);printf(-n);printf(调度顺3序 优?先级? 到?达?时间? 运?行D时间? 周转a时间? 带?权周转a时间?n);for(i = 0;i n;i +)printf(%8s %6d %8s %8.0f %8.0f %12.2fn,,proi.priority,proi.begintime,proi.runtime,proi.routime,proi.qtime);printf(-n);printf(平?均周转a时间?:ot%0.2ft,f1);printf(平?均带?权周转a时间?:ot%0.2ftn,f2);printf(-n);int _tmain(int argc, _TCHAR* argv)printf(*n);printf(* 进?程调度模拟a实验 *n);printf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会计制度设计期末考试题及答案
- 考点解析北师大版8年级数学上册期中试题附答案详解(综合题)
- 解析卷-人教版8年级数学下册《一次函数》重点解析试题(解析卷)
- 押题宝典执业药师资格证之《西药学专业二》模考模拟试题及参考答案详解【模拟题】
- 2025年土壤污染修复技术在土壤修复产品研发中的应用效果与成本效益分析报告001
- 2025年工业互联网平台可信执行环境(TEE)在智能安防系统中的应用分析报告
- 解析卷-北京市朝阳区日坛中学7年级数学下册第四章三角形专题测评试题(含详细解析)
- 2025年学前教育师资队伍教师团队建设与领导力提升报告
- 园林绿化作业人员模考模拟试题附答案详解【模拟题】
- 建材采购合同书要素
- 2025年度制造业员工劳动合同范本
- 2025制衣厂生产合作协议范本
- 无纺布行业知识培训总结
- 2025年秋季教导处工作计划-深耕细作教研路笃行不怠启新程
- 中国象棋教学课件
- 2024象山县辅警招聘考试真题
- 党建品牌创新活动创新路径与实践探索
- 2025年保山辅警考试题库(附答案)
- 合同基础知识培训课件教学
- 福建省泉州市晋江市2024-2025学年七年级(下)期末语文试卷(含解析)
- 2025年浙江省慈溪市辅警招聘考试试题题库带答案详解
评论
0/150
提交评论