- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统课程设计计算机14-1c
《操作系统原理》课程实践报告专 业 计算机科学与技术班 级 计算机14-1学 号 123123 姓 名 123123 指导教师 陈 珂完成时间 2016.10.14 成 绩 进程调度算法模拟一、设计目的 编程实现进程调度的算法,更好地掌握操作系统的原理及实现方法,从而有利于把握进程调度细节。二、设计要求 (1)要求实现先来先服务,短作业优先,时间片轮转,高优先权调度算法四种算法并进行对比分析.(2)要求界面简单,易懂,关键代码部分要注释.(3)编程语言可以采用自己任意精通的语言三、设计思想说明 先来先服务:程序的执行调度顺序按先进入队列的先获得执行,并且其他进程都不能中断正在执行的进程,要等进程完成后才能,让出CPU给其他进程。执行的时候可以随时在队列中插入进程。 短作业优先:进程的调度顺序按程序的服务时间来决定,进程的执行顺序。服务时间短的先被调用。调度时先从队列中选取服务时间最短的进程来执行。进程中途不能中断,即使此时队列中存在服务时间比其更短的进程,仍需要等待该进程执行完后才能被执行。 高优先权调度:选取进程中优先级最高的一个,以优先级的值大,优先级就大。调度时总是选取队列中进程优先级最高的来执行,不管是否有某个进程在执行,只要存在比正在执行进程优先级高的进程,则就会立刻中断正在执行的进程,让给跟高优先级的进程。 时间片轮转:本课程设计采用多级反馈队列调度算法,设立4个进程队列,分给队列1的时间片为3秒,队列2的时间片为6秒,队列3的时间片为12秒,队列4的时间片为24秒。队列1的优先级最高,队列4的优先级最低。高优先级的队列没执行完,即不为空,就永远不执行其下面的低优先级的队列里面的进程。当执行低优先级队列里面的进程时,突然间高优先级的队列插入了进程就立刻跳到高优先级的队列执行其里面的进程。每个队列的进程都是按先来先执行的顺序执行。进程初次执行肯定要进入队列1。如何从头到尾执行一遍队列1中的进程是,存在某些进程在队列1的时间片内还没执行完,就把进程移交到下一个队列中。每个队列都如此类推。直到最后一个队列4,如果在队列4还有进程在本时间片内还没没执行完,就把该程序放到队尾,从新等待时间片执行。四、算法流程1.算法流程图FCFS调度算法流程图 对各进程按到达时间进行排序挑选最先到达的程序一次性执行完判断是否所有进程都被调度否是(2)SPJ调度算法流程图判断所有进程是否已经结束否是高优先权调度算法流程图进程是否已经调度完毕否是(4)时间片轮转调度算法否进程是否已经调度完毕是2.进程控制块PCB的设计进程控制块PCB是进程存在的唯一标志,主要包括进程的以下的信息:进程标识符、处理机状态、进程调度信息(进程状态、进程优先级、进程调度所需要的其他信息、事件)、进程的控制信息。 进程属性 变量名 数据类型进程名 sNamechar进程状态 iStatusint优先级 iPrivilegeint服务时间 iRunTimeint进程等待时间 iWaitTimeint五、实现过程与结果1.先来先服务算法运行结果短进程优先算法运行结果3.髙相应比优先算法运行结果4.时间片轮转算法运行结果六、源程序#includestdio.h #includestring.h #includeiostream.h const int block_time=10; //定义时间片的长度为10秒 const int MAXPCB=100; //定义最大进程数 //定义进程结构体 typedef struct node{ char sName[20];//进程名int iStatus;//进程状态int iRunTime; //进程需运行的时间int iPrivilege; //进程的优先数int iFinished; //标志进程是否执行完成int iWaitTime; //进程的等待时间}pcb; pcb pcbs[MAXPCB]; int iPCBNum; void initPCB()//PCB初始化函数{ int i; for(i=0;iMAXPCB;i++){ strcpy(pcbs[i].sName,); pcbs[i].iStatus=0; pcbs[i].iRunTime=0; pcbs[i].iPrivilege=0; pcbs[i].iFinished=0; pcbs[i].iWaitTime=0; } //for(i=0;iMAXPCB;i++)iPCBNum=0; } //void initPCB()int readData()//读进程流文件数据函数{ FILE *fp; char sFile[20]; int i; cout请输入进程流文件名(注意:包括后缀名): ; cinsFile; if
您可能关注的文档
- 操作系统实验报告进程调度.docx
- 操作系统教程(第六章).ppt
- 操作系统期末重点.doc
- 操作系统教程(第二章).ppt
- 操作系统文件系统总结.ppt
- 操作系统教程(第五章).ppt
- 操作系统第2章作业进程与线程.ppt
- 操作系统第3章进程通信与控制.ppt
- 操作系统第5章存储管理2离散分配.ppt
- 操作系统第5章讲存储管理1连续分配.ppt
- 2025年春新北师大版八年级物理下册全册课件.pptx
- 2025年春新北师大版八年级物理下册全册教学课件.pptx
- 2025年秋季新北师大版八年级上册物理全册教学课件.pptx
- 2025年秋季新人教版九年级上册化学全册课件.pptx
- 2025年新人教版八年级上册物理全册课件.pptx
- 2025年秋季新人教版九年级上册化学全册教学课件(新版教材).pptx
- 新人教版七年级上册英语全册课件(2025年新版教材).pptx
- 锂离子电池前驱体磷酸铁合成方法研究现状及展望.docx
- 2024年东盟石油和天然气更新报告(英文版)-东盟.docx
- DB3209_T 1207.2-2022 建设工程档案管理 第二部分:房屋建筑工程文件归档和档案移交范围.docx
文档评论(0)