时间片轮转、强占式短进程优先算法
进程调度模拟算法

进程调度模拟算法进程调度是操作系统中的重要组成部分之一,它负责决定在多道程序环境下,哪个进程将获得CPU的使用权。
进程调度模拟算法是为了研究和评估不同调度策略的性能而开发的一种仿真方法。
在实际系统中,调度算法会受到多种因素的影响,如进程优先级、进程的I/O需求、进程的实际执行时间等。
通过模拟这些因素,可以更好地理解不同调度算法之间的差异,并选择最合适的算法来满足特定需求。
下面介绍两种常见的进程调度模拟算法:先来先服务(FCFS)和最短作业优先(SJF)算法。
1. 先来先服务(FCFS)算法:该算法按照进程到达的顺序来调度任务。
当一个进程完成或阻塞时,下一个已到达的进程将获得CPU的使用权。
这种算法非常简单,但是不适用于长作业时间和短作业时间交替出现的情况。
在短作业启动时,长作业仍然在运行,使得短作业的等待时间增加。
2. 最短作业优先(SJF)算法:该算法根据任务的执行时间来调度进程。
在该算法中,每个进程的执行时间都是已知的,并且操作系统根据已知的执行时间来决定哪个进程获得CPU的使用权。
在短作业优先算法中,短作业将会先被调度,这样有助于减少平均周转时间和等待时间。
但是,短作业优先算法容易产生“饥饿”现象,即长作业可能会一直等待,而短作业一直得到CPU的使用权。
除了以上两种算法,还有其他的进程调度模拟算法。
例如:- 时间片轮转(RR)调度算法:使用固定的时间片来调度进程,当时间片用完后,该进程被放入就绪队列的末尾。
- 优先级调度算法:每个进程都拥有一个优先级,优先级越高的进程越早被调度。
这种方法可以根据不同进程的紧迫程度和重要性来进行调度。
- 多级反馈队列调度算法:将就绪队列划分为多个队列,并根据进程的性质和优先级将进程放入不同的队列。
每个队列都有不同的优先级和时间片大小,进程可以通过提高优先级或时间片大小来提高被调度的机会。
在实际应用中,需要根据系统需求和性能指标选择合适的调度算法。
常用的性能指标包括平均周转时间、平均等待时间、CPU利用率等。
常用的调度算法

常用的调度算法调度算法是指操作系统中用于决定进程何时执行、何时暂停等的一种算法。
常用的调度算法包括先来先服务(FCFS)、短作业优先(SJF)、优先级调度、时间片轮转等。
下面将对这些常用的调度算法进行详细介绍。
一、先来先服务(FCFS)先来先服务是最简单的调度算法之一,它按照进程到达的顺序进行调度,即谁先到谁先执行。
这种算法容易实现,但是存在“饥饿”现象,即如果某个进程长时间等待,则其他进程可能会一直占用CPU资源,导致该进程无法得到执行。
因此,在实际应用中,FCFS很少被使用。
二、短作业优先(SJF)短作业优先是一种以作业运行时间为依据的调度算法。
它通过预测每个进程需要运行的时间,并将其按照运行时间从小到大排序,然后依次执行。
这种算法可以最大限度地减少平均等待时间和平均周转时间,并且不会出现“饥饿”现象。
但是,在实际应用中,由于很难准确预测每个进程需要运行的时间,因此SJF也存在缺陷。
如果预测不准确,那么就会出现长作业等待短作业的情况,导致长作业的等待时间变长。
三、优先级调度优先级调度是一种按照进程优先级进行调度的算法。
每个进程都有一个优先级,系统会根据进程的优先级来决定下一个要执行的进程。
通常情况下,优先级越高的进程越有可能得到CPU资源。
但是,如果某个进程的优先级一直比其他进程高,那么其他进程就会一直等待,导致“饥饿”现象。
此外,在实际应用中,由于不同进程之间的优先级差别较大,因此可能会导致低优先级的进程长时间等待。
四、时间片轮转时间片轮转是一种按照时间片进行调度的算法。
它将CPU资源划分成若干个时间片,并将每个时间片分配给一个正在运行或等待运行的进程。
当一个进程用完了它所分配到的时间片后,系统会将其挂起,并将CPU资源分配给下一个等待运行的进程。
这种算法可以避免“饥饿”现象,并且能够保证所有正在运行或等待运行的进程都能够得到CPU资源。
但是,如果时间片太小,会导致进程频繁切换,影响系统性能;如果时间片太大,会导致长作业等待时间变长。
操作系统的调度算法优先级时间片和占式调度

