操作系统课程设计进程调度的模拟实现.doc
《操作系统课程设计进程调度的模拟实现.doc》由会员分享,可在线阅读,更多相关《操作系统课程设计进程调度的模拟实现.doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程设计题目 进程调度算法模拟编程 学生姓名 学号 专 业 计算机科学及技术 班级 指导教师 完成日期2021年12月18日进程调度的模拟实现摘要:进程管理是操作系统中的重要功能,用来创立进程、撤消进程、实现进程状态转换,它提供了在可运行的进程之间复用CPU的方法。在进程管理中,进程调度是核心,因为在采用多道程序设计的系统中,往往有假设干个进程同时处于就绪状态,当就绪进程个数大于处理器数目时,就必须依照某种策略决定哪些进程优先占用处理器。本文通过两种算法模拟实现了进程之间的调度。关键词:进程创立,先来先效劳,优先级调度。一前言在操作系统中,调度的实质是一种资源分配,调度算法即指:根据系统的资源
2、分配策略所规定的资源分配算法。对于不同的系统与系统目标,通常采用不同的调度算法,如在批处理系统中,为照顾为数众多的短作业,采用短作业有限调度算法;在分时系统中,为保证系统具有合理的响应时间,采用轮转法进展调度。采用算法时,那么要考虑多方面因素,以便到达最正确效果。做好这个课程设计,有利于加深对操作系统进程调度知识的理解。二. 系统总体框架设计本程序采用两种算法最高优先级数优先的调度算法与先来先效劳算法对多个进程进展调度,每个进程有三个状态,初始状态为就绪状态。最高优先级数优先的调度算法中,程序的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户
3、给定。在优先级数优先的调度算法中,优先级数的值设计为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模拟运行函数C
4、reatePcb()进程创立函数ShowPcb()进程显示函数PriModel()实现优先级调度算法FcfsModel()实现先来先效劳算法pcbnum进程数量freetimeCpu空闲时间allturn总周转时间allaver总带权周转时间PcbList进程就绪队列的实现图1-3CpuModel类开场程序流程图创立进程及属性先来先效劳算法优先数调度算法显示进程执行状态完毕1.可强占优先调度算法实现过程流程图: 2先来先效劳调度算法实现过程流图三 数据构造设计1.设计创立进程的构造类型定义与构造变量说明struct ProcessPcb,定义PCB相关变量: ProcessPcb()next=
5、NULL;char pro_name20; /进程的名字int time_submit ; /提交时间,从时间为1开场计时int time_exe ; /进程所需的运行时间 int pro_id ; /进程ID(系统生成)int pro_priority ; /进程优先级int time_start ; /开场执行的时间int time_end ; /完毕的时间 int time_wait ; /等待的时间int pro_state ; /进程的状态 (就绪,执行,完成)int time_left ; /还需多少时间单位,初始化为所需的执行时间int time_turn ; /周转时间doub
6、le time_aver ; /带权周转时间2.创立PCB类class CpuModel,定义程序中使用的各函数:CpuModelCpuModel()pcbnum=0; void cpurun(); /cpu模拟运行函数bool GetPcb(); /进程输入函数void ShowPcb(); /将输入的进程展示出来void PriModel(); /可强占的优先进程调度模式void FcfsModel(); /先到先效劳调度模式ProcessPcb PcbList100;/按提交时间排的未就绪进程队列()四 测试结果及分析 1.开场运行,显示: 2.输入进程数,各进程属性: 关于提交时间执行
7、时间等,将检测输入是否数字,不是数字即退出程序。 已创立的各进程及其属性:此处的优先级数,是用100减去执行时间。对于优先级数一样,那么默认FIFO。4.测试可强占的优先进程调度:一次调度完成,将计算此次运行中CPU的利用率。 5. 先到先效劳调度算法运行情况:6. 选择5,回车,退出程序。五设计心得在学完操作系统课程之后,一直对进程调度这一块不是很理解,借着做课程设计的时机,我就选择了进程调度模拟编程这个题目,打算在做课程设计的过程中好好的再学习一下这块的知识。我在做课程设计的过程中,遇到了许多的问题,通过请教同学,上网查资料等途径一一解决。通过这次操作系统的课程设计,我研究了进程调度的相关
8、知识,加深了对进程调度的理解。课程设计与平时的实验课比拟起来有很大的差距,实验课只是将这一章的一局部内容练习操作一遍,而课程设计需要的是他们综合起来的东西,这要更难一些。总体来说我认为操作系统这门学科在计算机科学当中是非常重要的,这次操作系统的课程设计收获颇丰,复习了许多东西,也从新学会了许多东西,我想这也许就是课程设计的最终目的吧。参考文献1刘振安、刘燕君著.?C+程序设计课程设计?.北京: 机械工业出版社,20042美Abraham Silberschatz, Peter Baer Galvin, Greg Gagne 著. 郑扣根 译. 操作系统概念第六版. 北京: 高等教育出版社,20
9、043陈向群,向勇 等. Windows操作系统原理第二版. 北京:机械工业出版社,2004.4费翔林,李敏,叶保存等.Linux操作系统实验教程.北京:高等教育出版社,2021附录:#include #include #include #include #include using namespace std ;/进程的状态#define UNREADY 0 /未就绪#define READY 1 /就绪#define EXECUTE 2 /执行#define END 3 /完成/进程的PCB构造类型定义与构造变量说明struct ProcessPcb ProcessPcb() next=N
10、ULL; char pro_name20; /进程的名字 int time_submit ; /提交时间,从时间的1开场计时 int time_exe ; /进程所需的运行时间 int pro_id ; /进程ID(系统生成) int pro_priority ; /进程优先级 int time_start ; /开场执行的时间 int time_end ; /完毕的时间 int time_wait ; /等待的时间 int pro_state ; /进程的状态 (就绪,执行,完成) int time_left ; /还需多少时间单位,初始化为所需的执行时间 int time_turn ; /
11、周转时间 double time_aver ; /带权周转时间 ProcessPcb *next;/封装CPU调度及分配程序模块。进程类class CpuModelpublic:CpuModel()pcbnum=0;void cpurun(); /cpu模拟运行函数bool CreatePcb(); /进程输入函数void ShowPcb(); /将输入的进程展示出来void PriModel(); /可强占的优先进程调度模式void FcfsModel(); /先到先效劳调度模式private:ProcessPcb PcbList100; /按提交时间排的未就绪进程队列int pcbnum
12、; /进程数量int freetime ; /cpu空闲时间int allturn ; /总周转时间float allaver ; /总带权周转时间#include/cpu模拟运行函数void CpuModel:cpurun() int choose = 0 ; while(1) cout* 主菜单 *endl;cout-endl;cout* 1: 创立进程 *endl;cout* 2: 显示已创立的进程 *endl;cout* 3: 可强占的优先进程调度 *endl;cout* 4: 先到先效劳调度 *endl;cout* 5: 退出系统 *endl;coutchoose ;coutendl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 进程 调度 模拟 实现
限制150内