哈尔滨理工大学。
课程设计。操作系统)
题目伙伴系统
班级: 计算机科学与技术计15-5班。
姓名 指导教师:
系主任: 2017 年 09 月 01 日。
5.设计结论和心得18
1. 题目分析。
linux中内存分配的伙伴堆算法模拟。
1)模拟内存实时情况。
2)实现buddyheap算法。
3)通过键盘输入随机产生的申请和释放操作。
4)每次申请或释放都显示实时的内存分配的对比图
利用数组来实现伙伴系统算法的3种功能,定义一个空闲分区数组和已分配分区数组,这2个数组都为2维数组,分别记录空闲分区块和已分配分区块的大小和内存地址。这样,在实现伙伴系统算法的3种功能就转化为对数组的操作。
分配内存:修改空闲分区数组,模拟按照伙伴系统算法思想划分合适分区进行分配,然后添加到已分配分区数组。
**内存:修改空闲分区数组,模拟按照伙伴系统算法思想**内存,然后从已分配分区数组中删除该内存块。
输出内存使用情况:输出空闲分区数组和已分配分区数组。
2. 数据结构。
模拟伙伴堆算法的问题中涉及的数据结构包括申请内存的大小,名字(为了直观表示),需要释放的内存的首地址,当前占用的内存数目,大小,每块内存起止地址,名字。
为了清晰实现伙伴算法的模拟,我们在该项目的实现模拟的是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
为了实现这些数据结构,用j**ascript语言定义功能函数如下:
function applyin();申请内存函数 */
function releaseout()/释放内存函数 */
function show()/显示内存占用和剩余情况 */
function shutwin()/关闭 */
function reset()/刷新 */
3. 流程图。
图1 前导界面流程图。
图2 演示界面流程图。
图3 申请内存流程图。
图4 释放内存流程图。
4. 实现技术。
为实现上述设计,采用web语言,sublime text3开发环境。具体采用的技术如下:
1)html实现整体元素显示。
2)css 实现样式的构建。
3)j**ascript / jquery 事件动态的获取。
4)chrome浏览器进行调试。
图5 整体界面-1
图6 整体界面-2
图7 前导界面动态效果。
设计网页样式以及功能,在html文件中添加标签,定义不同的类名,以便于css文件中样式的设定,为不同的标签对象设置不同的点击事件,设置点击事件响应。
图 8 添加图标段html文件。
图9 添加点击响应js文件。
点击**按钮,开始进入演示界面,如图10 所示。
图10 演示界面效果。
图11演示界面鼠标碰触动态效果。
通过设置伪类hover的样式当鼠标触碰该li 标签时,改变 li 样式。
图12 添加鼠标动态css文件。
1. 合法性检查。
判断输入申请的内存大小、名字不能为空,内存大小在0-1024之间,不合法弹出对应的提示框并将鼠标移动正确的位置,如图13, 图14,图15所示。
图13 没输入名字的提示框。
图14 没输入大小的提示框。
图15 输入不在范围的提示框。
图16 添加合法性检查js文件。
2. 申请内存。
正确的输入,提交后,会出现申请内存成功的提示框,如图17所示。
图17 申请成功的提示框。
在js文件中读入输入的申请内存的大小,和名字,在funtion apply-in 函数中,首先确定分配内存的大小,确定分配的起止地址,更新此时内存状况和此时能过最大存储的空间如图18所示。
图 18 添加申请内存的js文件。
如果此时没有要求申请的内存空间可以分配,则提示要求先释放内存,才能能过申请,如图19所示。
图19 空间不够的提示框。
图20 添加是否可以分配检查js文件。
1 .合法性检测。
图21 释放首地址为空的提示框。
图22 释放首地址错误的提示框。
图23 释放首地址检查的js文件。
2. 释放内存。
正确输入后,在js 中调用 function release-out() 函数如图24所示,执行寻找是否否能够有伙伴空闲能过合并,释放该段内存,更新此时内存状况和此时能够存储最大的空间,提示释放内存成功如图25所示。
图24 添加释放内存的js文件。
图25 释放内存成功的提示框。
图26 查看内存使用界面。
当点击查看内存占用情况按钮时,js文件调用function check() 函数,形成一个背景颜色较深的遮罩层,在遮罩层动态画出此时内存使用情况的**,如图27所示。
操作系统课程设计
课程设计 河北大学工商学院。装。订。线。操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专 操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专业计算机类 学号 姓名。指导教师。年 6 月 24 日。设备管理 2 2.1设计任务2 2.2设计要求...
操作系统课程设计
银行家算法模拟。系别 班级 组员 银行家算法模拟。1.课程设计目的。通过本次课程设计,加深对最经典的避免死锁的银行家算法的理解,掌握死锁形成必要条件 安全状态等概念的理解,通过用c语言编程模拟该算法,并在windows平台上实现,更好地掌握操作系统的原理及实现方法。2.任务及要求。设n为系统进程的个...
操作系统课程设计
学生实习实训报告。实习类型 操作系统课程设计 学号 0901110005 学生姓名 田兴杰 指导教师 曹春梅 专业班级 信息安全技术0901班 院 部 电子信息系 2011年 1 月 7日。实习实训成绩评定表。目录。目录3 摘要4关键字4 1.1虚拟机简介5 1.1.1 一般意义的虚拟机5 1.1....