- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统
课程设计报告
学校:广州大学
学院:计算机科学与教育软件学院
班级:计算机127班
课题:处理机调度程序
任课老师:陶文正、陈文彬
姓名:黄俊鹏
学号:1200002111
班内序号:27
成绩:
日期:2015年1月6日
一、设计目的
在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个。也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择一进程占用处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。
二、设计要求1)进程调度算法包括:时间片轮转法,短作业优先算法,动态优先级算法。2)可选择进程数量3)本程序包括三种算法,用C语言实现,执行时在主界面选择算法(可用函数实现)(进程数,运行时间,优先数由随机函数产生)执行,显示结果。
三、设计思路及算法思想
界面菜单选项
一级菜单提供2个选项:
① 自动生成进程数量
② 手动输入所需进程数量
一级菜单选择完毕后进入二级菜单:
① 重新生成进程
② 时间片轮转法
③ 短作业优先算法
④ 动态优先级算法
⑤ 退出程序
调度算法
程序所用PCB结构体
需要用到的进程结构体如上图所示
时间片轮转法
主要是设置一个当前时间变量,curTime和时间片roundTime。
遍历进程组的时候,每运行一个进程,就把curTime += roundTime。进程已运行时间加roundTime
短作业优先算法
遍历进程组,找到未运行完成并且运行时间最短的进程,让它一次运行完成,如此往复,直到所有进程都运行完成为止。
动态优先级算法
做法跟短作业优先算法类似,此处主要是比较进程的优先数,优先级高者,先执行。直到全部执行完毕。当一个进程运行完毕后,适当增减其余进程的优先数,以达到动态调成优先级的效果。
程序流程图
四、运行截图
1)启动后输入5,生成5个进程
输入1,选择时间片轮转法。
自动输出结果,分别是时间片为1和4的结果
输入2,选择短作业优先算法
输入3,选择动态优先级算法
输入0,重新生成进程,再输入3,生成3个进程,选择2.短作业优先算法
输入q,退出
五、心得体会
通过这次实验,让我对操作系统的进程调度有了更进一步的了解。这个实验的模拟程度跟真实系统相比只是冰山一角,由此可见操作系统是何其复杂的软件产品,仅进程调度就有那么丰富和内涵的知识需要掌握。
但是再复杂的系统,都是由小部件构成的。古语云:不积跬步,无以至千里。不积小流,无以成江海。掌握这些基础的知识,可以为以后打下扎实的基础。
六、附录(源代码)
//
// main.c
// ProcessDispatch
//
// Created by Jeans on 1/5/15.
// Copyright (c) 2015 Jeans. All rights reserved.
//
#include stdio.h
#include stdlib.h
//最小进程数
#define MIN_PROCESS 2
//最大进程数
#define MAX_PROCESS 20
//最小优先数
#define MIN_PRIORITY 0
//最大优先数
#define MAX_PRIORITY 10
//最小运行时间
#define MIN_RUNNING_TIME 1
//最大运行时间
#define MAX_RUNNING_TIME 20
typedef struct PCB{
char name; //进程名
int priority; //优先数
int runningTime; //运行时间
int arriveTime; //到达时间
int beginTime; //开始时间
int finishTime; //完成时间
int cyclingTime; //周转时间
double weigthCyclingTime; //带权周转时间
int hadRunTime; //已经运行时间
int finish; //是否完成
}
您可能关注的文档
最近下载
- 冶金安全培训课件.pptx VIP
- Yamaha 雅马哈 乐器音响 MG10XU_MG10X_MG10 Owner's Manual 用户手册.pdf
- CANoe--快速入门教程.pdf VIP
- 示波表常用软件使用说明.pdf VIP
- 《数学广角—沏茶问题》说课稿.doc VIP
- 十年高考语文真题分项汇编专题06文言文阅读(人物传记类)原卷版+解析版.docx VIP
- (推荐!)2025北京中考真题语文试题及答案.pdf VIP
- 道德与法治一年级上册第二单元 校园生活真快乐 大单元整体学历案教案 教学设计附作业设计(基于新课标教学评一致性).docx VIP
- 儿童呕吐腹泻家庭护理ppt.pptx
- 2025北京中考真题语文试题及答案.doc VIP
文档评论(0)