网站大量收购独家精品文档,联系QQ:2885784924

《操作系统》课程设计报告汇.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《操作系统》课程设计报告汇

河海大学文天学院 《操作系统》课程设计报告 专业:计算机科学与技术 班级: 五 班 学号: 姓名: 时间: 2010/12/24 课程设计文档 实验一 进程调度 一、实验目的 通过一个简单的进程调度模拟程序的实现,加深对进程调度算法,进程切换的理解。 二、实验内容 采用动态优先数的方法,编写一进程调度程序模拟程序。模拟程序只进行相应的调度模拟操作,不需要实际程序。 三、实验流程图 四、算法思想 1、创建进程对象,成员属性有:进程名,进程所需运行时间、进程的优先级和状态 2、使用ArrayList来存放模拟的进程(ArrayList是动态数组,不用去考虑容量问题,可以很好的解决不知道数量的进程数,同时可以不使用链表)。 3、对创建的进程进行排序,按照优先级的顺序进行相应的排序。排序成功后进行模拟进程的运行,每运行一次进程,将该进程的优先级减少一个单位,运行时间减一个单位,依次循环,直至所有的进程的运行完成,运行时间变为0。注意:优先级和运行所需要的时间变为0时就不可以再减! 五、算法实现 #include stdio.h #include malloc.h #include string.h #include process.h //定义pcb结构体 typedef struct pcb{ char name[4]; //进程名 int runtime; //进程要求运行时间 int priority; //进程优先数 char state; //进程状态R代表就绪,E代表结束 struct pcb *next; }*ProNode,Pro; typedef struct{ ProNode front; ProNode rear; }PLinkQueue; //初始化进程队列 void InitPQueue(PLinkQueue *Q) { int i; ProNode P,q; system(cls); Q-rear=Q-front=NULL; //构造一个空队列 //构造进程队列 printf(\n请输入5个进程名、运行时间和优先数:\n); for(i=1;i6;i++) //从键盘输入进程信息并按优先数从大到小排序 { P=(ProNode)malloc(sizeof(Pro)); printf(\n*-*-*-*-*-*-*-*-*-*-*-*-*-*-进程%d-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n,i); printf(进程名:); scanf(%s,P-name); printf(\n运行时间:); scanf(%d,P-runtime); printf(\n优先数:); scanf(%d,P-priority); P-state=R; if(Q-front==NULL) //队列为空 { Q-front=Q-rear=P; P-next=NULL; } else if(P-priorityQ-front-priority) //队列非空,新进程优先数最大,插入队首 { P-next=Q-front; Q-front=P; } else { q=Q-front; while(q-next) { if((q-priority=P-priority)(q-next-priorityP-priority)) { P-next=q-next; //插入

文档评论(0)

liwenhua11 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档