实验二
班级:软件工程 075 学号:0713063023 姓名:沈晓龙
一·实验内容:分页式存储管理
二·实验目的:
体会可变分区内存管理方案,掌握此方案的内存分配过程、内存回收过程和紧凑算法的
实现。
实验目标:
编制一个程序模拟实现可变分区内存管理。实验时,假设系统内存容量为 100KB。 分配
时使用 my_malloc(i, j)函数实现,作业释放内存时使用 my_free(handle)函数实现,内存情况
输出用 my_memlist( )实现。
实验步骤:
1.编写主界面,界面上有三个选项:分配内存、回收内存、查看内存。选择分配内存时,
要求输入作业的进程号和作业长度,然后使用 my_malloc 分配内存,报告内存分配结果。回
收内存时要求输入进程号,使用 my_free 实现回收。查看内存时,使用 my_memlist 实现输
出内存使用情况和空闲情况。
2.编写 my_malloc(i, j)函数,实现进程 i 申请 j KB 内存,要求程序判断是否能分配,如果
能分配,要把分配的首地址 handle 输出到屏幕上。
3.编写 my_free(handle)函数,释放首地址为 handle 的内存块。释放成功返回 Success,
否则返回 Failure。
4.编写 my_memlist( )函数,要求输出内存使用情况和空闲情况。
5.内存情况输出的格式为:
ID Address Len Process
其中:
ID:内存分区号
Address:该分区的首地址
Len:分区长度
Process:如果使用,则为使用的进程号,否则为 NULL
三·试验设计:
存储管理的主要问题在于分配资源和回收资源。当空闲资源数大于和等于所需资源数时,
可以咯进程分配资源,否则,不能分配资源。当进程运行完毕,要回收已运行完毕进程所占
用的资源,以备下个进程运行时使用。另外,当多个进程运行完毕,在连续的空间下,我们
要将它们合并。
结构体变量定义如下:
struct
{
float address; /*已分配分区起始地址*/
float length; /*已分配分区长度,单位为字节*/
int flag; /*已分配区表登记栏标志,用"0"表示空栏目*/
}used_table[n]; /*已分配区表*
四·实验结果