Anda di halaman 1dari 60

Sinkronisasi Proses

Oleh :
Wahyu Andhyka Kusuma
081233148591
Wahyu_dink@umm.ac.id
Konsep Bahasan
• Perlunya Sinkronisasi
• Bounded Buffer & Race Condition
• Critical Section
▫ Solusi Logic : Algoritma Turn, Algoritma Flag,
Algoritma Turn-Flag, Bakery Algorithm
▫ Solusi Hardware
• Sleep and Wake up
• Semaphores
• Monitor
• Message Passing
• The Dining Philosophers Problem
• Readers and Writers Problem
• The Sleeping Barber Problem
Mengapa Perlu Sinkronisasi ?
• Banyak proses yang mengakses satu data pada
saat yang bersamaan
• Sehingga terjadi ketidakkonsistenan data
• Untuk itulah, sinkronisasi proses dipelukan
untuk menjaga agar data tersebut tetap
konsisten
Masalah yang seringkali muncul

• Masalah Bounded Buffer

• Masalah Race Condition


Masalah Bounded Buffer
++ --
P1 Counter P2

P1 ( Counter ++ ) P2 ( Counter - - )
Register1 = Counter ; Register2 = Counter ;
Register1 = Register1 + 1 ; Register2 = Register2 - 1 ;
Counter = Register1 ; Counter = Register2 ;

Seharusnya Masalah Bounded Buffer


Alur Alur
Register1 = Counter ; Register1 = Counter ;
Register1 = Register1 + 1 ; Register1 = Register1 + 1 ;
Counter = Register1 ; Register2 = Counter ;
Register2 = Counter ; Register2 = Register2 – 1 ;
Register2 = Register2 – 1 ; Counter = Register1 ;
Counter = Register2 ; Counter = Register2 ;
Masalah Race Condition
• Race Condition adalah suatu kondisi dimana
beberapa proses mengakses dan memanipulasi
suatu data secara konkuren. Nilai akhir dari data
tersebut tergantung dari proses mana yang terakhir
selesai dieksekusi.
• Contoh pada masalah Bounded Buffer di atas
sebenarnya sudah menggambarkan terjadinya Race
Condition. P1 dan P2 saling berlomba meng-update
nilai counter sehingga pada suatu waktu, nilai
counter-nya bisa salah.
• Untuk menghindari Race Condition inilah dilakukan
apa yang dinamakan Proses Sinkronisasi.
PROBLEMA CRITICAL SECTION
Apa itu Critical Section ??
• Kunci untuk mencegah terjadinya Race Condition adalah
dengan mencegah suatu proses melakukan manipulasi data
secara bersamaan
• Suatu code proses terdiri dari beberapa bagian :

PROSES
Entry Section
Critical Section
Exit Section
Remainder Section
• Critical Section adalah bagian dari code proses yang berisi
code-code untuk memanipulasi suatu data
Solusi Dari Problema Critical Section

Solusi yang baik harus memenuhi 3 syarat


berikut:
• Mutual Exclution
Tidak ada proses yang menjalankan critical section
bersamaan

• Terjadi Kemajuan ( Progress )


Proses yang sedang menjalankan Remainder Sectionnya,
tidak boleh menjalankan Critival Section berikutnya sebelum
proses lain menyelesaikan Critical Sectionnya

• Ada Batas Waktu ( Bounded Waiting )


Ada batas waktu suatu proses dapat menjalankan critical
sectionnya
Jenis-Jenis Solusi Critical Section

Dua Jenis Solusi Critical Section


 Solusi Perangkat Keras
 Solusi Perangkat Lunak
SOLUSI PERANGKAT LUNAK
Solusi sinkronisasi untuk 2 proses :
Algoritma Turn
Algoritma Flag
Algoritma Turn-Flag

Solusi sinkronisasi untuk banyak proses :


