预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共20页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

课程设计 题目进程调度算法模拟编程 学生姓名学号 专业计算机科学与技术班级 指导教师 完成日期 2012年12月18日 进程调度的模拟实现 摘要:进程管理是操作系统中的重要功能,用来创建进程、撤消进程、实现进程状态转换,它提供了在可运行的进程之间复用CPU的方法。在进程管理中,进程调度是核心,因为在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态,当就绪进程个数大于处理器数目时,就必须依照某种策略决定哪些进程优先占用处理器。本文通过两种算法模拟实现了进程之间的调度。 关键词:进程创建,先来先服务,优先级调度。 一.前言 在操作系统中,调度的实质是一种资源分配,调度算法即指:根据系统的资源分配策略所规定的资源分配算法。对于不同的系统和系统目标,通常采用不同的调度算法,如在批处理系统中,为照顾为数众多的短作业,采用短作业有限调度算法;在分时系统中,为保证系统具有合理的响应时间,采用轮转法进行调度。采用算法时,则要考虑多方面因素,以便达到最佳效果。做好这个课程设计,有利于加深对操作系统进程调度知识的理解。 二.系统总体框架设计 本程序采用两种算法(最高优先级数优先的调度算法和先来先服务算法)对多个进程进行调度,每个进程有三个状态,初始状态为就绪状态。最高优先级数优先的调度算法中,程序的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。在优先级数优先的调度算法中,优先级数的值设计为100与运行时间的差值,即Pro_time-process->needtime。进程每执行一次,优先数减3,CPU时间片数加1,进程还需要的时间片数减1。对于遇到优先数一致的情况,采用先来先服务策略解决。 程序设计组成框图 数据项作用pro_name进程名称time_submit进程创建时刻pro_id进程号,当进程有相同名称时,用来区分进程time_start进程启动时刻time_exe进程要求运行时间time_end进程结束的时刻pro_priority进程优先级图1-2进程控制块 CpuModel类成员作用Cpurun()Cpu模拟运行函数CreatePcb()进程创建函数ShowPcb()进程显示函数PriModel()实现优先级调度算法FcfsModel()实现先来先服务算法pcbnum进程数量freetimeCpu空闲时间allturn总周转时间allaver总带权周转时间PcbList[]进程就绪队列的实现图1-3CpuModel类 开始 程序流程图 创建进程及属性 先来先服务算法 优先数调度算法 显示进程执行状态 结束 1.可强占优先调度算法实现过程流程图: 2先来先服务调度算法实现过程流图 数据结构设计 1.设计创建进程的结构类型定义和结构变量说明structProcessPcb,定义PCB相关变量: ProcessPcb(){next=NULL;} charpro_name[20];//进程的名字 inttime_submit;//提交时间,从时间为1开始计时 inttime_exe;//进程所需的运行时间 intpro_id;//进程ID(系统生成) intpro_priority;//进程优先级 inttime_start;//开始执行的时间 inttime_end;//结束的时间 inttime_wait;//等待的时间 intpro_state;//进程的状态(就绪,执行,完成) inttime_left;//还需多少时间单位,初始化为所需的执行时间 inttime_turn; //周转时间 doubletime_aver;//带权周转时间 2.创建PCB类classCpuModel,定义程序中使用的各函数: CpuModel{ CpuModel(){pcbnum=0;} voidcpurun();//cpu模拟运行函数 boolGetPcb();//进程输入函数 voidShowPcb();//将输入的进程展示出来 voidPriModel();//可强占的优先进程调度模式 voidFcfsModel();//先到先服务调度模式 ProcessPcbPcbList[100]; //按提交时间排的未就绪进程队列() } 测试结果及分析 1.开始运行,显示: 2.输入进程数,各进程属性: 关于提交时间执行时间等,将检测输入是否数字,不是数字即退出程序。 3.显示已创建的各进程及其属性: 此处的优先级数,是用100减去执行时间。对于优先级数相同,则默认FIFO。 4.测试可强占的优先进程调度