sinkronisasi proses

60
Sinkronisasi Proses Oleh : Wahyu Andhyka Kusuma 081233148591 [email protected]

Upload: wauna

Post on 24-Feb-2016

147 views

Category:

Documents


0 download

DESCRIPTION

Sinkronisasi Proses. Oleh : Wahyu Andhyka Kusuma 081233148591 [email protected]. Konsep Bahasan. Perlunya Sinkronisasi Bounded Buffer & Race Condition Critical Section Solusi Logic : Algoritma Turn , Algoritma Flag , Algoritma Turn-Flag , Bakery Algorithm Solusi Hardware - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Sinkronisasi Proses

Sinkronisasi ProsesOleh :Wahyu Andhyka [email protected]

Page 2: Sinkronisasi Proses

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

Page 3: Sinkronisasi Proses

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

Page 4: Sinkronisasi Proses

Masalah yang seringkali muncul•Masalah Bounded Buffer

•Masalah Race Condition

Page 5: Sinkronisasi Proses

Masalah Bounded Buffer

P1 ( Counter ++ )Register1 = Counter ;Register1 = Register1 + 1 ;Counter = Register1 ;

Counter P2P1 + + - -

P2 ( Counter - - )Register2 = Counter ;Register2 = Register2 - 1 ;Counter = Register2 ;

SeharusnyaAlur

Register1 = Counter ;Register1 = Register1 + 1 ;Counter = Register1 ;Register2 = Counter ;Register2 = Register2 – 1 ;Counter = Register2 ;

Masalah Bounded BufferAlur

Register1 = Counter ;Register1 = Register1 + 1 ;Register2 = Counter ;Register2 = Register2 – 1 ;Counter = Register1 ;Counter = Register2 ;

Page 6: Sinkronisasi Proses

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.

Page 7: Sinkronisasi Proses

PROBLEMA CRITICAL SECTION

Page 8: Sinkronisasi Proses

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 :

• Critical Section adalah bagian dari code proses yang berisi code-code untuk memanipulasi suatu data

PROSES

Entry SectionCritical Section

Exit SectionRemainder Section

Page 9: Sinkronisasi Proses

Solusi Dari Problema Critical SectionSolusi 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

Page 10: Sinkronisasi Proses

Jenis-Jenis Solusi Critical Section

Dua Jenis Solusi Critical Section Solusi Perangkat Keras Solusi Perangkat Lunak

Page 11: Sinkronisasi Proses

SOLUSI PERANGKAT LUNAKSolusi sinkronisasi untuk 2 proses :Algoritma TurnAlgoritma FlagAlgoritma Turn-Flag

Solusi sinkronisasi untuk banyak proses :•Bakery Algorithm ( Algoritma Tukang Roti

)

Page 12: Sinkronisasi Proses

Algoritma Turn•Hanya proses yang mempunyai ID yang

sama dengan ID giliran (Turn) yang boleh masuk ke critical sectionnya

Page 13: Sinkronisasi Proses

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.

Page 14: Sinkronisasi Proses

Algoritma Turn-Flag•Merupakan penggabungan antara

algoritma Turn dan algoritma Flag.

Page 15: Sinkronisasi Proses

Bakery AlgorithmKetika 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.

Page 16: Sinkronisasi Proses

Solusi Perangkat KerasAda 2 metode yang umum digunakan :Processor SynchronousMemory Synchronous

Page 17: Sinkronisasi Proses

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

Page 18: Sinkronisasi Proses

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

Page 19: Sinkronisasi Proses

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

Page 20: Sinkronisasi Proses

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

Page 21: Sinkronisasi Proses

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

Page 22: Sinkronisasi Proses

Memory Synchronous …. ( 3 )•Mekanisme ini memiliki suatu syarat yang

harus dipenuhi yaitu perlunya perangkat keras mempunyai kemampuan untuk membuat suatu instruksi dijalankan secara atomic

Page 23: Sinkronisasi Proses

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

Page 24: Sinkronisasi Proses

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