• Bakery Algorithm ( Algoritma Tukang Roti )
Algoritma Turn
• Hanya proses yang mempunyai ID yang sama
dengan ID giliran (Turn) yang boleh masuk ke
critical sectionnya
Algoritma Flag
• Setiap proses berusaha untuk mengecek state
(keadaan) proses yg lain. Jika proses lain sedang
berada di critical sectionnya, maka dia akan
menunggu sampai proses lain tersebut keluar
dari state critical sectionnya.
Algoritma Turn-Flag
• Merupakan penggabungan antara algoritma
Turn dan algoritma Flag.
Bakery Algorithm
Ketika memasuki toko, setiap pelanggan
menerima sebuah nomor. Sayangnya, tukang roti
tidak dapat menjamin bahwa dua proses (dua
pelanggan) tidak akan menerima nomor yang
sama.
Dalam kasus di mana dua proses menerima
nomor yang sama, maka proses dengan nomor ID
terkecil yang akan dilayani dahulu.
Jadi, jika Pi dan Pj menerima nomor yang sama
dan i < j, maka Pi dilayani dahulu.
Solusi Perangkat Keras
Ada 2 metode yang umum digunakan :
Processor Synchronous
Memory Synchronous
Processor Syncronous
• Central Processing Unit (CPU) mempunyai
suatu mekanisme yang dinamakan interrupt
yang digunakan secara intensif.
• Sistem time-shared yang sering
diimplementasikan dengan algoritma RR
(Round Robin), memanfaatkan mekanisme
interrupt di CPU
• Teknisnya, akan ada suatu interrupt ( yang
biasanya adalah timer interrupt ) yang secara
berkala akan menginterrupt sistem
Processor Synchronous ….( 2 )
• Jika kita dapat menon-aktifkan interrupt pada
saat sebuah proses berada di dalam critical
section maka permasalahan dari sinkronisasi
dapat diselesaikan
• Contoh program dari prosesor Atmel ARMtm
mainModul:
00 CLI ' masuk ke Critical Section dengan cara
' men-disable interrupt
01 ADD r1,r2 ' Critical Section
02 .... ' Critical Section
03 SBI ' pergi dari Critical Section dengan cara
' meng-enable interrupt
04 .. ' Remainder Section
Processor Synchronous ….( 3 )
• Mekanisme ini sudah cukup mengatasi isu yang
ada
• Mekanisme ini tidak dapat diterapkan dengan
baik di lingkungan multiprocessor
• Hal ini disebabkan jika kita menon-aktifkan
interrupt, maka yang akan dinon-aktifkan
hanyalah satu prosesor saja, sehingga dapat
mengakibatkan terjadinya hal-hal yang tidak
diinginkan
Back
Memory Synchronous
• Mekanisme memory synchronous memakai suatu nilai
yang disimpan di dalam memori, dan jika suatu proses
berhasil mengubah nilai ini, maka proses tersebut akan
meneruskan ke instruksi selanjutnya
• jika tidak, maka proses ini akan berusaha terus untuk
mengubah nilai tersebut
• Keunggulan dari memory synchronous adalah pada
lingkungan multiprocessor, semua processor akan
terkena dampak ini
• Semua proses yang berada di processor, yang ingin
mengakses critical section, meskipun berada di
processor yang berbeda-beda, akan berusaha untuk
mengubah nilai yang dimaksud
Memory Synchronous …. ( 2 )
• Keunggulan dari memory synchronous adalah
pada lingkungan multiprocessor, semua
processor akan terkena dampak ini
• Semua proses yang berada di processor, yang
ingin mengakses critical section, meskipun
berada di processor yang berbeda-beda, akan
berusaha untuk mengubah nilai yang dimaksud
Memory Synchronous …. ( 3 )
• Mekanisme ini memiliki suatu syarat yang harus
dipenuhi yaitu perlunya perangkat keras
mempunyai kemampuan untuk membuat suatu
instruksi dijalankan secara atomic
Instruksi Atomic
• instruksi atomic adalah satu atau sekelompok
instruksi yang tidak dapat diberhentikan sampai
instruksi tersebut selesai
• Instruksi yang dimaksud di sini adalah instruksi-
instruksi pada high-level programming
• Sebagai contoh: i++ pada suatu bahasa
pemrograman akan diinterpertasikan beberapa
instruksi mesin yang bersifat atomic sebagai
berikut:
00 Load R1,i ' load nilai i ke register 1
01 Inc R1 ' tambahkan nilai register 1 dengan angka 1
02 Store i,R1 ' simpan nilai register 1 ke i
Instruksi Atomic …. ( 2 )
• instruksi baris 00-02 bersifat atomic, tetapi i++
tidak bersifat atomic
• Jikalau instruksi ini (i++) bersifat atomic, maka
ketiga instruksi mesin tsb tidak akan diganggu
dengan interrupt
• instruksi ini bukanlah seperti pada processor
synchronous yang mana akan mematikan
interrupt terlebih dahulu, tetapi instruksi ini
sudah build-in di processor
Instruksi Atomic …. ( 3 )
• Designer processor dapat mengimplementasi
konsep ini dengan dua cara yaitu:
▫ mengimplementasi instruksi yang build-in
▫ mengimplementasi processor mampu membuat suatu instruksi
menjadi atomic
• Intel Pentium ternyata memakai cara yang kedua,
yaitu dengan adanya suatu perintah LOCK-Assert.
Dengan perintah ini maka semua instruksi dapat
dijadikan atomic. Sedangkan SPARC dan IBM
mengimplementasikan suatu rutin yang bersifat
atomic seperti swap dan compareAndSwap
Peran Perangkat Keras Dalam Proses
Sinkronisasi
▫ Sebelum adanya berbagai macam teknik sinkronisasi
seperti saat ini, para programmer cenderung
menggunakan fasilitas yang disediakan oleh perangkat
keras dari komputer untuk melakukan sinkronisasi
▫ Pendekatan melalui perangkat lunak cenderung sulit dan
kompleks diimplementasikan, selain itu dapat
menyebabkan turunnya kinerja dari suatu produk yang
dibuat
Review
Pada pembahasan sebelumnya..
• Algoritma turn
• Algoritma flag
• Algoritma peterson’s (turn & flag)
Algoritma diatas dapat menjadi solusi atas
berbagai masalah seperti : mutual exclusion dan
progres, akan tetapi tidak untuk busy waiting.
Sleep and Wake up
• Solusi pertama adalah sleep dan wake up.
• Sleep adalah system call yang mengakibatkan
dihentikan sementara sebuah proses, sampai
proses lain membangunkan.
• Wake up adalah system call yang mengakibatkan
sebuah proses terbangun.
Sleep and Wake up (next..)
• Masalah yang timbul kemudian signal wake up
tidak tersampaikan karena berbagai kondisi,
sehingga kedua proses akan sleep forever.
• Solusi untuk kasus diatas adalah dengan
menggunakan wake up waiting bit.
• Ketika proses berjalan maka wake up waiting bit
di set on pada saat proses akan sleep maka
proses akan diset off
Semaphores
• Semaphore dalam OS adalah integer yang
digunakan sebagai signal diantara beberapa
proses, 3 operasi dalam semaphore yaitu :
inisialisasi, increment (up) & decrement (down).
• Up berlaku pada saat unblocking process.
• Down berlaku pada saat blocking process
Semaphores (next..)
• Operasi down adalah atomic, dan tidak dapat
diinterupsi sebelum diselesaikan. Operasi ini
menurunkan nilai semaphore, jika nilainya
menjadi non positif (<=0) maka proses yang
mengeksekusi di block.
• Operasi up adalah menaikkan nilai semaphore.
Fungsi Semaphores
Mutual exclusion :
• Thread yang akan memasuki critical section
harus memanggil fungsi down (nilai semaphore
<=0), jika tidak ada thread yang lain dalam
critical section maka thread menggunakan
critical section, jika ada maka thread menunggu,
kemudian setelah selesai thread memanggil
fungsi up (nilai semaphore > 0)
Fungsi Semaphores
Mutual exclusion (next..):
Thread A Thread B
Count = Count +1 Count = Count +1

