Anda di halaman 1dari 13

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER


UNIVERSITAS BRAWIJAYA

NAMA : ZIDANE EL FARUQI


NIM :195150200111005
MATERI : BAB 6
TANGGAL : 16/11/2020
ASISTEN : HALIMAH SEPTYA MIKAYLA

BAB 6 – DEADLOCKS

6.1. Tujuan Praktikum


Materi praktikum pada bab ini bertujuan untuk memperkenalkan situasi deadlock yang mungkin
terjadi pada system operasi. Sebelum terjadi deadlock, terdapat kondisi-kondisi yang dapat menjadi
penyebab situasi deadlock.

6.2. Capaian Praktikum

1. Mahasiswa mampu memahami konsep deadlock.


2. Mahasiswa mampu mempraktekkan metode deadlock prevention menggunakan algoritma
banker.

6.3. Dasar Teori


Permasalahan deadlock terjadi karena sekumpulan proses-proses yang di-blok dimana setiap
proses membawa sebuah sumber daya dan menunggu mendapatkan sumber daya yang dibawa
oleh proses lain. Misalnya sistem mempunyai 2 tape drive dan terdapat dua proses P1 dan P2
yang masing masing membawa satu tape drive dan masing-masing memerlukan tape drive yang
dibawa proses lain sehingga terjadi keadaan saling menunggu resource dan sistem di-blok. Contoh
lain, misalnya terdapat semaphore A dan B yang diinisialisasi 1 dan terdapat dua proses P0 dan P1
masing-masing membawa semaphore A dan B. Kemudian P0 dan P1 meminta semaphore B dan A
dengan menjalankan operasi wait. Hal ini mengakibatkan proses di-blok dan terjadi deadlock.

6.3.1. Graph Allocation Resource


Graph Alocation Resource merupakan salah satu metode yang dipakai untuk mengidentifikasi
terjadi deadlock. Sebuah graph disusun untuk menggambarkan hubungan hubungan antara setiap
proses dan resource yang tersedia. Ilustrasi Graph Allocation Resource ditunjukkan dalam gambar
6.1.

6.3.2. Algoritma Banker


Algoritma Banker dikemukakan oleh Edsger W.Dijkstra dan merupakan sebuah strategi untuk
menghindari deadlock. Algoritma ini mencegah terjadinya deadlock dengan memutuskan apakah
menyetujui atau menunda permintaan sumber daya oleh proses. Ketika sebuah proses meminta
sumber daya, maka permintaan tersebut harus diperiksa apakah menyebabkan terjadinya deadlock
atau tidak.
(a) (b)

Gambar 6.1 (a) Resource Alocation Graph Tanpa Deadlock (b) Resource Alocation
Graph Dengan Deadlock

Hal penting yang perlu diperhatikan dalam penggunaan algoritma banker adalah tentang
penyusunan matriks, terdapat beberapa matriks yang perlu dikuasi berkaitan dengan algoritma
banker :
1. Jumlah resource (sumber daya) dari setiap proses yang mungkin diminta disebut dengan
request
2. Jumlah resource (sumber daya) dari setiap proses yang dibutuhkan disebut matriks max
3. Jumlah sisa resource yang masih dimiliki oleh sistem, disebut dengan matriks available
4. Jumlah resource yang telah dialokasikan disebut dengan matriks allocation Resource hanya
boleh/bisa diberikan untuk dipakai pada suatu proses jika:
1. request ≤ max, jumlah permintaan (request) tidak lebih banyak dari jumlah maksimum
resource.
2. request ≤ available, jumlah request tidak boleh lebih banyak dari jumlah resource yang
tersedia. jika tidak proses harus menunggu hingga resource yang diminta ada.

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.
6. Amati output tiap percobaan dan jawab pertanyaan pada masing-masing percobaan.
main.c

