沈阳工程学院信息学院操作系统课程设计 第四章 概念设计
4.3 函数间的关系
该程序中函数间的关系是由main函数作为入口函数,根据不同的选择调用不同的函数,还有函数间的调用。
4.4 系统功能模块图
输入指令数 产生320个随机数与调用页面队列 判断指令存在并显示其物理块地址 缺页中断次数 缺页中断率 结 束 页面置换先进先出(FIFO)算法 图4.4.1 系统功能模块图
14
沈阳工程学院信息学院操作系统课程设计 第五章 详细设计
第五章 详细设计
5.1 系统的详细定义和介绍
本题目的设计要达到目的:通过对页面、页表、地址转换和页面置换过程的模拟,加深对请求调页系统的原理和实现过程的理解。
部分代码如下: #define size 4
typedef struct BLOCK//声明一种新类型——物理块类型 {
int pagenum;//页号
int accessed;//访问字段,其值表示多久未被访问 }BLOCK;
int count;//程序计数器,用来记录指令的序号 int n;//缺页计数器,用来记录缺页的次数
static int temp[320];//用来存储320条随机数 BLOCK block[size]; //定义一大小为4的物理块数组 void init( ); //程序初始化函数
int findExist(int curpage);//查找物理块中是否有该页面 int findSpace( );//查找是否有空闲物理块 int findReplace( );//查找应予置换的页面 void display ( );//显示
void Random( );//产生320条随机数,显示并存储到temp[320] void pagestring( );//显示调用的页面队列 void FIFO( );//FIFO算法
5.2 随机数产生办法
关于随机数产生,部分代码如下: void Random( ) {
int flag=0; cin>>count;
cout<<\按照要求产生的320个随机数:*******\ for(int i=0;i<320;i++) {
temp[i]=count;
if(flag%2==0)count=++count20;//产生50%的顺序执行指令(flag=0或2时顺序执行) if(flag==1) count=rand( )% (count-1); //产生25%的均匀分布在前地址部分指令
if(flag==3) count=count+1+(rand( )%(320-(count+1))); //产生25%的均匀分布在后 地址部分指令 flag=++flag%4;
printf(\
15
沈阳工程学院信息学院操作系统课程设计 第五章 详细设计
if((i+1)==0) cout< 5.3 系统功能模块介绍 该先进先出(FIFO)页面置换算法设计各模块主要完成的功能有: 1) 存放页面数M(M<=32)。 2) 分配给作业的内存块数为N(N<=4)。 3) 输入指令数(1-320)。 4) 计算并显示作业运行过程中发生的缺页率。 5) 置换算法:采用先进先出(FIFO)置换算法。 6) 结束 5.4 具体模块设计 1) 输入任意指令数(1-320),产生320个随机数,,显示其调用页面队列,选择1:FIFO 算法,进行先进先出页面置换算法,显示320条随机数的指令是否存在,若存在显示其物理块地址之后,计算出缺页次数与缺页率,如图所示: 开 始 初始化页面 是 输入指令数 1<=i<=320 是 否 重新输入指令数1<=i<=320 随机生成320个随机数 生成对应调用页面列队 图5.4.1 输入模块流程图 16 沈阳工程学院信息学院操作系统课程设计 第五章 详细设计 2) 输出是否缺页、输出系统分配的物理块数、输出需要进入内存的页面总数、输出缺页中断的次数、根据输出的页面总数和缺页中断的次数计算缺页中断率 假如输入内存的页面总数是10,系统分配的物理块数是4,页面号是7 1 4 5 7 2 3 0 5 6 则输出结果如图所示: 结 束 图5.4.2 输出模块流程图 17 开 始 输入任意系统指令数 随机产生10条指令数 例如:7 1 4 5 7 2 3 0 5 6 输出: 7 页面进入内存,产生第1次缺页 1 页面进入内存,产生第2次缺页. 4 页面进入内存,产生第3次缺页. 5 页面进入内存,产生第4次缺页. 7 内存中有这个页面,直接访问. 2 7被置换出去,产生第5次缺页. 3 1被置换出去,产生第6次缺页. 0 4被置换出去,产生第7次缺页 5 内存中有这个页面,直接访问. 6 5被置换出去,产生第8次缺页. 缺页率=缺页次数/存入的页面总数(%)=80%