SKRIPSI
Oleh :
NENNA IRSA SYAHPUTRI
050803029
DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA
ii
PERSETUJUAN
Judul : PENDETEKSIAN DAN PENCEGAHAN
DEADLOCK PADA SISTEM OPERASI MENGGUNAKAN PENDEKATAN GRAPH ALOKASI SUMBER DAYA.
Kategori : SKRIPSI
Nama : NENNA IRSA SYAHPUTRI
Nomor Induk Mahasiswa : 050803029
Program Studi : SARJANA (S1) MATEMATIKA
Departemen : MATEMATIKA
Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA
Medan, Oktober 2009
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Drs. Ujian Sinulingga, M.Si Prof. Dr. Herman Mawengkang NIP 19560303 1984031 004 NIP 19461128 1974031 001
Diketahui/Disetujui oleh
Departemen Matematika FMIPA USU Ketua.
PERNYATAAN
PENDETEKSIAN DAN PENCEGAHAN DEADLOCK PADA SISTEM
OPERASI MENGGUNAKAN PENDEKATAN GRAPH ALOKASI SUMBER
DAYA
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, Oktober 2009-
iv
PENGHARGAAN
Puji dan syukur penulis ucapkan kehadirat Allah SWT yang telah melimpahkan karunia-Nya, sehingga penulis berhasil menyelesaikan skripsi ini dalam waktu yang telah ditetapkan.
Dalam kesempatan ini, penulis mengucapkan terima kasih yang sebesar-besarnya kepada semua pihak yang telah membantu dan membimbing penulis dalam penyusunan skripsi ini, ucapan terima kasih penulis sampaikan kepada:
1. Bapak Prof. Dr. Herman Mawengkang. selaku pembimbing I dan Bapak Drs. Ujian Sinulingga, M.Si. selaku pembimbing II yang telah memberikan bimbingan dan pengarahan kepada penulis sehingga skripsi ini dapat diselesaikan.
2. Bapak Syahril Efendi, S.Si, M.IT. dan Bapak James Piter Marbun, M.Kom. selaku dosen penguji penulis.
3. Ibu Dra. Esther Sorta MN, M.Sc. selaku dosen wali penulis selama mengikuti perkuliahan.
4. Bapak Dr. Saib Suwilo, M.Sc. dan Bapak Drs. Henry Rani Sitepu, M.Sc. selaku Ketua dan Sekretaris, Departemen Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara.
5. Dekan dan Pembantu Dekan FMIPA USU.
6. Semua Dosen pada Departemen Matematika FMIPA USU, pegawai di FMIPA USU.
7. Teman-teman di Departemen Matematika khususnya stambuk 2005, serta sahabat-sahabat penulis: Cinta, feby, dika, Lia, Rima, Radhi, Santri, Sundari dan Yuni yang selama ini telah memberikan semangat, dorongan dan saran dalam pengerjaan skripsi ini.
Penulis menyadari sepenuhnya bahwa isi maupun sistematika penyajian tulisan ini belum layak dikatakan sempurna. Untuk itu dengan segala kerendahan hati, penulis mengharapkan kritik dan saran yang membangun.
vi
ABSTRAK
Setiap sumber daya pada sistem operasi akan digunakan oleh proses-proses yang
membutuhkannya. Mekanisme hubungan dari proses-proses dan sumber daya yang
dibutuhkan atau digunakan dapat divisualisasikan kedalam graph alokasi sumber daya
dan graph tunggu, sehingga permasalahan deadlock pada sistem operasi dapat
DEADLOCK DETECTION AND PREVENTION IN OPERATING SYSTEM USING RESOURCE ALLOCATION GRAPH
ABSTRACT
viii
DAFTAR ISI
Halaman
PERSETUJUAN ii
PERNYATAAN iii
PENGHARGAAN iv
ABSTRAK vi
ABSTRACT vii
DAFTAR ISI viii
DAFTAR TABEL ix
DAFTAR GAMBAR x
Bab 1 PENDAHULUAN 1
1.1 Latar Belakang 1
1.2 Identifikasi Masalah 2
1.3 Tujuan Penelitian 2
1.4 Kontribusi Penelitian 2
1.5 Batasan Masalah 2
1.6 Metode Penelitian 3
1.7 Tinjauan Pustaka 3
Bab 2 LANDASAN TEORI 5
2.1 Konsep Dasar Graph
2.1.1 Sejarah Graph 5
2.1.2 Definisi Graph 6
2.1.3 Jenis-Jeins Graph 7
2.2 Graph Alokasi Sumber daya 11
2.2.1 Definisi Graph Alokasi Sumber Daya 11 2.2.2 Komponen Graph Alokasi Sumber Daya 11
2.3 Definisi Sistem Operasi 13
2.4 Definisi Deadlock 15
2.4.1 Model Sistem 16
2.4.2 Sumber Daya 17
3.2 Pencegahan Deadlock 22
3.3 Pemulihan Deadlock 25
3.3.1 Terminasi Proses 25
3.3.2 Penyelaan Penggunaan Sumber Daya 25
3.4 Penghindaran Deadlock 27
3.5 Contoh Pendeteksian Deadlock 30
Bab 4 KESIMPULAN DAN SARAN 33
4.1 Kesimpulan 33
4.2 Saran 34
DAFTAR PUSTAKA 35
x
DAFTAR TABEL
Halaman
Tabel 3.1 Tabel contoh safe state 28
DAFTAR GAMBAR
Halaman Gambar 2.1 Jembatan Koningsberg 5 Gambar 2.2 Graph pemodelan jembatan Koningsberg 6
Gambar 2.3 Graph empat simpul lima sisi 7
Gambar 2.4 Graph sederhana 7 Gambar 2.5 Graph ganda 8
Gambar 2.6 Graph semu 8
Gambar 2.7 Graph berhingga 9
Gambar 2.8 Graph tak berhingga 9
Gambar 2.9 Graph tak berarah 10
Gambar 2.10 Graph berarah 10
Gambar 2.11 Proses 11
Gambar 2.12 Sumber daya 11
Gambar 2.13 Sisi permintaan 12
Gambar 2.14 Sisi alokasi 12
Gambar 2.15 Graph alokasi sumber daya tiga proses empat sumber daya 13
Gambar 2.16 Deadlock pada jembatan 15
Gambar 2.17 Proses C dan D deadlock terhadap sumber daya T dan U 15
Gambar 2.18 Deadlock pada rel kereta api 16
Gambar 3.1 Graph alokasi sumber daya empat proses tiga sumber daya 21
Gambar 3.2 Graph tunggu 21
vi
ABSTRAK
Setiap sumber daya pada sistem operasi akan digunakan oleh proses-proses yang
membutuhkannya. Mekanisme hubungan dari proses-proses dan sumber daya yang
dibutuhkan atau digunakan dapat divisualisasikan kedalam graph alokasi sumber daya
dan graph tunggu, sehingga permasalahan deadlock pada sistem operasi dapat
DEADLOCK DETECTION AND PREVENTION IN OPERATING SYSTEM USING RESOURCE ALLOCATION GRAPH
ABSTRACT
BAB 1
PENDAHULUAN
1.1Latar Belakang
Dalam perkembangan dunia ilmu pengetahuan dan teknologi saat ini, terkadang sangatlah
sulit untuk menyelesaikan suatu permasalahan yang timbul dengan menggunakan
konsep-konsep yang sudah ada. Untuk itu graph merupakan salah satu bagian ilmu matematika yang
dapat digunakan untuk mencari solusi yang diharapkan.
Saat ini pemakaian teori graph semakin luas sesuai dengan tuntutan yang senantiasa terus
bertambah. Teori graph merupakan topik yang banyak mendapat perhatian, karena
model-modelnya sangat berguna untuk aplikasi yang luas, seperti masalah dalam jaringan
komunikasi, transportasi, dan ilmu komputer.
Salah satu aplikasi graph pada sistem operasi adalah graph alokasi sumber daya yang
digunakan untuk melakukan pendeteksian dan pencegahan deadlock. Deadlock adalah suatu
kondisi dimana sistem tidak berjalan lagi karena adanya proses yang saling menunggu.
Graph alokasi sumber daya memiliki dua jenis simpul, yaitu simpul sumber daya dan
simpul proses. Sisi graph alokasi sumber daya juga dibedakan menjadi dua, yaitu sisi
permintaan mempresentasikan daya yang diminta oleh suatu proses terhadap sumber daya
tertentu dan sisi alokasi menunjukkan alokasi daya yang dilakukan oleh suatu sumber daya
1.2Identifikasi Masalah
Masalah dalam penelitian ini adalah bagaimana menyelesaikan permasalahan dalam
mendeteksi deadlock pada sistem operasi dan pencegahannya dengan menggunakan
pendekatan graph.
1.3Tujuan Penelitian
Adapun tujuan penelitian ini adalah untuk mendeteksi dan mencegah deadlock pada sistem
operasi dengan menggunakan pendekatan graph alokasi sumber daya.
1.4Kontribusi Penelitian
Penelitian ini berguna untuk memperdalam pengetahuan penulis tentang teori graph dan
sebagai aplikasinya pada sistem operasi dan dapat menambah referensi bagi pembaca.
1.5Batasan Masalah
Batasan masalah dalam penelitian ini yaitu pada empat proses dan empat sumber daya.
1.6Metodologi Penelitian
Metodologi penelitian ini bersifat studi literatur yang disusun berdasarkan rujukan pustaka
3
1. Menjelaskan sejarah graph, definisi dan jenis-jenis graph, serta graph alokasi
sumber daya dan komponennya.
2. Menjelaskan definisi sistem operasi, definisi deadlock, penyebab, dan
penanggulangannya.
3. Menjelaskan pendeteksian, pencegahan, pemulihan, dan penghindaran deadlock.
4. Contoh pendeteksian deadlock.
1.7Tinjauan Pustaka
Sebagai sumber pendukung toeri dalam penulisan ini, penulis menggunakan beberapa
pustaka antara lain:
1. Ayuningsih (2007). Aplikasi graph dalam pendeteksian deadlock. Deadlock ialah
suatu kondisi dimana proses dalam operasi tidak berjalan lagi ataupun tidak ada
komunikasi lagi antarproses.
2. Muliati (2007). Pemakaian graph untuk pendeteksian dan pencegahan deadlock
pada sistem operasi. Menyatakan bahwa salah satu aplikasi graph pada sistem
operasi adalah graph alokasi sumber daya yang digunakan untuk melakukan
pendeteksian dan pencegahan deadlock.
3. Munir (2001). Graph didefinisikan sebagai pasangan himpunan (V, E), yang
dalam hal ini:
V = himpunan tidak-kosong dari simpul-simpul (vertice atau node)
= {v1, v2, ..., vn}
dan
E = himpunan sisi (edges atau arcs) yang menghubungkan sepasang simpul
= {e1, e2, ..., en}
4. Pangera dan Ariyus (2005). Permasalahan deadlock adalah bila satu set blocked
processes yang memperoleh suatu sumber daya dan menunggu untuk memperoleh
BAB 2
LANDASAN TEORI
2.1 Konsep Dasar Graph
2.1.1 Sejarah Graph
Graph dipakai pertama kali oleh seorang matematikawan Swiss yang bernama Leonard Euler
pada tahun 1763 untuk memecahkan teka-teki jembatan Koningsberg. Dikota Koningsberg
Jerman Timur terdapat sungai Pregal yang dibelah dua oleh Pulau Kneipof. Daratan yang
dipisahkan oleh sungai tersebut dihubungkan oleh tujuh buah jembatan. Teka-tekinya adalah:
Apakah mungkin melalui ketujuh jembatan tersebut dan kembali ketempat semula dengan
masing-masing jembatan dilalui tepat satu kali?
Sebelum Euler memodelkan masalah ini kedalam graph dan menemukan solusinya,
kebanyakan orang sepakat bahwa tidak mungkin kembali ketempat semula, namun mereka tidak
mampu menjelaskan mengapa.
Euler memodelkan daratan dengan titik yang disebut sebagai simpul dan jembatan yang
menghubungkannya sebagai garis yang disebut sebagai sisi.
Jawaban Euler adalah: Orang tidak mungkin melalui jembatan tersebut masing-masing
satu kali dan kembali lagi ketempat semula jika degree dari simpul-simpul tidak semua genap.
Atau dengan kata lain, jika masing-masing simpul memiliki jumlah sisi genap maka dengan
melalui masing-masing sisi satu kali kita dapat kembali ketempat semula.
Gambar 2.2 Graph pemodelan jembatan Koningsberg
Dari gambar diatas tampak bahwa simpul-simpul dari graph pemodelan jembatan
Koningsberg memiliki sisi berjumlah ganjil, jadi orang tidak mungkin kembali ke tempat semula.
2.1.2 Definisi Graph
8
V = himpunan tidak-kosong dari simpul-simpul (vertices atau node)
= {v1, v2, ..., vn}.
E = himpunan sisi (edges atau arcs) yang mnghubungkan sepasang simpul
= {e1, e2, ..., en} .
atau dapat ditulis singkat notasi G = (V, E), dengan V tidak boleh kosong, sedangkan E boleh
kosong.
Jika ada minimal satu simpul dan tidak mempunyai sisi juga dikatakan graph.
Gambar 2.3 Graph empat simpul lima sisi.
2.1.3 Jenis-Jenis Graph
Berdasarkan jenis sisinya graph digolongkan menjadi dua jenis:
1. Graph sederhana yaitu graph yang tidak memiliki sisi ganda maupun loop.
2. Graph tidak sederhana yaitu graph yang memiliki sisi ganda maupun loop. Graph ini
dibedakan menjadi dua yaitu:
a. Graph ganda yaitu graph yang memiliki sisi ganda. Sisi ganda adalah sekumpulan sisi
yang menghubungkan sepasang simpul yang sama.
Gambar 2.5 Graph ganda
b. Graph semu yaitu graph yang memiliki sisi loop. Loop adalah sisi yang
menghubungkan sebuah simpul dengan dirinya sendiri.
Gambar 2.6 Graph semu.
10
1. Graph berhingga (limited graph) yaitu graph yang memilki jumlah simpul
berhingga.
Gambar 2.7 Graph berhingga
2. Graph tak berhingga (unlimited graph) yaitu graph yang jumlah simpulnya tak
berhingga. Secara geometris graph tak berhingga digambarkan dengan sisi-sisi yang
hanya memiliki satu simpul untuk setiap simpul luarnya. Sekilas nampak seperti
Berdasarkan orientasi arah dari sisi-sisi, graph digolongkan menjadi dua jenis:
1. Graph tak berarah yaitu graph yang sisi-sisinya tidak memiliki orientasi arah.
Gambar 2.9 Graph tak berarah
2. Graph berarah yaitu graph yang sisi-sisinya memiliki orientasi arah.
Gambar 2.10 Graph berarah
Pada gambar Graph berarah di atas, sisi yang menghubungkan simpul V3 ke simpul V1
tidak sama dengan sisi yang menghubungkan simpul V1 kesimpul V3 karena orientasi
12
2.2 Graph Alokasi Sumber Daya
2.2.1 Definisi Graph Alokasi Sumber daya
Graph aloaksi sumber daya adalah salah satu penerapan graph pada sistem operasi. Graph alokasi
sumber daya merupakan graph sederhana dan graph berarah. Graph ini merupakan visualisasi
yang membantu proses pendeteksian dan pencegahan masalah deadlock.
2.2.2 Komponen Graph Alokasi Sumber daya
Graph alokasi sumber daya mempunyai komponen-komponen layaknya graph biasa. Pada graph
ini simpul dan sisinya dibedakan menjadi dua.
Simpul graph alokasi sumber daya dibagi menjadi dua jenis yaitu:
1. Proses P = {P0, P1, P2, P3, ..., Pi, ..., Pm}. Terdiri dari semua proses yang ada di
sistem. Simpulnya digambarkan sebagai lingkaran dengan nama prosesnya.
Gambar berikut menunjukkan simpul untuk proses Pi.
Gambar 2.11 Proses
2. Sumber daya R = {R0, R1, R2, R3, ..., Rj, ..., Rn}. Terdiri dari semua sumber
daya yang ada di sistem. Simpulnya digambarkan sebagai segi empat dengan
Sisi graph alokasi sumber daya juga dibagi menjadi dua jenis yaitu:
1. Sisi permintaan (request edge): Pi -> Rj , sisi yang digambarkan dengan tanda
panah dari Pi menuju Rj, sisi permintaan menggambarkan adanya suatu proses
Pi yang meminta sumber daya Rj dan sedang menunggu sumber daya tersebut.
Bila permohonan untuk menggunakan sumber daya dikabulkan, maka request
edge akan diubah menjadi assignment edge (sisi alokasi).
Gambar 2.13 Sisi permintaan.
2. Sisi alokasi (assignment edge): Rj - > Pi , sisi yang digambarkan dengan tanda
panah dari Rj menuju Pi, sisi aloksi menggambarkan adanya suatu sumber daya
Rj yang mengalokasikan salah satu instansnya (bagiannya) pada proses Pi.
Gambar 2.14 Sisi alokasi.
Berikut ini contoh graph alokasi sumber daya yang terdiri dari 7 simpul:
V = {P0, P1, P2, P3, R0, R1, R3},
Dan memiliki 5 sisi:
E={P0 -> R0, R0 -> P1, R1 -> P1, R2 -> P0, R2 ->P2}.
14
2. R0 memberikan sumber dayanya kepada P1.
3. R1 memberikan salah satu sumber dayanya kepada P1.
4. R2 memberikan salah satu sumber dayanya kepada P0.
5. R2 memberikan salah satu sumber dayanya kepada P2.
Setelah suatu proses mendapatkan semua sumber daya yang diperlukan maka, sumber daya
tersebut dilepas dan digunakan oleh proses lain.
Gambar 2.15 Graph alokasi sumber daya tiga proses dan empat sumber daya.
2.3 Definisi Sistem Operasi
Secara umum Sistem Operasi adalah suatu sistem yang terdiri dari komponen-komponen kerja
dengan memuat metode kerja yang digunakan untuk memanfaatkan mesin, sehingga mesin dapat
Sistem Operasi merupakan penghubung antara pengguna mesin dengan perangkat yang
dimiliki mesin tersebut.
Sistem operasi bertugas untuk mengendalikan (kontrol) serta mengoordinasikan penggunaan
perangkat keras untuk berbagai aplikasi untuk pengguna. Pengertian dari sistem operasi juga
dapat dlihat dari berbagai sudut pandang yaitu:
1. Dari sudut pandang pengguna, sistem operasi merupakan alat untuk mempermudah
penggunaan komputer. Sebaliknya dalam lingkungan berpengguna banyak, sistem
operasi dapat dipandang sebagai alat untuk memaksimalkan penggunaan sumber daya
komputer.
2. Dari sudut pandang sistem, sistem operasi dapat dianggap sebagai alat yang
menempatkan sumber daya secara efisien.
Sistem operasi adalah manajer bagi sumber daya, yang menangani konflik permintaan
sumber daya secara efisien. Sistem operasi juga mengatur eksekusi aplikasi dan operasi dari alat
I/O. Fungsi ini juga dikenal sebagai program pengendali. Terlebih lagi sistem operasi merupakan
suatu bagian program yang berjalan setiap saat yang dikenal dengan istilah kernel.
Dari sudut pandang tujuan sistem, sistem operasi dapat dipandang sebagai alat yang membuat
komputer lebih nyaman digunakan untuk menjalankan aplikasi dan menyelesaikan masalah
pengguna. Dan ternyata komponen-komponen dasar sistem operasi memakai implementasi dari
matematika diskrit.
Ada berbagai macam definisi sistem operasi, antara lain:
1. Sistem Opersi adalah software yang mengontrol hardware. Jadi hanya berupa program
biasa.
2. Program yang menjadikan hardware lebih mudah untuk digunakan.
3. Kumpulan program yang mengatur kerja hardware sesuai keinginan user.
4. Manajer sumber daya atau pengalokasian sumber daya komputer, seperti mengatur
memori, printer, dan lain-lain.
5. Sebagai program pengendali yaitu, program yang digunakan untuk mengontrol
16
6. Sebagai kernel, yaitu program yang terus menerus running selama komputer
dihidupkan.
7. sebagai guardian yang menjaga komputer dari berbagai kejahatan komputer.
Definisi Deadlock
Menurut arti katanya deadlock adalah kebuntuan. Dalam sistem operasi kebuntuan yang
dimaksud adalah kebuntuan proses sehingga deadlock digunakan untuk penyebutan terhadap
suatu kondisi permanen dimana proses tidak dapat berjalan ataupun tidak ada komunikasi lagi
antar proses.
Secara sederhana deadlock didefinisikan sebagai suatu kondisi dimana sistem tidak
berjalan lagi karena adanya proses yang saling menunggu.
Contoh deadlock pada sebuah jembatan:
Gambar 2.16 Deadlock pada jembatan
Gambar diatas menunjukkan terjadinya deadlock. Kedua mobil dari sisi bawah gambar
Contoh deadlock pada rel kereta api:
Gambar 2.18 Deadlock pada rel kereta api.
Kedua kereta tidak dapat berjalan karena keduanya saling menunggu kereta lain agar
dapat lewat sehingga terjadi deadlock.
2.4.1 Model Sistem
Untuk memodelkan kondisi deadlock, maka bayangkan sebuah sistem dengan:
1. Sekumpulan proses, P = {P1, P2, ..., Pn}
2. Sekumpulan tipe sumber daya yang berbeda, R = {R1, R2, ..., Rm}
3. Sumber daya Ri memiliki n bagian (instans) yang identik dan masing-masing
digunakan.
Pada model operasi normal, sebuah proses menggunakan sumber daya dengan urutan
sebagai berikut:
1. Mengajukan permohonan (request): Bila permohonan tidak dapat dikabulkan dengan
segera (misal karena sumber daya sedang digunakan proses lain), maka proses itu harus
menunggu sampai sumber daya yang dimintanya tersedia.
18
3. Melepaskan sumber daya (relase): Setelah proses menyelesaikan penggunaan sumber
daya, maka sumber daya harus dilepaskan sehingga dapat digunakan oleh proses lain.
2.4.2 Sumber daya
Deadlock bisa terjadi pada saat proses akan mengakses obyek secara tidak semestinya. Obyek
tersebut dinamakan sumber daya. Sumber daya ada dua jenis, yaitu:
1. Preemptable (dapat diambil). Sumber daya dikatakan preemptable jika sumber daya
tersebut dapat diambil (dilepas) dari proses yang sedang memakainya tanpa memberi
efek apapun pada proses tersebut. Salah satu contoh preemptable adalah memori.
Sebagai contoh, andaikan suatu sistem terdiri atas 512K user memori, satu printer,
dan 2 proses masing-masing berukuran 512K dan ingin mencetak sesuatu. Proses A
meminta printer dan mendapatkannya. Kemudian proses A tersebut segera
menghitung suatu nilai yang akan dicetak. Sebelum ia selesai menghitung nilai
tersebut, waktu yang diberikan ke proses tersebut telah habis sehingga proses A harus
di swapped-out (ditukar keluar)
Sekarang proses B mulai berjalan dan mencoba untuk mendapatkan printer, namun
gagal karena printer telah dibawa oleh proses A. Hal ini sangat potensial untuk terjadi
deadlock, sebab proses A membawa printer dan proses B menempati memori.
Untungnya, karena memori bersifat preemptable (dapat diambil) dari proses B dengan
cara swapped-out (ditukar keluar) proses B dan swapped-in (ditukar masuk) proses A
ke memori, maka proses A dapat segera diselesaikan, sehingga tidak akan terjadi
deadlock.
2. Nonpreemtable (tidak dapat diambil). Pada sumber daya jenis ini, sumber daya tidak
dapat diambil dari proses yang sedang membawanya karena akan menimbulkan
kegagalan komputasi. Printer adalah salah satu contohnya. Jika suatu proses sedang
menggunakan printer untuk mencetak sesuatu, maka printer tersebut tidak dapat
2.4.3 Penyebab dan penanggulangan Deadlock
Menurut Coffman(1971) ada empat kondisi yang dapat menyebabkan terjadinya deadlock, yaitu:
1. Mutual Exclusion adalah suatu kondisi dimana hanya ada satu proses yang boleh
memakai sumber daya, dan proses lain yang ingin memakai sumber daya tersebut
harus menunggu hingga sumber daya tadi dilepaskan atau tidak ada proses lain yang
memakai sumber daya tersebut.
2. Hold and Wait adalah suatu proses yang menahan sedikitnya satu sumber daya yang
sedang waiting (menunggu) untuk memperoleh sumber daya tambahan dengan
berpegang pada proses lain.
3. No Preemption adalah suatu sumber daya yang dapat dilepaskan hanya dengan
sukarela oleh proses yang memegangnya, setelah proses menyelesaikan tugasnya.
4. Circular Wait adalah kondisi seperti rantai, yaitu sebuah proses membutuhkan sumber
daya yang dipegang proses berikutnya.
Ada empat cara penanggulangan deadlock:
1. Penngabaikan masalah deadlock.
2. Pendeteksian dan perbaikan.
3. Penghindaran yang terus menerus dan pengalokasian yang baik dengan
menggunakan protokol untuk memastikan sistem tidak pernah memasuki keadaan
deadlock, yaitu dengan deadlock avoide, sistem untuk mendata informasi
tambahan tentang proes mana yang akan meminta dan menggunakan sumber
daya.
4. Pencegahan yang secara struktur bertentangan dengan empat kondisi terjadinya
BAB 3
PEMBAHASAN
3.1 Pendeteksian Deadlock.
Setelah memodelkan sistem operasi kedalam bentuk graph alokasi sumber daya, dapat dilakukan
pengecekan deadlock dengan memperhatikan cycle (perputaran) pada graph tersebut. Jika tidak
ditemukan cycle (perputaran) maka dapat dipastikan sistem berada dalam kondisi aman, tidak
akan terjadi deadlock pada saat running. Namun jika ditemukan cycle (perputaran) pada graph
alokasi sumber daya belum tentu terjadi deadlock, sistem dikatakan berpotensi mengalami
deadlock.
Hal-hal yang terjadi dalam mendeteksi adanya deadlock adalah:
1. Permintaan sumber daya dikabulkan selama mungkin.
2. Sistem operasi memeriksa adakah kondisi circular wait secara periodik.
3. Pemeriksaan adanya deadlock dapat dilakukan setiap ada sumber daya yang
hendak digunakan oleh sebuah proses.
4. Memeriksa dengan algoritma tertentu.
Graph alokasi sumber daya dengan simpul sumber daya Rj hanya memilki satu instants
dan ditemukan cycle (perputaran) maka dapat dipastikan sistem akan mengalami deadlock.
3.1.1 Algoritma Deteksi Deadlock
Pemeriksaan deadlock dapat dilakukan setiap kali terjadi permintaan sumber daya, tergantung
pada besarnya kemungkinan deadlock akan terjadi. Pemeriksaan setiap kali adanya permintaan
incremental ke state sistem itu. Di lain pihak, pemeriksaan sesering itu akan menghabiskan waktu
prosesor.
Algoritma ini menggunakan matriks alokasi dan vektor yang tersedia, dan juga harus
ditentukan matriks permintaan Q sehingga qij merepresentasikan jumlah sumber daya yang
berjenis j yang diminta oleh proses i. Algoritma berlangsung dengan menandai proses yang tidak
ber-deadlock. Pada saat awal, semua proses tidak bertanda. Kemudian dilakukan
langkah-langkah berikut ini:
1. Tandai setiap proses yang memiliki baris dalam matriks alokasi yang seluruhnya nol.
2. Inisialisasi vektor W sehingga sama dengan vektor available (tersedia).
3. Temukan suatu indeks i sehingga proses i yang saat itu tidak bertanda dan baris ke-i
pada Q lebih kecil atau sama dengan W. Apabila baris seperti itu tidak ditemukan,
hentikan algoritma tersebut.
4. apabila baris seperti itu ditemukan, tandai proses i dan tambahkan baris matriks
alokasi yang bersangkutan ke W yaitu memasang Wk = Wk + Aik. Kembali kelangkah
3.
Deadlock dapat terdeteksi bila terdapat proses yang tidak bertanda pada akhir algoritma.
Algoritma ini mencari proses yang permintaan sumber dayanya dapat dipenuhi dengan sumber
daya yang tersedia, dan kemudian mengasumsikan bahwa sumber daya-sumber daya itu
diberikan dan proses akan berjalan sampai selesai dan melepaskan sumber dayanya. Kemudian
algoritma akan mencari proses-proses lainnya yang akan dipenuhi. Tetapi algoritma ini tidak
dapat menjamin untuk mencegah deadlock, karena akan bergantung pada urutan pemberian
permintaan.
Bila setiap sumber daya hanya memiliki satu instans (bagian), maka algoritma untuk
mendeteksi deadlock dapat menggunakan graph tunggu.
3.1.2 Pendeteksian dengan Graph tunggu
21
Untuk mengubah graph alokasi sumber daya menjadi graph tunggu digunakan
[image:34.612.224.396.132.293.2]langkah-langkah sebagai berikut:
Gambar 3.1 Graph alokasi sumber daya empat proses tiga sumber daya .
1. Cari sumber daya Rm yang memberikan instans (bagian) pada Pi dan Pj yang meminta
sumber daya pada Rm.
2. Hilangkan sumber daya Rm dan hubungkan sisi Pi dan Pj dengan arah yang
bersesuaian yaitu Pj -> Pi.
3. Lihat apakah terdapat cycle (perputaran) pada graph tunggu. Deadlock terdeteksi
apabila pada graph tunggu terdapat cycle (perputaran).
Untuk mendeteksi deadlock, sistem perlu membuat graph tunggu dan secara berkala
3.2 Pencegahan Deadlock
Bila salah satu dari empat kondisi yang dapat menyebabkan deadlock dapat dicegah, maka
deadlock tidak akan terjadi. Antara lain:
1. Mutual Exclusion. Pada kondisi ini, harus tetap menjaga sumber daya yang tidak
dapat digunakan secara bersamaan, misalkan pemakaian printer tidak boleh dilakukan
secara simultan oleh beberapa proses. Lain halnya dengan sumber daya yang dapat
digunakan secara bersamaan. Sumber daya ini tidak membutuhkan mutual exclusive,
dan tidak akan menyebabkan terjadinya deadlock.
2. Hold and wait. Aturan pertama untuk menjamin bahwa kondisi ini tidak pernah
terjadi pada sistem adalah dengan menjamin bahwa setiap proses yang meminta
sumber daya tidak sedang memegang sumber daya. proses akan diberikan seluruh
sumber daya yang dibutuhkannya sebelum proses memulai eksekusinya.
Aturan kedua adalah dengan mengharuskan setiap proses yang hendak meminta
sumber daya tambahan untuk terlebih dahulu melepaskan sumber daya yang sedang
dipegangnya (bila ada).
Untuk mengilustrasikan perbedaan di antara kedua protokol ini, misalkan terdapat
sebuah proses yang menyalin data dari disket ke harddisk, kemudian mencetaknya ke
printer.
Untuk aturan pertama, maka proses akan diberikan hak untuk menggunakan disk
drive, harddisk, dan printer sepanjang masa eksekusinya walaupun pada tahap akhir
eksekusi, proses hanya membutuhkan printer.
Untuk aturan kedua, awalnya proses hanya akan diberikan hak untuk menggunakan
disk drive dan harddisk. Setelah proses penyalinan selesai, proses harus terlebih
dahulu melepaskan penggunaan disk drive dan harddisk, baru kemudian mengajukan
permohonan untuk menggunakan harddisk dan printer. Kedua aturan ini memiki 2
kekurangan: Utilisasi sumber daya akan menjadi lebih rendah karena sumber daya
23
menyebabkan beberapa proses untuk menunggu dalam waktu yang lama karena
sumber daya selalu dialokasikan ke proses lainnya.
3. No preemption. Sumber daya yang telah dialokasikan tidak boleh disela untuk
digunakan oleh proses lain. Untuk menjamin hal ini maka digunakan aturan berikut.
Bila proses A yang sedang memegang beberapa sumber daya meminta penggunaan
sumber daya Rj yang sedang digunakan oleh proses B, maka seluruh sumber daya
yang sedang dipegang oleh proses A harus dilepaskan. Proses A akan dijalankan
kembali bila proses A dapat memperoleh penggunaan akan seluruh sumber daya yang
semula dipegangnya dan juga sumber daya Rj. Alternatif lain adalah dengan
memeriksa apakah proses B (yang sedang memegang hak penggunaan sumber daya
Ri) juga sedang menunggu sumber daya yang dipegang proses lain. Bila proses B
ternyata sedang menunggu, maka penggunaan sumber daya Ri oleh proses B dapat
disela, dan sumber daya Ri dialokasikan ke proses A. Aturan ini hanya berlaku untuk
sumber daya yang keadaannya dapat disimpan dan dikembalikan dengan mudah
ketika proses akan dijalankan kembali.
4. Circular wait. Memberi nomor pada setiap sumber daya yang ada, dan setiap proses
hanya boleh mengakses beberapa sumber daya secara berurutan. Misalkan sumber
daya: R1, R2, R3, R4, R5. Jika P0 mengakses R2, maka P0 hanya boleh minta ijin untuk
mengakses R3, R4, atau R5. Jika P1 sedang mengakses R3, maka P1 hanya boleh
meminta ijin untuk mengakses R4 atau R5.
Berikut ini dipaparkan metode yang dapat dipakai untuk mencegah deadlock jika sumber
daya hanya memiliki satu instans (bagian). Pada metode ini ada komponen tambahan pada sisi
yaitu claim edge. Sama halnya dengan sisi yang lain, menghubungkan antar sumber daya dan
proses.
Claim edge Pi -> Rj berarti bahwa proses Pi akan meminta sumber daya Rj pada suatu
waktu. Claim edge sebenarnya merupakan sisi yang digambarkan sebagai gari putus-putus.
Ketika proses Pi memerlukan sumber daya Rj, claim edge diubah menjadi sisi permintaan. Dan
Gambar 3.3 Graph alokasi sumber daya status aman
Gambar diatas menunjukkan bahwa sistem dalaam keadaan aman. Pada saat ini R1 sedang
tidak mengalokasikan sumber dayanya, sehingga P1 dapat memperoleh sumber daya R1. Tetapi
jika claimed edge diubah menjadi sisi permintaan dan kemudian diubh menjadi sisi alokasi, maka
hal ini dapat menyebabkan terjadinya cycle (perputaran).
Jika tidak ada cycle (perputaran) dalam graph, maka sistem berada dalam status aman.
Tetapi jika perputaran ditemukan maka sistem berada dalam status tidak aman. Pada saat status
tidak aman ini, proses Pi harus menunggu sampai permintaan sumber dayanya dipenuhi.Gambar
berikut menunjukkan bahwa sistem dalam keadaan tidak aman.
25
3.3 Pemulihan dari Deadlock
3.3.1 Terminasi Proses
Untuk melakukan terminasi proses, terdapat dua metode. Pada kedua metode ini, sistem akan
mengambil kembali seluruh sumber daya yang sedang dipegang oleh proses yang diterminasi.
1. Menghentikan seluruh proses yang mengalami deadlock. Metode ini akan memecahkan
siklus deadlock, tetapi memiliki cost (kerugian) yang cukup besar. Ada kemungkinan
bahwa proses yang dihentikan merupakan proses yang telah dikomputasi untuk waktu
lama sehingga ketika proses dihentikan, hasil komputasi tersebut menjadi hilang.
2. Menghentikan proses satu per satu sampai siklus deadlock terpecahkan. Metode ini
memerlukan waktu overhead (tambahan) yang cukup lama karena setiap kali proses
dihentikan, algoritma deteksi harus dipanggil untuk menentukan apakah masih ada siklus
yang menyebabkan deadlock.
3.3.2 Menyela Penggunaan Sumber daya
Untuk memulihkan sistem dari deadlock, maka sumber daya-sumber daya yang sedang dipegang
oleh proses-proses yang mengalami deadlock akan disela, dan diberikan pada proses lain. Tiga
hal ini yang harus dipertimbangkan untuk menyela penggunaan sumber daya:
1. Pemilihan Sumber daya
Urutan sumber daya yang akan disela harus dipilih untuk meminimalkan cost
(kerugian). Faktor yang mempengaruhi cost (kerugian) antara lain adalah jumlah
sumber daya yang dimiliki proses dan lamanya proses telah berjalan.
Bila sumber daya disela dari proses, maka proses tidak dapat melanjutkan
eksekusinya. Proses harus dikembalikan ke keadaan aman terakhirnya, dan dijalankan
kembali dari keadaan tersebut. Untuk itu sistem harus mempertahankan informasi
mengenai keadaan setiap proses. Karena tidak mudah untuk menentukan letak
keadaan aman, maka solusi yang paling mudah adalah dengan menjalankan kembali
proses dari awal.
3. Starvasi
Bila pemilihan sumber daya yang akan disela hanya didasarkan pada cost (kerugian),
maka proses dengan prioritas rendah dapat terus-menerus mengalami penyelaan.
Untuk mengatasi masalah ini, setiap proses harus dibatasi supaya hanya dapat disela
sejumlah tertentu saja. Untuk itu, maka jumlah eksekusi kembali (rollback) harus
disertakan sebagai faktor untuk menghitung cost (kerugian) proses.
Setelah deadlock terdeteksi, maka diperlukan beberapa strategi untuk keperluan pemulihan.
Pendekatan-pendekatan yang diterapkan dan berdasarkan peningkatan kecanggihannya:
1. Gagalkan semua proses yang ber-deadlock. Pendekatan ini, merupakan salah satu
solusi yang paling umum digunakan.
2. Buatlah back-up proses ber-deadlock ke checkpoint yang telah ditetapkan
sebelumnya, dan mulailah lagi semua proses.
3. Batalkan proses-proses ber-deadlock secara berurutan sampai deadlock tidak ada
lagi. Urutan pemilihan proses untuk pembatalan harus didasarkan pada berbagai
kriteria yang berisiko terkecil. Setiap kali pembatalan dilakukan, algoritma deteksi
harus dilakukan untuk mengetahui apakah deadlock masih ada atau tuidak.
4. Melakukan Preemption sumber daya secara berurutan sampai deadlock tidak ada
lagi. Seperti pada pendekatan tiga, perlu digunakan pemilihan berdasarkan risiko,
dan pemanggilan algoritma deteksi setelah setiap kali preemption diperlukan.
Suatu proses yang memiliki sumber daya yang diambil ahli darinya harus di
rollback ke titik sebelum sumber daya itu diperoleh.
27
1. Paling sedikit menghabiskan waktu prosesor sejauh ini.
2. Paling sedikit jumlah output yang dihasilkannya sejauh ini.
3. Diperkiraan paling banyak memiliki sisa waktu.
4. Paling sedikit jumlah sumber daya yang dialokasikan sejauh ini.
5. Memiliki prioritas paling rendah.
Sebagian kuantitas-kuantitas diatas lebih mudah diukur bila dibandingkan kuantitas
lainnya. Waktu estimasi yang tersisa merupakan kuantitas yang paling mudah diukur. Selain
ukuran prioritas, tidak ada indikasi risiko bagi pengguna sebagai kebalikan dari risiko bagi sistem
secara keseluruhan.
3.4 Penghindaran Deadlock
Bila metode pencegahan lebih menekankan pada cara menangani permintaan sehingga keempat
kondisi yang dapat menyebabkan deadlock tidak terjadi secara bersamaan, maka metode
penghindaran memerlukan informasi tambahan dari proses mengenai bagaimana sumber daya
akan diminta.
Pada sistem kebanyakan permintaan terhadap sumber daya dilakukan sebanyak sekali
saja. Sistem harus dapat mengetahui bahwa sumber daya itu aman atau tidak, dengan kata lain
tidak berpotensi terjadi deadlock sehingga dapat dialokasikan. Ada dua cara untuk menghindari
deadlock yaitu:
1. Jangan memulai suatu proses apabila kebutuhan proses tersebut akan menyebabkan
deadlock.
2. Jangan memberikan kesempatan pada suatu proses untuk meminta sumber daya lagi
apabila alokasinya akan menyebabkan deadlock.
Jadi diadakan dua kali penjagaan agar tidak sampai terjadi deadlock, yaitu saat
pengalokasian awal dan saat suatu proses meminta sumber daya. Penghindaran deadlock
dilakukan dengan cara memastikan bahwa program memiliki maksimum permintaan, sehingga
mengalokasikan sumber daya pada setiap proses sampai pada batas maksimumnya dengan urutan
tertentu.
Pada saat sebuah proses mengajukan permintaan untuk menggunakan sumber daya yang
tersedia, maka algoritma penghindaran akan bekerja dengan mendeteksi apakah alokasi yang
diberikan dapat menyebabkan sistem dalam safe state. Jika benar maka sumber daya akan
dialokasikan untuk proses tersebut, tetapi jika tidak maka permintaan akan ditolak.
Sebuah sistem berada dalam keadaan safe state bila terdapat safe seqeunce dimana proses
yang memerlukan sumber daya dapat ditangani. Urutan {P1, P2, ...,Pn} adalah aman bila jumlah
sumber daya yang dibutuhkan untuk setiap Pi dapat dipenuhi oleh jumlah sumber daya yang
tersedia, dan jumlah sumber daya yang sedang digunakan oleh proses Pj adalah j < i. Bila P1
selesai menggunakan sumber daya dan melepaskannya maka P2 dapat menggunakan sumber daya
yang dilepas oleh P1. Bila kebutuhan sumber daya P2 dapat dipenuhi oleh sumber daya yang
sedang digunakannya dan sumber daya yang dilepas oleh P1, maka P2 dapat menyelesaikan
tugasnya dan melepas sumber daya yang digunakannya untuk digunakan oleh P3, dan seterusnya.
Contoh untuk tiga proses yang menggunakan empat sumber daya yang serupa dalam
suatu sistem.
1. Contoh safe state
Tabel 3.1 Tabel contoh safe state
Proses Sumber daya yang sedang dipegang klaim maksimum
P1 1 2
P2 1 3
P3 1 4
29
Tabel contoh safe tersebut memperlihatkan keadaan sistem dimana terdapat satu sumber
daya yang belum digunakan. Pada kolom ketiga memberikan jumlah maksimum sumber daya
yang mungkin dibutuhkan oleh setiap proses. P2 sedang menggunakan satu sumber daya tetapi
dapat membutuhkan hingga tiga sumber daya. Karena hanya satu sumber daya yang tersedia saat
ini, maka safe sequence(berurutan) tidak dapat dimulai dengn P2. Hal yang sama berlaku untuk
P3. Sehingga P1 yang akan dijalankan telebih dahulu karena satu sumber daya yang belum
dialokasikan bila dijumlahkan dengan jumlah sumber daya yang sedang digunakan P1 dapat
memenuhi jumlah maksimum sumber daya yang dibutuhkan oleh P1. Setelah P1 selesai maka dua
sumber daya yang dilepas oleh P1 dapat digunakan oleh P2. Setelah P2 selesai, maka P3 dapat
menggunakan sumber daya yang dilepas oleh P2. Safe seqeunce(berurutan) untuk kondisi ini
adalah {P1, P2, P3}.
2. Contoh unsafe state
Tabel 3.2 Tabel contoh unsafe state
Proses Sumber daya yang sedang dipegang klaim maksimum
P1 1 2
P2 1 4
P3 1 4
Sumber daya yang belum dialokasikan 1
Tabel tersebut memberikan kondisi yang sedikit berbeda, yaitu jumlah maksimum sumber
daya yang dibutuhkan P2 lebih besar. P1 akan dijalankan terlebih dahulu seperti contoh satu.
dibutuhkannya tidak dapat dipenuhi. Begitu juga yang terjadi dengan P3, sehingga tidak ada safe
sequence (berurutan) untuk kondisi ini dan dapat berisiko untuk terjadinya deadlock.
3.5 Contoh pendeteksian Deadlock
Berikut ini adalah contoh pendeteksian deadlock:
1. Graph dengan deadlock
Graph alokasi sumber daya dengan tiga proses dan empat sumber daya, dimana pada graph
tersebut ditemukan cycle (perputaran) yang berpotensi menimbulkan deadlock,
cycle yang pertama yaitu R2 -> P0 -> R0 -> P1 -> R1 -> P2 -> R2,
cycle yang kedua yaitu R2 -> P1 -> R1 -> P2 -> R2.
Gambar 3.5 Graph alokasi sumber daya dengan deadlock.
Pada graph tersebut semua sumber daya memiliki satu instans (bagian) kecuali sumber daya
31
2. R0 mengalokasikan sumber dayanya pada P1.
3. P1 meminta sumber daya R1.
4. R1 mengalokasikan sumber dayanya pada P2.
5. P2 meminta sumber daya R2.
6. R2 mengalokasikan sumber dayanya pada P0 dan P1.
7. R3 mengalokasikan sumber dayanya pada P2.
Hal - hal tersebut dapat menyebabkan terjadinya deadlock karena:
1. P0 memerlukan sumber daya R0 untuk menyelesaikan prosesnya.
2. Sedangkan R0 dialoksikan untuk P1.
3. P1 memerlukan sumber daya R1.
4. Sedangkan R1 dialokasikan untuk P2.
5. P2 memerlukan sumber daya R2.
6. Sedangkan R2 mengalokasikan sumber dayanya pada P0 dan P1.
Sehingga tidak ada satupun dari proses-proses tersebut yang dapat menyeleaikan tugasnya
sebab sumber daya yang diperlukan sedang digunakan oleh proes lain. Sedangkan proses lain
juga memerlukan sumber daya lain. Semua sumber daya yang diperlukan oleh suatu proses tidak
dapat dipenuhi sehingga proses tersebut tidak dapat melepaskan sumber daya yang dialokasikan
kepadanya. Hal ini menyebabkan proses saling tunggu-menunggu, sehingga tidak dapat berakhir.
2. Graph tanpa deadlock
Graph alokasi sumber daya dengan empat proses dan tiga sumber daya, dimana pada graph
tersebut ditemukan cycle (perputaran) tetapi tidak berpotensi terjadinya deadlock, graph hanya
Gambar 3.6 Graph alokasi sumber daya tanpa deadlock
Graph tersebut menunjukkan beberapa hal tentang sistem yaitu:
1. P0 meminta sumber daya R1.
2. R1 mengalokasikan sumber dayanya pada P2.
3. P2 meminta sumber daya R0.
4. R0 mengalokasikan sumber dayanya pada P3
5. P3 meminta sumber daya R2.
6. R0 mengalokasikan sumber dayanya pada P3
7. R1 mengalokasikan sumber dayanya pada P1.
Hal ini tidak menyebabkan deadlock walaupun terdapat cycle (perputaran) sebab semua
sumber daya yang diperlukan P1 dapat terpenuhi sehingga P1 dapat melepaskan semua sumber
BAB 4
KESIMPULAN DAN SARAN
4.1 Kesimpulan
Berdasrkan hasil penelitian dari pembahasan pada bab-bab sebelumnya dapat diambil
kesimpulan:
1. Deadlock dapat dideteksi dengan menggunakan pendekatan graph dengan cara
memodelkan sistem kedalam graph alokasi sumber daya, dan apabila terdapat cycle
(perputaran) akan berpotensi terjadi deadlock.
2. Jika sumber daya hanya terdapat satu instans (bagian), maka deadlock dapat dideteksi
dengan graph tunggu yang didapat dengan mengubah graph alokasi sumber daya menurut
langkah-langkahnya.
3. Deadlock dapat dicegah bila salah satu dari empat kondisi (mutual exclusion, hold and
wait, no preemption, circular wait) yang menyebabkan deadlock dapat dihindari.
4. Pencegahan deadlock dapat juga dilakukan dengan menambahkan claim edge pada graph
jika sumber daya hanya menunyai satu instans (bagian). Claim edge Pi -> Rj yang berarti
bahwa proses i meminta sumber daya j, dimana claim edge diubah menjadi sisi
permintaan dan setelah proses Pi selesai menggunakan sumber daya Rj, maka sisi alokasi
Saran
Pendeteksian dan pencegahan deadlock pada sistem operasi dapat dilakukan secara manual,
tetapi dengan jumlah proses dan sumber daya yang terbatas. Maka, lebih efisien bila
35
DAFTAR PUSTAKA
Ayuningsih, T.Y. 2007. Aplikasi graph dalam pendeteksian deadlock. ITB Bandung.
Hariningsih, S. P. 2003. Sistem operasi. Edisi ke1, Yogyakarta: Graha Ilmu.
Kusumadewi, S. 2002. Sistem operasi. Edisi ke2, Yogyakarta: Graha Ilmu.
Muliati, M. 2007. Pemakaian graph untuk pendeteksian dan pencegahan deadlock
pada sistem operasi. ITB Bandung.
Munir, R. 2001. matematika diskrit. Bandung: Informatika Bandung.
Pangera, A. A. dan Arius, D. 2005. Sistem operasi. Edisi ke1. Yogyakarta:
Andi.
Stallings, W. 2003. Sistem operasi. Terjemahan: Gurnita Priatna dan Bagio Budiarjo. Jakarta: