⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 banker.h

📁 操作系统中的经典问题:银行家算法
💻 H
字号:
#include <vector>#include <list>#include <string>#include <iostream>#include <fstream>using namespace std;list< vector<int> > g_already, g_needed;//已经分配矩阵、仍需要分配矩阵vector<int> g_total, g_allot, g_free;//总的资源g_total、已分配资源g_allot和剩余资源g_freevector<int> empty;//空的资源队列vector<string> g_res;//资源类型int g_res_size;//资源数目list< vector<int> >::iterator g_already_ptr;list< vector<int> >::iterator g_needed_ptr;const int MAX_INSTRUCTION = 5; //指令轮转周期,即每个线程在执行周期内最多执行的指令数目//初始化计算机void init(){	ifstream computer("computer.bin");	if (!computer.is_open())	{		cout << "The BIOS can not find the computer.bin, the computer will shut down!";		exit(1);	}	char tmp[20];	while (!computer.eof())	{		computer.getline(tmp, sizeof(tmp));		g_res.push_back(tmp);		computer.getline(tmp, sizeof(tmp));		g_total.push_back( atoi(tmp) );	}	g_res_size = (int)g_res.size();	//初始化变量empty	for (int i=0; i < g_res_size; i++)		empty.push_back(0);	g_allot = empty;	g_free = g_total;}//显示资源的内容void what_are_res(){	cout << "There are " << g_res_size << " kind(s) of resource(s) in this computer:" <<endl;	cout << "ID\tName\tNum" <<endl;	for (int i=0; i < g_res_size; i++)	{		cout << i << "\t" << g_res[i] << "\t" << g_total[i] <<endl;	}}//显示资源的分配状态void how_res(){	list< vector<int> >::iterator ptr;	vector<int>::iterator ptr2;	cout << "Total resource(s): "<<endl;	for (ptr2 = g_total.begin(); ptr2 != g_total.end(); ptr2++)	{		cout << *ptr2 << "\t";	}	cout << endl;	cout << "Alloted resource(s): "<<endl;	for (ptr2 = g_allot.begin(); ptr2 != g_allot.end(); ptr2++)	{		cout << *ptr2 << "\t";	}	cout << endl;	cout << "Free resource(s): "<<endl;	for (ptr2 = g_free.begin(); ptr2 != g_free.end(); ptr2++)	{		cout << *ptr2 << "\t";	}	cout << endl;	cout << "The resource(s) already alloted:" << endl;	for (ptr = g_already.begin(); ptr != g_already.end(); ptr++)	{		//vector<int> tmp = *ptr;		for (unsigned int i=0; i < (*ptr).size(); i++)		{			cout << (*ptr)[i] << "\t";		}		cout << endl;	}	cout << "The resource(s) needed to allot:" << endl;	for (ptr = g_needed.begin(); ptr != g_needed.end(); ptr++)	{		//vector<int> tmp = *ptr;		for (unsigned int i=0; i < (*ptr).size(); i++)		{			cout << (*ptr)[i] << "\t";		}		cout << endl;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -