Diagram Graf
4.8. Diagram Graf
System komputer terdiri dari berbagai macam resources(sumber daya, diantaranya:
1. Phisical (Device, Memory)
2. Logical (Lock, Database record)
3. OS internal (PCB Slots)
4. Aplication level (File/Berkas) Diantara resource tersebut ada yang preemptable dan ada juga yang tidak. Resource-resource ini akan digunakan
oleh proses - proses yang membutuhkannya. Mekanisme hubungan dari proses - proses dan resource yang dibutuhkan/digunakan dapat di diwa kilkan dengan dengan graf.
Graf adalah suatu struktur diskret yang terdiri dari vertex dan sisi, dimana sisi menghubungkan vertex-vertex yang ada. Berdasarkan tingkat kompleksitasnya, graf dibagi menjadi dua bagian, yaitu simple graf dan multigraf. Simpel graf tidak mengandung sisi paralel (lebih dari satu sisi yang menghubungkan dua vertex yang sama). Berdasarkan arahnya graf dapat dibagi menjadi dua bagian yaitu graf berarah dan graf tidak berarah. Graf berarah memperhatikan arah sisi yang menghubungkan dua vertex, sedangkan graf tidak berarah tidak memperhatikan arah sisi yang menghubungkan dua vertex.
Dalam hal ini akan dibahas mengenai implementasi graf dalam sistem operasi. Salah satunya dalah graf alokasi sumber daya. Graf alokasi sumber daya merupakan graf sederhana dan graf berarah. Graf alokasi sumber daya adalah bentuk visualisasi dalam mendeteksi maupun menyelesaikan masalah. deadlock.
4.8.1. Komponen Graf Alokasi Sumber Daya
Pada dasarnya graf G= (V, E) terdiri dari 2 komponen yaitu vertex dan sisi. Untuk graf alokasi sumber daya, vertex maupun sisinya dibedakan menjadi beberapa bagian.
Gambar 4-24. Proses Pi
Sumber: Silberschatz, "Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003 Vertex terdiri dari dua jenis, yaitu:
1. Proses P= {P0, P1, P2, P3, , Pi, , Pm}. Terdiri dari semua proses yang ada di sistem. Untuk proses, vertexnya digambarkan sebagai lingkaran dengan nama prosesnya.
2. Sumber daya R= {R0, R1, R2, R3, , Rj, , Rn}. Terdiri dari semua sumber daya yang ada di sistem. Untuk sumber daya, vertexnya digambarkan sebagai segi empat dengan instans yang dapat dialokasikan serta nama sumber dayanya.
Dalam hal ini jumlah proses dan sumber daya tidak selalu sama.
Gambar 4-25. Sumber daya Rj dengan 2 instans
Sumber: Silberschatz, "Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003 Sisi, E={Pi-> Rj, , Rj-> Pi, } terdiri dari dua jenis, yaitu:
Gambar 4-26. Proses Pi meminta sumber daya Rj
Sumber: Silberschatz, "Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003
1. Sisi permintaan: Pi -> Rj Sisi permintaan menggambarkan adanya suatu proses Pi yang meminta sumber daya Rj.
2. Sisi alokasi: Rj -> Pi. Sisi alokasi menggambarkan adanya suatu sumber daya Rj yang mengalokasikan salah satu instansnya pada proses Pi.
Gambar 4-27. Sumber daya Rj yang mengalokasikan salah satu instansnya pada proses Pi
Sumber: Silberschatz, "Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003 Pada graf di atas terdiri dari 7 vertex, V={P0, P1, P2, P3, R0, R1, R3} dan 5 sisi, E= {P0->R0, R0->P1, R1->P1,
R2->P0, R2->P2}. Gambar 4-28 menunjukkan beberapa hal:
1. P0 meminta sumber daya dari R0.
2. R0 memberikan sumber dayanya kepada P1.
3. R1 memberikan salah satu instans sumber dayanya kepada P1.
4. R2 memberikan salah satu instans sumber dayanya kepada P0.
5. R2 memberikan salah satu instans sumber dayanya kepada P2.
Gambar 4-28. Graf Alokasi Sumber Daya
Setelah suatu proses telah mendapatkan semua sumber daya yang diperlukan maka sumber daya tersebut dilepas dan dapat digunakan oleh proses lain.
4.8.2. Deteksi Deadlock Berdasarkan Graf Alokasi Sumber Daya
Penghindaran dan pencegahan deadlock dalam dilihat pada subbab sebelumnnya. yang telah menjelaskan secara cukup lengkap langkah-langkah untuk menghindari terjadinya deadlock .
Untuk mengetahui ada atau tidaknya deadlock dalam suatu graf dapat dilihat dari perputaran dan resource yang dimilikinya.
1. Jika tidak ada perputaran berarti tidak deadlock.
2. Jika ada perputaran, ada potensi terjadi deadlock.
3. Resource dengan instan tunggal DAN perputaran mengakibatkan deadlock.
Pada bagian berikut ini akan ditunjukkan bahwa perputaran tidak selalu mengakibatkan deadlock. Pada Gambar 4-29 graf memiliki perputaran dan deadlock terjadi sedangkan pada Gambar 4-30 graf memiliki perputaran tetapi tidak terjadi deadlock.
Gambar 4-29. Graf dengan deadlock
Sumber: Silberschatz, "Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003 Gambar 4-29 Terlihat bahwa ada perputaran yang memungkinkan tejadinya deadlock dan semua sumber daya
memiliki satu instans kecuali sumber daya R2. Graf di atas memiliki minimal dua perputaran:
1. R2 -> P0 -> R0 -> P1 -> R1 -> P2 -> R2
2. R2 -> P1 -> R1 -> P2 -> R2
Gambar di atas menunjukkan beberapa hal sebagai berikut:
1. P0 meminta sumber daya R0.
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 mengakibatkan deadlock sebab P0 memerlukan sumber daya R0 untuk menyelesaikan prosesnya, sedangkan R0 dialokasikan untuk P1. Di lain pihak P1 memerlukan sumber daya R1 sedangkan R1 dialokasikan untuk P2. P2 memerlukan sumber daya R2 akan tetapi R2 mengalokasikan sumber dayanya pada R3.
Dengan kata lain, tidak ada satu pun dari proses-proses tersebut yang dapat menyelesaikan tugasnya sebab sumber daya yang diperlukan sedang digunakan oleh proses lain. Sedangkan proses lain juga memerlukan sumber daya lain. Semua sumber daya yang diperlukan oleh suatu proses tidak dapat dpenuhi sehingga proses tersebut tidak dapat melepaskan sumber daya yang telah dialokasikan kepadanya. Dan terjadi proses tunggu-menunggu antarproses yang tidak dapat berakhir. Inilah yang dinamakan deadlock.
Gambar 4-30. Tanpa deadlock
Sumber: Silberschatz, "Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003 Gambar 4-30 memiliki perputaran tetapi deadlock tidak terjadi. Pada gambar di atas, graf memiliki 1 perputaran
yaitu: P0 -> R1 -> P2 -> R0 -> P3 - > R2 -> P0 Graf di atas menunjukkan beberapa hal:
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 ada perputaran sebab semua sumber daya yand diperlukan P1
dapat terpenuhi sehingga P1 dapat melepaskan semua sumber dayanya dan sumber daya tersebut dapat digunakan oleh proses lain.
4.8.3. Algoritma Graf Alokasi Sumber Daya untuk Mencegah Deadlock
Algoritma ini dapat dipakai untuk mencegah deadlock jika sumber daya hanya memiliki satu instans. Pada algoritma ini ada komponen tambahan pada sisi yaitu claimed edge. Sama halnya dengan sisi yang lain, claimed edge menghubungkan antara sumber daya dan vertex.
Claimed edge Pi -> Rj berarti bahwa proses Pi akan meminta sumber daya Rj pada suatu waktu. Claimed edge sebenarnya merupakan sisi permintaan yang digamabarkan sebagai garis putus-putus. Ketika proses Pi memerlukan sumber daya Rj, claimed edge diubah menjadi sisi permintaan. Dan setelah proses Pi selesai menggunakan Rj, sisi alokasi diubah kembali menjadi claimed edge.
Dengan algoritma ini bentuk perputaran pada graf tidak dapat terjadi. Sebab untuk setiap perubahan yang terjadi akan diperiksa dengan algoritma deteksi perputaran. Algoritma ini memerlukan waktu n 2 dalam mendeteksi perputaran dimana n adalah jumlah proses dalam sistem.
Jika tidak ada perputaran dalam graf, 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 4-31. Graf alokasi sumber daya dalam status aman
Sumber: Silberschatz, "Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003 Pada saat ini R1 sedang tidak mengalokasikan sumber dayanya, sehingga P1 dapat memperoleh sumber daya R1.
Namun, jika claimed edge diubah menjadi sisi permintaan dan kemudian diubah menjadi sisi alokasi, hal ini dapat menyebabkan terjadinya perputaran (Gambar 4-32).
Gambar 4-32. Graf alokasi sumber daya dalam status tidak aman
Sumber: Silberschatz, "Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003
4.8.4. Deteksi Deadlock dengan Menggunakan Graf Tunggu
Jika semua sumber daya hanya memiliki satu instans, deadlock dapat dideteksi dengan mengubah graf alokasi sumber daya menjadi graf tunggu. Adapun caranya sebagai berikut:
1. Cari sumber daya Rm yang memberikan instansnya 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 perputaran pada graf tunggu? Deadlock terjadi jika dan hanya jika pada graf
tunggu terdapat perputaran.
Gambar 4-33. Graf alokasi sumber daya
sumber: Silberschatz, "Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003
Gambar 4-34. Graf tunggu
sumber: Silberschatz, "Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003 Untuk mendeteksi deadlock, sistem perlu membuat graf tunggu dan secara berkala memeriksa apakah ada
perputaran atau tidak. Untuk mendeteksi adanya perputaran diperlukan operasi sebanyak n 2 , dimana n adalah jumlah vertex dalam graf alokasi sumber daya.