- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统
课程设计报告
学校:广州大学
学院:计算机科学与教育软件学院
班级:计算机127班
课题:处理机调度程序
任课老师:陶文正、陈文彬
姓名:黄俊鹏
学号:1200002111
班内序号:27
成绩:
日期:2015年1月6日
一、设计目的
在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个。也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择一进程占用处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。
设计要求1)进程调度算法包括:时间片轮转法,短作业优先算法,动态优先级算法。2)可选择进程数量3)本程序包括三种算法,用C语言实现,执行时在主界面选择算法(可用函数实现)(进程数,运行时间,优先数由随机函数产生)执行,显示结果。
程序所用PCB结构体
需要用到的进程结构体如上图所示
时间片轮转法
主要是设置一个当前时间变量,curTime和时间片roundTime。
遍历进程组的时候,每运行一个进程,就把curTime += roundTime。进程已运行时间加roundTime
短作业优先算法
动态优先级算法
输入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; //是否完成
}PCB;
//获取随机数
int GetRandomNumber(int min,int max){
return arc4random()%(max-min) + min;
}
//初始化PCB组
void InitPCBGroup(PCB p[],int num){
char name = A;
for (int i = 0;i num;i++){
p[i].name = name;
p[i].priority = GetRandomNumber(MIN_PRIORITY, MAX_PRIORITY);
p[i].running
您可能关注的文档
- 安装工程定额与算作业2.doc
- 氨氮自动水质分仪使用手册-g.doc
- 按摩穴位治疗肾——颈椎病.doc
- 案例:美国波音司.doc
- 奥林匹克数学的巧(上).doc
- 奥数题精彩解析大全).doc
- 八年级地理上册末复习检测试题--8开版20130104.doc
- 八年级地理上册末复习检测试题---修改于20121224.doc
- 八年级第一学期末考试试卷.doc
- 八年级散文阅读解.doc
- 户外用品租赁行业服务升级,2025年市场消费行为分析报告.docx
- 户外用品租赁行业服务升级,2025年市场细分领域投资机会分析.docx
- 户外用品租赁行业服务升级,2025年行业政策环境解读.docx
- 户外用品租赁行业服务风险管理分析报告.docx
- 2025至2030中国Nrf2途径激活剂行业市场占有率及投资前景评估规划报告.docx
- 户外用品租赁行业风险管理与可持续发展报告.docx
- 2025年直播带货在零售市场中的竞争格局与品牌建设报告.docx
- 户外用品租赁行业风险管理策略与市场风险管理策略优化2025.docx
- 深海矿产资源勘探技术中的地质雷达探测技术深度解析报告.docx
- 户外用品租赁平台风险管理与客户满意度提升.docx
文档评论(0)