- 11
- 0
- 约 12页
- 2017-03-05 发布于重庆
- 举报
基本分页存储管理的模拟实现2
基本分页存储管理的模拟实现
学 院
专 业
学 号
学 生 姓 名
指导教师姓名
2014年03月 18日
目 录
一、设计目的与内容
二、各个功能模块
三、主要功能模块流程图
四、系统测试
五、结论
六、源程序及系统文件使用说明
一、设计目的与内容
C 语言进行程序设计的能力。
设计内容:
根据设计要求实现对基本分页存储管理的模拟
设计要求:
1. 选择恰当的数据结构表示页表
2. 进程名,进程所需页数,进程进行的操作(装入/退出)等操作可有键盘输入,也
可从文件读出。
3. 每进行一次进程的装入或者退出操作,就显示出操作执行后内存中各页的分配情
况。
所采用的数据结构:
typedef struct LNode{
int f; //进程号
char name[8]; //进程名
int size; //进程大小
int n; //进程页数
int ye[100]; //页表,下标表示页号,内容表示进程各页所在物理块
struct LNode *next;
}LNode,*LinkList;
二、各个功能模块
主要功能模块流程图
四、系统测试
主界面:
(显示程序的各个功能块)
1、选择1,运行界面如下:
(选择1,输入进程名,显示内存物理块分配情况)
2、选择2,运行界面如下:
(显示2回收进程,若进程名输入错误,则显示进程不存在,)
3、选择3,运行界面如下:
(显示进程r的内存使用情况,0表示未用)
五、结论
在这次课程设计中,我清楚的认识理论到到实践的重要性,经过实际的动手操作不仅提高了我的动手能力还提高了我把理论转化成实践的能力。
实验中对页表的定义如下(采用数组形式,数组下标表示页号,数组单元存放与数组下标(页号)相应的页面号):如ye [100]
六、源程序及系统文件使用说明
#include stdio.h
#include stdlib.h
#include string.h
#include conio.h
#include ctime
//#include string
//#define y 0;
char A[100]; //内存物理块,0:未使用,
int max = 99; //记录内存的物理块数,值为A[100]最大下标
int count = 100; //记录内存未使用物理块数
typedef struct LNode{
char name; //进程名
int n; //进程页数
int ye[100]; /*进程各页所在物理块,页表实验中对页表的定义如下(采用数组形式,数组下标表示页号,数组单元存放与数组下标(页号)相应的页面号): */
struct LNode *next;
}LNode,*LinkList;
//内存初始化
void CreatA()
{
int i = 0;
for(i = 0;i = max; i++)
A[i] = 0;
}
//建立新进程
void NewNode(LinkList L)
{
char ch;
int i;
int m;
LinkList p;
LinkList new_node;
printf(\n *****输入进程名称:***** );
ch = getche();
p = L;
while(p != NULL) //查找进程名是否重复
{
if(p-name != ch)
p = p-next;
else
{
printf(\n*****进程名 %c 已存在,请重新输入:*****,ch);
ch = getche();
p = L;//p重新指向头结点
}
}
printf(\n*****输入进程 %c 的页数:*****,ch);
scanf(%d,i);
while(i 1)
{
printf(\n*****请重新输入进程 %c 的页数:*****,ch);
scanf(%d,i);
}
if(i count)
{
printf(\n*****内存物理块不足,新建进程 %c 失败!!!*****\n\n,ch)
原创力文档

文档评论(0)