操作系统实验报告 实验三

合集下载

操作系统安装与配置实验报告

操作系统安装与配置实验报告

操作系统安装与配置实验报告操作系统安装与配置实验报告。

一、实验目的。

本次实验的目的是学习和掌握操作系统的安装与配置方法,了解操作系统的基本概念和原理,以及掌握操作系统的基本操作和常用命令。

二、实验过程。

1. 实验环境准备。

在实验开始之前,我先准备了一台计算机和相关的安装光盘或镜像文件。

我选择了Windows 10操作系统进行安装和配置。

2. 操作系统安装。

我按照实验指导书的步骤,先将安装光盘或镜像文件插入计算机,并重启计算机。

然后按照提示进入安装界面,选择安装语言、键盘布局等选项。

接着,我选择了自定义安装,对硬盘进行分区和格式化。

最后,我填写了计算机的用户名和密码,完成了操作系统的安装。

3. 操作系统配置。

安装完成后,我进行了一些基本的操作系统配置。

首先,我设置了计算机的名称和网络设置,以便与其他设备进行通信。

然后,我进行了系统更新,安装了最新的补丁和驱动程序,以确保系统的安全性和稳定性。

接下来,我调整了系统的显示设置、声音设置和电源管理等选项,以适应个人的使用习惯。

最后,我安装了一些常用的软件和工具,以提高工作效率。

三、实验结果。

经过以上的操作,我成功地安装和配置了操作系统。

系统运行稳定,各项功能正常。

我能够使用操作系统的基本功能,如文件管理、应用程序运行等。

同时,我也学会了一些常用的命令,如文件夹的创建、复制、删除等。

四、实验总结。

通过本次实验,我对操作系统的安装与配置有了更深入的了解。

我学会了如何安装操作系统,并对系统进行基本的配置和优化。

同时,我也掌握了一些常用的操作系统命令,提高了自己的操作能力。

在今后的学习和工作中,我将能够更好地使用操作系统,并解决一些常见的问题。

总之,本次实验对我来说是一次很有意义的学习和实践机会。

通过实际操作,我不仅巩固了课堂上学到的知识,还提高了自己的实际操作能力。

我相信,通过不断地学习和实践,我将能够更好地掌握操作系统的安装与配置方法,并在将来的工作中发挥更大的作用。

操作系统原理实验报告

操作系统原理实验报告

《操作系统原理》实验报告班级::学号:指导老师:目录:实验题目:实验一线程创建与撤销 (2)实验题目:实验二线程同步 (6)实验题目:实验三线程互斥 (11)实验题目:实验四进程通信 (17)实验题目:实验五读者-写者问题 (22)实验题目:实验六进程调度 (38)实验题目:实验七存储管理之动态库 (52)实验题目:实验八存储管理之存分配 (57)实验题目:实验九存储管理之页面置换算法 (70)实验题目:实验十设备管理 (85)实验题目:实验十一文件管理之文件读写 (99)实验题目:实验一线程创建与撤销完成人:XXX报告日期:2018年3月31日一、实验容简要描述(1)熟悉VC++、Visual Studio开发环境。

(2)使用相关函数创建和撤销线程。

(3)在一个进程中创建3个线程,名字分别为threada、threadb、threadc。

threada输出“hello world! ”。

threadb输出“My name is …”。

threadc输出“Please wait…”,然后sleep 5秒钟,接着输出“I wake up”。

二、程序设计1、设计思路该函数创建一个在调用进程的地址空间中执行的线程。

2、主要数据结构HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,DWORD dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpParameter,DWORD dwCreationFlags,LPDWORD lpThreadId);VOID ExitThread(DWORD dwExitCode);VOID Sleep(DWORD dwMilliseconds);VOID Sleep(DWORD dwMilliseconds);三、实验结果1、基本数据lpThreadAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否可被子进程继承。

操作系统实验报告

操作系统实验报告

操作系统实验报告专业:软件工程姓名:李程星学号:2011221104220092实验一操作系统的用户界面LINUX操作系统提供了图形用户界面和命令行界面,本实验主要熟悉命令行界面,为后续的实验编程做准备。

一、系统启动1. 开机,选择进入Linux系统,约40秒后系统启动成功,系统提示输入用户名:user输入口令:111111 然后进入Linux系统桌面。

2.进入Linux命令行方式单击小红帽图标,选择“系统工具”,单击“终端”图标,出现Linux的shell提示符.....@......$,,即可输入命令。

