分页式存储管理页面置换算法C语言描述,帮忙看一下错误

#include<stdio.h>#include<stdlib.h>#definenumber12#definelength7structpagelist{intbnu... #include <stdio.h>#include <stdlib.h>
#define number 12#define length 7
struct pagelist{
int bnum;
int id;
int changeid;
int location;
}pagelist[length];//页表

struct action{
char name;
int object;
int add;
}action[number];//对个页面的操作

struct pagechain{
int page;
int block;
int next;
}pagechain[length];//存放在块中的页

int head;//pagechain的头指针
int replace(int pnu);
void caculate(int pnu,int leave){//计算物理地址,传入页号和页内偏移
int wadd;
int i;
int b=0;
for(i=head;pagechain[i].page==pnu;i=pagechain[i].next){
b=pagechain[i].block;
}
if(b==0)
b=replace(pnu);
wadd=b*1024+leave;
printf("\n页号为%d的分页的物理地址:%d\t\t",pnu,wadd);
}

int replace(int pnu){//页面置换
int b,p;
b=pagechain[head].block;
p=pagechain[head].page;
pagechain[head].page=pnu;
pagelist[pnu].bnum=b;
pagelist[pnu].id=1;
head=pagechain[head].next;
printf("%d与%d互换\t\t",pnu,p);
printf("\n%d进去,%d出来",pnu,p);
}

void initPagelist(){//初始化页表
int k,b,l;
for(k=0;k<length;k++){
if(k<4){
printf("\n请输入第%d个页面所在的块的块号:",k);
scanf("%d",&b);
pagelist[k].bnum=b;
pagelist[k].id=1;
}else{
pagelist[k].bnum=0;
pagelist[k].id=0;
}
pagelist[k].changeid=0;
printf("\n请输入第%d个页面所在的磁盘位置:",k);
scanf("%d",l);
pagelist[k].location=l;
}
}

void initAction(){//初始化操作表
int i,b,c;
char a;
for(i=0;i<number;i++){
printf("\n请输入相应的操作,页面及页内偏移(m:移位,d:取,g:存):");
scanf("%c,%d,%d",&a,&b,&c);
action[i].name=a;
action[i].object=b;
action[i].add=c;
}
}

void initPagechain(){//初始化页的队列链
int j;
for(j=0;j<4;j++){
pagechain[j].page=j;
pagechain[j].block=pagelist[j].bnum;
if(j==3)
pagechain[j].next=0;
else
pagechain[j].next=j+1;
}
}

void main(){
head=0;
int k=0;
int pag,address;
char na;
initPagelist();
initAction();
initPagechain();
for(int k=0;k<number;k++){
na=action[k].name;
pag=action[k].object;
address=action[k].add;
if(na=='g')
pagelist[pag].changeid=1;
caculate(pag,address);
}
}
展开
 我来答
gohome0620
2012-12-21
知道答主
回答量:16
采纳率:100%
帮助的人:5.2万
展开全部
void initPagelist(){//初始化页表
int k,b,l;
for(k=0;k<length;k++){
if(k<4){
printf("\n请输入第%d个页面所在的块的块号:",k);
scanf("%d",&b);
pagelist[k].bnum=b;
pagelist[k].id=1;
}else{
pagelist[k].bnum=0;
pagelist[k].id=0;
}
pagelist[k].changeid=0;
printf("\n请输入第%d个页面所在的磁盘位置:",k);
scanf("%d",l);
pagelist[k].location=l;
}
}
输入scanf("%d",l);错了、、、scanf("%d",&l),少了地址符
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式