操作系统的调度算法优先级时间片和占式调度操作系统的调度算法:优先级、时间片和抢占式调度操作系统是计算机系统中的一个核心组件,用于管理和控制计算机的硬件和软件资源,以提供良好的用户体验和系统性能。
在操作系统中,调度算法是实现任务分配和资源管理的关键。
本文将介绍三种常见的调度算法:优先级调度、时间片轮转调度和抢占式调度。
一、优先级调度算法优先级调度算法是根据任务的优先级安排任务的执行顺序。
每个任务都有一个优先级值,数值越高表示优先级越高。
当一个任务就绪并等待执行时,调度器会选择优先级最高的任务来执行。
优先级调度算法可以保证高优先级任务及时得到执行,但可能会导致低优先级任务出现饥饿现象。
实际上,优先级调度算法可以分为静态优先级和动态优先级两种类型。
静态优先级是在任务创建时分配的,不会改变。
动态优先级根据任务的运行情况和系统状态进行动态调整,以提高系统的公平性和性能。
二、时间片轮转调度算法时间片轮转调度算法是一种周期性调度算法,每个任务被分配一个固定的时间片(时间段),当任务的时间片用完后,调度器会将任务挂起,并将CPU 分配给下一个任务执行。
当所有任务都执行完一次后,调度器会重新分配时间片,继续按照顺序执行任务。
时间片轮转调度算法可以保证任务的平均执行时间,并且避免了长时间任务的霸占资源问题。
然而,如果任务的时间片设置得过小,则会增加任务切换的开销。
如果任务的时间片设置得过大,则可能出现对实时任务响应时间的影响。
三、抢占式调度算法抢占式调度算法是一种灵活的调度策略,允许更高优先级的任务打断正在执行的低优先级任务,以确保高优先级任务的及时响应。
当一个任务就绪并具备运行条件时,调度器会立即安排其执行,无论当前是否有其他任务在执行。
抢占式调度算法可以有效地提高系统的响应速度和实时性,但可能会导致任务切换的频繁发生,增加了系统开销。
为了平衡性能和实时性的需求,抢占式调度算法通常会和其他调度策略结合使用,例如优先级和时间片轮转。
操作系统时间片轮转算法与优先级调度算法

操作系统时间片轮转算法与优先级调度算法操作系统作为计算机的核心,需要负责管理和分配系统资源的功能。
其中,调度算法是操作系统中非常重要的一个功能,它决定了如何分配CPU时间,因此直接影响系统的性能和响应速度。
本文将介绍两种操作系统中常用的调度算法:时间片轮转算法和优先级调度算法。
时间片轮转算法时间片轮转算法(Round Robin)是一种基本的调度算法,它是多道程序设计中常用的一种算法。
在内存中同时存放多个进程,并根据每个进程的优先级轮流分配 CPU 时间,以保证每个进程都能得到一定的CPU时间片,从而保证操作系统的公平性和系统的稳定性。
基本思想时间片轮转算法的基本思想是:将每个进程分配相同长度的CPU时间片,一旦时间片用完,立即将该进程挂起,并将 CPU 分配给下一个进程。
这样就可以保证每个进程都有相同的机会获得 CPU 时间,避免了某个进程长时间霸占CPU而导致其他进程无法运行的情况。
算法流程时间片轮转算法的具体实现过程如下:1.将所有待运行的进程加入到就绪队列中;2.从就绪队列中取出第一个进程,将其运行指定时间片长度的时间;3.如果该进程在运行时间片结束之前自己退出,那么直接将其从就绪队列中取出,释放资源;4.如果该进程在运行时间片结束之前没有自己退出,那么将其挂起放到队列的尾部,然后将 CPU 分配给下一个进程,重复2-4步骤,直到所有进程执行完毕。
算法优点时间片轮转算法的优点如下:1.公平:每个进程都能得到相同长度的时间片,避免了某个进程长时间霸占CPU的情况,从而保证了每个进程都会运行;2.适用:时间片轮转算法适用于多任务并发的环境下,可以有效地避免死锁和饥饿现象;3.高效:时间片轮转算法可以保证 CPU 的高效利用,能够最大限度地提高 CPU 的性能。
算法缺点时间片轮转算法的缺点如下:1.精度问题:时间片长度不能太长,否则会导致某些进程长时间等待CPU时间片;2.资源浪费:如果一个进程只需要很短的时间就可以完成任务,但由于时间片的限制而占用CPU的时间,这就是一种资源浪费。
几种操作系统调度算法

