请求调页存储器管理方式的模拟

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

课程设计

课程设计名称:计算机操作系统课程设计

专业班级:计算机科学与技术班

学生姓名:

学号:

指导教师:

课程设计时间: 2010.12.20 ~ 2010.12.24

计算机科学与技术专业课程设计任务书

一需求分析

请求调页存储管理方式的模拟是基于LRU算法的设计而设计的,通过学习计算机操作系统中的请求调页存储管理方式的几种算法,我选择了最近最久未使用算法即LRU算法实现请求调叶存储管理,通过具体的程序来模仿LRU的工作机制。二概要设计

1.数据结构

依据给定的数据信息,数组必须以结构体实现,结构类型的层次结构如下: typedef struct BLOCK//声明一种新类型——物理块类型

{

int pagenum;//页号

int accessed;//访问字段,其值表示多久未被访问

}BLOCK;

2.函数原型清单:

Void main();//主函数

void init(int Bsize); //程序初始化函数

int findExist(int curpage);//查找物理块中是否有该页面

int findSpace(int Bsize);//查找是否有空闲物理块

int findReplace();//查找应予置换的页面

void display(int Bsize);//显示

void suijishu(int r);//产生320条随机数,显示并存储到temp[320]

void pagestring();//显示调用的页面队列

void LRU(int Bsize);// LRU算法

3.全局变量:

int Bsize;

int pc;//程序计数器,用来记录指令的序号

int n;//缺页计数器,用来记录缺页的次数

static int temp[320];//用来存储320条随机数

BLOCK block[Bsize]; //定义一大小为4的物理块数组

三运行环境(软硬件环境)

硬件:CPU,主板,内存,显示器,硬盘,显卡,键盘等等.

软件:WINDOWS XP, Visual c++应用软件.

四开发工具和编程语言

开发工具:Visual c++

编程语言:c语言

五详细设计

#include

#include

#include

#include

typedef struct BLOCK//声明一种新类型——物理块类型

{

int pagenum;//页号

int accessed;//访问字段,其值表示多久未被访问

}BLOCK;

int Bsize;

BLOCK block[32]; //模拟内存块

int pc;//程序计数器,用来记录指令的序号

int n;//缺页计数器,用来记录缺页的次数

static int temp[320];//用来存储320条随机数

//*************************************************************

void init(int Bsize); //程序初始化函数

int findExist(int curpage);//查找物理块中是否有该页面

int findSpace(int Bsize);//查找是否有空闲物理块

int findReplace();//查找应予置换的页面

void display(int Bsize);//显示

void suijishu(int r);//产生320条随机数,显示并存储到temp[320] void pagestring();//显示调用的页面队列

void LRU(int Bsize);// LRU算法

//************************************************************* void init(int Bsize)

{

int i;

for(i=0;i

{

block[i].pagenum=-1;

block[i].accessed=0;

pc=n=0;

}

}

//------------------------------------------------------------- int findExist(int curpage,int Bsize)

{

int i;

for(i=0;i

{

if(block[i].pagenum == curpage )

return i;//检测到内存中有该页面,返回block中的位置

}

return -1;

}

//------------------------------------------------------------- int findSpace(int Bsize)

{

int i;

for(i=0; i

{

if(block[i].pagenum == -1)

return i;//找到空闲的block,返回block中的位置}

return -1;

}

//------------------------------------------------------------- int findReplace(int Bsize)

{

int i,pos = 0;

for(i=0; i

{

if(block[i].accessed >block[pos].accessed)

pos = i;//找到应予置换页面,返回BLOCK中位置

}

return pos;

}

//------------------------------------------------------------- void display(int Bsize)

{

相关文档
最新文档