8-Sinkronisasi Proses

Download Report

Transcript 8-Sinkronisasi Proses

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 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 ++ )

Register1 = Counter ; Register1 = Register1 + 1 ; Counter = Register1 ;

P2 ( Counter - - )

Register2 = Counter ; Register2 = Register2 - 1 ; Counter = Register2 ;

Seharusnya Alur

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

Masalah Bounded Buffer Alur

Register1 = Counter ; Register1 = Register1 + 1 ; Register2 = Counter ; Register2 = Register2 – 1 ; Counter = Register1 ; 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 ARM tm mainModul: 00 CLI 02 .... ' masuk ke Critical Section dengan cara ' men-disable interrupt 01 ADD r1,r2 ' Critical Section ' Critical Section 03 SBI 04 .. ' pergi dari Critical Section dengan cara ' meng-enable interrupt ' 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 Count = Count +1 Thread B Count = Count +1 Thread A Down (mutex) Count = Count + 1 Up (mutex) Thread B Down (mutex) Count = Count +1 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 Critical Section Thread B Critical Section Thread C Critical Section Thread A Up (multiplex) Thread B Thread C Down (multiplex) Down (multiplex) Down (multiplex) Critical Section Critical Section Critical Section 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 Count = Count +1 Thread B Count = Count *2 Thread A Count = Count + 1 Up (mutex) Thread B Down (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

• enter Ruang Tunggu Masuk Ruang Kontrol • acquire • Owning • Release • acquire • Waiting queue Ruang Tunggu 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 waktu, bisa terjadi korupsi data.

(pembaca), dan menulis disebut writers (penulis). Jika lebih dari satu thread mengakses data yang sama pada satu

Classical I.P.C Problem

o 1.

Readers and Writers Problem (next..) Kondisi yang harus dipenuhi : 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