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?
Gambar 2.1 Jembatan Koningsberg.
Universitas Sumatera Utara
7
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
Suatu graph G didefinisikan sebagai pasangan himpunan (V,E) dimana:
Universitas Sumatera Utara
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.
Gambar 2.4 Graph sederhana.
Universitas Sumatera Utara
9
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.
Berdasarkan jumlah simpul yang dimilikinya, graph digolongkan menjadi dua jenis:
Universitas Sumatera Utara
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.
Gambar 2.8 Graph tak berhingga.
Universitas Sumatera Utara
11
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.
Universitas Sumatera Utara
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.
Gambar 2.12 Sumber daya.
Universitas Sumatera Utara
13
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: 1. P0 meminta sumber daya dari R0.
Universitas Sumatera Utara
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.
Universitas Sumatera Utara
15
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.
Universitas Sumatera Utara
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.
Gambar 2.17 Proses C dan D deadlock terhadap sumber daya T dan U.
Universitas Sumatera Utara
17
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. 2. Menggunakan sumber daya (use): Proses dapat menggunakan sumber daya, misal: printer untuk mencetak, disk drive untuk melakukan operasi I/O, dan sebagainya.
Universitas Sumatera Utara
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 berpotensi terjadinya deadlock.
Universitas Sumatera Utara
19
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 kondisi yang penting tidak dapat menunggu.
Universitas Sumatera Utara