东北石油大学进程调度——实验3报告.docVIP

东北石油大学进程调度——实验3报告.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
东北石油大学进程调度——实验3报告

操作系统分析及实践 课程实验报告 实验项目: 进程调度 专业班级: 学生姓名: 学 号: 课程教师: 指导教师: 实验时间: 2017 年 3 月 16 日 计算机科学系 实验题目:进程调度 实验目的: 1.理解有关进程控制块、进程队列的概念。 2.掌握进程优先权调度算法和时间片轮转调度算法的处理逻辑。 实验要求: 1.认真阅读实验指导书,设计出进程调度中的优先权算法或时间片轮转算法; 2.根据设计的算法写出程序; 3.在运行环境中测试程序,并保证顺利执行,得出正确结果。 实验内容: ●实验分析 调度算法是指根据系统的资源分配策略所规定的资源分配算法,不同的系统和系统目标,通常采用不同的调度算法。优先权调度是为了照顾紧迫型作业,而时间片轮转调度是为了响应分时系统中用户的请求。本次实验涉及了非抢占式优先权算法和时间片轮转算法,前者就是把处理机分配给就绪队列中优先级最高的进程直至执行完成,后者是将就绪进程按先后顺序排成队列,每次调度把CPU分配给队首进程并令其执行一个时间片。其中,用结构体表示PCB,函数Initialization()用于创建就绪队列,函数CPU()用于按优先权给各个进程分配处理机,函数RR()用于实现时间片轮转 ●程序代码 #includestdio.h #includestdlib.h #includestring.h struct process {//进程控制块 int BustTime;//周转时间 int RemainingTime;//剩余时间 int Priority;//优先级 int State;//状态(1就绪 2执行 3终止) int StartNumber;//进程最开始的编号 }PCB[6],CopyPCB[6]; int num,TimeSlice; void Initialization_FPF() {//PCB优先级调度初始化 printf(请输入进程数 时间片:); scanf(%d %d,num,TimeSlice); printf(请输入各个进程:\n); for(int i=1;i=num;i++) { printf(周转时间 优先级:); scanf(%d %d,PCB[i].BustTime,PCB[i].Priority); PCB[i].RemainingTime=PCB[i].BustTime; PCB[i].State=1; PCB[i].StartNumber=i; } memcpy(CopyPCB,PCB,sizeof(PCB)); } void Initialization_RR() {//PCB时间片轮转初始化 printf(请输入进程数 时间片:); scanf(%d %d,num,TimeSlice); printf(请输入各个进程的周转时间:\n); for(int i=1;i=num;i++) { printf(周转时间:); scanf(%d,PCB[i].BustTime); PCB[i].RemainingTime=PCB[i].BustTime; PCB[i].State=1; PCB[i].StartNumber=i; } memcpy(CopyPCB,PCB,sizeof(PCB)); } void Sort_Priority() {//按优先级对进程排序 for(int i=1;i=num;i++) for(int j=i;j=num;j++) if(PCB[i].PriorityPCB[j].Priority) { int m=PCB[i].StartNumber; PCB[i]=CopyPCB[PCB[j].StartNumber]; PCB[j]=CopyPCB[m]; } } void Show() {//优先调度显示各进程状态 printf(进程 周转时间 剩余时间 优先级 状态\n); for(int i=1;i=num;i++

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档