动态分区存储管理方式的主存分配回收实验参考
The Standardization Office was revised on the afternoon of December 13, 2020
动态分区存储管理方式的主存分配回收实验报告
一、实验目的
深入了解动态分区存储管理方式的主存分配回收的实现。
二、实验要求
编写程序完成动态分区存储管理方式的主存分配回收的实现。实验具体包括:首先确定主存空间分配表;然后采用最优适应算法完成主存空间的分配,完成主存空间的回收;最后编写主函数对所作工作进程测试。
三、实验原理:
存储管理中动态分区的管理方式。
四、实验程序设计
1. 数据结构
? 已分分区表的数据结构定义 #define n 10 能函数设计
1) 系统数据初始化 free_table[0].address=10240; free_table[0].length=102400; free_table[0].flag=1; lag=0; lag='0';
2) 分配函数
void CExp3Dlg::allocate(CString J, float xk) ength>=xk&&free_table[i].flag==1) if(k==-1||free_table[i].length lag!='0' && i else ddress=ad; used_table[i].length=xk; used_table[i].flag=J; } return; } 3) 回收函数 void CExp3Dlg::reclaim(CString J) lag!=J||used_table[s].flag=='0')&&s if(s>=n) lag='0'; ddress; L=used_table[s].length; j=-1;k=-1;i=0; lag==0) { if(free_table[i].address+free_table[i].length==S) k=i; ddress==S+L) j=i; ength=free_table[j].length+free_table[k].length+L; free_table[j].flag=0; } else ength=free_table[k].length+L; else if(j!=-1) ddress=S; free_table[j].length=free_table[j].length+L; } else lag==1&&t 4) 按钮函数设计 ? 【分配】按钮 void CExp3Dlg::OnButtonAlloc() { this->UpdateData(true); CString name; float size; name=this->m_EDIT_NAME; size=this->m_EDIT_SIZE;