操作系统 银行家调度
实验作业
#include <iostream> //银行家 using namespace std; const int maxn = 1e2 + 7, almaxn = 1e5 + 7; int available[maxn], n, m; bool avl[maxn]; struct djksr{ string id; int allocation[maxn] = { almaxn }; int need[maxn] = { almaxn }; }DJksr[almaxn]; int main() { // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); int n, m; cout << "请求向量总数:" << endl; cin >> n; cout << "资源种类:" << endl; cin >> m; cout << "可利用资源向量(不同种类资源用空格分隔):" << endl; for (int i = 0; i < m; i++) cin >> available[i]; cout << "分别输入请求向量ID 已分配资源向量 还需要分配资源向量" << endl; for (int i = 0; i < n; i++) { cout << "第" << i + 1 << "项进程:" << endl; cin >> DJksr[i].id; for (int j = 0; j < m; j++) cin >> DJksr[i].allocation[j]; for (int j = 0; j < m; j++) cin >> DJksr[i].need[j]; } int qid; cout << "输入请求进程编号 请求资源向量" << endl; cin >> qid; for (int i = 0; i < m; i++) { int x; cin >> x; available[m] -= x; DJksr[qid].need[i] -= x; DJksr[qid].allocation[i] += x; } for (int j = 0; j < n; j++) { if (!avl[j]) { bool bl = 1; for (int k = 0; k < m; k++) { if (available[k] < DJksr[j].need[k]) { bl = 0; break; } if (bl) { for (int k = 0; k < m; k++) available[k] += DJksr[j].allocation[k]; cout << DJksr[j].id << endl; avl[j] = 1; j = -1; break; } } } } for (int j = 0; j < n; j++) { if (!avl[j]) cout << "不安全" << endl; } return 0; } /* 3 1 3 p1 5 5 p2 2 2 p3 9 2 1 2 */

浙公网安备 33010602011771号