sinkronisasi proses

Download Sinkronisasi Proses

Post on 24-Feb-2016

113 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

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

Konsep BahasanPerlunya SinkronisasiBounded Buffer & Race ConditionCritical SectionSolusi Logic : Algoritma Turn, Algoritma Flag, Algoritma Turn-Flag, Bakery AlgorithmSolusi HardwareSleep and Wake upSemaphoresMonitorMessage PassingThe Dining Philosophers ProblemReaders and Writers ProblemThe Sleeping Barber Problem

Mengapa Perlu Sinkronisasi ?Banyak proses yang mengakses satu data pada saat yang bersamaanSehingga terjadi ketidakkonsistenan dataUntuk itulah, sinkronisasi proses dipelukan untuk menjaga agar data tersebut tetap konsistenMasalah yang seringkali munculMasalah Bounded Buffer

Masalah Race ConditionMasalah Bounded BufferP1 ( Counter ++ )Register1 = Counter ;Register1 = Register1 + 1 ;Counter = Register1 ;CounterP2P1+ +- -P2 ( Counter - - )Register2 = Counter ;Register2 = Register2 - 1 ;Counter = Register2 ;SeharusnyaAlurRegister1 = Counter ;Register1 = Register1 + 1 ;Counter = Register1 ;Register2 = Counter ;Register2 = Register2 1 ;Counter = Register2 ;Masalah Bounded BufferAlurRegister1 = Counter ;Register1 = Register1 + 1 ;Register2 = Counter ;Register2 = Register2 1 ;Counter = Register1 ;Counter = Register2 ;Masalah Race ConditionRace 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 SECTIONApa itu Critical Section ??Kunci untuk mencegah terjadinya Race Condition adalah dengan mencegah suatu proses melakukan manipulasi data secara bersamaanSuatu code proses terdiri dari beberapa bagian :

Critical Section adalah bagian dari code proses yang berisi code-code untuk memanipulasi suatu dataPROSESEntry SectionCritical SectionExit SectionRemainder SectionSolusi Dari Problema Critical SectionSolusi yang baik harus memenuhi 3 syarat berikut:

Mutual ExclutionTidak 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 SectionDua Jenis Solusi Critical SectionSolusi Perangkat KerasSolusi Perangkat Lunak

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

Solusi sinkronisasi untuk banyak proses :Bakery Algorithm ( Algoritma Tukang Roti )Algoritma TurnHanya proses yang mempunyai ID yang sama dengan ID giliran (Turn) yang boleh masuk ke critical sectionnyaAlgoritma FlagSetiap 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-FlagMerupakan penggabungan antara algoritma Turn dan algoritma Flag.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.Solusi Perangkat KerasAda 2 metode yang umum digunakan :Processor SynchronousMemory SynchronousProcessor 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 SectionProcessor 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 diinginkanBackMemory SynchronousMekanisme 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 tersebutKeunggulan 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 dimaksudMemory 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 dimaksudMemory Synchronous . ( 3 )Mekanisme ini memiliki suatu syarat yang harus dipenuhi yaitu perlunya perangkat keras mempunyai kemampuan untuk membuat suatu instruksi dijalankan secara atomicInstruksi Atomicinstruksi 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 . ( 3 )Designer processor dapat mengimplementasi konsep ini dengan dua cara yaitu: mengimplementasi instruksi yang build-inmengimplementasi 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 SinkronisasiSebelum 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 dibuatReviewPada pembahasan sebelumnya..Algoritma turnAlgoritma flagAlgoritma petersons (turn & flag)Algoritma diatas dapat menjadi solusi atas berbagai masalah seperti : mutual exclusion dan progres, akan tetapi tidak untuk busy waiting. Sleep and Wake upSolusi 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 offSemaphoresSemaphore 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 processSemaphores (next..)Operasi down adalah atomic, dan tidak dapat diinterupsi sebelum diselesaikan. Operasi ini menurunkan nilai semaphore, jika nilainya menjadi non positif (