实验二进程管理一、实验目的(1)加深对进程概念的理解,明确进程和程序的区别。

(2)进一步认识并发执行的实质。

二、实验内容1、进程的创建执行下面的程序,分析执行的结果。

#include <stdio.h>main(){ int i;printf("just 1 process.\n");i=fork();if (i==0)printf("I am child.\n");elseif (i>0)printf("I am parent.\n");elseprintf("fork() failed.\n");printf("program end.\n");}输出结果:just 1 process.I am parent.program end.I am a child.program end.2、进程的同步执行下面的程序,分析执行的结果。

#include <stdio.h>main(){ int i;printf("just 1 process.\n");i=fork();if (i>0){printf("I am parent.\n");wait();}elseif (i==0) {printf("I am child.\n");exit(1);}printf("program end.\n");}输出结果:just 1 process.I am parent.I am child.program end.3、进程的延迟执行下面的程序,分析执行的结果。

OS实验六——精选推荐

OS实验六——精选推荐

OS实验六《操作系统》实验报告实验三进程管理及进程通信⼀.实验⽬的利⽤Linux提供的系统调⽤设计程序,加深对进程概念的理解。

体会系统进程调度的⽅法和效果。

了解进程之间的通信⽅式以及各种通信⽅式的使⽤。

⼆.实验准备复习操作系统课程中有关进程、进程控制的概念以及进程通信等内容(包括软中断通信、管道、消息队列、共享内存通信及信号量概念)。

熟悉本《实验指导》第五部分有关进程控制、进程通信的系统调⽤。

它会引导你学会怎样掌握进程控制。

阅读例程中的程序段。

三.实验⽅法⽤vi 编写c 程序(假定程序⽂件名为prog1.c)编译程序$ gcc -o prog1.o prog1.c 或$ cc -o prog1.o prog1.c运⾏$./prog1.o四.实验内容及步骤⽤v i编写使⽤系统调⽤的C语⾔程序。

1.编写程序。

显⽰进程的有关标识(进程标识、组标识、⽤户标识等)。

经过5 秒钟后,执⾏另⼀个程序,最后按⽤户指⽰(如:Y/N)结束操作。

编译运⾏结果:2.编写程序。

实现⽗进程创建⼀个⼦进程。

体会⼦进程与⽗进程分别获得不同返回值,进⽽执⾏不同的程序段的⽅法。

编译运⾏:思考:⼦进程是如何产⽣的?⼜是如何结束的?⼦进程被创建后它的运⾏环境是怎样建⽴的?答:⼦进程由fork()函数创建,通过exit()函数⾃我结束,⼦进程被创建后核⼼将为其分配⼀个进程表项和进程标识符,检查同时运⾏的进程数⽬,并且拷贝进程表项的数据,由⼦进程继承⽗进程的所有⽂件。

3.编写程序。

⽗进程通过循环语句创建若⼲⼦进程。

探讨进程的家族树以及⼦进程继承⽗进程的资源的关系。

程序如下:编译运⾏:思考:①画出进程的家族树。

⼦进程的运⾏环境是怎样建⽴的?反复运⾏此程序看会有什么情况?解释⼀下。

183922472248 2252 22542249 2251 22532250每⼀次运⾏返回的进程号都不相同,但是都符合家族进程树,出现这样的情况是由于系统本⾝就是随机分配进程号的。

操作系统-实验三-进程管理-实验报告

操作系统-实验三-进程管理-实验报告

计算机与信息工程学院实验报告一、实验内容1.练习在shell环境下编译执行程序(注意:①在vi编辑器中编写名为sample.c的c语言源程序②用linux自带的编译器gcc编译程序,例如:gcc –o test sample.c③编译后生成名为test.out的可执行文件;④最后执行分析结果;命令为:./test)注意:linux自带的编译程序gcc的语法是:gcc –o 目标程序名源程序名,例如:gcc –o sample1 sample1.c,然后利用命令:./sample 来执行。

如果仅用“gcc 源程序名”,将会把任何名字的源程序都编译成名为a.out的目标程序,这样新编译的程序会覆盖原来的程序,所以最好给每个源程序都起个新目标程序名。

2.进程的创建仿照例子自己编写一段程序,使用系统调用fork()创建两个子进程。

当此程序运行时,在系统中有一个父进程和两个子进程活动。

