操作系统处理器调度算法C++程序

合集下载

3处理器管理和调度

3处理器管理和调度

评价调度算法的性能指标


面向系统的: 1、资源利用率 2、吞吐率 3、公平性 面向用户的 : 4、响应时间 5、周转时间
1、资源利用率


CPU利用率=CPU有效工作时间/CPU总的 运行时间 CPU总的运行时间=CPU有效工作时间 +CPU空闲等待时间
2、吞吐率

单位时间内处理的作业数 处理的长作业多,吞吐率低 处理的短作业多,吞吐率高
处理器调度的层次

按照层次分为三级: (1)高级调度 (作业调度、长程调度) (2)中级调度 (平衡负载调度、中程调度) (3)低级调度 (进程/线程调度、短程调度)
高级调度

高级调度(作业调度、长程调度、宏观 调度)—— 按一定原则对外存输入井上 的大量后备作业进行选择调入内存,并 为它们创建进程、分配必要的资源,再 将新创建的进程排在就绪队列上,准备 执行。



进程:已提交完毕并选中运行的作业 (程序)的执行实体,也是为完成作业 任务向系统申请和分配资源的基本单位。 作业得到调度后必须为其生成相应的用 户进程才能真正执行完成计算任务 一个作业往往由多个父子关系的进程并 发完成
作业和进程的关系

因此:
作业是任务实体,进程是完成任务的执 行实体;没有作业任务,进程无事可干, 没有进程,作业任务没法完成。 作业概念更多地用在批处理操作系统, 而进程则可以用在各种多道程序设计系 统。
调度机制的功能模块



(1)队列管理程序 根据要求在各等待队列和就绪队列中移动 PCB/TCB指针 (2)上下文切换程序 保存当前运行进程的上下文信息到PCB,恢复 选中进程,使其运行 (3)分派程序 当前进程上下文-分派进程上下文-选中的进 程上下文

处理机调度实验报告

处理机调度实验报告

处理机调度实验报告处理机调度实验报告一、引言处理机调度是计算机操作系统中一个重要的概念,它涉及到如何合理地分配处理机资源以提高系统的运行效率。

本文将针对处理机调度进行实验,探讨不同调度算法对系统性能的影响。

二、实验目的本实验的目的是通过模拟不同的处理机调度算法,比较它们在不同负载下的性能表现,进而分析其优缺点,为实际操作系统的调度算法选择提供参考。

三、实验方法1. 实验环境本实验使用了一台配置较高的计算机作为实验环境,操作系统为Linux,处理器为Intel Core i7,内存为8GB。

2. 实验设置为了模拟不同的负载情况,我们使用了三个不同的测试程序:程序A、程序B和程序C。

程序A是一个计算密集型任务,程序B是一个I/O密集型任务,程序C是一个混合型任务。

3. 实验步骤首先,我们分别运行程序A、程序B和程序C,并记录它们的运行时间。

然后,我们使用不同的调度算法来调度这些任务,并记录它们的运行时间和系统资源利用率。

四、实验结果与分析1. 调度算法1:先来先服务(First-Come, First-Served,FCFS)FCFS算法按照任务到达的先后顺序进行调度,即先到先服务。

实验结果显示,在计算密集型任务下,FCFS算法表现较好,但在I/O密集型任务和混合型任务下,其性能明显下降。

这是因为在FCFS算法中,任务的执行顺序是固定的,无法根据任务的特性进行灵活调度。

2. 调度算法2:最短作业优先(Shortest Job First,SJF)SJF算法根据任务的执行时间进行调度,即执行时间最短的任务先执行。

实验结果显示,在计算密集型任务和混合型任务下,SJF算法表现较好,但在I/O密集型任务下,其性能较差。

这是因为在I/O密集型任务中,任务的执行时间不仅与计算量有关,还与I/O操作的耗时有关,因此SJF算法无法有效地进行调度。

3. 调度算法3:时间片轮转(Round Robin,RR)RR算法将处理机的运行时间划分为若干个时间片,每个任务在一个时间片内执行一定的时间,然后切换到下一个任务。

第三章习题——精选推荐

第三章习题——精选推荐

