操作系统实验 内存的分配与回收 实验报告 一、实验题目:内存的分配与回收 二、实验内容:利用可变分区的首次适应算法,模拟内存的分配与回收
三、实验目的:掌握可变分区首次适应算法的原理以及其编程实现
四、实验过程: 1、基本思想:可变分区分配是根据进程的实际需求,动态地为之分配内存空间
首次适应算法要求空闲空间链以地址递增的次序链接
进行内存分配时,从链表头部开始依次检索,找到第一个不小于请求空间大小的空闲空间进行分配
分配时需考虑碎片问题,若分配会导致碎片产生则将整块分区分配
内存的回收需要考虑四种情况:⑴回收分区前后两个分区都空闲,则需要和前后两个分区合并;(2)回收分区只有前一分区空闲,则与前一分区合并;(3)回收分区只有后一分区空闲,则和后一分区合并;(4)回收分区独立,不考虑合并
2、主要数据结构: struct FreeArea{ 链结点包含的数据:分区号、大小、起址、标记 int ID; int size; long address; int sign; }; struct Node { 双链表结点结构体:数据区、前向指针、后继指针 FreeArea data; struct Node *prior; struct Node *next; }*DLinkList; 3、输入、输出: 输入: I
内存分配时由键盘输入分区ID 和大小; II
内存回收时由键盘输入需要回收的分区ID; 输出: 输出内存的分配情况(按照地址从低到高) 4、程序流程图: 选择操作choice 输出可选操作 Choice>3 或choice