Bernis Sagita - Sinkronisasi
-
Upload
belajarkomputer -
Category
Software
-
view
35 -
download
4
Transcript of Bernis Sagita - Sinkronisasi
PendahuluanProses:- Independent- Cooperating → Race Condition
Proteksi dapat dilakukan dengan Sinkronisasi
Sinkronisasi?
Critical Section
KonkurensiJenis:- Pseudo-concurrency- True-concurrency
Penyebab Konkurensi:- Interrupt- Softirqs dan Tasklets- Kernel Preemption- Sleeping dan Synchronization with
user-space- Symmetrical Multiprocessing
Syarat SinkronisasiMutex- Independent- Cooperating → Race Condition
Cara mencapai Mutex:- Processor Synchronous- Memory Synchronous- Instruksi Atomik- Spin Lock- Semaphore- SMP
Instruksi AtomikSalah satu metode dalam kernel LINUX
untuk sinkronisasi adalah instruksi atomikSalah satu jenis dari instruksi atomik adalah
integer atomik
5
TestAndSet()Bersifat atomikJika dua instruksi TestAndSet () dijalankan
secara serentak, kedua instruksi tersebut akan dieksekusi secara sekuensial
TestAndSet()boolean testAndSet(boolean lock){
boolean t = lock;lock = true;return t;
}while (testAndSet(lock)) ;
// Critical SectionLock[0] = false;
7
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
Semaphore (cont’d)void signal(int sem_value) {
sem_value++;}
void wait(int sem_value) {while(sem_value <= 0);sem_value--;
}
Semaphore (cont’d)Jenis- Binary (primitive semaphore)-0/1- Counting semaphore-0,1,2,3,… (tergantung
usage count)Fungsi
Mutual ExclusionResource ControllerSinkronisasi antar proses
Semaphore (cont’d)Mutual Exclusion
thread A: thread B:wait(mutex); wait(mutex);count = count + 1; count = count + 1;signal(mutex); signal(mutex);
Semaphore (cont’d)Resource Controller
thread A: thread B: thread C:wait(multiplex); wait(multiplex);
wait(multiplex);//critical section //critical section //critical
sectionsignal(multiplex); signal(multiplex);
signal(multiplex);
Semaphore (cont’d)Sinkronisasi Antar-Proses
thread A: thread B:count = count + 1; wait(mutex);signal(mutex); count = count * 2;
Semaphore (cont’d)Dilihat dari operasi wait() nya, semafor dapat
dibedakan menjadi 2:Semaphore spinlockSemaphore sleep locking Pada LINUX, digunakan semaphore sleep
locking
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*/}
}
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
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
SMP (Symetric MultiProcessing)Mulai digunakan pada Kernel 2.0Multiprocessing artinya kernel code dapat
dijalankan dalam dua atau lebih processorUntuk 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
SMPSpin 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
SMPDalam 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