Anda di halaman 1dari 1

Solusi perangkat keras pada sinkronisasi yang rumit serta umumnya tidak dapat diakses oleh

pemrogram aplikasi. Sebagai gantinya, perancang sistem operasi membuat perangkat lunak untuk
memecahkan masalah bagian penting. Yang paling sederhana dari alat-alat ini adalah mutex locks.
(Bahkan, istilah mutex adalah kependekan dari mutual exclusion.) mutex locks digunakan untuk
melindungi daerah kritis dan dengan demikian mencegah race condition. Artinya, suatu proses harus
memperoleh locks sebelum memasuki critical section, dan dapat melepaskan lock ketika keluar dari
critical section. Acquires() berfungsi untuk mendapatkan locks, dan release() berfungsi untuk
melepaskan locks.

Mutex locks memiliki variabel boolean yang nilainya menunjukkan jika locks tersedia atau tidak. Jika
locks tersedia, panggilan untuk acquires() berhasil, dan locks kemudian dianggap tidak tersedia. Suatu
proses yang mencoba untuk memperoleh locks yang tidak tersedia diblokir sampai locks dilepaskan.

Definisi aquires () adalah sebagai berikut:

acquire() { while (!available)


; /* busy wait */
available = false;;
}
do {
acquire lock
critical section
release lock
remainder section
} while (true);
Definisi release() adalah sebagai berikut:

release() { available = true;


}
Pemanggilan untuk aquires() atau release() harus dilakukan secara atom. Dengan demikian, mutex locks
sering diimplementasikan menggunakan salah satu mekanisme perangkat keras.

Kerugian utama dari implementasi yang diberikan di sini adalah bahwa hal itu membutuhkan busy
waiting. Sementara proses berada di critical section, setiap proses lain yang mencoba memasuki critical
section harus mengulang terus menerus dalam panggilan untuk aquires(). Bahkan, jenis mutex locks ini
juga disebut spinlock karena proses "berputar" sambil menunggu locks hingga tersedia. Perulangan
terus-menerus ini jelas merupakan masalah dalam sistem multiprogramming, di mana satu CPU dibagi di
antara banyak proses . Busy waiting menghabiskan sumber daya CPU sehingga beberapa proses lain
mungkin bisa digunakan secara produktif.

Spinlocks memiliki keuntungan, namun dalam konteks itu tidak diperlukan saklar ketika suatu proses
harus menunggu locks, dan pengalih konteks dapat memakan waktu yang cukup lama. Dengan
demikian, ketika locks diharapkan akan diadakan untuk waktu yang singkat, spinlocks berguna. Mereka
sering digunakan pada sistem multiprosesor di mana satu thread dapat "berputar" pada satu prosesor
sementara thread lain melakukan bagian penting pada prosesor lain.

Anda mungkin juga menyukai