Anda di halaman 1dari 10

LAPORAN PRAKTIKUM

SISTEM OPERASI
SEMESTER GENAP 2020/2021

NAMA PRAKTIKAN : Afi Faridatul Haq Faqih


NIM : 205150607111008
KELAS : PTI A

JURUSAN SISTEM INFORMASI


FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
MALANG
2021
BAB PRAKTIKUM : BAB 6 - Deadlocks
TANGGAL PRAKTIKUM : 21 April 2021

6.4. Langkah Praktikum


Praktikum ini dilakukan dengan terlebih dahulu terhubung dengan layanan aws educate
dengan cara mengaktifkan instance dari halaman instance summary. Pilih action dan Start
untuk mengaktifkan instance. Lakukan koneksi SSH dengan cara yang sama seperti pada
Bab 1.

1. Login ke sistem GNU/Linux kemudian buka terminal.

2. Lakukan percobaan terhadap tiap kode program pada masing-masing sub bab
berikut.

3. Lakukan kompilasi kode program dengan menggunakan perintah gcc -o


<Nama_Output> <Nama_Source.c>

4. Jalankan hasil kompilasi menggunakan perintah ./<Nama_Output>

5. Capture / Snapshot output-nya dan simpan sebagai laporan.

Main.c

1 #include<stdio.h>
2 #include<stdlib.h>
3
4 void print(int x[][10],int n,int m){
5 int i,j;
6 for(i=0;i<n;i++){
7 printf("\n");
8 for(j=0;j<m;j++){
9 printf("%d\t",x[i][j]);
10 }
11 }

2
12 }
13
14 //Resource Request algorithm
15 void res_request(int A[10][10],int N[10][10],int AV[10][10],int pid,int m)
16 {
17 int reqmat[1][10];
18 int i;
19 printf("\n Enter additional request :- \n");
20 for(i=0;i<m;i++){
21 printf(" Request for resource %d : ",i+1);
22 scanf("%d",&reqmat[0][i]);
23 }
24
25 for(i=0;i<m;i++)
26 if(reqmat[0][i] > N[pid][i]){
27 printf("\n Error encountered.\n");
28 exit(0);
29 }
30
31 for(i=0;i<m;i++)
32 if(reqmat[0][i] > AV[0][i]){
33 printf("\n Resources unavailable.\n");
34 exit(0);
35 }
36
37 for(i=0;i<m;i++){
38 AV[0][i]-=reqmat[0][i];
39 A[pid][i]+=reqmat[0][i];
40 N[pid][i]-=reqmat[0][i];
41 }
42 }
43
44 //Safety algorithm
45 int safety(int A[][10],int N[][10],int AV[1][10],int n,int m,int a[]){
46
47 int i,j,k,x=0;
48 int F[10],W[1][10];
49 int pflag=0,flag=0;
50 for(i=0;i<n;i++)
51 F[i]=0;
52 for(i=0;i<m;i++)
53 W[0][i]=AV[0][i];

3
54
55 for(k=0;k<n;k++){
56 for(i=0;i<n;i++){
57 if(F[i] == 0){
58 flag=0;
59 for(j=0;j<m;j++){
60 if(N[i][j] > W[0][j])
61 flag=1;
62 }
63 if(flag == 0 && F[i] == 0){
64 for(j=0;j<m;j++)
65 W[0][j]+=A[i][j];
66 F[i]=1;
67 pflag++;
68 a[x++]=i;
69 }
70 }
71 }
72 if(pflag == n)
73 return 1;
74 }
75 return 0;
76 }
77
78 //Banker's Algorithm
79 void accept(int A[][10],int N[][10],int M[10][10],int W[1][10],int *n,int *m){
80 int i,j;
81 printf("\n Enter total no. of processes : ");
82 scanf("%d",n);
83 printf("\n Enter total no. of resources : ");
84 scanf("%d",m);
85 for(i=0;i<*n;i++){
86 printf("\n Process %d\n",i+1);
87 for(j=0;j<*m;j++){
88 printf(" Allocation for resource %d : ",j+1);
89 scanf("%d",&A[i][j]);
90 printf(" Maximum for resource %d : ",j+1);
91 scanf("%d",&M[i][j]);
92 }
93 }
94 printf("\n Available resources : \n");
95 for(i=0;i<*m;i++){

4
96 printf(" Resource %d : ",i+1);
97 scanf("%d",&W[0][i]);
98 }
99
100 for(i=0;i<*n;i++)
101 for(j=0;j<*m;j++)
102 N[i][j]=M[i][j]-A[i][j];
103
104 printf("\n Allocation Matrix");
105 print(A,*n,*m);
106 printf("\n Maximum Requirement Matrix");
107 print(M,*n,*m);
108 printf("\n Need Matrix");
109 print(N,*n,*m);
110
111 }
112
113 int banker(int A[][10],int N[][10],int W[1][10],int n,int m){
114 int j,i,a[10];
115 j=safety(A,N,W,n,m,a);
116 if(j != 0 ){
117 printf("\n\n");
118 for(i=0;i<n;i++)
119 printf(" P%d ",a[i]);
120 printf("\n A safety sequence has been detected.\n");
121 return 1;
122 }else{
123 printf("\n Deadlock has occured.\n");
124 return 0;
125 }
126 }
127
128 int main(){
129 int ret;
130 int A[10][10];
131 int M[10][10];
132 int N[10][10];
133 int W[1][10];
134 int n,m,pid,ch;
135 printf("\n DEADLOCK AVOIDANCE USING BANKER'S ALGORITHM\n");
136 accept(A,N,M,W,&n,&m);
137 ret=banker(A,N,W,n,m);

5
138 if(ret !=0 ){
139 printf("\n Do you want make an additional request ? (1=Yes|0=No)");
140 scanf("%d",&ch);
141 if(ch == 1){
142 printf("\n Enter process no. : ");
143 scanf("%d",&pid);
144 res_request(A,N,W,pid-1,m);
145 ret=banker(A,N,W,n,m);
146 if(ret == 0 )
147 exit(0);
148 }
149 }else
150 exit(0);
151 return 0;
152 }
153