1 #include<stdio.h>
2 #include<stdlib.h>
3 int i,
4 void print(int x[][10],int n,int m){
5 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
12 }
//Reso
13 void r
14 {
15 urce Request algorithm es_request(int A[10][10],int N[10][10],int
16 AV[10][10],int pid,int m)
17
18 int reqmat[1][10]; int i; printf("\n Enter
19 additional request :- \n"); for(i=0;i<m;i++){
20 printf(" Request for resource %d :
21 ",i+1); scanf("%d",&reqmat[0][i]);
22 } for(i=0;i<m;i++) if(reqmat[0][i] >
23 N[pid][i]){ printf("\n Error
24 encountered.\n");
25 exit(0);
26
27
28 for(i=0;i<m;i++) if(reqmat[0][i] > AV[0][i]){
27
printf("\n Resources
28 }
unavailable.\n");
29
30 exit(0);
31 }
32
33 for(i=0;i<m;i++){
34 AV[0][i]-=reqmat[0][i];
35 A[pid][i]+=reqmat[0][i];
36
N[pid][i]-=reqmat[0][i];
37
}
38
39
40
//Safety algorithm int safety(int A[][10],int N[][10],int
41
AV[1][10],int n,int m,int a[]){
42
43
}
44
45
46
47 int i,j,k,x=0; int
48 F[10],W[1][10];
49 int
50 pflag=0,flag=0;
51 for(i=0;i<n;i++)
52 F[i]=0;
53 for(i=0;i<m;i++)
54 W[0][i]=AV[0][i];
55
56 for(k=0;k<n;k++){
57 for(i=0;i<n;i++){
58 if(F[i] == 0){
59
flag=0;
60
61 for(j=0;j<m;j++){
62 if(N[i][j] > W[0][j])
63 flag=1;
64 }
65 if(flag == 0 && F[i] == 0){
66 for(j=0;j<m;j++)
67
W[0][j]+=A[i][j];
68
69 F[i]=1;
70 pflag++;
71 a[x++]=i;
72 }
73 }
74 }
75
if(pflag == n)
76
77 return 1;
78 } return
0;
79
80
81 }
82 er's Algorithm
83 //Bank ccept(int A[][10],int N[][10],int M[10][10],int W[1][10],int *n,int
84 void a
84 *m){ int i,j; printf("\n Enter total no. of processes : ");
86 scanf("%d",n); printf("\n Enter total no. of resources :
87 "); scanf("%d",m); for(i=0;i<*n;i++){ printf("\n Process
88 %d\n",i+1); for(j=0;j<*m;j++){ printf("
89 Allocation for resource %d : ",j+1);
90 scanf("%d",&A[i][j]); printf(" Maximum
91 for resource %d : ",j+1);
92 scanf("%d",&M[i][j]);
93 }
94 } printf("\n Available resources :
95 \n"); for(i=0;i<*m;i++){ printf("
96
Resource %d : ",i+1);
97
scanf("%d",&W[0][i]);
98
}
99
100
for(i=0;i<*n;i++)
101
102 for(j=0;j<*m;j++)
N[i][j]=M[i][j]-A[i][j];
103 printf("\n Allocation Matrix");
104 print(A,*n,*m); printf("\n Maximum
105 Requirement Matrix"); print(M,*n,*m);
106
printf("\n Need Matrix");
107
print(N,*n,*m);
108
109
110 } int banker(int A[][10],int N[][10],int W[1][10],int n,int m){
111 int j,i,a[10]; j=safety(A,N,W,n,m,a); if(j != 0 ){
112 printf("\n\n"); for(i=0;i<n;i++) printf(" P%d ",a[i]);
113 printf("\n A safety sequence has been detected.\n");
114 return 1;
115 }else{
116 printf("\n Deadlock has occured.\n");
117
return 0;
118
119 }
120 } int
121 main(){
122 int ret;
123 int A[10][10];
124 int M[10][10];
125 int N[10][10];
126 int W[1][10];
127
int n,m,pid,ch;
128
129 printf("\n DEADLOCK AVOIDANCE USING BANKER'S ALGORITHM\n");
130 accept(A,N,M,W,&n,&m); ret=banker(A,N,W,n,m); if(ret !=0 ){
131 printf("\n Do you want make an additional request ?
132 (1=Yes|0=No)");
133 scanf("%d",&ch);
134 if(ch == 1){
135
printf("\n Enter process no. : ");
136
scanf("%d",&pid);
137
138 res_request(A,N,W,pid-1,m);
139 ret=banker(A,N,W,n,m); if(ret
140 == 0 )
141 exit(0);
142 }
143
}else
144
145 exit(0);
146 return 0;
147 }
148
149
150
6.5. Pembahasan
Setelah anda berhasil melakukan kompilasi program lakukan percobaan dengan langkahlangkah
berikut :

1. Masukkan variable 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

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
4. Amati hasilnya dan tuliskan outputnya untuk kondisi dari point 3.
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
6. Amati hasilnya dan tuliskan outputnya untuk kondisi pada point 5.
7. Pada bagian program terdapat Resource Request Alghorithm (baris 14 sampai 40) dan Safety
Alghoritm (baris 42- 72). Jelaskan konsep algortimanya dan penggunaannya !

8. Dapatkan kondisi pada soal no 1, 3 dan 5 di gambarkan dengan menggunakan Resource


Alocation Graph ? Jelaskan !

6.6. Kesimpulan
Jelaskan kesimpulan dari hasil percobaan pada Bab 6 ini.

UNTUK DIPERHATIKAN
Setiap selesai melakukan praktikum, jangan lupa menonaktfikan instance agar billing kuota tidak terus
berjalan. Lakukan dengan cara memilih button Action pada Instance Summar y. Pilih Stop sebagai
perintah yang harus dijalankan.
LABORATORIUM PEMBELAJARAN ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

NAMA : ZIDANE EL FARUQI


NIM : 195150200111005
MATERI : BAB 6
TANGGAL : 16/11/2020
ASISTEN : HALIMAH SEPTYA MIKAYLA

6.5. Pembahasan
Setelah anda berhasil melakukan kompilasi program lakukan percobaan dengan langkahlangkah
berikut :

1. Masukkan variable 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

2. Amati hasilnya dan tuliskan outputnya !


Ss Pertama , masukkan terlebih dahulu kode program yang ada di
modul ke direktori main.c

Ss Kemudian kompilasi kode program tersebut dengan gcc main.c -o


main

Ss Kemudian kompilasi kode program tersebut dengan gcc main.c -o


main
Ss Setelah mengkompilasi kode program, jalankan program dengan
pertintah ./main dan nantinya akan keluar tampilan seperti ini

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

Permintaan penambahan resource tidak diizinkan karena setelah


permintaan dilakukan deadlock akan terjadi

4. Amati hasilnya dan tuliskan outputnya untuk kondisi dari point 3.

Ss Setelah menjalankan program dengan memasukan permintahan


penambahan, maka akan keluar tampilan seperti ini dan akan
terjadi deadlock

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

Permintaan penambahan resource diizinkan karena setelah


permintaan dilakukan deadlock tidak terjadi dan safety sequence
akan dideteksi

6. Amati hasilnya dan tuliskan outputnya untuk kondisi pada point 5.

S Setelah menjalankan program dengan memasukan permintahan


penambahan, maka akan keluar tampilan seperti ini dan yang akan
terjadi adalah aka nada safety sequence yang telah terdeteksi

7. Pada bagian program terdapat Resource Request Alghorithm (baris 14 sampai 40) dan Safety
Alghoritm (baris 42- 72). Jelaskan konsep algortimanya dan penggunaannya !
Resource Request Alghoritm adalah sebuah konsep algoritma yang digunakan untuk
mengelola request atas resources yang apabila request lebih kecil daripada need maka
selanjutnya dapat melanjutkan ke step berikutnya yaitu bila request lebih kecil dari
available maka :

Available = available – request


Need = need – request
Allocation = allocation + request

Safety Algorthm adalah konsep yang digunakan untuk mengetahui apabila sebuah sistem
ada pada state yang aman

8. Dapatkah kondisi pada soal no 1, 3 dan 5 di gambarkan dengan menggunakan Resource


Alocation Graph ? Jelaskan !

Pada kondisi di soal no 1, 3 dan juga 5 penggambaran dengan menggunakan Resource


Alocation Grap Sangat bisa dilakukan dikarenakan metode ini didasarkan bila graph
memiliki cycle maka sistem sedang berada pada state deadlock dan apabila graph itu
tidak memiliki cycle maka sistem sedang pada state tidak deadlock
LABORATORIUM PEMBELAJARAN ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

NAMA : ZIDANE EL FARUQI


NIM : 195150200111005
MATERI : BAB 6
TANGGAL : 16/11/2020
ASISTEN : HALIMAH SEPTYA MIKAYLA

6.6. Kesimpulan
Jelaskan kesimpulan dari hasil percobaan pada Bab 6 ini.
Pada bab ini, kita mempelajari tentang situasi deadlock yang mungkin
terjadi pada sebuah sistem operasi. Sebelum itu terjadi, terdapat kondisi-
kondisi yang dapaat menjadi penyebab situasi deadlock. Permasalahan
deadlock terjadi karena sekumpulan proses-proses yang di-blok dimana
setiap proses membawa sebuah sumber daya dan menunggu mendapatkan
sumber daya yang dibawa oleh proses lain. Misalnya sistem mempunyai 2
tape drive dan terdapat dua proses P1 dan P2 yang masing masing membawa
satu tape drive dan masing-masing memerlukan tape drive yang dibawa
proses lain sehingga terjadi keadaan saling menunggu resource dan sistem
di-blok. Contoh lain, misalnya terdapat semaphore A dan B yang diinisialisasi
1 dan terdapat dua proses P0 dan P1 masing-masing membawa semaphore
A dan B. Kemudian P0 dan P1 meminta semaphore B dan A dengan
menjalankan operasi wait. Hal ini mengakibatkan proses di-blok dan terjadi
deadlock. Graph Alocation Resource merupakan salah satu metode yang
dipakai untuk mengidentifikasi terjadi deadlock. Sebuah graph disusun untuk
menggambarkan hubungan hubungan antara setiap proses dan resource
yang tersedia. Algoritma Banker dikemukakan oleh Edsger W.Dijkstra dan
merupakan sebuah strategi untuk menghindari deadlock. Algoritma ini
mencegah terjadinya deadlock dengan memutuskan apakah menyetujui atau
menunda permintaan sumber daya oleh proses. Ketika sebuah proses
meminta sumber daya, maka permintaan tersebut harus diperiksa apakah
menyebabkan terjadinya deadlock atau tidak.

Anda mungkin juga menyukai