基于javascript的银行家算法

Haggard

发布日期: 2019-08-01 12:59:05 浏览量: 84
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

1. 实验目的

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

2. 实验内容

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

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

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

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

3. 系统开发和运行环境

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

4. 程序设计

4.1 数据结构

  1. var Max = []
  2. var Allocation = []
  3. var Need = []
  4. var Resource
  5. var Available
  6. var Request
  7. var safe = []
  8. var Work_Allocation = []
  9. var P = ['P0', 'P1', 'P2', 'P3', 'P4']
  10. function run() {
  11. Work_Allocation = [] //可分配资源+进程释放的已分配资源
  12. Max = getMaxArr() //最大需求资源
  13. Allocation = getAllocationArr() //已分配资源
  14. Need = getNeedArr(Max, Allocation) //需求资源
  15. Resource = getResource() //总资源数
  16. Available = getAvailable() //可利用资源
  17. Request = getRequest() //请求资源
  18. }
  • 可利用资源向量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 主要算法设计

5. 程序运行演示

5.1 初始化页面

5.2 读取文件数据

点击

选择testfile.txt文件

输出结果:

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

输出结果:

5.4 重置

点击重置按钮

输出结果:

5.5 清空

点击清空按钮

输出结果:

6. 实验总结

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

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

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

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

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

上传的附件 cloud_download 基于javascript的银行家算法.zip ( 293.92kb, 1次下载 )
error_outline 下载需要10点积分

发送私信

所有的道别里,我还是最喜欢明天见

13
文章数
12
评论数
最近文章
eject