一、选择题1.操作系统和应用软件在计算机中运行时,正确的是()A. 操作系统调用应用软件功能B. 应用软件调用操作系统功能C. 操作系统运行完毕后再运行应用软件D. 两者互不相关,独立运行2.下面有关windows操作系统中多任务处理的叙述中,正确的是()A. 用户如果只启动一个应用程序工作(如使用word写作),那么该程序就可以自始至终独占CPUB. 由于计算机中有多个处理器,所以操作系统才能同时执行多个任务的处理C. 前台任务和后台任务都能得到CPU的及时响应D. 由于CPU具有多个执行部件,可同时执行多条指令,所以操作系统才能同时进行多个任务的处理3.操作系统具有存储管理功能,当内存不够时,可以自动“扩充”内存,为用户提供一个容量比实际内存大得多的存储空间,所采用的技术是()A. 缓冲区技术B. 虚拟存储器技术C. SPOOLing技术D. 进程调度技术4.下面关于中文windows操作系统中文件管理的一些叙述中,错误的是()A. 文件夹中可以存放文件,也可以存放文件夹,从而构成树状的文件夹结构B. 根目录中只能用来存放文件夹,不能用来存放文件C. 文件和文件夹的名字既可以用英文也可以用中文D. 即时文件的属性是“隐藏”,该文件也能正常打开和关闭5. 在下列关于Windows操作系统中多任务处理的叙述中,正确的是()。

A.用户如果只启动一个应用程序,则该程序就可以自始至终独占CPU资源B.由于CPU中有多个执行部件,可同时执行多条指令,所以才能同时执行多个任务的处理C.从微观上看,前台任务和后台任务能同时得到CPU响应D.Windows操作系统在执行32位应用程序时,采用的是按时间片轮转的调度方法6. 在下列关于程序设计语言及其处理系统的叙述中,错误的是()。

A.汇编语言同机器语言一样,均是面向机器指令系统的,其程序的可移植性差B.汇编程序是指由汇编语言编写的程序C.高级语言在一定程度上与机器无关D.目前大多数应用程序是用高级语言编写、由编译程序处理后生成的可执行程序7. 在下列有关程序设计语言及其处理程序的叙述中,错误的是()。

进程的调度实验报告(3篇)

进程的调度实验报告(3篇)

第1篇一、实验目的通过本次实验,加深对操作系统进程调度原理的理解,掌握先来先服务(FCFS)、时间片轮转(RR)和动态优先级(DP)三种常见调度算法的实现,并能够分析这些算法的优缺点,提高程序设计能力。

二、实验环境- 编程语言:C语言- 操作系统:Linux- 编译器:GCC三、实验内容本实验主要实现以下内容:1. 定义进程控制块(PCB)结构体,包含进程名、到达时间、服务时间、优先级、状态等信息。

2. 实现三种调度算法:FCFS、RR和DP。

3. 创建一个进程队列,用于存储所有进程。

4. 实现调度函数,根据所选算法选择下一个执行的进程。

5. 模拟进程执行过程,打印进程执行状态和就绪队列。

