- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实现模拟进程调度的算法:时间片轮转及短进程优先
操作系统课程设计报告
时间:2011-12-26~2012-1-6
地点:信息技术实验中心
计算机科学与技术(或软件工程)专业
xxx级xxx班xx号
xxx
xxxxx
目录
一 课程设计的目的和意义………………………………………………………
二 进程调度算法模拟……………………………………………………………
1 设计目的………………………………………………………………………
2 设计要求………………………………………………………………………
3 时间片轮转算法 先来先服务算法本次课程设计的主要任务是进行系统级的程序设计。本课程设计是操作系统原理课程的延伸。通过该课程设计,使学生更好地掌握操作系统各部分结构、实现机理和各种典型算法,加深对操作系统的设计和实现思路的理解,培养学生的系统设计和动手能力,学会分析和编写程序。课程设计的实施将使学生在以下几个方面有所收获:加深对操作系统原理的理解,提高综合运用所学知识的能力;(2)培养学生自主查阅参考资料的习惯,增强独立思考和解决问题的能力;(3)通过课程设计,培养严谨的科学态度和协作精神。(1)要求学生设计并实现模拟进程调度的算法时间片轮转及。
(2)理解进程控制块的结构。
(3)理解进程运行的并发性。
(4)掌握进程调度算法。在多道程序运行环境下,进程数目一般多于处理机数目,使得进程要通过竞争来使用处理机。这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之运行,分配处理机的任务是由进程调度程序完成的。一个进程被创建后,系统为了便于对进程进行管理,将系统中的所有进程按其状态,将其组织成不同的进程队列。于是系统中有运行进程队列、就绪队列和各种事件的进程等待队列。进程调度的功能就是从就绪队列中挑选一个进程到处理机上运行。进程调度的算法有多种,常用的有优先级调度算法、先来先服务算法、时间片轮转算法。时间片轮转算法时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法。每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。
图1-1 时间片算法流程图
(3)时间片算法模拟设计要求
进程的调度采用时间片轮转算法。
设计三个链队列,分别用来表示运行队列、就绪队列和完成队列。
用户输入进程标识符以及进程所需的时间申请空间存放进程 PCB信息。
输出的格式和上面的运行结果分析中的格式相同。
时间片轮转调度,具体做法是调度程序每次把 CPU 分配给就绪队列首进程使用一个时间片。当这个时间片结束时,就强迫一个进程让出处理器,让它排列到就绪队列的尾部,等候下一轮调度。实现这种调度要使用一个间隔时钟。当一个进程开始运行时,就将时间片的值置入间隔时钟内,当发生间隔时钟中断时,就表明该进程连续运行的时间已超过一个规定的时间片。此时,中断处理程序就通知处理器调度进行处理器的切换工作。while (!threads.isEmpty()) {
if (threads.get(0).getPCB().getTimed() = threads.get(0).getPCB().getTimePian())
{
threads.get(0).run();
finished.add(threads.get(0));
threads.remove(0);
}
else {
threads.get(0).run();
MyThread thread = threads.get(0);
threads.remove(0);
threads.add(thread);
}
}
public void run() {
System.out.println(执行的进程是:);
if (this.getPCB().getTimed() = this.getPCB().getTimePian())
{
System.out.println(进程名= + this.getPCB().getPName() + ,剩余执行时间=0);
this.getPCB().setTimed(0);
}
else {
System.out.println(进程名= + this.getPCB().getPName() + ,剩余执行时间= + (this.getPCB().getTimed()-this.getPCB().getTimePian()));
System
您可能关注的文档
- 基于JAVA WEB服务的数据交换系统的设计与实现 答辩稿.ppt
- 基于JAVA Web服务的数据交换系统的设计与实现---毕业设计报告.doc
- 基于JAVA的学生信息管理系统 【毕业设计+源代码】【源代码联系本人】.doc
- 基于JSP教务信息发布系统论文.doc
- 基于JSP的人事管理系统论文.doc
- 基于JSP的固定资产管理系统的研究与设计答辩.ppt
- 基于JSP的小型新闻发布系统 【数据库课程设计报告】 使用说明.doc
- 基于JSP的小型新闻发布系统 【数据库课程设计报告】【源代码联系本人】.doc
- 基于JSP的车间信息系统 毕业设计说明书.doc
- 基于labview和usb6008传感器测试系统的数据采集处理.doc
文档评论(0)