让每一个进程在屏幕上显示一个字符:父进程显示“a”,子进程分别显示字符“b”和“c”。

观察记录屏幕上的显示结果,并分析原因。

3.分析程序实验内容要在给出的例子程序基础上,根据要求进行修改,对执行结果进行分析。

二、实验步骤1. 利用fork()创建一个小程序(1)编写程序#include <sys/types.h>main (){int i=5;pid_t pid;pid=fork();for(;i>0;i--){if (pid < 0)printf("error in fork!");else if (pid == 0)printf("i am the child process, my process id is %d and i=%d\n",getpid(),i);elseprintf("i am the parent process, my process id is %d and i=%d\n",getpid(),i);}for(i=5;i>0;i--){if (pid < 0)printf("error in fork!");else if (pid == 0)printf("the child process, my process id is %d and i=%d\n",getpid(),i);elseprintf("the parent process, my process id is %d andi=%d\n",getpid(),i);}}(2)运行程序(3)分析程序在这里,主程序先运行,在屏幕上输出一个a,之后两个子程序分别运行而输出c和b。

2023年最新的操作系统文件管理实验报告三篇

2023年最新的操作系统文件管理实验报告三篇

2023年最新的操作系统文件管理实验报告三篇操作系统文件管理实验报告一篇一、实训主要内容Word排版,表格制作与编辑。

Powerpoint的制作,初步认识计算机办公应用OFFICE。

二、实训过程第一天:初步熟悉计算机的性能和认识Word;第二天:练习Word题;第三天:认识Powerpoint并对昨天的Word练习予以测试;Excel实训作业第四天:将Word表格与Powerpoint的制作熟悉巩固;第五天:老师再次对我们Word与Powerpoint测验以及教我们一些有用的技能与方法,初步认识计算机办公应用。

OFFICE。

三、实训心得体会很快的,一个假期又过来了,面对本学期最后一次的校园生活实训,想着刚刚过去的最后一个周,紧张沉默之后更多的是感慨,印在脑海里的每一个足迹都是那么的深,真的说不出是什么感觉,伴着时间,就像是在和自己的影子赛跑,不可能从真实的两面去看清它,只是经意不经意的感受着有种东西在过去,也许更适合的只有那句话:时不待我,怎可驻足一周,短短的一周,我学到了很多不知道的东西,实在是感受颇深。

当今企业竞争范围的伴随社会市场经济的发展以及信息化程度的不断提高而日益扩大,这样就要求企业在各个方面加强管理,要求企业有更高的信息化集成来实现对企业的整体资源进行集成管理。

现代企业都意识到,企业之间的竞争是综合实力的竞争,要求企业有更强的资金实力,具备强有力的管理能力和更快的市场响应速度。

因此,引入计算机系统的意义是非常重大的。

在社会主义市场经济高速发展的今天,如果计算机的各项管理运做仍然停滞在以纸、笔为主要工具的阶段,就会因为信息量的快速增长而无法迅速、准确的运用计算机完成各项工作,这样,必将成为企业各方面发展的一个瓶颈。

而在当代这个以信息时代为主题的社会里,计算机技术高速发展,将信息技术应用于对现代企业的管理日益普及。

计算机技术不但可以提高信息的处理速度和提高信息处理的准确性,更重要的是,可以进一步的解放劳动力,将他们分配到更需要人力资源的岗位上去,从而加快社会工作的现代化、综合化的发展步伐。

《操作系统》系统进程实验报告

《操作系统》系统进程实验报告

《操作系统》系统进程实验报告
hongdingjin
实验一(写出最常见和感兴趣的10个)
1、explorer.exe
Windows资源管理器,它用于管理图形用户界面,包括开始菜单、任务栏、桌面和文件。

2、Svchost.exe
Windows操作系统进程,加载并执行系统服务指定的动态链接库文件。

3、smss.exe
Windows操作系统进程,调用对话管理子系统和负责操作系统对话。

4、lsass.exe
Windows操作系统的本地安全权限服务,控制Windows系统的安全机制。

5、sqlswevr.exe
Microsoft SQL Server服务套装的一部分,用于支持微软SQL基础服务。

6、mysqld.exe
Mysql中Windows mysql server数据库服务器相关程序,用于加载该系统相关数据库服务组件。

7、SPOOLSV.exe
将文件加载到内存中以便迟后打印。

8、Winlogon.exe
管理用户登录。

