SISTEM OPERASI Sinkronisasi dan Deadlock Proses

advertisement
SISTEM OPERASI
Sinkronisasi dan Deadlock Proses
Oleh : Mufadhol, S.Kom
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
1
Konsep Interaksi
Proses yang dijalankan pada suatu sistem
operasi dapat bekerja secara sendiri atau pun
bekerja secara bersama-sama dengan proses
yang lain, kerja sama antar proses membutuhkan
suatu mekanisme yang memperbolehkan proses
mengkomunikasikan data dengan yang lain.
Disini kita akan melihat bagaimana proses itu
berhubungan dengan proses-proses yang lain
dalam sistem operasi.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
2
Proses yang Kooperatif
Proses yang bersifat simultan (concurrent) dijalankan pada
sistem operasi dapat dibedakan menjadi 2 yaitu proses
independen dan proses kooperatif. Suatu proses dikatakan
independen apabila proses tersebut tidak dapat
terpengaruh atau dipengaruhi oleh proses lain yang
sedang dijalankan pada sistem. Berarti, semua proses
yang tidak membagi data apa pun (baik sementara/tetap)
dengan proses lain adalah independent. Sedangkan
proses kooperatif adalah proses yang dapat dipengaruhi
atau pun terpengaruhi oleh proses lain yang sedang
dijalankan dalam sistem. Dengan kata lain, proses
dikatakan kooperatif bila proses dapat membagi datanya
dengan proses lain.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
3
Alasan terjadinya Proses Kooperatif
1. Pembagian informasi: Beberapa proses dapat mengakses
beberapa data yang sama.
2. Kecepatan komputasi: Tugas yang dijalankan dapat berjalan
dengan lebih cepat jika tugas tersebut dipecah-pecah
menjadi beberapa sub bagian dan dieksekusi secara paralel
dengan sub bagian yang lain. Peningkatan kecepatan ini
dapat dilakukan jika komputer tersebut mempunyai beberapa
elemen pemrosesan, seperti CPU atau jalur M/K.
3. Modularitas: Akan lebih mudah untuk mengatur tugas yang
kompleks jika tugas tersebut dipecah menjadi beberapa sub
bagian, kemudian mempunyai proses atau thread yang
berbeda untuk menjalankan setiap sub bagian.
4. Kenyamanan: User dapat dengan mudah mengerjakan
sesuatu yang berbeda dalam waktu yang sama. Contohnya
satu user dapat mengetik, mengedit, dan mencetak suatu
halaman tertentu secara bersamaan.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
4
Komunikasi Proses
1. Komunikasi Langsung
Setiap proses yang ingin berkomunikasi
harus memiliki nama yang bersifat eksplisit,
baik pengirim dan penerima proses harus
memberi nama bagi yang lain untuk
berkomunikasi, Kerugian dari cara ini adalah
adanya keterbatasan modularitas, merubah
nama proses mungkin mengharuskan kita
untuk merubah semua definisi proses yang
lain, dan semua referensi kepada nama
proses yang lama harus ditemukan.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
5
Komunikasi Proses
2. Komunikasi Tidak Langsung
Dengan komunikasi tidak langsung, pesan akan
dikirimkan pada dan diterima dari/melalui mailbox
(Kotak Surat) atau terminal, sebuah mailbox dapat
dilihat secara abstrak sebagai sebuah obyek didalam
setiap pesan yang dapat ditempatkan dari proses dan
dari setiap pesan yang bisa dipindahkan. Setiap kotak
surat memiliki sebuah identifikasi (identitas) yang unik,
sebuah proses dapat berkomunikasi dengan beberapa
proses lain melalui sebuah nomor dari mailbox yang
berbeda. Dua proses dapat saling berkomunikasi
apabila kedua proses tersebut sharing mailbox.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
6
Buffering
Baik komunikasi itu langsung atau tidak langsung, penukaran pesan
oleh proses memerlukan antrian sementara. Pada dasarnya terdapat
tiga pilihan dimana antrian tersebut diimplementasikan :
 Kapasitas nol : antrian mempunyai panjang maksimum 0, maka
link tidak dapat mempunyai penungguan pesan (message
waiting). Dalam kasus ini, pengirim harus memblok sampai
penerima menerima pesan.
 Kapasitas terbatas : antrian mempunyai panjang yang telah
ditentukan, paling banyak n pesan dapat dimasukkan. Jika
antrian tidak penuh ketika pesan dikirimkan, pesan yang baru
akan menimpa, dan pengirim pengirim dapat melanjutkan
eksekusi tanpa menunggu. Link mempunyai kapasitas terbatas.
Jika link penuh, pengirim harus memblok sampai terdapat ruang
pada antrian.
 Kapasitas tak terbatas : antrian mempunyai panjang yang tak
