西南交大操作系统实验总报告
西南交大计算机实验报告

计算机程序设计基础(C++)实验报告信息学院计算机教育中心二零一四年三月实验_0验报告教学班级:___ 7班__ 学生学号:__20133936_学生姓名:____葛劲松实验日期:_____2014.3.11______ 实验地点:______7307___(机房) 指导教师签名:___王威_______ 实验成绩:___________一、实验目的1.熟悉VS2010 集成开发环境;2.学习新建和打开控制台应用程序的方法;3.通过运行示例程序了解程序开发过程;二、实验任务1.新建源程序文件,编辑以下程序,编译,链接,得出运行结果,并保存程序:#include <iostream>using namespace std;void main( ){cout<<'a'<<endl;cout<<'\141'<<endl;cout<<'\x61'<<endl;}2.新建源程序文件,编辑以下程序,编译,链接,运行,输入36和64,得出运行结果,并保存程序:#include <iostream>using namespace std;int main(){float num1,num2,sum;cout << "Enter first number: ";cin >> num1;cout << "Enter second number: ";cin >> num2;sum=num1+num2;cout << "The sum is " << sum << endl;return 0;}三、实验结果1.:运行结果2.实验__1_实验报告一、实验目的1.熟悉C++程序的集成开发环境;2.学习新建和打开控制台应用程序的方法;3.掌握简单数据运算,以及输入与输出方法。
《操作系统》实验报告

《操作系统》实验报告一、实验目的操作系统是计算机系统中最为关键的组成部分之一,本次实验的主要目的是深入理解操作系统的基本原理和功能,通过实际操作和观察,熟悉操作系统的核心概念,包括进程管理、内存管理、文件系统和设备管理等,提高对操作系统的实际应用能力和问题解决能力。
二、实验环境本次实验在以下环境中进行:操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容1、进程管理实验进程是操作系统中最基本的执行单元。
在这个实验中,我们使用C++编写程序来创建和管理进程。
通过观察进程的创建、执行和结束过程,理解进程的状态转换和资源分配。
首先,我们编写了一个简单的程序,创建了多个子进程,并通过进程标识符(PID)来跟踪它们的运行状态。
然后,使用等待函数来等待子进程的结束,并获取其返回值。
在实验过程中,我们发现进程的创建和销毁需要消耗一定的系统资源,而且进程之间的同步和通信需要谨慎处理,以避免出现死锁和竞争条件等问题。
2、内存管理实验内存管理是操作系统的核心功能之一,它直接影响系统的性能和稳定性。
在这个实验中,我们研究了动态内存分配和释放的机制。
使用 C++中的 new 和 delete 操作符来分配和释放内存。
通过观察内存使用情况和内存泄漏检测工具,了解了内存分配的效率和可能出现的内存泄漏问题。
同时,我们还探讨了内存分页和分段的概念,以及虚拟内存的工作原理。
通过模拟内存访问过程,理解了页表的作用和地址转换的过程。
3、文件系统实验文件系统是操作系统用于管理文件和目录的机制。
在这个实验中,我们对文件的创建、读写和删除进行了操作。
使用 C++的文件流操作来实现对文件的读写。
通过创建不同类型的文件(文本文件和二进制文件),并对其进行读写操作,熟悉了文件的打开模式和读写方式。
此外,还研究了文件的权限设置和目录的管理,了解了如何保护文件的安全性和组织文件的结构。
4、设备管理实验设备管理是操作系统与外部设备进行交互的桥梁。
操作系统课程设计实验报告

