The Critical Section Problem – Algorithm III Muhammad Fikry Hazmi Kresna Ridwan Guntur Kondang Prakoso
(143) (145) (153)
Definisi Critical
Section
adalah bagian dari suatu proses yang akan melakukan akses dan memanipulasi data
Critical Section adalah kode segmen yang terdapat di dalam n proses yang saling bersaing untuk menggunakan data di dalam suatu sistem
Ketika suatu proses sedang dijalankan di Critical Section, maka tidak ada proses lain yang dijalankan di Critical Section Terdapat banyak thread dan akan mengubah suatu nilai dari variabel
Critical Section biasanya digunakan dalam program multithreading
“Critical Section “ diperlukan agar melindungi variabel dari “concurrent acces “ yang dapat membuat nilai suatu variabel itu berubah-ubah.
Macam macam proses berdasarkan cara kerjanya
1. Independent Process 2. Cooperating Process Proses” saling berbagi data yang cenderung menyebabkan ketidak akuratan data Race Condition
Persyaratan sebagai solusi untuk menghindari race condition
Tidak ada proses lain yang masuk ke dalam Critical Section
Mutual Exclusion • “Critical Section” sebaiknya terfokus dan pendek • Tidak memasuki “infinite loop”
Progress 1 proses
2 proses / lebih
• Bila terdapat beberapa proses yang ingin masuk maka pemilihan proses yang akan masuk ke dalam critical section tidak dapat ditunda
Tidak ada asumsi mengenai kecepatan relatif proses n
Tidak ada proses yang menunggu lama-lama untuk masuk ke dalam Critical Section
Bounded Waiting
Asumsikan setiap proses dieksekusi dalam kecepatan nol
Algoritma III
• Langkah-langkah berikut ini akan menunjukkan bahwa Mutual Exclusion harus dipertahankan • terdapat dua variabel yaitu flag dan
turn • Variabel flag menunjukkan apakah proses tersebut sudah siap untuk masuk ke Critical Section atau tidak
• Variabel turn disni menunjukkan giliran proses mana yang boleh masuk ke Critical System.
• Disini Pi akan masuk ke dalam Critical Section hanya jika flag[j] bernilai false atau memberikan turn kepada Pi (turn == i).
• Jika kedua proses tersebut dapat dieksekusi ke dalam Critical Section pada waktu yang bersamaan, maka flag[i] dan flag[j] bernilai benar. • Namun ini bertentangan dengan persayaratan
Mutual Exclusion.
• Disini menunjukkan bahwa Pi dan Pj tidak dapat berhasil dieksekusi while statement/infinite loop mereka pada waktu yang sama, karena nilai turn dapat berupa I atau j, bukan keduanya.
•
Maka, salah satu proses ,kita asumsikan Pj ,harus berhasil mengeksekusi proses While
Statement, sedangkan Pi harus mengeksekusi
additional statement (dalam konteks ini adalah turn == j).
•
Namun pada waktu itu, selama Pj masuk ke dalam Critical Section, flag[j] bernilai true dan turn bernilai j.
•
Dan Mutual Exclusion sudah dipertahankan.
•
Untuk selanjutnya akan membuktikan bahwa persayaratan Progress dan
Bounded Waiting terpenuhi.
• Prosses Pi dapat dicegah untuk masuk ke dalam Critical Section hanya jika ini terperangkap di dalam While Loop dengan kondisi bahwa flag[j] bernilai benar dan turn bernilai j.
• Jika Pj belum siap untuk masuk ke dalam Critical Section, maka flag[j] bernilai false dan Pi dapat masuk ke dalam Critical Section.
• Jika Pj sudah menetapkan falg[j] bernilai true dan ini juga mengeksekusi While Statement, lalu turn bernilai salah satu, i atau j.
• Lalu jika turn bernilai i, maka Pi akan masuk ke dalam Critical
Section.
• Tapi, jika turn bernilai j dan Pj masuk ke Critical Section, setelah Pi keluar, ini akan mengembalikan nilai flag[j] menjadi false, lalu mempersilahkan Pi untuk masuk ke dalam Critical Section.
• Jika Pj balik ke awal dan memasang kembali nilai flag[j] ke true, ini juga harus merubah nilai turn ke i dalam maksud untuk dapat ke While Statement lagi.
• Dengan Pi tidak mengubah nilai dari variabel turn ketika mengeksekusi While Statement, Pi akan masuk ke dalam Critical Section setelah ada yang menunggu yaitu Pj.
• Semua kondisi terpenuhi dan dengan ini masalah Critical Section sudah teratasi dengan baik karena proses-proses tidak masuk ke dalam Critical Section secara bersamaan
Referensi • http://cs.uttyler.edu/Faculty/Rainwater/COSC 3355/Animations/criticalsection.htm • https://mediekaputra.wordpress.com/2011/0 3/26/critical-section/