南京邮电大学实验报告模版

合集下载

非参数统计实验报告 南邮概要

非参数统计实验报告 南邮概要

非参数统计实验报告南邮概要南京邮电大学非参数统计实验报告。

实验目的,通过对一组数据的非参数统计分析,掌握非参数统
计方法的应用和实验技能。

实验内容,本次实验选取了一组实际数据,利用非参数统计方
法进行分析。

首先对数据进行了描述性统计分析,包括数据的中心
趋势和离散程度。

接着进行了正态性检验,验证数据是否符合正态
分布。

然后利用非参数统计方法进行了假设检验,比较了不同组数
据之间的差异。

实验结果,经过描述性统计分析,数据的均值为X,标准差为S。

正态性检验结果显示,数据不符合正态分布。

在进行了Wilcoxon秩
和检验后发现,不同组数据之间存在显著差异。

实验结论,通过本次实验,我们掌握了非参数统计方法的应用
技能,了解了非参数统计方法在实际数据分析中的重要性。

同时也
对数据的正态性检验和假设检验有了更深入的理解。

总结,本次实验通过对一组实际数据的非参数统计分析,加深了我们对非参数统计方法的理解,提高了我们的实验技能。

非参数统计方法在实际数据分析中具有重要的应用价值,我们需要不断学习和掌握这些方法,为今后的科研工作和实践应用做好准备。

南京邮电大学-操作系统实验报告

南京邮电大学-操作系统实验报告

课内实验报告课程名:操作系统任课教师:沈超专业:信息管理与信息系统学号:姓名:二○一六至二○一七年度第一学期南京邮电大学经济与管理学院Process[numberschedul].order=tempcounter;}程序结果截图:二、银行家算法(网上借鉴)银行家算法,当进程提出资源申请时,系统首先检查该进程对资源的申请量是否超过其最大需求量及系统现有的资源能否满足进程需要。

若超过,则报错,若不能满足,则让该进程等待;否则进一步检查把资源分给该进程后系统能否出于安全状态,若安全,则分配,否则置该进程为等待资源状态。

算法实现过程:设进程i 提出请求REQUEST [j] ,则银行家算法按如下规则进行判断。

(1) 如果REQUEST [i] [j]<= NEED[i][j] ,则转(2) ;否则,出错。

(2) 如果REQUEST [i] [j]<= A V AILABLE[i][j] ,则转(3) ;否则,出错。

(3) 系统试探分配资源,修改相关数据:A V AILABLE[j]-=REQUEST[i][j];ALLOCATION[i][j]+=REQUEST[i][j];NEED[i][j]-=REQUEST[i][j];(4) 系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。