Thread A Thread B
Down (mutex) Down (mutex)
Count = Count + 1 Count = Count +1
Up (mutex) Up (mutex)
Fungsi Semaphores
Mutual exclusion (next..):
• Semaphore mutex adalah binary semaphore
dengan nilai awal 1
• Thread manapun yang mengeksekusi down
terlebih dahulu akan terus jalan, sedangkan
yang datang kemudian akan menunggu sampai
up dieksekusi.
Fungsi Semaphores
Resource Controller (next..):
• Semaphore menyimpan banyaknya resource
yang tersedia, saat thread ingin menggunakan
resource maka thread menggunakan fungsi
down, jika resource tersedia maka thread dapat
langsung menggunakannya, jika masih
digunakan, maka resourse menunggu sampai
fungsi up dieksekusi.
Fungsi Semaphores
Resource Controller (next..):
Thread A Thread B Thread C
Critical Section Critical Section Critical Section

Thread A Thread B Thread C


Down (multiplex) Down (multiplex) Down (multiplex)
Critical Section Critical Section Critical Section
Up (multiplex) Up (multiplex) Up (multiplex)
Fungsi Semaphores
Resource Controller (next..):
• Semaphore multiplex adalah counting
semaphore dengan nilai awal sesuai kapasitas
resource.
Fungsi Semaphores
Sinkronisasi antar proses:
• Bertujuan untuk mengatur urutan eksekusi
thread

