Bab 24. Diagram Graf 24.1. Pendahuluan Berdasarkan penjelasan sebelumnya mengenai deadlock, diperlukan suatu penggambaran tentang bentuk deadlock. Dalam hal ini graf digunakan untuk merepresentasikan hal tersebut. Deadlock adalah suatu kondisi dimana proses tidak berjalan lagi ataupun tidak ada komunikasi antar proses di dalam sistem operasi. Salah satu gambaran terjadinya deadlock, misalkan proses 1 menunggu sumber daya yang sedang dipegang oleh proses2, sedangkan proses2 itu sedang menunggu sumber daya yang dipegang oleh proses1. Jadi tidak ada satu pun proses yang bisa running, melepaskan sumber daya, atau dibangunkan. Sumber daya, proses, dan deadlock tersebut dapat digambarkan dengan graf. Sedangkan graf adalah suatu struktur diskrit yang terdiri dari simpul dan edge, dimana edge menghubungkan simpul-simpul yang ada. Berdasarkan hubungan antara edge dan simpulnya, graf dibagi menjadi dua, yaitu graf sederhana dan graf tak-sederhana. Berdasarkan arahnya graf dapat dibagi menjadi dua yaitu graf berarah dan graf tidak berarah. Graf berarah memperhatikan arah edge yang menghubungkan dua simpul, sedangkan graf tidak berarah tidak memperhatikan arah edge yang menghubungkan dua simpul.
Dalam Bab 24 ini akan dibahas mengenai implementasi graf dalam sistem operasi, yaitu dalam penggunaannya untuk penanganan deadlock pada sistem operasi. Diantaranya adalah graf alokasi sumber daya dan graf tunggu . Graf alokasi sumber daya dan graf tunggu merupakan graf sederhana dan graf berarah. Dua graf tersebut adalah bentuk visualisasi dalam mendeteksi masalah deadlock pada sistem operasi. Setiap sumber daya pada sistem operasi akan digunakan oleh proses-proses yang membutuhkannya.Mekanisme hubungan dari proses-proses dan sumber daya itu dapat diwakilkan dan digambarkan dengan graf alokasi sumber daya
Pengantar Sistem Operasi Komputer Mata Kuliah Sistem Operasi Semester Genap 2007/2008 “Silakan meng-copy, mengubah, dan menyebarluaskan karya ini." 1
dan graf tunggu. Dengan adanya visualisasi dari graf tersebut, maka masalah deadlock pada sistem operasi dapat dideteksi dan diselesaikan.
24.2. Komponen Alokasi Sumber Daya Graf alokasi sumber daya mempunyai komponen-komponen layaknya graf biasa. Hanya saja dalam graf alokasi sumber daya ini, vertex dibagi menjadi 2 jenis yaitu: 1. Proses . P = {P0, P1, P2, P3,.... , Pi}. P terdiri dari semua proses yang ada di sistem. Untuk proses, vertexnya digambarkan sebagai lingkaran dengan nama prosesnya. Gambar 24.1. Proses Pi
2. Resource . Sumber daya R= {R0, R1, R2, R3, ...., Rj}. R terdiri dari semua sumber daya yang ada di sistem. Untuk sumber daya, vertexnya digambarkan sebagai segi empat dengan titik di tengahnya yang menunjukkan jumlah instans yang dapat dialokasikan serta nama sumber dayanya. Gambar 24.2. Sumber daya Rj
Proses dan resource dihubungkan oleh sebuah edge (sisi). Untuk edge, terdiri dari dua jenis yaitu: 1. Edge permintaan: Pi->Rj . Edge permintaan menggambarkan adanya suatu proses Pi yang meminta sumber daya Rj
Pengantar Sistem Operasi Komputer Mata Kuliah Sistem Operasi Semester Genap 2007/2008 “Silakan meng-copy, mengubah, dan menyebarluaskan karya ini." 2
Gambar 24.3. Proses Pi meminta sumber daya Rj
2. Edge Alokasi Sumber Daya: Rj->Pi. Edge alokasi sumber daya menggambarkan adanya suatu sumber daya Rj yang mengalokasikan sumber dayanya pada Pi Gambar 24.4. Resource Rj meminta sumber daya Pi
Setelah mengetahui bentuk vertex dan edge yang digunakan, kita akan lihat bagaimana salah satu contoh penggunaan graf alokasi sumber daya. Gambar 24.5. Contoh graf alokasi sumber daya Graf diatas terdiri dari 6 vertex dan 5 edge, V= {P0, P1, P2, R0, R1, R2}
Pengantar Sistem Operasi Komputer Mata Kuliah Sistem Operasi Semester Genap 2007/2008 “Silakan meng-copy, mengubah, dan menyebarluaskan karya ini." 3
E = {P0-> R0, R0-> P1, R1-> P1, R2-> P0, R2-> P2}. Keterangan Graf diatas : 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 Setelah suatu proses telah mendapatkan semua sumber daya yang diperlukan maka sumber daya tersebut dilepas dan dapat digunakan oleh proses lain.Sebuah proses menggunakan resource dengan urutan sebagai berikut: 1. Mengajukan permohonan (request).Bila Permohonan tidak dapat dikabulkan dengan segera (misal karena resource sedang digunakan oleh proses lain), maka proses itu harus menunggu sampai resource yang dimintanya tersedia. 2. Menggunakan resource (use).Proses dapat menggunakan resource, misal : printer untukmencetak, disk drive untuk melakukan operasi M/K , dan sebagainya . 3. Melepaskan resource (release). Setelah proses menyelesaikan penggunaan resource, maka resource harus dilepaskan sehingga dapat digunakan oleh proses lain.
24.3. Metode Penghindaran Bila metode prevention lebih menekankan pada cara permintaan sehingga keempat kondisi yang dapat menyebabkan deadlock tidak terjadi bersamaan, maka metode avoidance lebih mengarah pada perlunya informasi tambahan dari proses mengenai bagaimana resource akan diminta. Pada saat sebuah proses mengajukan permintaan untuk menggunakan resource yang tersedia, maka algoritma avoidance akan bekerja dengan mendeteksi apakah alokasi yang diberikan dapat menyebabkan sistem dalam safe state. Bila keadaan hasilnya sistem safe state, maka resource akan dialokasikan untuk proses tersebut, tetapi bila sebaliknya maka permintaan akan ditolak. Sebuah sistem berada dalam safe state bila terdapat safe sequence dimana proses yang memerlukan resource dapat ditangani. Bila P1 selesai menggunakan resource dan melepaskannya, maka P2 dapat menggunakan resource yang sedang digunakannya dan resource yang dilepas oleh P1 dapat digunakan P2 untuk menyelesaikan tugasnya dan kemudian melepaskan resource untuk digunakan oleh P3, dan seterusnya. Algoritma Graf Alokasi Sumber Daya Untuk Mencegah Deadlock Algoritma ini dapat dipakai untuk mencegah deadlock jika sumber daya hanya
Pengantar Sistem Operasi Komputer Mata Kuliah Sistem Operasi Semester Genap 2007/2008 “Silakan meng-copy, mengubah, dan menyebarluaskan karya ini." 4
memiliki satu instans. Pada algoritma ini ada komponen tambahan pada edge yaitu Claimed Edge. Sama halnya dengan edge yang lain, claimed edge menghubungkan antara sumber daya dan simpul. Claimed edge Pi ---> Rj berarti bahwa proses Pi akan meminta sumber daya Rj pada suatu waktu. Claimed edge sebenarnya merupakan edge permintaan yang digambarkan sebagai garis putus-putus. Ketika proses Pi memerlukan sumber daya Rj, claimed edge diubah menjadi edge permintaan. Dan setelah proses Pi selesai menggunakan Rj, edge 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 n2 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 24.6. Graf Alokasi Sumber Daya dalam status aman
Pada
saat ini R1 sedang tidak mengalokasikan sumber dayanya, sehingga P1 dapat memperoleh sumber daya R1. Namun, jika claimed edge diubah menjadi edge permintaan dan kemudian diubah menjadi edge alokasi, hal ini dapat menyebabkan terjadinya perputaran.
Pengantar Sistem Operasi Komputer Mata Kuliah Sistem Operasi Semester Genap 2007/2008 “Silakan meng-copy, mengubah, dan menyebarluaskan karya ini." 5
Gambar 24.7. Graf dengan Deadlock
Dari gambar diatas kita dapat melihat terjadinya deadlock yang disebabkan oleh 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 P1. 1. R2 ->P0 ->R0 ->P1 -> R1 -> P2 -> R2 2. R2 -> P1-> R1 -> P2 -> R2 Gambar 24.8. Contoh Graf tanpa Deadlock
Gambar di atas menunjukkan beberapa hal sebagai berikut: 1. P0 meminta sumber daya dari R1 2. R1 memberikan sumber dayanya kepada P1 3. R1 memberikan satu instans sumber dayanya kepada P2 4. P2 meminta sumber daya pada P0 5. R0 memberikan sumber daya pada P3
Pengantar Sistem Operasi Komputer Mata Kuliah Sistem Operasi Semester Genap 2007/2008 “Silakan meng-copy, mengubah, dan menyebarluaskan karya ini." 6
6. P3 meminta sumber daya pada R2 7. R2 mengalokasikan sumber daya pada P0 Dari gambar graf tanpa deadlock diatas kita dapat melihat walaupun adanya proses yang menunggu sumber daya yang digunakan proses lain (P0 menunggu sumber daya R1 yang sedang digunakan oleh P1) pada graf namun tidak menyebabkan terjadinya deadlock.P0 memerlukan sumber daya dari R1.sedangkan R1 mengalokasikan sumber dayanya kepada P1 dan P2.pada graf diatas tidak terjadi cycle karena tiap sumber daya mempunyai 2 instan.P0 yang meminta sumber daya dari R1 akan menunggu P1 menyelesaikan prosesnya dan kemudian mengembalikan sumber daya R1 yang telah di gunakannya untuk di pakai oleh P0.
24.4. Algoritma Bankir Algoritma ini dapat digambarkan sebagai seorang bankir (resource) di kota kecil yang berurusan dengan kelompok orang yang meminta pinjaman (processes). Bankir mempertimbangkan apakah permintaan peminjam sesuai dengan jumlah dana yang ia miliki, sekaligus memperkirakan jumlah dana yang mungkin diminta lagi. Jangan sampai bankir berada pada kondisi dana habis dan tidak dapat meminjamkan uang lagi. Jika hal tersebut terjadi, maka akan terjadi kondisi unsafe yang memungkinkan terjadinya deadlock. Agar kondisi safe, diasumsikan setiap pinjaman harus dikembalikan pada waktu yang tepat. Untuk system yang memiliki sumber daya (resource) dengan banyak instan, ketika sebuah proses meminta sumber daya, proses tersebut harus menunggu keputusan system. Jika alokasi resource tersebut akan tetap menjadikan system dalam kondisi safe, maka alokasi diberikan. Jika tidak, maka proses harus menunggu hingga proses lain melepaskan sejumlah resource yang mencukupi. Ketika sebuah proses telah mendapatkan semua sumber daya yang dibutuhkan, ia harus mengembalikannya dalam suatu batasan waktu. Algoritma ini dapat ditulis secara lebih jelas sebagai berikut: Let P = {P1, P2, P3, ...., Pn} be set of all processes while P is not empty do Seek Pi, an element of P that can finish If no Pi can be found then End algorithm: state is unsafe else Remove Pi from P Return resource of Pi to allocated pool end if
Pengantar Sistem Operasi Komputer Mata Kuliah Sistem Operasi Semester Genap 2007/2008 “Silakan meng-copy, mengubah, dan menyebarluaskan karya ini." 7
end while End algorithm: state is safe
Penjelasan Algoritma: Terdapat n proses yaitu P1, P2, P3, ...., Pn. Selama masih ada proses yang aktif, dicari proses yang statusnya akan selesai. Jika ditemukan proses dengan status tersebut, maka kondisi safe. Jika tidak, maka unsafe.
Implementasi Algoritma Bankir Contoh soal: Diketahui: Set P terdiri dari 2 proses (P1 & P2). Set R terdiri dari 2 sumber daya (R1 & R2): R1 = 5 instan (a, b, c, d, e) R2 = 2 instan (f, g). Implementasikan Algoritma Bankir. Prioritas pada proses dengan indeks kecil. Setelah semua sumber daya terpenuhi, proses akan mengembalikan semua sumber daya tsb. Gambarkan kondisi saat T0 sampai Tn saat kondisi semua sumber daya sudah dikembalikan ke R masing-masing! Gambar 24.9. Jawaban soal
Pengantar Sistem Operasi Komputer Mata Kuliah Sistem Operasi Semester Genap 2007/2008 “Silakan meng-copy, mengubah, dan menyebarluaskan karya ini." 8
Keterangan diagram graf: Pada saat T0: o P1 mendapatkan 2 resource dari R1. P1 meminta 2 resource ke R1 dan 1 resource ke R2 o P2 mendapatkan 2 resource dari R1. P2 meminta 1 resource ke R1 dan 1 resource ke R2. Pada saat T1: o P1 belum mendapatkan resource yang diminta pada saat T0 dari R2, karena P1 masih belum mendapatkan seluruh resource R1, dan P1 masih meminta resource R1 (P1 masih belum mendapat alokasi dari R1 karena resource R1 tidak mencukupi untuk diberikan ke P1) o Request edge P2 ke R1 pada waktu T0 telah berubah menjadi assignment edge, karena request P2 dapat dipenuhi oleh R1. P2 juga memperoleh resource yang dimintanya pada waktu T0 dari R2. Pada saat T2: o P1 telah mendapatkan semua resource yang dimintanya dari R1, karena P2 telah melepaskan semua resource R1 yang dimilikinya o P2 telah selesai dan sudah mengembalikan semua sumber daya yang dipakai. Pada saat T3: o P1 telah melepaskan semua resource yang dimilikinya sehingga R1 dan R2 sudah mendapatkan semua resource-nya kembali dan sudah dapat digunakan oleh proses yang lain.
24.5. Metode Pendeteksian Deadlock akan terjadi, jika dan hanya jika grafik tunggu memiliki siklus di dalamnya.Untuk mendeteksi deadlock, sistem harus memiliki grafik tunggu dan menjalankan algoritma deteksi deadlock secara periodik. Hal yang harus diperhatikan adalah seberapa sering algoritma deteksi harus dipanggil. Hal tersebut tergantung dari dua faktor: 1. Frekuensi terjadinya deadlock pada umumnya 2. Jumlah proses yang akan terpengaruh ketika deadlock terjadi. Bila deadlock terjadi maka algoritma deteksi harus sering dipanggil. Resource yang dialokasikan ke proses-proses yang mengalami deadlock tidak akan digunakan sampai kondisi deadlock diatasi. Bila deadlock tidak segera diatasi maka jumlah proses yang terlibat dalam deadlock akan semakin bertambah. Salah satu ciri terjadinya deadlock adalah ketika beberapa proses mengajukan permohonan untuk resource, tetapi permohonan ini tidak dapat dipenuhi dengan segera. Sistem dapat saja memanggil algoritma deteksi setiap kali permohonan untuk resource tidak dapat diperoleh dengan segera. Namun,semakin sering algoritma deteksi dipanggil, maka waktu overhead yang dibutuhkan untuk
Pengantar Sistem Operasi Komputer Mata Kuliah Sistem Operasi Semester Genap 2007/2008 “Silakan meng-copy, mengubah, dan menyebarluaskan karya ini." 9
komputasi menjadi semakin besar. Jika semua sumber daya hanya memiliki satu instans, deadlock dapat dideteksi dengan mengubah graf alokasi sumber daya menjadi graf tunggu. Ada pun caranya sebagai berikut: Gambar 24.10. Contoh Graf Alokasi Sumber Daya yang akan diubah menjadi graf tunggu
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 edge 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.
Pengantar Sistem Operasi Komputer Mata Kuliah Sistem Operasi Semester Genap 2007/2008 “Silakan meng-copy, mengubah, dan menyebarluaskan karya ini." 10
Gambar 24.11. Contoh Graf Tunggu
Untuk mendeteksi deadlock, sistem perlu membuat graf tunggu dan secara berkala memeriksa apakah ada perputaran atau tidak. Untuk mendeteksi adanya perputaran diperlukan operasi sebanyak n2, dimana n adalah jumlah simpul dalam graf alokasi sumber daya.
24.6. Rangkuman Deadlock adalah suatu kondisi dimana proses tidak berjalan lagi ataupun tidak ada komunikasi lagi antar proses di dalam sistem operasi. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain yang sedang menunggu sumber daya yang dipegang oleh proses tersebut. Untuk mendeteksi deadlock dan menyelesaikannya dapat digunakan graf sebagai visualisasinya. Jika dalam graf terlihat adanya perputaran, maka proses tersebut memiliki potensi terjadi deadlock. Namun, jika dalam graf tidak terlihat adanya perputaran, maka proses tersebut tidak akan terjadi deadlock. Implementasi graf dalam sistem operasi, yaitu penggunaannya untuk penanganan deadlock pada sistem operasi. Di antaranya adalah graf alokasi sumber daya dan graf tunggu. Graf alokasi sumber daya dan graf tunggu merupakan graf sederhana dan graf berarah. Dua graf tersebut adalah bentuk visualisasi dalam mendeteksi masalah deadlock pada sistem operasi.
Pengantar Sistem Operasi Komputer Mata Kuliah Sistem Operasi Semester Genap 2007/2008 “Silakan meng-copy, mengubah, dan menyebarluaskan karya ini." 11
Untuk mengetahui ada atau tidaknya deadlock dalam suatu graf alokasi sumber daya dapat dilihat dari perputaran dan sumber daya yang dimilikinya. Jika tidak ada perputaran berarti tidak deadlock. Jika ada perputaran, ada potensi terjadi deadlock. Sumber daya dengan instans tunggal dan perputaran pasti akan mengakibatkan deadlock. Pada graf tunggu, deadlock terjadi jika dan hanya jika pada graf tersebut ada perputaran. Untuk mendeteksi adanya perputaran diperlukan operasi sebanyak n2, di mana n adalah jumlah simpul dalam graf alokasi sumber daya.
Rujukan [Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating Systems Concepts. Seventh Edition. John Wiley & Sons. [Tanenbaum1997] Andrew S Tanenbaum dan Albert S Woodhull. 1997. Operating Systems Design and Implementation. Second Edition. Prentice-Hall. [SistemOperasiModern2005] Ir.Riri Fitri Sari dan Yansen Darmaputra. 2005. Sistem Operasi Modern. Edisi Pertama. Penerbit Andi.
Pengantar Sistem Operasi Komputer Mata Kuliah Sistem Operasi Semester Genap 2007/2008 “Silakan meng-copy, mengubah, dan menyebarluaskan karya ini." 12