zulyanti megasari - sinkronisasi

22
SINKRONISASI SINKRONISASI Zulyanti Megasari 132310054 D3MI2

Upload: belajarkomputer

Post on 27-Jul-2015

44 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Zulyanti Megasari - Sinkronisasi

SINKRONISASISINKRONISASI

Zulyanti Megasari

132310054

D3MI2

Page 2: Zulyanti Megasari - Sinkronisasi

Pendahuluan

Proses:- Independent- Cooperating → Race Condition

Proteksi dapat dilakukan dengan Sinkronisasi

Sinkronisasi?

Critical Section

Page 3: Zulyanti Megasari - Sinkronisasi

Konkurensi Jenis:- Pseudo-concurrency- True-concurrency

Penyebab Konkurensi:- Interrupt- Softirqs dan Tasklets- Kernel Preemption- Sleeping dan Synchronization with user-space- Symmetrical Multiprocessing

Page 4: Zulyanti Megasari - Sinkronisasi

Syarat Sinkronisasi Mutex- Independent- Cooperating → Race Condition

Cara mencapai Mutex:- Processor Synchronous- Memory Synchronous- Instruksi Atomik- Spin Lock- Semaphore- SMP

Page 5: Zulyanti Megasari - Sinkronisasi

Instruksi Atomik

Salah satu metode dalam kernel LINUX untuk sinkronisasi adalah instruksi atomik

Salah satu jenis dari instruksi atomik adalah integer atomik

5

Page 6: Zulyanti Megasari - Sinkronisasi

TestAndSet()

Bersifat atomik Jika dua instruksi TestAndSet () dijalankan

secara serentak, kedua instruksi tersebut akan dieksekusi secara sekuensial

Page 7: Zulyanti Megasari - Sinkronisasi

TestAndSet()

boolean testAndSet(boolean lock){

boolean t = lock;

lock = true;

return t;

} while (testAndSet(lock)) ;

// Critical Section

Lock[0] = false; 7

Page 8: Zulyanti Megasari - Sinkronisasi

Semaphore Semafor 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

Page 9: Zulyanti Megasari - Sinkronisasi

Semaphore (cont’d)

void signal(int sem_value) {sem_value++;

}

void wait(int sem_value) {while(sem_value <= 0);sem_value--;

}

Page 10: Zulyanti Megasari - Sinkronisasi

Semaphore (cont’d)

Jenis- Binary (primitive semaphore)-0/1- Counting semaphore-0,1,2,3,…

(tergantung usage count) Fungsi

– Mutual Exclusion– Resource Controller– Sinkronisasi antar proses

Page 11: Zulyanti Megasari - Sinkronisasi

Semaphore (cont’d)

Mutual Exclusion

thread A: thread B:

wait(mutex); wait(mutex);

count = count + 1; count = count + 1;

signal(mutex); signal(mutex);

Page 12: Zulyanti Megasari - Sinkronisasi

Semaphore (cont’d)

Resource Controller

thread A: thread B: thread C:

wait(multiplex); wait(multiplex); wait(multiplex);

//critical section //critical section //critical section

signal(multiplex); signal(multiplex); signal(multiplex);

Page 13: Zulyanti Megasari - Sinkronisasi

Semaphore (cont’d)

Sinkronisasi Antar-Proses

thread A: thread B:

count = count + 1; wait(mutex);

signal(mutex); count = count * 2;

Page 14: Zulyanti Megasari - Sinkronisasi

Semaphore (cont’d)

Dilihat dari operasi wait() nya, semafor dapat dibedakan menjadi 2:– Semaphore spinlock– Semaphore sleep locking Pada LINUX, digunakan semaphore sleep

locking

Page 15: Zulyanti Megasari - Sinkronisasi

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*/

}

}

Page 16: Zulyanti Megasari - Sinkronisasi

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

Page 17: Zulyanti Megasari - Sinkronisasi

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

Page 18: Zulyanti Megasari - Sinkronisasi

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

Page 19: Zulyanti Megasari - Sinkronisasi

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

Page 20: Zulyanti Megasari - Sinkronisasi

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

Page 21: Zulyanti Megasari - Sinkronisasi

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.

Page 22: Zulyanti Megasari - Sinkronisasi

TERIMA KASIH

22