Thread A Thread B
Count = Count +1 Count = Count *2

Thread A Thread B
Count = Count + 1 Down (mutex)
Up (mutex) Count = Count *2
Fungsi Semaphores
Sinkronisasi antar proses (next..):
• Semaphore spinlock kondisi dimana thread
berada dalam waiting loop dan loop tersebut
tidak menghasilkan apapun (busy waiting)
• Mengatasi spinlock dengan waiting queue yaitu
dengan memindahkan thread yang menunggu ke
waiting queue, dan menghentikan prosesnya.
Fungsi Semaphores
Sinkronisasi antar proses (next..):
• Pada semaphore yang telah dimodifikasi ini,
terdapat nilai negatif yang menggambarkan
jumlah thread dalam waiting queue.
Keuntungan Semaphores
• dari segi programming, penanganan masalah
sinkronisasi dengan semaphore umumnya rapi
dan teratur, sehingga mudah untuk dibuktikan
kebenarannya.
• semaphore diimplementasikan dalam hard code
sehingga penggunaannya bersifat portabel.
Monitors
 Monitor adalah suatu tipe data abstrak yang
dapat mengatur aktivitas serta penggunaan
resource oleh beberapa thread.
 Monitor terdiri atas data-data private dengan
fungsi public.
 Method-method monitor hanya ada satubuah
method yang dapat bekerja pada suatu saat.
Monitors

Ruang Kontrol
• enter • Waiting queue
• acquire
• Owning
• Release
Ruang Tunggu • acquire Ruang Tunggu
Masuk Dalam
Monitors
Tipe data Condition :
 Wait, menghentikan kerja thread.
 Signal, membangunkan thread yang sedang
menunggu. Operasi ini hanya membangunkan
satu thread.
 Perbedaan antara signal dan up, signal tidak
akan memproses apapun jika tidak terdapat
thread yg menunggu.
Monitors
Penggunaan semafor kurang praktis. Sebab
kesalahan pada semafor tidak dapat dideteksi oleh
compiler. Keuntungan memakai monitor:
 Kompilator yang telah mengimplementasikan
monitor akan memastikan bahwa resource yang
dapat diakses oleh beberapa thread dilindungi
oleh monitor, sehingga prinsip mutual exclusion
tetap terjaga.
 Kompilator bisa memeriksa kemungkinan
adanya deadlock.
Message Passing
 Message Passing hampir sama dengan
semaphore dan berbeda dengan monitor.
 Menggunakan dua kondisi yakni send dan
receive
 Message Passing digunakan pada problem yang
tidak dapat diatasi oleh semaphore dan monitor,
mis : Proses komunikasi antar mesin dalam
network.
Message Passing
 Dalam kasus produsen – konsumen, maka
message yang di pertukarkan berisi informasi
mengenai kondisi produsen maupun konsumen.
 Untuk menfasilitasi kecepatan akses message
