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
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
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 V
3
ke simpul V
1
tidak sama dengan sisi yang menghubungkan simpul V
1
kesimpul V
3
karena orientasi arahnya berbeda.
Universitas Sumatera Utara
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 = {P , P
1
, P
2
, P
3
, ..., P
i
, ..., P
m
}. Terdiri dari semua proses yang ada di sistem. Simpulnya digambarkan sebagai lingkaran dengan nama prosesnya.
Gambar berikut menunjukkan simpul untuk proses P
i.
Gambar 2.11 Proses
2. Sumber daya R = {R
, R
1
, R
2
, R
3
, ..., R
j
, ..., R
n
}. 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
Sisi graph alokasi sumber daya juga dibagi menjadi dua jenis yaitu: 1.
Sisi permintaan request edge: P
i
- R
j
, sisi yang digambarkan dengan tanda panah dari P
i
menuju R
j,
sisi permintaan menggambarkan adanya suatu proses P
i
yang meminta sumber daya R
j
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: R
j
- P
i
, sisi yang digambarkan dengan tanda panah dari R
j
menuju P
i,
sisi aloksi menggambarkan adanya suatu sumber daya R
j
yang mengalokasikan salah satu instansnya bagiannya pada proses P
i
.
Gambar 2.14 Sisi alokasi.
Berikut ini contoh graph alokasi sumber daya yang terdiri dari 7 simpul: V = {P
, P
1
, P
2
, P
3
, R , R
1
, R
3
}, Dan memiliki 5 sisi:
E={P - R
, R - P
1
, R
1
- P
1
, R
2
- P , R
2
-P
2
}. Graph tersebut menunjukkan bahwa:
1. P
meminta sumber daya dari R .
Universitas Sumatera Utara
2. R
memberikan sumber dayanya kepada P
1
. 3.
R
1
memberikan salah satu sumber dayanya kepada P
1.
4. R
2
memberikan salah satu sumber dayanya kepada P
0.
5. R
2
memberikan salah satu sumber dayanya kepada P
2
.
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
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 IO. 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
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
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 = {P
1
, P
2
, ..., P
n
} 2.
Sekumpulan tipe sumber daya yang berbeda, R = {R
1
, R
2
, ..., R
m
} 3.
Sumber daya R
i
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 IO, dan sebagainya.
Universitas Sumatera Utara
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
2.4.3 Penyebab dan penanggulangan Deadlock
Menurut Coffman1971 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
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 R
j
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 deteksi lebih awal, dan algirotma relatif sederhana karena didasarkan pada perubahan
Universitas Sumatera Utara
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 q
ij
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 W
k
= W
k
+ A
ik.
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
Jika sumber daya hanya memiliki satu instans, deadlock dapat dideteksi dengan mengubah graph alokasi sumber daya menjadi graph tunggu yang merupakan graph sederhana dan berarah.
Universitas Sumatera Utara
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 R
m
yang memberikan instans bagian pada P
i
dan P
j
yang meminta sumber daya pada R
m.
2. Hilangkan sumber daya R
m
dan hubungkan sisi P
i
dan P
j
dengan arah yang bersesuaian yaitu P
j
- P
i.
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.
Gambar 3.2 Graph tunggu
Universitas Sumatera Utara
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
starvasi. Sebuah sumber daya yang ingin digunakan oleh banyak proses dapat
Universitas Sumatera Utara
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 R
j
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 R
j
. Alternatif lain adalah dengan memeriksa apakah proses B yang sedang memegang hak penggunaan sumber daya
R
i
juga sedang menunggu sumber daya yang dipegang proses lain. Bila proses B ternyata sedang menunggu, maka penggunaan sumber daya R
i
oleh proses B dapat disela, dan sumber daya R
i
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: R
1
, R
2
, R
3
, R
4
, R
5
. Jika P mengakses R
2
, maka P hanya boleh minta ijin untuk
mengakses R
3
, R
4
, atau R
5
. Jika P
1
sedang mengakses R
3,
maka P
1
hanya boleh meminta ijin untuk mengakses R
4
atau R
5
. 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 P
i
- R
j
berarti bahwa proses P
i
akan meminta sumber daya R
j
pada suatu waktu. Claim edge sebenarnya merupakan sisi yang digambarkan sebagai gari putus-putus.
Ketika proses P
i
memerlukan sumber daya R
j
, claim edge diubah menjadi sisi permintaan. Dan setelah proses P
i
selesai menggunakan R
j
, sisi alokasi diubah menjadi claim edge
.
Universitas Sumatera Utara
Gambar 3.3 Graph alokasi sumber daya status aman
Gambar diatas menunjukkan bahwa sistem dalaam keadaan aman. Pada saat ini R
1
sedang tidak mengalokasikan sumber dayanya, sehingga P
1
dapat memperoleh sumber daya R
1
. 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 P
i
harus menunggu sampai permintaan sumber dayanya dipenuhi.Gambar berikut menunjukkan bahwa sistem dalam keadaan tidak aman.
3.4 Graph alokasi sumber daya status tidak aman.