| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 564 人关注过本帖
标题:请大家帮我改正以下问题!!!!(sos)在线等待中
只看楼主 加入收藏
zhuoya
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-12-28
收藏
 问题点数:0 回复次数:4 
请大家帮我改正以下问题!!!!(sos)在线等待中
请大家帮我改正以下问题!!!!本人不胜感激!!!
源程序的目的是设计一个请求页式存储管理方案,
要求:每访问一个地址时,首要计算该地址所在的页的页号,然后查页表,判断该页是否在主存(虚拟的),如果该页在主存,则打印;如果不在且页框不满(页框为另一结构体),则调入页表并修改页表,打印页表;不在且页框满,则用LRU算法。
源程序为
#include<stdio.h>
#include<string.h>

#define AREA 1024
//#define True 1
//#define False 0

struct page_block //定义页框结构体
{
int pageblock;
char *judge;
static int count;
};//block[3];
struct page_block block[3];

struct page_num //定义页表结构体
{
int pagenum;
int pagenum_block;
char *state;
};//num[6];
struct page_num num[6];

/*********************************************************
**********初始化页表,页框********************************
*********************************************************/
void init_str()
{
int i, j;
for (i=0; i<3; i++) //初始化页框
{
block[i].pageblock = i;
block[i].judge = "False";
block[i].count = 0;
}

for (j=0; j<6; j++) //初始化页表
{
num[j].pagenum = j;
num[j].pagenum_block = 100;
num[j].state = "False";
}
}

/*/////////////////////////////////////////////
*****************判断页框是否为满**************
*//////////////////////////////////////////////
char *full()
{
int i = 2;
int count = 1;
while (strcmp(block[i].judge,"Ture") == 0)
{
i--;
++count;///////////////////////????count or block[i].count
}
if (count == 3)
{
return "False";
}
else
return "True";
}
/*///////////////////////////////////////////
*******************找到序号的位子*************
*/////////////////////////////////////////////
int locate()
{
int i = 0;
while (strcmp(block[i].judge,"True") == 0)
{
++i;
}
return i;
}
/*//////////////////////////////////////////////
*******************找到block中count为3的,*****
*******************也就是最早进入的*************
*////////////////////////////////////////////////
int find_block_num(int i)
{
int j;
while (num[j].pagenum_block != i)
{
++j;
}
return j;
}

/*//////////////////////////////////////////////
*******************页表与页框的调度*************
*////////////////////////////////////////////////
void find(int m)
{
int t;
int i;
int j;
t = m / AREA;

for (i=0; i<6; i++)
{
if (num[i].pagenum == t)
{

if (strcmp(num[i].state,"Ture") ==0)
{
block[num[t].pagenum_block].count = 0;

for (i=0; i<6; i++)
{

if (strcmp(num[i].state,"True") == 0)
{
++block[num[i].pagenum_block].count;
printf("输出页表的目前数据:\n");
printf("%d,%d,%s",num[i].pagenum, num[i].pagenum_block, num[i].state);
}
}
}

else if (strcmp(num[t].state,"False")==0 && strcmp(full(),"True")==0)
{
block[locate()].judge ="False";
++block[locate()].count;
num[t].pagenum_block = locate();
num[t].state = "True";
printf("输出页表的目前数据:\n");
printf("%d,%d,%s",num[t].pagenum, num[t].pagenum_block, num[t].state);
}

else for (i=0; i<3; i++)
{

if (block[i].count ==3)
{
j = find_block_num(i);
num[j].state = "False";
num[t].state = "Ture";
num[t].pagenum_block = num[j].pagenum_block;
num[j].pagenum_block = 100;
block[i].count = 0;

for (i=0; i<6; i++)
{

if (strcmp(num[i].state,"True") == 0)
{
++block[num[i].pagenum_block].count;
printf("输出页表的目前数据:\n");
printf("%d,%d,%s",num[i].pagenum, num[i].pagenum_block, num[i].state);
}
}
}
}
}
}

}

void main()
{
int m;
printf("请输入地址流:\n");
scanf("%d",&m);
find(m);
}

没有错误,但不能运行,提示为;
-------------------Configuration: yeb iao - Win32 Debug--------------------
Linking...
yeb iao.obj : error LNK2001: unresolved external symbol "public: static int page_block::count" (?count@page_block@@2HA)
Debug/yeb iao.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

yeb iao.exe - 2 error(s), 0 warning(s)
我不知道那地方错了,请教!!!!谢谢了!!!!
搜索更多相关主题的帖子: sos 在线 
2005-12-28 15:21
C++大粉丝
Rank: 4
等 级:贵宾
威 望:10
帖 子:477
专家分:0
注 册:2004-4-23
收藏
得分:0 
在main前面加上:
int page_block::count;

你的静态成员没有声明和初始化~

I am a big fan of c plus plus.
2005-12-28 15:55
zhuoya
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-12-28
收藏
得分:0 

谢谢姬老师
高手就是高手~~~~~~~~~~~~
呵呵

2005-12-28 18:53
zhuoya
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-12-28
收藏
得分:0 
姬老师
我改了
还是不行啊
你可以具体说下怎么改吗????
谢谢
我太笨了~~~~~~~~~~
2005-12-28 19:14
C++大粉丝
Rank: 4
等 级:贵宾
威 望:10
帖 子:477
专家分:0
注 册:2004-4-23
收藏
得分:0 
还有什么问题吗?

I am a big fan of c plus plus.
2005-12-29 18:02
快速回复:请大家帮我改正以下问题!!!!(sos)在线等待中
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015629 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved