欢迎来到天天文库!上传客服QQ1290478887点击这里,给天天文库发消息,QQ:1290478887 | 帮助中心 分享价值,快乐你我!
天天文库
全部分类
  • 学术论文 >
    毕业论文 毕业设计 临时分类
    学术论文
    毕业论文 毕业设计 临时分类 土木工程毕业设计 asp毕业设计 安卓毕业设计 php毕业设计 文献综述 其他论文 外文翻译 Java毕业设计 asp.net论文 英语论文 机械毕业设计 船舶工程毕业论文 法学专业毕业论文 工商管理毕业论文 汉语言文学毕业论文 行政管理毕业论文 护理学毕业论文 化学专业毕业论文 会计学毕业论文 计算机论文 教育学论文 金融管理论文 景观设计毕业论文 旅游管理毕业论文 文秘秘书毕业论文 人力资源管理毕业论 期刊论文 数学专业毕业论文 心理学毕业论文 平面艺术设计论文 开题报告 音乐专业毕业论文 市场营销论文 装修毕业论文
  • 应用文档 >
    商业计划 设计方案 施工方案
    应用文档
    商业计划 设计方案 施工方案 事迹材料 使用与维护手册 工作思想汇报 表格清单 应急预案 调研报告 策划书 项目建议书 技术措施与指南 可行性研究报告 分析报告 演讲稿 自查报告 党校课件 党校讲课稿 合同协议范本 ppt模板 工作总结 工作计划 工作报告 讲话稿 心得体会 活动方案 规章制度 读后感 汇报材料 其他办公文档
  • 行业资料 >
    专业技术 解决措施 指导说明书
    行业资料
    专业技术 解决措施 指导说明书 组织施工设计 技术规范 国家标准 行业标准 经营营销
  • 教育资源 >
    课后答案 笔记讲义 主题班会
    教育资源
    课后答案 笔记讲义 主题班会 医学课件 PDF书籍 商业培训 优质公开课课件 考试资料 教学课件 职业培训课件 大学学习资料 高中学习资料 初中学习资料 小学学习资料 其他学习资料 练习与试题 英语资料 课程设计 临时分类
  • 其他资料 >
    其他文档 免费文档
    其他资料
    其他文档 免费文档
  • 首页 天天文库 > 资源分类 > DOC文档下载
     

    课程设计操作系统课程设计文档撰写-0.1

    • 资源ID:18800164       资源大小:330.52KB        全文页数:32页
    • 资源格式: DOC        下载权限:游客/注册会员    下载费用:20积分 【人民币20元】
    游客快捷下载 游客一键下载
    会员登录下载
    下载资源需要20积分 【人民币20元】

    邮箱/QQ:
    温馨提示:
    支付成功后,系统会根据您填写的邮箱或者QQ号作为您下次登录的用户名和密码(如填写的是QQ,那登陆用户名和密码就是QQ号),方便下次登录下载和查询订单;
    特别说明:
    付款后即可正常下载,下载内容为可编辑文档格式,推荐使用支付宝;
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    1、本站资源不支持迅雷下载,请使用浏览器直接下载(不支持QQ浏览器);
    2、文档下载后都不会有天天文库的水印,预览文档经过压缩,下载后原文更清晰;
    3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
    4、所有文档都是可以预览的,天天文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供保证;
    5、文档的总页数、文档格式和文档大小以系统显示为准(不同办公软件显示的页数偶尔有区别),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
    6、如果您还有什么不清楚的,可以点击右侧栏的客服对话;
    下载须知 | 常见问题汇总

    课程设计操作系统课程设计文档撰写-0.1

    课课 程程 设设 计计 课程名称操作系统 题目名称可变分区存储管理算法模拟 专业班级2013 级软件工程 学生姓名 学 号5130204104 指导教师何爱华 二○一五年五月二十日 目 录 (请从任务书开始设置页码,页码居中,5 号字,宋体,目 录采用自动插入方式生成) 蚌埠学院计算机科学与技术系课程设计任务书 课 程操作系统班级2013 级软件工程指导教师何爱华 题 目可变分区存储管理算法模拟完成时间 2015 年 5 月 25 日 至 2015 年 6 月 21 日 主要内容 要求完成以下功能 1.能够输入作业情况和申请信息等。 2.能够采用不同算法实现内存分配。 3.能够实现内存回收。 4.能够显示内存分配情况。 5.设计良好的交互界面。 6.撰写课程设计报告。 设计报告要求 1.封面(格式附后) 2.课程设计任务书 3.课程设计报告 ⑴ 系统总体方案 ⑵ 设计思路和主要步骤 ⑶ 各功能模块和流程图 ⑷ 设计代码 ⑸ 心得体会和参考资料 说明学生完成课程设计后,提交课程设计报告及软件,要求文字通畅、字 迹工整(也可用以打印),文字不少于 5000 字,并装订成册。 星期 周次 一二三四五六日 上机时间安排 第 14 周-第 17 周 13 软件工 程 1、2 节 13 软件工 程 1、2 节 指导时 间地点 上机时间,多媒体技术实验室(B530、B528) 版面要求 1.题目用黑体三号,段后距 18 磅(或 1 行) ,居中对齐; 2.标题用黑体四号,段前、段后距 6 磅(或 0.3 行) ; 3.正文用小四号宋体,行距为 1.25 倍行距; 4.标题按“一” 、 “㈠” 、 “1” 、 “⑴”顺序编号。 5.本文档材料 A4 纸双面打印。 计算机科学与技术系课程设计成绩评定标准及成绩评定表 学生姓名 胡同富 学号 51302041042 班级 13 级软件工程 项目 分 值 优秀 100≥x≥90 良好 90x≥80 中等 80x≥70 及格 70x≥60 不及格x60 分项 得分 学习 态度 20 设计态度认真,科 学作风严谨,严格 保证设计时间并按 任务书中规定的进 度开展各项工作 设计态度比较认真, 科学作风良好,能 按期圆满完成任务 书规定的任务 设计态度尚好, 遵守组织纪律, 基本保证设计 时间,按期完 成各项工作 设计态度 尚可,能 遵守组织 纪律,能 按期完成 任务 学习马虎,纪 律涣散,工作 作风不严谨,不 能保证设计时 间和进度 技术 水平 与实 际能 力 30 设计能力强,能独 立思考问题,并主 动查阅文献资料解 决问题,实际动手 能力强、工程制图 能力强 设计合理、理论分 析与计算正确,有 较强的实际动手能 力、分析能力,文 献引用、调查调研 比较合理、可信 设计合理,理 论分析与计算 基本正确,有 一定的实际动 手能力,主要 文献引用、调 查调研比较可 信 设计基本 合理,理 论分析与 计算无大 错,主要 文献引用、 调查调研 比较可信 设计不合理, 理论分析与计 算有原则错误, 实际动手能力 差,文献引用、 调查调研有较 大的问题 论文 撰写 质量 50 绘图规范,结构设 计合理、表达正确、 清晰,绘图质量好, 说明书内容详实, 结构严谨,逻辑性 强,层次清晰,计 算正确、结论准确、 撰写规范工整 结构合理,符合逻 辑,文章层次分明, 语言准确,文字流 畅,符合规范化要 求,书写工整;图 纸清晰、工整 结构合理,层 次较为分明, 文理通顺,基 本达到规范化 要求,书写比 较工整;图纸 比较工整、清 晰 结构基本 合理,逻 辑基本清 楚,文字 尚通顺, 勉强达到 规范化要 求;图纸 比较工整 绘图不规范, 结构设计有较 多错误,表达 不清楚,绘图 质量差,说明 书内容空泛, 有太多缺漏或 错误,结构混 乱,书写潦草 成绩评定成绩评定 指导教师签名指导教师签名 年年 月月 日日 注本课程设计成绩评定表应装入学生课程设计资料袋作为资料保存。注本课程设计成绩评定表应装入学生课程设计资料袋作为资料保存。 可变分区存储管理方式的内存分配回收可变分区存储管理方式的内存分配回收 一一、、系统总体方案系统总体方案 1.11.1 课程设计的目的课程设计的目的 可变分区分配是一种重要的存储管理思想,目前流行的操作系统采 用的分段存储管理的基本思想就源自该方法。本实验的目的是通过编程 来模拟一个简单的可变分区分配存储管理系统,经过实验者亲自动手编 写管理程序,可以进一步加深对可变分区分配存储管理方案设计思想的 理解。 1.2 问题描述问题描述 设计一个可变式分区分配的存储管理方案,并模拟实现分区的分配和回收过程。 对分区的管理可以是下面三种算法之一首次适应算法、 、最佳适应算法、最差适 应算法。在熟练掌握计算机分区存储管理方式的原理的基础上,利用 C 程序设计 语言在 windows 操作系统下模拟实现操作系统的可变分区存储管理的功能,一方 面加深对原理的理解,另一方面提高根据已有原理通过编程解决实际问题的能力, 为进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础。 1.3 算法描述算法描述 动态分区分配是根据进程的实际需要,动态地为之分配内存空间。在实现可变分区 分配时,将涉及到分区中所用的数据结构、分区分配算法和分区的分配和回收操作 这样三个问题。 1.4 设计目的设计目的 带着下面几个问题,对课题进行深入分析直至解决问题 (1).了解分区的动态分配; (2).了解为什么要进行动态分配; (3).掌握首次适应算法的数据结构和内存分区的回收与分配; (4).了解算法的执行过程,加深对首次适应算法的理解。 二、 设计思路和主要步骤 (一)设计思路(一)设计思路 用到的知识点是 C 语言中的结构体、指针、数组等与基本 C 程序设计技术的应用。 需要设计合理的数据结构来描述存储空间,包括被程序占用的存储空间、空闲的 存储空间、多个程序的组织。 (二)主要步骤(二)主要步骤 2.1 设计要求设计要求 根据可变分区存储管理的基本原理,程序的实现主要包括以下几个部分 内存的初始化包括确定内存的起始地址、内存的大小等;为程序分配存储空间 采用首次适应算法来实现;记录和显示内存被程序占用的情况;记录和显示内存中 空闲块的情况; 回收存储空间程序运行完毕后,要及时回收内存空间;碎片拼接当出现内存中 总的空闲空间满足要申请程序的要求,但是每个空闲块都不能满足程序要求的时候, 需要进行碎片拼接合并。 2.2 设计原理设计原理 2.2.1 首次适应算法首次适应算法 系统应用首次适应算法,从空闲分区表中找到所需大小的分区。设请求的分区 大小为 u.size,表中每个空闲分区的大小可表示为 m.size。若 m.size- u.sizesize(size 是事先规定的不再切割的剩余分区的大小) ,说明多余部分太小, 可不再切割,将整个分区分配给请求者;否则(多余部分超过 size) ,从该分区中按 请求者的大小划分出一块内存空间分配出去,余下的部分 仍留在空闲分区表中。然后,将分配区的首地址返回给调用者。下图示出了分配流 程。 2.2.2 最佳适应算法最佳适应算法 所谓“最佳”是指,每次为作业分配内存时,总是把能满足要求、又是最小 的空间分配分区分配给作业,避免“大才小用” 。为了加速寻找,该算法要求将所 有的空闲分区按其容量以从大到小的顺序形成一空闲分区链。 2.2.3 最差适应算法最差适应算法 最差适应算法选择空闲分区的策略正好与最佳适应算法相反它是扫描整个空 闲分区表或链表时,总是挑选一个最大的空闲区,从中分割一部分给空间使用,以 至于存储器中缺乏大的空闲分区。 三.各功能模块和流程图三.各功能模块和流程图 3.1 数据结构 在系统设置一张空闲分表和线性表的双向链表存储结构,用于记录每个空闲分 区的情况。每个空闲分区占一个表目,表目中包括分区标志位、分区起始地址、 分区的大小以及分区分派状态等和前趋指针,后继指针数据项。 //定义一个空闲区表结构 typedef struct freeSpace { long size; //分区大小 long address; //分区首地址 int state; //分区分配状态 }ElemType; // 线性表的双向链表存储结构 typedef struct DuLNode { ElemType data; struct DuLNode *prior; //前趋指针 struct DuLNode *next; //后继指针 } 3.2 分区分配算法 实现分区存储管理的内存分配功能, 首次适应算法基本原理分析 First fit 将空闲分区按起始地址大小从小到大排序,从头找到大小合的分 区。由此,可将空闲分区先做合适的排序后用首次适应算法给作业分配存储空 间。空闲分区表初始化 int First_fitint need { DuLinkList tempDuLinkListmallocsizeofDuLNode; //为申请作 业开辟新空间且初始化 temp-data.sizeneed; //设置新申请空间的大小 temp-data.stateBusy; //设置新申请空间的状 态 DuLNode *phead_Node-next; whilep { ifp-data.stateFree p-data.sizeneed //现有的空闲 块正好等于需要的空间大小,则全部分配 { p-data.stateBusy; //修改该空闲块的状态为已分配 return OK; break; } ifp-data.stateFree p-data.sizeneed //现有的空闲 块大于需求量 { temp-priorp-prior; //修改双向链 表的头尾指针,插入新申请的作业 temp-nextp; temp-data.addressp-data.address; p-prior-nexttemp; p-priortemp; p-data.addresstemp-data.addresstemp-data.size; p-data.size-need; return OK; break; } pp-next; } return ERROR; } 最佳适应算法 int Best_fitint need { int ch; //记录最小剩余空间 DuLinkList tempDuLinkListmallocsizeofDuLNode; temp-data.sizeneed; temp-data.stateBusy; DuLNode *phead_Node-next; DuLNode *qNULL; //记录最佳插入位置 whilep //初始化最小空间和最佳位置 { ifp-data.stateFree p-data.sizeneed { ifqNULL { qp; chp-data.size-need; } else ifq-data.size p-data.size { qp; chp-data.size-need; } } pp-next; } ifqNULL return ERROR;//没有找到空闲块 else ifq-data.sizeneed { q-data.stateBusy; return OK; } else { temp-priorq-prior; temp-nextq; temp-data.addressq-data.address; q-prior-nexttemp; q-priortemp; q-data.addressneed; q-data.sizech; return OK; } return OK; } 最差适应算法 int Worst_fitint need { int ch; //记录最大剩余空间 DuLinkList tempDuLinkListmallocsizeofDuLNode; temp-data.sizeneed; temp-data.stateBusy; DuLNode *phead_Node-next; DuLNode *qNULL; //记录最佳插入位置 whilep //初始化最大空间和最佳位置 { ifp-data.stateFree p-data.sizeneed { ifqNULL { qp; chp-data.size-need; } else ifq-data.size p-data.size { qp; chp-data.size-need; } } pp-next; } ifqNULL return ERROR;//没有找到空闲块 else ifq-data.sizeneed { q-data.stateBusy; return OK; } else { temp-priorq-prior; temp-nextq; temp-data.addressq-data.address; q-prior-nexttemp; q-priortemp; q-data.addressneed; q-data.sizech; return OK; } return OK; } 3.3 内存的分配与回收 在动态分区存储管理方式中,主要的操作是分配内存和回收内存。 3.3.1 分配内存 int allocint ch { int need; cout\n\n 请输入需要分配的空间大小; cinneed; ifneed0 { cout\n\n 请重新输入分配大小endl; return ERROR; } 3.3.2 回收内存 int freeint flag { DuLNode *phead_Node; forint i 0; i flag; i ifpNULL pp-next; else return ERROR; p-data.stateFree; ifp-priorhead_Node p-prior-data.stateFree//与前面的空 闲块相连 { p-prior-data.sizep-data.size; p-prior-nextp-next; p-next-priorp-prior; pp-prior; } ifp-nextend_Node p-next-data.stateFree//与后面的空闲 块相连 { p-data.sizep-next-data.size; p-next-next-priorp; p-nextp-next-next; } ifp-nextend_Node p-next-data.stateFree//与最后的空闲 块相连 { p-data.sizep-next-data.size; p-nextNULL; } return OK; } 3.4 总体流程图 主函数 main() 内存回收 Free() 显示遍历结果 Show() 最差分配算法 Worst_fit() 最优分配算法 Best_fitint,float () 首次适应算法 First_fit() 3.53.5 作业分配流图作业分配流图 从头开始查表 检索完否 M.size Mize-u.sizesize 从该分区划出分区 将该分区分配给请 求者 返回 返回 继续检索下一个表象 将该分区从链中移除 3.63.6 内存回收流程图内存回收流程图 是 3.4 实验结果 按要求输入页面走向长度在 0-1024 之间,如果超出此范围程序将不予响应,并 要求重新输入。输入正确后,分配内存结果界面将显示如下图 3-1 回收区 顺序检索可用资源表 是否相邻 分区与可用区合并 分区相邻 Size0 是否相邻 与后一可用区合并 将所有表目下移一 格 将所有表目上移一格, 并插入可用区表目 返回 前可用区与后可用 区合并 图 3-1 分配内存 输入正确后,显示内存结果界面显示如下图 3-2 图 3-2 回收内存界面显示如下图 3-3-1 图 3-3-1 输入正确后,回收内存结果界面显示如下图 3-4 图 3-4 四、四、 设计代码设计代码 include iostream using namespace std; define Free 0 //空闲状态 define Busy 1 //已分配状态 define OK 1 //分配成功 define ERROR 0 //分配出错 define MAX_length 1024 //最大内存空间为 1024 int flag; typedef struct freeSpace //定义一个空闲区表结构 { long size; //分区大小 long address; //分区首地址 int state; //分区分配状态 }ElemType; // 线性表的双向链表存储结构 typedef struct DuLNode { ElemType data; struct DuLNode *prior; //前趋指针 struct DuLNode *next; //后继指针 } DuLNode ,*DuLinkList; DuLinkList head_Node; //头结点 DuLinkList end_Node; //尾结点 int allocint; //内存分配选择 int freeint; //内存回收 int First_fitint; //首次适应算法 int Best_fitint; //最佳适应算法 int Worst_fitint; //最差适应算法 void show; //查看分配 int Initblock; //初始化空间表 int Initblock //初始化带头结点的内存空间 链表 { head_NodeDuLinkListmallocsizeofDuLNode;//动态分配头节点内 存地址 end_NodeDuLinkListmallocsizeofDuLNode;//动态分配尾节点内存 地址 ifhead_Node0 end_Node0 { head_Node-priorNULL; //头结点的前驱指针指向空 head_Node-nextend_Node; //头结点的后继指针指向尾 结点 end_Node-priorhead_Node; //尾结点的前驱指针指向头 结点 end_Node-nextNULL; //尾结点的后继指针指向空 end_Node-data.address0; //尾结点的地址是 0 end_Node-data.sizeMAX_length; //分区大小是最大分区 end_Node-data.stateFree; //状态是空 return OK; } else return ERROR; } void main { int ch; Initblock; //设置初始空间表 int choice; //操作标记 while1 {cout\n1 分配内存\t2 回收内存\t3内存使用情况显示\t4 退出 \n\n; cout请选择您的操作; cinchoice; ifchoice1 {cout\n\n****请根据以下提示选择算法类型****\n\n; cout1、首次适应算法\t2、最佳适应算法\t3、最差适应算法 \n\n; cout请输入所选择的内存分配算法; cinch; whilech1||ch3 { cout\n\n 输入错误,请重新输入所使用的内存分配算法 \n\n; cinch; } allocch; }// 分配内存 else ifchoice2 // 内存回收 { int flag; cout请输入您要释放的分区号; cinflag; freeflag; } else ifchoice3 show; else ifchoice4 exit0; //退出 else //输入操作有误 { cout输入有误,请重试endl; continue; } } cout****内存分配与回收模拟,请根据以下提示选择算法类型 ****\n\n; cout1、首次适应算法\t2、最佳适应算法\t3、最差适应算法\n\n; cout请输入所选择的内存分配算法; cinch; whilech1||ch3 { cout输入错误,请重新输入所使用的内存分配算法; cinch; } } //分配主存 int allocint ch { int need; cout\n\n 请输入需要分配的空间大小; cinneed; ifneed0 { cout\n\n 请重新输入分配大小endl; return ERROR; } ifch1 //首次适应算法 { ifFirst_fitneedOK cout分配成功endl; else cout内存不足,分配失败endl; return OK; } else ifch2 //选择最佳适应算法 { ifBest_fitneedOK cout分配成功endl; else cout内存不足,分配失败endl; return OK; } ifch3 //选择最差适应算法 { ifWorst_fitneedOK cout\n\n 分配成功endl; else cout内存不足,分配失败endl; return OK; } } //首次适应算法 int First_fitint need { DuLinkList tempDuLinkListmallocsizeofDuLNode; //为申请作 业开辟新空间且初始化 temp-data.sizeneed; //设置新申请空间的大小 temp-data.stateBusy; //设置新申请空间的状 态 DuLNode *phead_Node-next; whilep { ifp-data.stateFree p-data.sizeneed //现有的空闲 块正好等于需要的空间大小,则全部分配 { p-data.stateBusy; //修改该空闲块的状态为已分配 return OK; break; } ifp-data.stateFree p-data.sizeneed //现有的空闲 块大于需求量 { temp-priorp-prior; //修改双向链 表的头尾指针,插入新申请的作业 temp-nextp; temp-data.addressp-data.address; p-prior-nexttemp; p-priortemp; p-data.addresstemp-data.addresstemp-data.size; p-data.size-need; return OK; break; } pp-next; } return ERROR; } int Best_fitint need//最佳适应算法 { int ch; //记录最小剩余空间 DuLinkList tempDuLinkListmallocsizeofDuLNode; temp-data.sizeneed; temp-data.stateBusy; DuLNode *phead_Node-next; DuLNode *qNULL; //记录最佳插入位置 whilep //初始化最小空间和最佳位置 { ifp-data.stateFree p-data.sizeneed { ifqNULL { qp; chp-data.size-need; } else ifq-data.size p-data.size { qp; chp-data.size-need; } } pp-next; } ifqNULL return ERROR;//没有找到空闲块 else ifq-data.sizeneed { q-data.stateBusy; return OK; } else { temp-priorq-prior; temp-nextq; temp-data.addressq-data.address; q-prior-nexttemp; q-priortemp; q-data.addressneed; q-data.sizech; return OK; } return OK; } int Worst_fitint request//最差适应算法 { int ch; //记录最大剩余空间 DuLinkList tempDuLinkListmallocsizeofDuLNode; temp-data.sizerequest; temp-data.stateBusy; DuLNode *phead_Node-next; DuLNode *qNULL; //记录最佳插入位置 whilep //初始化最大空间和最佳位置 { ifp-data.stateFree p-data.sizerequest { ifqNULL { qp; chp-data.size-request; } else ifq-data.size p-data.size { qp; chp-data.size-request; } } pp-next; } ifqNULL return ERROR;//没有找到空闲块 else ifq-data.sizerequest { q-data.stateBusy; return OK; } else { temp-priorq-prior; temp-nextq; temp-data.addressq-data.address; q-prior-nexttemp; q-priortemp; q-data.addressrequest; q-data.sizech; return OK; } return OK; } //回收算法 int freeint flag { DuLNode *phead_Node; forint i 0; i flag; i ifpNULL pp-next; else return ERROR; p-data.stateFree; ifp-priorhead_Node p-prior-data.stateFree//与前面的空 闲块相连 { p-prior-data.sizep-data.size; p-prior-nextp-next; p-next-priorp-prior; pp-prior; } ifp-nextend_Node p-next-data.stateFree//与后面的空闲 块相连 { p-data.sizep-next-data.size; p-next-next-priorp; p-nextp-next-next; } ifp-nextend_Node p-next-data.stateFree//与最后的空闲 块相连 { p-data.sizep-next-data.size; p-nextNULL; } return OK; } //显示主存分配情况 void show { int flag 0; cout\n\n 主存分配情况\n; cout\n\n; DuLNode *phead_Node-next; cout分区号\t 起始地址\t 分区大小\t 状态\n\n; whilep { cout flag\t; cout p-data.address\t\t; cout p-data.sizeKB\t\t; ifp-data.stateFree cout空闲\n\n; else cout已分配\n\n; pp-next; } cout\n\n; } 五、 心得体会和参考资料 心得体会心得体会 设计本课程前,感觉本课程并不是那么难,很容易下手,因为主要 也就是写出回收主程序、内存分配主程序就行了。但是真正实施起来确 非常困难。 首先,必须解决动态输入构造空闲区表的问题。刚开始的时候,我们 把其他的程序都写出来了,却忘了课题还要求动态输入构造空闲区表。 于是我们又花了很大的力气才实现动态输入构造空闲区表,即可以根 据自己的需要,从键盘输入空闲区表的块数,并输入每块空闲区表的大 小及首地址。 其次,需要解决的是首次适应算法和最佳适应算法之间的转制问题。 我们做完首次适应算法的程序后不知道该从什么地方着手写最佳适应算 法。最后过了几天,才想到,原来只需在首次适应算法中,每次申请空 闲区前先对空闲区从小到大排序即可。第三个难题就是解决回收算法的 问题。回收算法可以说是本实验最难实现的算法,因为它有四种不同的 情况。刚开始我们只考虑了三种情况,即 1、要回收的区域没有与之相邻接的空闲区。 2、要回收区域有上邻(与要回收区域相邻的上面有空闲区) 。 3、要回收的区域有下邻(与要回收的区域相邻的下面有空闲区) 。 当我们满怀欣喜感觉本课程设计已经完成的时候却发现,程序运行 的时候,对于一个刚分配好的空闲区,如果有三个相邻的作业可以同时 在此空闲区内申请到内存,并全并回收此三个作业后,此空闲区会被分 割成两个空闲区显示。这时我们才意识到少考虑了一种情况要回收的 区域有上邻而且有下邻。我们又不得不再次修改程序。 就这样,在写出 大体程序后,我们前后大大小小修改了十多次,最后修改好的程序完全 符合课程设计要求,我们的课程设计终于成功了 参考教材参考教材 1.王萍.C面向对象程序设计.高等教育出版社,2002 2.罗建军等.C程序设计教程(第 2 版) .高等教育出版社,2004 3.谭浩强.C程序设计.清华大学出版社.2004 4.黄维通.Visual C面向对象与可视化程序设计(第 2 版) .2007 5.张基温.C程序设计基础. 2001

    注意事项

    本文(课程设计操作系统课程设计文档撰写-0.1)为本站会员(z13970239557)主动上传,收益归上传者所有,天天文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知天天文库(发送邮件至[email protected]或直接QQ联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给天天文库发消息,QQ:1290478887 - 联系我们

    网站客服QQ:1290478887        微信公众号:iwenku365

    [email protected] 2017-2027 wenku365.com 网站版权所有   聚力网络工作室

    经营许可证编号:鄂ICP备17008239号-1 

    收起
    展开