文章目录
一、实验目的
- 一、实验目的
- 二、实验内容
- 三、实验过程
- 四、函数实现
- 五、实验总结和说明
银行家算法是操作系统中避免死锁的典型算法,通过本实验加深对银行家算法的理解。
二、实验内容用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
关注
打赏
热门博文
- 2022-09-09 Unity InputSystem5——PlayerInput
- 2022-09-09 Unity InputSystem4——输入配置文件
- 2022-09-09 Unity InputSystem3——InputAction
- 2022-09-09 Unity InputSystem2——代码检测输入
- 2022-09-09 Unity InputSystem1——概述
- 2022-08-26 Unity视频播放4——全景视频
- 2022-08-26 Unity视频播放3——VideoPlayer
- 2022-08-26 Unity视频播放2——视频剪辑设置
- 2022-08-26 Unity视频播放1——视频介绍
- 2022-07-15 Unity核心10——导航寻路系统