动态分区分配算法的模拟

symnphrost 2010-05-20 10:57:35
PS:我主要是学算法,参加ACM的,基本不涉及系统的API,所有这方面不是很懂。。。
这个学期的操作系统课程实验,基本都不会,这个实验折腾我一个多星期了,实在没办法,不知道API百度都百度不了。希望大家帮帮我吧。。。
小弟在此先谢过了..


实验五 动态分区分配算法的模拟
一、 实验目的
1、加深操作系统内存管理过程的理解
2、掌握内存分配算法的基本应用
二、 实验任务
请同学们用C/C++实现一个完整的(可变)动态分区管理器,包括分配,回收,分区碎片整理等。希望同学们实现如下功能:
n 初始化功能:内存状态设置为初始状态。
n 分配功能:要求至少使用两种算法,用户可以选择使用。
n 回收功能:
n 空闲块的合并:即紧凑功能,用以消除碎片。当做碎片整理时,需要跟踪分配的空间,修改其引用以保证引用的正确性。
n 显示当前内存的使用状态,可以使用表格或图形。
三、实验指导
1.基本思想
动态分区是指系统不预先划分固定分区,而是在装入程序的时候划分内存区域,使得为程序分配的分区大小恰好等于该程序的需求量,且分区的个数是动态的。显然动态分区有较大的灵活性,较之固定分区能获得好的内存利用率。
2.数据结构
动态分区管理可以用两种数据结构实现,一种是已分配区表和空闲区表,也就是用预先定义好的系统空间来存放空间分配信息。
另一种也是最常用的就是空闲链表,由于对分区的操作是动态的,所以很难估计数据结构所占用的空间,而且空闲区表会占用宝贵的系统空间,所以提出了空闲链表的概念。其特点是用于管理分区的信息动态生成并和该分区在物理地址上相邻。这样由于可以简单用两个空闲块之间的距离定位已分配空间,不仅节约了系统空间,而且不必维持已分配空间的信息。
本实验是要做一个模拟程序,来模拟动态分区算法的分配和回收过程,并不是真正的去分配和回收内存。基本的模拟方法有两种:
1、先从内存中申请一块存储区,对这块存储区进行模拟的分配和回收活动。
2、不申请存储区,自己定义一块虚拟的存储区,对这块存储区进行模拟的分配和回收活动,分配和回收仅仅是对数据结构的修改而已。


...全文
2071 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
AOT200 2011-05-30
  • 打赏
  • 举报
回复
进来看了看 有些有帮助的样子
还是不太懂
xushenbaye 2011-05-16
  • 打赏
  • 举报
回复
niu
  • 打赏
  • 举报
回复
数据结构看着就头疼
楼主自己试着写吧,这里不做作业贴的
symnphrost 2010-05-23
  • 打赏
  • 举报
回复
其实算法倒觉得不难,只是一旦涉及到内存,就什么都不会了……
还是学长说的对,只玩算法不搞UI也是残废……

希望各位能帮我多多UP啊 =)
cattycat 2010-05-23
  • 打赏
  • 举报
回复
这个不需要API啊,最多就是malloc,free之类的。让你模拟内存管理算法,用链表或其他数据结构都行。
ArtiFly2000 2010-05-23
  • 打赏
  • 举报
回复
不一定非要用图形界面吧
用printf打个表格出来也不错

也不涉及系统内存分配,都是用程序模拟
也就链表、数组就行了
某某9 2010-05-22
  • 打赏
  • 举报
回复
友情up
acdbxzyw 2010-05-22
  • 打赏
  • 举报
回复
这么熟?。。。
去年课设用MFC写过。。。
你不是搞ACM吗?你就用数组模拟内存,算法应该挺简单。
tx183584 2010-05-22
  • 打赏
  • 举报
回复
不需要用到系统的API吧.,只是让你模拟
azure110 2010-05-21
  • 打赏
  • 举报
回复
没写过 。。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