操作系统原理-模拟动态分区首次适应分配和回收算法——沐雨先生

本文详细描述了一个C++编写的模拟动态分区首次适应分配和回收算法的实验,包括设计算法、数据结构、运行示例以及解决调试过程中遇到的问题,旨在帮助读者理解内存管理机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实验题目: 模拟动态分区首次适应分配和回收算法

二、实验目的: 通过本实验,可加深理解动态分区分配、回收程序的功能和具体实现,特别是对回收分区的合并的理解。

三、实验环境:

1、硬件:PC机及其兼容机。

2、软件:Windows OS,MS—DOS OS,Turbo C 或 C++、VC++等。

四、实验内容:

1、 设计动态分区首次适应分配、回收算法。

2、 设计“空闲分区表”,格式为:

在这里插入图片描述

4、设计显示程序,将“未分配区说明表”和“已分配区说明表”的内容,显示在屏幕上。

5、 初始分配从一个空闲区分配起,回收时要合并空区。

五、运行示例:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、算法流程图:

在这里插入图片描述

七、程序清单:

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<windows.h>

#define N 5
#define MINSIZE 10//最大碎片大小

typedef struct EMP{
   
	int no;//分区编号
	int iadd;//起始地址
	int length;//长度
	int status;//状态 1-占有,0未占有
}EMP;
typedef struct USE{
   
	int no;//分区编号
	int iadd;//起始地址
	int length;//长度
	int status;//状态 1-占有,0未占有
	char job[10];//作业名
}USE;

void menu(){
   
	printf("---------OS实验三:模拟动态分区首次适应分配和回收算法---------\n");
	printf("---------------------------系统菜单---------------------------\n");
	printf("----------------------------1.分配----------------------------\n");
	printf("----------------------------2.回收----------------------------\n");
	printf("----------------------------3.显示----------------------------\n");
	printf("----------------------------0.退出----------------------------\n");
	printf("---------------------请输入您需要的功能(0-3)------------------\n");
	printf("--------------------------------------------------------------\n");
	printf("各功能简要说明:\n");
	printf("分配功能:选择该功能后,首先输入需要分配空间的作业名及所需空间的大小。然后,按照首次适用算法从空闲分区表中找到一个合适的分区,若找到,则划分相应的空闲分区给该作业(修改“未分配区说明表”和“已分配区说明表”中的内容);若没有找到,需要给出相应的提示信息。\n");
	printf("回收算法:选择该功能后,首先输入需要回收的作业的名称,然后,系统按照该名称从“已分配区说明表”中找到该作业对应的表项,若找到,则回收该分区(修改“未分配区说明表”和“已分配区说明表”中的内容),要注意空闲分区的合并与空闲分区表需要按地址有序调整;若没有找到,则给出相应的提示信息。\n");
	printf("显示分区表:将两个分区表的内容显示在屏幕上,以便随时查看程序的运行情况。\n");
}


void allocation(EMP e[],USE u[]){
   //分配内存
	int i,j,k;
	int flag;
	char tempname[10]={
   '\0'};
	int templength;
	system(&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐雨先生

如果真的帮助到你了再打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值