Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

KONKURENSI DEADLOCK DAN STARVATION

Presentasi serupa


Presentasi berjudul: "KONKURENSI DEADLOCK DAN STARVATION"— Transcript presentasi:

1 KONKURENSI DEADLOCK DAN STARVATION
ALIVI NUR ROSIDA ANGGRAINI YUSSI P ERVIANDO MERANDI P GULPI QORIK O. P

2 Principles of DEADLOCK
Definition of Deadlock Resource Categories Condition for Deadlock

3 What is Deadlock? pemblok-an permanen proses
memperebutkan resource sistem Tidak memiliki solusi yang efisien

4 Potential Deadlock I need quad C and B I need quad B and C
I need quad A and B Animated Slide Click 1 Cars approach intersection Then Cars announce their resource needs All deadlocks involve conflicting needs for resources by two or more processes. A common example is the traffic deadlock. The typical rule of the road in the United States is that a car at a four-way stop should defer to a car immediately to its right. This rule works if there are only two or three cars at the intersection. If all four cars arrive at about the same time, each will refrain from entering the intersection, this causes a potential deadlock. The deadlock is only potential, not actual, because the necessary resources are available for any of the cars to proceed. If one car eventually does proceed, it can do so. I need quad D and A

5 Actual Deadlock

6 Example

7 Example II

8 Resource Categories Reusable Consumable
dapat digunakan dengan aman oleh hanya satu proses dalam satu waktu. Consumable dapat diciptakan dan dapat di konsumsi.

9 Reusable seperti processors,I/O channels, memori utama, database, devices, files, dan semaphores Deadlock terjadi pada contoh di awal presentasi

10 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

11 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

12 Actual Deadlock Requirement
Tiga kondisi sebelumnya dan … Circular wait adalah rantai yang menghubungkan proses yang ada, dimana setiap proses menahan minimal satu resource yang dibutuhkan proses berikutnya dalam rantai.

13 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

14 Starvation kekurangan resource Karena deadlock
Karena kesalahan design sistem

15 Bagaimana Mengatasinya?
Deadlock Prevention Deadlock Avoidance Deadlock Detection

16 Deadlock Prevention Design system with no possible deadlock.
Terdapat dua metode untuk mencegah deadlock. Indirect Direct

17 Indirect Method mencegah ketiga kondisi yang dibutuhkan deadlock, yaitu: mutual exclusion, tidak bisa sepenuhnya dicegah, dan harus didukung oleh OS dapatkan seluruh resource secara bersamaan proses gagal => semua resource yang telah didapat, harus dilepas

18 Direct Method mencegah terjadinya circular waits
mendefinisikan pemesanan tipe resource yang linear.

19 Deadlock Avoidance Dalam menghindari deadlock, ketentuan dibuat secara dinamis, tergantung dari request resource dari program, berpotensi kepada deadlock atau tidak.

20 Dua Pendekatan menghindari Deadlock
Process Initiation Denial tidak menjalankan proses jika memungkinkan terjadi deadlock Resource Allocation Denial tidak membolehkan penambahan request resource kepada proses jika memungkinkan terjadinya deadlock.

21 Keuntungan Tidak perlu melakukan preempt dan rollback proses seperti pada deadlock detection Lebih sedikit pembatas daripada deadlock prevention

22 Deadlock Detection mengecek system dari terjadinya deadlock secara regular semakin sering terjadi pengecekan, semakin memakan waktu prosesor Saat ditemukan deadlock, lakukan proses recovery

23 Strategi Penanggulangan Deadlock Terpadu

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

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

26 Filosofi Dining Problem

27 Filosofi Dining Problem

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

29 Masalah Merancang algoritma yang memungkinkan para filosof untuk makan
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.

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

31 Solusi Menggunakan Monitor

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

33 UNIX Mekanisme Concurrency

34 UNIX Mekanisme Concurrency
Mekanisme untuk komunikasi interprocessor dan sinkronasi: Pipes Message Shared memory Semaphores Signals

35 Pipes Menghubungkan standard output proses ke standard input proses lain. Metode komunikasi satu arah antara proses-proses. Tipe  Named,Unnamed

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

37 Shared Memory Memungkinkan satu proses atau lebih berkomunikasi lewat memory. Blok umum dari virtual memory bersama oleh beberapa proses  Izin dibaca saja atau read-write untuk proses, - ditentukan pada basis per-proses.

38 Semaphore SVR4 menggunakan generalisasi dari semWait dan primitif semSignal  Terkait dengan antrian semaphore adalah proses diblokir pada semaphore itu.

39 Signals Mekanisme software yang menginformasikan proses terjadinya kejadian yang asinkronus. Sebuah sinyal disampaikan oleh memperbarui field dalam tabel proses untuk proses yang sinyal sedang dikirim.

40

41 Linux Kernel Concurrency Mechanism

42 Linux Kernel Concurrency Mechanism
mekanisme yang ditemukan di UNIX plus : Atomic operations Spinlocks Semaphores (slightly different to SVR4) Barriers

