|
36
sistem operasi
untuk
memahami
dan
memaksakan
batasan
ini,
karena
maksud
program tidak
dapat
diketahui
oleh
sistem operasi.
Hanya
saja,
sistem
operasi
menyediakan
layanan
(system
call) yang
bertujuan
untuk
mencegah
proses
lain
masuk
ke
critical section
yang
sedang
digunakan
proses tertentu. Pemograman harus menspesifikasikan bagian-bagian
critical section,
sehingga
sistem
operasi
akan
menjaganya
dengan
suatu
mekanisme
untuk
mencegah proses
lain
masuk critical region yang sedang
dipakai proses lain.
2.9.5
Semaphore
Semaphore pada Unix
/
Linux
merupakan suatu counter yang dapat
digunakan
untuk
mensinkronisasi
banyak
thread atau
proses.
Semaphore
dapat
digunakan
ketika
beberapa
proses
mencoba
untuk
mengakses
file
atau sumber daya yang sama.
Semaphore yang tersedia dapat diakses oleh
semua proses sehingga proses-proses tersebut dapat membaca dan
memeriksa
nilai semaphore
dan
juga
dapat
menginisialisasi
serta
mereinisialisasi
nilai
dari semaphore
yang
sewajarnya.
Untuk
alasan
tersebut semaphore hanya disimpan di dalam kernel sehingga dapat diakses
oleh
semua
proses.
Semaphore
merupakan
atomic instruction artinya
suatu
instruksi yang sebenarnya terdiri dari
beberapa
instruksi
tetapi
dianggap
sebagai satu instruksi yang terkecil yang tidak dapat diinterupsi oleh proses
lain.
Disamping
digunakan
untuk
mendapatkan
mutual exclusion,
semaphore juga digunakan sebagai
mekanisme
sleep dan wakeup.
|