Pendeteksian Dan Pencegahan Deadlock Pada Sistem Operasi Menggunakan Pendekatan Graph Alokasi Sumber Daya.

(1)

SKRIPSI Oleh :

NENNA IRSA SYAHPUTRI 050803029

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

MEDAN 2009


(2)

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.

Dr. Saib Suwilo, M.Sc NIP 19640109 198803 1004


(3)

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-

NENNA IRSA SYAHPUTRI 050803029


(4)

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.


(5)

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.

Akhirnya, semoga tulisan ini dapat bermanfaat bagi para pembaca dan yang memerlukannya.Semoga segala bentuk bantuan yang telah diberikan kepada penulis mendapatkan balasan yang lebih baik dari Allah SWT.


(6)

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 dideteksi, dicegah, dan diselesaikan.


(7)

DEADLOCK DETECTION AND PREVENTION IN OPERATING SYSTEM USING RESOURCE ALLOCATION GRAPH

ABSTRACT

Every resource on the operating system will be used by the processes that need it. The mechanism of relationship processes and resource needed or used can be visualized into the resource allocation graph and waiting graph. Deadlock on the issue in the operating system can be detected, prevented, and resolved.


(8)

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

2.4.3 Penyebab dan Penanggulangan Deadlock 18


(9)

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


(10)

x

DAFTAR TABEL

Halaman

Tabel 3.1 Tabel contoh safe state 28


(11)

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

Gambar 3.3 Graph alokasi sumber daya status aman 24 Gambar 3.4 Graph alokasi sumber daya status tidak aman 24 Gambar 3.5 Graph alokasi sumber daya dengan deadlock 30 Gambar 3.6 Graph alokasi sumber daya tanpa deadlock 31


(12)

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 dideteksi, dicegah, dan diselesaikan.


(13)

DEADLOCK DETECTION AND PREVENTION IN OPERATING SYSTEM USING RESOURCE ALLOCATION GRAPH

ABSTRACT

Every resource on the operating system will be used by the processes that need it. The mechanism of relationship processes and resource needed or used can be visualized into the resource allocation graph and waiting graph. Deadlock on the issue in the operating system can be detected, prevented, and resolved.


(14)

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 terhadap proses tertentu.


(15)

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 dengan langkah-langkah sebagai berikut:


(16)

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}


(17)

4. Pangera dan Ariyus (2005). Permasalahan deadlock adalah bila satu set blocked processes yang memperoleh suatu sumber daya dan menunggu untuk memperoleh sumber daya yang berpegang pada proses lain dalam set tersebut.


(18)

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?


(19)

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


(20)

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.


(21)

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.


(22)

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 graph yang belum selesai digambar.


(23)

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 arahnya berbeda.


(24)

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 instans (bagian) yang dapat dialokasikan serta nama sumber daya.


(25)

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}. Graph tersebut menunjukkan bahwa:


(26)

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 bekerja sesuai dengan yang diinginkan.


(27)

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 program yang lain.


(28)

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 tidak dapat melaju, deadlock tersebut hanya dapat diatasi bila beberapa mobil mundur.


(29)

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.


(30)

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 diambil untuk mencetak sesuatu dari proses lain. Sumber daya jenis ini biasanya


(31)

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 deadlock dengan deadlock prevention, sistem untuk memastikan bahwa salah satu


(32)

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 sumber daya memilki dua keuntungan: pemeriksaan seperti ini akan menyebabkan terjadinya


(33)

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


(34)

21

Untuk mengubah graph alokasi sumber daya menjadi graph tunggu digunakan 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 memeriksa apakah ada perputaran atau tidak.


(35)

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 yang dialokasikan tidak digunakan secara optimal. Memungkinkan terjadinya


(36)

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 setelah proses Pi selesai menggunakan Rj, sisi alokasi diubah menjadi claim edge.


(37)

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.


(38)

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.


(39)

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.


(40)

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 sistem memastikan kondisinya dalam keadaan aman. Baik melakukan permintaan awal ataupun


(41)

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


(42)

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. Namun setelah P1 selesai, P2 tidak akan selesai karena jumlah maksimum sumber daya yang


(43)

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 R2, graph terebut menunjukkan beberapa hal tentang sistem yaitu:


(44)

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 memiliki satu cycle yaitu P0 -> R1 -> P2 -> R0 -> P3 -> R2 -> P0.


(45)

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 dayanya untuk digunakan proses lain.


(46)

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 diubah kembali menjadi claim edge.


(47)

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 menggunakan bahasa pemrograman tertentu untuk mencari jumlah yang lebih besar.


(48)

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: Prenhallindo.


(1)

30

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.


(2)

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 memiliki satu cycle yaitu P0 -> R1 -> P2 -> R0 -> P3 -> R2 -> P0.


(3)

32

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 dayanya untuk digunakan proses lain.


(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 diubah kembali menjadi claim edge.


(5)

34

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 menggunakan bahasa pemrograman tertentu untuk mencari jumlah yang lebih besar.


(6)

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: Prenhallindo.