6.5.Pembahasan

Setelah anda berhasil melakukan kompilasi program lakukan percobaan dengan langkah-
langkah berikut :
1. Masukkan variabel berikut :
a. Jumlah proses = 5
b. Jumlah resource = 3
Dengan Matriks
Allocation Max Available
R1 R2 R3 R1 R2 R3 R1 R2 R3
P0 0 1 0 7 5 3 3 3 2
P1 2 0 0 3 2 2
P2 3 0 2 9 0 2
P3 2 1 1 2 2 2
P4 0 0 2 4 3 3

6
2. Amati hasilnya dan tuliskan outputnya !

3. Apakah permintaan penambahan resource dari kondisi pada no 1 diijinkan apabila


P4 melakukan permintaan tambahan alokasi sebanyak R1=3 , R2=3 dan R3=0
Jawab: P4 tidak diijinkan untuk melakukan permintaan tambahan alokasi dan terjadi
deadlock.
4. Amati hasilnya dan tuliskan outputnya untuk kondisi dari point 3.

7
5. Apakah permintaan penambahan resource dari kondisi pada no 1 diijinkan apabila
P4 melakukan permintaan tambahan alokasi sebanyak R1=0 , R2=2 dan R3=0
Jawab: P4 diijinkan untuk melakukan permintaan tambahan alokasi dan terjadi
proses masuk ke safety sequence.
6. Amati hasilnya dan tuliskan outputnya untuk kondisi pada point 5.

