可变分区首次适应算法.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

156****9082 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档