操作系统课程设计伙伴系统Word下载.docx

上传人:b****5 文档编号:20750647 上传时间:2023-01-25 格式:DOCX 页数:20 大小:1.79MB
下载 相关 举报
操作系统课程设计伙伴系统Word下载.docx_第1页
第1页 / 共20页
操作系统课程设计伙伴系统Word下载.docx_第2页
第2页 / 共20页
操作系统课程设计伙伴系统Word下载.docx_第3页
第3页 / 共20页
操作系统课程设计伙伴系统Word下载.docx_第4页
第4页 / 共20页
操作系统课程设计伙伴系统Word下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

操作系统课程设计伙伴系统Word下载.docx

《操作系统课程设计伙伴系统Word下载.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计伙伴系统Word下载.docx(20页珍藏版)》请在冰豆网上搜索。

操作系统课程设计伙伴系统Word下载.docx

1.题目分析

1.1题目要求

Linux中内存分配的伙伴堆算法模拟。

(1)模拟内存实时情况。

(2)实现Buddy 

heap算法。

(3)通过键盘输入随机产生的申请和释放操作。

(4)每次申请或释放都显示实时的内存分配的对比图

1.2功能分析

利用数组来实现伙伴系统算法的3种功能,定义一个空闲分区数组和已分配分区数组,这2个数组都为2维数组,分别记录空闲分区块和已分配分区块的大小和内存地址。

这样,在实现伙伴系统算法的3种功能就转化为对数组的操作。

⑴分配内存:

修改空闲分区数组,模拟按照伙伴系统算法思想划分合适分区进行分配,然后添加到已分配分区数组。

⑵回收内存:

修改空闲分区数组,模拟按照伙伴系统算法思想回收内存,然后从已分配分区数组中删除该内存块。

⑶输出内存使用情况:

输出空闲分区数组和已分配分区数组

2.数据结构

模拟伙伴堆算法的问题中涉及的数据结构包括申请内存的大小,名字(为了直观表示),需要释放的内存的首地址,当前占用的内存数目,大小,每块内存起止地址,名字

为了清晰实现伙伴算法的模拟,我们在该项目的实现模拟的是1024大小的存储空间,我们在程序中用伪代码表示如下:

/*全局变量的声明*/

varbuddy=newArray("

2"

"

4"

8"

16"

32"

64"

128"

256"

512"

1024"

);

//分区大小2的k次幂

