critical
section adalah
sebuah protokol yang di disain supaya proses-proses dapat menggunakannya secara
bersama-sama. Setiap proses harus memesan waktu untuk memasuki critical
section-nya. Yang disebut entry section. dan Akhir dari critical
section itu disebut exit section. Dan setelah itu ada remainder section.
Solusi
dari masalah critical section harus memenuhi tiga syarat
berikut:
1. Mutual Exclusion.
Jika
suatu proses sedang menjalankan critical section-nya, maka
proses-proses lain tidak dapat menjalankan critical section mereka. Tidak ada dua proses yang
berada di critical section pada saat yang bersamaan.
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-proses yang yang sedang berada dalam entry section saja
yang dapat berkompetisi untuk mengerjakan critical section.
3. Ada batas waktu tunggu (bounded waiting).
Jika
ada suatu 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 seolah-olah berhenti, menunggu request akses ke critical section diperbolehkan).
Ada dua
jenis solusi masalah critical section, yaitu:
1. Solusi perangkat lunak.
Dengan
menggunakan algoritma-alogoritma yang nilai kebenarannya tidak tergantung pada
asumsi-asumsi lain, selain bahwa setiap proses berjalan pada kecepatan yang
bukan nol.
2. Solusi perangkat keras.
Tergantung
pada beberapa instruksi mesin tertentu, misalnya dengan me-non-aktifkan
interupsi atau dengan mengunci suatu variabel tertentu.