基于javascript的银行家算法

基于javascript的银行家算法-资源分享吧-分享你所需要!
基于javascript的银行家算法
此内容为免费资源,请登录后查看
M币0
免费资源

基于javascript的银行家算法

1. 实验目的

加深了解死锁概念,体会产生死锁的原因,掌握避免死锁的具体实施方法。

2. 实验内容

编写一个系统动态分配资源的模拟程序,采用银行家算法有效地避免死锁的发生。要求程序能够在进程提出资源申请后判断系统是否处于安全状态,如果安全则打印资源分配表和安全序列;如果不安全则输出不能分配的提示。
提示:

  • 银行家算法可参阅教材和课件。

  • 利用文件读写操作配置系统状态。

  • 利用动态内存分配解决资源和进程数量动态变化的问题。

3. 系统开发和运行环境

操作系统 Windows 7
编程语言及工具 JavaScript(jQuery),IE9以上/FireFox/ Chrome
配置文件 文件目录下的testfile.txt
备注

4. 程序设计

4.1 数据结构

var Max = []
var Allocation = []
var Need = []
var Resource
var Available
var Request
var safe = []
var Work_Allocation = []
var P = ['P0', 'P1', 'P2', 'P3', 'P4']
function run() {
    Work_Allocation = []   //可分配资源+进程释放的已分配资源
    Max = getMaxArr()   //最大需求资源
    Allocation = getAllocationArr()  //已分配资源
    Need = getNeedArr(Max, Allocation)   //需求资源
    Resource = getResource()    //总资源数
    Available = getAvailable()   //可利用资源
    Request = getRequest()      //请求资源
}
  • 可利用资源向量Available。这是一个数组对象,其中的每一个属性代表一类可利用资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态的改变。如果Available.j=K,则表示系统中现有Rj类资源K个。

  • 最大需求矩阵Max。这是一个n*m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i].j=K;则表示进程i需要Rj类资源的最大数目为K。

  • 分配矩阵Allocation。这也是一个n*m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i].j=K,则表示进程i当前已分得Rj类资源的数目为K。

  • 需求矩阵Need。这也是一个n*m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成任务。

上述三个矩阵间存在下述关系:Need[i].j=Max[i].j-Allocation[i].j

4.2 主要算法设计

图片[1]-基于javascript的银行家算法-资源分享吧-分享你所需要!

图片[2]-基于javascript的银行家算法-资源分享吧-分享你所需要!

5. 程序运行演示

5.1 初始化页面

图片[3]-基于javascript的银行家算法-资源分享吧-分享你所需要!

5.2 读取文件数据

点击

图片[4]-基于javascript的银行家算法-资源分享吧-分享你所需要!
选择testfile.txt文件
图片[5]-基于javascript的银行家算法-资源分享吧-分享你所需要!

输出结果:

图片[6]-基于javascript的银行家算法-资源分享吧-分享你所需要!

5.3 选择进程并输入请求资源数量

图片[7]-基于javascript的银行家算法-资源分享吧-分享你所需要!

输出结果:

图片[8]-基于javascript的银行家算法-资源分享吧-分享你所需要!

5.4 重置

点击重置按钮

图片[9]-基于javascript的银行家算法-资源分享吧-分享你所需要!

输出结果:
图片[10]-基于javascript的银行家算法-资源分享吧-分享你所需要!

5.5 清空

点击清空按钮

输出结果:
图片[11]-基于javascript的银行家算法-资源分享吧-分享你所需要!

6. 实验总结

  • 用前端的html+bootstrap+javascript+jquery完成此次实验。

  • 支持文件的读取操作,以文本方式读取数据。

  • 用bootstrap渲染页面,简洁美观。

  • 从文件加载数据时采用了动态内存分配方式。

  • 用jQuery操作DOM对象,代码量减少。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发
mdcg的头像-资源分享吧-分享你所需要!

昵称

取消
昵称表情代码图片