几种操作系统调度算法操作系统调度算法是操作系统中用于确定进程执行的顺序和优先级的一种方法。
不同的调度算法有不同的优缺点,适用于不同的场景和需求。
下面将介绍几种常见的操作系统调度算法:1.先来先服务(FCFS)调度算法:先来先服务调度算法是最简单的调度算法之一、按照进程到达的顺序进行调度,首先到达的进程先执行,在CPU空闲时执行下一个进程。
这种算法实现简单,并且公平。
但是,由于没有考虑进程的执行时间,可能会导致长作业时间的进程占用CPU资源较长时间,从而影响其他进程的响应时间。
2.短作业优先(SJF)调度算法:短作业优先调度算法是根据进程的执行时间进行排序,并按照执行时间最短的进程优先执行。
这种算法可以减少平均等待时间,提高系统的吞吐量。
然而,对于长作业时间的进程来说,等待时间会相对较长。
3.优先级调度算法:优先级调度算法是根据每个进程的优先级来决定执行顺序的。
优先级可以由用户设置或者是根据进程的重要性、紧迫程度等因素自动确定。
具有较高优先级的进程将具有更高的执行优先级。
这种算法可以根据不同情况进行灵活调度,但是如果不恰当地设置优先级,可能会导致低优先级的进程长时间等待。
4.时间片轮转(RR)调度算法:时间片轮转调度算法将一个固定的时间片分配给每个进程,当一个进程的时间片用完时,将该进程挂起,调度下一个进程运行。
这种算法可以确保每个进程获得一定的CPU时间,提高系统的公平性和响应速度。
但是,对于长时间运行的进程来说,可能会引起频繁的上下文切换,导致额外的开销。
5.多级反馈队列(MFQ)调度算法:多级反馈队列调度算法将进程队列划分为多个优先级队列,每个队列有不同的时间片大小和优先级。
新到达的进程被插入到最高优先级队列,如果进程在时间片内没有完成,则被移到下一个较低优先级队列。
这种算法可以根据进程的执行表现自动调整优先级和时间片,更好地适应动态变化的环境。
以上是几种常见的操作系统调度算法,每种算法都有其优缺点和适用场景。
操作系统中的进程调度原理

操作系统中的进程调度原理一、概述进程调度在操作系统中是非常重要的一个概念。
它是指在系统中多个进程同时运行时,如何选择下一个要运行的进程,并对进程进行分配CPU时间片的过程。
进程调度在操作系统中扮演着重要的角色,它决定了系统整体的性能和响应时间。
在本文中,我们将详细讨论进程调度的原理、算法和实现,以及一些常见的调度策略。
二、进程调度的原理操作系统中的进程调度的本质是分配CPU资源。
CPU时间片是操作系统中进行任务调度的基本单位。
每个进程执行自己的任务时,都要先获得CPU时间片,进程使用的时间片用完之后,操作系统将紧接着将CPU资源分配给下一个进程运行。
在进程调度的过程中,操作系统需要维护一张任务调度表,该表中记录着每个进程的进程控制块(PCB),该表还需要维护一些其他的信息,如就绪进程队列、阻塞进程队列等。
每个进程具有自己的属性,如进程的优先级、占用CPU的时间等。
在进程调度的过程中,根据进程的优先级和占用CPU的时间来判断下一个将要运行的进程,并将CPU时间片分配给下一个进程。
三、进程调度的算法1.先来先服务(FCFS)先来先服务(FCFS)是最古老的进程调度算法。
这个算法的工作原理是,先到达的进程将拥有较高的优先级,并将首先获得CPU时间片运行。
虽然FCFS算法很容易实现,但它并不是最优的。
如果某个长时间运行的进程在队列前面,那么它将一直占用CPU资源,而其他进程会一直等待。
2.最短作业优先(SJF)最短作业优先(SJF)调度算法是根据每个任务占用的CPU时间来进行调度的。
该算法的工作流程如下:当进程到达时,根据其需要运行的时间将其放入队列中。
如果下一个就绪的任务的需要运行时间比当前运行的任务更短,那么该就绪任务将被优先执行。
但是,该算法也有一个问题,就是如果存在镰刀现象,即一些进程长时间等待,无法获得CPU时间片。
3.时间片轮转(RR)时间片轮转(RR)是一种分时系统调度算法。
正如其名字所暗示的那样,RR算法将相等的量分配给每个进程的时间片,每个进程在其时间片用完之前被调用,然后被挂起并在下一次被调用时恢复执行。
5种进程调度算法

