}
display(){
TABLE *pt=tab;
if(pt==NULL) return 0;
printf(\空闲分区情况---------\\n\ printf(\状态\\t大小\\t起始地址\\n\ while(pt!=NULL){
printf(\ pt=pt->next; } return 0; }
sorttable(){ /*分区按升序排列*/ TABLE *first, *second; if(tab==NULL){ p->next=tab; tab=p; } else{ first=tab;
second=first->next; while(second!=NULL){ first=first->next;
second=second->next; }
first->next=p; } }
InitTab(){ int num;
int i,paddr=0;
TABLE *pn; /*指向前一结点*/ pn=NULL;
printf(\ printf(\请输入分区个数:\\n\ scanf(\ for(i=0;i p=getpch(TABLE); printf(\输入分区NO.%d的ID:\\n\ scanf(\ p->state='N'; printf(\输入分区大小:\\n\ scanf(\ p->addr=paddr; paddr=p->addr+p->size; p->prev=pn; pn=p; p->next=NULL; sorttable(); /* 按分区起始地址排序*/ } } main(){ int ch=1; int size; char name[10],c='y'; UI(); InitTab(); system(\ UI(); display(); getch(); system(\ while(c!='n'&&c!='N'){ UI(); printf(\选择你要进行的操作\\n1--分配作业\\n2--回收分区\\n0/其他--退出\\n\\n\ scanf(\system(\switch(ch) { case 1: UI(); display(); printf(\请输入作业大小:\\n\scanf(\allocate(size); break; UI(); display(); printf(\请输入待回收分区的ID:\\n\scanf(\ case 2: recycle(name); break; case 0: } 截 } default :exit(0); } display(); printf(\是否继续?y/n\\n\system(\ c=getch(); 图: 五、实验小结 此次实验, 动手实践模拟在连续分配与分页管理两种方式下,主存空间的分配与回收,加深了解存储器管理的工作过程。尝试采用首次适应算法、循环首次适应算法、最佳适应算法其中的一种或多种算法实现动态分区分配,分页式主存管理系统等等.实验过程中,深刻了解了分页式与连续式之间的区别与相似处,更好的对主存管理、回收、装入等等有了更加深入的了解.