文章目录
一、实验目的
- 一、实验目的
- 二、实验内容
- 三、实验过程
- 四、函数实现
- 五、实验总结和说明
银行家算法是操作系统中避免死锁的典型算法,通过本实验加深对银行家算法的理解。
二、实验内容用C语言或C++编写一个简单的银行家算法模拟程序,实现多个进程争用系统临界资源时的分配过程。要求程序实现:
- 当一进程请求一组资源时,先确定是否有足够的资源分配给该进程。如果有,再进一步计算在将这些资源分配给进程后,系统是否处于不安全状态。如果安全,显示安全序列,将资源分配给该进程,否则进程等待。
- 可以显示当前时刻各进程的的资源分配情况。
实验采用C++编写银行家算法,主要存储结构为vector,以方便实验。
1、实验封装的函数们:
void init(); // 初始化数据,即获得用户输入
void showResourse(); // 显示系统资源
void showInfoStart(); // 显示程序开始的信息
void showInfoOp(); // 显示用户操作信息
void showInfoEnd(); // 显示程序结束的信息
bool safe(); // 检查系统是否安全
vector operator-(const vector &v1, const vector &v2);
vector operator+(const vector &v1, const vector &v2);
vector operator-(const vector &v1, const vector &v2);
vector operator+(const vector &v1, const vector &v2);
bool operator(const vector &v1, const vector &v2);
实验中重载了vector的部分运算符,以方便代码读写和演示。
2、实验中用到的数据结构们:
vector Available; // 可利用资源向量
vector resourseName; // 资源 Available[i] 的名称
vector Max; // 最大需求矩阵
vector Allocation; // 分配矩阵
vector Need; // 需求矩阵
vector Request_i; // 进程 Pi 的请求向量
vector P; // 记录安全序列
vector Allocated; // 记录进程是否已被分配资源
int m = 0; // m 种资源
int n = 0; // n 个进程
大部分变量按照课本算法来命名。这里用m表示资源种类,n表示进程的个数,后面我们将用这两个变量与用户进行交互。
3、main函数的实现: (1)初始化部分
int main() {
int choice = 0; // 记录用户的选择
int Pi; // 记录用户选择的进程
// 显示程序开始信息
showInfoStart();
// 初始化操作,获得用户输入数据
init();
// 显示系统资源
showResourse();
// 首先检查一遍,输出系统是否安全
if (safe()) {
cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?