5. Instruksi Atomik
Salah satu metode dalam kernel LINUX untuk
sinkronisasi adalah instruksi atomik
Salah satu jenis dari instruksi atomik adalah integer
atomik
5
8. SemaphoreSemafor adalah sebuah variabel bertipe integer
yang selain saat inisialisasi, hanya dapat diakses
melalui dua operasi standar, yaitu increment dan
decrement.
Nama asli dari operasi tersebut sebenarnya
adalah Proberen (test) dan Verhogen
(increment).
Namun, untuk mempermudah pemahaman
digunakan nama signal dan wait
8
14. Semaphore (cont’d)
Dilihat dari operasi wait() nya, semafor dapat
dibedakan menjadi 2:
Semaphore spinlock
Semaphore sleep locking
Pada LINUX, digunakan semaphore sleep locking
15. Semaphore (cont’d)
void signal(int sem_value){
sem_value++;
if(sem_value <= 0){
/*keluarkan satu thread dari
waiting queue*/
/*aktifkan thread tersebut*/
}
}
void wait(int sem_value)
{
sem_value--;
if(sem_value < 0){
/*masukkan thread ke
dalam waiting
queue*/
/*blok thread tersebut*/
}
}
16. Semaphore (cont’d)
Keuntungan
Dari segi programming, penanganan masalah
sinkronisasi dengan semafor umumnya rapi dan
teratur, sehingga mudah untuk dibuktikan
kebenarannya
Semafor diimplementasikan dalam “hard code”
sehingga penggunaannya bersifat portabel
17. Semaphore vs Spin Lock
Berbeda dengan spin lock, semafor
memperbolehkan adanya preemption.
Requirement Recommended
Overhead locking yang rendah Spin lock
Lock hold time yang singkat Spin lock
Lock hold time yang panjang Semaphore
Sleep ketika menunggu lock Semaphore
18. SMP (Symetric MultiProcessing)
Mulai digunakan pada Kernel 2.0
Multiprocessing artinya kernel code dapat
dijalankan dalam dua atau lebih processor
Untuk menjaga agar dua thread tidak
mengakses resources yang sama dalam
waktu yang sama, maka SMP menerapkan
aturan dimana hanya ada satu processor
yang dapat menjalankan thread dalam
kernel mode dengan cara spin lock tunggal
19. SMP
Spin lock tunggal ini tidak memunculkan
permasalahan untuk proses yang banyak
menghabiskan waktu untuk menunggu proses
komputasi, tapi untuk proses yang banyak melibatkan
banyak aktifitas kernel, spin lock menjadi sangat
mengkhawatirkan
19
20. SMP
Dalam pengembangan kernel LINUX 2.1, kernel
spin lock tunggal menjadi banyak lock yang
masing-masing melindungi terhadap masuknya
kembali sebagian kecil data struktur kernel
sehingga mengizinkan banyak processor untuk
dieksekusi oleh kernel mode secara bersamaan.
20
21. SMP
Pada Linux 2.6, kernel mendukung adanya konsep
preemptive, scheduler dalam kernel dapat
menginterrupt kernel code yang sedang berjalan
untuk memberi kesempatan bagi kernel code lain
untuk dijalankan.