- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态分区管理的主存 的分配模拟设计--最优适应法、最差适应法
学 号: 0121010340808
课 程 设 计
题 目 动态分区管理的主存分配模拟设计--最优适应法、最差适应法 学 院 计算机科学与技术学院 专 业 计算机科学与技术专业 班 级 计算机1002班 姓 名 刘浪浪 指导教师 杨克俭
2013 年 1 月 20 日
课程设计任务书
学生姓名: 刘浪浪 专业班级: 计科1002班
指导教师: 杨克俭 工作单位: 计算机科学与技术学院
题 目: 动态分区管理的主存分配模拟设计--最优适应法、最差适应法
初始条件:
1.预备内容:阅读操作系统的内存管理章节内容,理解动态分区的思想,并体会各分配算法的具体实施方法。
2.实践准备:掌握一种计算机高级语言的使用。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.采用指定算法模拟动态分区管理方式的主存分配。能够处理以下的情形:随机出现的进程i申请jKB内存,程序能判断是否能分配,如果能分配,要分配的首地址address,要求输出内存使用情况和空闲情况。内存情况输出的格式为:address该分区的首地址Eaddress该分区的尾地址Len 分区长度Process 如果使用,使用的进程号,否则为0i)你认为你完成的设计哪些地方做得比较好或比较出色;
ii)什么地方做得不太好,以后如何改正;
iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);
iv)完成本题是否有其他的其他方法(如果有,简要说明该方法);
v)对实验题的评价和改进意见,请你推荐设计题目。
时间安排:
设计安排一周:周1、周2:完成程序分析及设计。
周2、周3:完成程序调试及测试。
周4、周5:验收、撰写课程设计报告。
(注意事项:严禁抄袭,一旦发现,抄与被抄的一律按0分记)
指导教师签名: 年 月 日
系主任(或责任教师)签名: 年 月 日
一、题目
动态分区管理的主存分配模拟设计--最优适应法、最差适应法
二、主要任务
1.采用指定算法模拟动态分区管理方式的主存分配。能够处理以下的情形:随机出现的进程i申请jKB内存,程序能判断是否能分配,如果能分配,要分配的首地址address,要求输出内存使用情况和空闲情况。内存情况输出的格式为:address该分区的首地址Eaddress该分区的尾地址Len 分区长度Process 如果使用,使用的进程号,否则为0i)你认为你完成的设计哪些地方做得比较好或比较出色;
ii)什么地方做得不太好,以后如何改正;
iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);
iv)完成本题是否有其他的其他方法(如果有,简要说明该方法);
v)对实验题的评价和改进意见,请你推荐设计题目。
三、原理
1.最佳适应算法:
它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。最坏适应分配算法要扫描整个空闲分区或链表,总是挑选一个最大的空闲分区分割给作业使用。该算法要求将所有的空闲分区按其容量从大到小的顺序形成一空闲区链,查找时只要看第一个分区能否满足作业要求。2K 进程C
4K 进程D
8K ........
OS 进程A 进程B 进程C 进程D OS 进程A 进程B 进程C OS 进程A 进程B OS 进程A
五、实验功能设计
1.数据结构说明
本实验用到了结构体和类两种数据结构:
结构体定义如下:
struct area{
int start;
int length;
int state;
struct area *next;
}
其中定义了四个数据成员,其中start是内存块开始地址,length是内存块长度,state是内存块使用状态,next是指向下一个内存块的指针。
2程序函数模块说明
主函数:
int main()
{
int Choice;
//开始循环
while(1)
{
system(cls);
init();
PrintMemoryState(head);
printf(1.最优适应法\n);
printf(2.最差适应法\n);
printf(3.退出程序\n);
printf(选择分区管理方式:);
文档评论(0)