43 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

44

45

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

47

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

49

50 Barriers Untuk menegakkan urutan instruksi untuk dieksekusi, Linux menyediakan fasilitas penghalang memori.

51 Solaris Thread Synchronitation Primitives
Mutual exclusion (mutex) locks Semaphores Multiple readers, single writer (readers/writer) locks Condition variables

52 Mutual exclusion (mutex)
Tiga kondisi untuk menentukan mutual Exclusion Tidak ada dua proses yang pada saat bersamaan berada di critical region / section. Tidak ada proses yang berjalan diluar critical region / section yang bisa menghambat proses lain Tidak ada proses yang tidak bisa masuk ke critical region / section

53 Semaphores Solaris menyediakan layanan semaphores
Semaphore adalah pendekatan yang diajukan oleh Djikstra, dengan prinsip bahwa dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Semaphore S merupakan sebuah variabel integer yang diakses hanya melalui dua operasi standar atomik yaitu wait dan signal. Semaphore mempunyai dua sifat Semaphore dapat diinisialisasi dengan nilai non-negatif. Terdapat dua operasi yaitu Down (menurunkan nilai) dan Up (menaikkan nilai).

54 Semaphores void wait(int s){ while (s<=0){no-op;} s=s-1; } void signal(s){ s=s+1 Berikut ini merupakan implementasi semaphore untuk mengatasi masalah critical-section. int mutex=1; do{ wait(mutex); critical section signal(mutex); remainder section }while(TRUE);

55 Semaphores Dalam subrutin ini, proses akan memeriksa harga dari semaphor, apabila harganya 0 atau kurang maka proses akan menunggu, sebaliknya jika lebih dari 0, maka proses akan mengurangi nilai dari semaphore tersebut dan menjalankan operasi yang lain. Arti dari harga semaphore dalam kasus ini adalah hanya boleh satu proses yang dapat melewati subrutin wait pada suatu waktu tertentu, sampai ada salah satu atau proses itu sendiri yang akan memanggil signal.

56 Multiple readers, single writer (readers/writer) locks
Kunci readers/writer memungkinkan beberapa thread untuk memiliki akses read-only simultan ke objek yang dilindungi oleh kunci. Hal ini juga memungkinkan thread tunggal untuk mengakses objek untuk menulis pada suatu waktu, sementara tidak termasuk semua reader.

57 Condition variables Sebuah variabel kondisi digunakan untuk menunggu sampai kondisi tertentu adalah benar. Kondisi variabel harus digunakan bersama dengan kunci mutex.

58 Windows Concurrency Mechanisms
Executive dispatcher objects (menggunakan fungsi tunggu), Critical sections, slim reader-writer locks condition variables.

59 Executive dispatcher objects (fungsi tunggu)
Fungsi tunggu memungkinkan thread untuk memblokir eksekusi sendiri. Fungsi tunggu tidak kembali sampai kriteria yang ditentukan telah dipenuhi. Fungsi tunggu menentukan set kriteria yang digunakan.

60 Critical sections / region
Critical region adalah bagian dari program dan ditetapkan untuk selalu berada dalam keadaan mutual exclusion. Keuntungan menggunakan ini adalah programer tidak perlu lagi mengimplementasikan algoritma yang rumit untuk mendapatkan mutual exclusion

61 Critical sections / region
Critical region memiliki sebuah komponen boolean yang menguji apakah bagian dari program boleh masuk ke dalam state critical region atau tidak. Jika nilai boolean ini true maka proses boleh masuk ke critical region. Jika boolean ini bernilai false bagian yang ini akan dimasukan kedalam sebuah antrian sampai nilai boolean ini bernilai true. Main queue  menampung proses yang akan memasuki critical region jika critical region masih digunakan oleh proses lain Event queue  menampung proses yang tidak dapat memasuki critical region karena nilai boolean-nya bernilai false.

62 Slim reader-writer locks
1. Windows Vista menambahkan user mode reader-writer. 2. Kunci reader-writer memasuki kernel untuk memblokir hanya setelah mencoba menggunakan kunci-spin. 3. Disebut 'Slim' karena biasanya hanya membutuhkan alokasi sepotong pointer tunggal di memori. kunci SRW menyediakan dua mode di mana benang dapat mengakses sumber daya bersama: Modus shared Modus eksklusif

63 Condition variables

64 SEKIAN TERIMAKASIH

65 Pertanyaan Jeck : jelaskan tentang spinlock? (SIP !!)
HQ : penyelesaian dengan cara mengajarkan filsuf makan dengan satu garpu, gimana aplikasinya? (SIP !!) Andi : mutex, jelaskan lagi! Kapan qta tau di komputer itu akan terjadi deadlock? (SIP !!) Argho: perbedaan block sama lock? (SIP !!)


Download ppt "KONKURENSI DEADLOCK DAN STARVATION"

Presentasi serupa


Iklan oleh Google