#include #include #include #include #include using namespace std; struct FF { char name[10]; float address;//起始地址 float AFFival_time;//没用 float Service_hours;//没用 float Process_size;//进程大小 float size;//在内存中一块一块的值 float max_size;//内存最大值 float state;//0为空闲 1为不空闲,别问我为什么不用bool ,因为抄袭只能拿60 }; void print_Memory(FF *p,int N);//内存空间打印函数 void recovery(FF *p,int N);//回收函数,紧凑功能 void input(FF *p, int N);//输入函数 void run(FF *p,int N);//交互式界面 void detelex(FF *p,int N);//结束进程函数 void input(FF *p, int N) { int i; int x=0; printf("输入系统内存大小"); scanf("%f",&p[0].max_size); printf("\n"); for(i = 0; i <= N - 1; i++) { printf("输入第%d个进程的名字,到达时间,服务时间,进程大小(例如:1 2 1 5):\n", i+1); scanf("%s %f %f %f", p[i].name, &p[i].AFFival_time, &p[i].Service_hours,&p[i].Process_size); } } void print(FF *p,int N){ for(int i=0;i<=N;i++){ printf(p[i].name, &p[i].AFFival_time, &p[i].Service_hours,&p[i].Process_size); } } void distribution(FF *p,int N) { int i; p[0].size=p[0].max_size; for (i=0; i=p[i].Process_size) { p[0].size=p[0].size-p[i].Process_size; p[i+1].state=1; } else { printf("第%d个进程进去后导致",i+1); printf("马冲我谢谢你,内存不足\n"); p[i+1].size=p[0].size; p[i+1].state=0; print_Memory(p, N); } } } void recovery(FF *p,int N) {//想拿一百分还不赶快完成这个 int i; for(i=1; i>xx; if(xx==1) { detelex(p, N); print(p,N); } else if(xx==2) { recovery(p, N); } else if(xx==3) { print_Memory(p, N); } } } void detelex(FF *p,int N) { float yy; printf("\n输入删除进程的起始地址\n"); scanf("%f",&yy); for(int i =0;i