实验五:页面调度算法模拟实验报告
页面调度算法模拟实验中遇到的问题
页面调度算法模拟实验中遇到的问题在页面调度算法模拟实验中,可能会遇到以下一些问题:
1、算法选择问题:不同的页面调度算法有不同的优势和适用场景,如FIFO、LRU、OPT等。
在实验中,选择合适的算法是一个挑战。
可能需要考虑内存大小、访问模式、页面访问频率等因素,以确定使用哪种算法进行模拟实验。
2、数据集选择问题:在模拟实验中,需要使用真实或合成的数据集来模拟页面访问的情况。
选择合适的数据集是一个关键问题,需要考虑数据集的规模、访问模式的真实性以及数据集的可用性等因素。
3、实验结果的评估问题:页面调度算法的性能可以通过不同的指标进行评估,如缺页率、命中率、平均访问时间等。
在实验中,选择合适的评估指标以及评估方法是一个重要问题。
4、实验参数的设置问题:在模拟实验中,还需要考虑一些参数的设置,如内存大小、页面大小、进程数量等。
这些参数的选择可能会对实验结果产生影响,需要合理设置以保证实验的可靠性和有效性。
5、实验结果的可视化问题:实验结果的可视化是一个重要的环节,可以通过图表、曲线等形式展示实验结果,以便于对比不同算法的性能表现。
在实验中,实现合适的可视化方式可能会遇到一些技术上的挑战。
这些问题都需要在实验前进行充分的准备和规划,以确保实验的
可靠性和有效性。
同时,也需要注意实验过程中可能遇到的其他问题,并及时进行调整和解决。
操作系统-实验五-进程调度与算法模拟-实验报告
计算机与信息工程学院实验报告一、实验内容设计一个按优先数调度算法实现处理器调度的程序。
(1) 假定系统有五个进程,每一个进程用一个进程控制块PCB来代表,进程控制块的格式为:其中,进程名——作为进程的标识,假设五个进程的进程名分别为P1,P2,P3,P4,P5。
指针——按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“0”。
要求运行时间——假设进程需要运行的单位时间数。
优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。
状态——可假设有两种状态,“就绪8080”状态和“结束”状态。
五个进程的初始状态都为“就绪”,用“R”表示,当一个进程运行结束后,它的状态为“结束”,用“E”表示。
(2) 在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数”和“要求运行时间”。
本实验由于为了检查的方便,优先数和运行时间采用下表中的数值。
(3) 为了调度方便,把五个进程按给定的优先数从大到小连成队列。
用一单元指出队首进程,用指针指出队列的连接情况。
例:队首标志K1K2K3K4K5(4) 处理器调度总是选队首进程运行。
采用动态改变优先数的办法,进程每运行一次优先数就减“1”。
由于本实验是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行:优先数-1要求运行时间-1来模拟进程的一次运行。
提醒注意的是:在实际的系统中,当一个进程被选中运行时,必须恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行结束。
在这里省去了这些工作。
(5) 进程运行一次后,若要求运行时间 0,则再将它加入队列(按优先数大小插入,且置队首标志);若要求运行时间=0,则把它的状态修改成“结束”(E),且退出队列。
(6) 若“就绪”状态的进程队列不为空,则重复上面(4)和(5)的步骤,直到所有进程都成为“结束”状态。
(7) 在所设计的程序中应有显示或打印语句,能显示或打印每次被选中进程的进程名以及运行一次后进程队列的变化。
操作系统进程调度算法模拟实验报告
操作系统进程调度算法模拟实验报告一、实验目的本实验旨在深入理解操作系统的进程调度算法,并通过模拟实验来探究不同调度算法之间的差异和优劣。
二、实验原理操作系统的进程调度算法是决定进程执行顺序的重要依据。
常见的调度算法有先来先服务(FCFS)、最短作业优先(SJF)、优先级调度(Priority Scheduling)、轮转法(Round Robin)和多级反馈队列调度(Multilevel Feedback Queue Scheduling)等。
1.先来先服务(FCFS)算法:按照进程到达的先后顺序进行调度,被调度的进程一直执行直到结束或主动阻塞。
2.最短作业优先(SJF)算法:按照进程需要的执行时间的短长程度进行调度,执行时间越短的进程越优先被调度。
3. 优先级调度(Priority Scheduling)算法:为每个进程分配一个优先级,按照优先级从高到低进行调度。
4. 轮转法(Round Robin)算法:将进程按照到达顺序排列成一个队列,每个进程被分配一个时间片(时间量度),当时间片结束时,将进程从队列头取出放置到队列尾。
5.多级反馈队列调度算法:将进程队列分为多个优先级队列,每个队列时间片大小依次递减。
当一个队列中的进程全部执行完毕或者发生阻塞时,将其转移到下一个优先级队列。
三、实验步骤与结果1.实验环境:- 操作系统:Windows 10- 编译器:gcc2.实验过程:(1)首先,设计一组测试数据,包括进程到达时间、需要的执行时间和优先级等参数。
(2)根据不同的调度算法编写相应的调度函数,实现对测试数据的调度操作。
(3)通过模拟实验,观察不同调度算法之间的区别,比较平均等待时间、完成时间和响应时间的差异。
(4)将实验过程和结果进行记录整理,撰写实验报告。
3.实验结果:这里列举了一组测试数据和不同调度算法的结果,以便对比分析:进程,到达时间,执行时间,优先------,----------,----------,-------P1,0,10,P2,1,1,P3,2,2,P4,3,1,P5,4,5,a.先来先服务(FCFS)算法:平均等待时间:3.8完成时间:15b.最短作业优先(SJF)算法:平均等待时间:1.6完成时间:11c. 优先级调度(Priority Scheduling)算法:平均等待时间:2.8完成时间:14d. 轮转法(Round Robin)算法:时间片大小:2平均等待时间:4.8完成时间:17e.多级反馈队列调度算法:第一级队列时间片大小:2第二级队列时间片大小:4平均等待时间:3.8完成时间:17四、实验总结通过上述的实验结果可以得出以下结论:1.在上述测试数据中,最短作业优先(SJF)算法的平均等待时间最短,说明该算法在短作业的情况下能够有效地减少等待时间。
操作系统实验5 进程调度模拟程序设计
一、实验内容进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)或者时间片轮转法。
每个进程有一个进程控制块(PCB)表示。
进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。
进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。
进程的到达时间为进程输入的时间。
进程的运行时间以时间片为单位进行计算。
等待I/O的时间以时间片为单位进行计算,可随机产生,也可事先指定。
每个进程的状态可以是就绪R(Ready)、运行R(Run)、等待(Wait)或完成F(Finish)四种状态之一。
就绪进程获得CPU后都只能运行一个时间片。
用已占用CPU时间加1来表示。
如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。
每进行一次调度程序都打印一次运行进程、就绪队列、等待进程以及各个进程的PCB,以便进行检查。
重复以上过程,直到所要进程都完成为止。
用C或C++二、实验目的与要求在采用多道程序设计的设计中的系统中,往往有若干个进程同时处于就绪状态。
当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器本实验模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度工作。
三、实验环境Visual+C++6.0四、实验步骤1、实验准备知识处理器调度总是选对首进程运行。
采用动态改变优先数的办法,进程每运行一次优先数就减“1”。
由于本次实验是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行:优先数—1要求运行时间—1来模拟进程的一次运行。
进程运行一次后,若要求运行时间≠0,则再将它加入队列(按优先数大小插入,且置队首标志);若要求运行时间≠0,则把它的状态修改成“结束”,且结束队列。
操作系统实验报告——调度算法
操作系统实验报告——调度算法1. 实验目的本实验旨在探究操作系统中常用的调度算法,通过编写代码模拟不同的调度算法,了解它们的特点和应用场景。
2. 实验环境本次实验使用的操作系统环境为Linux,并采用C语言进行编码。
3. 实验内容3.1 调度算法1:先来先服务(FCFS)FCFS调度算法是一种简单且常见的调度算法。
该算法按照进程到达的先后顺序进行调度。
在本实验中,我们使用C语言编写代码模拟FCFS算法的调度过程,并记录每个进程的等待时间、周转时间和响应时间。
3.2 调度算法2:最短作业优先(SJF)SJF调度算法是一种非抢占式的调度算法,根据进程的执行时间来选择下一个要执行的进程。
在本实验中,我们使用C语言编写代码模拟SJF算法的调度过程,并计算每个进程的等待时间、周转时间和响应时间。
3.3 调度算法3:轮转调度(Round Robin)Round Robin调度算法是一种经典的时间片轮转算法,每个进程在给定的时间片内依次执行一定数量的时间。
如果进程的执行时间超过时间片,进程将被暂时挂起,等待下一次轮转。
在本实验中,我们使用C语言编写代码模拟Round Robin算法的调度过程,并计算每个进程的等待时间、周转时间和响应时间。
4. 实验结果分析通过对不同调度算法的模拟实验结果进行分析,可以得出以下结论:- FCFS算法适用于任务到达的先后顺序不重要的场景,但对于执行时间较长的进程可能会导致下一个进程需要等待较久。
- SJF算法适用于任务的执行时间差异较大的场景,能够提高整体执行效率。
- Round Robin算法适用于时间片相对较小的情况,能够公平地为每个进程提供执行时间。
5. 实验总结本次实验通过模拟不同调度算法的实际执行过程,深入了解了各种调度算法的原理、特点和适用场景。
通过对实验结果的分析,我们可以更好地选择合适的调度算法来满足实际应用的需求。
在后续的学习中,我们将进一步探索更多操作系统相关的实验和算法。
实验五 Linux页面调度
可见,最高命中率已经由原来的0.9000增加到0.9500。
经过多组实验,我发现当分配页面增加时,最高命中率下降;反之,最高命中率增加。但遇到的问题是始终未找到合适的分配方式使命中率可以达到1,希望老师能给出指导意见。
3)五种算法中,最少访问页面算法较其他四种命中率较低;
4)随着页面序号的上升,五种算法的命中率趋于一致;
5)我认为由于此次实验用到了随机函数,所以要得到更科学合理的结果,应进行多次实验取平均值。
4、关于思考题:要求修改程序,分析各算法在用户内存容量达到多大时命中率为1。经过思考,我发现需要对页数进行修改,从而达到修改页地址流长度的目的,进而改变各算法命中率:
实验报告
姓名
学号
专业班级
课程名称
操作系统实验
实验日期
成绩
指导教师
批改日期
实验名称
实验五Linux页面调度
一、实验目的:
1、理解虚拟存储管理技术的管理原理和特点
2、掌握基本的内存管理知识,能够实时查看内存、回收内存3、掌握请求也是存储管理页面调度算法二、实验要求:
Time参数为页面在内存中的时间;
经过对代码中各种页面置换算法的分析,我得到如下流程图:
三、实验内容与步骤:
1、用free命令健康内存使用情况
2、用vmstat命令件事虚拟内存的使用情况
3、经过对mm_test.c的编译与运行后,我对产生的结果进行了分析,表格如下:
经分析我得出一下几点结论:
1)五种算法在页面序号升高的情况下,命中率也基本呈上升趋势;
2)五种算法中,最佳淘汰算法较其他四种有较高的命中率;
调度的调度算法实验报告
调度的调度算法实验报告调度的调度算法实验报告引言:调度是计算机科学中一个重要的概念,它涉及到任务分配、资源管理和优化等方面。
调度算法则是实现调度的关键,它决定了任务的执行顺序和资源的分配方式。
在本次实验中,我们将探讨几种常见的调度算法,并通过实验对其性能进行评估和比较。
一、先来先服务算法(FCFS)先来先服务算法是最简单的调度算法之一,它按照任务到达的先后顺序进行处理。
实验中,我们模拟了一个任务队列,每个任务有不同的执行时间。
通过实验结果可以看出,FCFS算法的优点是简单易懂,但当任务的执行时间差异较大时,会导致平均等待时间较长。
二、最短作业优先算法(SJF)最短作业优先算法是一种非抢占式调度算法,它根据任务的执行时间来进行排序。
实验中,我们将任务按照执行时间从短到长进行排序,并进行调度。
实验结果显示,SJF算法的优点是能够最大程度地减少平均等待时间,但当任务的执行时间无法预测时,该算法可能会导致长任务等待时间过长的问题。
三、时间片轮转算法(RR)时间片轮转算法是一种抢占式调度算法,它将任务分为多个时间片,并按照顺序进行调度。
实验中,我们设置了每个时间片的长度,并将任务按照到达顺序进行调度。
实验结果表明,RR算法的优点是能够公平地分配资源,但当任务的执行时间超过一个时间片时,会导致上下文切换频繁,影响系统的性能。
四、最高响应比优先算法(HRRN)最高响应比优先算法是一种动态调度算法,它根据任务的等待时间和执行时间来计算响应比,并选择响应比最高的任务进行调度。
实验中,我们根据任务的到达时间、执行时间和等待时间计算响应比,并进行调度。
实验结果显示,HRRN算法能够在一定程度上平衡长任务和短任务的等待时间,但当任务的执行时间过长时,会导致其他任务的等待时间过长。
五、多级反馈队列算法(MFQ)多级反馈队列算法是一种综合性的调度算法,它将任务分为多个队列,并根据任务的执行情况进行调度。
实验中,我们设置了多个队列,并根据任务的执行时间和等待时间进行调度。
页面调度实验报告
一、实验内容(1)页面调度算法目前有许多页面调度算法,本实验主要涉及先进先出调度算法、最近最少调度算法、最近最不常用调度算法。
本实验使用页面调度算法时作如下假设,进程在创建时由操作系统为之分配一个固定数目物理页,执行过程中物理页的数目和位置不会改变。
也即进程进行页面调度时只能在分到的几个物理页中进行。
下面对各调度算法的思想作一介绍。
<1> 先进先出调度算法先进先出调度算法根据页面进入内存的时间先后选择淘汰页面,先进入内存的页面先淘汰,后进入内存的后淘汰。
本算法实现时需要将页面按进入内存的时间先后组成一个队列,每次调度队首页面予以淘汰。
<2>最近最少调度算法先进先出调度算法没有考虑页面的使用情况,大多数情况下性能不佳。
根据程序执行的局部性特点,程序一旦访问了某些代码和数据,则在一段时间内会经常访问他们,因此最近最少用调度在选择淘汰页面时会考虑页面最近的使用,总是选择在最近一段时间以来最少使用的页面予以淘汰。
算法实现时需要为每个页面设置数据结构记录页面自上次访问以来所经历的时间。
<3>最近最不常用调度算法由于程序设计中经常使用循环结构,根据程序执行的局部性特点,可以设想在一段时间内经常被访问的代码和数据在将来也会经常被访问,显然这样的页面不应该被淘汰。
最近最不常用调度算法总是根据一段时间内页面的访问次数来选择淘汰页面,每次淘汰访问次数最少的页面。
算法实现时需要为每个页面设置计数器,记录访问次数。
计数器由硬件或操作系统自动定时清零。
(2)缺页调度次数和缺页中断率、缺页置换率计算缺页中断次数是缺页时发出缺页中断的次数。
缺页中断率=缺页中断次数/总的页面引用次数*100%缺页调度次数是调入新页时需要进行页面调度的次数缺页置换率=缺页调度次数/总的页面引用次数*100%二、总体设计1、算法的原理说明FIFO 先进先出调度算法:当页面框满时,最早进来的页面调出;LRU 最近最少使用调度算法:当页面框满时,最近最少使用的页面调出LFU 最近最不常用调度算法:当页面框满时,最近最不常用的页面调出SECOND 二次机会调度算法:当页面框满时,页面调入时R=0,当被访问时R = 1。
页面调度实验报告
南通大学计算机科学与技术学院操作系统页面调度实验报告班级___________计091___________姓名__________ _ _______ _学号_____________ _指导教师戴树贵一、实验目的1.进一步理解页面调度算法的相关内容2.明白页面调度的主要内容3.通过编程掌握页面调度的主要算法二、实验要求页式虚拟存储器实现的一个难点是设计页面调度(置换)算法,即将新页面调入内存时,如果内存中所有的物理页都已经分配出去,就要按某种策略来废弃某个页面,将其所占据的物理页释放出来,供新页面使用。
本实验的目的是通过编程实现几种常见的页面调度(置换)算法,加深读者对页面思想的理解。
三、实验环境Microsoft Visual Basic 6.0 中文版四、实验内容1 先入先出法(FIFO)最简单的页面置换算法是先入先出(FIFO)法。
这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。
理由是:最早调入内存的页,其不再被使用的可能性比刚调入内存的可能性大。
建立一个FIFO队列,收容所有在内存中的页。
被置换页面总是在队列头上进行。
当一个页面被放入内存时,就把它插在队尾上。
这种算法只是在按线性顺序访问地址空间时才是理想的,否则效率不高。
因为那些常被访问的页,往往在主存中也停留得最久,结果它们因变“老”而不得不被置换出去。
FIFO的另一个缺点是,它有一种异常现象,即在增加存储块的情况下,反而使缺页中断率增加了。
当然,导致这种异常现象的页面走向实际上是很少见的。
2 最优置换算法(OPT)最优置换(Optimal Replacement)是在理论上提出的一种算法。
其实质是:当调入新的一页而必须预先置换某个老页时,所选择的老页应是将来不再被使用,或者是在最远的将来才被访问。
采用这种页面置换算法,保证有最少的缺页率。
但是最优页面置换算法的实现是困难的,因为它需要人们预先就知道一个进程整个运行过程中页面走向的全部情况。
调度算法的实验报告
一、实验目的1. 理解操作系统调度算法的基本原理和概念。
2. 掌握几种常见调度算法的原理和实现方法。
3. 分析不同调度算法的性能特点,为实际应用提供参考。
二、实验内容本次实验主要涉及以下几种调度算法:先来先服务(FCFS)、最短作业优先(SJF)、优先级调度(Priority Scheduling)、最高响应比优先(HRRN)和时间片轮转(Round Robin)。
1. 先来先服务(FCFS)调度算法FCFS调度算法按照进程到达就绪队列的顺序进行调度,先到达的进程先执行。
该算法简单易实现,但可能导致长作业等待时间过长,从而降低系统吞吐量。
2. 最短作业优先(SJF)调度算法SJF调度算法优先选择执行时间最短的进程进行调度。
该算法可以最大程度地减少平均等待时间和平均周转时间,但可能导致长作业等待时间过长。
3. 优先级调度(Priority Scheduling)算法优先级调度算法为每个进程设置一个优先级,优先选择优先级高的进程进行调度。
该算法可以满足高优先级作业的需求,但可能导致低优先级作业长时间等待。
4. 最高响应比优先(HRRN)调度算法HRRN调度算法为每个进程设置一个响应比,优先选择响应比高的进程进行调度。
响应比是作业的等待时间与作业所需时间的比值。
该算法综合考虑了作业的等待时间和所需时间,是一种较为公平的调度算法。
5. 时间片轮转(Round Robin)调度算法时间片轮转调度算法将CPU时间划分为固定的时间片,按照进程到达就绪队列的顺序,每次只允许一个进程运行一个时间片。
如果进程在一个时间片内无法完成,则将其放入就绪队列的末尾,等待下一次调度。
该算法可以平衡各个进程的执行时间,但可能导致进程响应时间较长。
三、实验步骤1. 编写一个进程调度程序,实现上述五种调度算法。
2. 生成一个包含多个进程的作业队列,每个进程具有到达时间、所需运行时间和优先级等信息。
3. 分别采用五种调度算法对作业队列进行调度,并记录每个进程的执行情况。
模拟调度实验报告(3篇)
第1篇一、实验背景进程调度是操作系统核心功能之一,它负责在多道程序环境下,按照一定的策略对进程进行调度,以确保系统资源的合理分配和高效利用。
为了加深对进程调度算法的理解,本次实验采用模拟的方式,实现了先来先服务(FCFS)、时间片轮转(RR)和动态优先级调度(DP)三种算法,并对实验过程进行了详细记录和分析。
二、实验目的1. 理解进程调度的基本原理和不同调度算法的特点。
2. 掌握进程控制块(PCB)的设计与实现。
3. 通过模拟实验,验证三种调度算法的执行效果。
三、实验环境1. 操作系统:Windows 102. 编程语言:C++3. 开发环境:Visual Studio 2019四、实验内容1. 定义进程控制块(PCB)进程控制块是操作系统用于描述和管理进程的实体,它包含了进程的基本信息。
本实验中,PCB包含以下字段:- 进程ID:唯一标识一个进程。
- 到达时间:进程进入就绪队列的时间。
- 需要运行时间:进程完成所需的时间。
- 已运行时间:进程已运行的时间。
- 状态:进程当前的状态(就绪、运行、阻塞、完成)。
2. 实现三种调度算法(1)先来先服务(FCFS)算法FCFS算法按照进程到达就绪队列的顺序进行调度,先到先服务。
具体实现如下:- 将进程按照到达时间排序,形成就绪队列。
- 遍历就绪队列,依次执行进程,直到进程完成或被阻塞。
(2)时间片轮转(RR)算法RR算法将CPU时间划分为时间片,每个进程运行一个时间片后,让出CPU,等待下一个时间片。
具体实现如下:- 设置一个时间片大小。
- 将进程按照到达时间排序,形成就绪队列。
- 遍历就绪队列,每个进程执行一个时间片,如果进程未完成,则将其加入就绪队列队尾。
(3)动态优先级调度(DP)算法DP算法根据进程的优先级进行调度,优先级高的进程优先执行。
具体实现如下:- 设置一个优先级阈值,当进程的优先级高于阈值时,将其加入就绪队列。
- 遍历就绪队列,选择优先级最高的进程执行,直到进程完成或被阻塞。
实验五:页面调度算法模拟 实验报告
《计算机操作系统》实验报告实验五:页面调度算法模拟学校:╳╳╳院系:╳╳╳班级:╳╳╳姓名:╳╳╳学号:╳╳╳指导教师:╳╳╳目录一、实验题目 (3)二、实验学时 (3)三、指导老师 (3)四、实验日期 (3)五、实验目的 (3)六、实验原理 (3)6.1页面的含义 (3)6.2 页面置换算法的含义 (3)6.3 置换算法 (3)6.3.1最佳置换算法(Optimal) (3)6.3.2先进先出(FIFO)页面置换算法 (3)6.3.3 LRU置换算法 (4)七、实验步骤及结果 (4)7.1 验证最佳置换算法 (4)7.1.1 实验截图 (4)7.1.2 实验分析 (4)7.2 验证先进先出(FIFO)页面置换算法 (5)7.2.1 实验截图 (5)7.2.2 实验分析 (5)7.3 验证LRU置换算法 (6)7.3.1 实验截图 (6)7.3.2 实验分析 (6)八、报告书写人 (6)附录一最佳置换算法(Optimal) (7)附录二先进先出(FIFO)页面置换算法 (10)附录三LRU置换算法 (13)实验五:页面调度算法模拟一、实验题目页面调度算法模拟二、实验学时2学时三、指导老师╳╳╳四、实验日期2018年12月10日星期一五、实验目的(1)熟悉操作系统页面调度算法(2)编写程序模拟先进先出、LRU等页面调度算法,体会页面调度算法原理六、实验原理6.1页面的含义分页存储管理将一个进程的逻辑地址空间分成若干大小相等的片,称为页面或页。
6.2 页面置换算法的含义在进程运行过程中,若其所要访问的页面不在内存而需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区中。
但应将哪个页面调出,须根据一定的算法来确定。
通常,把选择换出页面的算法称为页面置换算法(Page_Replacement Algorithms)。
6.3 置换算法一个好的页面置换算法,应具有较低的页面更换频率。
操作系统综合实验报告--作业调度算法模拟
{
if(p[j]。subtime<=p[i]。ftime)
k++;
}
doublemaxrratio=(p[i].ftime-p[i+1]。subtime)/(1。0*p[i+1]。runtime);
int ps=i+1;
for(int m=i+1;m<i+k;m++)
p[i].subtime=(p[i].subtime)/100*60+p[i]。subtime%100;
cout<〈”运行时间:";
cin〉>p[i]。runtime;
p[i]。runtime=(p[i]。runtime)/100*60+p[i].runtime%100;
cout〈〈”\n”;
}
}
void output(job*p,int n)
if(i==0)
p[i].ftime=p[i]。subtime+p[i].runtime;
else
p[i].ftime=p[i].runtime+p[i—1]。ftime;
for(int j=i+1;j〈n;j++)
{
if(p[j]。subtime<=p[i].ftime)
k++;
}
double minstime=p[i+1]。runtime;
p[i]。ftime=p[i—1]。ftime+p[i]。runtime;
/*这里要特别小心,刚开始没考虑到下一个的开始时间可能大于上一个
操作系统页面调度算法程序实验报告
操作系统页面调度算法程序实验报告一、实验背景操作系统是计算机系统中最重要的组成部分之一,它负责管理计算机的资源、协调各个程序的运行和提供用户与计算机之间的接口。
而页面调度算法则是操作系统中非常重要的一个部分,它主要用于管理内存中的页面,以提高计算机系统的性能和效率。
二、实验目的本次实验旨在通过编写一个页面调度算法程序,深入理解操作系统中页面调度算法的原理和实现方法,并掌握如何使用C语言进行程序设计和开发。
三、实验原理1. 页面调度算法概述在操作系统中,为了提高内存利用率和进程执行效率,通常会将进程所需的数据或指令分割成多个大小相等的块(即“页面”),并将这些页面存储到内存中。
当进程需要访问某个页面时,如果该页面已经在内存中,则直接访问即可;如果该页面不在内存中,则需要进行“缺页处理”,将其从磁盘读入内存,并将其中一个已经在内存中但未被访问过一段时间的页面替换出去。
而为了确定应该替换哪个页面,就需要使用一种称为“页面调度算法”的技术来进行决策。
常见的页面调度算法有FIFO、LRU、LFU等。
2. FIFO算法FIFO(First In First Out)算法是最简单的页面调度算法之一,它的原理是将最先进入内存的页面替换出去。
具体来说,当一个新页面需要进入内存时,如果内存已经满了,则将最先进入内存的页面替换出去,并将新页面插入到队列末尾。
3. LRU算法LRU(Least Recently Used)算法是一种比较常用的页面调度算法,它的原理是根据页面最近被访问的时间来进行决策。
具体来说,当一个新页面需要进入内存时,如果内存已经满了,则将最近访问时间最早且未被修改过的页面替换出去,并将新页面插入到队列末尾。
4. LFU算法LFU(Least Frequently Used)算法是一种根据页面使用频率来进行决策的调度算法。
具体来说,当一个新页面需要进入内存时,如果内存已经满了,则将使用频率最低的那个页面替换出去,并将新页面插入到队列末尾。
页面调度算法实验报告
页面调度算法实验报告引言页面调度算法是操作系统中的重要概念之一,主要用于管理操作系统中的虚拟内存。
虚拟内存是指通过硬盘空间来扩展系统的可用内存空间,将一部分数据放在内存中,将另一部分数据放在硬盘上。
为了高效地管理虚拟内存,需要使用合适的页面调度算法。
在本次实验中,我们将实现三种页面调度算法:先进先出(FIFO),最近最久未使用(LRU),和时钟(Clock)算法。
通过对这些算法的实现和比较,我们将能够更好地理解页面调度算法的原理和效果。
算法介绍1. 先进先出(FIFO)算法:该算法是最简单的页面调度算法之一。
它按照页面进入内存的先后顺序决定删除哪个页面,即最早进入内存的页面被删除。
该算法不考虑页面的使用频率和重要性。
2. 最近最久未使用(LRU)算法:该算法是一种根据页面的使用历史来进行页面调度的算法。
它假设最近一段时间内最久未使用的页面很可能在未来也不会被使用,因此将这些页面优先删除。
3. 时钟(Clock)算法:该算法是一种综合了FIFO算法和LRU算法的页面调度算法。
它使用一个环形链表来存储页面,并使用一个指针指向当前时钟。
当发生页面调度时,指针按照顺时针方向移动,并检查每个页面的访问位。
如果访问位为0,则说明该页面最近未被使用,可以删除;如果访问位为1,则将访问位置为0,表示该页面最近被使用。
实验设计本次实验中,我们将使用python语言实现上述三种页面调度算法,并通过相同的测试数据对它们进行性能比较。
环境配置在开始实验之前,需要安装Python 3.0及以上版本,并确保环境配置正确。
测试数据我们将使用一个虚拟内存大小为4个页面的系统来测试算法的性能。
假设系统会访问一个包含10个页面的访问序列。
访问序列:1, 2, 3, 4, 5, 1, 2, 6, 7, 8实验步骤1. 实现FIFO算法,并对测试数据进行页面调度。
2. 实现LRU算法,并对测试数据进行页面调度。
3. 实现时钟算法,并对测试数据进行页面调度。
作业调度算法模拟-实验报告
作业调度算法模拟-实验报告作业调度算法模拟一.课题内容和要求常见的作业调度算法有先来先服务算法、最短作业优先算法、响应比优先调度算法。
(1)参考操作系统教材理解这3种算法。
(2)实现这3个算法。
(3)已知若干作业的到达时间和服务时间,用实现的算法计算对该组作业进行调度的平均周转时间和平均带权周转时间。
(4)作业的到达时间和服务时间可以存放在文本文件中。
(5)设计简单的交互界面,演示所设计的功能。
(可以使用MFC进行界面的设计) 二.需求分析class Job //作业类{public:int ID; //作业编号Time enter; //进入时间int requesttime; //估计运行时间int priority; //优先数Time start; //开始时间Time end; //结束时间int Ttime; //周转时间double WTtime; //带权周转时间};这个模块是设计作业结构(本程序是用的类Job)包括作业编号,进入时间,估计运行时间,优先数,开始时间,结束时间,周转时间,带权周转时间等。
class schedule //调度类{private:int size; //作业数Job *job; //作业数组int *r; //排序用数组int Differ(Time t1,Time t2) //求两个时刻间的时间差{int borrow = (t2.minute<="" 1="" :="" ?="" p="">return ((t2.hour-t1.hour-borrow)*60+(borrow*60+t2.minute-t1.minute));}这个模块是调度结构本程序为类scheduleb 包括作业数,作业数组,排序用数组。
void FCFS() //先来先服务(First Come First Serve)这个模块模拟实现算法先来先服务(FCFS )是按照各个作业进入系统的自然次序来调度算法。
调度算法实验报告总结(3篇)
第1篇一、实验目的本次实验旨在通过模拟操作系统中的进程调度过程,加深对进程调度算法的理解。
实验中,我们重点研究了先来先服务(FCFS)、时间片轮转(RR)和动态优先级调度(DP)三种常见的调度算法。
通过编写C语言程序模拟这些算法的运行,我们能够直观地观察到不同调度策略对进程调度效果的影响。
二、实验内容1. 数据结构设计在实验中,我们定义了进程控制块(PCB)作为进程的抽象表示。
PCB包含以下信息:- 进程编号- 到达时间- 运行时间- 优先级- 状态(就绪、运行、阻塞、完成)为了方便调度,我们使用链表来存储就绪队列,以便于按照不同的调度策略进行操作。
2. 算法实现与模拟(1)先来先服务(FCFS)调度算法FCFS算法按照进程到达就绪队列的顺序进行调度。
在模拟过程中,我们首先将所有进程按照到达时间排序,然后依次将它们从就绪队列中取出并分配CPU资源。
(2)时间片轮转(RR)调度算法RR算法将CPU时间划分为固定的时间片,并按照进程到达就绪队列的顺序轮流分配CPU资源。
当一个进程的时间片用完时,它将被放入就绪队列的末尾,等待下一次调度。
(3)动态优先级调度(DP)算法DP算法根据进程的优先级进行调度。
在模拟过程中,我们为每个进程分配一个优先级,并按照优先级从高到低的顺序进行调度。
3. 输出调度结果在模拟结束后,我们输出每个进程的调度结果,包括:- 进程编号- 到达时间- 运行时间- 等待时间- 周转时间同时,我们还计算了平均周转时间、平均等待时间和平均带权周转时间等性能指标。
三、实验结果与分析1. FCFS调度算法FCFS算法简单易实现,但可能会导致进程的响应时间较长,尤其是在存在大量短作业的情况下。
此外,FCFS算法可能导致某些进程长时间得不到调度,造成饥饿现象。
2. 时间片轮转(RR)调度算法RR算法能够有效地降低进程的响应时间,并提高系统的吞吐量。
然而,RR算法在进程数量较多时,可能会导致调度开销较大。
页面调度算法实验
先进先出页面调度算法的c语言实现main (){int cunchufangwenyemian[4];/*存储访问的页面*/int cunchujisuanguocheng[3][4];/*存储计算过程;*/int cunchushifoumingzhong[4];/*存储是否被命中*/int lie,hang;/*循环变量列,行*/int shifoumingzhong;/*在前一列的位置,没有则为0;*/int wenmenyemiangeshu=4;/*访问页面的个数*//*第一步,初始化*//*输入访问的页面,存到存储访问的页面的数组中*/for (lie=0;lie<4;lie++){printf("\n请输入第%d个页面:",lie);scanf("%d",&cunchufangwenyemian[lie]);}/*初始化计算过程数组*/for (lie=0;lie<4;lie++){for(hang=0;hang<3;hang++){cunchujisuanguocheng[hang][lie]=-1;}}/*初始化是否没有命中的数组*/for (lie=0;lie<4;lie++){cunchushifoumingzhong[lie]=0;}/*第二步,计算*//*察看是否命中*/for (wenmenyemiangeshu=0;wenmenyemiangeshu<4;wenmenyemiangeshu++) {/*对于某一列进行处理*/lie=wenmenyemiangeshu;if (lie==0) /*如果为第一列*/{cunchujisuanguocheng[0][lie]= cunchufangwenyemian[lie]; /*将页面落下来*/cunchushifoumingzhong[0]=0; /*是否命中为0,不命中*/ } else{/*如果不为第一列*/shifoumingzhong=0; /*假设没命中*/for(hang=0;hang<3;hang++){if ( cunchujisuanguocheng[hang][lie-1]== cunchufangwenyemian[lie]){shifoumingzhong=hang+1;/*如果相同,则是否命中为命中的位置*/}}cunchushifoumingzhong[lie]=shifoumingzhong;/*存储命中位置*/}if (lie!=0){if ((shifoumingzhong!=0))/*是否命中*/{/*如果命中,则不变*/for(hang=0;hang<3;hang++){cunchujisuanguocheng[hang][lie]=cunchujisuanguocheng[hang][lie-1];/*将上一列复制过来*/}} else{/*如果没有命中,则向下移一位,新的进来*/for(hang=2;hang>0;hang--){cunchujisuanguocheng[hang][lie]= cunchujisuanguocheng[hang-1][lie-1];/*将上一列逐个下移复制过来*/}cunchujisuanguocheng[0][lie]=cunchufangwenyemian[lie];/*最上面的等于新进来的*/}}}/*第三步,输出*/ /*输出访问序列*/for (lie=0;lie<4;lie++){printf("%d ",cunchufangwenyemian[lie]);}printf("\n"); /*输出计算过程*/for (hang=0;hang<3;hang++){for(lie=0;lie<4;lie++){printf("%d ",cunchujisuanguocheng[hang][lie]);}printf("\n");} /*输出是否命中*/for (lie=0;lie<4;lie++){printf("%d ",cunchushifoumingzhong[lie]);}}运行结果:。
实验五:页面调度算法模拟实验报告
《计算机操作系统》实验报告实验五:页面调度算法模拟学校:╳╳╳院系:╳╳╳班级:╳╳╳姓名:╳╳╳学号:╳╳╳指导教师:╳╳╳目录一、实验题目 (3)二、实验学时 (3)三、指导老师 (4)四、实验日期 (4)五、实验目的 (4)六、实验原理 (4)6.1页面的含义 (4)6.2 页面置换算法的含义 (4)6.3 置换算法 (4)6.3.1最佳置换算法(Optimal) (4)6.3.2先进先出(FIFO)页面置换算法 (5)6.3.3 LRU置换算法 (5)七、实验步骤及结果 (5)7.1 验证最佳置换算法 (5)7.1.1 实验截图 (5)7.1.2 实验分析 (5)7.2 验证先进先出(FIFO)页面置换算法 (6)7.2.1 实验截图 (6)7.2.2 实验分析 (6)7.3 验证LRU置换算法 (7)7.3.1 实验截图 (7)7.3.2 实验分析 (8)八、报告书写人 (8)附录一最佳置换算法(Optimal) (9)附录二先进先出(FIFO)页面置换算法 (14)附录三 LRU置换算法 (18)实验五:页面调度算法模拟一、实验题目页面调度算法模拟二、实验学时2学时三、指导老师╳╳╳四、实验日期2018年12月10日星期一五、实验目的(1)熟悉操作系统页面调度算法(2)编写程序模拟先进先出、LRU等页面调度算法,体会页面调度算法原理六、实验原理6.1页面的含义分页存储管理将一个进程的逻辑地址空间分成若干大小相等的片,称为页面或页。
6.2 页面置换算法的含义在进程运行过程中,若其所要访问的页面不在内存而需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区中。
但应将哪个页面调出,须根据一定的算法来确定。
通常,把选择换出页面的算法称为页面置换算法(Page_Replacement Algorithms)。
6.3 置换算法一个好的页面置换算法,应具有较低的页面更换频率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算机操作系统》实验报告实验五:页面调度算法模拟学校:╳╳╳院系:╳╳╳班级:╳╳╳姓名:╳╳╳学号:╳╳╳指导教师:╳╳╳目录一、实验题目 (3)二、实验学时 (3)三、指导老师 (4)四、实验日期 (4)五、实验目的 (4)六、实验原理 (4)6.1页面的含义 (4)6.2 页面置换算法的含义 (4)6.3 置换算法 (4)6.3.1最佳置换算法(Optimal) (4)6.3.2先进先出(FIFO)页面置换算法 (5)6.3.3 LRU置换算法 (5)七、实验步骤及结果 (5)7.1 验证最佳置换算法 (5)7.1.1 实验截图 (5)7.1.2 实验分析 (5)7.2 验证先进先出(FIFO)页面置换算法 (6)7.2.1 实验截图 (6)7.2.2 实验分析 (6)7.3 验证LRU置换算法 (7)7.3.1 实验截图 (7)7.3.2 实验分析 (8)八、报告书写人 (8)附录一最佳置换算法(Optimal) (9)附录二先进先出(FIFO)页面置换算法 (14)附录三 LRU置换算法 (18)实验五:页面调度算法模拟一、实验题目页面调度算法模拟二、实验学时2学时三、指导老师╳╳╳四、实验日期2018年12月10日星期一五、实验目的(1)熟悉操作系统页面调度算法(2)编写程序模拟先进先出、LRU等页面调度算法,体会页面调度算法原理六、实验原理6.1页面的含义分页存储管理将一个进程的逻辑地址空间分成若干大小相等的片,称为页面或页。
6.2 页面置换算法的含义在进程运行过程中,若其所要访问的页面不在内存而需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区中。
但应将哪个页面调出,须根据一定的算法来确定。
通常,把选择换出页面的算法称为页面置换算法(Page_Replacement Algorithms)。
6.3 置换算法一个好的页面置换算法,应具有较低的页面更换频率。
从理论上讲,应将那些以后不再会访问的页面换出,或将那些在较长时间内不会再访问的页面调出。
6.3.1最佳置换算法(Optimal)它是由Belady于1966年提出的一种理论上的算法。
其所选择的被淘汰页面,将是以后永不使用的或许是在最长(未来)时间内不再被访问的页面。
采用最佳置换算法,通常可保证获得最低的缺页率。
但由于人目前还无法预知一个进程在内存的若干个页面中,哪一个页面是未来最长时间内不再被访问的,因而该算法是无法实现的,便可以利用此算法来评价其它算法。
6.3.2先进先出(FIFO)页面置换算法这是最早出现的置换算法。
该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
该算法实现简单只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。
6.3.3 LRU置换算法LRU置换算法是选择最近最久未使用的页面予以淘汰。
七、实验步骤及结果7.1 验证最佳置换算法7.1.1 实验截图7.1.2 实验分析in 7 2 7 7 1 0 4 4 0 8 0 4 b1 7 7 7 7 4 4b2 2 2 2 2 8b3 1 1 1 1b4 0 0 0out 7 27.2 验证先进先出(FIFO)页面置换算法7.2.1 实验截图7.2.2 实验分析7.3 验证LRU置换算法7.3.1 实验截图7.3.2 实验分析in 9 6 8 7 7 3 7 1 2 6 7 0b1 9 9 9 9 3 3 3 6 6 b2 6 6 6 6 1 1 1 0 b3 8 8 8 8 2 2 2 b4 7 7 7 7 7 7out 9 6 8 3 1八、报告书写人╳╳╳附录一最佳置换算法(Optimal)#include <stdio.h>#include <stdlib.h>#include <time.h>#define N 12 /*随机数列的长度*/#define B 4 /*内存页面数*/int IsInBuf(int buf[],int list[],int num){int i,j=-1;int max_p;int max_d=0;for(i=0;i<B;i++){if(buf[i]==list[num]) //当x在buf中,返回-1return -1;else if(buf[i]==-1) //当x不在buf中,且buf[i]为空,则把x 填入buf,并返回-1{buf[i]=list[num];return -2;}}for(i=0;i<B;i++){for(j=num+1;j<N;j++){if(buf[i]==list[j]){if(max_d<j){max_d=j;//buf[i]在list[]中的最近距离max_p=i;//list[j]在buf[]的位置}break;}}if(j==N) //如果buf满,并且buf[i]不在list[]的后半部分,返回位置ireturn i;}return max_p;//返回距离最远的buf[]的位置}int main(){int list[N];//={4,3,2,1,4,3,5,4,3,2,1,5};int buf[B],i,f[N],j,m,bufuse=0,tmp;int change=0; //置换次数int interrupt=0; //中断次数int successfully=0; //访问成功次数srand((int)time(NULL));for(i=0;i<B;i++)buf[i]=f[i]=-1;printf("\n\n");printf("The Optimal List:");for(i=0;i<N;i++){list[i]=(int) rand()%10;printf("%2d",list[i]);}printf("\n");printf("\nthe lost in Optimal:\n");for(i=0;i<N;i++){j=IsInBuf(buf,list,i);if(j==-1){successfully++;for(m=0;m<=B;m++){printf(" "); /*成功的打印*/}printf(" in<--%d successfully\n",list[i]);/*成功的打印*/}else if(j==-2){bufuse++;interrupt++;printf("newbuf=");for(m=0;m<bufuse;m++){printf("%d ",buf[m]); /*缺页中断次数的打印*/}for(m;m<B;m++){printf(" "); /*缺页中断的打印*/}printf(" in<--%d interrupt\n",list[i]);/*缺页中断的打印*/}else{tmp=buf[j];buf[j]=list[i];change++;printf("newbuf=");for(m=0;m<bufuse;m++){printf("%d ",buf[m]); /*缺页置换的打印*/}for(m;m<B;m++){printf(" ");/*缺页置换的打印*/}printf(" in<--%d change %d-->out\n",list[i],tmp);/*缺页置换的打印*/}}printf("\n\n");printf("interrupt=%d\n",interrupt);printf("change=%d\n",change);printf("successfully=%d\n",successfully);return 0;}附录二先进先出(FIFO)页面置换算法#include <stdio.h>#include <stdlib.h>#include <time.h>#define N 12 /*随机数列的长度*/#define B 4 /*内存页面数*/int IsInBuf(int buf[],int x){int i;for(i=0;i<B;i++){if(buf[i]==x) /*当x在buf中,返回其位置*/return -1;else if(buf[i]==-1) /*当x不在buf中,且buf[i]为空,则把x填入buf,并返回其位置*/{buf[i]=x;return -2;}}return 0;}int main(){int list[N];//={4,3,2,1,4,3,5,4,3,2,1,5};int buf[B],i,f[N],j,m,bufuse=0,tmp;int old=0;int change=0; //置换次数int interrupt=0; //中断次数int successfully=0; //访问成功次数srand((int)time(NULL));for(i=0;i<B;i++)buf[i]=f[i]=-1;printf("\n\n");printf("The FIFO List:");for(i=0;i<N;i++){list[i]=(int) rand()%10;printf("%2d",list[i]);}printf("\n");printf("\nthe lost in FIFO:\n");for(i=0;i<N;i++){j=IsInBuf(buf,list[i]);if(j==-1){successfully++;for(m=0;m<=B;m++){printf(" "); /*成功的打印*/ }printf(" in<--%d successfully\n",list[i]);/*成功的打印*/}else if(j==-2){bufuse++;interrupt++;printf("newbuf=");for(m=0;m<bufuse;m++){printf("%d ",buf[m]); /*缺页中断次数的打印*/}for(m;m<B;m++){printf(" "); /*缺页中断的打印*/}printf(" in<--%d interrupt\n",list[i]);/*缺页中断的打印*/}else{tmp=buf[old];buf[old]=list[i];old=(old+1)%(int)B; /*数据在buf中的储存是循环的*/change++;printf("newbuf=");for(m=0;m<bufuse;m++){printf("%d ",buf[m]); /*缺页置换的打印*/}for(m;m<B;m++){printf(" ");/*缺页置换的打印*/}printf(" in<--%d change %d-->out\n",list[i],tmp);/*缺页置换的打印*/}}printf("\n\n");printf("interrupt=%d\n",interrupt);printf("change=%d\n",change);printf("successfully=%d\n",successfully);return 0;}附录三 LRU置换算法#include <stdio.h>#include <stdlib.h>#include <time.h>#define N 12 /*随机数列的长度*/#define B 4 /*内存页面数*/int IsInBuf(int buf[],int list[],int num){int i,j=-1;for(i=0;i<B;i++){if(buf[i]==list[num]) /*当x在buf中,返回其位置*/{j=i;break;}else if(buf[i]==-1) /*当x不在buf中,且buf[i]为空,则把x填入buf,并返回其位置*/{buf[i]=list[num];j=-2;break;}}return j;}int Get(int buf[],int list[],int num){int buff[B];int buffuse=0;int i,j,k,m;for(m=0;m<B;m++)buff[m]=-1;for(i=num-1;i>=0;i--){for(j=0;j<B;j++){if(list[i]==buf[j]){for(k=0;k<buffuse;k++){if(list[i]==buff[k])break;}if(k==buffuse){buff[buffuse]=list[i];buffuse++;if(buffuse==B)return j;}break;}}}return 0;}int main(){int list[N];//int list[12]=int buf[B],i,f[N],j,m,bufuse=0,tmp;int old=0;int change=0;int interrupt=0;int successfully=0;srand((int)time(NULL));for(i=0;i<B;i++)buf[i]=f[i]=-1;printf("The Random List:");for(i=0;i<N;i++){list[i]=(int) rand()%10;printf("%2d",list[i]);}printf("\n\n");printf("\nthe lost in LRU:\n");change=0; /*中断的次数*/for(i=0;i<N;i++){j=IsInBuf(buf,list,i);if(j==-1){old=Get(buf,list,i);tmp=buf[old];buf[old]=list[i];change++;printf("newbuf=");for(m=0;m<bufuse;m++){printf("%d ",buf[m]); /*缺页置换的打印*/ }for(m;m<B;m++){printf(" ");/*缺页置换的打印*/}printf(" in<--%d change %d-->out\n",list[i],tmp);/*缺页置换的打印*/}else if(j==-2){bufuse++;interrupt++;printf("newbuf=");for(m=0;m<bufuse;m++){printf("%d ",buf[m]); /*缺页中断次数的打印*/}for(m;m<B;m++){printf(" "); /*缺页中断的打印*/}printf(" in<--%d interrupt\n",list[i]);/*缺页中断的打印*/}else{successfully++;for(m=0;m<=B;m++){printf(" "); /*成功的打印*/}printf(" in<--%d successfully\n",list[i]);/*成功的打印*/}}printf("\n\n");printf("interrupt=%d\n",interrupt);printf("change=%d\n",change);printf("successfully=%d\n",successfully);return 0;}。