⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 word.h

📁 操作系统作业 内存管理 功能 1 创建分区 2 查看分区 3 添加作业 4 回收分区
💻 H
字号:
#include "iostream.h"
#include "stdlib.h"
#define Num 10
#define SIZE 10000;

typedef struct
{
	int id;//分区号
	int size;//分区大小
	int address;//外部标志
	int status;//状态标志
	            //0---〉表示空闲
	            //1---> 表示使用
}Word;
Word Array[Num];
int b[10];
int Size;
int Number;//总的分区个数
char Info;

void creat()
{
	cout<<"请输入内存大小:";
    cin>>Size;
}

///插入作业///
void addwork()
{
	int job_size,last;
	int ID;
	cout<<"请输入作业的id号与大小"<<endl;
	cin>>ID>>job_size;
	
	for(int i=1;i<=Number;i++)
	{
		if(Array[i].status==0)
			if(job_size<Array[i].size)
			{   
				Array[i].status=1;
			    last=Array[i].size-job_size;
 			    Array[i].size=job_size;
                b[ID]=Array[i].id;
				Array[++Number].status=0;
				Array[Number].id=Number;
				Array[Number].size=last;
				Array[Number].address=Array[i].address+Array[i].size;
			    break;

			}
	}

}

void recycle()
{
	int ID;
	cout<<"请输入要回收作业的名字:"<<endl;
	cin>>ID;
	for(int i=1;i<Number;i++)
		if(b[ID]==Array[i].id)
		{
			Array[i].status=0;
		}
}

void run()
{
	int i,j,k;
	while(1)
	{
	    cout<<"\nc----->创建分区\n";
	    cout<<"l----->察看分区\n";
	    cout<<"a----->添加作业\n";
	    cout<<"r----->回收分区\n";
	    cout<<"q----->  退出\n";
		
		cin>>Info;

		switch(Info)
		{
        ///创建分区///
		case 'c':
			cout<<"请输入分区个数!个数需小于"<<Num<<"个:->\n";
            cin>>Number;
	        while(Number>Num)
			{
				cout<<"请输入分区个数!个数须小于"<<Num<<"个:\n->";
				cin>>Number;
			}
			for(i=1;i<=Number;i++)
			{
				Array[i].id=i;
	        	Array[i].status=0;
		        Array[i].size=NULL;
		        Array[i].address=0;
			}
			cout<<"请输入分区大小:\n";
			
			for(j=1;j<=Number;j++)
			{
				cout<<"第"<<j<<"个分区的大小:->\n";
				cin>>Array[j].size;
				if(Array[j].size+Array[j].address>Size)
				{
					cout<<"分区错误!请重新输入分区大小:";
					cout<<"第"<<j<<"个分区的大小:->\n";
					cin>>Array[j].size;
				}
				if(j<Number)
					Array[j+1].address=Array[j].address+Array[j].size;
				cout<<"\n";
			}
			cout<<"创建了"<<Number<<"个分区!\n";

			cout<<"========\n";
			break;
        ///查看分区///
		case 'l':
			cout<<"分区号\t\t分区首地址\t\t分区大小\t\t分区状态\n";
			for(k=1;k<=Number;k++)
			{
				cout<<Array[k].id<<"\t\t"<<Array[k].address;
				cout<<"\t\t\t"<<Array[k].size<<"\t\t\t"<<Array[k].status<<"\n";
			}
			cout<<"========\n";
			break;
		///添加作业///
		case 'a':
			addwork();
			break;
		///回收///
		case 'r':
			recycle();
			break;
		///退出///
		case 'q':
			exit(0);
			cout<<"========\n";
			break;
		default:
			cout<<"无效状态!\n";
			cout<<"========\n";
			break;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -