660 likes | 1.13k Vues
KONKURENSI DEADLOCK DAN STARVATION. ALIVI NUR ROSIDA 109533427367 ANGGRAINI YUSSI P 109533423231 ERVIANDO MERANDI P. 109533427366 GULPI QORIK O. P. 109533423232. Principles of DEADLOCK. Definition of Deadlock Resource Categories Condition for Deadlock. What is Deadlock?.
E N D
KONKURENSIDEADLOCK DAN STARVATION ALIVI NUR ROSIDA 109533427367 ANGGRAINI YUSSI P 109533423231 ERVIANDO MERANDI P. 109533427366 GULPI QORIK O. P. 109533423232
Principles of DEADLOCK Definition of Deadlock Resource Categories Condition for Deadlock
What is Deadlock? • pemblok-an permanen proses • memperebutkan resource sistem • Tidakmemilikisolusi yang efisien
Potential Deadlock I need quad C and B I need quad B and C I need quad A and B I need quad D and A
Resource Categories • Reusable • dapatdigunakandenganamanolehhanyasatu proses dalamsatuwaktu. • Consumable • dapat diciptakan dan dapat di konsumsi.
Reusable • sepertiprocessors,I/O channels, memoriutama, database, devices, files, dan semaphores • Deadlock terjadipadacontoh di awalpresentasi
Consumable • seperti interrupt, signals, messages,dan infromasi di I/O buffers. • Deadlock dapat terjadi jika ada Kesalahan dalam desain program • Sangat langka, butuh waktu yang lama hingga terjadi deadlock
Condition for possible Deadlock • Mutual exclusion • use a resource at a time • Hold-and-wait • hold resources while awaiting others • No pre-emption • cant be forcibly removed resource
Actual Deadlock Requirement • Tigakondisisebelumnyadan … • Circular wait • adalahrantai yang menghubungkan proses yang ada, dimanasetiap proses menahan minimal satu resource yang dibutuhkan proses berikutnyadalamrantai.
Starvation Starvation occurs when one or more threads in your program are blocked from gaining access to a resource and, as a result, cannot make progress
Starvation • kekuranganresource • Karena deadlock • Karenakesalahan design sistem
BagaimanaMengatasinya? Deadlock Prevention Deadlock Avoidance Deadlock Detection
Deadlock Prevention • Design system with no possible deadlock. • Terdapatduametodeuntukmencegah deadlock. • Indirect • Direct
Indirect Method • mencegahketigakondisi yang dibutuhkan deadlock, yaitu: • mutual exclusion, tidakbisasepenuhnyadicegah, danharusdidukungoleh OS • dapatkanseluruh resource secarabersamaan • proses gagal => semua resource yang telahdidapat, harusdilepas
Direct Method • mencegahterjadinya circular waits • mendefinisikanpemesanantipe resource yang linear.
Deadlock Avoidance • Dalammenghindari deadlock, ketentuandibuatsecaradinamis, tergantungdari request resource dari program, berpotensikepada deadlock atautidak.
DuaPendekatanmenghindari Deadlock • Process Initiation Denial • tidakmenjalankan proses jikamemungkinkanterjadi deadlock • Resource Allocation Denial • tidakmembolehkanpenambahan request resource kepada proses jikamemungkinkanterjadinya deadlock.
Keuntungan • Tidak perlu melakukan preempt dan rollback proses seperti pada deadlock detection • Lebih sedikit pembatas daripada deadlock prevention
Deadlock Detection • mengecek system dariterjadinya deadlock secara regular • semakinseringterjadipengecekan, semakinmemakanwaktuprosesor • Saatditemukan deadlock, lakukan proses recovery
Strategi Penanggulangan Deadlock Terpadu Strategi penanggulangan deadlock mempunyai kelemahan dan kelebihan masing-masing, daripada berusaha merancang fasilitas sistem operasi dengan satu strategi penanggulangan deadlock maka lebih efisien menggunakan strategi yang berbeda untuk situasi yang berbeda.
Strategi Penanggulangan Deadlock Terpadu Silberschatz menyarankan satu pendekatan terpadu yaitu: • Kelompokkan resource kedalam beberapa kelas resource yang berbeda • Gunakan strategi pengurutan linear seperti yang didefinisikan pada pencegahan menunggu sirkulaar. Strategi ini digunakan untuk mencegah deadlock di antara kelas-kelas resource yang berbeda • Dalam satu kelas resource, gunakan algoritma yang paling cocok untuk kelas resource tersebut.
Pengaturan makan Sebuah meja bundar yang terdapat semangkuk besar spaghetti, lima piring, satu untuk setiap filusuf, dan lima garpu. Seorang filosof hanya bisa memakan spaghetti dengan menggunakan dua garpu.
Masalah Merancang algoritma yang memungkinkan para filosof untuk makan. Algoritma ini harus memenuhi mutual exclusion (tidak ada dua filosof yang bisa menggunakan garpu yang sama pada waktu yang sama) sambil menghindari deadlock dan starvation.
Solusi Menggunakan Semaphores Setiap filosof mengambil garpu di sebelah kiri dan kemudian garpu di sebelah kanan. Setelah filosof selesai makan, kedua garpu diletakkan di atas meja. Sayangnya, solusi ini, menyebabkan deadlock: Jika semua filosof lapar pada saat yang sama, mereka semua duduk, mereka semua mengambil garpu di sebelah kiri mereka, dan mereka semua menjangkau untuk garpu lain, yang tidak ada . Dalam posisi ini, semua filosof kelaparan. Untuk mengatasi risiko deadlock, kita bisa membeli lima garpu tambahan atau mengajarkan para filosof untuk makan spaghetti hanya dengan satu garpu. Sebagai pendekatan yang lain, kita bisa pertimbangkan untuk menambahkan seorang pembantu yang membatasi hanya empat filosof yang bisa makan pada waktu yang sama. Dengan paling banyak empat filosof duduk, setidaknya satu filosof akan memiliki akses ke dua garpu.
Solusi Menggunakan Monitor Sebuah vektor dari lima variabel kondisi didefinisikan, satu variabel kondisi per garpu. Variabel-variabel kondisi yang digunakan untuk mengaktifkan filosof untuk menunggu ketersediaan garpu. Selain itu, ada vektor Boolean yang mencatat status ketersediaan setiap garpu (benar berarti garpu tersedia). Monitor terdiri dari dua prosedur. Prosedur get_forks digunakan oleh filosof untuk memanfaatkan garpu di sebelah kiri dan kanannya. Jika salah satu garpu tidak tersedia, filosof akan mengantri pada variabel kondisi yang sesuai. Ini memungkinkan filosof lain untuk masuk ke monitor. Prosedur release_forks digunakan untuk menyediakan dua garpu. Solusi ini mirip dengan solusi semaphore. Pada kedua kasus ini, seorang filosof pertama merebut garpu kiri dan kemudian garpu kanan. Berbeda dengan solusi semaphore, solusi menggunakan monitor ini tidak mengalami deadlock, karena hanya satu proses pada suatu waktu yang mungkin di monitor. Sebagai contoh, Filosof pertama yang memasuki monitor dijamin bahwa ia dapat mengambil garpu kanan tepat setelah mengambil garpu kiri sebelum filosof di sebelah kanannya memiliki kesempatan untuk merebut garpu kiri, yang merupakan garpu kanan filosof pertama.
UNIX Mekanisme Concurrency Mekanisme untuk komunikasi interprocessor dan sinkronasi: Pipes Message Shared memory Semaphores Signals
Pipes • Menghubungkan standard output proses ke standard input proses lain. • Metode komunikasi satu arah antara proses-proses. • Tipe Named,Unnamed
Messages • UNIX menyediakan msgsnd dan sistem msgrc call untuk proses untuk terlibat dalam lewat pesan. • Message dikirim melalui Queue secara berurutan dan diambil dari antrian dengan beragam cara.
Shared Memory • Memungkinkan satu proses atau lebih berkomunikasi lewat memory. • Blok umum dari virtual memory bersama oleh beberapa proses • Izindibacasajaatau read-write untuk proses,- ditentukanpada basis per-proses.
Semaphore • SVR4 menggunakan generalisasi dari semWait dan primitif semSignal • Terkait dengan antrian semaphore adalah proses diblokir pada semaphore itu.
Signals • Mekanisme software yang menginformasikan proses terjadinya kejadian yang asinkronus. • Sebuah sinyal disampaikan oleh memperbarui fielddalamtabel proses untuk proses yang sinyal sedang dikirim.
Linux Kernel Concurrency Mechanism mekanisme yang ditemukan di UNIX plus : • Atomic operations • Spinlocks • Semaphores (slightly different to SVR4) • Barriers
Atomic Operations • Atom melaksanakan operasi tanpa henti dan tanpa gangguan • Dua tipe: - Integer Operasi - operasi pada variabel integer - Bitmap Operasi - operasi pada satu bit dalam bitmap • Dua jenis operasi atom didefinisikan di Linux: • integer operasi, yang beroperasi pada variabel integer• bitmap operasi, yang beroperasi pada satu bit dalam bitmap
Spinlock • Hanya satu thread pada suatu waktu dapat memperoleh sebuah spinlock. - Setiap thread lainnya akan terus berusaha (spinning) sampai dapat memperoleh kunci. • Spinlock adalah integer • Jika nilainya 0, benang set nilai ke 1 dan memasuki critical section-nya. • Jika nilai bukan nol, benang terus menerus memeriksa nilai sampai nol.
Semaphores • Mirip dengan UNIX SVR4 tapi juga menyediakan sebuah implementasi dari semaphores untuk digunakan sendiri. • Tiga jenis semaphores kernel:– Binary semaphores – counting semaphores, – reader-writer semaphores.
Barriers • Untuk menegakkan urutan instruksi untuk dieksekusi, Linux menyediakan fasilitas penghalang memori.