Check()关键代码:{int k, f, no=0;int work[M],a[M];char finish[M];anquan=1;for(i=0;i<n; i++) finish[i]='F';for(j=0;j<m; j++) work[j]=available[j]; k=n;do{ for (i=0;i<n; i++){if (finish[i]=='F'){ f=1;for (j=0;j<m; j++)if (need[i][j]>work[j]) printf("处于安全状态.");printf("安全序列号:");for (i=0;i<n;i++) printf ("%d ",a[i]); printf("\n");printf("进程");printf(" ");printf(" Max ");rintf(" ");rintf("allocation");printf(" ");printf("need");printf(" ");f=0;if (f==1)//找到还没完成的且需求数小于可提供进程继续运行的{ finish[i]='T';a[no++]=i;//记录安全序列号for (j=0;j<m; j++)work[j]=work[j]+allocation[i][j];//释放该进程已分配的资源available[j] =work[j];}}}k--; }while(k>0);f=1;for (i=0;i<n; i++)//判断有没有进程没完成{ if (finish[i]=='F'){f=0;break; }} if (f==0) {printf("不安全状态!\n");anquan=0;} else {printf("available");printf("\n");for (i=0;i<n; i++){ printf("%2d",i);printf(" ");for(j=0;j<m; j++)printf("%2d",max[i][j]);printf(" ");for(j=0;j<m; j++)printf("%2d",allocation[i][j]);printf(" ");for(j=0;j<m; j++)printf("%2d",need[i][j]);printf(" ");for(j=0;j<m; j++){if(i>0)break;printf("%2d",available[j]);}printf("\n");}}}程序结果截图:三、实验总结:这次上机模拟了进程调度过程和解决了死锁问题,让我对短作业优先调度算法和银行家算法有了比在课堂上更深刻的认识。

电力电子技术实验报告南邮

电力电子技术实验报告南邮

电力电子技术实验报告南邮一、实验目的本次实验旨在使学生深入了解电力电子技术的基本理论,掌握电力电子器件的工作原理及其在实际电路中的应用。

通过实践操作,培养学生的动手能力和解决实际问题的能力。

二、实验原理电力电子技术是研究利用电子技术对电能进行高效转换和控制的科学。

它涉及到半导体器件、电路设计、控制策略等多个方面。

在本次实验中,我们将重点研究整流器、逆变器等电力电子基本电路的工作原理和设计方法。

三、实验设备与材料1. 整流器模块2. 逆变器模块3. 直流电源4. 交流电源5. 电阻负载6. 示波器7. 万用表8. 连接线及工具四、实验步骤1. 检查实验设备是否完好,确保安全。

2. 根据实验要求,连接整流器和逆变器电路。

3. 调整直流电源,提供稳定的直流电压。

4. 将示波器连接到电路的输入和输出端,观察波形。

5. 改变负载电阻,记录不同负载下的输出电压和电流。

6. 根据实验数据,分析整流器和逆变器的工作特性。

7. 完成实验后,整理实验设备,确保实验室整洁。

五、实验结果在本次实验中,我们观察到了整流器和逆变器在不同负载条件下的输出波形。

通过调整负载电阻,我们发现输出电压和电流随着负载的变化而变化。

实验数据表明,整流器能够有效地将交流电转换为直流电,而逆变器则能够将直流电转换回交流电。

六、实验分析通过本次实验,我们对电力电子技术有了更深入的理解。

整流器和逆变器作为电力电子技术中的基本电路,其性能直接影响到整个系统的稳定性和效率。

在实验过程中,我们注意到了器件的选型、电路设计和控制策略对系统性能的影响。

此外,我们还学习了如何使用示波器和万用表来测量和分析电路参数。

七、实验结论本次电力电子技术实验成功地完成了预定的教学目标。

学生通过实际操作,加深了对电力电子技术的理解,并提高了解决实际问题的能力。

实验结果表明,整流器和逆变器在实际应用中具有良好的性能,能够有效地实现电能的转换和控制。

八、实验心得通过本次实验,我们不仅学习了电力电子技术的基本理论和应用,还锻炼了实际操作能力。

南京邮电大学-数值计算实践报告

南京邮电大学-数值计算实践报告

数值计算实践I 、方程求根一、实验目的熟悉和掌握Newton 法,割线法,抛物线法的方法思路,并能够在matlab 上编程实现二、问题描述(1).给定一个三次方程,分别用Newton 法,割线法,抛物线法求解. 方程的构造方法:(a)根:方程的根为学号的后三位乘以倒数第二位加1再除以1000. 假设你的学号为B06060141,则根为141*(4+1)/1000=0.564(b)方程:以你的学号的后三位数分别作为方程的三次项,二次项,一次项的系数,根据所给的根以及三个系数确定常数项. 例如:你的学号是B06060141,则你的方程是x 3+4x 2+x+a 0=0的形式. 方程的根为0.564,因此有0.5643+4*0.5642+0.564+a0=0,于是a0=-2.015790144 你的方程为x 3+4x 2+x-2.015790144=0.(2)假设方程是sinx+4x 2+x+a0=0的形式(三个系数分别是学号中的数字),重新解决类似的问题(3)构造一个五次方程完成上面的工作.四次方程的构造:将三次多项式再乘以(x-p*)2得到对应的五次多项式(p*为已经确定的方程的根,显然,得到的五次方程有重根).(4)将(2)中的方程同样乘以(x-p*)得到一个新的方程来求解注:(1)Newton 法取0.5为初值,割线法以 0,1为初值,抛物线法以0,0.5,1为初值, (2)计算精度尽量地取高.终止准则:根据ε<--||1n n p p 来终止(3)可供研究的问题:(一)ε的取值不同对收敛速度有多大的影响(二)将注(1)中的初值该为其它的初值,对收敛性以及收敛速度有无影响 (三)能否求出方程的所有的根 (4)实验报告的撰写实验报告包含的内容:(一)实验目的(二)问题描述(三)算法介绍(包括基本原理)(四)程序(五)计算结果(六)结果分析(七)心得体会三、算法介绍在本问题中,我们用到了newton 法,割线法,抛物线法。

南京邮电大学管理信息系统实验报告

南京邮电大学管理信息系统实验报告

课内实验报告课程名:管理信息系统任课教师:专业:学号:姓名:二○一○至二○一一年度第 1 学期南京邮电大学经济与管理学院《管理信息系统》课程实验第 1 次实验报告实验内容及基本要求:实验项目名称:用友ERP供应链管理综合实验实验类型:验证每组人数:1实验内容及要求:1. 基于用友ERP软件中供应链模块,完成企业中采购管理领域的各项业务的操作。

实验结果:一、实验操作步骤总结(限300字,对所做实验的主要流程进行总结,禁止复制实验指导书)1.进入系统管理进行建账工作,具体步骤如下:(1)注册“系统管理员”、(2)增加操作员、(3)创建账套(包括帐套号、单位名称、本位币、存货需要分类、编码方案、数据精度、系统启用)、(4)权限分配2.打开企业应用平台,输入登录信息后进行初始化设置,具体步骤如下:(1)输入基础档案(包括部门及志职员档案、供应商档案、存货信息、仓库档案和收发类别)。

(2)进行期初数据的录。

(填写采购入库单后需要记账)3.处理日常业务。

(操作时要注意细节问题)4.期末工作:月末结账。

5.账簿查询:查询未完成的业务明细表、订单执行情况统计表、暂估入库余额表、入库明细表及发票明细表。

二、实验中遇到的问题及解决方法1、输入基础档案时无法先输入人员档案。

解决方法:要先输入部门档案后再在人员档案中选择部门名称,才能完成输入。

2、在填制到货退回单数量时不知如何表示。

解决方法:在英文状态下在数字前加负号即可。

3、手工结算找不到对应具体的账单。

解决方法:筛选信息要具体,从时间、厂商等具体排除。

三、实验小结(写实验心得和体会)第一次使用ERP软件做的是采购管理练习,虽然老师有过介绍和一些步骤的说明,但是在做得过程中还是会出现很多问题,其实做练习的过程照书本按部就班的做是远远不够的。

在做得过程中我们需要思路清晰,要想明白每一步为什么要这样做,这样我们日后走向工作岗位才能做到脱离书本真正把学到的东西运用到工作上。

南京邮电大学DSP实验报告

南京邮电大学DSP实验报告

南京邮电大学实验报告实验名称:采样、系统性质及滤波系统频率响应和样本处理算法实现加窗和离散傅氏变换数字滤波器设计课程名称:数字信号处理姓名:学号开课时间2011 /2012 学年,第 2 学期实验一一.实验名称:采样、系统性质及滤波 二.实验目的和任务,实验内容:一、观察采样引起的混叠。

设模拟信号为)3sin()2sin(4)5cos()(t t t t x πππ⋅+=,t 的单位为毫秒(ms)。

1. 设采样频率为3kHz ,确定与)(t x 混叠的采样重建信号)(t x a 。

2. 画出)(t x 和)(t x a 在)(60ms t ≤≤范围内的连续波形。

(因数字计算机无法真正画出连续波形,可用较密的离散点的连线来近似。

)3. 分别用"" 和""⨯在两信号波形上标记出3kHz 采样点。

两信号波形是否相同?采样后的两序列是否相同?二、判别离散时间系统的时不变性。

(来源:p105 例3.2.2)设输入序列为)(n x ,系统)2()(n x n y =实现对)(n x 的抽取。

1. 设500,...,2,1),1002sin()(==n n n x π。

取延迟量D (例如D =30)。

记)()(D n x n x D -=,画出)(n x 、)(n x D 的序列波形。

2. 编程求出系统对)(n x 的响应)(n y 以及对)(n x D 的响应)(n y D3. 画出)(D n y -、)(n y D 的波形。

该系统是否为时不变的?三、利用卷积计算信号通过FIR 滤波器的输出,并观察输出信号的input-on 暂态、input-off暂态和稳态阶段。

(来源:p144 例4.1.8)考虑两个滤波器,⎩⎨⎧≤≤⋅=其它0140)75.0(25.0)(1n n h n ,]1,5,10,105,1[51--=,-2h ;输入)(n x 为周期方波,第一个周期内⎩⎨⎧≤≤≤≤=492502401)(x x n x 。

南京邮电大学移动通信实验报告

南京邮电大学移动通信实验报告

课程实验报告题目:CDMA解扩实验学院通信与信息工程学院学生姓名班级学号指导教师开课学院日期CDMA解扩实验CDMA扩频调制一、实验目的1.了解扩频调制的基本概念;2. 掌握PN码的概念以及m序列的生成方法;3. 掌握扩频调制过程中信号频谱的变化规律。

二、预备知识1.不同多址接入方式(TDMA、FDMA、CDMA)的区别;2.扩频码的种类与应用;3. 扩频码的基本性质。

三、实验仪器1、移动通信实验箱一台;2、台式计算机一台;一、实验原理m序列是最长线性反馈移位寄存器序列的简称,它是由带线性反馈的移位器产生的周期最长的一种序列。

如果把两个m序列发生器产生的优选对序列模二相加,则产生一个新的码序列,即Gold码序列。

实验中三种可选的扩频序列分别是长度为15的m序列、长度为31的m序列以及长度为31的Gold序列。

1.长度为15的m序列由4级移存器产生,反馈器如图2.1.1所示。

初始状态 1 0 0 01 1 0 01 1 1 01 1 1 10 1 1 11 0 1 10 1 0 11 0 1 01 1 0 10 1 1 00 0 1 11 0 0 10 1 0 00 0 1 00 0 0 1……………………………….1 0 0 0图 2.1.1 长度为15的m 序列的生成2.长度为31的m 序列由5级移存器产生,反馈器如图2.1.2所示。

图 2.1.2 长度为31的m 序列的生成3. 长度为31的gold 序列:Gold 码是Gold 于1967年提出的,它是用一对优选的周期和速率均相同的m 序列模二加后得到的。

其构成原理如图2.1.3所示。

图2.1.3 Gold 码发生器两个m 序列发生器的级数相同,即n n n ==21。

如果两个m 序列相对相移不同,所得Gold 码 21m m ⊕到的是不同的Gold 码序列。

对n 级m 序列,共有12-n 个不同相位,所以通过模二加后可得到12-n 个Gold 码序列,这些码序列的周期均为12-n ,如图2.1.4所示。

南京邮电大学实验报告模版

南京邮电大学实验报告模版

南京邮电大学实验报告模版南京邮电大学实验报告模版实验报告课程名称实验名称计算机操作系统虚拟存储中页面置换算法的模拟实现2014 实验时间指导单位指导教师年12 月19 日南京邮电大学崔衍学生姓名学院(系) 物联网院班级学号专业网络工程实验报告实验名称虚拟存储中页面置换算法的模拟实现实验类型上机实验实验学时一、实验目的和要求目的:通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法要求:(1)设计实现下面算法,并输出下述各种算法的命中率。

①先进先出的算法;②最近最少使用算法先淘汰最不常用的页地址。

(2)多次反复运行改进后的程序,观察并记录运行结果,并分析原因。

指导教师崔衍4 实验时间二、实验环境(实验设备) Vc++ - 2 - 二、实验原理及内容实验三#include #include #include #include #define Bsize 4 typedef struct BLOCK//声明一种新类型——物理块类型{ int pagenum;//页号int accessed;//访问字段,其值表示多久未被访问}BLOCK; int pc;//程序计数器,用来记录指令的序号int n;//缺页计数器,用来记录缺页的次数static int temp[320];//用来存储320条随机数BLOCK block[Bsize]; //定义一大小为4的物理块数组//********************************* **************************** void init( );//程序初始化函数int findExist(int curpage);//查找物理块中是否有该页面int findSpace( );//查找是否有空闲物理块int findReplace( );//查找应予置换的页面void display ( );//显示void suijishu( );//产生320条随机数,显示并存储到temp[320] void pagestring( );//显示调用的页面队列void OPT( );//OPT 算法void LRU( );// LRU算法void FIFO( );//FIFO 算法//********************************* **************************** void init( ) { for(int i=0;iblock[i].pagenum=-1;block[i].accessed=0; - 3 - pc=n=0;} } //------------------------------------------------------------- int findExist(int curpage) { for(int i=0; i if(block[i].pagenum == curpage ) return i;//检测到内存中有该页面,返回block中的位置} return -1; } //------------------------------------------------------------- int findSpace( ) {for(int i=0; i if(block[i].pagenum == -1) return i;//找到空闲的block,返回block中的位置}return -1; }//------------------------------------------------------------- int findReplace( ) { int pos = 0; for(int i=0; i if(block[i].accessed >block[pos].accessed) pos = i;//找到应予置换页面,返回BLOCK中位置} return pos; } //------------------------------------------------------------- void display( ) - 4 - { for(int i=0;i if(block[i].pagenum != -1) { printf(\ } cout //------------------------------------------------------------- void suijishu( ) { int flag=0; cin>>pc; cout if(flag%2==0) pc=++pc20;if(flag==1) pc=rand( )% (pc-1); if(flag==3) pc=pc+1+(rand( )%(320-(pc+1))); flag=++flag%4; printf(\ if((i+1) ==0) cout //------------------------------------------------------------- void pagestring( ) {for(int i=0;i printf(\if((i+1) ==0) cout //------------------------------------------------------------- void OPT( ) { int exist,space,position ; - 5 - int curpage; for(int i=0;i if(i 0==0) getch( ); pc=temp[i];curpage=pc/10; exist = findExist(curpage); if(exist==-1) { space = findSpace ( );if(space != -1) { block[space].pagenum = curpage; display( );n=n+1;} else { for(int k=0;k for(int j=i;j if(block[k].pagenum!= temp[j]/10) { block[k].accessed = 1000;}//将来不会用,设置为一个很大数else{ block[k].accessed = j; break; }}} position = findReplace( ); block[position].pagenum = curpage; display( );n++; - 6- } } } cout cout //------------------------------------------------------------- void LRU( ) { int exist,space,position ; int curpage; for(int i=0;i if(i 0==0) getch( ); pc=temp[i];curpage=pc/10; exist = findExist(curpage); if(exist==-1) { space = findSpace( );if(space != -1) { block[space].pagenum = curpage; display( );n=n+1;} else { position = findReplace( ); block[position].pagenum = curpage; display( );n++;} } else block[exist].accessed = -1;//恢复存在的并刚访问过的BLOCK中页面accessed 为-1for(int j=0; j- 7 - {block[j].accessed++;} } cout cout//------------------------------------------------------------- void FIFO( ) { int exist,space,position ; int curpage;for(int i=0;i if(i 0==0) getch( ); pc=temp[i];curpage=pc/10; exist = findExist(curpage); if(exist==-1){ space = findSpace( );if(space != -1) { block[space].pagenum = curpage; display( );n=n+1;} else { position = findReplace( ); block[position].pagenum = curpage; display( );n++; block[position].accessed--;} } for(int j=0; j- 8 - block[j].accessed++; } cout cout//************************************************************* void main( ) { int select; cout cout cout>select; cout switch(select){ case 1:cout case 2:cout case 3:cout- 9 - default: ;}}while(select!=4); } 实验结果:- 10 - 实验四Login用户登录bool chklogin(char *users, char *pwd) { int i; for(i=0; i>temp->filename; cin>>temp->content;if(recent->child==NULL){ temp->parent=recent; temp->child=NULL; recent->child=temp; temp->prev=temp->next=NULL; coutchild; while(ttemp->next) { - 11 - ttemp=ttemp->next;if(strcmp(ttemp->filename,temp->filename)==0&&ttemp->isdir==0) { printf(\对不起,文件已存在!\return 1; } } ttemp->next=temp; temp->parent=NULL; temp->child=NULL; temp->prev=ttemp; temp->next=NULL; coutchild==NULL) { coutchild; while(temp) { if(temp->isdir) {coutnext; } cout cin>>filename; if(recent->child==NULL) { coutchild->filename,filename)==0) { coutchild->contentchild;while(temp->next){ if(strcmp(temp->next->filename,filenam e)==0) {coutnext->content>filename; if(recent->child==NULL) { coutchild->filename,filename)==0) { recent->child->isopen=1;//设置文件标记为打开cin>>recent->child->content; recent->child->isopen=0;//设置文件标记为关闭cout { temp=recent->child; while(temp->next) { if(strcmp(temp->next->filename,filenam e)==0) { recent->child->isopen=1;//设置文件标记为打开cin>>temp->next->content;recent->child->isopen=0;//设置文件标记为关闭cout>filename; temp=new fnode; if(recent->child) { temp=recent->child; while(temp->next && (strcmp(temp->filename,filename)!=0 || temp->isdir!=0)) temp=temp->next; if(strcmp(temp->filename,filename)!=0) { coutparent==NULL){ temp->prev->next=temp->next; if(temp->next)temp->next->prev=temp->prev;temp->prev=temp->next=NULL; - 14 - } else { if(temp->next) temp->next->parent=temp->parent;temp->parent->child=temp->next; } delete temp; cout>temp->filename; if(recent->child==NULL){ temp->parent=recent; temp->child=NULL;recent->child=temp; temp->prev=temp->next=NULL; } else { ttemp=recent->child; while(ttemp->next) { ttemp=ttemp->next; if(strcmp(ttemp->filename,temp->filename)==0&&ttemp->isdir==1) { printf(\对不起,目录已存在!\return 1; } } ttemp->next=temp; temp->parent=NULL; temp->child=NULL; temp->prev=ttemp; temp->next=NULL; } return 1; - 15 -} 切换目录int dir(){ int i=0,j=0; temp=new fnode; temp=recent; if(temp!=root) {coutchild==NULL) { coutchild; while(temp) { if(temp->isdir) {coutnext; } cout- 17 - 四、实验小结通过课程设计,加深了对操作系统的认识,了解了操作系统中各种资源分配算法的实现,特别是对虚拟存储,页面置换有了深入的了解,并能够用高级语言进行模拟演示。

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

南京邮电大学实验报告模版实验报告课程名称实验名称计算机操作系统虚拟存储中页面置换算法的模拟实现2014 实验时间指导单位指导教师年12 月19 日南京邮电大学崔衍学生姓名学院(系) 物联网院班级学号专业网络工程实验报告实验名称虚拟存储中页面置换算法的模拟实现实验类型上机实验实验学时一、实验目的和要求目的:通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法要求:(1)设计实现下面算法,并输出下述各种算法的命中率。

①先进先出的算法;②最近最少使用算法先淘汰最不常用的页地址。

(2)多次反复运行改进后的程序,观察并记录运行结果,并分析原因。

指导教师崔衍 4 实验时间二、实验环境(实验设备) Vc++ - 2 - 二、实验原理及内容实验三#include #include #include #include #define Bsize 4 typedef struct BLOCK//声明一种新类型——物理块类型{ int pagenum;//页号int accessed;//访问字段,其值表示多久未被访问}BLOCK; int pc;//程序计数器,用来记录指令的序号int n;//缺页计数器,用来记录缺页的次数static int temp[320];//用来存储320条随机数BLOCK block[Bsize]; //定义一大小为4的物理块数组//********************************* **************************** void init( );//程序初始化函数int findExist(int curpage);//查找物理块中是否有该页面int findSpace( );//查找是否有空闲物理块int findReplace( );//查找应予置换的页面void display ( );//显示void suijishu( );//产生320条随机数,显示并存储到temp[320] void pagestring( );//显示调用的页面队列void OPT( );//OPT 算法void LRU( );// LRU算法void FIFO( );//FIFO算法//********************************* **************************** void init( ) { for(int i=0;i block[i].pagenum=-1;block[i].accessed=0; - 3 - pc=n=0;} } //------------------------------------------------------------- int findExist(int curpage) { for(int i=0; i if(block[i].pagenum == curpage ) return i;//检测到内存中有该页面,返回block中的位置} return -1; } //------------------------------------------------------------- int findSpace( ) {for(int i=0; i if(block[i].pagenum == -1) return i;//找到空闲的block,返回block中的位置}return -1; }//------------------------------------------------------------- int findReplace( ) { int pos = 0; for(int i=0; i if(block[i].accessed >block[pos].accessed) pos = i;//找到应予置换页面,返回BLOCK中位置} return pos; } //------------------------------------------------------------- void display( ) - 4 - { for(int i=0; i if(block[i].pagenum != -1) { printf(\ } cout //------------------------------------------------------------- void suijishu( ) { int flag=0; cin>>pc; cout if(flag%2==0) pc=++pc20;if(flag==1) pc=rand( )% (pc-1); if(flag==3) pc=pc+1+(rand( )%(320-(pc+1))); flag=++flag%4; printf(\ if((i+1) ==0) cout //------------------------------------------------------------- void pagestring( ) {for(int i=0;i printf(\if((i+1) ==0) cout //------------------------------------------------------------- void OPT( ) { int exist,space,position ; - 5 -int curpage; for(int i=0;i if(i 0==0) getch( ); pc=temp[i];curpage=pc/10; exist = findExist(curpage); if(exist==-1) { space = findSpace ( );if(space != -1) { block[space].pagenum = curpage; display( );n=n+1;} else { for(int k=0;k for(int j=i;j if(block[k].pagenum!= temp[j]/10) { block[k].accessed = 1000;}//将来不会用,设置为一个很大数else{ block[k].accessed = j; break; }}} position = findReplace( ); block[position].pagenum = curpage; display( );n++; - 6- } } } cout cout //------------------------------------------------------------- void LRU( ) { int exist,space,position ; int curpage; for(int i=0;i if(i 0==0) getch( ); pc=temp[i];curpage=pc/10; exist = findExist(curpage); if(exist==-1) { space = findSpace( );if(space != -1) { block[space].pagenum = curpage; display( );n=n+1;} else { position = findReplace( ); block[position].pagenum = curpage; display( );n++;} } else block[exist].accessed = -1;//恢复存在的并刚访问过的BLOCK中页面accessed 为-1for(int j=0; j- 7 - {block[j].accessed++;} } cout cout//------------------------------------------------------------- void FIFO( ) { int exist,space,position ; int curpage;for(int i=0;i if(i 0==0) getch( ); pc=temp[i];curpage=pc/10; exist = findExist(curpage); if(exist==-1){ space = findSpace( );if(space != -1) { block[space].pagenum = curpage; display( );n=n+1;} else { position = findReplace( ); block[position].pagenum = curpage; display( );n++; block[position].accessed--;} } for(int j=0; j- 8 - block[j].accessed++; } cout cout//********************************* **************************** void main( ) { int select; cout cout cout>select; cout switch(select){ case 1:cout case 2:cout case 3:cout- 9 - default: ;}}while(select!=4); } 实验结果:- 10 -实验四Login用户登录bool chklogin(char *users, char *pwd) { int i; for(i=0; i>temp->filename; cin>>temp->content;if(recent->child==NULL){ temp->parent=recent; temp->child=NULL; recent->child=temp; temp->prev=temp->next=NULL; coutchild; while(ttemp->next) { - 11 - ttemp=ttemp->next;if(strcmp(ttemp->filename,temp->filenam e)==0&&ttemp->isdir==0) { printf(\对不起,文件已存在!\return 1; } } ttemp->next=temp; temp->parent=NULL; temp->child=NULL; temp->prev=ttemp; temp->next=NULL; coutchild==NULL) { coutchild; while(temp) { if(temp->isdir) {coutnext; } cout cin>>filename; if(recent->child==NULL){ coutchild->filename,filename)==0) { coutchild->contentchild;while(temp->next){ if(strcmp(temp->next->filename,filenam e)==0) {coutnext->content>filename; if(recent->child==NULL){ coutchild->filename,filename)==0) { recent->child->isopen=1;//设置文件标记为打开cin>>recent->child->content; recent->child->isopen=0;//设置文件标记为关闭cout { temp=recent->child; while(temp->next) { if(strcmp(temp->next->filename,filenam e)==0) { recent->child->isopen=1;//设置文件标记为打开cin>>temp->next->content;recent->child->isopen=0;//设置文件标记为关闭cout>filename; temp=new fnode; if(recent->child) { temp=recent->child; while(temp->next && (strcmp(temp->filename,filename)!=0 || temp->isdir!=0)) temp=temp->next; if(strcmp(temp->filename,filename)!=0) { coutparent==NULL){ temp->prev->next=temp->next; if(temp->next)temp->next->prev=temp->prev;temp->prev=temp->next=NULL; - 14 - } else { if(temp->next) temp->next->parent=temp->parent;temp->parent->child=temp->next; } delete temp; cout>temp->filename; if(recent->child==NULL){ temp->parent=recent; temp->child=NULL; recent->child=temp; temp->prev=temp->next=NULL; } else { ttemp=recent->child; while(ttemp->next) { ttemp=ttemp->next; if(strcmp(ttemp->filename,temp->filenam e)==0&&ttemp->isdir==1) { printf(\对不起,目录已存在!\return 1; } } ttemp->next=temp; temp->parent=NULL; temp->child=NULL; temp->prev=ttemp; temp->next=NULL; } return 1; - 15 -} 切换目录int dir(){ int i=0,j=0; temp=new fnode; temp=recent; if(temp!=root) {coutchild==NULL) { coutchild; while(temp) { if(temp->isdir) {coutnext; } cout- 17 - 四、实验小结通过课程设计,加深了对操作系统的认识,了解了操作系统中各种资源分配算法的实现,特别是对虚拟存储,页面置换有了深入的了解,并能够用高级语言进行模拟演示。

相关文档
最新文档