操作系统课程设计实验报告操作系统课程设计实验报告引言:操作系统是计算机科学中的重要课程,通过实验设计,可以帮助学生更好地理解操作系统的原理和实践。
本文将结合我们在操作系统课程设计实验中的经验,探讨实验设计的目的、实验过程和实验结果,以及对操作系统的理解和应用。
一、实验设计目的操作系统课程设计实验的目的是帮助学生深入理解操作系统的工作原理和实际应用。
通过设计和实现一个简单的操作系统,学生可以更好地掌握操作系统的各个组成部分,如进程管理、内存管理、文件系统等。
同时,实验设计还可以培养学生的动手能力和问题解决能力,提高他们对计算机系统的整体把握能力。
二、实验过程1. 实验准备在进行操作系统课程设计实验之前,我们需要对操作系统的基本概念和原理进行学习和理解。
同时,还需要掌握一些编程语言和工具,如C语言、汇编语言和调试工具等。
这些准备工作可以帮助我们更好地进行实验设计和实现。
2. 实验设计根据实验要求和目标,我们设计了一个简单的操作系统实验项目。
该项目包括进程管理、内存管理和文件系统三个主要模块。
在进程管理模块中,我们设计了进程创建、调度和终止等功能;在内存管理模块中,我们设计了内存分配和回收等功能;在文件系统模块中,我们设计了文件的创建、读写和删除等功能。
通过这些模块的设计和实现,我们可以全面了解操作系统的各个方面。
3. 实验实现在进行实验实现时,我们采用了分阶段的方法。
首先,我们实现了进程管理模块。
通过编写相应的代码和进行调试,我们成功地实现了进程的创建、调度和终止等功能。
接下来,我们实现了内存管理模块。
通过分配和回收内存空间,我们可以更好地管理系统的内存资源。
最后,我们实现了文件系统模块。
通过设计文件的读写和删除等功能,我们可以更好地管理系统中的文件资源。
三、实验结果通过实验设计和实现,我们获得了一些有意义的结果。
首先,我们成功地实现了一个简单的操作系统,具备了进程管理、内存管理和文件系统等基本功能。
西南交通大学计算机实习报告