5种进程调度算法进程调度算法是操作系统中的重要组成部分,用于确定哪个进程将获得CPU的使用权。
根据不同的算法,进程可以以不同的顺序运行,并根据优先级、运行时间、等待时间等因素进行调度。
本文将介绍和分析五种常见的进程调度算法,包括先来先服务(FCFS)、最短作业优先(SJF)、高响应比优先(HRRN)、轮转调度(RR)和多级反馈队列调度(MFQ)。
1.先来先服务(FCFS)先来先服务是最简单的进程调度算法,按照进程到达的顺序分配CPU片段。
当一个进程执行完成或者遇到I/O请求时,CPU被分配给下一个进程。
该算法简单直观,但可能导致长作业等待时间增加,且无法满足实时性要求。
2.最短作业优先(SJF)最短作业优先调度算法根据预计的执行时间为进程分配CPU时间。
在所有就绪队列中,选择执行时间最短的进程。
该算法可以最大程度地减少平均等待时间,但需要准确预测进程的执行时间,而实际中很难精确估计。
3.高响应比优先(HRRN)高响应比优先是一个动态优先级调度算法,根据进程等待时间的长度为进程分配CPU时间。
等待时间越长,优先级越高。
因此,较长等待的进程将获得更多的处理时间,以保证公平性。
该算法在处理短作业时效果较好,但容易导致无限等待。
4.轮转调度(RR)轮转调度算法按照轮询的方式为每个进程分配固定的时间片,通常为几十毫秒。
当时间片用尽时,进程将被暂停,下一个进程得到时间片。
该方法保证了公平性,但对于长时间的进程,可能会浪费大量的CPU时间在进程切换上。
5.多级反馈队列调度(MFQ)多级反馈队列调度算法将进程划分为多个队列,根据进程特性和优先级的不同,为每个队列分配不同的时间片或优先级。
当进程进入就绪队列时,首先进入最高优先级的队列,若运行时间超过时间片,则移入下一级队列。
该算法综合了前几种算法的优点,可以同时满足长短作业的需求。
通过对这五种进程调度算法的介绍和分析,我们可以看到每种算法都有其优点和缺点。
选择适合的进程调度算法取决于系统的需求和特定场景的要求。
(时间管理)短作业优先调度和时间片轮转调度算法

