1 / 30
文档名称:

空闲磁盘存储空间的管理.docx

格式:docx   大小:60KB   页数:30页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

空闲磁盘存储空间的管理.docx

上传人:xiaobaizhua 2022/5/18 文件大小:60 KB

下载得到文件列表

空闲磁盘存储空间的管理.docx

文档介绍

文档介绍:OS 课程设计
空闲磁盘存储空间的管理
1、课程设计任务、要求、目的
我们组选的题目是第17 题:空闲磁盘存储空间的管理:简单方法。
具体要求如下:
建立相应的数据结构;
磁盘上建立一个文件,文件长度设为10MB,用该文件来模拟k*sector;
struct process//process 顺序表数据结构,存储申请的物理块信息
{
char name[20];
int c[SIZE],t[SIZE],s[SIZE];
int n;
};
process processtable[SIZE];//process 格式表
int ppo in ter=-1;//process 指针
class bitmap//位示图结构体
{
public:
int bitmap[M][N];
void In itbitmap();〃初始化位示图
bool spaceisok( int n);〃位示图符合判断 void displaybitmap();〃 打印
};
bitmap bm;〃全局位示图,为所有进程共享
void bitmap::Initbitmap()
{
int i,j;
cout<<"********************************************
coutvv" 位示图初始化\n";
cout<<"********************************************
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
bitmap[i][j]=0;
}
}
// getchar();
displaybitmap();〃初始化后位示图
getchar();
//system("cls");
}
bool bitmap::spaceisok( int n)〃判断位示图空闲物理块是否足够
int count=0;
for(int i=0;i<M;i++)
{
for(int j=0;j<N;j++)
{
if(bitmap[i][j]==0)
{
count++;
}
}
}
if(count<n)
return false;
else
return true;
}
void bitmap::displaybitmap()〃打印位示图
{
int i,j;
cout«"\n当前位示图信息如下:\n";
cout<<"\n
*********************************************************************
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
cout<<"\t"<<bitmap[i][j];
}
cout<<endl;
cout<<"\n
*********************************************************************
if(ppointer<0)
{
cout«"\n尚未分配磁盘空间\n";
return;
}
else
{
cout<<"\n当前分配信息如下:\n";
cout<<"\n#######################################################";
cout«"\n进程名\t\t分配的物理块数\n ”;
// coutvv"\n进程名\t\t分配的物理块数\t\t物理块信息\n";
for(i nt i=0;iv=ppoi nter;i++)
if(processtable[i].n==0)
continue;
else
{
cout<<"\n"<<processtable[i].name<<"\t\t "<<processtable[i].n;
/*
for(j=0;j<processtable[i].n;j++)
{
if(j==0)
{ cout<<"\t\t\t("<<processtable[i].c[j]<<","<<processtable[i].t[j]<<","<<processtable[i].s[j]
<<")\n";
}
else
{ cout<<"\t\t\t\t\t("<<processtable[i].c[j]<<","<<processtable[i].t[j]<<","<<processtable[i].
s[j]<<")\n";
}
*/
}
cout<<"\n###########################