Documente Academic
Documente Profesional
Documente Cultură
Scopul lucrarii:
Însuşirea modalităţilor de sincronizare pentru algoritmul bancherului;
Realizarea sincronizării firelor de execuţie pentru algoritmul bancherului;
Etapele de realizare:
1) Sincronizarea firelor de execuţie pentru algoritmul bancherului;
2) Realizarea metodelor de sincronizare a firelor de execuţie pentru algoritmul
bancherului;
3) Crearea interfeţii programului;
4) Prezentarea lucrării
Sarcina Scrie un program pentru algoritmul bancher pentru X (numărul variantei înmulţit
cu numărul subgrupei) procesele şi Y (numarul variantei plus numărul subgrupei ănmulţit
cu trei) resurse cu specificarea timpului de utilizare.
Listingul Programului:
package zx;
public class Zx {
static int n = 2, k = 9;
s[i] = 0;
2
}
p[j] = 0;
p[j] += c[i][j];
/* Resurse utilizate*/
System.out.print("P=( ");
System.out.println(")");
if (a[j] < 0) {
return false;
3
}
/* Resurse disponibile */
System.out.print("A=( ");
System.out.println(")");
return true;
//==========================================================================
=
/*Matricae C arata cite resurse de fiecare tip ocupa in prezent fiecare proces*/
c[0][0] = 1;
c[0][1] = 0;
c[0][2] = 1;
c[0][3] = 0;
c[0][4] = 1;
c[0][5] = 0;
c[0][6] = 1;
c[0][7] = 0;
c[0][8] = 1;
c[1][0] = 1;
4
c[1][1] = 0;
c[1][2] = 1;
c[1][3] = 0;
c[1][4] = 1;
c[1][5] = 0;
c[1][6] = 1;
c[1][7] = 0;
c[1][8] = 1;
/**/
System.out.println("C={");
System.out.print(" ");
System.out.println();
System.out.println(" }");
/* Matricea R arata cantitatea de resurse care trebue sa fie adaugate pentru fiecare process, ca sa aiba
o finalizare cu succes
5
r[3][0]=0; r[3][1]=0; r[3][2]=1; r[3][3]=0;
/* Stare instabila */
r[0][0] = 2;
r[0][1] = 1;
r[0][2] = 5;
r[0][3] = 3;
r[0][4] = 0;
r[0][5] = 2;
r[0][6] = 6;
r[0][7] = 1;
r[0][8] = 3;
r[1][0] = 1;
r[1][1] = 3;
r[1][2] = 3;
r[1][3] = 3;
r[1][4] = 1;
r[1][5] = 3;
r[1][6] = 5;
r[1][7] = 2;
r[1][8] = 2;
// Stare stabila
r[0][0] = 8;
r[0][1] = 1;
6
r[0][2] = 3;
r[0][3] = 3;
r[0][4] = 0;
r[0][5] = 2;
r[0][6] = 1;
r[0][7] = 2;
r[0][8] = 0;
r[1][0] = 4;
r[1][1] = 3;
r[1][2] = 2;
r[1][3] = 4;
r[1][4] = 1;
r[1][5] = 5;
r[1][6] = 2;
r[1][7] = 4;
r[1][8] = 2;
System.out.println("R={ ");
System.out.print(" ");
System.out.println();
System.out.println(" }");
7
/* Initializarea vectorului datelor existente */
e[0] = 6;
e[1] = 4;
e[2] = 5;
e[3] = 4;
e[4] = 4;
e[5] = 5;
e[6] = 4;
e[7] = 5;
e[8] = 4;
System.out.print("E=( ");
System.out.println(")");
defineP();
defineS();
if (defineA() == true) {
int quantityOfGoodStrings = 0;
if (s[i] != 1) {
int g = 0;
g++;
if (g == k) {
a[j] += r[i][j];
r[i][j] = 0;
s[i] = 1;
quantityOfGoodStrings++;
i = 0;
if (quantityOfGoodStrings == n) {
System.out.println("Stare stabila");
return;
} else {
if (i == (n - 1)) {
System.out.println("Stare instabila");
return;
}
9
}
Rezultatele obtinute:
Stare instabila:
run:
C={
101010101
101010101
R={
813302120
432415242
E=( 6 4 5 4 4 5 4 5 4 )
P=( 2 0 2 0 2 0 2 0 2 )
A=( 4 4 3 4 2 5 2 5 2 )
Stare instabila
Stare stabila:
run:
C={
101010101
101010101
R={
213302120
432415242
E=( 6 4 5 4 4 5 4 5 4 )
P=( 2 0 2 0 2 0 2 0 2 )
10
A=( 4 4 3 4 2 5 2 5 2 )
Stare stabila
11