暑期计算机实习报告实习成果:1.程序一题目:用牛顿迭代法解方程01=-xxe ( 提示:迭代公式为)()('1k k k k x f x f x x -=+ 迭代初值可取0.5 )。
(1) 算法原理:牛顿迭代法是以微分为基础的,牛顿迭代法是取x0之后,在这个基础上,找到比x0更接近的方程的跟,一步一步迭代,从而找到更接近方程根的近似跟。
方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。
设r 是f(x)=0的根,选取x 作为r 初始近似值,过点(x0,f(x0))做曲线y=f(x)的切线L ,L 的方程为y=f(x0)+f′(x0)(x - x0),求出L 与x 轴交点的横坐标x1= x0-f(x0)/f(x0),称x1为r 的一次近似值,过点(x1,f(x1))做曲线y=f(x)的切线,并求该切线与x 轴的横坐标x2= x1-f(x1)/f′(x1)称x2为r 的二次近似值,重复以上过程,得r 的近似值序列{ xn},其中xn +1= xn -f(xn)/f′(xn),称为r 的n+1次近似值。
然后用一层循环。
(2)程序流程图:(3)变量的说明:主函数中的double 型变量x0,是整个方程解的初始值,通过对它的附值可以改变牛顿迭代法的初值。
子函数中调用函数exp 和fabs ,定义子函数中的变量x ,f0d ,f0,其中x 等于x0的值。
然后经过循环比较达到fabs(f0)靠近1e-6的目的,最后返回x 即为方程的解。
(4)使用方法:本程序可以通过改变根初值,通过牛顿迭代法得到方程01=-xxe 的根。
(5)源程序:#include <iostream> #include <cmath> using namespace std; int main(){ double fun(double x0); double x0;cout<<"请输入x 的初始值:"<<endl; cin>>x0;cout<<"方程x*e^x-1=0的根是:"<<fun(x0); return 0; }double fun(double x0){double f0,f0d,x;x=x0;do{f0=x*exp(x)-1;f0d=(x+1)*exp(x);x=x-f0/f0d;}while(fabs(f0)>= 1e-6);return x;}(6)程序运行结果:2.程序二题目:输入学生成绩单,并进行统计,打印出统计表。
西南交大操作系统实验总报告

操作系统实验报告指导教师:胡晓鹏实验报告一实验名称:Linux操作系统下的C语言编程实验目的:1.认识Linux系统,熟悉Linux操作系统的基本操作;2.了解vi命令的基本用法,能够使用vi命令对文件进行基础的操作与编辑;3.能够在Linux环境下编写C语言程序,生成.out文件,并成功执行;4.体会Linux环境下编程与Windows环境下编程的异同,加深对Linux操作系统的理解。
实验内容:熟悉Linux环境,编写简单C语言程序。
实验结果:实验结论:在Linux操作系统下的编程环境不同于Windows,编译器进行命令编译。
操作环境简洁,大多以键盘操作。
实验报告二实验名称:基于进程与线程的并发实验目的:1.了解进程与线程工作原理,掌握并发机制,学会编写简单的并发程序。
2.充分理解并掌握基于进程与线程的并发。
实验内容:在Linux环境进行基于进程与线程编写实验程序。
试验核心代码:int main(){ pthread_t tid[N];pid_t pid;pid=fork();if(pid<0){ printf("fail to fork\n");exit(1);}else if(pid==0){ printf("the child process:\n");}else{ sleep(10);printf("the parent process:\n");}void *res;int err[3];err[0]=pthread_create(&tid[0],NULL,fn1,NULL);err[1]=pthread_create(&tid[1],NULL,fn2,NULL); err[2]=pthread_create(&tid[2],NULL,fn3,NULL); int i;for(i=0;i<N;i++){if(err[i]= pthread_join(tid[i],&res)!=0){ printf("cannot join the thread %d\n",i);exit(1);}}return 0;}void *fn1(void *arg){printf("the first thread is done\n");return (void *)1;}void *fn2(void *arg){printf("the second thread is done\n");.\n");}printf("ener some text:");fgets(buffer,BUFSIZ,stdin);strncpy(shared_stuff->some_text,buffer,TEXT_SZ);shared_stuff->written_by_you=1;if(strncmp(buffer,"end",3)==0){running=0;ime=0;}while(i<m){ ime++;if(p[j].pro == proc[i]) ime=1;}}if(exit==0&&(flag<n)) ro=proc[i];p[flag].time=1;flag++;}elseif(exit==0) ime;for(j=1;j<n;j++)if(maxtime<p[j].time){ maxtime=p[j].time;key=j;}p[key].pro=proc[i];p[key].time=1;}ro);}cout<<endl;i++;}}void clock_p(int n,int m,int proc[]){cout<<"------------------------------------------"<<endl; cout<<"这是clock:"<<endl;struct page{int flag;int pro;};struct page *p=(struct page*)malloc(m*sizeof(page));lag=0;int i=0;int next;int j=0; ro==proc[i]){next=0;}}if(next){if(!p[j].flag){p[j].pro=proc[i];p[j].flag=1;next=0;if(mart<n)mart++;}else{p[j].flag=0; next=1;if(mart<n)mart++;}j++;j=j%n;}}ro);cout<<endl;}}void main(){ int pages;cout <<"输入页面数:";cin>>pages;cout<<"输入你的进程个数:";int m;cin>>m;cout<<"输入你的进程ID:";int *proc=new int[m];for(int i=0;i<m;i++)cin>>proc[i];lru_p(pages,m,proc);clock_p(pages,m,proc);}实验结果:实验结论:替换策略是计算机高效工作,充分利用资源,而不同的替换算法都有自己的利弊,不同的场景应充分权衡利弊进行选择。
操作系统实验报告

操作系统实验报告操作系统实验报告实验名称:进程调度算法模拟实验目的:1. 了解进程调度算法的工作原理。
2. 掌握实现进程调度算法的方法。
3. 通过模拟实验,对比不同调度算法的效果。
实验环境:操作系统:Windows 10开发工具:C语言编译器(如gcc)实验过程及实验结果:1. 实验准备:在开始实验前,我们需要先了解几种常见的进程调度算法,如先来先服务(FCFS)、短作业优先(SJF)、优先级调度(Priority)、轮转调度(Round Robin)等。
2. 实验步骤:(1)首先,我们需要定义进程控制块(PCB),包含进程的ID、到达时间、服务时间、完成时间、周转时间等信息。
(2)接下来,我们需要编写模拟程序,模拟不同的进程调度算法。
在模拟程序中,我们可以使用数组来保存多个进程的PCB信息,并根据不同调度算法对进程进行排序或者选择。
(3)然后,我们需要根据调度算法选择一个进程来执行,更新进程的状态和相关信息。
(4)最后,我们要根据不同调度算法计算每个进程的周转时间、平均周转时间、平均等待时间等指标,并输出结果。
3. 实验结果:我们可以分别对比不同调度算法在同样一组进程集合上的表现,比如FCFS、SJF、Priority和Round Robin等。
实验结论:通过对比不同的进程调度算法,我们可以发现每种算法在不同场景下的优劣势。
先来先服务算法适用于长作业时间,短作业优先算法适用于短作业时间,优先级调度适用于具有不同优先级的进程,轮转调度适用于时间片控制的场景。
总结:通过本次实验,我们对进程调度算法有了更深入的了解,并且掌握了实现进程调度算法的方法。
这对我们理解操作系统的工作原理和提高程序性能都有一定的帮助。
西南交大实验报告

西南交大实验报告西南交大实验报告引言:西南交通大学是中国著名的综合性大学之一,以交通运输为特色,涵盖了工、理、管、文、法、经、教育等多个学科领域。
本实验报告将着重介绍西南交大的实验教学体系以及实验室设施,以展示该校在培养学生实践能力和创新精神方面的努力。
一、实验教学体系西南交大以实验教学为核心,注重培养学生的实践能力和创新精神。
学校建立了一套完善的实验教学体系,包括实验教学计划、实验教材、实验教学方法和实验评价体系等。
实验教学计划根据不同专业的要求,为学生安排了一系列的实验课程,涵盖了理论知识的应用和实践技能的培养。
实验教材则精心编写,内容丰富,既有基础实验,也有前沿实验,能够满足学生的学习需求。
实验教学方法灵活多样,结合了讲授、实践、讨论等多种形式,让学生能够全面参与实验过程,提高实践能力。
实验评价体系科学合理,既注重实验结果的准确性,又注重学生的实验操作能力和实验报告的撰写能力。
二、实验室设施西南交大拥有先进的实验室设施,为学生提供了良好的实验环境。
学校的实验室涵盖了多个学科领域,包括物理、化学、生物、电子、计算机等。
这些实验室配备了先进的实验设备和仪器,能够满足学生进行各种实验研究的需求。
实验室的管理规范,设有专门的实验室管理员,负责设备的维护和管理,确保实验设备的正常运行。
此外,学校还注重实验室的安全管理,制定了严格的实验室安全规定,确保学生的人身安全和实验设备的安全。
三、实验教学成果西南交大的实验教学取得了显著的成果。
学校的实验教学成果多次获得国家级奖项,得到了社会的广泛认可。
学生在实验教学中不仅学到了专业知识,还培养了动手能力和创新思维。
通过实验教学,学生能够将理论知识与实际应用相结合,提高问题解决能力和创新能力。
许多学生在实验教学中发表了学术论文,参与了科研项目,取得了优异的成绩。
实验教学的成果不仅体现在学生的学术成就上,还体现在学生的就业竞争力上。
许多企业对西南交大的实验教学给予了高度评价,认为该校的学生具备扎实的专业知识和出色的实践能力。
西南交大大学计算机基础实验报告

大学计算机基础实验报告教学班级:_______ 学号:__________ 姓名:___________ 课程教师:______________ 实验辅导教师:_____________西南交通大学2011年9月实验一微机基本操作与上网冲浪教学班级:_______ 学号:__________ 姓名:___________ 实验日期:___________ 实验地点:_________(机房)指导教师签名:__________ 实验成绩:___________一、实验目的1.掌握计算机系统的启动与关闭;2.掌握常用输入设备、输出设备、存储设备的用法。
3.掌握搜索引擎的使用;4.掌握下载与解压缩的方法;5.掌握软件安装的方法。
二、实验任务1.启动与关闭计算机。
2.利用“键盘盲打练习”软件进行键盘的指法练习。
3.硬盘信息查询。
4.利用搜索引擎搜索成都商报,阅读当日报纸新闻。
5.利用下载工具FlashGet在网上下载“NetAnts”软件压缩包,利用压缩工具winRar解压缩该包,并安装该软件。
三、实验检查内容[ ] 1.能否热启动计算机[ ] 2.能否下载打字软件(辅导老师可协助将软件下载到教师机上,学生通过网上邻居获取)[ ] 3.能否安装打字软件[ ] 4.打字速度/分钟[ ] 5.查看C区总容量[ ] 6.查看磁盘整理程序对C区的分析报告,看是否需要整理[ ] 7.写出当日成都商报的头版头条标题[ ] 8.是否将NetAnts软件安装在D区实验二文件资源的管理与操作教学班级:_______ 学号:__________ 姓名:___________ 实验日期:___________ 实验地点:_________(机房)指导教师签名:__________ 实验成绩:___________一、实验目的1.掌握文件的复制、移动、删除;2.掌握文件的重命名、属性的设置;3.掌握文件的查找;4.掌握文件夹选项操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.操作系统实验报告指导教师:胡晓鹏.实验报告一实验名称: Linux 操作系统下的C语言编程实验目的: 1.认识 Linux 系统,熟悉Linux 操作系统的基本操作;2.了解 vi 命令的基本用法,能够使用vi 命令对文件进行基础的操作与编辑;3.能够在 Linux 环境下编写 C语言程序,生成 .out 文件,并成功执行;4.体会 Linux 环境下编程与Windows 环境下编程的异同,加深对Linux 操作系统的理解。
实验内容:熟悉 Linux 环境,编写简单 C 语言程序。
实验结果:.实验结论:在 Linux 操作系统下的编程环境不同于Windows ,编译器进行命令编译。
操作环境简洁,大多以键盘操作。
实验报告二实验名称:基于进程与线程的并发实验目的:1.了解进程与线程工作原理,掌握并发机制,学会编写简单的并发程序。
2.充分理解并掌握基于进程与线程的并发。
实验内容:在 Linux 环境进行基于进程与线程编写实验程序。
试验核心代码:int main(){ pthread_t tid[N];pid_t pid;pid=fork();if(pid<0){ printf("fail to fork\n");exit(1);}else if(pid==0){ printf("the child process:\n");}else{sleep(10);printf("the parent process:\n");}void *res;int err[3];err[0]=pthread_create(&tid[0],NULL,fn1,NULL);err[1]=pthread_create(&tid[1],NULL,fn2,NULL);err[2]=pthread_create(&tid[2],NULL,fn3,NULL);int i;for(i=0;i<N;i++){if(err[i]= pthread_join(tid[i],&res)!=0) { printf("cannot join the thread %d\n",i);exit(1);}}return 0;}void *fn1(void *arg){printf("the first thread is done\n");return (void *)1;}void *fn2(void *arg){printf("the second thread is done\n"); //sleep(1);return (void *)1;}void *fn3(void *arg){printf("the third thread is done\n");//sleep(2); return(void *)1;}实验结果:实验结论:进程与线程之间的关系为线程离不开进程,线程在多任务系统的作用使计算机高校工作,同时下创建进程是应尽量避免进程的出现。
掌握线程pthread_join()中的阻塞原理。
实验报告三实验题目:进程间的通信实验目的:学习在 linux环境进程间的信息传递和接收,理解进程间的信号通信,并能编写简单代码实现进程间的通信。
实验代码:#include <stdio.h>#include <signal.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>static int alarm_fired=0;void ouch(int sig){ alarm_fired=1;}int main(){ pid_t pid;pid=fork();if(pid==-1){ printf("fork failed\n");exit(1);}else if(pid==0){ kill(getpid(),SIGALRM); exit(0);}signal(SIGALRM,ouch);alarm(5);pause();.if(alarm_fired==1)printf("receive a signal %d\n",SIGALRM);exit(0);}实验结果 :实验结论:进程能进行信息通信,如果进程间有必要,能够实现很好的进程异步处理。
实验报告四实验题目:进程间的通信 - 共享内存实验目的:理解进程间共享内存机制,学会分析共享内存之间的通信方式并进行内存共享实践,编写简单程序实现内存简单共享。
实验代码 :核心代码:/**************************************************************///定义数据结构体struct shared_use_st{int written_by_you;char some_text[TEXT_SZ];};/* 写入 *********************************************************//* 创建共享内存 */shmid=shmget((key_t)1234,sizeof(struct shared_use_st),0666|IPC_CREAT);if(shmid==-1){fprintf(stderr,"shmget failed\n");exit(EXIT_FAILURE);}/* 映射共享内存*/shared_memory=shmat(shmid,(void *)0,0);if(shared_memory==(void *)-1){fprintf(stderr,"shmat failed\n");exit(EXIT_FAILURE);}printf("Memory attached at %X\n",(int)shared_memory);/* 让结构体指针指向这块共享内存*/shared_stuff=(struct shared_use_st *)shared_memory;/* 循环的向共享内存中写数据,直到写入的为“ end为”止*/while(running){while(shared_stuff->written_by_you==1){sleep(1);// 等到读进程读完之后再写printf("waiting for client...\n");}printf("ener some text:");fgets(buffer,BUFSIZ,stdin);strncpy(shared_stuff->some_text,buffer,TEXT_SZ);shared_stuff->written_by_you=1;if(strncmp(buffer,"end",3)==0){running=0; // 结束循环}}/* 读取 ***********************************************************************//* 创建共享内存 */shmid=shmget((key_t)1234,sizeof(struct shared_use_st),0666|IPC_CREAT);if(shmid==-1){fprintf(stderr,"shmget failed\n");exit(EXIT_FAILURE);./* 映射共享内存*/shared_memory=shmat(shmid,(void *)0,0);if(shared_memory==(void *)-1){fprintf(stderr,"shmat failed\n");exit(EXIT_FAILURE);}printf("Memory attached at %X\n",(int)shared_memory);/* 让结构体指针指向这块共享内存*/shared_stuff=(struct shared_use_st *)shared_memory;/* 控制读写顺序*/shared_stuff->written_by_you=0;/* 循环的从共享内存中读数据,直到读到“ end为”止*/while(running){if(shared_stuff->written_by_you){printf("You wrote:%s",shared_stuff->some_text);sleep(1); //读进程睡一秒,同时会导致写进程睡一秒,这样做到读了之后再写shared_stuff->written_by_you=0;if(strncmp(shared_stuff->some_text,"end",3)==0){running=0; // 结束循环}}}实验结果:实验结论:内存共享中应该含有安全防护机制,内存在共享的同时应该做到内存的保护,共享内存段是更应该做到安全高效共享。
应当加强训练共享内存段申请原则,多多学习管道运输的实现。
实验报告五实验题目:虚拟内存实验目的:模拟替换算法技术,编程实现 LRU和 CLOCK算法,掌握替换算法技术,完全实现替换策略。
实验主要函数:void lru_p(int n,int m,int proc[]);void clock_p(int n,int m,int proc[]);实验代码 :#include <stdio.h>#include <time.h>// 准备用时钟函数调用库函数#include <iostream>using namespace std;void lru_p(int n,int m,int proc[]){cout<<"------------------------------------------"<<endl;cout<<" 这是 least recently used:"<<endl;struct page{int time;int pro;};struct page *p=(struct page*)malloc(n*sizeof(page));int i = 0;int flag = 0;//记录是否满页int exit;//初始化时间for(int j=0;j<n;j++){p[j].time=0;}while(i<m){// 初始化进程不占用页exit=0;for(j = 0;j <flag;j++){p[j].time++;if(p[j].pro == proc[i]) // 处理相同如何情况下的相同进程{exit=1;p[j].time=1;}}if(exit==0&&(flag<n))// 没有相同进程且不缺页{ p[flag].pro=proc[i];p[flag].time=1;flag++;}elseif(exit==0)//处理缺页没有相同进程但缺页{int key=0;int maxtime=p[0].time;for(j=1;j<n;j++)if(maxtime<p[j].time){maxtime=p[j].time; key=j;}p[key].pro=proc[i];p[key].time=1;}//输出for(j=0;j<flag;j++){printf(" %d",p[j].pro);}cout<<endl;i++;}}void clock_p(int n,int m,int proc[]){cout<<"------------------------------------------"<<endl;cout<<" 这是 clock:"<<endl;struct page{int flag;int pro;};struct page *p=(struct page*)malloc(m*sizeof(page)); ..//初始化队列for(int k=0;k<n;k++)p[k].flag=0;int i=0;int next;int j=0;//标记初始位置int mart=0;while(i<m){next=1;while(next){for(k=0;k<mart;k++){if(p[k].pro==proc[i]){next=0;}}if(next){if(!p[j].flag){p[j].pro=proc[i];p[j].flag=1;next=0;if(mart<n)mart++;}else{p[j].flag=0;next=1;if(mart<n)mart++;}j++;j=j%n;}}//输出i++;for(k=0;k<mart;k++)printf(" %d",p[k].pro);cout<<endl;}}void main(){int pages;cout <<" 输入页面数: ";cin>>pages;cout<<" 输入你的进程个数:";int m;cin>>m;cout<<" 输入你的进程ID:";int *proc=new int[m];for(int i=0;i<m;i++)cin>>proc[i];lru_p(pages,m,proc);clock_p(pages,m,proc);}实验结果:实验结论:替换策略是计算机高效工作,充分利用资源,而不同的替换算法都有自己的利弊,不同的场景应充分权衡利弊进行选择。