disalah satu bagian (di produsen atau di
konsumen), maka di sediakan mailbox dalam
buffer.
Classical I.P.C Problem
o The Dining Philosophers Problem
Di temukan 1965 oleh djikstra, digambarkan
sebagai berikut, 5 filosof melingkari meja, setiap
filosof memiliki sepiring spageti, spageti yang
mereka makan sangat licin (?) sehingga mereka
butuh 2 garpu untuk memakannya. Diantara 2
piring spageti terdapat 1 garpu.
o The Dining Philosophers Problem
Classical I.P.C Problem
Classical I.P.C Problem
o The Dining Philosophers Problem (next..)
Kehidupan filosof terdiri dari 2 kondisi yaitu
makan dan berfikir, ketika seseorang lapar,
maka dia akan berusaha mendapatkan garpu
kanan dan kiri sekaligus, jika berhasil maka dia
akan makan sementara waktu kemudian
melanjutkan berpikir.
Classical I.P.C Problem
o The Dining Philosophers Problem (next..)
Solusi :
 Menggunakan array state dengan menciptakan 3
kondisi.
 Kondisi tersebut ialah makan (eating), think
(berpikir) dan lapar (hungry)
Classical I.P.C Problem
o The Dining Philosophers Problem (next..)
Dengan kondisi demikian, jika filosof = 1, maka
LEFT = 2, dan RIGHT = 3.

untuk prosedur seperti ini, maka array dari


semaphore hungry dapat ditahan jika LEFT atau
RIGHTnya sedang eating.
Classical I.P.C Problem
o Readers and Writers Problem
Banyak thread bisa berbagi sumber daya
penyimpanan yang sama. Ada thread yang
membaca, ada juga yang menulis. Thread yang
membaca disebut readers (pembaca), dan
menulis disebut writers (penulis). Jika lebih dari
satu thread mengakses data yang sama pada satu
waktu, bisa terjadi korupsi data.
Classical I.P.C Problem
o Readers and Writers Problem (next..)
Kondisi yang harus dipenuhi :
1. Sebuah objek data bisa dibaca oleh beberapa
thread secara simultan.
2. Sebuah objek data yang sedang ditulis oleh
sebuah thread tidak dapat dibagi aksesnya
kepada thread yang lain baik pembaca maupun
penulis.
Classical I.P.C Problem
o Readers and Writers Problem (next..)

“Writer harus memiliki akses yang eksklusif


terhadap suatu objek data, sehingga tidak boleh
ada proses lain yang mengakses sebuah objek
yang sedang diakses oleh writer.”
Classical I.P.C Problem
o Readers and Writers Problem (next..)
Solusinya adalah dengan menggunakan
semaphore.
 P()(atau wait(), tunggu(), dan lain-lain).
Berfungsi sebagai up method.
 V()(atau signal(), sinyal(), dan lain-lain).
Berfungsi sebagai down method.
Classical I.P.C Problem
o The Sleeping Barber Problem
Permasalahan dalam IPC selanjutnya adalah
tukang cukur rambut (barber), barber shop
terdiri dari satu orang tukang cukur, 1 buah kursi
untuk cukur rambut, dan n kursi untuk
menunggu antrian cukur rambut.
Classical I.P.C Problem
o The Sleeping Barber Problem (next..)
Ketika tidak ada pelanggan yang sedang
mencukur rambut, atau tidak ada yang sedang
mengantri di kursi tunggu, maka tukang cukur
akan tidur dikursi cukur.
Ketika pelanggan datang, maka pelanggan akan
membangunkan tukang cukur yang sedang
tertidur. (sleeping barber).
Classical I.P.C Problem
o The Sleeping Barber Problem (next..)
Classical I.P.C Problem
o The Sleeping Barber Problem (next..)
Solusi untuk permasalahan ini ialah dengan
menggunakan 3 buah semaphore :
 Customer (tidak termasuk yg dikursi cukur)
 Barber (0 dan 1)
 Mutex (mutual exclusion)
Dan menggunakan 1 variable waiting

Anda mungkin juga menyukai