Page 25: Sinkronisasi Proses

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

Page 26: Sinkronisasi Proses

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

Page 27: Sinkronisasi Proses

ReviewPada 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.

Page 28: Sinkronisasi Proses

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.

Page 29: Sinkronisasi Proses

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

Page 30: Sinkronisasi Proses

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

Page 31: Sinkronisasi Proses

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.

Page 32: Sinkronisasi Proses

Fungsi SemaphoresMutual 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)

Page 33: Sinkronisasi Proses

Fungsi SemaphoresMutual exclusion (next..):

Thread A Thread BCount = Count +1 Count = Count +1

Thread A Thread BDown (mutex) Down (mutex)

Count = Count + 1 Count = Count +1Up (mutex) Up (mutex)

Page 34: Sinkronisasi Proses

Fungsi SemaphoresMutual 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.

Page 35: Sinkronisasi Proses

Fungsi SemaphoresResource 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.

Page 36: Sinkronisasi Proses

Fungsi SemaphoresResource Controller (next..):

Thread A Thread B Thread CCritical Section Critical Section Critical Section

Thread A Thread B Thread CDown

(multiplex)Down

(multiplex)Down

(multiplex)Critical Section Critical Section Critical SectionUp (multiplex) Up (multiplex) Up (multiplex)

Page 37: Sinkronisasi Proses

Fungsi SemaphoresResource Controller (next..):• Semaphore multiplex adalah counting

semaphore dengan nilai awal sesuai kapasitas resource.

Page 38: Sinkronisasi Proses

Fungsi SemaphoresSinkronisasi antar proses:•Bertujuan untuk mengatur urutan

eksekusi thread

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

Thread A Thread BCount = Count + 1 Down (mutex)

Up (mutex) Count = Count *2

Page 39: Sinkronisasi Proses

Fungsi SemaphoresSinkronisasi 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.

Page 40: Sinkronisasi Proses

Fungsi SemaphoresSinkronisasi antar proses (next..):• Pada semaphore yang telah dimodifikasi

ini, terdapat nilai negatif yang menggambarkan jumlah thread dalam waiting queue.

Page 41: Sinkronisasi Proses

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.

Page 42: Sinkronisasi Proses

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.

Page 43: Sinkronisasi Proses

Monitors

• enter

Ruang Tunggu Masuk

Page 44: Sinkronisasi Proses

MonitorsTipe 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.

Page 45: Sinkronisasi Proses

MonitorsPenggunaan 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.

Page 46: Sinkronisasi Proses

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.

Page 47: Sinkronisasi Proses

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.

Page 48: Sinkronisasi Proses

Classical I.P.C ProblemoThe 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.

Page 49: Sinkronisasi Proses

Classical I.P.C ProblemoThe Dining Philosophers Problem

Page 50: Sinkronisasi Proses

Classical I.P.C ProblemoThe 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.

Page 51: Sinkronisasi Proses

Classical I.P.C ProblemoThe Dining Philosophers Problem (next..)Solusi : Menggunakan array state dengan

menciptakan 3 kondisi. Kondisi tersebut ialah makan (eating),

think (berpikir) dan lapar (hungry)

Page 52: Sinkronisasi Proses

Classical I.P.C ProblemoThe 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.

Page 53: Sinkronisasi Proses

Classical I.P.C ProblemoReaders 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.

Page 54: Sinkronisasi Proses

Classical I.P.C ProblemoReaders 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.

Page 55: Sinkronisasi Proses

Classical I.P.C ProblemoReaders 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.”

Page 56: Sinkronisasi Proses

Classical I.P.C ProblemoReaders 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.

Page 57: Sinkronisasi Proses

Classical I.P.C ProblemoThe 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.

Page 58: Sinkronisasi Proses

Classical I.P.C ProblemoThe 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).

Page 59: Sinkronisasi Proses

Classical I.P.C ProblemoThe Sleeping Barber Problem (next..)

Page 60: Sinkronisasi Proses

Classical I.P.C ProblemoThe 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