Critical
Section
Critical
Section adalah bagian dari suatu proses yang akan melakukan akses dan
manipulasi data. Ketika sebuah proses sedang dijalankan dalam critical
section nya, tidak ada proses lain yang boleh dijalankan dalam critical
section tersebut, karena akan menyebabkan keadaan mutually exclusive.
Mutually exclusive yakni keadaan terjadinya akses resources yang sama di
saat yang bersamaan. Mutually exclusive memerlukan kondisi tertentu agar dapat
terpenuhi.
Critical
section biasanya digunakan saat program multithreading, dimana
program tersebut terdiri dari banyak thread, akan mengubah nilai dari variabel.
Dalam hal ini critical sectiondiperlukan untuk melindungi variabel
dari concurrent access (pengaksesan program di saat yang bersamaan) yang
dapat membuat nilai dari variabel tersebut menjadi tidak konsisten.
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.
Bagaimana
menghindari race conditions? Kunci untuk mencegah masalah ini dan di situasi
yang lain yang melibatkan shared memori, shared berkas, and shared sumber daya
yang lain adalah menemukan beberapa jalan untuk mencegah lebih dari satu proses
untuk melakukan proses writing dan reading kepada shared data pada saat yang
sama. Dengan kata lain kita memutuhkan mutual exclusion, sebuah jalan yang
menjamin jika sebuah proses sedang menggunakan shared berkas, proses lain
dikeluarkan dari pekerjaan yang sama. Kesulitan yang terjadi karena proses 2
mulai menggunakan variabel bersama sebelum proses 1 menyelesaikan tugasnya.
Masalah menghindari
race conditions dapat juga diformulasikan secara abstrak. Bagian dari waktu,
sebuah proses sedang sibuk melakukan perhitungan internal dan hal lain yang
tidak enggiring ke kondisi race conditions. Bagaimana pun setiap kali sebuah
proses mengakses shared memory atau shared berkas atau melakukan sesuatu yang
kitis akan menggiring kepada race conditions.
Oleh
karena itu, dibutuhkan solusi yang tepat untuk menghindari munculnya Race
Condition. Solusi tersebut harus memenuhi ketiga syarat berikut:
·
Mutual Exclusion
·
Progress
·
Bounded Waiting
Walau
pun dapat mencegah race conditions, tapi tidak cukup untuk melakukan kerjasama
antar proses secara pararel dengan baik dan efisien dalam menggunakan shared
data. Kita butuh 4 kondisi agar menghasilkan solusi yang baik:
I.
Tidak ada dua proses secara bersamaan
masuk ke dalam citical section.
II.
Tidak ada asumsi mengenai kecepatan atau
jumlah cpu.
III. Tidak
ada proses yang berjalan di luar critical secion yang dapat mengeblok proses
lain.
IV. Tidak
ada proses yang menunggu selamamya untuk masuk critical section
Ada dua jenis solusi
untuk memecahkan masalah critical section, yaitu.
1.
Solusi Perangkat Lunak. Solusi ini
menggunakan algoritma-algoritma untuk mengatasi masalah critical section.
2.
Solusi Perangkat Keras. Solusi ini
tergantung pada beberapa instruksi mesin tertentu, misalnya dengan
me-non-aktifkan interupsi, mengunci suatu variabel tertentu atau menggunakan
instruksi level mesin seperti tes dan set.
Tidak ada komentar:
Posting Komentar