9、ismserv.exe
允许在 Windows Advanced Server 站点间发送和接收消息。

10、smlogsvc.exe
配置性能日志和警报。

实验二(自己下载Process Viewer等查看进程软件,查看某进程的进程树。


Process Viewer程序界面
查看360SE.exe的进程树
实验三(自己在网络搜索并下载进程分析软件,看是否有可疑进程。

)360安全卫士进程管理器是一个不错的查看进程分析软件。

经查,没有发现可疑进程。

《操作系统》课程实验报告

《操作系统》课程实验报告

《操作系统》课程实验报告一、实验目的本次《操作系统》课程实验的主要目的是通过实际操作和观察,深入理解操作系统的工作原理、进程管理、内存管理、文件系统等核心概念,并掌握相关的操作技能和分析方法。

二、实验环境1、操作系统:Windows 10 专业版2、开发工具:Visual Studio Code3、编程语言:C/C++三、实验内容(一)进程管理实验1、进程创建与终止通过编程实现创建新进程,并观察进程的创建过程和资源分配情况。

同时,实现进程的正常终止和异常终止,并分析其对系统的影响。

2、进程同步与互斥使用信号量、互斥锁等机制实现进程之间的同步与互斥。

通过模拟多个进程对共享资源的访问,观察并解决可能出现的竞争条件和死锁问题。

(二)内存管理实验1、内存分配与回收实现不同的内存分配算法,如首次适应算法、最佳适应算法和最坏适应算法。

观察在不同的内存请求序列下,内存的分配和回收情况,并分析算法的性能和优缺点。

2、虚拟内存管理研究虚拟内存的工作原理,通过设置页面大小、页表结构等参数,观察页面的换入换出过程,以及对系统性能的影响。

(三)文件系统实验1、文件操作实现文件的创建、打开、读取、写入、关闭等基本操作。

观察文件在磁盘上的存储方式和文件系统的目录结构。

2、文件系统性能优化研究文件系统的缓存机制、磁盘调度算法等,通过对大量文件的读写操作,评估不同优化策略对文件系统性能的提升效果。

四、实验步骤(一)进程管理实验步骤1、进程创建与终止(1)使用 C/C++语言编写程序,调用系统函数创建新进程。

(2)在子进程中执行特定的任务,父进程等待子进程结束,并获取子进程的返回值。

(3)通过设置异常情况,模拟子进程的异常终止,观察父进程的处理方式。

2、进程同步与互斥(1)定义共享资源和相关的信号量或互斥锁。

(2)创建多个进程,模拟对共享资源的并发访问。

(3)在访问共享资源的关键代码段使用同步机制,确保进程之间的正确协作。

(4)观察并分析在不同的并发情况下,系统的运行结果和资源竞争情况。

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

昆明理工大学信息工程与自动化学院学生实验报告(2012 —2013 学年第二学期)课程名称:操作系统开课实验室:信自楼445 2013 年 5 月 16 日一、实验要求对给定的一个页面走向序列,请分别用先进先出算法和二次机会算法,计算淘汰页面的顺序、缺页次数和缺页率,具体的页面走向可参考教材例题或习题。

二、实验目的存储管理的主要功能之一是合理地分配空间。

请求页式管理是一种常用的虚拟存储管理技术。

通过本次实验,要求学生通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解,通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。

三、实验原理及基本技术路线图(方框原理图)用C或C++语言模拟实现请求式分页管理。

要求实现:页表的数据结构、分页式内存空间的分配及回收(建议采用位图法)、地址重定位、页面置换算法(从FIFO,LRU,NRU中任选一种)。

提示:可先用动态申请的方式申请一大块空间,然后假设该空间为内存区域,对该空间进行流程图:数据结构定义:我提供定义了两个类。

第一个类就是页面类,在这类里面包括一些重要的数据成员。

有页号(page_no),页框号(frame_no),页面是否在内存的标志(flag(1表示在内存,0表示不在内存)),访问次数(times)。

另一个类是进程控制块类PCB。

类的数据成员有id(进程编号),name(进程名),size(进程大小),*p(页类指针)。

在本类中,有一些成员函数:构造函数(用来初始化本类的所有数据),displayPCB(输出函数),convert(地址映射函数),allocation(分配函数),restore(回收函数)。

另外还有一些类外的函数:initMemorySpace(初始化内存空间的函数),displayMemorySpace(输出内存空间的状态1(表示占用)0(表示空))。

四、所用仪器、材料(设备名称、型号、规格等)。

计算机一台五、实验方法、步骤程序代码:#include<iostream>#include<string>#include<ctime>using namespace std;const int frame_size=1024;//页框长度,固定为 1kconst int page_size=1024;//页面长度,固定为 1kconst int memory_size=102400;//内存容量,固定为 100kconst int frame_number=memory_size/frame_size;// 100k/1k=100 framesint *memory;//指针变量,用来存内存的状态1还是0。

void initMemorySpace()//初始化内存空间{int i,ran,times;time_t t;//定义time_t对象 tt=time(0);srand(t);//随机改变每秒times=0;//变量times初始化为0,变量的功能是检查内存空间是否有一半空了没。

memory=new int[frame_number];//申请内存空间,有frame_number 这么大的空间for(i=0;i<frame_number;i++)//首选循环页框数次memory[i]=1;//初始化全部为1do{ran=rand()%frame_number;//随机空间位置if(memory[ran]==0)continue;//如果当前的位置已经是空就要再循环else//否则{memory[ran]=0;//内存空间在ran的位置为0(空)times++;//times变量增加一个}}while(times<=(frame_number/2));//空的空间还没到内存空间的一半,再循环}void displayMemorySpace()//输出内存空间状态,1还是0{int i;cout<<"内存空间(0 表示空,1表示占用)"<<endl;for(i=0;i<frame_number;i++)//循环页框数次{cout<<memory[i]<<" ";//输出1或者0if((i+1)%10==0)cout<<endl;//到第10个列回车一次}}class page//定义页表类 page{public:int logic_no;//定义页号变量int frame_no;//定义页框号变量int flag;//定义内存标志变量,1 表示在内存, 0表示不在int times;//定义访问次数变量};class PCB//定义进程控制块类 PCB{private:static int id;//定义静态进程编号变量string name;//定义进程名为字符串类int size;//定义进程大小int page_number;//定义页面总数变量int given_frame;//定义系统给的页框数变量page *p;//类page的指针变量public:PCB();//本类的构造函数void displayPCB();//输出进程和页表的重要信息void convert();//地址映射函数,也有淘汰方法(最近最少使用方法LRU)int allocation(int);//分配函数。

函数里是按到页框号分配的void restore();//回收函数。

用来回收内存空间};int PCB::id=0;//初始化进程编号void PCB::restore()//实现restore函数在类外{int i;for(i=0;i<given_frame;i++)//循环given_frame次{memory[p[i].frame_no]=0;//请求到的页框号的内存空间改到被占用}}int PCB::allocation(int frame_no)//实现allocation函数体在类外部{if(memory[frame_no]==0)//如果内存空间是空的话{memory[frame_no]=1;//改该空间位置到1return 1;//返回1}return 0;//如果对应的页框号在内存没有空间的话,返回0}PCB::PCB()//实现构造函数体{int i,j,unused_page,*random_page,*page_no_array;time_t t;t=time(0);srand(t);id++;//自动增加进程编号一个cout<<"请输入进程名:";cin>>name;//输入进程名size=3072+rand()%48128;//初始化进程大小,随机从 3 页数到 50 页page_number=(size/1024);//计算出页面数,进程大小除以一个页面的长度given_frame=(page_number*2)/3;//固定页框数只是总页面数的三分之二unused_page=page_number-given_frame;//空页面p=new page[page_number];//动态初始化类page的指针对象prandom_page=new int[given_frame];//动态初始化random_page指针变量page_no_array=new int[page_number];//动态初始化page_no_array指针变量for(i=0;i<given_frame;i++)//循环given_frame次数{while(1){int record=0;random_page[i]=rand()%page_number;//随机从0到page_number-1for(j=0;j<i;j++){if(random_page[i]==random_page[j]) record++;//如果当前随机的值等于以前值}if(record==0)break;//如果当前随机的值不等于以前值}}for(i=0;i<page_number;i++)//循环page_number次{int record=0;for(j=0;j<given_frame;j++){if(random_page[j]==i)record++;}if(record==0) page_no_array[i]=0;//如果第i个没有在random_page中,所以赋值为0else page_no_array[i]=1;//否则第i个就赋值为1}for(i=0;i<page_number;i++)//循环page_number次{if(page_no_array[i]==1)//如果第i的page_no_array等于1,表示要放也页面{p[i].logic_no=i;//赋i的值给页号do{while(1){int record=0;p[i].frame_no=rand()%frame_number;//随机页框号,从0到frame_number-1for(int j=0;j<i;j++){if(p[i].frame_no==p[j].frame_no) record++;}if(record==0)break;//如果当前随机的值没有跟以前的值一样的话,结束 loop while(1)}}while((allocation(p[i].frame_no))==0);//如果要放到内存的位置不为空的话,再循环p[i].flag=1;//页面在内存p[i].times=1;//初始化访问次数为1}else//如果第i的page_no_array不等于1,表示是空页面{p[i].logic_no=i;//赋i的值给该页号p[i].frame_no=-1;//赋-1给页框号,表示不在内存p[i].flag=0;//赋0给flag,表示不在内存p[i].times=0;//赋0给times,表示不在内存}}}void PCB::displayPCB()//实现displayPCB函数体{int i;cout<<"进程 ID: "<<id<<endl<<"进程名: "<<name<<endl<<"进程大小: "<<size<<endl;cout<<"页号\t页框号\t内存标志访问次数"<<endl;for(i=0;i<page_number;i++){cout<<" "<<p[i].logic_no<<"\t "<<p[i].frame_no<<"\t "<<p[i].flag<<"\t "<<p[i].times<<endl;}}void PCB::convert()//实现地址映射函数体{int logicAddress,logicNumber,physicsAddress,innerAddress,physicsNumber,temppage,time,i;//定义逻辑地址变量,逻辑页号,物理地址,页内地址,物理块号变量,和一些暂用变量time=1000;//初始化time为1000表示最大访问次数char ch;do{cout<<"Please input logic address: ";cin>>hex>>logicAddress;//输入逻辑地址为16进制logicNumber=logicAddress>>10;//算出逻辑页号为高位if(page_number-1<logicNumber) {cout<<"你输入的逻辑地址超过页表"<<endl;}else{cout<<"Page No: "<<logicNumber<<endl;innerAddress=logicAddress & 0x03ff;//页内地址为低10位cout<<"Inner Address: "<<innerAddress<<endl;if(p[logicNumber].flag==1)//如果算出的逻辑页号在内存,所以可以直接转换到物理地址,只要改对应页面的访问次数{p[logicNumber].times++;//对应的访问次数增加一个}else{for(i=0;i<page_number;i++)//循环所有页面在页表中,哪一个有最少的访问次数{if(p[i].flag==1)//只要在内存才找比较{if(p[i].times<time)//如果当前的访问次数比最大的访问次数小{time=p[i].times;//把最小的访问次数赋给变量timetemppage=p[i].logic_no;//然后把该页面的页号赋给要 temppage(要淘汰的页面)}}}cout<<"Page No:"<<temppage<<" need to be replaced"<<endl;p[temppage].flag=0;//要淘汰的页面的内存标志的值改为0p[temppage].times=0;//要淘汰的页面的访问次数改为0p[logicNumber].frame_no=p[temppage].frame_no;//把要淘汰的页面的页框号赋给新的页面p[logicNumber].flag=1;//新的页面的内存标志改为1p[logicNumber].times++;//新的页面的访问次数增加p[temppage].frame_no=-1;//要淘汰页面的页框号该为-1}physicsNumber=p[logicNumber].frame_no;//按逻辑页号找到页框号cout<<"Physics Number: "<<physicsNumber<<endl;physicsAddress=physicsNumber<<10|innerAddress;//按页框号和页内地址算出物理地址cout<<"Physic Address: "<<physicsAddress<<endl;displayPCB();//输出进程和页表信息displayMemorySpace();//输出内存信息的状态}cout<<"是否继续进程请求分页(Y/N)?:";do{ch=getchar();//输入一个字符ch=toupper(ch);//转换它到大字}while(ch!='Y'&&ch!='N');//如果输入不是y或者n的话,再输入}while(ch=='Y');//输入y的话,再循环loop do}void main()//主函数{initMemorySpace();//初始化内存空间displayMemorySpace();//输出内存空间状态PCB p;//定义p.displayPCB();//输出进程和页表的信息cout<<endl;p.convert();//调用地址映射函数}六、实验过程原始记录(数据、图表、计算等) 运行截图:七、实验结果、分析和结论(误差分析与数据处理、成果总结等。

相关文档
最新文档