terhingga, maka, semua pesan dapat menunggu disini. Pengirim
tidak akan pernah di blok.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
7
Sinkronisasi
Seperti yang telah kita ketahui bahwa proses dapat bekerja
sendiri (independent process) dan juga dapat bekerja
bersama proses-proses yang lain (cooperating process).
Pada umumnya ketika proses saling bekerjasama
(cooperating process) maka proses-proses tersebut akan
saling berbagi data. Pada saat proses-proses berbagi data,
ada kemungkinan bahwa data yang dibagi secara bersama
itu akan menjadi tidak konsisten dikarenakan adanya
kemungkinan proses-proses tersebut melakukan akses
secara bersamaan yang menyebabkan data tersebut
berubah, hal ini dikenal dengan istilah Race Condition.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
8
Critical Section
Biasanya sebuah proses akan sibuk melakukan
perhitungan internal dan hal-hal lainnya tanpa
ada bahaya yang menuju ke race condition pada
sebagian besar waktu. Akan tetapi, beberapa
proses memiliki suatu segmen kode dimana jika
segmen itu dieksekusi, maka proses-proses itu
dapat saling mengubah variabel, mengupdate
suatu tabel, menulis ke suatu file, dan lain
sebagainya, dan hal ini dapat membawa proses
tersebut ke dalam bahaya race condition.
Segmen kode yang seperti inilah yang disebut
Critical Section.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
9
Mutual Exclusion
Maka bagaimana cara menghindari race condition
ini serta situasi-situasi lain yang melibatkan
memori bersama, berkas bersama atau sumber
daya yang digunakan bersama-sama?, Kuncinya
adalah menemukan jalan untuk mencegah lebih
dari satu proses melakukan proses tulis atau baca
kepada data atau berkas pada saat yang
bersamaan. Mutual Exclusion adalah suatu cara
yang menjamin jika ada sebuah proses yang
menggunakan variabel atau berkas yang sama
(digunakan juga oleh proses lain), maka proses
lain akan dikeluarkan dari pekerjaan yang sama.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
10
Persyaratan
Solusi untuk memecahkan masalah critical
section adalah dengan mendesain sebuah
protokol di mana proses-proses dapat
menggunakannya secara bersama-sama.
Setiap proses harus 'meminta ijin' untuk
memasuki critical section-nya. Bagian dari
kode yang mengimplementasikan ijin ini
disebut entry section. Akhir dari critical
section itu disebut exit section. Bagian kode
selanjutnya disebut remainder section.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
11
Solusi Masalah Critical Section
1. Mutual Exclusion.
Jika suatu proses sedang menjalankan
critical section-nya, maka proses-proses
lain tidak dapat menjalankan critical
section mereka. Dengan kata lain, tidak
ada dua proses yang berada di critical
section pada saat yang bersamaan.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
12
Solusi Masalah Critical Section
2. Terjadi kemajuan (progress).
Jika tidak ada proses yang sedang
menjalankan critical section-nya dan
ada proses-proses lain yang ingin
masuk ke critical section, maka hanya
proses- roses yang yang sedang berada
dalam entry section saja yang dapat
berkompetisi untuk mengerjakan critical
section.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
13
Solusi Masalah Critical Section
3. Ada batas waktu tunggu (bounded waiting).
Jika seandainya ada proses yang sedang
menjalankan critical section, maka proses lain
memiliki waktu tunggu yang ada batasnya
untuk menjalankan critical section-nya,
sehingga dapat dipastikan bahwa proses
tersebut dapat mengakses critical section-nya
(tidak mengalami starvation : proses seolaholah berhenti, menunggu request akses ke
critical section sampai diperbolehkan).
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
14
Deadlock
Deadlock dalam arti sebenarnya adalah kebuntuan.
Kebuntuan yang dimaksud dalam sistem operasi
adalah kebuntuan proses. Jadi Deadlock ialah
suatu kondisi dimana proses tidak berjalan lagi atau
pun tidak ada komunikasi lagi antar proses.
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. Dengan
kata lain setiap proses dalam set menunggu untuk
sumber yang hanya dapat dikerjakan oleh proses
lain dalam set yang sedang menunggu.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
15
Contoh Deadlock
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
16
Menanggulangi Deadlock
1.
Mengabaikan Masalah Deadlock
Metode ini lebih dikenal dengan Algoritma Ostrich.
Dalam algoritma ini dikatakan bahwa untuk
menghadapi Deadlock ialah dengan berpura-pura
bahwa tidak ada masalah apa pun. Hal ini seakanakan melakukan suatu hal yang fatal, tetapi sistem
operasi Unix menanggulangi Deadlock dengan
cara ini dengan tidak mendeteksi Deadlock dan
membiarkannya secara otomatis mematikan
program sehingga seakan-akan tidak terjadi apa
pun. Jadi jika terjadi Deadlock, maka tabel akan
penuh, sehingga proses yang menjalankan proses
melalui operator harus menunggu pada waktu
tertentu dan mencoba lagi.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
17
Menanggulangi Deadlock
2. Mendeteksi dan Memperbaiki
Caranya ialah dengan cara mendeteksi
jika terjadi Deadlock pada suatu proses
maka dideteksi sistem mana yang
terlibat di dalamnya. Setelah diketahui
sistem mana saja yang terlibat maka
diadakan proses untuk memperbaiki dan
menjadikan sistem berjalan kembali.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
18
Menanggulangi Deadlock
3.
Menghindari Deadlock
Pada sistem kebanyakan permintaan terhadap sumber
daya dilakukan sebanyak sekali saja. Sistem sudah harus
dapat mengenali bahwa sumber daya itu aman atau tidak
(dalam arti tidak terkena Deadlock), setelah itu baru
dialokasikan. Ada dua cara yaitu:
a. Jangan memulai proses apa pun jika proses tersebut
akan membawa kita pada kondisi Deadlock, sehingga
tidak mungkin terjadi Deadlock karena ketika akan
menuju Deadlock sudah dicegah.
b. Jangan memberi kesempatan pada suatu proses untuk
meminta sumber daya lagi jika penambahan ini akan
membawa kita pada suatu keadaan Deadlock.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
19
Kriteria Proses yang dimatikan
1. Yang paling jarang memakai prosesor
2. Yang paling sedikit hasil programnya
3. Yang paling banyak memakai sumber
daya sampai saat ini
4. Yang alokasi sumber daya totalnya
tersedkit
5. Yang memiliki prioritas terkecil.
Operating System
[email protected]
Copyright © Mufadhol
[email protected]
20
Download