欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年2022年进程调度v[借 .pdf

    • 资源ID:32177924       资源大小:483.09KB        全文页数:39页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年2022年进程调度v[借 .pdf

    综合设计(课程设计)说明书设计名称:系统软件综合设计设计题目:进程调度学生学号:专业班级:学生姓名:学生成绩:指导教师(职称) :课题工作时间:武汉工程大学教务处制名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 39 页 - - - - - - - - - - ii - 填写说明:1. 一、二、三项由指导教师在综合设计(课程设计)开始前填写并交由学生保管;2. 四、五两项由学生在完成课程设计后填写,并将此表与课程设计一同装订成册交给指导教师;3. 成绩评定由指导教师按评定标准评分。4. 此表格填写好后与正文一同装订成册。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 39 页 - - - - - - - - - - iii - 一、综合设计(课程设计)目的、条件、任务和内容要求:目的:进程调度是操作系统课程处理机管理的核心内容之一,其目的是通过进程调度程序的设计, 熟悉和了解进程控制快、 进程队列、调度算法等概念,从而加深和理解处理机管理的核心内容。条件:一台计算机, VC+ 环境和通过操作系统课程的学习,已具备进程调度设计的条件。任务:进行原始开发,要求用C+ 编写优先数和时间片轮转调度算法的程序。具体任务如下:1)设计进程控制快 PCB 的表结构,分别适用于优先数和时间片轮转调度算法。其中 PCB 的信息包括:进程名、进程优先数、时间片、进程的状态、进程所需的时间、以及循环的次数等。2)建立优先数调度算法的就绪队列。3)编写优先数调度算法的程序。4)获得正确结果。要求:1)掌握进程控制快 PCB 。2)掌握 VC+ 环境。3)掌握优先数调度算法。指导教师签字:年月日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 39 页 - - - - - - - - - - iv - 二、进度安排:1.发题: 2009 .12 .5 2.20 周完成基本程序设计。3.21 周完成程序调试。4.21 周完成说明书的书写 , 其中说明书的内容包括:第一章、概述第二章、进程调度设计思想和方法第三章、进程调度程序和结果第四章、结束语第五章、参考文献5.21 周周六答辩。三、应收集资料及主要参考文献:1.优先数和时间片轮转调度算法2.操作系统3.软件工程4.VC+ 5.数据结构等名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 39 页 - - - - - - - - - - v - 四、综合设计(课程设计)摘要(中文) :关键词: 操作系统;批处理;单道;并发;进程;多任务这次操作系统课的课程设计题目是进程调度, 这是操作系统一个十分重要而又十分基础的内容 , 特别是在上了操作系统这门专业课之后, 由操作系统的发展过程我们可以知道 : 在早期的批处理操作系统里, 程序都是单道的 , 没有并发 , 这对现在使用计算机来说 , 这肯定是不可能的 , 于是计算机专家们便开发出来了并发的操作系统 , 也就是我们现在所用的多任务的操作系统, 但程序是不能并发的 , 为了达到这个目的 , 于是便引入了进程的概念, 自从引入了进程后 , 操作系统便很好地解决了“程序”并发执行的问题, 这之后才有了我们现代多任务的操作系统。从上可以看出进程的重要性了, 一句话 , 它是现代操作系统的基础( 线程也是一种特殊的进程 , 是对进程的发展 )。进程有多种定义, 至今还没有统一, 从不同的角度有一同的测重点, 就有不同的描述, 我们可以把进程看成是程序的一次动态执行的过程,所以进进程程调度程序也就是能使多个程序在计算机上并发执行的系统程序。所以我们这次课程设计的目的就是能使多个进程在系统里并发地执行(当然这里的进程是模拟的里程,是以输入的字符串来表示的),而且在以下的程序中只是提供了两种进程调度的方法:优先数调度方式和时间片轮转调度方式。程序是用 C+ 来编的,主要是由两个类组成:结点类(PCB类)和链表类 (LinkList类) 。程序运行的参数是由文件流输入,再你选择了参数后,会有不同的结果,但基本上相似, 对于优先数调度方式的输出结果有:进程名,进程完成还需要的时间,以及当前的优先级;而对于时间片轮转调度方式的输出结果有:进程名,进程完成还需要的时间, 以及当前的时间片。 当然我们这里所作的进程调度肯定没有想我们所用的操作系统里面的进程调度程序那么完整, 考虑得那么多 , 我们只是实现了最最一般的功能, 也只是从原理上来做的。虽说尽管只是做了这么一点点, 但收获却是相当大的, 做了这次的课程设计之后我对操作系统的内部的运作有了较深的理解 , 对以后更深层次的学习打下了基础。当然也可以把这次的课程设计做得更深一些的研究, 比如说大四的毕业设计 , 这也是现代计算机方面的一个很有前景的研究课题。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 39 页 - - - - - - - - - - vi - 五、综合设计(课程设计)Abstract(英文) :Keywords:Operation System; Progress; Batch processing The code design for the Operation System course of this semester is called “Ajustment Of The Progress ”.So first of all I will introduce the concept of the progress,the progress is coming from the program,Its the procedure of the dynamic program s performance.the progress also is very important for the modern Operation System,from the development of the Operation System we can have a clear comprehension of the concept of the progress,we know that the early Operation System is single task Operation System,that is to say there is only one program will be performed in the CPU during a span of time,maybe we can explain just in the following way:Batch processing.namely if a task want to perform in CPU,then the task which was using the CPU just the early time must be over To the modern Operation System this way is unacceptable,for the most of the modern Operation System is multi-task,so the experts of the Computer Science quote the cocept of the process,and finally appear the modern Operation System.so we can say that “Process ” is foundation of the modern Operation System,and its the important contents of the Operation System course.But the code design for us of this time is far easer than the code in the Operation System we used,this is obviously,we are just do it in the principle, I can say although we just do so a little,the havest is high, regardless to the course of the Operation System or to the study later! The main task of this time is:first you choose a method either accords to the priority or accords to the slice of time to ajust the process(the more detail explaination of priority and slice of time will be given after).then you input the number of process and some parameters which will give you a clue.and finally the result of CPU Circulation will output in the screen of in a text file.this is the main procedure and introduction!名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 39 页 - - - - - - - - - - vii - 六、成绩评定:指导教师评语:指导教师签字:年月日项目评价项目评价调查论证工作量、工作态度实践能力分析、解决问题能力质量创新得分名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 39 页 - - - - - - - - - - viii - 七、答辩记录:答辩意见及答辩成绩答辩成绩:答辩小组教师(签字):年月日总评成绩:(教师评分 75%+答辩成绩 25%)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 39 页 - - - - - - - - - - ix - 综合设计(课程设计)评审标准(指导教师用)评价内容具体要求权重调查论证能独立查阅文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获得新知识的能力。0.1 实践能力能正确选择研究(实验)方法,独立进行研究工作。如装置安装、调试、操作。0.2 分析 解决 问题能力能运用所学知识和技能去发现与解决实际问题;能正确处理实验数据;能对课题进行理论分析,得出有价值的结论。0.2 工作量、 工作态度按期圆满完成规定的任务,工作量饱满,难度较大,工作努力,遵守纪律;工作作风严谨务实。0.2 质量综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学;文字通顺,技术用语准确,符号统一, 编号齐全, 书写工整规范, 图表完备、整洁、正确;论文结果有应用价值。0.2 创新工作中有创新意识;对前人工作有改进或独特见解。0.1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 39 页 - - - - - - - - - 武汉工程大学课程设计说明书第0页- 0 - 目录目录. i第一章概述. 11.1 课题背景 . 11.2 课题目的 . 11.3 课题任务 . 11.4 课题意义 . 21.5 课题要求 . 2第二章进程调度设计思想和方法 . 32.1 进程调度的概念 . 32.1.1 进程 . 32.1.2 进程控制块 . 32.1.3 处理机调度 . 32.1.4 作业调度 . 32.1.5 进程调度 . 42.2 进程调度的算法 . 42.2.1 调度算法 . 42.2.2 先来先服务调度算法. 42.2.3 优先数调度算法. 42.2.4 时间片轮转调度算法. 52.3 进程调度设计思想 . 52.3.1 进程控制块的设计 . 52.3.2 优先数调度算法的设计思想. 52.3.3 时间片轮转调度算法的设计思想. 62.4 进程调度设计方法 . 62.4.1 程序的流程图 . 62.4.2 进程控制块 PCB的定义 . 72.4.3 输出进程信息 print()函数. 72.4.4 优先数调度算法的实现. 92.4.5 时间片轮转算法的实现. 11 第三章进程调度程序和结果 . 13 3.1 源程序代码 . 13 3.2 源代码调试结果 . 22 3.2.1 优先数算法调试过程及结果. 23 3.2.2 时间片轮转算法调试过程及结果. 25 第四章结束语 . 28 4.1 总结. 28 4.2 致谢. 29 第五章参考文献 . 29 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 39 页 - - - - - - - - - 武汉工程大学课程设计说明书第1页- 1 - 第一章概述1.1 课题背景课程设计是为了培养我们综合运用所学知识和动手实践经验,分析和解决工程技术问题的能力, 提高我们在理论计算、 查阅资料、 运用相关理论进行软硬件设计等方面的能力。 这个课题是基于操作系统的一些基本知识,运用优先数算法和时间片轮转算法来实现进程的调度。在传统的操作系统中, 程序并不能独立地运行, 作为资源分配和独立运行的基本单位都是进程。操作系统的四大特征(并发、共享、虚拟、异步)也是基于进程现时形成的,并可以从进程的观点来研究操作系统。所以,在操作系统中,进程是一个极其重要的概念,进程调度也是一个很重要的知识。1.2 课题目的进程调度是操作系统课程中处理机管理的核心内容之一,将它作为课程设计的目的是通过对进程调度程序的设计,熟悉和了解进程控制块、 进程队列、 进程调度算法等一些概念, 从而加深理解处理机管理的核心内容,并加强我们的动手实践能力。通过编写程序的进程中, 深入了解进程调度的优先数调度算法和时间片轮转调度算法。1.3 课题任务在课程设计的过程中,要完成以下几个内容:1、设计同时一个适用于优先数算法和时间片轮转算法的进程控制块PCB的表结构。其中, PCB 的信息要包括进程标识符name 、进程优先数 prio 、时间片数 round、进程的状态state 、进程所需的时间needtime、进程已占用的时间 cputime 、循环的次数 count、链指针 next。2、设置进程的三个状态:执行状态run、等待状态 wait、完成状态 finish。3、建立优先数调度算法的就绪队列,并编写优先数调度算法的程序。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 39 页 - - - - - - - - - 武汉工程大学课程设计说明书第2页- 2 - 4、建立时间片轮转调度算法的就绪队列,并编写时间片轮转调度算法的程序。5、调试程序,并有正确结果。1.4 课题意义通过这次课程设计, 使我们掌握进程调度优先数算法和时间片轮转算法的基本思想,培养我们利用C+ 语言正确编写程序及调试程序的能力,并能从课程设计的过程中, 更好地理解进程调度的的知识, 更形象化的理解操作系统中进程运行和分配处理机的概念, 并掌握进程控制块的结构、 进程的状态及基之间的转换和常用的进程调度算法,为以后的专业课学习打下坚实的基础1.5 课题要求在完成课程设计的同时要注意以下几点:1、掌握进程控制块 PCB 的概念。2、能够用优先数算法正确完整地实现进程调度的各种情况。3、能够用时间片轮转算法正确完整地实现进程调度的各种情况。4、掌握 VC+ 环境并利用 VC+ 编写程序。5、熟练运用以前所学的VC+ 及数据结构中的知识编写完整的程序并调试出正确的结果。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 39 页 - - - - - - - - - 武汉工程大学课程设计说明书第3页- 3 - 第二章进程调度设计思想和方法2.1 进程调度的概念2.1.1 进程进程,是一个程序与其数据一起能过处理机的执行时所发生和活动。进程有三个基本状态:1、 就绪状态进程只要获得处理机便可执行时所处的状态;2、执行状态进程已经获得处理机且正在运行时所处的状态;3、等待状态进程由于发生某种事件而必须放弃处理机暂停执行时所处的状态。2.1.2 进程控制块为了描述和控制进程的运行, 系统为每个进程定义了一个数据结构进程控制块 PCB(Process Control Block),它记录了系统中所需的、用于描述进程的当前情况以及控制进程运行的全部信息。进程控制块的作用是使一个在多道程序环境下不能独立运行的程序成为一个可以独立运行的基本单位, 可以和其它进程并发执行的进程。当系统创建一个新进程时就为它建立一个PCB ,进程结束时就收回它的PCB 。进程控制块 PCB是进程存在的唯一标志。2.1.3 处理机调度处理机调度, 就是完成分配处理机的任务, 即选择多少个作业或进程进入系统内,进入系统中的进程又怎么去获得处理机。处理机调度又分为作业调度 (高级调度) 、进程调度(低级调度) 、中级调度。2.1.4 作业调度作业调度,是用于决定外存里哪些正处于后备队列的作业可以进入内存,并且为它们创建进程、 分配资源, 再将新创建的进程放在就绪队列上准备运行。每名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 39 页 - - - - - - - - - 武汉工程大学课程设计说明书第4页- 4 - 次执行作业高度时,都要做两件事:1、要接纳多少个作业进入内存,2、要把哪些作业从外存调入内存。2.1.5 进程调度进程调度,是用来决定就绪队列中的哪个进程应获得处理机,再由分派程序执行把处理机分配给该进程的具体操作。进程调度有两种调度方式, 非抢占方式和抢占方式。 在非抢占方式下, 一旦把处理机分配给其他进程,便让该进程一直执行下去,直到该进程完毕或是发生某事件而不能再继续执行时,系统才会再把处理机分配给其他进程, 否则决不允许某进程抢占已经分配出去的处理机。而在抢占方式下,允许调度程序按某种原则,如:优先权原则、短作业优先原则、时间片原则,去暂停某个正在进行的进程, 并将已分配给该进程的处理机重新分配给另一进程。2.2 进程调度的算法2.2.1 调度算法在操作系统中, 调度算法是指根据系统的资源分配策略所规定的资源分配算法。对于不同的系统和系统目标,采用的调度算法也不同。常用的调度算法有:先来先服务调度算法、优先数调度算法、时间片轮转算法。2.2.2 先来先服务调度算法先来先服务调度算法是一种最简单的调度算法。在进程调度中,每次调度时,从就绪队列中选择一个最先进入该队列的进程,为它分配处理机,让它投入运行。2.2.3 优先数调度算法优先数调度算法常用于批处理系统中。在进程调度中, 每次调度时, 系统把处理机分配给就绪队列中优先数最高的进程。它又分为两种: 非抢占式优先数算法和抢占式优先数算法。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 39 页 - - - - - - - - - 武汉工程大学课程设计说明书第5页- 5 - 在非抢占式优先数算法下, 系统一旦把处理机分配给就绪队列中优先数最高的进程后, 这个进程就会一直运行, 直到完成或发生某事件使它放弃处理机,这时系统才能重新将处理机分配给就绪队列中的另一个优先数最高的进程。在抢占式优先数算法下, 系统先将处理机分配给就绪队列中优先数最高的进程度让它运行, 但在运行的过程中, 如果出现另一个优先数比它高的进程,它就要立即停止,并将处理机分配给新的高优先数进程。2.2.4 时间片轮转调度算法时间片轮转算法的基本思想是, 系统将所有的就绪进程按先来先服务算法的原则,排成一个队列,每次调度时,系统把处理机分配给队列首进程,并让其执行一个时间片。 当执行的时间片用完时, 由一个计时器发出时钟中断请求,调度程序根据这个请求停止该进程的运行,将它送到就绪队列的末尾, 再把处理机分给就绪队列中新的队首进程,同时让它也执行一个时间片。2.3 进程调度设计思想2.3.1 进程控制块的设计进程控制块是进程存在的标志,在这个程序中,进程控制块PCB 的表结构要适用于优先数算法和时间片轮转算法,所以PCB的信息要包括进程标识符name 、进程优先数 prio 、时间片数 round、进程的状态 state 、进程所需的时间needtime 、进程已占用的时间cputime 、循环的次数 count、链指针 next。2.3.2 优先数调度算法的设计思想在 2.2.3 节中,已经提到了优先数算法的基本思想,在这个程序中采用的是抢占式优先数算法。在具体实现时,进程每执行一次,优先数减3,占用的 CPU时间片数加 1,还需要的 CPU时间片数减 1,再根据它所需的时间片数判断是否需要改变它为完成状态, 如果不需要改变, 就根据就绪队列是否为空和它的时间片数判断是否需要改变它为就绪状态。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 39 页 - - - - - - - - - 武汉工程大学课程设计说明书第6页- 6 - 2.3.3 时间片轮转调度算法的设计思想在 2.2.3 节中,已经提到了时间片轮转算法的基本思想,在具体实现时,采用固定时间片数,在本程序中时间片为2,进程每执行一次,占用的CPU 时间片数加 1,还需要的 CPU 时间片数减 1,同时计数器也加1,再根据它所需的时间片数判断是否需要改变它为完成状态,如果不需要改变, 就根据就绪队列是否为空和它的时间片数判断是否需要改变它为就绪状态。2.4 进程调度设计方法在 2.3 节,已经提到了进程调度的设计思想,在具体实现时还要做一些其它的事情,比如怎样根据键盘输入的进程名和所需时间建立进程的就绪队列,怎样将就绪队列的进程投入运行, 怎样将正在运行的进程插入就绪队列,怎样输出进程的信息,等等。在下面将会一一说明。2.4.1 程序的流程图图 2-1 进程调度程序流程图Chart 2-1 The Flowing Picture of Process Scheduling 判断算法?优先数算法建立就绪队列选择调度算法时间片轮转算法建立就绪队列调用时间片轮转算法调用优先数算法结束开始名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 39 页 - - - - - - - - - 武汉工程大学课程设计说明书第7页- 7 - 2.4.2 进程控制块 PCB的定义在程序中,进程控制块PCB 的实现如下:typedef struct node char name10;/进程名int prio;/优先数int round;/时间片int needtime;/还需要的时间int cputime;/需要的 CPU 时间int count;/计数器char state;/ 进程的状态struct node *next;/链指针PCB; 2.4.3 输出进程信息 print()函数程序中实现的两个算法的进程调度,输出的信息也不一同,在print()函数的开始先要判断是哪种算法,程序段如下:if(alg=p|alg=P) cout name cputime needtime priority staten; else cout name cputime needtime count round staten; 另外, print()函数要输出每个进程的信息,就涉及到运行队列、等待队列、完成队列三个队列的输出。运行队列的进程输出的主要程序段如下:if(run!=NULL)/ 如果运行指针不为空 ,就输出当前正在运行的进程的PCB if(alg=p|alg=P) cout namet cputimet needtime; coutt priot staten; else cout namet cputimet needtimet ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 39 页 - - - - - - - - - 武汉工程大学课程设计说明书第8页- 8 - coutcountt roundt staten; 等待队列的进程输出的主要程序段如下:q=ready; while(q!=NULL)/ 如果就绪队列头指针不为空,输出就绪队列的进程的PCB if(alg=p|alg=P) cout namet cputimet needtime; coutt priot staten; else cout namet cputimet needtimet ; coutcountt roundt statenext; 完成队列的进程输出的主要程序段如下:q=finish; while(q!=NULL)/ 如果完成队列头指针不为空,输出完成队列的进程的PCB if(alg=p|alg=P) cout namet cputimet needtime; coutt priot staten; else cout namet cputimet needtimet ; coutcountt roundt statenext; 2.4.4 优先数调度算法的实现在前面已经对优先数调度算法的思想做了讲述,其中提到创建就绪队列和将正在运行的进程插入就绪队列,在程序中是用两个函数create1() 和 insert1()来实现的。Create1() 的关键程序段如下:for(i=1;inatime; strcpy(p-name,na); p-cputime=0;/每个进程占用 CPU 时间初始值为 0 p-needtime=time;/每个进程所需的 CPU 时间初始值由调试者给出p-state=w;/每个进程的初始状态都为就绪状态p-prio=50-time;/每个进程的优先数由needtime决定if(ready!=NULL) insert1(p);/若就绪队列不为空 ,将其插入就绪队列else/创建就绪队列的第一个进程的PCB p-next=ready; ready=p; insert1()的关键程序段如下:while(p1!=NULL)&b) /根据优先数确定插入位置 if(p1-prio=s-prio) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 39 页 - - - - - - - - - 武汉工程大学课程设计说明书第10页- 10 - r=p1; p1=p1-next; else b=0; if(r!=p1) /如果条件成立说明插入在r 与 p1 之间 r-next=s; s-next=p1; else s-next=p1; /否则插入在就绪队列的头ready=s; 除了这个两个函数, 另一个关键的就是优先数算法本身的函数,它主要的程序段如下:while(run!=NULL) /当运行队列不空时,表示有进程正在运行 run-cputime=run-cputime+1;/每运行一次 cputime 加一run-needtime=run-needtime-1;/ 每运行一次 needtime减一run-prio=run-prio-3; / 每运行一次优先数降低3 个单位if(run-needtime=0) /若所需时间为 0,将其插入完成队列 run-next=finish; finish=run; run-state=F; /将其状态改为完成态run=NULL; /运行队列头指针为空/如就绪队列不空 ,将就绪队列的第一个进程投入运行if(ready!=NULL) firstin(); else /没有运行完同时优先数不是最大,则将其变为就绪态,并插入到就绪队列if(ready!=NULL)&(run-prioprio) run-state=W; insert1(run); firstin(); / 将就绪队列的第一个进程投入运行 print(alg); /输出进程 PCB 信息 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 39 页 - - - - - - - - - 武汉工程大学课程设计说明书第11页- 11 - 2.4.5 时间片轮转算法的实现在前面已经对时间片轮转调度算法的思想做了讲述,其中提到创建就绪队列和将正在运行的进程插入就绪队列,在程序中是用两个函数create2() 和 insert2()来实现的。Create2() 的关键程序段如下:for(i=1;inatime; strcpy(p-name,na); p-cputime=0; p-needtime=time; p-count=0;/ p-state=w;/进程的初始状态设为就绪 W p-round=2;/时间片的初始值设为2 if(ready!=NULL) insert2(p);/若就绪队列不为空 ,将其插入就绪队列else/创建就绪队列的第一个PCB p-next=ready; ready=p; tail=p; 时间片轮转算法是在先为先服务算法的基础上实现的,只需要按照输入的顺序将进程插入到就绪队列即可,Insert2()函数定义如下:void insert2(PCB *p)/时间片插入函数 tail-next=p; /将新的 PCB 插入在当前就绪队列的尾tail=p; p-next=NULL; 除了这个两个函数, 另一个关键的就是时间片轮转算法本身的函数,它主要名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 39 页 - - - - - - - - - 武汉工程大学课程设计说明书第12页- 12 - 的程序段如下:while(run!=NULL) run-cputime=run-cputime+1;/每运行一次 cputime 加一run-needtime=run-needtime-1;/ 每运行一次 needtime减一run-count=run-count+1;/每运行一次计数器count加一if(run-needtime=0)/若运行完后 run-next=finish; finish=run;/将其插入完成队列头部run-state=F;/将其状态改为完成态 F run=NULL; /若就绪对列不空,将第一个进程投入运行if(ready!=NULL) firstin(); else if(run-count=run-round) /如果时间片到 run-count=0; /计数器置 0 if(ready!=NULL) / 若就绪队列不空 run-state=W; insert2(run);/将进程插入到就绪队列中等待轮转firstin(); / 将就绪队列的第一个进程投入运行 print(alg); /输出进程信息 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 39 页 - - - - - - - - - 武汉工程大学课程设计说明书第13页- 13 - 第三章进程调度程序和结果3.1 源程序代码#include iostream.h #include string.h #include stdlib.h typedef struct node char name10;/进程名int prio;/优先数int round;/时间片int needtime;/还需要的时间int cputime;/需要的 CPU 时间int count;/计数器char state;/进程的状态struct node *next;/链指针PCB; /run为当前运行进程指针 ,ready 为就绪队列头指针/tail为就绪队列尾指针 ,finish为完成队列头指针PCB *run,*ready,*tail,*finish; int N;/进程个数char alg;/选择算法void insert1(PCB *P)/优先数插入函数 PCB *p1,*s,*r; int b; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 39 页 - - - - - - - - - 武汉工程大学课程设计说明书第14页- 14 - s=P; /待插入的 PCB指针 p1=ready; /就绪队列头指针 b=1; while(p1!=NULL)&b) /根据优先数确定插入位置 if(p1-prio=s-prio) r=p1; p1=p1-next; else b=0; if(r!=p1) /如果条件成立说明插入在r 与 p1 之间 r-next=s; s-next=p1; else s-next=p1; /否则插入在就绪队列的头 ready=s; void insert2(PCB *p)/时间片插入函数 tail-next=p; /将新的 PCB 插入在当前就绪队列的尾 tail=p; p-next=NULL; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 39 页 - - - - - - - - - 武汉工程大学课程设计说明书第

    注意事项

    本文(2022年2022年进程调度v[借 .pdf)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开