- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统课程设计_进程调度的模拟实现_精品
课程设计
题目 进程调度算法模拟编程
学生姓名 学号
专 业 计算机科学与技术 班级
指导教师
完成日期 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 进程数量 freetime Cpu空闲时间 allturn 总周转时间 allaver 总带权周转时间 PcbList[] 进程就绪队列的实现 图1-3CpuModel类
程序流程图
1.可强占优先调度算法实现过程流程图:
2先来先服务调度算法实现过程流图
数据结构设计
1.设计创建进程的结构类型定义和结构变量说明struct ProcessPcb,定义PCB相关变量:
ProcessPcb(){next=NULL;}
char pro_name[20]; //进程的名字
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 ; //周转时间
double time_aver ; //带权周转时间
2.创建PCB类class CpuModel,定义程序中使用的各函数:
CpuModel{
CpuModel(){pcbnum=0;}
void cpurun(); //cpu模拟运行函数
bool GetPcb(); //进程输入函数
void ShowPcb(); //将输入的进程展示出来
void PriModel();
您可能关注的文档
最近下载
- 教科版小学科学四年级下册总复习试题(连线题).doc VIP
- 长虹LED42C2000黑屏故障通病维修方法分享.doc
- 教科版(2025秋)四年级科学下册总复习之连线题(含答案) .pdf VIP
- 2025年机修钳工(高级技师)职业技能鉴定理论考试题库资料(含答案).pdf
- 三字经全文带拼音完整版 打印版.pdf VIP
- 科教版小学科学四年级下册期末复习专项训练题04——连线题(含答案+详细解析).docx VIP
- 江苏省苏北四市(徐州、宿迁、淮安、连云港) 2025届高三第一次调研测试思想政治试题(含答案).pdf VIP
- 消防员心理培训课件.pptx VIP
- 2024年高考政治真题汇编《哲学与文化》.docx
- 风力发电场生态保护及恢复技术规范-DB21.PDF
文档评论(0)