7. Pada bagian program terdapat Resource Request Algorithm (baris 14 sampai 40)
dan Safety Algorithm (baris 42- 72). Jelaskan konsep algortimanya dan
penggunaannya !
Jawab:
- Resource Request Algortihm digunakan untuk menyetujui atau menunda
peminjaman dari suatu resources. Konsep dari penggunaannya adalah pertama
akan dilakukan proses pengecekan ada atau tidaknya proses yang meminta
penambahan resource. Jika ada, maka akan berlanjut pada tahapan “input
resource” dan jika tidak ada proses, maka akan berakhir dan menampilkan
“Error Encountered”. Dan apabila resource tersedia, maka penambahan akan
berhasil dan jika tidak maka program akan menampilkan output “Resource
Unavailable”.
- Safety Algotihm digunakan untuk memeriksa keadaan sistem setelah proses
peminjaman resource apakah dalam kondisi safe atau unsafe. Konsep dari
algoritma ini adalah melakukan set nilai finish sama dengan false kepada semua
proses dan dilakukan pengecekan terhadap proses yang memiliki nilai matrix
need lebih kecil dari matrix available, kemudian proses tersebut akan
menambahkan nilai pada matrix allocationnya ke matrix available dan
dimasukkan ke antrian proses dan di set nilai finishnya sama dengan true, maka
sistem dalam kondisi safe dan jika tidak maka sistem dalam kondisi unsafe.

8. Dapatkan kondisi pada soal no 1, 3 dan 5 digambarkan dengan menggunakan


Resource Alocation Graph ? Jelaskan !
Jawab: Kondisi tersebut dapat digambarkan menggunakan RAG (Resource
Alocation Graph). Namun, tidak dapat mengetahui apakah kondisi sistem dalam
keadaan safe atau unsafe karena terdapat beberapa tipe resource yang berbeda dan
diperlukan pembuatan matrix –matrix seperti yang ada pada Bankir Algorithm. Jadi,
RAG lebih cocok digunakan untuk kondisi yang hanya memiliki satu tipe resource
(Single Instance Resources) dan Bankir Algorithm lebih cocok digunakan untuk
kondisi yang memiliki banyak tipe resource (Multi Instance Resources).

8
● Pada no 1 tidak terjadi deadlock dan RAG pada resource masih terpenuhi.

● Pada no 3 terjadi deadlock dan RAG pada proses P4 atau proses ke 5


menunggu untuk mendapatkan resource dari resource 1 atau R1. Sehingga,
permintaan tambahan untuk P4 atau proses ke 5 tidak terpenuhi dan terjadi
deadlock.

● Pada no 5 tidak terjadi deadlock dan RAG pada resource yang diminta pada
setiap proses dapat terpenuhi walaupun ada permintaan penambahan
resource pada P4 atau proses ke 5.

9
6.6. Kesimpulan
Deadlock adalah suatu kondisi yang terjadi jika terdapat dua proses atau lebih yang
saling menunggu proses yang lain untuk melepaskan resource yang sedang dipakai.
Strategi yang dapat dipakai untuk menghindari deadlock yaitu algoritma banker. Algoritma
banker memiliki dua algoritma yaitu Resource Request Algorithm dan Safety Algorithm.
Resource Request Algorithm berfungsi untuk menentukan apakah disetujui atau
menunda peminjaman dari suatu resources. Kemudian, akan terjadi pengecekan permintaan
penambahan resource atau tidak. Algorithm ini dieksekusi oleh bankir pada setiap
permintaan resource.
Safety Algorithm berfungsi untuk memeriksa sistem setelah peminjaman apakah
pada kondisi safe atau unsafe. Apabila berada dalam kondisi safe, maka dana yang tersisa
dapat melakukan pinjaman oleh semua customer yang aktif dan semua proses akan
berakhir dengan aman dan tidak terjadi deadlock. Namun, apabila dalam kondisi unsafe,
maka akan terjadi kemungkinan deadlock dan permohonan kredit tertunda hingga
permohonan tidak menyebabkan unsafe state.

10

Anda mungkin juga menyukai