基于JSP实现的操作系统内存分配演示
1. 题目分析
1.1 题目要求
Linux 中内存分配的伙伴堆算法模拟。
-
模拟内存实时情况
-
实现 Buddy heap 算法
-
通过键盘输入随机产生的申请和释放操作
-
每次申请或释放都显示实时的内存分配的对比图
1.2 功能分析
利用数组来实现伙伴系统算法的 3 种功能,定义一个空闲分区数组和已分配分区数 组,这 2 个数组都为 2 维数组,分别记录空闲分区块和已分配分区块的大小和内存地址。 这样,在实现伙伴系统算法的 3 种功能就转化为对数组的操作。
-
分配内存 :修改空闲分区数组,模拟按照伙伴系统算法思想划分合适分区进行分配, 然后添加到已分配分区数组
-
回收内存 :修改空闲分区数组,模拟按照伙伴系统算法思想回收内存,然后从已分配分区数组中删除该内存块
-
输出内存使用情况 :输出空闲分区数组和已分配分区数组
2. 数据结构
模拟伙伴堆算法的问题中涉及的数据结构包括申请内存的大小,名字(为了直观表 示),需要释放的内存的首地址,当前占用的内存数目,大小,每块内存起止地址,名字 为了清晰实现伙伴算法的模拟,我们在该项目的实现模拟的是 1024 大小的存储空 间,我们在程序中用伪代码表示如下:
javascript
/* 全局变量的声明 */
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 语言定义功能函数如下:
javascript
function applyin() ; /* 申请内存函 数 */
function releaseout()/* 释放内存函数 */
function show()/* 显示内存占用和剩余情况 */
function shutwin()/* 关闭 */
function reset()/* 刷新 */
3. 流程图
3.1 前导界面流程图
3.2 演示界面流程图
3.3 演示界面——申请内存流程图
3.4 演示界面——释放内存流程图
4. 实现技术
4.1 工具环境
为实现上述设计,采用 web 语言,Sublime Text3 开发环境。具体采用的技术如下:
-
HTML 实现整体元素显示
-
CSS 实现样式的构建
-
Javascript / JQuery 事件动态的获取
-
Chrome 浏览器进行调试
4.2 前导界面部分
4.2.1 前导界面静态
4.2.2 前导界面动态
设计网页样式以及功能,在 HTML 文件中添加标签,定义不同的类名,以便于 CSS 文件 中样式的设定,为不同的标签对象设置不同的点击事件,设置点击事件响应。
4.3 演示部分
4.3.1 演示界面整体
点击播放按钮,开始进入演示界面,如图 所示。
通过设置伪类 hover 的样式 当鼠标触碰该 li 标签时,改变 li 样式
4.3.2 申请内存
合法性检查
判断输入申请的内存大小、名字不能为空,内存大小在 0-1024 之间,不合法弹出对 应的提示框并将鼠标移动正确的位置。
申请内存
正确的输入,提交后,会出现申请内存成功的提示框。
在 js 文件中读入输入的申请内存的大小,和名字,在 funtion apply-in 函数中, 首先确定分配内存的大小,确定分配的起止地址,更新此时内存状况和此时能过 最大存储的空间如图所示。
如果此时没有要求申请的内存空间可以分配,则提示要求先释放内存,才能能过申请,如图所示。
4.3.3 释放内存部分
合法性检测
释放内存
正确输入后,在 js 中调用 function release-out() 函数如图所示,执行寻找是 否否能够有伙伴空闲能过合并,释放该段内存,更新此时内存状况和此时能够存 储最大的空间,提示释放内存成功如图 所示。
4.3.4 查看内存使用部分
当点击查看内存占用情况按钮时,js 文件调用 function check() 函数,形成一个背景颜 色较深的遮罩层,在遮罩层动态画出此时内存使用情况的表格,如图所示。
当点击遮罩层非表格部分,会删除,表格删除遮罩层,实现关闭表格,返回控制面板的效果,如图所示。
4.3.5 重置部分
点击重置部分,JS 文件调用 function reset() 函数,将重置之前操作,弹出“刷新成 功!”提示框如图 所示。
4.3.6 退出部分
点击退出按钮,js 文件调用 function shutwin() 函数,弹出询问是否关闭提示框,点 击关闭,可以关闭本窗口,如图所示。
4.4 源代码分享页面
点击第二个个人按钮,进入源代码资源分享页面,如图所示。
4.5 课程设计报告
点击第三个文档按钮,如图所示,打开课程设计报告。
参考文献
- 基于JSP的学生就业信息管理系统设计与实现(吉林大学·马骁)
- 人力资源管理系统设计(山东大学·郑重)
- 基于MVC模式的物流信息管理系统设计与开发(电子科技大学·程泳)
- 基于JSP的艺术院校图书管理系统的设计与实现(西安电子科技大学·王擒龙)
- 沈阳超高压局通信设备运行参数管理信息系统(大连理工大学·杨楠)
- 人力资源管理系统设计(山东大学·郑重)
- 沈阳超高压局通信设备运行参数管理信息系统(大连理工大学·杨楠)
- ASP/JSP技术及WEB应用系统研究开发(西安理工大学·薛梅)
- 银古物流公司基于JSP的可视化库存管理系统的设计与实现(电子科技大学·马旭东)
- 基于JSP技术的学生宿舍管理系统的设计与实现(沈阳工业大学·杨俊宝)
- 基于MVC模式的物流信息管理系统设计与开发(电子科技大学·程泳)
- 基于JSP的学生信息管理系统的设计与开发(吉林大学·郭政辉)
- 基于MVC模式下雅职院门户网站的设计与实现(电子科技大学·吕波)
- 人力资源管理系统设计(山东大学·郑重)
- 基于J2EE的远程网络教育系统研究与实现(电子科技大学·陈南荪)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设小屋 ,原文地址:https://m.bishedaima.com/yuanma/35463.html