四、实验步骤1. 定义PCB结构体:```ctypedef struct PCB {char processName[10];int arrivalTime;int serviceTime;int priority;int usedTime;int state; // 0: 等待,1: 运行,2: 完成} PCB;```2. 创建进程队列:```cPCB processes[MAX_PROCESSES]; // 假设最多有MAX_PROCESSES个进程int processCount = 0; // 实际进程数量```3. 实现三种调度算法:(1)FCFS调度算法:```cvoid fcfsScheduling() {int i, j;for (i = 0; i < processCount; i++) {processes[i].state = 1; // 设置为运行状态printf("正在运行进程:%s\n", processes[i].processName); processes[i].usedTime++;if (processes[i].usedTime == processes[i].serviceTime) { processes[i].state = 2; // 设置为完成状态printf("进程:%s 完成\n", processes[i].processName); }for (j = i + 1; j < processCount; j++) {processes[j].arrivalTime--;}}}```(2)RR调度算法:```cvoid rrScheduling() {int i, j, quantum = 1; // 时间片for (i = 0; i < processCount; i++) {processes[i].state = 1; // 设置为运行状态printf("正在运行进程:%s\n", processes[i].processName); processes[i].usedTime++;processes[i].serviceTime--;if (processes[i].serviceTime <= 0) {processes[i].state = 2; // 设置为完成状态printf("进程:%s 完成\n", processes[i].processName); } else {processes[i].arrivalTime++;}for (j = i + 1; j < processCount; j++) {processes[j].arrivalTime--;}}}```(3)DP调度算法:```cvoid dpScheduling() {int i, j, minPriority = MAX_PRIORITY;int minIndex = -1;for (i = 0; i < processCount; i++) {if (processes[i].arrivalTime <= 0 && processes[i].priority < minPriority) {minPriority = processes[i].priority;minIndex = i;}}if (minIndex != -1) {processes[minIndex].state = 1; // 设置为运行状态printf("正在运行进程:%s\n", processes[minIndex].processName);processes[minIndex].usedTime++;processes[minIndex].priority--;processes[minIndex].serviceTime--;if (processes[minIndex].serviceTime <= 0) {processes[minIndex].state = 2; // 设置为完成状态printf("进程:%s 完成\n", processes[minIndex].processName); }}}```4. 模拟进程执行过程:```cvoid simulateProcess() {printf("请选择调度算法(1:FCFS,2:RR,3:DP):");int choice;scanf("%d", &choice);switch (choice) {case 1:fcfsScheduling();break;case 2:rrScheduling();break;case 3:dpScheduling();break;default:printf("无效的调度算法选择。

计算机操作系统题库及答案

计算机操作系统题库及答案

计算机操作系统题库及答案操作系统的一些复习题,希望能够帮助大家。

1.UNI某系统中,进程调度采用的技术是(D)。

A、时间片轮转B、先来先服务C、静态优先数D、动态优先数2.UNI某系统中,文件存贮器的管理采用的是:(C)。

A、位图法B、空闲块表法C、成组连接法D、单块连接法3.处理器执行的指令被分成两类,其中有一类称为特权指令,它只允许(C)使用。

A、操作员B、联机用户C、操作系统D、目标程序4.当用户程序执行访管指令时,中断装置将使中央处理器(B)工作。

A、维持在目态B、从目态转换到管态C、维持在管态D、从管态转换到目态5.进程所请求的一次打印输出结束后,将使进程状态从(D)A、运行态变为就绪态B、运行态变为等待态C、就绪态变为运行态D、等待态变为就绪态6.采用动态重定位方式装入的作业,在执行中允许(C)将其移动。

A、用户有条件地B、用户无条件地C、操作系统有条件地D、操作系统无条件地操作系统的一些复习题,希望能够帮助大家。

7.分页式存储管理中,地址转换工作是由(A)完成的。

A、硬件B、地址转换程序C、用户程序D、装入程序8.如果允许不同用户的文件可以具有相同的文件名,通常采用(D)来保证按名存取的安全。

A、重名翻译机构B、建立索引表C、建立指针D、多级目录结构9.对记录式文件,操作系统为用户存取文件信息的最小单位是(C)。

A、字符B、数据项C、记录D、文件10.为了提高设备分配的灵活性,用户申请设备时应指定(A)号。

A、设备类相对B、设备类绝对C、相对D、绝对11.通常把通道程序的执行情况记录在(D)中。

A、PSWB、PCBC、CAWD、CSW12.作业调度是从输入井中处于(B)状态的作业中选取作业调入主存运行。

A、运行B、收容C、输入D、就绪13.一作业进入内存后,则所属该作业的进程初始时处于(C)状态。

A、运行B、等待C、就绪D、收容操作系统的一些复习题,希望能够帮助大家。

14.共享变量是指(D)访问的变量。

操作系统进程调度算法模拟实验

操作系统进程调度算法模拟实验

操作系统进程调度算法模拟实验进程调度是操作系统中一个重要的功能,它决定了哪些进程能够获得处理器资源以及如何按照一定的策略来分配这些资源。

为了更好地理解进程调度算法的工作原理,我们可以进行一个模拟实验来观察不同算法的表现效果。

实验设想:我们设想有5个进程要运行在一个单核处理器上,每个进程有不同的运行时间和优先级。

进程信息如下:进程A:运行时间10ms,优先级4进程B:运行时间8ms,优先级3进程C:运行时间6ms,优先级2进程D:运行时间4ms,优先级1进程E:运行时间2ms,优先级5实验步骤:1.先来先服务(FCFS)调度算法实验:将上述进程按照先来先服务的原则排序,运行对应的模拟程序,观察每个进程的运行时间、完成时间和等待时间。

2.最短作业优先(SJF)调度算法实验:将上述进程按照运行时间的大小排序,运行对应的模拟程序,观察每个进程的运行时间、完成时间和等待时间。

3.优先级调度算法实验:将上述进程按照优先级的大小排序,运行对应的模拟程序,观察每个进程的运行时间、完成时间和等待时间。

4.时间片轮转(RR)调度算法实验:设置一个时间片大小,将上述进程按照先来先服务的原则排序,运行对应的模拟程序,观察每个进程的运行时间、完成时间和等待时间。

实验结果:通过模拟实验,我们可以得到每个进程的运行时间、完成时间和等待时间。

对于FCFS算法,进程的运行顺序是按照先来先服务的原则,因此进程A首先得到处理器资源并完成运行,其它进程依次按照到达顺序得到资源。

因此,对于进程A、B、C、D、E,它们的完成时间分别是10ms、18ms、24ms、28ms和30ms,等待时间分别是0ms、10ms、18ms、24ms和28ms。

对于SJF算法,进程的运行顺序是按照运行时间的大小,即短作业优先。

因此,进程E首先得到处理器资源并完成运行,其它进程依次按照运行时间的大小得到资源。

对于进程E、D、C、B、A,它们的完成时间分别是2ms、6ms、12ms、20ms和30ms,等待时间分别是0ms、2ms、6ms、12ms和20ms。

嵌入式操作系统_第3章 处理机调度

嵌入式操作系统_第3章 处理机调度

短作业优先调度算法的特点
算法调度性能较好,
例如上例中,
先来先服务
短作业优先
平均周转时间
2.8
2.45
平均带权周转时间
5.25
3.85
但对长作业不利,未考虑作业的紧迫程度, 运行时间为估计。
调度算法
先来先服务调度算法 短作业(进程)优先调度算法 时间片轮转调度算法 优先权调度算法 最高响应比优先调度算法 多级队列调度算法
抢占方式
抢占方式:又称剥夺方式、可剥夺方式。这 种调度方式是指允许调度程序根据某种原则 去停止正在执行的进程,将已分配给该进程 的处理机重新分配给其他进程。
高级调度主要用于多道批处理系统中,在分 时和实时系统中不设高级调度。
2.中级调度
中级调度又称内存调度,其功能是将内存中 暂时不用的信息移到外存,以腾出空间给内 存中的进程使用,或将需要的信息从外存读 入内存。
引入中程调度的目的是提高内存利用率和系 统吞吐量。
中级调度的运行频率介于两者之间。
事 件 出 现
时间片完 就绪 队列 阻塞队列
进程调度
进程完成 CP U
等待事件
3.2.2 选择调度算法的准则
由于操作系统的类型及目标不同,因此选择 的调度算法也不同。
选择调度算法有以下准则:
面向系统的准则 面向用户的准则
面向用户的准则
周转时间短:指从作业提交到作业完成的时 间间隔。
微机不太重要。
周转时间
作业的周转时间是指从作业提交到作业完 成之间的时间间隔。
平均周转时间是指多个作业的周转时间的 平均值。n个作业的平均周转时间:
T =(T1+T2+ … +Tn)/n(Ti为作业i 的周转时间)

第4章 计算机操作系统答案 处理机调度

第4章 计算机操作系统答案 处理机调度

第四章处理机调度一、选择题:1、()调度主要涉及内存管理与扩充。

A、作业B、交换C、进程D、线程2、()调度在作业执行完毕时还负责回收系统资源。

A、作业B、交换C、进程D、线程3、以下哪种调度又称为宏观调度或高级调度()。

A、作业B、交换C、进程D、线程4、()调度又称为微观或低级调度。

A、作业B、交换C、进程D、线程5、下面哪中调度一般不存在于分时系统和实时系统中()。

A、作业B、交换C、进程D、线程6、()调度的主要任务是按照某种策略和方法选取一个处于就绪状态的进程占有处理机。

A、作业B、交换C、进程D、线程7、当作业运行完毕,但它所占有的资源尚未全部被系统回收时,该作业处于()状态。

A、提交B、收容C、执行D、完成8、一个作业在其处于从输入设备进入外部存储设备的过程称为()状态。

A、提交B、收容C、执行D、完成9、当一个作业的全部信息已全部被输入进输入井但还未被调度去执行,此时该作业处于()状态。

A、提交B、收容C、执行D、完成10、()状态也称为后备状态。

A、提交B、收容C、执行D、完成11、一种既有利于短小作业又兼顾到长作业的作业调度算法是()A、先来先服务 B 、轮转C、最高响应比优先D、均衡调度12、作业调度程序是从处于()状态的作业中选取一个作业并把它装入主存。

A、输入B、收容C、执行D、完成13、下列选项中哪一个不属于作业调度算法的评价因素()A、单位时间内运行尽可能多的作业B、使各种I/O设备得以充分利用C 、对所有的作业都是公平合理的 D、使处理机尽可能保持“空闲”。

14、下列选项中哪一项不属于JCB的主要内容()A 作业名B 作业类型C 资源要求D 作业完成时间15、作业调度程序为选中作业建立进程并为这些进程分配的系统资源不包括下列哪一项()A、内存B、外存C、外设D、虚拟内存16、在操作系统中,JCB是指()。

A、作业控制块B、进程控制块C、文件控制块 D 程序控制块17、作业调度算法包括下列选项中的那些种()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、先来先服务算法1.程序简介先来先服务算法按照作业进入系统后备作业队列的先后次序挑选作业,先进入系统的作业将优先被挑选进入主存,创建用户进程,分配所需资源,然后,移入就绪队列.这是一种非剥夺式调度算法,易于实现,但效率不高.只顾及作业的等候时间,未考虑作业要求服务时间的长短,不利于短作业而优待长作业,不利于I/O繁忙型作业而有利于CPU繁忙型作业.有时为了等待场作业执行结束,短作业的周转时间和带全周转时间将变得很大,从而若干作业的平均周转时间和平均带权周转时间也变得很大。

2.分析1.先定义一个数组代表各作业运行的时间,再定义一个数组代表各作业到达系统的时间,注意到达系统的时间以第一个作业为0基础(注意:若各程序都同时到达系统,则到达系统时间都为0)。

2.输入作业数。

3.然后运用循环结构累积作业周转时间和带权周转时间。

4.最后,作业周转时间和带权周转时间分别除以作业数即可得到平均作业周转时间和平均带权周转时间。

3.详细设计源程序如下:#include<iostream>#include<cmath>using namespace std;int main(){int n,a[100],b[100];double s[100],m[100],T=0,W=0;cout<<"请输入作业数:"<<endl;cin>>n;cout<<"请分别输入各作业到达系统的时间:"<<endl;for(int i=0;i<n;i++){cin>>b[i];}cout<<"请分别输入各作业所运行的时间:"<<endl;for(i=0;i<n;i++){cin>>a[i];s[0]=0;s[i+1]=s[i]+a[i];m[i+1]=(s[i+1]-b[i])/a[i];T=T+s[i+1]-b[i];W=W+m[i+1];}cout<<"平均周转时间为:"<<T/n<<endl;cout<<"平均带权周转时间为:"<<W/n<<endl;return 0;}4.运行与测试1.运行程序,输入作业数,如A.1所示。

A1 启动界面2.输入各作业到达系统的时间,如A.2所示。

A2 输入各作业到达系统的时间3.输入各作业所运行的时间,如A.3所示。

A3 输入各作业运行的时间二、最短作业优先算法1. 程序简介最短作业优先算法以进入系统的作业所要求的CPU运行时间的长短为标准,总是选取预计计算时间最短的作业投入运行。

这是一种非剥夺式调度算法,能克服FCFS算法偏爱长作业的缺点,易于实现,但执行效率也不高。

2. 分析1. 分两种情况来介绍这种算法,一是各作业到达系统的时间都相同,二是各作业到达系统的时间不同,且以第一个作业到达系统的时间为0作基础。

2. 到达系统时间都相同的情况只要累积CPU运行的时间,最后加一个排序函数即可。

3. 到达系统时间不相同的情况则是要在前面FCFS的基础上加一个排序函数即可。

4. 注意本程序认为第一个作业完成后,其它作业都已经到达系统了。

3. 详细设计源程序如下://SJF(到达系统时间都相同的情况)#include<iostream>using namespace std;void B(float a[],int size){float t;for(int i=1;i<size;i++){for(int j=0;j<size-1;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}}int main(void){float n,a[100];double s[100],m[100],T=0,W=0;cout<<"请输入作业数:"<<endl;cin>>n;cout<<"请分别输入各作业所运行的时间:"<<endl;for(int i=0;i<n;i++)cin>>a[i];B(a,n);cout<<"作业调度顺序为:"<<endl;for(i=0;i<n;i++){cout<<a[i]<<" ";s[0]=0;s[i+1]=s[i]+a[i];m[i+1]=s[i+1]/a[i];T=T+s[i+1];W=W+m[i+1];}cout<<endl;cout<<"平均周转时间为:"<<T/n<<endl;cout<<"平均带权周转时间为:"<<W/n<<endl;return 0;}//SJF(到达系统时间不相同的情况)#include<iostream>using namespace std;void B(float a[],int size){float t;for(int i=2;i<size;i++){for(int j=1;j<size-1;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}}int main(void){float n,a[100],b[100];double s[100],m[100],T=0,W=0;cout<<"请输入作业数:"<<endl;cin>>n;cout<<"请分别输入各作业所运行的时间:"<<endl;for(int i=0;i<n;i++)cin>>a[i];B(a,n);cout<<"作业调度顺序为:"<<endl;for(i=0;i<n;i++){cout<<a[i]<<" ";}cout<<endl;cout<<"请分别输入各作业到达系统的时间:"<<endl;for(i=0;i<n;i++){cin>>b[i];}for(i=0;i<n;i++){s[0]=0;s[i+1]=s[i]+a[i];m[i+1]=(s[i+1]-b[i])/a[i];T=T+s[i+1]-b[i];W=W+m[i+1];}cout<<"平均周转时间为:"<<T/n<<endl;cout<<"平均带权周转时间为:"<<W/n<<endl;return 0;}4.运行与测试//SJF(到达系统时间都相同的情况)1. 运行程序,输入作业数,如A.1所示。

A1 启动界面2. 输入各作业所运行的时间,如A.2所示。

A2 输入各作业所运行的时间//SJF(到达系统时间不相同的情况)1. 运行程序,输入作业数,如A.1所示。

A1 启动界面2. 输入各作业所运行的时间,如A.2所示。

A2 输入各作业所运行的时间3. 输入各作业到达系统的时间,如A.3所示。

A3 输入各作业到达系统的时间三、优先级调度算法1.程序简介优先级调度算法根据确定的优先级来选取进程/线程,总是选择就绪队列中的优先级最高者投入运行。

本实验介绍的是非剥夺式优先级调度算法,如果在就绪队列中出现优先级更高的就让当前进程/线程继续运行,直到它结束或出现等待事件而主动让出处理器,再调度另一个优先级高的进程/线程运行。

2. 分析1. 先定义一个二维数组a[i][0]代表各作业的优先级,a[i][1]代表各作业运行的时间。

2. 输入作业数。

3. 根据排序函数得出作业调度顺序。

4. 最后,累积得作业周转时间和带权周转时间后分别除以作业数即可得到平均作业周转时间和平均带权周转时间。

3. 详细设计源程序如下:#include<iostream>using namespace std;void B(float a[][2],int size){float t,p;for(int i=0;i<size;i++){for(int j=0;j<size-1;j++)if(a[j][0]>a[j+1][0]){t=a[j][0];a[j][0]=a[j+1][0];a[j+1][0]=t;p=a[j][1];a[j][1]=a[j+1][1];a[j+1][1]=p;}}}int main(void){float n,a[100][2];double s[100][2],m[100][2],T=0,W=0;cout<<"请输入作业数:"<<endl;cin>>n;cout<<"请分别输入各作业优先级和所运行的时间:"<<endl;for(int i=0;i<n;i++){cin>>a[i][0]>>a[i][1];}B(a,n);cout<<"作业调度顺序为:"<<endl;for(i=0;i<n;i++){cout<<a[i][0]<<a[i][1]<<" ";s[0][1]=0;s[i+1][1]=s[i][1]+a[i][1];m[i+1][1]=s[i+1][1]/a[i][1];T=T+s[i+1][1];W=W+m[i+1][1];}cout<<endl;cout<<"平均周转时间为:"<<T/n<<endl;cout<<"平均带权周转时间为:"<<W/n<<endl;return 0;}4. 运行与测试1. 运行程序,输入作业数,如A.1所示。

A1 启动界面2.输入各作业优先级和所运行的时间,如A.2所示。

相关文档
最新文档