Concurrency 2:
November 2010
SistemOperasi/20101103 #1
(1 )
Matriks alokasi A = state system C-A = resource yang belum dipenuhi Vektor Available V = daftar resource yang belum digunakan Vektor Resource R merupakan daftar semua resource yang dipunyai sistem
SistemOperasi/20101103 #2
(2 )
Resource yang tersisa: R1=0, R2=1, R3=1 Resource yang dibutuhkan: R1=2, R2=2, R3=2 resource tidak mencukupi P1 terblok !!!
Bagaimana dengan P2 ?
R Resource yang tersisa: R1=0, R2=1, R3=1 i R1 0 R2 1 R3 1 Resource yang dibutuhkan: R1=0, R2=0, R3=1 resource mencukupi P2 tidak terblok OK !
SistemOperasi/20101103 #3
(3 )
SistemOperasi/20101103 #4
(4 )
Resource yang tersisa: R1=7, R2=2, R3=3 Resource yang dibutuhkan: R1=1, R2=0, R3=3 resource mencukupi P3 tidak t bl k P3 tidak t bl k OK ! k i tid k terblok tid k terblok
(5 )
Nilai inisialisasi sama dengan contoh 1 kecuali data-data untuk proses P2 dan sisa resource yang tersedia
SistemOperasi/20101103 #6
(6 )
Jika P2 minta resource R1 dan R3 masing masing satu masing-masing unit kondisinya menjadi sama dengan contoh 1 terbukti SAFE !
X6
X2
X0
X1
X0
X1
SistemOperasi/20101103 #7
(7) ( )
Bagaimana jika P1 minta resource R1 dan R3 masing masingmasing satu unit apakah safe ?
Resource yang tersisa tinggal R1=0, R2=1, dan R3 =1 Pada matriks C-A terlihat bahwa setiap proses setidaknya CA membutuhkan R1=1 untuk dapat dieksekusi tidak ada proses yang dapat dieksekusi UNSAFE !!! Permintaan P1 DITOLAK P1 di-
blok !
SistemOperasi/20101103 #8
(1)
Periksa apakah permintaan resource melebihi dari klaim sebelumnya Jika valid periksa apakah resource yang diminta mencukupi Jika tidak cukup proses tersebut di-blok Jika cukup periksa apakah kondisinya SAFE ? Jika unsafe tolak permintaan tersebut dan proses yang minta resource di-blok di blok Jika safe berikan resource dan perbaharui datadata resource
SistemOperasi/20101103 #9
(2)
SistemOperasi/20101103 #10
(3)
SistemOperasi/20101103 #11
prevention
Kekurangan:
Jumlah kebutuhan resource maksimum setiap proses harus sudah diketahui di awal Urutan eksekusi proses tidak dapat ditentukan dengan aturan tertentu y g p Jumlah resource yang dialokasikan ke suatu proses bersifat tetap (tidak boleh berubah) Proses tidak boleh keluar (exit) selama masih memegang resource
SistemOperasi/20101103 #12
Matriks Request Q
Merupakan matriks yang berisi daftar semua resource yang diminta oleh masing-masing proses
SistemOperasi/20101103 #13
SistemOperasi/20101103 #14
Inisialisasi vektor penampung sementara (temporary) W dengan g nilai sama dengan vektor available Temukan proses yang belum diberi tanda dan bandingkan nilai matriks request Q untuk proses tersebut dengan nilai vektor W Jika nilainya lebih kecil atau sama beri tanda (mark) proses tersebut (tidak mengalami deadlock)
Update nilai W = W + A A = resource yang telah dialokasikan pada proses tersebut
Algoritma:
So ?
Beri tanda P4, karena P4 belum mempunyai alokasi resource (nilai P4 matriks alokasinya 0 semua) Set W = (00001) Karena request (Q) proses P3 lebih kecil atau sama dengan W Beri tanda pada P3 W = W + A = 00001 + 00010 = 00011 Request resource (Q) proses P1 dan P2 lebih banyak daripada nilai W (resource yang tersedia) kedua proses tidak diberi tanda P1 dan P2 merupakan proses yang mengalami deadlock !!!
SistemOperasi/20101103 #16
(1) ( )
Batalkan (kill) semua proses yang mengalami deadlock solusi yang biasa digunakan di OS Kembalikan status proses tersebut ke status checkpoint yang telah dibuat sebelumnya (sebelum terjadi deadlock) Restart proses tersebut
Apakah deadlock pasti tidak terjadi lagi ??? Belum tentu p p j g Urut-urutan eksekusi proses tidak dapat diduga (nondeterministic) ada kemungkinan deadlock tidak terjadi lagi
Satu per satu batalkan proses lain yang mengalami deadlock hingga tidak ada lagi proses yang deadlock Satu per satu ambil (preempt) resource dari proses yang mengalami deadlock hingga deadlock tidak terjadi lagi
SistemOperasi/20101103 #17
(2) ( )
Bagaimana cara memilih proses yang perlu dibatalkan (kill) ? S l i pilih yang paling murah biayanya ! Solusi: ilih li h bi Beberapa alasan yang dapat dipilih: p y g p p
Proses yang paling sedikit menggunakan waktu prosesor Proses yang paling sedikit memberikan hasil Proses yang masih membutuhkan waktu eksekusi paling banyak P Proses yang paling sedikit mendapatkan li dikit d tk
resource
Deadlock
SistemOperasi/20101103 #19
(1)
Ada 5 orang filsuf yang tinggal dalam sebuah rumah Aktifitas ke-5 filsuf sehari-hari adalah berpikir makan berpikir makan ... Setelah bertahun-tahun berpikir, mereka sepakat bahwa y g g p y p g makanan yang mendukung untuk berpikir hanyalah spageti Di tempat mereka makan terdapat sebuah meja bundar, 5 kursi, 5 piring, 5 garpu, dan sebuah piring besar berisi spageti Mereka tidak bisa makan spageti hanya dengan sebuah garpu, garpu sehingga mereka membutuhkan 2 buah garpu sekaligus yang berada di kiri dan kanan mereka Setiap S ti garpu h hanya boleh digunakan oleh seorang filsuf secara b l h di k l h fil f bergantian
Bagaimana caranya agar semua filsuf bisa makan sehingga tidak ada deadlock dan starvation ???
SistemOperasi/20101103 #20
(2)
SistemOperasi/20101103 #21
(3)
Jika ke-5 filsuf datang, duduk, dan ambil garpu g, , g p bersamaan apa yang akan terjadi ???
SistemOperasi/20101103 #22
(4)
Ajari ke-5 filsuf cara makan spageti dengan sebuah garpu Ada pelayan yang bertugas menyuapi mereka secara bergantian g Tambahkan seorang pelayan yang mengawasi ruang makan mereka sehingga dalam satu saat hanya 4 filsuf saja yang boleh masuk ke ruang makan ...
SistemOperasi/20101103 #23
(5)
Dalam satu saat selalu ada yang bisa makan deadlock dan y g starvation dapat dihindari
SistemOperasi/20101103 #24
(6)
SistemOperasi/20101103 #25
(7)
Apakah bisa terjadi deadlock dan starvation ??? Tidak, Tidak karena dalam satu saat hanya satu proses saja yang bisa masuk ke dalam monitor
SistemOperasi/20101103 #26
(8)
SistemOperasi/20101103 #27
(9)
SistemOperasi/20101103 #28
Referensi
[STA09] Stallings William. 2009. Operating Stallings, William 2009 edition. edition Prentice Hall
SistemOperasi/20101103#29