- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .
可变分区首次适应算法
操作系统实验报告
题 目 :可变分区首次适应算法指导老师 :
班级 :
姓名 :
学号 :
时 间 :
实验三 可变分区首次适应算法
一、实验目的
模拟内存分配 , 了解并掌握动态分区分配中所用的数据结构、 分区分配算法。 回顾链表
的创建,插入,删除等基本操作; 深刻理解首次适应内存分配算法。
二、实验内容
编程实现首次适应内存分配算法,并上机验证。
实验环境: Microsoft Visual Studio 2010
三、算法描述
该程序用一个链表来模拟内存的空间分布。从键盘输入链表长度和第一个结点的首地
址、以及其他各个结点所占空间大小。 然后进行申请空间, 并判断所申请的大小是否符合要
求,能不能进行分配。本程序主要包括两大模块, 一是建立链表模块, 二是申请并分配空间模块。
程序流程图如下:
开始
初始化
输出内存分配
输入申情请况内
存空间大小
是否可以
否
进行分配
是
内存分配并输
是否继续
出分配结果
是
否
四、程序清单及简单注释
结束
文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .
内存分配算法:
#include<iostream>
#include<stdlib.h>
#include <conio.h>
using namespace std;
int size=0,count=0,part[1000],address[1000],flag[1000];// 设定全局变量
//******************* 输出可视结果 *****************//
void Output()
{
int j;
cout<<" 输出内存分配情况: "<<endl;
cout<<endl;
cout<<" | 分区号 | 分区大小 | 起始地址 | 状态 |"<<endl; for(j=1;j<=count;j++)
{
cout<<"
cout<<" |
cout<<" |
| "<<j<<" ";
"<<part[j]<<" ";
"<<address[j]<<" ";
if(flag[j]==1)
cout<<" | "<<" 已分配 ";
if(flag[j]==0)
cout<<" | "<<" 未分配 ";
cout<<" |";
cout<<endl;
}
}
//****************** 创建原始环境 ******************//
void Create()// 指明内存空间并初步地为作业分配内存
{
int i=1,m=0,s=0,start=0;
char contin='Y';
cout<<" 请输入待分配的内存大小: ";
cin>>size;
cout<<endl;
cout<<" 开始为作业分配内存空间 "<<endl;
文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .
cout<<endl;
cout<<" 请输入第一次分区的首地址: ";
cin>>start;
cout<<endl;
cout<<" 输入每个分区的大小,以‘ Y ’继续操作,以‘ N’结束分区操作 :"<<endl;
cout<<endl;
while(contin!='N')
{
count=i;
cout<<" 请输入第 "<<i<<" 个作业的大小: ";
cin>>part[i];
address[i]=start;
start=start+part[i];
s=m;//m 用来标记已分配内存的总的大小, s 用来标记 m 之前的值
m=m+part[i];
flag[i]=1;// 标识内存已分配
if(m==size)
{
cout<<endl;
cout<<" 已分配完所有内存空间,请结束操作! "<<endl;
cout<<endl;
contin='N';
}
if(m<size)
{
cout<<endl;
cout<<" 是否继续 ? Y/N:";
cin>>contin;
cout<<endl;
while(contin!='Y'&&contin!='N')
{
cout<<endl;
cout<<" 输入‘ N ’或‘ Y ’继续操作: ";
cin>>contin;
cout<<endl;
文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .
}
if(contin=='Y')
i++;
if(contin=='N')// 如果不继续分配内存,将剩余的空间定义为一个分区,但标记
为未分配
{
part[++i]=size-m;
count=i;// 分区总数
add
1亿VIP精品文档
相关文档
最近下载
- 新人教版七年级下册美术教案PDF打印.pdf
- SD05电磁兼容测试大纲 _Part Ⅳ:EMC_2022.01.12.docx
- Eh-pH图解制作过程.ppt
- 互联网金融对商业银行个人理财业务的影响分析--以建设银行东莞分行为例.docx VIP
- 《把时间当作朋友》PPT课件.pptx
- 2024年浙江省杭州市中考科学试题卷(含答案).docx
- 2020-2021学年八年级下册英语人教课件 Unit 7 Grammar Focus.ppt
- 胰腺炎合并糖尿病护理查房ppt课件.pptx
- 七年级上学期家长会课件:如何适应初中生活.pptx
- 互联网金融背景下建设银行个人理财业务的发展策略研究.doc VIP
文档评论(0)