- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程调度模拟试验报告
《计算机操作系统原理》课外上机
实验报告
题目
名称 进程调度算法模拟 院系 信息学院 班级 完成时间 10月17日 指导老师 本次实验成绩 组长
联系电话 邮件地址 组长 (姓名、学号) 主要
任务 成员(姓名、学号) 主要
任务
主要原理及说参考的资料(包括实验内容及条件)
本实验模拟了进程调度的三种算法:静态优先级的立即抢占式调度算法;动态优先级调度算法;时间片轮转调度算法。
一、静态优先级的立即抢占式调度算法原理:在创建进程时,由系统随机产生该进程的优先数(本实验规定:优先数大者,优先权高),且优先数在生命周期中不再改变。就绪队列中的进程根据优先权高低进行排队,等待CPU运行。在进程运行过程中,如果就绪队列出现优先级更高的进程时(本实验开始运行后系统会在任意时间随机创建一个新的进程,最多共创建7个),则立即进行重新调度,剥夺当前运行进程所占有的CPU,分配给更高优先权的进程使用。
二、动态优先级调度算法原理:在创建进程时,由系统随机产生该进程的优先数(本实验规定:优先数大者,优先权高),但动态优先级的优先数随时间会发生改变。本实验的基本原则是:正在运行的程序每次运行CPU的时间为1000ms时,优先数减1,若在就绪队列中出现优先权高的进程,则剥夺当前进程所占有的CPU,分配给优先权高地进程使用,否则,继续占用CPU,当运行1000ms后,优先数继续减1,重新比较。以此循环,直至所有进程运行完为止。
三、时间片轮转调度算法原理:就绪队列中的每个进程轮流的运行一个时间片(本实验时间片为固定值2000ms),当时间片耗尽时,就强迫当前的运行进程让出处理器,转而排到就绪队列尾部,等候下一轮调度。 本实验中,在创建进程时,就绪队列按照优先权高低进行排队,然后依次从就绪队列取出首个进程根据时间片轮转法进行调度。当进程正在运行时,系统会在任意时间自动创建新的进程(规定:系统自动创建最多7个进程,此后不再创建),并根据优先级高低插入就绪队列中。当某个进程的时间片耗尽时,则排到就绪队列尾部,然后调度就绪队列的首个进程。进程每呆一个时间片,优先数减1。
以上三种算法都是每1000ms显示一次运行结果,并规定每次运行CPU时间为1000ms。
标注:R:代表正在CPU中运行;W:代表正在就绪队列中;F:代表此进程已运行完。
主要算法及流程图
(包括实验步骤)
主程序流程图:
静态优先级立即抢占式调度流程图:
动态优先级调度流程图:
时间片轮转法调度流程图:
本实验涉及的主要数据结构和函数说明
主要数据结构:
PCB类包含的属性与方法:
public int id;//进程唯一标识:进程号
public int prio;//进程优先数,随机产生(10以内)
String in;//进程进入CPU的时间,格式为hh:mm:ss(当前系统时间)
public char state;//进程的状态标志
public int cputime;//进程已在CPU运行的时间
public int needtime;//进程需要运行的时间(开始由系统随机产生,此后每运行一次,相应减少)
PCB next;//用来将多个进程PCB块链接为链表
public PCB()//构造函数
{}
public PCB(int id)//带参的构造函数
{
this.id=id;
}
LinkList类包含的属性与方法:
public static int j=0;//用来标识创建进程的ID
public static PCB ready,run,finish;//分别表示运行,就绪,完成,初始化都为NULL;
public static void prt3();//输出显示函数,首先输入运行队列进程,其次是就绪队列进程,最后是完成队列的进程;
public static void insert(PCB q)// 按优先级高低插入就绪队列
public static void noPrioInsert(PCB q)//插入到就绪队列尾部
public static void creat(int n)//系统自动创建进程
静态优先级立即抢占式类包含的主要方法为:
class staticPrio implements Runnable
{ public void run(){} }//
动态优先级调度算法类包含的主要方法为:
class movePrio implements Runnable
{ public void run(){} }
时间片轮转法调度算法包含的主要方法为:
class Timer implements Runnable
{ public void run(){} }
Main方法中:
Thr
文档评论(0)