- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
哈尔滨理工大学
课 程 设 计
(操作系统)
题 目: 伙伴系统
班 级: 计算机科学与技术 计15-5班
姓 名
指导教师:
系主任:
2017 年 09 月 01 日
目 录
1. 题目分析 1
1.1 题目要求 1
1.2 功能分析 1
2. 数据结构 2
3. 流程图 3
3.1 前导界面流程图 3
3.2 演示界面流程图 3
3.3 演示界面——申请内存流程图 4
3.4演示界面——释放内存流程图 5
4. 实现技术 6
4.1工具环境 6
4.2 前导界面部分 6
4.3演示部分 8
4.4 源代码分享页面 17
5.设计结论和心得…………………………………………………………………………18
题目分析
题目要求
Linux中内存分配的伙伴堆算法模拟。(1)模拟内存实时情况。(2)实现Buddy?heap算法。(3)通过键盘输入随机产生的申请和释放操作。(4)每次申请或释放都显示实时的内存分配的对比图
功能分析
利用数组来实现伙伴系统算法的3种功能,定义一个空闲分区数组和已分配分区数组,这2个数组都为2维数组,分别记录空闲分区块和已分配分区块的大小和内存地址。这样,在实现伙伴系统算法的3种功能就转化为对数组的操作。
⑴ 分配内存:修改空闲分区数组,模拟按照伙伴系统算法思想划分合适分区进行分配,然后添加到已分配分区数组。
⑵ 回收内存:修改空闲分区数组,模拟按照伙伴系统算法思想回收内存,然后从已分配分区数组中删除该内存块。
⑶ 输出内存使用情况:输出空闲分区数组和已分配分区数组
数据结构
模拟伙伴堆算法的问题中涉及的数据结构包括申请内存的大小,名字(为了直观表示),需要释放的内存的首地址,当前占用的内存数目,大小,每块内存起止地址,名字
为了清晰实现伙伴算法的模拟,我们在该项目的实现模拟的是1024大小的存储空间,我们在程序中用伪代码表示如下:
/* 全局变量的声明 */
var buddy = new Array(2,4,8,16,32,64,128,256,512,1024); //分区大小 2的k次幂
var free1 = new Array(0,0,0,0,0,0,0,0,0,1); //空闲分区的个数 初始内存大小1024
var use =new Array(100); //已分配分区表 最多为100个进程分配 记录已分配分区大小,内存地址
var str = new Array(100);
for (var per = 0; per = 100; per++)
{
use[per] = new Array(2);
}
var free_addr = new Array(10); //空闲分区的首地址 [i][j]表示2的i次方大小的空闲分区的第j个分区的首地址
for (var per = 0; per = 10; per++)
{
free_addr[per] = new Array(50);
}
free_addr[9][0] = 0;
var maxsize=9; //最大空闲分区 初始为1024
var usenum=0; //进程数 初始为0
为了实现这些数据结构,用Javascript语言定义功能函数如下:
function applyin();/* 申请内存函数 */
function releaseout()/* 释放内存函数 */
function show()/* 显示内存占用和剩余情况 */
function shutwin()/* 关闭 */
function reset()/* 刷新 */
流程图
3.1 前导界面流程图
图1 前导界面流程图
3.2 演示界面流程图
图2 演示界面流程图
3.3 演示界面——申请内存流程图
图3 申请内存流程图
3.4演示界面——释放内存流程图
图4 释放内存流程图
实现技术
4.1工具环境
为实现上述设计,采用web语言,Sublime Text3开发环境。具体采用的技术如下:
(1)HTML实现整体元素显示
(2)CSS 实现样式的构建
(3)Javascript / JQuery 事件动态的获取
(4)Chrome浏览器进行调试
4.2 前导界面部分
4.2.1 前导界面静态
图5 整体界面-1
图6 整体界面-2
4.2.2前导界面动态
图7 前导界面动态效果
设计网页样式以及功能,在HTML文件中添加标签,定义不同的类名,以便于CSS文件中样式的设定,为不同的标签对象设置不同的点击事件,设置点击事件响应。
图 8 添加图标段HTML文件
图9 添加点击响应js文件
4.3演示部分
文档评论(0)