中南大学操作系统课程设计

操作系统课程设计

题目名称:银行家算法

姓名 学号 专业 班级 指导教师 编写日期

操作系统课程设计—银行家算法

目录

第一章问题描述...................................................... 3

1.1 课设题目重述 ............................................... 3 1.2 问题分析 ................................................... 3 1.3 实验环境 ................................................... 3 第二章系统设计...................................................... 4

3.1 主要数据结构 ............................................... 4 3.2 银行家算法 ................................................. 4 3.3 安全性检查算法 ............................................. 6 3.4 银行家算法安全性序列分析之例 ............................... 7 第三章源代码清单................................................... 10

3.1 函数清单 .................................................. 10 3.2 各函数的调用关系图 ........................................ 12 第四章运行结果测试与分析........................................... 13

4.1 程序的正常输出结果 ........................................ 13 4.2 程序的差错控制 ............................................ 15 第五章结论与心得................................................... 18 [参考文献]......................................................... 18

2

操作系统课程设计—银行家算法

第一章问题描述

1.1 课设题目重述

设计目的:了解多道程序系统中,多个进程并发执行的资源分配。 设计要求:管理员可以把一定数量的作业供多个用户周转使用,为保证作业的安全,管理员规定:当一个用户对作业的最大需求量不超过管理员现有的资金就要接纳该用户;用户可以分期贷款,但贷款的总数不能超过最大需求量;当管理员现有的作业不能满足用户的所需数时,对用户的请求可以推迟支付,但总能使用户在有限的时间里得到请求。当用户得到所需的全部作业后,一定能在有限的时间里归还所有的作业。

1.2 问题分析

银行家算法是最具有代表性的避免死锁的算法。我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。在死锁的避免中,银行家算法把系统状态分为安全状态和不安全状态,只要能使系统始终处于安全状态,便可以避免发生死锁。所谓安全状态,是指系统能按某种顺序为每个进程分配所需资源,直到最大需求,使每一个进程都可以顺利完成,即可找到一个安全资源分配序列。

所以我们需要解决问题有:

1) 熟悉银行家算法的工作原理,明白如何判断系统处于安全状态,避

免死锁。

2) 在Windows操作系统上,如何利用Win32 API编写多线程应用程序

实现银行家算法。

3) 创建n个线程来申请或释放资源,如何保证系统安全,批准资源申

请。

4) 通过Win32 API提供的信号量机制,实现共享数据的并发访问。

1.3 实验环境

操作系统:windows 8.1 实验语言:c++

3

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4