460 likes | 867 Views
Selamat Pagi . Sinkronisasi dan Deadlock Oleh ; Theresia Lulu Indah. K NIM : 081310113003 D3 – Sistem Informasi Universitas Airlangga. Bab Presentasi. 2. Sinkronisasi Pengertian Sinkronisasi Manfaat Sinkronisasi Masalah Klasik dalam Sinkronisasi Perangkat Sinkronisasi
E N D
Selamat Pagi Sinkronisasi dan Deadlock Oleh ; Theresia Lulu Indah. K NIM : 081310113003 D3 – Sistem Informasi Universitas Airlangga
Bab Presentasi • 2. Sinkronisasi • Pengertian Sinkronisasi • Manfaat Sinkronisasi • Masalah Klasik dalam • Sinkronisasi • Perangkat Sinkronisasi • Masalah Lain • Sinkronisasi • Deadlock • Pengertian Deadlock • Ilustrasi Deadlock • Penyebab Deadlock • Cara Mengatasi Deadlock • Menghindari Deadlock • Deadlock di Linux
Pengertian Deadlock Deadlock adalah keadaan dimana 2 atau lebih proses saling menunggu meminta resources untuk waktu yang tidak terbatas lamanya. Analoginya seperti pada kondisi jalan raya dimana terjadi kemacetan parah. Deadlock adalah efek samping dari sinkronisasi, dimana satu variabel digunakan oleh 2 proses.
Penyebab Deadlock 1. Mutual Exclusion: Suatu kondisi dimana setiap sumber daya diberikan tepat pada satu proses pada suatu waktu. 2. Hold and Wait : Kondisi yang menyatakan proses-proses yang sedang memakai suatu sumber daya dapat meminta sumber daya yang lain. 3. Circular Waiting : Kondisi yang menyatakan bahwa adanya rantai saling meminta sumber daya yang dimiliki oleh suatu proses oleh proses lainnya. 4. No Preemptive : Kondisi dimana suatu sumber daya yang sedang berada pada suatu proses tidak dapat diambil secara paksa dari proses tersebut,sampai proses itu melepaskannya. Apabila ada salah satu dari antara 4 syarat diatas yang tidak terpenuhi,maka tidak bisa disebut dengan Deadlock.
Cara Mengatasi Deadlock • Prevention : memastikan paling sedikitsatupenyebab Deadlock tidakberlaku • Avoidance : sistemmenolak request terhadap resource yang berpotensi deadlock, Algoritma Banker • Detection and Recovery : membiarkan Deadlock terjadi, lalumendeteksinya, kemudianmelakukan recovery, Algoritma Ostrich
Prevention • Mutual Exclusion : membuat file spool untuk resource yang digunakanbersama-sama • Hold and Wait : memaksasebuahprosesuntukmelepaskan resource yang dimilikinyaketikameminta resource baru • Circular Waiting : memberikanpenamaan resource berdasarkanurutanatau level • No Preemption : membolehkanadanya preemption
Avoidance • Resource manager menolakproses yang meminta resource yang berpotensi deadlock • Jikaadapermintaan resource yang maksimumdigunakan, makaprosestersebutakandipaksauntukmelepaskan resource yang sudahdimiliknya.
Detection and Recovery • Membiarkan deadlock terjadilalumendeteksinyakemudianmelakukantindakan recovery seperlunya • Algoritma yang paling dikenaladalahalgoritma Ostrich • Tindakan recovery yang dilakukanadalah : melakukan preemption, membuat checkpoint untuk rollback lalumembunuhproses yang prioritasnyakecil.
Cara Menghindari Deadlock • Kondisi Aman ( Safe State ) : Suatu keadaan dapat dinyatakan sebagai safe state jika tidak terjadi deadlock dan terdapat cara untuk memenuhi semua permintaan sumber daya yang ditunda tanpa menghasilkan deadlock. Dengan cara mengikuti urutan tertentu. • Kondisi Tak Aman (Unsafe state) : Suatu state dinyatakan sebagai unsafe state jika tidak terdapat cara untuk memenuhi semua permintaaan yang saat ini ditunda dengan menjalankan proses-proses dengan suatu urutan.
Deadlock di Linux • Linux dengan kernel versi 2.4 mengalami deadlock padasistemdenganprosesorlebihdari 2 unit • Deadlock inipadaumumnyaterjadibilaaksesmelalui Ethernet dilakukan, terutamabilamelakukanteaming padajaringan. Prosesakanterblockdansalingmenunggu resource Ethernet tersebutbebas.
Deadlock Linux • Beberapakasus deadlock jugaterjadiketika OS Linux dijalankandarikondisi sleep, proses yang mengakses USB device akanmengalami deadlock • Hal inidisebabkanfungsi scheduler pada kernel yang digunakantidakmenyimpan state sebelum sleep, sehinggaketika kernel dijalankankembali, Proses-proses yang mengakses USB device tersebutmenunggugiliranmengakses, sementara scheduler belummenjadwalkanmasing-masingproses.
Pengertian Sinkronisasi Akses bebarengan untuk berbagi dua bersama dapat mengakibatkan inkosistensi data. Pemeliharaan konsistensi data memerlukan mekanisme untuk memastikan eksekusi dari proses kerjasama.
Perangkat Sinkronisasi • Monitor digunakan untuk menangani masalah yang muncul karena pemakaian Semaphore. Monitor menjamin mutual exclusion. Untuk menangani masalah sinkronisasi yang lebih rumit monitor menyediakan condition variabel • JVM, mengimplementasikan monitor. Monitor JVM bekerja dengan object locking dan method – method wait() serta notify. Monitor JVM dapat digunakan dengan menggunakan keyword synchronized.
Manfaat Sinkronisasi Sebagai penyimpan data sementara dan non Sementara pada kehidupan kita yang sekarang serba komputer dalam mengerjakan semua pekerjaan dari anak SMP, SMA sampai sudah bekerja kantoran pasti membutuhkan penyimpan data agar dapat memudahkan pekerjaan dalam semua bidang.
Masalah Klasik dalam Sinkronisasi Masalah Klasik Sinkronisasi dapat dibedakan menjadi 3 : • Bounded – Buffer Problem • Readers and Writers Problem • Dining Philosophers Problem
Pengertian Bounded –Buffer Problem Bounded buffer merupakan suatu struktur data yang mampu untuk menyimpan beberapa nilai dan mengeluarkannya kembali ketika diperlukan . Jika dianalogikan bounded buffer ini akan mirip dengan sebuah tumpukan piring. Kita menaruh piring dan menaruh lagi sebuah piring, ketika ingin mengambil piring maka tumpukan yang paling atas yang akan terambil.Jadi piring terakhir yang dimasukan akan pertama kali diambil.
Solusi Bounded – Buffer Problem Solusi Shared Memory untuk Bounded – Buffer, mengijinkan (n-1) items di dalam buffer untuk suatu waktu tertentu.
Pengertian Readers and Writers Problem Readers and Writers Problem adalah problem yang memodelkan proses yang mengakses database. Masalah ini timbul ketika ada dua proses atau lebih berbagi data yang sama. Data yang dimaksud disini bisa berbentuk buffer, file atau objek dari suatu program
Solusi Readers and Writers Problem • Pembaca di prioritaskan • Penulis di prioritaskan • Kedua jenis proses mempunyai prioritas yang sama.
Solusi Pembaca di Prioritaskan Reader tidak akan menunggu reader(s) lain yang sedang membaca, walaupun ada writer yang sedang menunggu. Dengankatalain, Jika ada reader yang datang ketika reader lain sedang membaca dan sebuah writer sedang menunggu, maka reader yang baru datang tersebut akan langsung mendapat giliran untuk membaca. Write rakan ditunda pengerjaannya.
Solusi Penulis di Prioritaskan Di mana suatu writer sedang dijalankan oleh sistem, maka tidak boleh ada reader yang memulai untuk membaca data.
Solusi Kedua Jenis Punya Prioritas Sama Tidak ada prioritas khusus yang diberikan kepada kedua jenis proses
Sejarah Dining Philosophers Prolem Masalah ini pertama ini pertama kali ditulis dan diselesaikan oleh Djikstra pada tahun 1965.Masalah ini memodelkan masalah enkapsulasi dari ketergantungan mesin dan masalah portabilitas. Dalam masalah Dining Philosophers, diketahui sejumlah (N) filusuf yang hanya memiliki tiga status, berpikir, lapar, dan makan. Semua filusuf berada di sebuah meja makan bundar yang ditata sehingga di depan setiap filusuf ada sebuah piring berisi mie dan di antara dua piring yang bersebelahan terdapat sebuah sumpit.
Solusi Dining – Philosophers Problem Solusi Dining – Philosophers Problem ada dua, yakni : • Solusi Waiter • Solusi Hierarki Resource
Solusi Waiter SolusiWaiter : solusi sederhana ini dilakukan dengan mengadakan seorang waiter yang senantiasa mengawasi penggunaan sumpit di meja makan. Ketika empat buah (dua pasang) sumpit sedang dipakai,orang berikutnya yang ingin memakai sumpit harus meminta izin kepada sang waiter, yang hanya dapat diberi ketika salah satu sumpit telah selesai terpakai.
Solusi Hierarki Resource Solusi Hirarki Resource: resources (sumpit) di meja makan telah diberi susunan hirarki. Setiap permintaan orang terhadap sebuah sumpit harus dilakukan pada susunan tertentu, dan dikembalikan pada susunan sebaliknya. Dalam hal ini, setiap orang dapat mengambil sumpit dimanapun diatas meja misalkan setiap sumpit diberi nomor sebagai tingkat hirarki dari 1 sampai 5, seseorang hanya dapat mengambil sumpit dengan nomor yang paling rendah, kemudian mengambil sumpit yang setingkat lebih tinggi. Ketika ia hendak mengembalikannya, orang itu harus meletakkan sumpit dengan nomor yang lebih tinggi terlebih dahulu, lalu yang rendah.
Contoh Kasus Dining – Philosophers Problem Pada sebuah computer tentunya terdapat aplikasi-aplikasi yang dapat memudahkan kita untuk melakukan suatu pekerjaan. Namun disamping kemudahan yang diberikan, terdapat ancaman negative yang dapat aplikasi-aplikasi itu berikan pada computer kita jika kita tidak menggunakannya dengan benar. Suatu contoh ketika kita mengerjakan suatu tugas. Kita membuka dan menjalankan beberapa aplikasi secara bersamaan. Aplikasi yang kita gunakan misalnya ms. Word (membuka 6 file word sebagai sumber tugas), winamp untuk memainkan lagu, firefox untuk browsing internet, pidgin untuk sesekali chating, sementara itu aplikasi start up yang berjalan juga banyak dan RAM yang tersedia tidak begitu besar sehingga hal ini akan membuat computer menjalankan aplikasi itu terus-menerus jika kita tidak mematikannya. Hal ini akan membuat computer berjalan semakin lambat dan memungkinkan terjadinya starvation atau deadlock dalam beberapa waktu kemudian.
Masalah Lain pada Sinkronisasi Masalah pada Sistem Operasi Sinkronisasi bisa terdapat dari masalah lainnya seperti Masalah Race Condition & Critical Section. • Arti dari Race Conditon adalah situasi di mana beberapa proses mengakses dan memanipulasi data bersama pada saat besamaan. • Arti dari masalah Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya bersama diakses
Solusi untuk Race Section Bagian dari program dimana shared memory diakses disebut Critical Section atau Critical Region. Walaupun dapat mencegah race conditions, tapi tidak cukup untuk melakukan kerjasama antar proses secara pararel dengan baik dan efisien dalam menggunakan shared data. Kita butuh 4 kondisi agar menghasilkan solusi yang baik: • Tidak ada dua proses secara bersamaan masuk ke dalam critical section. • Tidak ada asumsi mengenai kecepatan atau jumlah cpu. • Tidak ada proses yang berjalan di luar critical secion. • Tidak ada proses yang menunggu selamanya untuk masuk critical section.
Kode Critical Section • Entry Section : kode yang digunakan untuk masuk ke dalam critical section • Critical Section : Kode di mana hanya ada satu proses yang dapat dieksekusi pada satu waktu. • Exit Section: akhir dari critical section, mengizinkan proses lain. • Reminder Section : kode istirahat setelah masuk ke critical section
Solusi untuk Critical Section • Mutual exclution : Jika proses pi sedang mengeksekusi critical section-nya maka tidak ada proses lain yang dapat mengeksekusi dalam critical section mereka. • Progress : Jika tidak ada proses yang sedang dieksekusi dalam critical section dan ada beberapa proses yang ingin masuk ke critical section mereka, maka pemilihan proses yang akan masuk ke critical section berikutnya tidak bias ditunda. • Bounded Waiting :Suatu keterikatan harus ada pada sejumlah proses yang diijinkan masuk ke critical section mereka, setelah adanya proses yang meminta masuk ke critical section dan sebelum permintaan itu diterima.
Semaphore Semaphore adalah pendekatan yang diajukan oleh Djikstra, dengan prinsip bahwa dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Variabel khusus untuk penanda ini disebut semaphore. Semaphore mempunyai dua sifat, yaitu: • Semaphore dapat diinisialisasi dengan nilai non-negatif. • Terdapat dua operasi terhadap semaphore, yaitu Down dan Up. Usulan asli yang disampaikan Djikstra adalah operasi P dan V.
Operasi Down Operasi ini menurunkan nilai semaphore, jika nilai semaphore menjadi non-positif maka proses yang mengeksekusinya diblocked.
Operasi Up Operasi Up menakkan nilai semaphore. Jika satu proses atau lebih diblocked pada semaphore itu tak dapat menyelesaikan operasi Down, maka salah satu dipilih oleh system dan menyelesaikan operasi Down-nya.
Monitors Monitor adalah kumpulan prosedur, variabel dan struktur data di satu modul atau paket khusus. Properti-properti monitor adalah sebagai berikut: • Variabel-variabel data lokal, hanya dapat diakses oleh prosedur-prosedur dala monitor dan tidak oleh prosedur di luar monitor. • Hanya satu proses yang dapat aktif di monitor pada satu saat. Kompilator harus mengimplementasi ini(mutual exclusion), dll.