您当前的位置: 首页 >  操作系统

蔗理苦

暂无认证

  • 4浏览

    0关注

    88博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

2021-11-08 操作系统实验4——模拟银行家算法

蔗理苦 发布时间:2021-11-08 16:04:30 ,浏览量:4

文章目录
    • 一、实验目的
    • 二、实验内容
    • 三、实验过程
    • 四、函数实现
    • 五、实验总结和说明

一、实验目的

银行家算法是操作系统中避免死锁的典型算法,通过本实验加深对银行家算法的理解。

二、实验内容

用C语言或C++编写一个简单的银行家算法模拟程序,实现多个进程争用系统临界资源时的分配过程。要求程序实现:

  1. 当一进程请求一组资源时,先确定是否有足够的资源分配给该进程。如果有,再进一步计算在将这些资源分配给进程后,系统是否处于不安全状态。如果安全,显示安全序列,将资源分配给该进程,否则进程等待。
  2. 可以显示当前时刻各进程的的资源分配情况。
三、实验过程

实验采用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             
关注
打赏
1657823434
查看更多评论
0.0588s