MUTUAL EXCLUSION
Mutual Exclusion
Mutual Exclusion
Adalah jaminan hanya satu proses yang mengakses sumber
daya pada suatu interval waktu tertentu. Proses proses yang lain dilarang mengerjakan hal yang sama.
Bagian program yang sedang mengakses memori atau
sumber daya yang dipakai bersama disebut Critical Section/Region. Mutual
Exclusion merupakan jaminan untuk mengatasi kondisi pacu agar tidak boleh 2
proses atau lebih memasuki Critical Section secara bersamaan
Kesuksesan proses - proses kongkuren memerlukan pendefinisian Critical Section
dan memaksakan Mutual Exclusion di antara proses-proses kongkuren yang sedang
berjalan. Pemaksaan Mutual Exclusion merupakan landasan pemrosesan kongkuren.
Masalah-Masalah Konkuren
A. Mutual Exclusion.
Adalah jaminan hanya satu proses
yang mengakses sumber daya pada suatu interval waktu tertentu. Proses-proses
yang lain dilarang mengerjakan hal yang sama.
Bagian program yang sedang mengakses memori atau sumber
daya yang dipakai bersama disebut Critical Section/Region. Mutual Exclusion
merupakan jaminan untuk mengatasi kondisi pacu agar tidak boleh 2 proses atau
lebih memasuki Critical Section secara bersamaan.
Kesuksesan proses- proses kongkuren memerlukan
pendefinisian Critical Section dan memaksakan Mutual Exclusion di antara
proses-proses kongkuren yang sedang berjalan. Pemaksaan Mutual Exclusion
merupakan landasan pemrosesan kongkuren.
Pemaksaan adanya mutual eclusion menimbulkan dua
maslah, yaitu:
- Deadlock.
- Startvation.
B. Deadlock. Deadlock adalah suatu kondisi dimana
dua proses atau lebih saling menunggu proses yang lain untuk melepaskan resource
yang sedang dipakai. Karena beberapa proses itu saling menunggu, maka tidak
terjadi kemajuan dalam kerja proses-proses tersebut. Deadlock
adalah masalah yang biasa terjadi ketika banyak proses yang membagi
sebuah resource yang hanya boleh dirubah oleh satu proses saja
dalam satu waktu.
Di kehidupan nyata, deadlock dapat
digambarkan dalam gambar berikut.Pada gambar diatas, deadlock
dianalogikan sebagai dua antrian mobil yang akan menyeberangi jembatan. Dalam
kasus diatas, antrian di sebelah kiri menunggu antrian kanan untuk mengosongkan
jembatan (resource), begitu juga dengan antrian kanan. Akhirnya tidak
terjadi kemajuan dalam kerja dua antrian tersebut.Misal ada proses A
mempunyai resource X, proses B mempunyai resource Y.
Kemudian kedua proses ini dijalankan bersama, proses A
memerlukan resource Y dan proses B memerlukan resource X, tetapi kedua proses tidak akan
memberikan resource yang dimiliki sebelum proses dirinya sendiri
selesai dilakukan. Sehingga akan terjadi tunggu-menunggu.
C. Starvation.
Starvation adalah kondisi yang
biasanya terjadi setelah deadlock. Proses yang kekurangan resource
(karena terjadi deadlock) tidak akan pernah mendapat resource
yang dibutuhkan sehingga mengalami starvation (kelaparan).
Namun, starvation juga bisa terjadi
tanpa deadlock. Hal ini ketika terdapat kesalahan dalam sistem
sehingga terjadi ketimpangan dalam pembagian resouce. Satu proses
selalu mendapat resource, sedangkan proses yang lain tidak pernah
mendapatkannya. Ilustrasi starvation tanpa deadlock di
dunia nyata dapat dilihat di bawah ini.Pada gambar diatas, pada antrian kanan
terjadi starvationkarena resource (jembatan) selalu
dipakai oleh antrian kiri, dan antrian kanan tidak mendapatkan giliran.
D. Sinkronisasi.
Adalah proses pengaturan jalannya
beberapa proses pada saat yang bersamaan. Tujuan utama sinkronisasi adalah
menghindari terjadinya inkonsistensi data karena pengaksesan oleh beberapa
proses yang berbeda (mutual exclusion) serta untuk mengatur urutan
jalannya proses-proses sehingga dapat berjalan dengan lancar dan terhindar
dari deadlock atau starvation.
(pada
hari Sabtu, 28
April 2013 ---- 20.10 WIB)
(pada
hari Sabtu, 28
April 2013 ---- 20.10 WIB)
(pada
hari Sabtu, 28
April 2013 ---- 20.10 WIB)
(pada
hari Sabtu, 28
April 2013 ---- 20.10 WIB)
DETEKSI DEADLOCK DAN PENCEGAHANNYA
PENDETEKSIAN, PENCEGAHAN,
DAN CARA MENGATASI DEADLOCK
Metode Pendeteksian
Deadlock
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 ini tergantung dari dua faktor:
1.
Frekuensi terjadinya deadlock pada umumnya
2.
Jumlah proses yang akan terpengaruh ketika
deadlock terjadi.
Pencegahan deadlock
Jika pada
awal kita membahas tentang ke-empat hal yang menyebabkan terjadinya deadlock.
Maka pada bagian ini, kita akan membahas cara menanggulangi keempat penyebab
deadlock itu, sehingga dengan kata lain kita mengadakan pencegahan terhadap
deadlock.
·
Masalah Kondisi Mutual Eksklusif (Mutual
exclusion)
Masalah
ini tidak dapat dilarang, jika aksesnya perlu bersifat spesial untuk satu
proses, maka hal ini harus di dukung oleh kemampuan sistem operasi. Jadi
diusahakan agar tidak mempergunakan kondisi spesial tersebut sehingga sedapat
mungkin deadlock dapat dihindari.
·
Masalah Kondisi Menunggu dan Memegang (Hold
and wait condition)
Penanggulangan deadlock dari kondisi ini lebih baik dan menjanjikan,
asalkan kita dapat menahan proses yang memegang sumber daya untuk tidak
menunggu sumber daya laun, kita dapat mencegah deadlock. Caranya ialah dengan
meminta semua sumber daya yang ia butuhkan sebelum proses berjalan. Tetapi
masalahnya sebagian proses tidak mengetahui keperluannya sebelum ia berjalan.
Jadi untuk mengatasi hal ini, kita dapat menggunakan algoritma bankir. Yang
mengatur hal ini dapat sistem operasi ataupun sebuah protokol. Hasil yang dapat
terjadi ialah sumber daya lebih di-spesifikasi dan kelaparan sumber daya, atau
proses yang membutuhkan sumber daya yang banyak harus menunggu sekian lama
untuk mendapat sumber daya yang dibutuhkan.
·
Masalah tidak ada Preemption (No preemption
condition)
Hal ketiga ialah jangan sampai ada preemption pada sumber daya yang telah
dialokasikan. Untuk memastikan hal ini, kita dapat menggunakan protokol. Jadi
jika sebuah proses meminta sumber daya yang tidak dapat dipenuhi saat itu juga,
maka proses mengalami preempted. Atau dengan kata lain ada sumber daya
dilepaskan dan diberikan ke proses yang menunggu, dan proses itu akan menunggu
sampai kebutuhan sumber dayanya dipenuhi.
Jalan lain kita harus mencek sumber daya yang dimaui oleh proses di cek
dahulu apakah tersedia. Jika ya maka kita langsung alokasikan, sedangkan jika
tidak tersedia maka kita melihat apakah ada proses lain yang menunggu sumber
daya juga. Jika ya, maka kita ambil sumber daya dari proses yang menunggu
tersebut dan memberikan pada proses yang meminta tersebut. Jika tidak tersedia
juga, maka proses itu harus menunggu. Dalam menunggu, beberapa dari sumber
dayanya dapat saja di preempted, tetapi jika ada proses yang memintanya. Cara
ini efektif untuk proses yang menyimpan dalam memory atau register.
·
Masalah Circular Wait
Masalah
ini dapat ditangani oleh sebuah protokol yang menjaga agar sebuah proses tidak
membuat lingkaran siklus yang dapat mengakibatkan deadlock
Atau kita harus mencek sumber daya yang dimaui oleh proses
di cek dahulu apakah tersedia. Jika ya maka kita langsung alokasikan, sedangkan
jika tidak tersedia maka kita melihat apakah ada proses lain yang menunggu
sumber daya juga. Jika ya, maka kita ambil sumber daya dari proses yang
menunggu tersebut dan memberikan pada proses yang meminta tersebut. Jika tidak
tersedia juga, maka proses itu harus menunggu. Dalam menunggu, beberapa dari
sumber dayanya bisa saja di preempted, tetapi jika ada proses yang memintanya.
Cara ini efektif untuk proses yang menyimpan dalam memory atau register
Mengatasi Deadlock
dan Dining Philosophers
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 komputasi menjadi semakin besar.
Banyak cara untuk
menanggulangi deadlock:
1. Mengabaikan masalah deadlock.
2. Mendeteksi dan memperbaiki
3. Penghindaran yang terus menerus dan pengalokasian yang
baik dengan menggunakan protokol untuk memastikan sistem tidak pernah memasuki
keadaan deadlock . Yaitu dengan deadlock avoidance
sistem untuk men- data informasi tambahan tentang proses mana yang akan meminta
dan menggunakan sumber daya.
4. Pencegahan yang secara struktur bertentangan dengan 4
kondisi terjadinya deadlockdengan deadlock prevention
sistem untuk memasti- kan bahwa salah satu kondisi yang penting tidak dapat
menunggu.
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 apapun. Hal ini seakan-akan melakukan suatu hal yang fatal, tetapi
sistem operasi Unix menanggulangideadlock dengan cara ini dengan
tidak mendeteksi deadlock dan membiarkannya secara otomatis
mematikan program sehingga seakan-akan tidak terjadi apapun. Jadi jika terjadideadlock,
maka tabel akan penuh, sehingga proses yang menjalankan proses melalui operator
harus menunggu pada waktu tertantu dan mencoba lagi.
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. Ada beberapa jalan untuk kembali dari deadlock:
-
Lewat Preemption
Dengan cara untuk sementara waktu menjauhkan sumber
daya dari pemakainya, dan memberikannya pada proses yang lain. Ide untuk
memberi pada proses lain tanpa diketahui oleh pemilik dari sumber daya tersebut
tergantung dari sifat sumber daya itu sendiri. Perbaikan dengan cara ini sangat
sulit atau bisa dikatakan tidak mungkin. Cara ini bisa dilakukan dengan memilih
korban yang akan dikorbankan atau diambil sumber dayanya utuk sementara, tentu
saja harus dengan perhitungan yang cukup agar waktu yang dikorbankan seminimal
mungkin.
-
Lewat melacak kembali
setelah kita lakukan beberapa langkah Preemption, maka
proses utama yang diambil sumber dayanya akan berhenti dan tidak dapat
melanjutkan kegiatannya, oleh karena itu dibutuhkan langkah untuk kembali pada
keadaan aman dimana proses masih berjalan dan memulai proses lagi dari situ.
Tetapi untuk beberapa keadaan sangat sulit menentukan kondisi aman tersebut,
oleh karena itu umumnya dilakukan cara mematikan program tersebut lalu memulai
kembali proses. Meskipun sebenarnya lebih efektif jika hanya mundur beberapa
langkah saja sampai deadlock tidak terjadi lagi. Untuk
beberapa sistem mencoba dengan cara mengadakan pengecekan beberapa kali secara
periodik dan menandai tempat terakhir kali menulis ke disk, sehingga saat
terjadi deadlock dapat mulai dari tempat terakhir penandaannya
berada.
-
Lewat membunuh proses
yang menyebabkan deadlock.
Cara yang paling umum ialah membunuh semua proses yang
mengalami deadlock. Cara ini paling umum dilakukan dan
dilakukan oleh hampir semua sistem operasi. Atau dipilih salah satu korban
untuk melepaskan sumber dayanya, dengan cara ini maka masalah pemilihan korban
menjadi lebih selektif, sebab telah diperhitungkan beberapa kemungkinan jika si
proses harus melepaskan sumber dayanya.
Kriteria seleksi korban ialah :
a. Yang paling jarang memakai prosesor
b. Yang paling sedikit hasil programnya
c. Yang paling banyak memakai sumber daya sampai saat ini
d. Yang alokasi sumber daya totalnya tersedkit
e. Yang memiliki prioritas terkecil
Kondisi Aman
Saat kondisi aman,
maka suatu sistem bisa mengalokasikan sumber daya pada setiap proses (sampai
pada batas maksimumnya) dengan urutan tertentu.
Jika sistem dalam
state aman maka tidak terjadi deadlock, sedangkan jika sistem
dalam state tidak
aman (unsafe state) maka kemungkinan terjadi deadlock seperti
Gambar 6-4. Metode
menghindari deadlock menjamin bahwa sistem tidak pernah
memasuki state tidak
aman.
SUMBER :
(pada hari Miggu, 29 April 2013 ---- 20.10 WIB
(pada hari Miggu, 29 April 2013 ---- 20.15 WIB
(pada hari Miggu, 29 April 2013 ---- 20.29 WIB
DEADLOCK dan MACAM SUMBER DAYA
DEADLOCK, CARA MENGHINDARINYA
DAN MACAM SUMBER DAYA
Pengertian 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 ataupun tidak ada komunikasi lagi antar proses dan sering kita sebut “HAANG”. 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.
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 ataupun tidak ada komunikasi lagi antar proses dan sering kita sebut “HAANG”. 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.
Hal ini bisa disebabkan karena untuk setiap sumber daya yang
dibutuhkan suatu sistem akan mengawasi ketersediaan sumber daya yang
dibutuhkan, yang berarti sistem akan masuk kedalam status yang tidak aman, atau
dapat dikatakan hasil dari status tersebut akan mengakibatkan terjadinya
deadlock. Deadlock bisa dihindari dengan menghilangkan faktor penyebab dari
terjadinya deadlock itu sendiri seperti menghilangkan : Mutual exclusion, Hold
and wait condition, No preemption condition (Lockout), dan The circular wait
condition.
Penyebab Terjadinya DeadLock
Menurut 1971 article by E. G. Coffman dalam artikelnya yang diterbitkan pada tahun 1971 terdapat empat penyebab terjadi deadlock yang dikenal sebagai Coffman conditions :
Penyebab Terjadinya DeadLock
Menurut 1971 article by E. G. Coffman dalam artikelnya yang diterbitkan pada tahun 1971 terdapat empat penyebab terjadi deadlock yang dikenal sebagai Coffman conditions :
1.
Mutual
exclusion, suatu sumber daya tidak bisa berbagi dengan lebih
dari satu proses.
2.
Hold and wait condition, suatu proses yang telah mempunyai sumber
daya kemungkinan meminta sumber daya yang baru.
3.
No
preemption condition, Begitu diberi jatah waktu pemroses
maka prosesor tidak dapat diambil alih oleh proses lain sampai proses itu
selesai (run to completion) .
4.
Circular
wait condition, adanya kondisi seperti rantai, yaitu sebuah proses membutuhkan
sumber daya yang dipegang proses berikutnya.
Cara Menghindari
Deadlock
Deadlock bisa dihindari jika mempunyai informasi mengenai
proses yang tersedia serta sumber daya yang akan dibutuhkannya. Untuk setiap
sumber daya yang dibutuhkan suatu sistem akan mengawasi ketersediaan sumber
daya yang dibutuhkan, yang berarti sistem akan masuk kedalam status yang tidak
aman, atau dapat dikatakan hasil dari status tersebut akan mengakibatkan
terjadinya deadlock atau disebut juga hang.
Sebuah sistem hanya akan menjamin permintaan dalam keadaan status aman, dalam
permintaan suatu sistem untuk mengetahui bahwa status yang dijalankannya itu
aman atau tidak adalah dengan mengetahui setiap tipe dari setiap proses dan
banyaknya sumber daya yang ada, tersedia, dan yang dibutuhkan. Algorithm yang
digunakan untuk menghindari deadlock salah satunya adalah Banker’s Algoritm,
yang digunakan untuk mengetahui batas sumber daya yang dibutuhkan oleh suatu
proses. Bagaimanapun, untuk kebanyakan sistem tidaklah mungkin untuk dapat
diketahui apa yang dibutuhkan oleh proses, ini berarti bahwa menghindari deadlock
atau hang hampir tidaklah mungkin.
1.
Jangan memulai proses apapun jika proses
tersebut akan membawa kita pada kondisideadlock, sehingga tidak mungkin
terjadi deadlock karena ketika akan menuju deadlocksudah
dicegah
2.
Jangan memberi kesempatan pada suatu proses
untuk meminta sumber daya lagi jika penambahan ini akan membawa kita pada suatu
keadaan deadlock
Jadi diadakan dua kali penjagaan, yaitu saat pengalokasian
awal, dijaga agar tidak deadlock dan ditambah dengan penjagaan kedua
saat suatu proses meminta sumber daya, dijaga agar jangan sampai terjadi deadlock.
Pada deadlock avoidance sistem dilakukan dengan cara memastikan bahwa program
memiliki maksimum permintaan. Dengan kata lain cara sistem ini memastikan
terlebih dahulu bahwa sistem akan selalu dalam kondisi aman. Baik mengadakan
permintaan awal ataupun saat meminta permintaan sumber daya tambahan, sistem
harus selalu berada dalam kondisi aman.
Macam Sumber Daya
Kejadian deadlock selalu tidak lepas dari sumber daya, bahwa
hampir seluruhnya merupakan masalah sumber daya yang digunakan bersama-sama.
Oleh karena itu, kita juga perlu tahu tentang jenis sumber daya, yaitu: sumber
daya dapat digunakan lagi berulang-ulang dan sumber daya yang dapat digunakan
dan habis dipakai atau dapat dikatakan sumber daya sekali pakai.
A. Sumber Daya yang Bisa Dipakai
Berulang-Ulang
Sumber daya ini tidak habis dipakai oleh proses manapun.Tetapi setelah
proses berakhir, sumber daya ini dikembalikan untuk dipakai oleh proses lain
yang sebelumnya tidak kebagian sumber daya ini. Contohnya prosesor, kanal I/O,
disk, semaphores. Contoh peran sumber daya jenis ini pada terjadinya deadlock
ialah misalnya sebuah proses memakai disk A dan B, maka akan terjadi deadlock
jika setiap proses sudah memiliki salah satu disk dan meminta disk yang lain.
Masalah ini tidak hanya dirasakan oleh pemrogram tetapi oleh seorang yang
merancang sebuah sistem operasi. Cara yang digunakan pada umumnya dengan cara
memperhitungkan dahulu sumber daya yang digunakan oleh proses-proses yang akan
menggunakan sumber daya tersebut. Contoh lain yang menyebabkan deadlock dari
sumber yang dapat dipakai berulang-ulang ialah berkaitan dengan jumlah proses
yang memakai memori utama.
B. Sumber Daya Sekali Pakai
Dalam kondisi biasa tidak ada batasan untuk memakai sumber daya apapun,
selain itu dengan tidak terbatasnya produksi akan membuat banyak sumber daya
yang tersedia.Tetapi dalam kondisi ini juga dapat terjadi deadlock.
SUMBER :
(pada hari jum’at, 26 April 2013 --- 21.55 WIB)
- http://blog.ub.ac.id/marlo/2012/05/24/apa-sih-deadlock-itu-gimana-cara-pencegahannya-dan-mendeteksi
(pada hari jum’at, 26 April 2013 --- 22.05 WIB)
(pada hari jum’at, 26 April 2013 --- 22.25 WIB)
Mutual Exclusion dan Metode Penjaminnya
A. Penjelasan tema Mutual Exclusion
Pada system computer terdapat sumber daya yang tidak dapat dipakai bersama pada saat yang bersamaan seperti pada penggunaan printer, Sumber daya seperti hanya dapat menjalankan satu proses pada suatu saat, sumber daya ini disebut sumber daya kritis. Program yang menggunakan sumber daya kritis disebut sedang memasuki critical region / section .
Sistem operasi memberikan fasilitas untuk pemrogram dapat memberikan indikasi keberadaan critical region. Sistem operasi menyediakan layanan ( berupa system call ) untuk mencagah suatu proses masuk kedalam critical region akan tetapi di dalam critical region terdapat proses lain yang sedang berjalan. Mutual exclusion merupakan solusi bagi masalah pada critical region / section, mutual exclusion adalah persoalan untu menjamin hanya satu proses saja yang berjalan dalam suatu critical region / section.
B. Metode-metode Penjamin Mutual Exclusion
1. Metode Naif
Sebenarnya metode ini tidak menyelesaikan mutual exclusion, karena masih terdapat scenario proses yang membuat situasi kacau. Metode ini sering disebut metode variable lock sederhana.
Ketika proses hendak masuk critical section, proses lebih dulu memeriksa variable lock dengan ketentuan :
- Jika variable lock bernilai 0, proses mengeset variable lock menjadi 1 dan segera masuk critical section.
- Jika variable lock bernilai 1, proses menunggu sampai nilai variabel lock menjadi 0.
2. Metode untuk situasi tertentu
Metode ini sering disebut metode bergantian secara ketat yang mengasumsikan proses-proses yang hendak masuk critical section secara bergantian terus menerus. Proses memeriksa terus menerus sehingga kondisi siap untuk diproses. Kondisi ini tidak dapat ditentukan lamanya waktu sehingga menyia-nyiakan waktu pemroses. Suatu saat kondisi akan crash ketika ada proses yang harus segera masuk sementara ada proses lain yang masih berjalan.
3. Metode Busy Waiting
a) Metode Penyelesaian Dekker
Algoritma Dekker mempunyai property-property berikut :
• Tidak memerlukan instruksi-instruksi perangkat keras khusus.
• Proses yang beroperasi di luar critical section tidak dapat mencegah proses lain memasuki critical section.
• Proses yang ingin masuk critical section akan segera masuk bila dimungkinkan.
b) Metode Penyelesaian Peterson
Sebelum masuk critical section, proses memanggil enter_critical_section, namun sebelumnya proses memeriksa sampai kondisi aman. Terjadi busy waiting, setelah selesai proses menandai pekerjaan dan mengijinkan proses lain masuk.
Keadaan awal tidak ada proses di critical section. Proses 0 akan masuk critical section. Proses menandai elemen arraynya dan mengeset turn ke 0. Proses memeriksa kondisi, dan prosedur enter_critical_section dilaksanakan. Jika kemudian, proses 1 akan masuk, proses akan menunggu sampai interest(0) menjadi FALSE. Kondisi ini hanya terjadi jika proses 0 mengeset elemen itu dan keluar dari critical section.
c) Metode Pematian Interupsi
Proses mematikan interupsi ke pemroses dan segera masuk ke critical section. Proses kembali mengaktifkan interupsi segera setelah meninggalkan critical section. Metode ini mengakibatkan :
• Pemroses tidak dapat beralih ke proses lain karena interupsi clock dimatikan sehingga penjadual pun tidak dieksekusi. Karena penjadual tidak beroperasi maka tidak terjadi alih proses.
• Proses dapat memakai memori bersama tanpa takut terinvensi proses lain karena memang tidak ada proses lain yang dieksekusi saat itu.
• Kelemahan utama :
• Bila proses yang mematikan interupsi mengalami gangguan maka proses tidak akan pernah menghidupkan interupsi kembali. Kejadian ini mengakibatkan kematian seluruh system.
• Jika terdapat dua pemroses atau lebih, mematikan interupsi hanya berpengaruh pada pemroses yang sedang mengeksekusi intruksi itu. Proses lain masih dapat memasuki critical section.
d) Metode Test and Set Lock (TSL)
Metode ini membaca isi memori ke register dan kemudian menyimpan nilai bukan 0 ke alamat memori. Pemroses yang mengeksekusi instruksi tsl mengunci bus memori, mencegah pemroses lain mengkases memori.
e) Metode Exchange (XCHG)
Metode ini menggunakan instruksi exchange (xchg). Instruksi xchg menukarkan dua isi memori.
f) Metode Instruksi Mesin
Keunggulan :
• Sederhana dan mudah diverifikasi
• Dapat diterapkan ke sembarang jumlah proses
• Dapat digunakan untuk mendukung banyak critical region
Kelemahan :
• Merupakan metode dengan busy waiting, sangat tidak efisien.
• Adanya busy waiting memungkinkan terjadi deadlock dan starvation.ü
4. Metode Penyelesaian Level Tinggi (Metode Semapore)
Dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Proses berhenti sampai proses memperoleh penanda tertentu. Variabel khusus untuk penandaan ini disebut semaphore. Semaphore mempunyai dua property :
a) Semaphore dapat diinisialisasi dengan nilai bukan negative.
b) Ada dua operasi terhadap semaphore yaitu Operasi Up dan Operasi Down.
Operasi Down
Operasi ini menurunkan nilai semaphore. Jika nilai semaphore menjadi bukan positif maka proses yang mengeksekusinya diblok. Operasi Down adalah atomic (atomic action), tidak dapat diinterupsi sebelum selesai. Menurunkan nilai, memeriksa nilai, menempatkan proses pada antrian dan memblok sebagai instruksi tunggal. Tidak ada proses lain yang dapat diakses sampai proses selesai.
Operasi Up
Operasi ini menaikkan nilai semaphore. Jika satu proses atau lebih telah diblok pada suatu semaphore tidak dapat menyelesaikan operasi down maka salah satu dipilih oleh system dan dibolehkan menyelesaikan operasi downnya. Operasi Up menaikan nilai semaphore, memindahkan dari antrian dan menempatkan satu proses ke senarai ready tidak dapat diinterupsi.
1. Metode Naif
Sebenarnya metode ini tidak menyelesaikan mutual exclusion, karena masih terdapat scenario proses yang membuat situasi kacau. Metode ini sering disebut metode variable lock sederhana.
Ketika proses hendak masuk critical section, proses lebih dulu memeriksa variable lock dengan ketentuan :
- Jika variable lock bernilai 0, proses mengeset variable lock menjadi 1 dan segera masuk critical section.
- Jika variable lock bernilai 1, proses menunggu sampai nilai variabel lock menjadi 0.
2. Metode untuk situasi tertentu
Metode ini sering disebut metode bergantian secara ketat yang mengasumsikan proses-proses yang hendak masuk critical section secara bergantian terus menerus. Proses memeriksa terus menerus sehingga kondisi siap untuk diproses. Kondisi ini tidak dapat ditentukan lamanya waktu sehingga menyia-nyiakan waktu pemroses. Suatu saat kondisi akan crash ketika ada proses yang harus segera masuk sementara ada proses lain yang masih berjalan.
3. Metode Busy Waiting
a) Metode Penyelesaian Dekker
Algoritma Dekker mempunyai property-property berikut :
• Tidak memerlukan instruksi-instruksi perangkat keras khusus.
• Proses yang beroperasi di luar critical section tidak dapat mencegah proses lain memasuki critical section.
• Proses yang ingin masuk critical section akan segera masuk bila dimungkinkan.
b) Metode Penyelesaian Peterson
Sebelum masuk critical section, proses memanggil enter_critical_section, namun sebelumnya proses memeriksa sampai kondisi aman. Terjadi busy waiting, setelah selesai proses menandai pekerjaan dan mengijinkan proses lain masuk.
Keadaan awal tidak ada proses di critical section. Proses 0 akan masuk critical section. Proses menandai elemen arraynya dan mengeset turn ke 0. Proses memeriksa kondisi, dan prosedur enter_critical_section dilaksanakan. Jika kemudian, proses 1 akan masuk, proses akan menunggu sampai interest(0) menjadi FALSE. Kondisi ini hanya terjadi jika proses 0 mengeset elemen itu dan keluar dari critical section.
c) Metode Pematian Interupsi
Proses mematikan interupsi ke pemroses dan segera masuk ke critical section. Proses kembali mengaktifkan interupsi segera setelah meninggalkan critical section. Metode ini mengakibatkan :
• Pemroses tidak dapat beralih ke proses lain karena interupsi clock dimatikan sehingga penjadual pun tidak dieksekusi. Karena penjadual tidak beroperasi maka tidak terjadi alih proses.
• Proses dapat memakai memori bersama tanpa takut terinvensi proses lain karena memang tidak ada proses lain yang dieksekusi saat itu.
• Kelemahan utama :
• Bila proses yang mematikan interupsi mengalami gangguan maka proses tidak akan pernah menghidupkan interupsi kembali. Kejadian ini mengakibatkan kematian seluruh system.
• Jika terdapat dua pemroses atau lebih, mematikan interupsi hanya berpengaruh pada pemroses yang sedang mengeksekusi intruksi itu. Proses lain masih dapat memasuki critical section.
d) Metode Test and Set Lock (TSL)
Metode ini membaca isi memori ke register dan kemudian menyimpan nilai bukan 0 ke alamat memori. Pemroses yang mengeksekusi instruksi tsl mengunci bus memori, mencegah pemroses lain mengkases memori.
e) Metode Exchange (XCHG)
Metode ini menggunakan instruksi exchange (xchg). Instruksi xchg menukarkan dua isi memori.
f) Metode Instruksi Mesin
Keunggulan :
• Sederhana dan mudah diverifikasi
• Dapat diterapkan ke sembarang jumlah proses
• Dapat digunakan untuk mendukung banyak critical region
Kelemahan :
• Merupakan metode dengan busy waiting, sangat tidak efisien.
• Adanya busy waiting memungkinkan terjadi deadlock dan starvation.ü
4. Metode Penyelesaian Level Tinggi (Metode Semapore)
Dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Proses berhenti sampai proses memperoleh penanda tertentu. Variabel khusus untuk penandaan ini disebut semaphore. Semaphore mempunyai dua property :
a) Semaphore dapat diinisialisasi dengan nilai bukan negative.
b) Ada dua operasi terhadap semaphore yaitu Operasi Up dan Operasi Down.
Operasi Down
Operasi ini menurunkan nilai semaphore. Jika nilai semaphore menjadi bukan positif maka proses yang mengeksekusinya diblok. Operasi Down adalah atomic (atomic action), tidak dapat diinterupsi sebelum selesai. Menurunkan nilai, memeriksa nilai, menempatkan proses pada antrian dan memblok sebagai instruksi tunggal. Tidak ada proses lain yang dapat diakses sampai proses selesai.
Operasi Up
Operasi ini menaikkan nilai semaphore. Jika satu proses atau lebih telah diblok pada suatu semaphore tidak dapat menyelesaikan operasi down maka salah satu dipilih oleh system dan dibolehkan menyelesaikan operasi downnya. Operasi Up menaikan nilai semaphore, memindahkan dari antrian dan menempatkan satu proses ke senarai ready tidak dapat diinterupsi.
Sebelum masuk critical section, proses melakukan down. Bila berhasil maka proses masuk critical section. Bila tidak berhasil maka proses diblok pada semaphore. Proses yang diblok dapat melanjutkan jika proses yang berada di critical section keluar dan melakukan operasi up dan menjadikan proses yang diblok menjadi ready dan berlanjut hingga operasi downnya berhasil.
C. Implementasi Semaphore
C. Implementasi Semaphore
- Pematian Interupsi : Sistem operasi mematikan interupsi selagi memeriksa semaphore, memperbarui, dan menjadikan proses diblok. Karena semua aksi hanya memerlukan beberapa instruksi, pematian interupsi tidak merugikan.
- Instruksi tsl : Pada banyak pemroses, tiap semaphore dilindungi variable lock dan instruksi tsl agar menjamin hanya satu pemroses yang saat itu memanipulasi semaphore
Mutual Exclusion
Mutual Exclusion
Adalah jaminan hanya satu proses yang
mengakses sumber daya pada suatu interval waktu tertentu. Proses proses yang
lain dilarang mengerjakan hal yang sama. Mutual exclusion ini dapat ditimbulkan
akibat adanya interaksi antara proses-proses yang berjalan
Bagian program yang sedang mengakses
memori atau sumber daya yang dipakai bersama disebut Critical Section/Region. Dengan
adanya interaksi proses yang memungkinkan adanya kompetisi antar proses, konsep
bagi-pakai maupun cooperative antar proses maka kemungkinan terjadinya critical
section akan terjadi.
Untuk mengatasi hal tersebut maka
dibuatlah sebuah sistem manajemen proses mutual exclusion. Mutualexclusion
pertama kali diungkapkan oleh Edsger Djikstra pada tahun 1965. Sejak saat itu
banyak solusi yangditawarkan untuk mengatasi adanya mutual exclusion.
A.
Konsep Mutual
Exclusion
Untuk menjelaskan bagaimana konsep
mutual exclusion. Maka akan diambil sebuah contoh kejadian. Anggap sebuah
perintah didalam code merubah sebagian dari data selama beberapa penjalanan
program, ketika thread lain yang mungkin dipicu oleh event yang tidak
diperkirakan mulai dieksekusi. Jika pada saat yang bersamaan thread kedua ini
membaca dari potongan data yang sama, sedangkan data tersebut dalam proses yang
sedang akan ditulisi, maka kondisi ini adalah kondisi yang tidak konsisten dan
tidak dapat diperkirakan. Jika thread
kedua mencoba meng-overwrite data tersebut, akan mengakibatkan keadaan yang
tidak dapat ditangani (unresolveable state).
Shared data diatas yang sedang diakses oleh critical
sections bagaimanapun juga harus dilindungi, jadi proses lain yang membaca dari
atau menulis ke dalam potongan data harus dikeluarkan dari pengeksekusian.
Jadi konsep utama dari mutual exclusion
adalah bagaimana melakukan manipulasi dan membuat kebijakan tentang bagaimana
tata cara pengaksesan critical section oleh proses satu dengan yang lain yang
mengakses secara simultan. Mutual exclusion baik yang terjadi pada proses
uniprocessing, multiprocessing maupun sistemyang cooperative, solusi yang harus
dilakukan bagaimana pengontrolan akses ke sumberdaya.
B.
Ilustrasi
aplikasi tabungan
Seluruh
sistem yang melibatkan banyak proses mengakses satu sumber daya bersama selalu
menimbulkan persoalan mutual-exclusion.
Contohnya
adalah sebagai berikut.
·
Pada
aplikasi tabungan, misalnya rekening A berisi Rp 1.000.000,- yang terdaftar di
kantor cabang bandung.
·
Kemudian
pada suatu saat program aplikasi kantor cabang di Jakarta melayani penyetoran
Rp 3.000.000,- ke rekening A. lalu program aplikasi membaca saldo akhir
rekening A
Persoalan
di atas dapat tidak terjamin mutual-exclusion jika:
1.
Program
aplikasi bandung menulis ke rekening A secara cepat sehingga di hasilkan saldo
Rp 6.000.000. Setelah itu, program aplikasi kantor cabang Jakarta menimpa hasil
itu dengan saldo Rp 4.000.000,- . Dalam kasus ini saldo akhir yang diperoleh
adalah Rp 4.000.000,- bukan Rp 10.000.000,- (yang seharusnya).
2.
Program
aplikasi Jakarta dilakukan menulis ke rekening A secara cepat sehingga
dihasilkan saldo Rp 4.000.000,-. Setelah itu program aplikasi di kantor bandung
menimpa hasil itu dengan saldo Rp 6.000.000,-. Hasil yang lebih baik dibanding
skenario pertama tetapi masih di bawah yang seharusnya yaitu Rp 10.000.000,-.
Kriteria
penyelesaian Mutual Exclusion :
1.
Mutual
Exclusion harus dijamin.
2.
Hanya
satu proses pada satu saat yang diizinkan masuk Critical Section/Region.
3.
Proses
yang berada di noncritical section, dilarang memblok proses-proses yang ingin masuk
critical section.
4.
Harus
dijamin proses yang ingin masuk critical section tidak menunggu lama hingga waktu
tak terhingga, agar tidak terjadi deadlock atau starvation.
5.
Ketika
ada proses di critical section maka proses yang ingin masuk critical section
harus diijinkan segera masuk tanpa waktu tunda.
6.
Tidak
ada asumsi mengenai kecepatan relative proses atau jumlah proses yang ada.
sumber:
(pada hari Sabtu, 28 April 2013
---- 17.10 WIB
(pada hari Sabtu, 28 April 2013
---- 17.19 WIB
Langganan:
Postingan (Atom)





