MAKALAH
Dosen
Pengampu : Syaiful Ahdan, S.Kom., M.T.
Nama : Silvia Ranti
NPM : 20312073
Kelas : IF 20B
FAKULTAS TEKNIK DAN ILMU KOMPUTER
UNIVERSITAS TEKNOKRAT INDONESIA
BANDAR LAMPUNG
TP : 2020/2021
KATA PENGANTAR
Puji syukur saya panjatkan atas
kehadirat Allah SWT yang telah melimpahkan segala rahmat dan karunia-Nya,
sehingga penulisan tugas makalah ini dapat diselesaikan dengan baik dan lancar.
Tugas makalah
ini saya buat untuk memberikan ringkasan materi tentang Sinkronisasi Proses,
Sebagai tugas matakuliah sistem operasi.
Makalah ini masih jauh dari sempurna, oleh sebab itu
saya menampung kritik dan saran yang dapat digunakan untuk perbaikan
selanjutnya. Oleh karna itu segala kritik dan saran yang bersifat membangun
dari semua pihak sangat kami harapkan, hargai dan akan diterima dengan
kerendahan hati.
Tidak lupa kami mengucapkan terima kasih kepada Bapak Syaiful Ahdan, S.Kom., M.T.Selaku Dosen pengampu mata kuliah Sistem Operasi. Kepada pihak yang sudah menolong turut dan dalam penyelesaian makalah ini. Atas perhatian serta waktunya, saya sampaikan banyak terima kasih.
Penulis
Silvia
Ranti
DAFTAR ISI
HALAMAN
JUDUL............................................................................................... i
KATA
PENGANTAR............................................................................................ ii
DAFTAR
ISI............................................................................................................ iii
BAB I PENDAHULUAN………………………………………………..
1.1
Latar Belakang ………………………………………………
BAB
II ISI PEMBAHASAN…………………………………………….
2.1 Masalah Critical Section ……………………………………
2.2 Karakteristik DEADLOCK
……………………..…………...
2.3 Sinkronisasi Hardware
………………………………………
2.4 Semaphores…………………………………………………..
2.5 Masalah Klasik Sinkronisasi…………………………………
2.6
Deadlock………………………………………………………
BAB III PENUTUP………………………………………………
3.1 Kesimpulan…………………………………………………..
Daftar Pustaka ………………………………………………….
BAB 1
PENDAHULUAN
Pada dasarnya sistem operasi memiliki peranan yang
sangat penting dalam proses-proses yang terjadi di dalam komputer ,baik itu
hubungan PC dengan prangkat input/output, PC dengan user.
Pada sistem operasi terdapat beberapa masalah yang
ditemukan antara lain seperti Mutual Exclusion, Deadlock,StarVation,
Sinkronisasi. Mutual Exclusion adalah jaminan hanya satu proses yang
mengaksessumber daya pada satu interval tertentu. Proses disebut deadlock jika
prose menunggu suatu kejadian yang tak pernah terjadi. Proses dikatakan
mengalami starvation jika prosesproses itu menunggu alokasi sumber daya sampai
tak berhingga. sementara prosesproses laindapat memperoleh alokasi sumber daya.
Dalam interaksi antar proses, terkadang suatu proses
saling menunggu proses yang lain sebelum melanjutkan prosesnya, sehingga
proses-proses tersebut saling menunggu tanpa akhir, hal ini disebut deadlock.
Jika deadlock terjadi dalam waktu lama, maka terjadilah starvation, yaitu suatu
proses tidak mendapatkan resource yang dibutuhkan.
BAB II
ISI
A.
SINKRONASI DAN DEADLOACK
Suatu sistem
operasi modern merupakan suatu sistem yang besar dan kompleks sehingga
strukturnya harus dirancang dengan hati-hati dan saksama supaya dapat berfungsi
seperti yang diinginkan serta dapat dimodifikasi dengan mudah. Struktur sistem
operasi merupakan komponen-komponen sistem operasi yang dihubungkan dan
dibentuk di dalam kernel ada beberapa struktur sistem operasi dan pernah
dicoba, diantaranya sebagai berikut:
2.1.Masalah Critical Section
Pengertian Critical Section:
Critical section adalah dengan mendesain sebuah protokol di mana proses-proses dapat menggunakannya secara bersama-sama. Setiap proses harus ‘meminta izin’ untuk memasuki critical section-nya. Bagian dari kode yang mengimplementasikan izin ini disebut entry section. Akhir dari critical section itu disebut exit section. Bagian kode selanjutnya disebut remainder section.
Struktur umum dari proses Pi yang
memiliki segmen critical section adalah :
do {
entry section
critical section
exit section
remainder section
} while (1);
Solusi dari
masalah critical section harus memenuhi tiga syarat berikut:
1. Mutual
Exclusion.
Jika suatu proses sedang menjalankan critical
section-nya, maka proses-proses lain tidak dapat menjalankan critical section
mereka. Dengan kata lain, tidak ada dua proses yang berada dicritical section
pada saat yang bersamaan.
2. Terjadi kemajuan (progress).
Jika tidak ada proses yang sedang menjalankan critical section-nya dan ada proses-proses lain yang ingin masuk ke critical section, maka hanya proses-proses yang yang sedang berada dalamentry section saja yang dapat berkompetisi untuk mengerjakan critical section.
3. Ada batas waktu tunggu (bounded waiting).
Jika seandainya ada proses yang sedang menjalankan critical section, maka proses lain memiliki waktu tunggu yang ada batasnya untuk menjalankan critical section -nya, sehingga dapat dipastikan bahwa proses tersebut dapat mengakses critical section-nya (tidak mengalamistarvation: proses seolah-olah berhenti, menunggu request akses ke critical sectiondiperbolehkan).
Kunci untuk mencegah masalah ini dan di situasi yang lain yang melibatkan shared memori, shared berkas, and shared sumber daya yang lain adalah menemukan beberapa jalan untuk mencegah lebih dari satu proses untuk melakukan proses writing dan reading kepada shared data pada saat yang sama. Dengan kata lain kita memutuhkan mutual exclusion, sebuah jalan yang menjamin jika sebuah proses sedang menggunakan shared berkas, proses lain dikeluarkan dari pekerjaan yang sama. Kesulitan yang terjadi karena proses 2 mulai menggunakan variabel bersama sebelum proses 1 menyelesaikan tugasnya.
Masalah menghindari race conditions dapat juga diformulasikan secara abstrak. Bagian dari waktu, sebuah proses sedang sibuk melakukan perhitungan internal dan hal lain yang tidak menggiring ke kondisi race conditions. Bagaimana pun setiap kali sebuah proses mengakses shared memory atau shared berkas atau melakukan sesuatu yang kitis akan menggiring kepada race conditions. Bagian dari program dimana shaed memory diakses disebut Critical Section atau Critical Region.
Walau pun 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 citical section.
·Tidak ada asumsi mengenai
kecepatan atau jumlah cpu.
·Tidak ada proses yang berjalan
di luar critical secion yang dapat mengeblok proses lain.
·Tidak ada proses yang menunggu
selamamya untuk masuk critical section.
2.2.Karakteristik
DEADLOCK
Setelah pada
bagian sebelumnya kita telah mengetahui mengenai pengertian dari deadlock dan
bagaimana memodelkannya, sekarang kita akan membahas secara mendalam mengenai
karakteristik dari terjadinya deadlock. Karakteristik-karakteristik ini harus
dipenuhi keempatnya untuk terjadi deadlock. Namun, perlu diperhatikan bahwa
hubungan kausatif antara empat karakteristik ini dengan terjadinya deadlock
adalah implikasi.
Deadlock mungkin
terjadi apabila keempat karakteristik terpenuhi. Empat kondisi tersebut adalah:
Mutual Exclusion
. Kondisi yang pertama adalah mutual exclusion yaitu proses memiliki hak milik
pribadi terhadap sumber daya yang sedang digunakannya. Jadi, hanya ada satu
proses yang menggunakan suatu sumber daya. Proses lain yang juga ingin
menggunakannya harus menunggu hingga sumber daya tersebut dilepaskan oleh
proses yang telah selesai menggunakannya. Suatu proses hanya dapat menggunakan
secara langsung sumber daya yang tersedia secara bebas.
Hold and Wait . Kondisi yang kedua adalah hold and wait yaitu beberapa proses saling menunggu sambil menahan sumber daya yang dimilikinya. Suatu proses yang memiliki minimal satu buah sumber daya melakukan request lagi terhadap sumber daya. Akan tetapi, sumber daya yang dimintanya sedang dimiliki oleh proses yang lain. Pada saat yang sama, kemungkinan adanya proses lain yang juga mengalami hal serupa dengan proses pertama cukup besar terjadi. Akibatnya, proses-proses tersebut hanya bisa saling menunggu sampai sumber daya yang dimintanya dilepaskan. Sambil menunggu, sumber daya yang telah dimilikinya pun tidak akan dilepas. Semua proses itu pada akhirnya saling menunggu dan menahan sumber daya miliknya.
No Preemption . Kondisi yang selanjutnya adalah no preemption yaitu sebuah sumber daya hanya dapat dilepaskan oleh proses yang memilikinya secara sukarela setelah ia selesai menggunakannya. Proses yang menginginkan sumber daya tersebut harus menunggu sampai sumber daya tersedia, tanpa bisa merebutnya dari proses yang memilikinya.
Circular Wait . Kondisi yang terakhir
adalah circular wait yaitu kondisi membentuk siklus yang berisi proses-proses
yang saling membutuhkan. Proses pertama membutuhkan sumber daya yang dimiliki
proses kedua, proses kedua membutuhkan sumber daya milik proses ketiga, dan
seterusnya sampai proses ke n-1 yang membutuhkan sumber daya milik proses ke n.
Terakhir, proses ke n membutuhkan sumber daya milik proses yang pertama. Yang
terjadi adalah proses-proses tersebut akan selamanya menunggu. Circular wait
oleh penulis diistilahkan sebagai 'Lingkaran Setan' tanpa ujung.
2.3.
Sinkronisasi Hardware
Seperti yang telah kita ketahui bahwa, sinkronisasi haruslah mutual exclusive/harus ada satu atau sekelompok instruksi yang tidak dapat diberhentikan pada waktu eksekusi (sifat mutual exclusive). Jadi, solusi untuk sinkronisasi dengan cara pendekatan hardware lebih menekankan kepada usaha-usaha untuk membuat suatu atau sekelompok instruksi menjadi mutual exclusive.
Pendekatan dari sisi hardware dapat
dibagi menjadi dua:
1. Processor Synchronous
2. Memory Synchronous
Mutual exclusive = Jika proses Pi
sedang mengeksekusi critical section maka tidak ada proses lain yang dapat
mengeksekusi dalam critical section mereka.
2.4.Semaphores
Semafor adalah sistem sinyal yang digunakan untuk berkomunikasi secara visual. Dalam software, semafor adalah sebuah variabel bertipe integer yang selain saat inisialisasi, hanya dapat diakses melalui dua operasi standar, yaitu increment dan decrement. Semafor digunakan untuk menyelesaikan masalah sinkronisasi secara umum. Berdasarkan jenisnya, semafor hanya bisa memiliki nilai 1 atau 0, atau lebih dari sama dengan 0. Konsep semafor pertama kali diajukan idenya oleh Edsger Dijkstra pada tahun 1967.
Operasi standar pada semafor (dalam bahasa pemrograman C). Nama asli dari operasi tersebut sebenarnya adalah Proberen (test) dan Verhogen (increment). Fungsi wait dipanggil ketika thread akan memasuki critical section-nya atau ketika thread akan memakai resource yang tersedia. Jika sem_value kurang dari sama dengan 0, thread tersebut harus menunggu sampai thread lain memanggil fungsi buka. Fungsi buka dipanggil ketika thread meningggalkan critical section-nya atau ketika melepaskan resource yang telah digunakannya. Tentu saja kedua operasi tersebut harus bersifat atomik karena sem_value dapat diakses oleh beberapa proses (shared resource). Semafor memiliki dua jenis, yaitu:
Binary
semaphore,
Semafor ini hanya memiliki nilai 1 atau 0. Sering juga disebut sebagai semafor primitif
Counting
semaphore
Semafor ini memiliki nilai 0, 1, serta integer lainnya. Banyak sistem operasi yang tidak secara langsung mengimplementasikan semafor ini, tetapi dengan memanfaatkan binary semaphore
Fungsi Semaphore
1.Mutual exclusion
Sesuai dengan prinsip mutual exclusion, jika suatu thread sedang berada dalam critical section-nya, thread lain harus menunggu thread tersebut keluar dari critical section-nya sebelum dapat memasuki critical section-nya sendiri. Di sinilah semafor digunakan, thread yang akan memasuki critical section-nya akan memanggil fungsi kunci terlebih dahulu. Jika tidak ada thread lain yang sedang berada dalam critical section, thread ini akan memasuki critical section-nya. Jika terdapat thread lain yang sedang berada dalam critical section-nya, thread ini harus menunggu.Setelah thread keluar dari critical section-nya, thread tersebut akan memanggil fungsi buka sehingga sem_value akan naik menjadi lebih dari 0, dan satu (dari beberapa) thread yang sedang menunggu akan mendapatkan giliran untuk memasuki critical section-nya.
Sebagai contoh, misalnya terdapat
dua buah thread yang sedang berjalan bersamaan:
Thread A: thread B: count = count +
1; count = count + 1; Thread A dan B mengakses variabel yang sama, yaitu count
sehingga thread A dan B harus berjalan satu-satu. Untuk itu digunakan semafor
mutex yang berupa binary semaphore dengan nilai awal 1.
2. Resource controller
Contoh: bayangkan sebuah restoran yang setiap malamnya ramai dikunjungi pelanggan. Kapasitas restoran terbatas, tetapi pemilik restoran memiliki kebijakan bahwa semua pengunjung yang datang akan mendapatkan kesempatan untuk makan, dengan konsekuensi yaitu pelanggan harus sabar menunggu gilirannya.
Oleh karena itu, dikerahkanlah pegawai restoran untuk menahan tamu di luar jika restoran penuh lalu mempersilahkan tamu masuk jika tempat telah tersedia. Dari analogi di atas, pelanggan adalah thread, kapasitas restoran adalah resource, dan pegawai restoran adalah semafor. Semafor menyimpan banyaknya resource yang tersedia. Saat thread ingin memakai resource ia akan memanggil fungsi kunci.
Jika resource masih tersedia,
thread bisa langsung menggunakannya, sebaliknya jika semua resource sedang
dipakai, thread tersebut harus menunggu. Setelah resource selesai dipakai
thread akan memanggil fungsi buka sehingga resource yang bebas bertambah.
3. Sinkronisasi antar-proses
Ada kalanya suatu thread memerlukan resource yang dihasilkan oleh thread lainnya. Oleh karena itu dibutuhkan suatu mekanisme untuk mengatur urutan eksekusi thread. Mekanisme ini dilakukan dengan memanfaatkan semafor.
Sebagai contoh, misalnya terdapat
dua buah thread yang sedang berjalan bersamaan:
Thread A: thread B: count = count + 1; count = count * 2; Nilai awal dari variabel count adalah 5, nilai akhir yang diinginkan adalah 12, oleh karena itu thread A harus dieksekusi sebelum thread B. Agar hal ini dapat terjadi dibutuhkan suatu semafor mutex yang merupakan sebuah binary semaphore dengan nilai awal 0.
Thread A: thread B: count = count +
1; kunci(mutex); buka(mutex); count = count * 2; Thread B akan menunggu sampai
eksekusi thread A selesai sebelum melanjutkan.
Implementasi Semaphore
1. Windows
Fungsi yg dipakai adalah CreateSemaphore biasanya digunakan untuk membatasi jumlah thread yang memakai suatu resource secara bersamaan.
2. Java
Semafor di Java bersifat transparan oleh Programmer Java™
menyembunyikan Semafor dibalik konsep
2.5.Masalah
Klasik Sinkronisasi
Masalah Klasik Sinkronisasi dapat
dibedakan menjadi 3 :
1.Bounded – Buffer Problem
2.Readers and Writers Problem
3.Dining Philosophers Problem
1. 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.
Contoh Kasus Bounded - Buffer
Pada bagian ini akan dicontohkan suatu produser konsumer. produser akan menghasilkan suatu barang dan konsumer akan mengkonsumsi barang yang dihasilkan oleh produser. produser dan konsumer ini akan mengakses bounded buffer yang sama. produser setelah menghasilkan suatu barang dia akan menaruh barang itu di bounded buffer sebaliknya konsumer ketika membutuhkan suatu barang, dia akan mengambilkannya dari bounded buffer.
Solusi Bounded – Buffer Problem
Solusi Shared Memory untuk Bounded
– Buffer, mengijinkan (n-1) items di dalam buffer untuk suatu waktu tertentu.
2. 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
a.Pembaca di prioritaskan
b.Penulis di prioritaskan
c.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. Dengan kata lain, 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. Writer akan 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.
1. 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 ada dua, yakni :
a. Solusi Waiter
Solusi Waiter : 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.
b. 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.
2.6.Deadlock
1.
Model Sistem
Pada sistem terdapat beberapa sumber daya (resource) yang digunakan untuk proses-proses untuk menyelesaikan task. Sumber daya yang pada sistem terdiri dari tipe resource CPU cycle, ruang memori, perangkat I/O yang disebut dengan tipe sumber daya R1, R2, . . ., Rm. Setiap tipe sumber daya Ri mempunyai beberapa anggota Wi. Setiap proses yang menggunakan sumber daya menjalankan urutan operasi sebagai berikut :
• meminta (request) :
meminta sumber daya
• memakai (use) :
memakai sumber daya
• melepaskan (release) : melepaskan sumber daya
2.
Karakteristik Deadlock
Kondisi yang Diperlukan Deadlock terjadi bila terdapat empat kondisi berikut ini secara simultan. a. Mutual Exclusion : hanya satu proses pada satu waktu yang dapat menggunakan sumber daya. b. Genggam dan Tunggu (Hold and Wait) : suatu proses membawa sedikitnya satu sumber daya menunggu mendapatkan tambahan sumber daya baru yang dibawa oleh proses Resource Allocation Graph Deadlock dapat digambarkan lebih presisi dengan menggunakan graph berarah yang disebut resource allocation graph.
3. Metode Menangani Deadlock
Terdapat tiga metode untuk menangani permasalahan deadlock yaitu : • Menggunakan protocol untuk menjamin bahwa sistem tidak pernah memasuki status deadlock • Mengijinkan sistem memasuki status deadlock dan kemudian memperbaikinya. • Mengabaikan permasalahan dan seakan-akan deadlock tidak pernah terjadi pada sistem. Model ini yang banyak digunakan pada sistem operasi termasuk UNIX.
4.
Mencegah Deadlock
Metode ini berkaitan dengan pengkondisian sistem agar menghilangkan kemungkinan terjadinya deadlock. Pencegahan merupakan solusi yang bersih dipandang dari sudut tercegahnya deadlock. Metode ini sering menghasilkan utilisasi sumber daya yang buruk. Pencegahan deadlock merupakan metode yang banyak dipakai. Untuk mencegah deadlock dilakukan dengan meniadakan salah satu dari syarat perlu sebagai berikut : • Mencegah Mutual Exclusion Mutual exclusion benar-benar tak dapat dihindari. Hal ini dikarenakan tidak ada sumber daya yang dapat digunakan bersama-sama, jadi sistem harus membawa sumber daya yang tidak dapat digunakan bersama-sama.
• Mencegah Hold and Wait Untuk mencegah hold and wait, sistem harus menjamin bila suatu proses meminta sumber daya, maka proses tersebut tidak sedang memegang sumber daya yang lain. Proses harus meminta dan dialokasikan semua sumber daya yang diperlukan sebelum proses memulai eksekusi atau mengijinkan proses meminta sumber daya hanya jika proses tidak membawa sumber daya lain. Model ini mempunyai utilitas sumber daya yang rendah dan kemungkinan terjadi starvation jika proses membutuhkan sumber daya yang popular sehingga terjadi keadaan menunggu yang tidak terbatas karena setidaknya satu dari sumber daya yang dibutuhkannya dialokasikan untuk proses yang lain.
• Mencegah Non Preemption Peniadaan non preemption mencegah proses-proses lain harus menunggu. Seluruh proses menjadi preemption, sehingga tidak ada tunggu menunggu. Cara mencegah kondisi non preemption : o Jika suatu proses yang membawa beberapa sumber daya meminta sumber daya lain yang tidak dapat segera dipenuhi untuk dialokasikan pada proses tersebut, maka semua sumber daya yang sedang dibawa proses tersebut harus dibebaskan. o Proses yang sedang dalam keadaan menunggu, sumber daya yang dibawanya ditunda dan ditambahkan pada daftar sumber daya. o Proses akan di restart hanya jika dapat memperoleh sumber daya yang lama dan sumber daya baru yang diminta.
• Mencegah Kondisi Menunggu
Sirkular Sistem mempunyai total permintaan global untuk semua tipe sumber
daya. Proses dapat meminta proses
kapanpun menginginkan, tapi permintaan harus dibuat terurut secara numerik. Setiap proses yang membutuhkan sumber daya
dan memintanya maka nomor urut akan dinaikkan.
Cara ini tidak akan menimbulkan siklus.
Masalah yang timbul adalah tidak ada cara pengurutan nomor sumber daya
yang memuaskan semua pihak.
5.
Menghindari Deadlock
Metode alternatif untuk menghindari deadlock adalah digunakan informasi tambahan tentang bagaimana sumber daya diminta. Misalnya pada sistem dengan satu tape drive dan satu printer, proses P pertama meminta tape drive dan kemudian printer sebelum melepaskan kedua sumber daya tersebut. Sebaliknya proses Q pertama meminta printer kemudian tape drive. Dengan mengetahui urutan permintaan dan pelepasan sumber daya untuk setiap proses, dapat diputuskan bahwa untuk setiap permintaan apakah proses harus menunggu atau tidak. Setiap permintaan ke sistem harus dipertimbangkan apakah sumber daya tersedia, sumber daya sedang dialokasikan untuk proses dan permintaan kemudian serta pelepasan oleh proses untuk menentukan apakah permintaan dapat dipenuhi atau harus menunggu untuk menghindari deadlock. Model yang sederhana dan sangat penting dibutuhkan adalah setiap proses menentukan jumlah maksimum sumber daya dari setiap tipe yang mungkin diperlukan. Algoritma deadlock avoidance secara dinamis memeriksa status sumber daya yang dialokasikan untuk menjamin tidak pernah terjadi kondisi menunggu sirkular. Status alokasi sumber daya ditentukan oleh jumlah sumber daya yang tersedia dan yang dialokasikan dan maksimum permintaan oleh proses-proses.
6.
Mendeteksi Deadlock
Jika sistem tidak menyediakan algoritma mencegah deadlock dan menghindari deadlock, maka terjadi deadlock. Pada lingkungan ini sistem harus menyediakan : • Algoritma yang menguji state sistem untuk menentukan apakah deadlock telah terjadi. • Algoritma untuk memperbaiki dari deadlock.
Satu Anggota untuk Setiap Tipe Sumber Daya Jika semua sumber daya hanya mempunyai satu anggota, kita dapat menentukan algoritma mendeteksi deadlock menggunakan bentuk resource allocation graph yang disebut wait-for graph.
Garis dari Pi → Pj pada wait-for graph menandakan bahwa proses Pi menunggu Pj melepaskan sumber daya yang dibutuhkan Pi. Garis Pi → Pj terdapat pada wait-for graph jika dan anya jika resource allocation graph berisi dua garis Pi → Rq dan Rq → Pj untuk beberapa sumber daya Rq seperti Gambar 6-7. Secara periodik sistem menggunakan algoritma yang mencari siklus pada graph. Algoritma untuk mendeteksi siklus pada graph membutuhkan operasi n2 dimana n adalah jumlah titik pada graph.
Beberapa Anggota untuk Setiap Tipe
Sumber Daya Untuk Tipe sumber daya yang mempunyai beberapa anggota digunakan
algoritma yang sejenis dengan algoritma Banker dengan struktur daya seperti di bawah ini : • Available : vector panjang m menandakan jumlah sumber
daya yang tersedia untuk setiap tipe sumber daya. • Allocation : matrik n x m yang mendefinisikan jumlah
sumber daya untuk setiap tipe sumber daya yang sedang dialokasikan untuk setiap
proses. • Request : matrik n x m yang
mendefinisikan permintaan setiap proses.
Jika Request [I, j] = k, maka proses Pi meminta k anggota tipe sumber
daya Rj.
Gambar
Penggunaan Algoritma Deteksi Untuk menjawab kapan dan berapa sering
menggunakan algoritma deteksi, hal ini tergantung pada :
• Seberapa sering terjadi deadlock.
• Berapa proses yang perlu
dilakukan roll back. Jika algoritma deteksi digunakan, terdapat beberapa siklus
pada graph, hal ini tidak dapat mengetahui berapa proses yang deadlock yang
menyebabkan deadlock.
7.
Perbaikan Dari Deadlock
Terdapat dua pilihan untuk membebaskan deadlock. Satu solusi sederhana adalah dengan menghentikan satu atau beberapa proses untuk membebaskan kondisi menunggu sirkular. Pilihan kedua adalah menunda beberapa sumber daya dari satu atau lebih proses yang deadlock.
Terminasi Proses Untuk memperbaiki
deadlock dengan terminasi proses, dapat diguankan salah satu dari dua metode di
bawah ini :
• Menghentikan (abort) semua proses
yang deadlock
• Menghentikan satu proses setiap
waktu sampai siklus deadlock hilang.
Untuk menentukan urutan proses yang
harus dihentikan ada beberapa faktor yang harus diperhatikan :
1. Prioritas
proses.
2. Berapa lama
proses dijalankan dan berapa lama lagi selesai.
3. Sumber daya yang digunakan proses. • Sumber daya
proses yang diperlukan untuk menyelesaikan task.
4. Berapa proses
yang perlu diterminasi.
5. Apakah proses
interaktif atau batch.
Menunda Sumber Daya Untuk menghilangkan deadlock dengan menunda sumber daya, sumber daya dari proses harus ditunda dan memberikan sumber daya tersebut ke proses lain sampai siklus deadlock hilang. Jika penundaan dibutuhkan untuk menghilangkan deadlock, terdapat tiga hal yang perlu diperhatikan :
• Pilihlah korban (sumber daya)
yang mempunyai biaya minimal.
• Lakukan rollback yaitu memulai
kembali (restart) proses pada state yang aman.
• Harus dijamin starvation tidak
akan terjadi karena kemungkinan beberapa proses selalu terpilih sebagai korban
termasuk jumlah rollback sebagai faktor biaya.
8.
Metode Kombinasi Menangani Deadlock
Untuk menangani deadlock dilakukan
kombinasi dari tiga algoritma dasar yaitu mencegah deadlock, menghindari deadlock
dan mendeteksi deadlock. Kombinasi ketiga algoritma ini memungkinkan penggunaan
yang optimal untuk setiap sumber daya pada sistem.
BAB
III
PENUTUP
3.1. Kesimpulan
Sinkronisasi adalah proses pengaturan jalannya
beberapa proses pada saat yang bersamaan. Tujuan utama sinkronisasi adalah
menghindari terjadinya inkonsistensi data karena pengaksesan oleh beberapa
proses yang berbeda (mutualexclusion) serta untuk mengatur urutan jalannya
proses-proses sehingga dapat berjalan dengan lancar dan terhindar dari deadlock
atau starvation.
Sinkronisasi umumnya dilakukan dengan bantuan
perangkat sinkronisasi.Beberapa perangkat sinkronisasi, yaitu : TestAndSet(),
Semafor, dan Monitor.
DAFTAR
PUSTAKA
http://arifmauu.blogspot.co.id/2016/11/sinkronisasi-deadlock-pada-sistem.html.
http://www.erllang.ga/teknik-informatika/makalah-sinkronisasi-data-dan-deadlock.html
https://aanazar.wordpress.com/2012/12/26/makalah-sinkronisasi-dan-deadlock/
https://rikaartikablog.wordpress.com/2017/12/16/proses-synchronization/
- Alamat Blog Dosen : https://syaifulahdan.wordpress.com
- Alamat web Program studi, Fakultas, Universitas : http://ti.ftik.teknokrat.ac.id,
- http://ftik.teknokrat.ac.id, www.teknokrat.ac.id
- Nama Mahasiswa : Silvia Ranti
- https://silviaranti27sistemoperasi.blogspot.com/

Komentar
Posting Komentar