西安石油大学操作系统原理实验虚拟页式管理1
操作系统原理实验
操作系统原理实验一、实验目的本实验旨在通过实际操作,加深对操作系统原理的理解,掌握操作系统的基本功能和调度算法。
二、实验环境1. 操作系统:Windows 102. 虚拟机软件:VirtualBox3. 实验工具:C语言编译器(如gcc)、汇编语言编译器(如nasm)、调试器(如gdb)三、实验内容1. 实验一:进程管理在这个实验中,我们将学习如何创建和管理进程。
具体步骤如下:a) 创建一个C语言程序,实现一个简单的计算器功能。
该计算器能够进行基本的加减乘除运算。
b) 使用fork()系统调用创建一个子进程,并在子进程中执行计算器程序。
c) 使用wait()系统调用等待子进程的结束,并获取子进程的退出状态。
2. 实验二:内存管理在这个实验中,我们将学习如何进行内存管理。
具体步骤如下:a) 创建一个C语言程序,模拟内存分配和释放的过程。
该程序能够动态地分配和释放内存块。
b) 使用malloc()函数分配一块内存,并将其用于存储数据。
c) 使用free()函数释放已分配的内存块。
3. 实验三:文件系统在这个实验中,我们将学习如何进行文件系统的管理。
具体步骤如下:a) 创建一个C语言程序,实现一个简单的文件系统。
该文件系统能够进行文件的创建、读取、写入和删除操作。
b) 使用open()系统调用打开一个文件,并进行读取和写入操作。
c) 使用unlink()系统调用删除一个文件。
四、实验步骤1. 安装虚拟机软件VirtualBox,并创建一个虚拟机。
2. 在虚拟机中安装操作系统Windows 10。
3. 在Windows 10中安装C语言编译器、汇编语言编译器和调试器。
4. 根据实验内容,编写相应的C语言程序并保存。
5. 在命令行中使用gcc编译C语言程序,并生成可执行文件。
6. 运行可执行文件,观察程序的执行结果。
7. 根据实验要求,进行相应的操作和测试。
8. 完成实验后,整理实验报告,包括实验目的、实验环境、实验内容、实验步骤和实验结果等。
操作系统原理与实训教程
操作系统原理与实训教程
“哇,这电脑咋又卡了呢?”我嘟囔着。
旁边的小伙伴凑过来:“嘿,你知道不?电脑卡可能是操作系统出问题啦。
”
咱先说说啥是操作系统原理呗。
这操作系统就像一个大管家,管着电脑里的各种事儿。
它有好多关键部件呢,就像大脑有不同区域负责不同功能一样。
比如说有内核,这内核就像是心脏,给整个系统提供动力。
还有文件系统,那文件系统就像个大仓库,把咱的照片、文档啥的都好好放着。
那操作系统是咋工作的呢?它就像个指挥家,指挥着电脑里的各个程序。
当你打开一个软件的时候,操作系统就会给它分配资源,让它能顺利运行。
比如说内存呀、CPU 时间啥的。
这就好比老师给同学们分任务,让大家都能有事干。
那这操作系统在生活中有啥用呢?就说有一天,我和爸爸妈妈一起想找出去旅游的照片。
这时候操作系统的文件系统就派上用场啦。
我们很容易就找到了那些照片,回忆起了美好的时光。
要是没有操作系统,那找照片可就像大海捞针一样难喽!
操作系统真的太重要啦!它就像我们生活中的小助手,让我们的电脑生活变得更加方便。
没有它,电脑可就没法好好工作啦。
所以说,咱可得
好好爱护这个大管家。
虚拟页面管理实验报告(3篇)
第1篇一、实验目的1. 理解虚拟存储器的概念和作用。
2. 掌握分页式存储管理的基本原理和地址转换过程。
3. 熟悉几种常见的页面置换算法,并比较其优缺点。
4. 通过实验,加深对虚拟存储器管理机制的理解。
二、实验内容1. 模拟分页式存储管理中的地址转换过程。
2. 比较几种常见的页面置换算法:FIFO、LRU、LFU和OPT。
三、实验原理虚拟存储器是一种将内存和磁盘结合使用的存储管理技术,它允许程序使用比实际物理内存更大的地址空间。
虚拟存储器通过将内存划分为固定大小的页(Page)和相应的页表(Page Table)来实现。
1. 分页式存储管理分页式存储管理将内存划分为固定大小的页,每个页的大小相同。
程序在运行时,按照页为单位进行内存访问。
分页式存储管理的主要优点是内存碎片化程度低,便于实现虚拟存储器。
2. 页面置换算法当内存中没有足够的空间来存放新请求的页面时,需要将某个页面从内存中移除,这个过程称为页面置换。
以下介绍几种常见的页面置换算法:(1)FIFO(先进先出):优先淘汰最早进入内存的页面。
(2)LRU(最近最少使用):优先淘汰最近最少被访问的页面。
(3)LFU(最不频繁使用):优先淘汰最不频繁被访问的页面。
(4)OPT(最佳置换):优先淘汰未来最长时间内不再被访问的页面。
四、实验步骤1. 模拟分页式存储管理中的地址转换过程(1)创建一个模拟内存的数组,表示物理内存。
(2)创建一个模拟页表的数组,用于存放虚拟页号和物理页号之间的映射关系。
(3)模拟进程对内存的访问,将访问的虚拟页号转换为物理页号。
2. 比较几种常见的页面置换算法(1)创建一个模拟进程的数组,包含访问的虚拟页号序列。
(2)对每个页面置换算法,模拟进程的运行过程,记录缺页中断次数。
(3)计算不同页面置换算法的缺页率,并比较其性能。
五、实验结果与分析1. 分页式存储管理中的地址转换过程实验结果表明,分页式存储管理能够有效地将虚拟地址转换为物理地址,实现虚拟存储器。
操作系统原理实验报告
操作系统原理实验报告操作系统原理实验报告一、课程设计的题目:根据“操作系统原理”课程的课堂教学内容,结合自己的知识积累情况,题目可从下述拟题中选择,亦可自定。
二、实验设计的内容:在Linux或Windows操作系统下,用C语言进行操作系统相关的设计开发,内容可关于“并发程序设计”、“处理机管理”、“用户接口”、“存储管理”、“文件系统管理”、“设备管理”等等。
三、参考资料:1、清华大学出版,张尧学《计算机操作系统教程》配套的《习题解答与实验指导书》中范例;2、清华大学出版,任爱华《操作系统实用教程》中的实例设计;3、《Linux下C语言编程入门教程》、《Linux软件工程师(C 语言)实用教程》等;4、网上与操作系统设计与开发相关的文献资料。
四、重要操作环节1、步骤:选题(2~3人一小组)--→提交小组名单--→分析、编写程序--→上机调试--→分析结果--→评价结果--→写出设计报告2、设计报告的主要内容:①、设计说明:设计主要完成的任务、解决的主要问题;②、工作原理:找出教材中的相关工作原理并简要说明;③、详细设计:包括调用的主要系统函数说明、程序流程图、程序代码、关键语句注释;④、运行结果:要求写出运行结果或抓图给出;⑤、分析结果:要求用操作系统原理有关理论解释说明;⑥、调试步骤以及调试过程中出现的问题及解决方法;⑦、参考文献:5篇以上;⑧、以学年论文格式提交文档资料,要有统一的封面和实验心得体会。
五、成绩评定1、各小组轮流演示小组作品,演示完毕,由其他小组的同学提2个以上问题,回答完毕打分;3、打分遵循原则如下:注意:①以下必做实验每小组都要做②以下选做实验,1个实验题目至多允许2个小组选,各小组也可以自拟题目必做实验(四个,都要做)实验一1. 实验名称:Linux登录、注销、关机和基本操作一。
2. 实验要求:掌握Linux系统的登录、注销、关机方法;掌握列出文件清单命令的使用方法:ls;掌握目录的切换命令的使用:cd;掌握目录的建立、删除命令的使用:mkdir、rmdir;掌握文件的拷贝、删除、移动命令的使用:cp、rm、mv 。
西安石油大学信息系统实验一高校设备管理系统可行性分析
高校设备管理系统可行性分析实验报告课程名称:信息系统分析与设计班级:计科1201学号:201107010122姓名:张文江指导教师:黄全舟实验时间:2015-11-22一.国内研究现状和发展趋势近十几年来,我国各高校规模不断扩大,管理方式不断改变,同时在仪器设备管理方面取得了很大的进步。
许多高校已经开发出自己的设备信息管理系统,但仍然存在不足之处,不能适应新形势发展要求,主要体现在以下方面:1)部分设备管理系统处于单机运行的阶段,无法适应信息时代信息充分共享和协同办公的需要。
各高校设备管理部门虽然都采用计算机进行管理,但大多是单机版,各部门之间的信息交流依然靠手工,管理人员要花费大量的时间用于处理用户查询等工作,这与高校的信息化进程快速发展不相适应。
设备资源信息封闭,不能实现设备信息公开、共享程度低。
2)高校设备的管理存在着轻视管理和维护的弊端。
长期以来由于管理不善,大量的设备长期闲置,设备故障无人修理,直接影响仪器设备使用的效率,造成教育资源的严重浪费。
3)一些设备管理系统虽然能够实现联网工作,但是功能单一,缺少信息互动和网络优化办公的优势。
虽然能实现联网工作,但是涉及面很小,管理效率低,缺乏系统性、广泛性和协同性的管理。
二.项目研发内容、关键技术和目标信息管理系统合理的借鉴国际领先的设备管理思想并结合国内学校设备管理现状,经过长期的调查,完全能满足国内一般仪器设备管理的需要。
并通过对各行业设备管理情况的长期研究探索,以灵活、通用为主要设计思想,开发适合于学校设备管理的信息系统。
使用本系统之后,将会提高学校的办公效率和设备可靠性,减少工作人员的劳动强度,减少办公耗材,提高学校的现代化管理水平。
现代化的高校实验室规模一般较大,传统的仪器设备管理方式往往跟不上发展的需要,及时了解实验室设备的明确动向与状态对实验室设备的使用效率至关重要,也是实验室完成预算与决策的关键因素。
针对这些,本系统采用浏览器/服务器模式,选用SQL Server作为后台数据库,利用JSP作为前台开发工具来开发仪器设备管理系统。
操作系统原理实验报告
《操作系统原理》实验报告班级::学号:指导老师:目录:实验题目:实验一线程创建与撤销 (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结构,该结构决定了返回的句柄是否可被子进程继承。
西安石油大学操作系统实验三文件管理
一实验题目1.内容:模拟文件存储空间的管理,采用空白文件目录法和空白块链法实施空间分配。
2.思想:文件存储空间管理是文件系统的重要内容。
常用的管理思想有空白文件目录法、空白块链法和位示图法。
本实验采用前两种方法进行空间分配。
(1)空白文件目录法进行空间分配时,需要建立相关的数据结构,记录目前空白区域和已使用区域,假设开始时全部区域空闲。
当有文件需要存储时,先检查空白文件目录,找到适合区域立即分配,并修改空白文件目录表和已使用区域分配表。
为此需建立两张表格,分别记录相关数据。
空白文件目录表(初始)空白文件目录(中间)已使用区域表(中间)上述两张表的数据在系统运行中是发生变化的。
文件空闲区分配和释放算法如下图所示:(2)空白块链法进行空间分配时,需要建立链表数据结构,将空闲块按顺序加以组织,分配和回收时在链首完成,同时建立文件目录,记录文件占用空间情况。
二程序中所用的数据结构及说明(1)typedef struct _Black{int Bnum;int Bfirst;int Bleng;int Blast;}Black; (当前的空文件目录结构体)Black black[]={{0,0,100,99}}; (结构体初始化)(2)typedef struct _Use{char Ufile[8];int Ufirst;int Uleng;int Ulast;int Uflg;}Use; (当前已使用文件目录初始化)Use use[100]={{0}}; (结构体初始化)三源程序并附上必要的说明#include <iostream>#include <iomanip>using namespace std;int B= 1; //空白序号int U= 100; //文件标示序号typedef struct _Black{int Bnum; int Bfirst; int Bleng; int Blast;}Black;typedef struct _Use{char Ufile[8]; int Ufirst; int Uleng; int Ulast; int Uflg; }Use;Black black[]={{0,0,100,99}}; //初始化Use use[100]={{0}};void bubbleSort(Black a[],int m)//为了实现再次新建文件时提高分配利用率(将空白块按空白个数由从小到排序) {for (int i = 0; i < m - 1; i++){for (int j = 0; j < m - 1 - i; j++){if (a[j].Bfirst > a[j+1].Bfirst ){Black temp = a[j];a[j] = a[j+1];a[j+1] = temp;}}}}void PrintBlack(){int num=1;cout<<" 当前的空文件目录表" <<endl;cout<<"序号首块号空白块个数末块号"<<endl;for(int i=0;i<B;i++){cout<<num<<setw(10)<<black[i].Bfirst<<setw(10)<<black[i].Bleng<<setw(10)<<black[i].Blast<<endl;num++;}cout<<endl;}void PrintUse(){cout<<" 当前的已使用文件目录" <<endl;cout<<"文件名首块号空白块个数末块号"<<endl;for(int i=0;i<U;i++){if(use[i].Uflg ==1){cout<<use[i].Ufile<<setw(10)<<use[i].Ufirst<<setw(10)<<use[i].Uleng<<setw(10)<<use[i].Ulast<<endl;}}cout<<endl;}void Distribute(){cout<<"输入文件名和块数 "<<endl;char fname[8]; //文件名int m; //块数int temp; //记录要插入的首块号(空白区中的)int t=1; //为了遍历完空白表的验证非法的输入(即块数大于空白区的所有的块数) cin>>fname>>m;for(int i= 0;i<B;i++){t++;for(int j=0; j<U; j++){if(!strcmp(fname,use[j].Ufile)){cout<<" 此文件名已经存在!!请换文件名"<<endl; return;}}if(black[i].Bleng>=m){temp=black[i].Bfirst;if(black[i].Bleng==m) //删除空白区{for(;i<B-1;i++){black[i].Bfirst= black[i+1].Bfirst;black[i].Bleng=black[i+1].Bleng;black[i].Blast=black[i+1].Blast;}B--;}else //修改空白区{black[i].Bleng -=m;black[i].Bfirst +=m;}strcpy(use[U].Ufile ,fname);use[U].Ufirst=temp;use[U].Uleng=m;use[U].Ulast=use[U].Ufirst+use[U].Uleng-1;use[U].Uflg=1;U++;break;}else{if(t==B) //当遍历完整个空白表而且不存在小于m的空白区cout<<"由于m块数大于空闲区无法分配"<<endl;}}bubbleSort(black,B);PrintBlack();PrintUse();}void Release(){int flag=0 ; //标记输入的文件名是否存在int ufirst; //首块号int uleng; //文件快数int ulast; //文件末块char fname[8];cout<<"输入删除文件的文件名 "<<endl;cin>>fname;for(int i=0;i<U;i++){if(!strcmp(fname,use[i].Ufile)){flag =1;int fT=0; //上邻标记int Tnum=0;int fB=0; //下邻标记int Bnum=0;ulast=use[i].Ulast;ufirst=use[i].Ufirst;uleng=use[i].Uleng;use[i].Uflg =-1;for(int j=0;j<B;j++) //遍历判断上下邻{if((black[j].Blast+1)==ufirst){fT=1; //存在上邻Tnum=j;}if((black[j].Bfirst-1)==ulast){fB=1; //存在下邻Bnum=j;}}if(fT&&(!fB)) //有上邻,无下邻{black[Tnum].Bleng+=uleng;black[Tnum].Blast=ulast;}if(fT&&fB) //有上邻,有下邻{black[Tnum].Bleng+=(uleng+black[Bnum].Bleng);black[Tnum].Blast=black[Bnum].Blast;for(;Bnum<B;Bnum++){black[Bnum]=black[Bnum+1];black[Bnum].Bnum=Bnum+1;}B--;}if((!fT)&&(!fB)) //无上邻,无下邻{black[B].Bnum=B;black[B].Bfirst=ufirst;black[B].Bleng=uleng;black[B].Blast=ulast;B++;}if((!fT)&&fB) //无上邻,有下邻{black[Bnum].Bleng+=uleng;black[Bnum].Bfirst=ufirst;}}}if(flag==0){cout<<" 输入文件不存在"<<endl;}bubbleSort(black,B);PrintBlack();PrintUse();}void main(){cout<<" 模拟文件存储空白文件目录"<<endl<<endl;PrintBlack();PrintUse();int n;while(1){cout<<" "<<endl<<endl;;cout<<"请按如下输入进行操作(分配:1 释放:2 结束:3 )";fflush( stdin );cin>>n;system( "cls ");if(n==1)Distribute();else if(n==2)Release();else if(n==3)return;else{cout<<"重新输入 "<<endl;} }}四按照文件的创建和删除顺序,打印输出结果。
天大《操作系统原理》学习笔记一
主 题: 《操作系统原理》学习笔记内 容:《操作系统原理》学习笔记一——操作系统概论一、操作系统的地位及作用1、操作系统的地位计算机系统由硬件系统和软件系统组成。
软件系统是指使计算机完成特定工作的程序的总称。
硬件系统是指组装成计算机本体和设备的具有机械、电、磁、声、光等不同物理特性的各种器件和部件。
系统软件系统包括系统应用软件和操作系统:l操作系统是用于管理和控制系统资源的程序,它是计算机系统中最基本的系统软件。
l系统应用软件包括了完成系统服务所需的各种程序。
计算机系统的层次结构图:操作系统是最靠近硬件的系统软件处于核心地位。
层次结构图不只表示软件的分类和层次,还表示各个层次之间存在的一种单向服务关系,即内层向外层提供了一组接口。
内层以事先约定好的方式通过接口为外层提供服务。
外层则通过该接口使用内层提供的服务功能实现本身的功能。
1.1硬件系统运算器、控制器、存储器以及输入输出设备。
操作系统存在的物质基础。
提供给操作系统的接口是机器的指令系统,操作系统的程序使用指令系统提供的机器指令功能实现对硬件的直接管理和控制。
1.2操作系统最靠近硬件,直接控制和管理硬件。
硬件系统在操作系统的管理控制下,功能得以充分发挥。
从用户观点看,引入操作系统后,计算机系统成为一台比硬件系统功能更强、服务质量更高、使用更方便的机器。
提供给上层两种接口:操作接口和编程接口。
用户可以通过操作接口方便地使用计算机。
编程接口是一系列的系统调用,其它程序可以使用该接口使操作系统为其服务,使用硬件资源和软件资源。
1.3系统应用软件由一系列的语言处理程序和系统服务程序构成。
系统应用层的程序是在操作系统的支持下工作的,它们使用操作系统的系统调用和机器指令编制程序。
对上层提供了编制源程序的语句和语法或调试命令、系统维护命令等。
系统应用程序属于系统软件,但要通过操作系统才能使用和控制系统资源。
1.4应用软件计算机用户为某一特定需要而专门设计的程序,或者是用户为解决某一个具体问题而编制的程序。
西安石油学院-西安石油大学
裂缝导流能力虚拟仿真实验购置技术要求
2.乙方于2019年7月31前完成供货安装调试并交付使用。
安装地点:西安石油大学石油工程学院指定地点,所有产生费用乙方负责。
3、乙方提供的软件质保期1年,乙方对所供软件免费升级改造和运行维护(我校申报省级、国家级虚拟仿真实验教学项目期间,由乙方免费维护)。
质保期内,免费提供技术支持以保证甲方软件正常使用,接到软件问题反映电话后2小时内响应,通过电话、传真、电子邮件等方式在24小时内做出答复并进行技术解答,24小时内不能解决应用问题的,在 48小时内派出技术专家到达现场提供现场免费服务,直到帮助用户解决问题。
质保期外,硬件维修乙方只收取材料费,软件乙方向甲方提供终身技术支持,涉及到有偿服务,双方友好协商。
安装调试后,乙方免费为甲方提供现场操作培训,通过培训使用户人员了解产品工作原理、安装及使用,掌握产品的初始化、故障诊断和排除技能。
软件系统正式运行后,定期回访用户,当系统出现重大缺陷问题或系统存在漏洞或因软件编排编制等其他问题而影响到甲方实际应用时需及时响应并派人到现场解决。
4. 签订供货合同,货到完成安装调试验收合格后付合同总价的50%,软件正常运行3个月后付合同总价的45%,留合同总价5%质保金,质保金在产品正常使用满一年且无质量问题后一次无息付清。
西安石油大学操作系统原理实验虚拟页式管理
实验报告课程名称计算机操作系统实验名称虚拟页式管理班级计1201班学号201107010122姓名张文江指导教师赵安科实验日期2015.5.28成绩实验二 虚拟页式管理模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO )处理缺页中断1.内容:模拟请求页式存储管理中硬件的地址转换和缺页中断处理2.思想:装入新页置换旧页时,若旧页在执行中没有被修改过,则不必将该页重写磁盘。
因此,页表中增加是否修改过的标志,执行“存”指令和“写”指令时将对应的修改标志置成“1”表示修改过,否则为“0”表示未修改过。
页表格式如下:页号 标志 页架号 修改标志在磁盘上位置3.要求及方法:① 设计一个地址转换程序来模拟硬件的地址转换和缺页中断。
当访问的页在主存时则形成绝对地址,但不去模拟指令的执行,可以输出转换后的绝对地址来表示一条指令已执行完成。
当访问的页不在主存中时,则输出“*页号”来表示硬件产生了一次缺页中断。
模拟地址转换流程见图1。
② 编制一个FIFO 页面调度程序;FIFO 页面调度算法总是先调出作业中最先进入主存中的哪一页。
因此可以用一个数组来表示(或构成)页号队列。
数组中每个元素是该作业已在主存中的页面号,假定分配给作业的页架数为m ,且该作业开始的m 页已装入主存,则数组可由m 个元素构成。
P[0],P[1],P[2],…,P[m-1]它们的初值为P[0]:=0,P[1]:=1,P[2]:=2,…,P[m-1]:=m-1用一指针K 指示当要调入新页时应调出的页在数组中的位置,K 的初值为“0”,当产生缺页中断后,操作系统总是选择P[K]所指出的页面调出,然后执行:P[K]:=要装入的新页页号 K :=(k+1)mod m在实验中不必实际地启动磁盘执行调出一页和装入一页的工作,而用输出“OUT 调出的页号”和“IN 要装入的新页页号”来模拟一次调出和装入过程,模拟程序的流程图见附图1。
操作系统管理-虚拟存储器-实验报告-代码7页
操作系统管理-虚拟存储器-实验报告-代码7页一、实验目的学习操作系统中虚拟存储器的概念,掌握虚拟存储器的实现思路和方式。
二、实验要求在C语言环境下,实现基于分页机制的虚拟存储和页表管理。
三、实验内容1.实现一个虚拟存储器,其中分页大小为4KB,虚拟地址空间大小为4GB(每个进程可以使用的虚拟地址空间)。
物理内存大小为512MB,即实际内存中有128个物理页面。
2.实现页表管理,将虚拟地址映射到物理地址。
3.实现页面替换算法,当物理内存不足时,需要将某些页面从内存中置换出来。
4.实现程序的运行,能够根据页面缺失率输出性能参数。
四、实验步骤1.确定程序设计思路和数据结构。
2.实现虚拟存储器和页表管理。
3.实现页面替换算法。
五、实验代码及解析对于程序设计思路,首先需要确定虚拟存储器和物理内存的大小,以及页面大小。
虚拟存储器大小默认为4GB,物理内存大小为512MB,页面大小为4KB。
其次,需要设计页表数据结构。
页表可以使用一个二维数组表示,其中第一维表示页表项,第二维表示页内地址。
页表项有四个字段,分别为标志位(是否在内存中)、页框号(页面所在的物理页框号)、保护(页面的读写权限)、计数(页面使用情况的计数器)。
第三,需要设计页面替换算法。
本程序采用最近最少使用算法(LRU)作为页面替换算法,当物理内存不足时,选择使用最近最少使用的页面进行替换。
#define PAGE_SIZE 4096 // 页面大小#define VIRTUAL_MEM_SIZE 4 * 1024 * 1024 * 1024 // 虚拟存储器大小#define PHYSICAL_MEM_SIZE 512 * 1024 * 1024 // 物理内存大小#define PAGE_NUM (VIRTUAL_MEM_SIZE / PAGE_SIZE) // 页面总数#define PHYSICAL_PAGE_NUM (PHYSICAL_MEM_SIZE / PAGE_SIZE) // 物理页面数struct page_table_entry {int present; // 是否在内存中(1为在,0为不在)int page_frame; // 页面所在的物理页框号int protect; // 页面的读写权限int count; // 页面使用情况的计数器}struct page_table_entry page_table[PAGE_NUM][PAGE_SIZE]; // 页表虚拟存储器和页表管理需要掌握的是页表的相关数据结构,还有一个重要的点,就是如何将虚拟地址映射到物理地址。
操作系统实验教程
主编:袁宝华
第一部分 基于 windows 环境实验 第一章 进程管理 1.1 实验目的 1.2 实验内容 1.3 实验准备 1.4 程序示例 1.5 实验结果 第二章 进程调度 2.1 实验目的 2.2 实验内容 2.3 实验准备 2.4 程序示例 2.5 实验结果 第三章 银行家算法 3.1 实验目的 3.2 实验内容 3.3 实验准备 3.4 程序示例 3.5 实验结果 第四章 虚拟存储器管理 4.1 实验目的 4.2 实验内容 4.3 实验准备 4.4 程序示例 4.5 实验结果 第五章 设备管理 5.1 实验目的 5.2 实验内容 5.3 实验准备 5.4 程序示例 5.5 实验结果 第六章 SPOOLing 技术 6.1 实验目的 6.2 实验内容 6.3 实验准备 6.4 程序示例 6.5 实验结果 第七章 文件系统 7.1 实验目的 7.2 实验内容 7.3 实验准备 7.4 程序示例 7.5 实验结果 第八章 操作系统接口
15.3 实验准备 15.4 程序示例 15.5 实验结果 第三部分 附录 附录 A Linux 操作系统的安装 附录 B Linux 中 C 语言编译器 GCC 的使用 附录 C Linux 中 C 语言调试器 GDB 的使用 附录 D Visual C++集成开发环境
前 言
操作系统是计算机系统中的核心软件。 操作系统教学不但需要讲授操作系统概念、 原理 与方法, 还需要让学生动手进行操作系统编程实践, 只有这样才能够让学生真正理解操作系 统的精髓。 根据多年的教学实践并吸取国内外操作系统方面的有关内容, 编写了这本 《操作系统实 验教程》 。其目的是使学生通过实验,理解和掌握操作系统的基本原理,提高编写和开发系 统程序的能力。 本书编写过程中,我们采用循序渐进的方式,对实验内容尽量做到具有独立性,并且对 每个实验中用到的知识给出了相关的介绍, 这样有利于读者通过自学掌握实验教程中的技术 和方法。本书分为三部分:第一部分介绍基于 Windows 环境下的进程管理和进程调度、银 行家算法、虚拟存储器管理、设备管理、SPOOLing 技术、文件系统、操作系统接口 8 个实 验; 第二部分介绍基于 Linux 环境下的进程管理和进程调度、 进程间通信、 虚拟存储器管理、 字符型设备驱动程序、 Linux 文件系统调用、 Shell 程序 7 个实验, 第三部分附录介绍了 Linux 的安装、Linux 中 C 语言编译器 GCC 的使用和 Linux 中 C 语言调试器 gdb 的使用。书中给 出的程序示例都已在 Windows 下 Visual C++ 6.0 和 Linux Red hat 9.0 中经过测试和验证。 由于编者水平有限,书中难免有不足之处,敬请读者提出宝贵意见。 编者 2009 年 10 月
操作系统原理实验
操作系统原理实验操作系统是计算机系统中最核心的部分之一,它负责管理和控制计算机的硬件和软件资源,为用户提供一个良好的工作环境。
操作系统原理实验是计算机相关专业的学生必修课程之一,通过实验学习,可以更深入地理解操作系统的原理和工作机制,提高对操作系统的理解和应用能力。
实验一,进程管理。
进程是操作系统中最基本的概念之一,它是程序执行的基本单位。
在进程管理实验中,我们可以学习到进程的创建、调度、同步和通信等内容。
通过编写程序模拟进程的创建和调度过程,可以更直观地理解操作系统是如何管理进程的。
实验二,内存管理。
内存管理是操作系统中的重要内容之一,它负责管理计算机的内存资源,包括内存的分配与回收、内存的保护和共享等。
在内存管理实验中,我们可以学习到内存分配算法、地址转换技术以及虚拟内存的实现原理。
通过编写程序模拟内存分配和回收的过程,可以更好地理解操作系统是如何管理内存的。
实验三,文件系统。
文件系统是操作系统中负责管理存储设备上的文件和目录的部分,它提供了对文件的读写和管理功能。
在文件系统实验中,我们可以学习到文件的组织结构、文件的存储管理和文件的访问控制等内容。
通过编写程序模拟文件的创建、读写和删除过程,可以更深入地理解操作系统是如何管理文件系统的。
实验四,设备管理。
设备管理是操作系统中负责管理计算机硬件设备的部分,它包括对设备的初始化、分配和释放等功能。
在设备管理实验中,我们可以学习到设备的管理方法、设备的中断处理和设备的驱动程序设计等内容。
通过编写程序模拟设备的初始化和中断处理过程,可以更好地理解操作系统是如何管理设备的。
总结。
通过操作系统原理实验的学习,我们可以更深入地理解操作系统的原理和工作机制,提高对操作系统的理解和应用能力。
同时,实验还可以培养我们的动手能力和解决问题的能力,为今后从事计算机相关工作打下坚实的基础。
希望大家能够认真对待操作系统原理实验,取得更好的学习成绩,为将来的发展打下坚实的基础。
虚拟储存管理实验报告
一、实验目的1. 理解虚拟存储管理的基本概念和原理。
2. 掌握分页式虚拟存储管理的地址转换和缺页中断处理过程。
3. 学习并分析几种常见的页面置换算法,如FIFO、LRU、OPT等。
4. 比较不同页面置换算法的性能,提高对虚拟存储管理的认识。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3. 虚拟存储器模拟工具:虚拟机(VirtualBox)三、实验内容1. 模拟分页式虚拟存储器(1)定义分页式虚拟存储器的参数,如页大小、内存大小、虚拟地址空间大小等。
(2)创建页表,记录每个页在内存中的位置和是否已加载。
(3)模拟进程的指令序列,生成虚拟地址。
(4)根据虚拟地址进行地址转换,得到物理地址。
(5)处理缺页中断,选择合适的页面置换算法。
2. 页面置换算法模拟(1)实现FIFO(先进先出)页面置换算法。
(2)实现LRU(最近最少使用)页面置换算法。
(3)实现OPT(最优页面置换)算法。
3. 比较不同页面置换算法的性能(1)设置不同的页面置换算法,模拟进程运行。
(2)记录每次缺页中断时的页面命中率。
(3)比较不同页面置换算法的页面命中率,分析其性能。
四、实验结果与分析1. 分页式虚拟存储器模拟(1)通过模拟,成功实现了分页式虚拟存储器的地址转换和缺页中断处理过程。
(2)实验结果表明,分页式虚拟存储器能够有效地提高内存利用率,减少内存碎片。
2. 页面置换算法模拟(1)实现了FIFO、LRU和OPT三种页面置换算法。
(2)通过模拟,比较了三种算法在不同进程下的页面命中率。
3. 页面置换算法性能比较(1)FIFO算法的页面命中率较低,适用于进程较稳定的情况。
(2)LRU算法的页面命中率较高,适用于进程频繁访问同一页面的情况。
(3)OPT算法的页面命中率最高,但实现复杂度较高,适用于进程访问序列可预测的情况。
五、实验结论1. 通过本次实验,加深了对虚拟存储管理的基本概念和原理的理解。
西安石油大学数据库实验1数据库和数据表基本操作
实验报告课程名称:学院名称:数据原理与应用计算机学院专业班级:计1201学生姓名:张文江学号:201107010122实验1数据库和数据表基本操作一、实验目的1.巩固数据库的基础知识。
2.掌握利用企业管理器和使用Transact-SQL创建数据库、表和修改、删除数据库、表等。
3.掌握使用SQL Server查询分析器接收Transact-SQL语句和进行结果分析、保存。
4.掌握使用SQL Server查询分析器向已经建好的表中添加信息、修改信息、删除信息和进行信息的简单查询。
二、实验环境硬件环境:PC机软件环境:操作系统为Microsoft Windows 2000或以上版本。
数据库管理系统为Microsoft SQL Server 2000标准版或企业版。
三、实验内容1.熟悉SQL Server的安装步骤和环境。
2.熟悉SQL Server企业管理器和查询分析器工具的基本使用方法。
3.利用企业管理器和使用Transact-SQL创建数据库、表和修改、删除数据库、表等。
4.查看数据库属性,查看和修改表结构和表内容。
5.练习使用SELECT、INSERT、UPDATE语句对数据表进行基本的操作。
四、实验步骤1.熟悉SQL Server 2000安装步骤和环境。
2.使用企业管理器完成:(1)建立学生_课程数据库;CREATE DATABASE student-course(2)查看学生_课程数据库的属性,并进行修改,使之符合要求;(3)在建好的学生_课程数据库中建立学生、课程和选课3个表,其表结构为:学生S(学号,姓名,性别,年龄,所在专业名称)课程C(课程号,课程名,任课教师名,开设的学期)选课SC(学号,课程号,成绩)要求为每个表定义其主键,每个字段选择合适的数据类型,设置是否允许空值和默认值,给每个表中至少插入5条学生信息等;学生表sCREATE TABLE s(sno varchar(12) primary key,sname varchar(20) not null,sex varchar(10) default '男',age int check(age>=0 and age<=120),dept varchar(20))课程表cCREATE TABLE c(cno varchar(12) not null,cname varchar(20) not null,tname varchar(20) not null,term varchar(10) not null,primary key (cno))选课表scCREATE TABLE sc(sno varchar(12),cno varchar(12),grade real check(grade>=0 and grade<=100), primary key (sno,cno),foreign key (sno) references s(sno),foreign key (cno) references c(cno))(4)向各表中输入数据,查看各表的结构和内容;insert into sselect'20080101','李枫','女','22','软件工程'union all select'20080102','张强','男','29','软件工程'union all select'20080205','王依萍','女','18','网络工程'union all select'20080211','胡东','男','24','网络工程'union all select'20081008','李小玲','女','20','英语'union all select'20081010','李萍','男','30','英语'insert into cselect'c01','英语','李兰','1'union allselect'c02','英语写作','李兰','2'union allselect'c03','高等数学','朱虹','1'union allselect'c04','数据结构','朱虹','4'union allselect'c05','离散数学','赵强','3'union allselect'c08','普通物理','张放','2'union allselect'c10','计算机网络','赵强','5'insert into scselect'20080101','c01','90'union all select'20080101','c03','90'union all select'20080101','c04','85'union all select'20080101','c05','95'union all select'20080102','c01','73'union all select'20080102','c03','42'union all select'20080102','c04','90'union all select'20080102','c05','85'union all select'20080205','c01','88'union all select'20081008','c01','92'union all select'20081008','c02','80'union all select'20081010','c01','85'(5)修改数据库、表等;修改基本表1.在学生表中增加“联系电话”列,数据类型为字符型,长度为11. ALTER TABLE sAdd phone char(11)2.删除选课表中的grade列.ALTER TABLE scDROP COLUMN grade(6)删除数据库、表等。
开放虚拟实验教学管理系统用户手册
开放虚拟实验教学管理系统(OWVLab)用户手册北京邮电大学北京润尼尔网络科技有限公司目录一、系统概述 (1)1.系统简介 (1)2.功能介绍 (1)二、配置及运行环境 (1)1.配置要求 (1)2.运行环境 (1)三、安装说明 (2)四.系统使用说明 (3)1.系统登录 (3)2.教务管理 (5)2.1教学计划 (5)2.1.1课程计划 (5)2.1.2开课计划 (10)2.2开课管理 (15)2.2.1选课日期 (15)2.2.2开课审核 (17)2.2.3开课查询 (18)2.3教务个人信息管理 (18)2.3.1查看主要资料 (18)2.3.2修改主要资料 (19)2.3.3修改详细资料 (19)3.教学活动 (20)3.1实验库管理 (21)3.1.1添加实验 (21)3.1.2编辑实验 (24)3.1.3查找实验 (24)3.1.4制定批改及指导规则 (24)3.2实验安排 (27)3.3已安排实验 (28)3.4实验批改 (29)3.5成绩导出 (30)3.6查看负责的课程 (30)3.7教师个人信息管理 (31)3.7.1查看主要资料 (31)3.7.2修改主要资料 (32)3.7.3修改详细资料 (32)4.学生选课及实验 (33)4.1学生实验 (34)4.2学生个人信息管理 (36)4.2.1查看主要资料 (36)4.2.2修改主要资料 (37)4.2.3修改详细资料 (37)5.系统管理 (38)5.1操作日志 (38)5.2添加角色 (39)5.3查看所有角色 (40)5.4所有权限 (41)6.用户管理 (42)6.1用户管理 (42)6.2分组管理 (44)6.3 分组类型管理 (46)7.访问统计 (47)7.1在线用户 (48)7.2会话记录 (48)7.3访问记录 (49)7.4登录记录 (50)8.个人信息 (51)8.1查看主要资料 (51)8.2修改主要资料 (51)8.3修改详细资料 (52)一、系统概述1.系统简介开放式虚拟实验教学管理系统针对各学校的实验教学需求提供了一体化解决方案。
操作系统原理课程实践任务书
操作系统课程实践任务书题目一进程调度算法模拟一、设计目的编程实现进程调度的算法,更好地掌握操作系统的原理及实现方法,从而有利于把握进程调度细节。
二、设计要求(1)要求实现先来先服务,短作业优先,时间片轮转,高优先权调度算法四种算法并进行对比分析.(2)要求界面简单,易懂,关键代码部分要注释.(3)编程语言可以采用自己任意精通的语言三、设计思想说明先来先服务:程序的执行调度顺序按先进入队列的先获得执行,并且其他进程都不能中断正在执行的进程,要等进程完成后才能,让出C P U给其他进程。
执行的时候可以随时在队列中插入进程。
短作业优先:进程的调度顺序按程序的服务时间来决定,进程的执行顺序。
服务时间短的先被调用。
调度时先从队列中选取服务时间最短的进程来执行。
进程中途不能中断,即使此时队列中存在服务时间比其更短的进程,仍需要等待该进程执行完后才能被执行。
高优先权调度:选取进程中优先级最高的一个,以优先级的值大,优先级就大。
调度时总是选取队列中进程优先级最高的来执行,不管是否有某个进程在执行,只要存在比正在执行进程优先级高的进程,则就会立刻中断正在执行的进程,让给跟高优先级的进程。
时间片轮转:本课程设计采用多级反馈队列调度算法,设立4个进程队列,分给队列1的时间片为3秒,队列2的时间片为6秒,队列3的时间片为12秒,队列4的时间片为24秒。
队列1的优先级最高,队列4的优先级最低。
高优先级的队列没执行完,即不为空,就永远不执行其下面的低优先级的队列里面的进程。
当执行低优先级队列里面的进程时,突然间高优先级的队列插入了进程就立刻跳到高优先级的队列执行其里面的进程。
每个队列的进程都是按先来先执行的顺序执行。
进程初次执行肯定要进入队列1。
如何从头到尾执行一遍队列1中的进程是,存在某些进程在队列1的时间片内还没执行完,就把进程移交到下一个队列中。
每个队列都如此类推。
直到最后一个队列4,如果在队列4还有进程在本时间片内还没没执行完,就把该程序放到队尾,从新等待时间片执行。
操作系统原理与实践教程(第四版) 习题答案 (1)[4页]
第6章虚拟存储器1.常规存储器管理方式具有哪两大特征?它对系统性能有何影响?答:特点:一次性和驻留性。
影响:一次性及驻留性特征使得许多在程序中不用或暂时不用的程序(数据)占据了大量的内存空间,而一些需要运行的作业又无法装入运行,显然,这是在浪费宝贵的内存资源。
2.什么是程序运行时的时间局限性和空间局限性?答:时间局限性:如果程序中的某条指令被执行,则不久之后该指令可能再次执行;如果某数据被访问过,则不久以后该数据可能再次被访问。
产生时间局限性的典型原因是在程序中存在着大量的循环操作。
空间局限性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围之内,其典型情况便是程序的顺序执行。
3.虚拟存储器有哪些特征?其中最本质的特征是什么?多次性、对换性、虚拟性。
最基本特征是虚拟性。
4.实现虚拟存储器需要哪些硬件支持?答:分页请求系统:请求分页的页表机制、缺页中断机构、地址变换机构。
请求分段系统:请求分段的段表机制、缺段中断机构、地址变换机构。
5.实现虚拟存储器需要哪几个关键技术?答:(1)在分页请求系统中是在分页的基础上,增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。
允许只装入少数页面的程序(及数据),便启动运行。
(2)在请求分段系统中是在分段系统的基础上,增加了请求调段及分段置换功能后形成的段式虚拟存储系统。
允许只装入少数段(而非所有段)的用户程序和数据,即可启动运行。
6.在请求分页系统中,页表应包括哪些数据项?每项的作用是什么?(1)状态位(存在位)P:它用于指示该页是否已调入内存,供程序访问时参考。
(2)访问字段A:用于记录本页在一段时间内被访问的次数,或记录本页最近已有多长时间未被访问,提供给置换算法(程序)在选择换出页面时参考。
(3)修改位M:标识该页再调入内存后是否被修改过。
(4)外存地址:用于指出该页在外存上的地址,通常是物理块号,供调入该页时参考。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告课程名称计算机操作系统实验名称虚拟页式管理班级计1201班学号201207010317姓名张文江指导教师赵安科实验日期2015.5.10成绩实验二虚拟页式管理模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断1.内容:模拟请求页式存储管理中硬件的地址转换和缺页中断处理2.思想:装入新页置换旧页时,若旧页在执行中没有被修改过,则不必将该页重写磁盘。
因此,页表中增加是否修改过的标志,执行“存”指令和“写”指令时将对应的修改标志置成“1”表示修改过,否则为“0”表示未修改过。
页表格式如下:3.要求及方法:①设计一个地址转换程序来模拟硬件的地址转换和缺页中断。
当访问的页在主存时则形成绝对地址,但不去模拟指令的执行,可以输出转换后的绝对地址来表示一条指令已执行完成。
当访问的页不在主存中时,则输出“*页号”来表示硬件产生了一次缺页中断。
模拟地址转换流程见图1。
②编制一个FIFO页面调度程序;FIFO页面调度算法总是先调出作业中最先进入主存中的哪一页。
因此可以用一个数组来表示(或构成)页号队列。
数组中每个元素是该作业已在主存中的页面号,假定分配给作业的页架数为m,且该作业开始的m页已装入主存,则数组可由m个元素构成。
P[0],P[1],P[2],…,P[m-1]它们的初值为P[0]:=0,P[1]:=1,P[2]:=2,…,P[m-1]:=m-1 用一指针K 指示当要调入新页时应调出的页在数组中的位置,K 的初值为“0”,当产生缺页中断后,操作系统总是选择P[K]所指出的页面调出,然后执行:P[K]:=要装入的新页页号 K :=(k+1)mod m在实验中不必实际地启动磁盘执行调出一页和装入一页的工作,而用输出“OUT 调出的页号”和“IN 要装入的新页页号”来模拟一次调出和装入过程,模拟程序的流程图见附图1。
按流程控制过程如下:提示:输入指令的页号和页内偏移和是否存指令⎩⎨⎧0 1非存指令存指令,若d为-1则结束,否则进入流程控制过程,得P 1和d ,查表在主存时,绝对地址=P 1×1024+d③ 假定主存中页架大小为1024个字节,现有一个共7页的作业,其副本已在磁盘上。
系统为该作业分配了4个页架,且该作业的第0页至第3页已装入内存,其余3页未装入主存,该作业的页表如下:如果该作业依次执行的指令序列如下表所示:依次执行上述指令调试你所设计的程序(仅模拟指令的执行,不考虑序列中具体操作的执行)。
④为进一步考察程序的执行,可自行确定若干组指令,运行程序,核对执行结果。
图1 模拟算法流程实验代码:#include <windows.h>#include <conio.h>#include <stdlib.h>#include <fstream.h>#include <string.h>#include <stdio.h>int invalidcount = 0; // 缺页次数int vpoint; //页面访问指针int pageframe[10]; // 分配的页框int pagehistory[10]; //用以记录页框中数据访问历史int rpoint; //页面替换指针int inpflag; //缺页标志,0为不缺页,1为缺页//页面信息结构struct PageInfo{int serial[100]; // 模拟的最大访问页面数,实际控制在20以上int flag; // 标志位,0表示无页面访问数据int diseffect; // 缺页次数int total_pf; // 分配的页框数int total_pn; // 访问页面序列长度} pf_info;//初始化相关数据结构void initialize(){int i,pf;inpflag=0; //缺页标志,默认值为0不缺页pf_info.diseffect =0; //缺页次数,默认0pf_info.flag =0; //标志位,0表示无页面访问数据printf("请输入要分配的页框数:");scanf("%d",&pf);printf("\n");pf_info.total_pf =pf; //自定义输入页框数for(i=0;i<100;i++) // 清空页面序列{pf_info.serial[i]=-1;}}// 随机生成访问序列void createps(void ){int s,i,pn;initialize(); //初始化相关数据结构printf("请输入要随机产生的访问序列的长度:");scanf("%d",&pn);printf("\n");srand(rand()); //初始化随机数队列的"种子"s=((float) rand() / 32767) * 50 + pn; // 根据需求产生访问序列长度pf_info.total_pn = s;for(i=0;i<s;i++) //产生随机访问序列{pf_info.serial[i]=((float) rand() / 32767) * 16;//限定随机数大小在16以内 }}// 显示当前状态及缺页情况void displayinfo(void){int i,n;if(vpoint==0){printf("\n=============页面访问序列=============\n");for(i=0; i<pf_info.total_pn; i++){printf("%d ",pf_info.serial[i]);if ((i+1) % 10 ==0) printf("\n");//每行显示10个}printf("\n======================================\n");}printf("访问= %d: 内存 ",pf_info.serial[vpoint]);for(n=0;n<pf_info.total_pf;n++) // 页框信息{if (pageframe[n] >=0)printf("%d ",pageframe[n]);}printf("|");if(inpflag==1){printf("缺页\t");printf("缺页率:%3.1f",(float)(pf_info.diseffect)*100.00/vpoint);}printf("\n");}// 查找页面是否在内存,1为在内存,0为不在即缺页int findpage(int page){int n;for(n=0;n<pf_info.total_pf;n++){pagehistory[n]++;//页面访问历史记录}for(n=0;n<pf_info.total_pf;n++){if(pageframe[n]==page){inpflag=0;pagehistory[0]=0;return 1;}}inpflag=1; //页面不存在,缺页return 0;}// FIFO页面置换算法void fifo(void){int n,count,pstate;rpoint=0; // 页面替换指针invalidcount = 0; // 缺页数初始化为0 // 随机生成访问序count=0; // 是否装满页框for(n=0;n<pf_info.total_pf;n++) // 清除页框信息pageframe[n]=-1;inpflag=0;for(vpoint=0;vpoint<pf_info.total_pn;vpoint++) // 执行算法{pstate=findpage(pf_info.serial[vpoint]);if(count<pf_info.total_pf) // 开始时不计算缺页{if(pstate==0)// 页不存在则装入页面{pageframe[rpoint]=pf_info.serial[vpoint];rpoint=(rpoint+1) % pf_info.total_pf;count++;}}else // 正常缺页置换{if(pstate==0)// 页不存在则置换页面{pageframe[rpoint]=pf_info.serial[vpoint];rpoint=(rpoint+1) % pf_info.total_pf;pf_info.diseffect=pf_info.diseffect+1; // 缺页次数加1 }}Sleep(1000);displayinfo(); // 显示当前状态} // 置换算法循环结束_getch();return;}//主函数int main(int argc, char* argv[]){char ch;system("cls") ;while ( true ){printf("***********************************\n");printf(" 1: FIFO页面置算法 \n") ;printf(" 2: 生成访问序列 \n") ;printf(" 3: 退出 \n") ;printf("***********************************\n");printf( "页测试算法,必须先选2\n请输入你的选择 (1或2或3): ");do{ch = (char)_getch() ;} while(ch != '1' && ch != '2'&& ch != '3'&& ch != '4');if(ch == '3')return 0;else{cout<<endl;if(ch=='1'){system("cls") ;fifo();}if(ch=='2'){createps();int i,n;if(vpoint==0){printf("\n=============页面访问序列=============\n");for(i=0; i<pf_info.total_pn; i++){printf("%d",pf_info.serial[i]);if ((i+1) % 10 ==0) printf("\n");//每行显示10个}printf("\n======================================\n");}}}}_getch() ;return 0;}实验结果截图:。