varfree1=newArray("

0"

1"

//空闲分区的个数初始内存大小1024

varuse=newArray(100);

//已分配分区表最多为100个进程分配记录已分配分区大小,内存地址

varstr=newArray(100);

for(varper=0;

per<

=100;

per++)

{

use[per]=newArray

(2);

}

varfree_addr=newArray(10);

//空闲分区的首地址[i][j]表示2的i次方大小的空闲分区的第j个分区的首地址

=10;

free_addr[per]=newArray(50);

free_addr[9][0]=0;

varmaxsize=9;

//最大空闲分区初始为1024

varusenum=0;

//进程数初始为0

为了实现这些数据结构,用Javascript语言定义功能函数如下:

functionapplyin();

/*申请内存函数*/

functionreleaseout()/*释放内存函数*/

functionshow()/*显示内存占用和剩余情况*/

functionshutwin()/*关闭*/

functionreset()/*刷新*/

3.流程图

3.1前导界面流程图

图1前导界面流程图

3.2演示界面流程图

图2演示界面流程图

3.3演示界面——申请内存流程图

图3申请内存流程图

3.4演示界面——释放内存流程图

图4释放内存流程图

4.实现技术

4.1工具环境

为实现上述设计,采用web语言,SublimeText3开发环境。

具体采用的技术如下:

(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演示部分

4.3.1演示界面整体

点击播放按钮,开始进入演示界面,如图10所示。

图10演示界面效果

图11演示界面鼠标碰触动态效果

通过设置伪类hover的样式当鼠标触碰该li标签时,改变li样式

图12添加鼠标动态css文件

4.3.2申请内存

1.合法性检查

判断输入申请的内存大小、名字不能为空,内存大小在0-1024之间,不合法弹出对应的提示框并将鼠标移动正确的位置,如图13,图14,图15所示。

图13没输入名字的提示框

图14没输入大小的提示框

图15输入不在范围的提示框

图16添加合法性检查js文件

2.申请内存

正确的输入,提交后,会出现申请内存成功的提示框,如图17所示。

图17申请成功的提示框

在js文件中读入输入的申请内存的大小,和名字,在funtionapply-in函数中,首先确定分配内存的大小,确定分配的起止地址,更新此时内存状况和此时能过最大存储的空间如图18所示。

图18添加申请内存的js文件

如果此时没有要求申请的内存空间可以分配,则提示要求先释放内存,才能能过申请,如图19所示。

图19空间不够的提示框

图20添加是否可以分配检查js文件

4.3.3释放内存部分

1.合法性检测

图21释放首地址为空的提示框

图22释放首地址错误的提示框

图23释放首地址检查的js文件

2.释放内存

正确输入后,在js中调用functionrelease-out()函数如图24所示,执行寻找是否否能够有伙伴空闲能过合并,释放该段内存,更新此时内存状况和此时能够存储最大的空间,提示释放内存成功如图25所示。

图24添加释放内存的js文件

图25释放内存成功的提示框

4.3.4查看内存使用部分

图26查看内存使用界面

当点击查看内存占用情况按钮时,js文件调用functioncheck()函数,形成一个背景颜色较深的遮罩层,在遮罩层动态画出此时内存使用情况的表格,如图27所示。

图27添加遮罩层js文件

图28添加弹出层js文件

当点击遮罩层非表格部分,会删除,表格删除遮罩层,实现关闭表格,返回控制面板的效果,如29所示。

图29添加点击遮罩层关闭查看的js文件

图30返回控制面板的界面

4.3.5重置部分

点击重置部分,JS文件调用functionreset()函数,将重置之前操作,弹出“刷新成功!

”提示框如图31所示。

图31弹出刷新成功的提示框

图32添加重置功能的js文件

4.3.6退出部分

点击退出按钮,js文件调用functionshutwin()函数,弹出询问是否关闭提示框,点击关闭,可以关闭本窗口,如图33所示。

图33弹出确认关闭的提示框

图34添加关闭窗口功能的js文件

4.4源代码分享页面

点击第二个个人按钮,进入源代码资源分享页面,如图34所示。

图34源代码分享页面

4.5课程设计报告

点击第三个文档按钮,如图35所示,打开课程设计报告。

图35.打开课程设计报告

5.设计结论和心得

通过本次的课程设计的学习和锻炼,我也是第一次完成相对完善的界面设计,因为老师在暑假之前就布置了课程设计的内容和要求,我在假期自己学习了,web前端的语言,HTML/CSS/JavaScript,但是在实际实践中,还是遇到了不少的困难,得到了很多的成长。

在最初的显示内存使用状况的设计,我是把已将分配的和空闲的分开显示,并且把空闲内存的自动分成2的i次幂存储,在和老师沟通的时候,我意识到,这并不符合伙伴系统的工作原理,伙伴系统是有申请内存的时候才进行分配,并不是在申请之前分配好了。

意识到了这点后,我马上做出了修改,改成了实时显示内存状态和首地址的显示方法。

最初我做的查看内存使用情况的页面是在控制面板下面,只能点击查看才能刷新,并不是有很好的使用体验,我就想着点击查看时,打开新的页面查看内存使用,通过查网上的资料和实际案例,我决定用弹出层实现,HTML将每次申请的内存大小和名称,释放的内存首地址,以及相应的点击操作,传给JavaScript文件,在JavaScript文件中实现伙伴算法的模拟,然后在JavaScript文件中动态创建HTML标签,写回到HTML中显示出来。

在做引导网页的时候,设置HTML中打开PDF文件,我试了好多自己的想法,都是显示下载后才能打开,最后我查资料,不断地实践,发现,在JavaScript文件调用window.open()可以实现。

在这次课程设计开始的时候,我十分不确定我是否能够真的完成这次的题目,因为以前没有完整的设计完成界面,我就先看懂实现的算法和数据结构,用C++在codeblocks实现后,我开始用JavaScript上实验,当基本界面完成后,我又开始担心,JavaScript处理数据能否读出到HTML,我开始实验一个数据,每当完成一点,我就把所有的情况检查一遍,以便及时发现错误,当我实现了初步的功能,真的特别有成就感,就有了信心,不断查资料,学教程,优化界面和一些功能,我觉得就是自己不断的把大问题划分成小的问题,在慢慢去实现小的问题,“不积小步无以至千里”,当这次课程设计结束了,我的也许不是最好,但心里真的有一种程序员的成就感,和对自己的肯定。

通过完成这次的课程设计,我更加熟悉掌握JavaScript的相关知识,和具备开发的一些经验,同时,在实践的过程中,我也发现了自己的问题和缺点,我意识到自己CSS有很多不熟练的知识,JQuery的学习太过浅薄,我完成的课程设计在一些地方还存在一些不足,我会带着对自己这份认知,更好更努力的投入到以后的学习和提升中。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

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