{if(m==0) p[m].finishtime=p[m].arrivetime+p[m].servicetime; else p[m].finishtime=p[m-1].finishtime+p[m].servicetime; inti=0; for(intn=m+1;n<=N-1;n++) {if(p[n].arrivetime<=p[m].finishtime)//判断内存中每次完成之后有多少到达的进程 i++; } floatmin=p[m+1].servicetime; intnext=m+1;//m+1=n for(intk=m+1;k<m+i;k++)//找出到达后的进程中最小的进程 { if(p[k+1].servicetime<min) {min=p[k+1].servicetime; next=k+1;} } sjftemp; temp=p[m+1]; p[m+1]=p[next]; p[next]=temp; } deal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); Print(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); } voidmain() {intN; printf("------短作业优先调度算法------\n"); printf("inputtheprocess'snumber:\n"); scanf("%d",&N); input(a,N); sjf*b=a; sjf*c=a; sjff(b,N); } 时间片轮转法源代码: #include<stdio.h> #defineM5//物理页数 #defineMyprintfprintf("|---+---+---+---+---+---+---+---+---+---+---+---+---+--+---+---+---+---|\n") typedefstructPCB { intID; intReachTime;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号:课程设计题目进程调度模拟设计——时间片轮转、强占式短进程优先算法学院计算机科学与技术学院专业班级姓名指导教师吴利军2013 年 1 月16 日课程设计任务书学生姓名:指导教师:吴利军工作单位:计算机科学与技术学院题目: 进程调度模拟设计——时间片轮转、强占式短进程优先算法初始条件:1.预备内容:阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解。
2.实践准备:掌握一种计算机高级语言的使用。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.模拟进程调度,能够处理以下的情形:⑴能够选择不同的调度算法(要求中给出的调度算法);⑵能够输入进程的基本信息,如进程名、到达时间和运行时间等;⑶根据选择的调度算法显示进程调度队列;⑷根据选择的调度算法计算平均周转时间和平均带权周转时间。
2.设计报告内容应说明:⑴需求分析;⑵功能设计(数据结构及模块说明);⑶开发平台及源程序的主要部分;⑷测试用例,运行结果与运行情况分析;⑸自我评价与总结:i)你认为你完成的设计哪些地方做得比较好或比较出色;ii)什么地方做得不太好,以后如何改正;iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);iv)完成本题是否有其他方法(如果有,简要说明该方法);时间安排:设计安排一周:周1、周2:完成程序分析及设计。
周2、周3:完成程序调试及测试。
周4、周5:验收、撰写课程设计报告。
(注意事项:严禁抄袭,一旦发现,一律按0分记)指导教师签名:年月日系主任(或责任教师)签名:年月日进程调度模拟设计时间片轮转、强占式短进程优先算法一、需求分析本次课程设计需要通过设计一个模拟进程调度的系统,来实现进程调度过程的模拟,对进程调度的功能以及进程调度的算法有更加深层次的理解。
时间片轮转法的基本思路是每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。
如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。
如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。
调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。
这样让每个进程在就绪队列中的等待时间与享受服务的时间成正比例。
在批处理为主的系统中,如果采用FCFS方式进程作业调度,虽然系统开销小,算法简单,但是,如果估计执行时间很短的作业时在那些长作业的后面到达系统的话,则必须等待长作业执行完成之后才有机会获得执行。
这将造成不必要的等待和不公平,最短作业优先法就是选择那些估计需要执行时间最短的作业投入执行,为它们创建进程和分配资源。
直观上说,采用最短作业优先的调度算法,可使得系统在同一时间内处理的作业个数最多,从而吞吐量也就大于其它调度方式。
按照需求有以下条件:进程PCB(包含进程名、到达时间、预计运行时间等)调度算法(时间片轮转、强占式短进程优先)为完成这两种算法的调度模拟,需要用高级语言编程完成模拟操作,能够处理以下的情形:(1)能够选择不同的调度算法(要求中给出的调度算法)(2)能够输入进程的基本信息,如进程名、到达时间和运行时间等(3)根据选择的调度算法显示进程调度队列(4)根据选择的调度算法计算平均周转时间和平均带权周转时间该设计中的进程调度模拟系统在使用时,用户可以输入各进程信息(包含进程名、到达时间、估计运行时间);输入完毕确认后,可选择两种调度算法中的一种执行,查看结果可得到相应算法的调度序列,每个进程的到达时间、预计运行时间、开始时间、结束时间和周转时间、带权周转时间,以及平均周转时间和平均带权周转时间。
二、功能设计2.1 进程信息的描述和实现此次课程设计中,进程作为基本数据处理单元,需要对进程的基本信息进行相关的描述。
进程的基本信息包括进程进程名、到达的时间、预计的进程运行时间、进程开始运行时间、进程仍需运行的时间、进程完成的时间、进程运行的次数等。
在此,定义一个类来抽象进程。
并在此基础上进行其他操作。
数据结构方案声明如下:class ProcePcb {public :ProcePcb (string name,int sub,int exe,int id) :pro_name(name),time_submit(sub),time_exe (exe),pro_id(id),time_start(0),time_end(0),time_wait(0),pro_ state(READY),time_left(exe),time_turn(0),time_aver(0.0){} //默认构造函数ProcePcb () :pro_name (string(" ")), time_submit(0),time_exe(0),pro_id(-1),time_end(0),time_start(0),time_wait(0),pro_ state(READY),time_left(0),time_turn(0),time_aver(0.0) {} //Getters and Settersstring getPro_name () { return pro_name ;}int getTime_submit () { return time_submit ;}int getTime_exe () { return time_exe ;}int getPro_id () { return pro_id ;}int getTime_start () { return time_start ; }int getTime_wait () { return time_start ; }int getPro_state () { return pro_state ;}int getTime_left () { return time_left ;}int getTime_turn () { return time_turn ;}int getTime_aver () { return time_aver ;}void setTime_start (int start) { time_start = start ; } //设置开始时间void setTime_left (int left) { time_left = left ;}void setTime_end (int end) { time_end = end ; } //设置结束时间void setPro_state (int state) { pro_state = state ;} //设置进程的状态//..打印进程的信息void PrintPcbInfo () ; ////..进程执行模拟bool ProceExe(int) ; //参数为时间单位,返回CPU是否执行完毕//内部逻辑计算包括周转时间以及带权周转时间的计算void CalTimeLogic() ;protected://进程的名字string pro_name ;//提交时间--用十进制封装int time_submit ; //从时间的1开始计时//进程所需的运行时间int time_exe ;//进程ID -- 系统生成int pro_id ;//开始执行的时间int time_start ;//结束的时间int time_end ;//等待的时间int time_wait ;//进程的状态(就绪,执行,完成)int pro_state ;//...上下文封装int time_left ; //还需多少时间单位,初始化为所需的执行时间//周转时间int time_turn ;//带权周转时间float time_aver ;} ;2.2 调度算法的描述和实现进程基本信息所构成的模块作为基本单元,并且相关调度算法的侧重进程基本信息点不同,所以要根据其调度算法的特点来结合基本信息进行对应的设计。
此次课程设计要求的调度算法描述如下:2.2.1 时间片轮转调度算法时间片轮转法的中心思想在于将CPU的运行划分为一个个时间片,然后将这些时间片平均分配给已经准备就绪的进程,在一个时间片内只允许一个进程占用处理器。
如果当前进程运行结束则时间片终止。
这样可以较公平的分配处理器运行时间,使每个进程都可以得到处理。
2.2.2 强占式短进程优先调度算法对强占式短进程优先调度算法而言,其本质特征便是按进程的预计运行时间长短进行排序,先执行短进程。
若内存中运行的进程优先级比就绪队列中的某进程优先级低(即运行的进程预计运行时间比就绪队列中的某进程长),此运行的进程让出内存并进入就绪队列,优先级更高的短进程强占内存资源并运行直到结束或者遇到优先级更高的进程强占为止。
2.2.3 模块说明:class CPUModel //CPU功能模块的封装{public :CPUModel() :pcbnum(0),idCount(0),allturn(0),all aver(0.0) {}//从用户界面获取进程void GetPcb (pcbList &) ;//..CPU开始执行程序void ExeProce(pcbList &) ;//时间片轮转法模拟程序void RRModel(pcbList&) ; //不能改变原队列//抢占式短进程优先void SJF_Grab(sjfList) ;//..获取当前时刻之前的最短进程在队列中的标号int GetTheSP(sjfList ,int) ; //队列为排序之后的队列//..获取下一个进程IDint GetNextId() ;//打印就绪队列中的进程的信息void PrintList(pcbList) ;int getPcbnum () { return pcbnum ; }//...bool IsProComing(int) ; //..当前时刻时是否有新的进程到达//...将就绪队列按提交时间排序void SortTheList(sjfList) ;bool IsOver(sjfList) ; //是否所有的进程都执行完毕private ://进程数量int pcbnum ;int idCount ; //进程ID计数int allturn ; //总周转时间float allaver ; //总带权周转时间} ;下面为较为重要的几个函数:void ProcePcb::PrintPcbInfo () //打印信息void ProcePcb::CalTimeLogic() //内部逻辑计算bool ProcePcb::ProceExe(int time) //进程执行模拟void CPUModel::GetPcb (pcbList & list) //获取用户需要建立的进程,入就绪队列void CPUModel::PrintList(pcbList list) //打印就绪队列中的进程的信息void CPUModel::ExeProce (pcbList & list) 进程调度主过程void CPUModel::RRModel(pcbList & list) //时间片轮转法模拟void CPUModel::SJF_Grab(sjfList list) //强占式短进程优先模拟程序的主程序流程如下:int main (){CPUModel cpu ;cpu.GetPcb(pcblist) ;cpu.PrintList(pcblist) ;cpu.ExeProce(pcblist) ;return 0 ;}三、开发平台Microsoft Windows 7操作系统;Microsoft Visual 2010。