ALL > Computer and Education > courses > university courses > undergraduate courses > Operating System > zstu-(2021-2022)-1 > student homework directories > 2019329621182刘辰萱 >
2019329621182-刘辰萱-homework-8 Version 0
👤 Author: by rootfreanjacn 2021-12-25 22:07:11
代码:

//

//  main.cpp

//  Banker's algorithm

//

//  Created by FreanJa L on 2021/12/26.

//

#include <stdio.h>

int main()

{

    //P0, P1, P2, P3, P4 are the Process names here

    int i, j, k;

    const int n = 5; //Number of processes

    const int m = 3; //Number of resources

    int alloc[5][3] = { { 0, 1, 0 }, //P0   //Allocation Matrix

                        { 2, 0, 0 }, //P1

                        { 3, 0, 2 }, //P2

                        { 2, 1, 1 }, //P3

                        { 0, 0, 2 } }; //P4

    int max[5][3] = { { 7, 5, 3 }, //P0   //MAX Matrix

                      { 3, 2, 2 }, //P1

                      { 9, 0, 2 }, //P2

                      { 2, 2, 2 }, //P3

                      { 4, 3, 3 } }; //P4

    int avail[3] = { 3, 3, 2 }; //Available Resources

    int f[n], ans[n], ind = 0;

    for (k = 0; k < n; k++) {

        f[k] = 0;

    }

    int need[n][m];

    for (i = 0; i < n; i++) {

        for (j = 0; j < m; j++)

            need[i][j] = max[i][j] - alloc[i][j];

    }

    int y = 0;

    for (k = 0; k < 5; k++) {

        for (i = 0; i < n; i++) {

            if (f[i] == 0) {

                int flag = 0;

                for (j = 0; j < m; j++) {

                    if (need[i][j] > avail[j]) {

                        flag = 1;

                        break;

                    }

                }

                if (flag == 0) {

                    ans[ind++] = i;

                    for (y = 0; y < m; y++)

                        avail[y] += alloc[i][y];

                    f[i] = 1;

                }

            }

        }

    }

    printf("Following is the SAFE Sequence\n");

    for (i = 0; i < n - 1; i++)

        printf(" P%d ->", ans[i]);

    printf(" P%d\n", ans[n - 1]);

    return (0);

}

 

运行结果:

Following is the SAFE Sequence

 P1 -> P3 -> P4 -> P0 -> P2

Program ended with exit code: 0

Please login to reply. Login

Reversion History

Loading...
No reversions found.