基本分页存储管理的模拟实现2Word文档格式.docx

上传人:b****6 文档编号:19003507 上传时间:2023-01-02 格式:DOCX 页数:12 大小:297.50KB
下载 相关 举报
基本分页存储管理的模拟实现2Word文档格式.docx_第1页
第1页 / 共12页
基本分页存储管理的模拟实现2Word文档格式.docx_第2页
第2页 / 共12页
基本分页存储管理的模拟实现2Word文档格式.docx_第3页
第3页 / 共12页
基本分页存储管理的模拟实现2Word文档格式.docx_第4页
第4页 / 共12页
基本分页存储管理的模拟实现2Word文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基本分页存储管理的模拟实现2Word文档格式.docx

《基本分页存储管理的模拟实现2Word文档格式.docx》由会员分享,可在线阅读,更多相关《基本分页存储管理的模拟实现2Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。

基本分页存储管理的模拟实现2Word文档格式.docx

typedefstructLNode{

intf;

//进程号

charname[8];

//进程名

intsize;

//进程大小

intn;

//进程页数

intye[100];

//页表,下标表示页号,内容表示进程各页所在物理块

structLNode*next;

}LNode,*LinkList;

二、各个功能模块

三、主要功能模块流程图

四、系统测试

主界面:

(显示程序的各个功能块)

1、选择1,运行界面如下:

(选择1,输入进程名,显示内存物理块分配情况)

2、选择2,运行界面如下:

(显示2回收进程,若进程名输入错误,则显示进程不存在,)

3、选择3,运行界面如下:

(显示进程r的内存使用情况,0表示未用)

五、结论

在这次课程设计中,我清楚的认识理论到到实践的重要性,经过实际的动手操作不仅提高了我的动手能力还提高了我把理论转化成实践的能力。

实验中对页表的定义如下(采用数组形式,数组下标表示页号,数组单元存放与数组下标(页号)相应的页面号):

如ye[100]

六、源程序及系统文件使用说明

#include"

stdio.h"

stdlib.h"

string.h"

conio.h"

#include<

ctime>

//#include<

string>

//#definey0;

charA[100];

//内存物理块,0:

未使用,

intmax=99;

//记录内存的物理块数,值为A[100]最大下标

intcount=100;

//记录内存未使用物理块数

charname;

//进程名

intye[100];

/*进程各页所在物理块,页表实验中对页表的定义如下(采用数组形式,数组下标表示页号,数组单元存放与数组下标(页号)相应的页面号):

*/

//内存初始化

voidCreatA()

{

inti=0;

for(i=0;

i<

=max;

i++)

A[i]=0;

}

//建立新进程

voidNewNode(LinkList&

L)

charch;

inti;

intm;

LinkListp;

LinkListnew_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重新指向头结点

}

}

\n*****输入进程%c的页数:

scanf("

%d"

&

i);

while(i<

1)

printf("

\n*****请重新输入进程%c的页数:

scanf("

if(i>

count)

\n*****内存物理块不足,新建进程%c失败*****\n\n"

getch();

else

new_node=(LinkList)malloc(sizeof(LNode));

new_node->

name=ch;

n=i;

next=NULL;

count-=i;

m=0;

for(i=0;

i<

if(A[i]==0&

&

m<

new_node->

n)

{

A[i]=new_node->

name;

new_node->

ye[m]=i;

m++;

}

if(L==NULL)

L=new_node;

else

{

p=L;

//查找最后一个节点

while(p->

next!

=NULL)

{

p=p->

}

p->

next=new_node;

}

//回收进程,释放内存

voidFreeNode(LinkList&

LinkListp,q;

*****请输入要删除的进程名称:

//查找进程ch;

用p记录

q=p;

name==ch)

break;

q=p;

if(p==NULL)

\n*****进程%c不存在*****\n"

{

for(inti=0;

p->

n;

i++)

A[p->

ye[i]]=0;

count+=p->

name==q->

name)//要删除的是头结点

L=p->

q->

next=p->

//输出内存物理块分配情况

voidPrintf(LinkListL)

\n*****内存物理块分配情况:

*****\n"

LinkListp=L;

\n*****各进程信息:

*****进程名称\t进程页数\t所用物理块*****\n"

%c\t\t%d\t\t"

p->

name,p->

n);

%d,"

ye[i]);

\n"

p=p->

//显示内存块使用情况,不分进程

voidshowit()

\n☆***☆***☆***☆***☆***☆***☆\n"

|☆◇☆内存物理块分配情况☆◇☆|\n"

{if(A[i]!

=0)

%c\t"

A[i]);

else{printf("

%d\t"

if(i%10==9)

voidmain()

CreatA();

\n***☆***☆*基本分页存储管理的模拟实现*☆***☆***\n"

LinkListL=NULL;

do

\n☆***☆***☆***☆**菜单**☆***☆***☆***☆\n"

printf("

1添加进程\n"

2回收进程\n"

3内存使用情况\n"

4退出程序\n"

☆***☆***☆***☆***☆***☆***☆***☆***☆\n"

请输入你的选择(select):

"

switch(i){

case1:

NewNode(L);

//建立新的进程

Printf(L);

//输出内存物理块分配情况和各进程概况

break;

case2:

FreeNode(L);

//删除某进程

Printf(L);

//输出内存物理块分配情况和各进程概况

case3:

showit();

//显示当前内存的使用情况

case4:

exit(4);

}while(i!

=0);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1