Nama: Adelia Riskhi Arishandi
NPM: 20312105
Kelas: IF20Dx
Kata Pengantar
Segala puji syukur kami panjatkan kehadirat Allah SWT yang telah melimpahkan
segala rahmat dan karunia-Nya, tidak lupa kami ucapkan banyak terimakasih
kepada Bapak heri haerudin Selaku dosen Pengantar Sistem Operasi, Sehingga kami
dapat menyelesaikan Makalah yang berjudul "SINKRONISASI DATA DAN DEADLOCK" ini yang merupakan salah satu syarat untuk memenuhi nilai dari mata kuliah
Sistem Operasi.
Dalam makalah ini membahas tentang Sinkronisasi data dan Deadlock, Jika Makalah
ini masih kurang lengkap, kami selaku penyusun telah berusaha sebaik mungkin
untuk menysun makalah ini agar dapat dimengerti dan dipahami dan kami
memerlukan kritik dan saran agar dapat meningkatkan makalah kami.
Semoga Allah SWT selalu memberikan petunjuk kepada kita dalam pembentukan generasi
yang maju. Akhir kata kami ucapkan terima kasih
Bab
1
PENDAHULUAN
1.1 Latar Belakang
Sistem operasi adalah seperangkat program yang mengelola sumber daya perangkat
keras komputer atau hardware, dan menyediakan layanan umum untuk aplikasi
perangkat lunak. Sistem operasi adalah jenis yang paling penting dari perangkat
lunak dalam sistem komputer. Tanpa sistem operasi, pengguna tidak dapat
menjalankan program aplikasi pada komputer mereka, kecuali program aplikasi
booting.
Untuk fungsi-fungsi perangkat keras seperti sebagai masukan dan keluaran dan
alokasi memori, sistem operasi bertindak sebagai perantara antara program
aplikasi dan perangkat keras komputer, meskipun kode aplikasi biasanya
dieksekusi langsung oleh perangkat keras dan seringkali akan menghubungi OS
atau terputus oleh itu. Sistem operasi yang ditemukan pada hampir semua
perangkat yang berisi komputer-dari ponsel dan konsol permainan video untuk
superkomputer dan server web.
Sistem Operasi yang ada pada jaman sekarang ini semakin banyak, canggih dan
tentu saja semakin berkembang. Meskipun Sistem Operasi yang digunakan pada masa
sekarang ini kebanyakan menggunakan Windows, bukan berarti Sistem Operasi yang
lain mati ( tidak ada atau punah ). Sebagai contoh, masih ada Sistem Operasi
yaitu Linux. Dalam Sistem Operasi, banyak hal yang harus dipahami. Bukan
sekedar memahami bagaimana menginstall aplikasi, menghapus virus, memberikan
proteksi virus bagi laptop maupun komputer. Bukan sekedar itu saja. Didalam
Mata Kuliah Sistem Operasi ini, diajarkan mengenai manajemen memory, CPU,
beberapa Algoritma seperti FCFS ( First Come First Served ), Round Robin, SJF,
dan lain sebagainya. Sistem operasi mempunyai penjadwalan yang sistematis
mencakup perhitungan penggunaan memori, pemrosesan data, penyimpanan data, dan
sumber daya lainnya.
1.2
Tujuan
Mengetahui Sinkronisasi dan Deadlock
Mengetahui masalah critical section
Mengetahui Sinkronisasi Hardware
Mengetahui sinkronisasi software
Mengetahui semaphore
Mengetahui Masalah Masalah Klasik dalam Sinkronisasi
Mengetahui deadlock
Mengetahui Karakterisktik deadlock
Mengetahui Metode Penanganan deadlock
Mengetahui pencegahan deadlock
Bab
2
PEMBAHASAN
2.1 Sinkroniasi Data
Definisi sinkronisasi adalah suatu proses dimana proses tersebut saling
bersamaan dan saling berbagi data bersama yang mengakibatkan race condition
atau lebih dikenal dengan inkonsistensi data.
Tujuan dari sinkronisasi itu sendiri ialah untuk menghindari terjadinya
inkonsitensi data karena pengaksesan oleh beberapa proses yang berbeda serta
untuk mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan
baik dan sesuai apa yang di harapkan.
Sebab
dan Menanggulangi:
Akses – akses yang dilakukan secara bersama-sama ke data yang sama, dapat
menyebabkan data menjadi tidak konsisten
Untuk menjaga agar data tetap konsisten, dibutuhkan mekanisme-mekanisme untuk
memastikan pemintaan ekseskusi dari proses yang bekerja.
Race Condition: Situasi dimana beberapa proses mengakses dan memanipulasi data
secara bersamaan. Nilai terakhir dari data bergantung dari proses mana yang
selesai terakhir
Untuk menghindari Race Condition, proses-proses secara bersamaan harus
disinkronisasikan.
Masalah
critical section
Critical section adalah segmen kode yang mengakses data yang digunakan proses
secara bersama sama yang dapat membawa proses itu ke bahaya race condition.
Biasanya sebuah proses sibuk melakukan perhitungan internal dan hal-hal lainnya
tanpa ada bahaya yang menuju ke race condition pada sebagian besar waktu. Akan
tetapi, biasanya setiap proses memiliki segmen kode dimana proses itu dapat
mengubah variabel, meng-update suatu tabel, menulis ke suatu file, dan
lain-lainnya, yang dapat membawa proses itu ke bahaya race condition.
1.3
Prasyarat Solusi Critical Section
1. Mutual Exclusion. Mutual Exclusion
merupakan sebuah jalan yang menjamin jika sebuah proses sedang menggunakan
variabel atau berkas yang digunakan bersama-sama, proses lain akan dikeluarkan
dari pekerjaan yang sama. Misal proses Pi sedang menjalankan critical section
(dari proses Pi), maka tidak ada proses-proses lain yang dapat menjalankan
critical section dari prosesproses tersebut. Dengan kata lain, tidak ada dua
proses yang berada di critical section pada saat yang bersamaan.
a. do {
i. entry section
ii. critical section
iii.exit section
iv. remainder section
b. } while (1);
Setiap proses harus meminta izin untuk memasuki critical sectionnya. Bagian
dari kode yang mengimplementasikan izin ini disebut entry section. Akhir dari
critical section itu disebut exit section. Bagian kode selanjutnya disebut
remainder section. Dari kode di atas, dapat kita lihat bahwa untuk bisa
memasuki critical section sebuah proses harus melalui entry section.
2. Terjadi kemajuan (progress). Jika
tidak ada proses yang sedang menjalankan critical section-nya dan jika terdapat
lebih dari satu proses lain yang ingin masuk ke critical section, maka hanya
prosesproses yang tidak sedang menjalankan remainder section-nya yang dapat
berpartisipasi dalam memutuskan siapa yang berikutnya yang akan masuk ke
critical section, dan pemilihan siapa yang berhak masuk ke critical section ini
tidak dapat ditunda secara tak terbatas (sehingga tidak terjadi deadlock).
Ada batas waktu tunggu (bounded waiting). Jika seandainya ada proses yang
sedang menjalankan critical section, maka terdapat batasan waktu berapa lama
suatu proses lain harus menunggu giliran untuk mengakses critical section.
Dengan adanya batas waktu tunggu akan menjamin proses dapat mengakses ke
critical section (tidak mengalami starvation: proses seolah-olah berhenti,
menunggu request akses ke critical section diperbolehkan).
Masalah
sinkronisasi Software (perangkat lunak)
Solusi perangkat lunak(Software) Dengan menggunakan algoritma-alogoritma yang
nilai kebenarannya tidak tergantung pada asumsi-asumsi lain, selain itu setiap
proses berjalan pada kecepatan yang bukan nol.
Masalah sinkronisasi hardware (perangkat keras)
Seperti yang telah kita ketahui bahwa, sinkronisasi haruslah mutual exclusive,
atau dengan kata lain, 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:
Processor Synchronous
Memory Synchronous
Processor Synchronous
Central Processing Unit, CPU, mempunyai suatu mekanisme yang dinamakan
interrupt. Di dalam sistim operasi, mekanisme ini digunakan secara intensif,
atau dengan kata lain, banyak konsep-konsep sistim operasi yang menggunakan
mekanisme ini. Sebagai contoh : system call, process scheduling, dsb.
Berbicara mengenai sinkronisasi berarti kita mengasumsikan bahwa akan ada 2
atau lebih proses yang sedang berjalan di komputer secara concurrent, atau
dengan kata lain konsep time-shared sudah diimplementasikan di sistim operasi.
Sistim time-shared yang sering diimplementasikan dengan algoritma RR (Round
Robin), memanfaatkan mekanisme interrupt di CPU. Jadi di dalam RR ada suatu
satuan waktu yg dinamakan quantum yang mana setiap quantum dibatasi oleh satu
software interrupt.
Teknisnya, akan ada suatu interrupt – yang biasanya adalah timer interrupt –
yang secara berkala akan menginterrupt sistim. Pada saat interrupt dilakukan
sistim operasi akan segera melakukan proses pergantian dari proses yang satu ke
proses yang lainnya sesuai dengan algoritma.
Seperti yang telah dikatakan di atas, isu yang ada di sini adalah, ada satu
atau sekelompok instruksi yang tidak dapat diberhentikan sampai satu atau
sekelompok instruksi tersebut selesai.
Adalah sangat jelas bahwa yang membuat suatu instruksi diberhentikan adalah
mekanisme yang di sistim operasi (baca mengenai process scheduling ). Mekanisme
ini sangat bergantung kepada mekanisme interrupt dari hardware. Jadi, jika kita
dapat menon-aktifkan interrupt pada saat critical section tersebut, maka
masalah sinkronisasi dapat terselesaikan.
Ternyata para designer komputer melihat celah ini, dan sekarang ini sudah
hampir semua komputer yang ada telah mengimplementasi instruksi mesin yang mana
instruksi ini akan menon-aktifkan serfis interrupt, dan ada instruksi yang lain
yang akan mengaktifkan interrupt tersebut.
Sebagai contoh sederhana, kita akan melihat contoh program dari prosesor Atmel
ARM tm (contoh ini diambil karena prosesor ini mudah didapatkan dan harganya
tidak terlalu mahal, serta ada dev-kitnya, silahkan merujuk ke http://www.atmel.com ). mainModul :
00 CLI 'masuk ke Critical Section dengan cara
'men-disable interrupt
01 ADD r1,r2 'Critical Section
02 …. 'Critical Section
03 SBI 'pergi dari Critical Section dengan cara
'men-enable interrupt
04 .. 'Remainder Section
Pada
baris ke 0, prosesor akan menon-aktifkan interrupt, instruksi – instruksi
selanjutnya tidak akan diganggu oleh interrupt. Selanjut setelah keluar dari
critical section, pada baris 3, prosesor akan mengaktifkan kembali interrupt
sehingga mekanisme scheduling di sistim operasi dapat berjalan kembali.
Bila kita melihat dari yang di atas, terlihat bahwa dengan mekanisme ini saja
sudah cukup mengatasi isu yang ada. Tetapi ternyata mekanisme ini tidak terlalu
berhasil di dalam lingkungan multiprocessor. Jikalau kita menon-aktifkan
interrupt, maka yang dinon-aktifkan hanya satu prosesor, hal ini dapat
mengakibatkan hal – hal yang tidak diinginkan.
Memory Synchronous
Dilihat dari nama mekanismenya, maka kita sudah dapat memprediksi bahwa
mekanisme ini akan menggunakan jasa memori. Memang hal tersebut benar,
mekanisme memory synchronous memakai suatu nilai yang disimpan di memori, dan
jikalau suatu proses berhasil mengubah nilai ini, maka proses ini akan
meneruskan ke instruksi selanjutnya, jika tidak, maka proses ini akan berusaha
terus untuk dapat mengubahnya.
Jika dilihat dari paragraf di atas, mekanisme ini lebih cocok dikategorikan
sebagai pendekatan dari software. Tetapi, jika kita perhatikan lebih lanjut,
ternyata mekanisme ini memerlukan jasa hardware. Syarat yang harus dipenuhi
agar mekanisme ini dapat berjalan adalah perlunya hardware mempunyai kemampuan
untuk membuat suatu instruksi dijalankan secara atomic. Pengertian dari
instruksi atomic adalah satu atau sekelompok instruksi yang tidak dapat
diberhentikan sampai instruksi tsb selesai. Detil mengenai hal ini akan
dibicarakan di bagian – bagian selanjutnya.
Sebagai contoh, kita dapat memperhatikan contoh program Javatm yang ada di
bawah ini :
00 boolean testAndSet( boolean variable[] )
01 {
02 boolean t = variable[0];
03 variable[0] = true;
04 return t;
05 }
…..
56 while (testAndSet(lock)) { /* do nothing */ }
57 // Critical Section
58 Lock[0] = false;
59
// Remainder Section
method
testAndSet haruslah bersifat atomic , sehingga method ini dianggap sebagai satu
instruksi mesin. Perhatikan pada baris 56 dimana method ini dipakai. Pada baris
ini proses berusaha untuk mengubah nilai dari variable reference lock. Jikalau
ia tidak berhasil maka akan terus mencoba, tapi jika berhasil maka proses akan
masuk ke bagian kritis dan setelah ini proses akan mengubah nilai dari lock
sehingga memberikan kemungkinan proses lain untuk masuk.
Janganlah bingung dengan lock, boolean [], yang terkesan aneh. Hal ini bukanlah
bagian dari sinkronisasi tetapi hanyalah suatu bagian dari konsep
pass-by-reference dan pass-by-value dari Javatm, untuk lebih lanjut mengenai
konsep ini dapat dibaca buku – buku programming javatm. Satu catatan di sini
adalah, contoh ini hanyalah sebuah ilustrasi dan tidak dapat dicompile dan
dijalankan, karena Javatm konsep atomic instruction di Javatm bersifat
transparan dari sisi programmer (akan dijelaskan pada bagian-bagian
selanjutnya).
Keunggulan dari memory synchronous adalah pada lingkungan multiprocessor, semua
processor akan terkena dampak ini. Jadi semua proses yang berada di processor,
yang ingin mengakses critical section, meskipun berada di processor yang
berbeda – beda, akan berusaha untuk mengubah nilai yang dimaksud. Sehingga
semua processor akan tersinkronisasi.
Semaphore
Semaphore adalah pendekatan yang diajukan oleh Djikstra, dengan prinsip bahwa
dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda
sederhana. Seperti proses dapat dipaksa berhenti pada suatu saat, sampai proses
mendapatkan penanda tertentu itu. Sembarang kebutuhan koordinasi kompleks dapat
dipenuhi dengan struktur penanda yang cocok untuk kebutuhan itu. 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 Down adalah
atomic, tak dapat diinterupsi sebelaum diselesaikan.Emnurunkan nilai, memeriksa
nilai, menempatkan proses pada antrian dan memblocked sebagai instruksi
tunggal. Sejak dimulai, tak ada proses alain yang dapat mengakses semaphore
sampai operasi selesai atau 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. Urutan proses yang dipilih
tidak ditentukan oleh Djikstra, dapat dipilih secara acak. Adanya semaphore
mempermudah persoalan mutual exclusion. Skema penelesaian mutual exclusion
mempunyai bagan sebagai berikut:
Sebelum masuk critical section, proses melakukan Down. Bila berhasil maka
proses masuk ke critical section. Bila tidak berhasil maka proses di-blocked
atas semaphore itu. Proses yang diblocked akan dapat melanjutkan kembali bila
proses yang ada di critical section keluar dan melakukan opersai up sehingga
menjadikan proses yang diblocked ready dan melanjutkan sehingga opersi Down-nya
berhasil.
Masalah
Masalah Klasik Dalam Sinkronisasi
Problem Klasik pada Sinkronisasi Ada tiga hal yang selalu menjadi masalah pada
proses sinkronisasi:
Problem Bounded buffer
Problem Reades and Writer
Problem Dining Philosophers
Problem
Bounded buffer
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 : Solusi Shared Memory untuk Bounded – Buffer,
mengijinkan (n-1) items di dalam buffer untuk suatu waktu tertentu.
Problem Reades and Writer
Problem lain yang terkenal adalah readers-writer problem yang memodelkan proses
yang mengakses database. Sebagai contoh sebuah sistem pemesanan sebuah perusahaan
penerbangan, dimana banyak proses berkompetisi berharap untuk membaca (read)
dan menulis (write). Hal ini dapat diterima bahwa banyak proses membaca
database pada saat yang sama, tetapi jika suatu proses sedang menulis database,
tidak boleh ada proses lain yang mengakses database tersebut, termasuk membaca
database tersebut.
Solusi Readers and Writers Problem,Pembaca di prioritaskan
Reader tidak akan menunggu reader(s) lain yang sedang membaca, walaupun ada
writer yang sedang menunggu. Dengan katalain, 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.
Penulis di prioritaskan,Di mana suatu writer sedang dijalankan oleh sistem,
maka tidak boleh ada reader yang memulai untuk membaca data.,Kedua jenis proses
mempunyai prioritas yang sama. Tidak ada prioritas khusus yang diberikan kepada
kedua jenis proses.
Problem
Dining Philosophers
Pada tahun 1965, Djikstra menyelesaikan sebuah masalah sinkronisasi yang beliau
sebut dengan dining philisophers problem. Dining philosophers dapat diuraikan
sebagai berikut: Lima orang filosuf duduk mengelilingi sebuah meja bundar.
Masing-masing filosof mempunyai sepiring spageti. Spageti-spageti tersebut
sangat licin dan membutuhkan dua garpu untuk memakannya. Diantara sepiring
spageti terdapat satu garpu. Kehidupan para filosof terdiri dari dua periode,
yaitu makan atau berpikir. Ketika seorang filosof lapar, dia berusaha untuk
mendapatkan garpu kiri dan garpu kanan sekaligus. Jika sukses dalam mengambil
dua garpu, filosof tersebut makan untuk sementara waktu, kemudian meletakkan
kedua garpu dan melanjutkan berpikir. Pertanyaan kuncinya adalah, dapatkah anda
menulis program untuk masing-masing filosof yang melakukan apa yang harus
mereka lakukan dan tidak pernah mengalami kebuntuan. Prosedur take-fork
menunggu sampai garpu-garpu yang sesuai didapatkan dan kemudian menggunakannya.
Sayangnya dari solusi ini ternyata salah. Seharusnya lima orang filosof
mengambil garpu kirinya secara bersamaan. Tidak akan mungkin mereka mengambil
garpu kanan mereka, dan akan terjadi deadlock.
2.2
Deadlock
Deadlock secara harfiah adalah kebuntuan, Di dalam sistem operasi berarti suatu
kondisi di mana sekumpulan proses tidak dapat berjalan kembali atau tidak
adanya komunikasi antar proses. Definisi lainnya yaitu sekumpulan proses yang
terblok yang tiap proses tersebut memegang sumber daya dan menunggu untuk
mendapatkan sumber daya yang dipegang oleh proses di dalam kumpulan tersebut.
.
Penyebab utama terjadinya deadlock adalah terbatasnya sumber daya yang akan
digunakan oleh proses-proses. Tiap proses berkompetisi untuk memperebutkan
sumber daya yang ada. Jadideadlock berhubungan erat dengan tersedianya sumber
daya dari
komputer.
Karakteristik
Deadlock
Menurut
Coffman(1971) ada empat kondisi yang dapat menyebabkan terjadinya deadloock.
Keempat kondisi tersebut tidak dapat berdiri sendiri, saling mendukung.
Mutual
Eksklusif: hanya ada satu proses yang bisa menggunakan sumber daya tersebut.
Jika ada proses lain yang meminta sumber daya tersebut, maka proses itu harus
menunggu sampai sumber daya dilepaskan.
Memegang dan Menunggu: proses yang meminta sumber daya sudah memegang sumber
daya lainnya(meminta sumber daya tambahan).
Tidak ada Preemption: sumber daya yang sudah dialokasikan untuk sebuah proses
tidak bisa diminta oleh proses lain. Sumber daya hanya bisa dilepaskan secara
sukarela atau setelah proses tersebut selesai menggunakannya.
Circular Wait(menunggu berputar): kondisi seperti rantai yaitu saling menunggu
smber daya yang dipakai oleh proses yang menunggu sumber daya tersebut.
Metode
untuk Menangani Deadlock
Pada
prinsipnya kita dapat menangani deadlock dengan beberapa cara:
Menggunakan protokol untuk pencegahan atau penghindaran deadlock, memastikan
bahwa sistem tidak akan memasuki kondisi deadlock.
Kita bisa mendeteksi terjadinya deadlock lalu memperbaiki.
Kita juga bisa mengabaikan deadlock, hal ini dilakukan pada sistem operasi
berbasis UNIX.
Untuk
memastikan sistem tidak memasuki deadlock, sistem dapat menggunakan pencegahan
deadlock atau penghindaran deadlock. Penghindaran deadlock membutuhkan
informasi tentang sumber daya yang mana yang akan suatu proses meminta dan
berapa lama akan digunakan. Dengan informasi tersebut dapat diputuskan apakah
suatu proses harus menunggu atau tidak. Hal ini disebabkan oleh keberadaan
sumber daya, apakah ia sedang digunakan oleh proses lain atau tidak. Jika
sebuah sistem tidak memastikan deadlock akan terjadi, dan juga tidak didukung
dengan pendeteksian deadlock serta pencegahannya, maka kita akan sampai pada
kondisi deadlock yang dapat berpengaruh terhadap performance system karena
sumber daya tidak dapat digunakan oleh proses sehingga proses-proses yang lain
juga terganggu. Akhirnya sistem akan berhenti dan harus direstart.
Pencegahan
Deadlock
Pencegahannya
sebagai berikut:
Masalah Mutual Eksklusif, Kondisi ini tidak dapat dilarang, jika aksesnya perlu
bersifat spesial untuk satu proses,maka hal ini harus didukung oleh kemampuan
sistem operasi. Jadi diusahakan agar tidak menggunakan kondisi spesial tersebut
sehingga sedapat mungkin deadlock dapat dihindari.
Masalah
Kondisi Menunggu dan Memegang Penanggulangan deadlock, dari kondisi ini lebih
baik dan menjanjikan, asalkan kita dapat memegang sumber daya untuk menunggu
sumber daya lain, kita dapat mencegah deadlock. Caranya ialah dengan meminta
semua sumber daya yang ia butuhkan sebelum proses berjalan. Tetapi masalahnya
sebagian proses tidak mengetahui keperluannya sebelum ia berjalan. Jadi untuk
mengatasi hal ini, kita dapat menggunakan algoritma bankir. Sistem operasi atau
sebuah protokol mengatur hal ini. Hasil yang dapat terjadi adalah sumber daya
lebih harus dispesifikasikan dan kelaparan sumber daya, atau proses yang
membutuhkan sumber daya yang banyak harus menunggu sekian lama untuk
mendapatkan sumber daya yang ia butuhkan.
Masalah
tidak preemption, Hal ketiga ialah jangan sampai ada preemption pada sumberv
daya yang telah dialokasikan. Untuk memastikan hal ini, kita dapat menggunakan
protocol. Jadi jika sebuah proses meminta sumber daya yang tidak dapat ia
penuhi saat itu juga, maka proses mengalami preempted. Dengan kata lain ada
sumber daya dilepaskan dan diberikan ke proses yang menunggu, dan proses itu
akan menunggu sampai kebutuhan sumber dayanya dipenuhi. Cara lain yaitu dengan
mengecek apakah sumber daya yang dicari proses tersedia atau tidak. Jika ada
maka langsung dialokasikan tetapi jika tidak maka kita cek apakah ada proses
lain yang sedang menunggu sumber daya juga. Jika ya maka kita ambil sumber daya
dari proses yang sedang menunggu tersebut dan memberikan kepada proses yang
meminta sumber daya tersebut. Jika tidak tersedia juga maka proses tersebut
harus menunggu. Dalam menunggu beberapa dari sumber dayanya dapat saja
dipreempted jika ada proses yang memintanya. Cara ini efektif untuk proses yang
menyimpan dalam memory atau register.
Masalah
lingkaran tunggu, Masalah ini dapat ditangani oleh sebuah protocol yang menjaga
agar sebuah proses tidak membuat lingkaran sikus yang dapat mengakibatkan
deadlock dengan cara memberikan penomoran kepada sumber daya, dan bila suatu
proses meminta sumber daya lagi maka ia hanya dapat meminta sumber daya yang
nomornya lebih tinggi dari yang ia minta sebelumnya.
Penghindaran
Deadlock
Algoritma
Bankir Menurut Djikstra(1965) algoritma penjadwalan dapat menghindari deadlock
dan algoritma penjadwalan tersebut dikenal dengan algoritma bankir. Algoritma
ini dapat digambarkan, ada seorang bankir yang akan meminjamkan kepada
peminjam-peminjamnya. Setiap peminjam memberikan batas pinjaman maksimum. Tentu
saja bankir tahu bahwa peminjam tidak akan meminjam dana maksimum secara
langsung melainkan bertahap. Bankir memprioritaskan kepada peminjam yang
meminjam dana lebih banyak, sedangkan yang lain disuruh menunggu hingga
peminjam yang lebih besar mengembalikan dananya, baru setelah itu ia meminjamkan
kepada peminjam yang lain. Jadi algoritma bankir disini mempertimbangkan apakah
permintaan proses sesuai dengan jumlah sumber daya yang ada dan sekaligus
memperkirakan jumlah sumber daya yang mungkin diminta lagi. Jangan sampai
ketika ada proses yang meminta sumber daya tetapi sumber dayanya habis atau
tidak ada lagi jika tidak maka akan terjadi deadlock.
Secara umum algoritma bankir dibagi menjadi 4 struktur data:
1. Tersedia: jumlah sumber daya yang
tersedia
2. Alokasi: jumlah sumber daya yang
dialokasikan untuk setiap proses
3. Maksimum: jumlah permintaan sumber
daya oleh proses
4. Kebutuhan: maksimum-alokasi(sisa
sumber daya yang dibutuhkan oleh proses setelah dikurangi dengan yang
dialokasikan)
Pemulihan
Deadlock
1.
Terminasi Proses
Abort semua proses yang deadlock Metode ini akan mematahkan deadlock cycle,
tetapi bisa saja proses-proses yang deadlock telah dikomputasi dalam waktu yang
lama dan hasil-hasil komputasi parsial harus dibuang, sehingga ada kemungkinan
harus dikomputasi ulang. Abort satu proses pada satu waktu sampai deadlock
tereliminir. Metode ini sangat mungkin mendatangkan overhead, setelah setiap
proses di-abort, algoritma pendeteksian deadlock harus diminta kembali untuk
menentukan apakah masih ada proses-proses yang deadlock. Jika terminasi parsial
digunakan, kita harus menentukan proses-proses deadlock yang mana yang harus
diterminasi. Penentuan ini pada dasarnya berkaitan dengan ekonomi. Kita harus
abort proses-proses yang terminasinya minimum cost. Sayangnya, minimum cost
tidak ditentukan satu hal. Banyak faktor yang mempengaruhi pemilihan proses,
mencakup:
Apa prioritas dari proses
Berapa lama proses telah mengkomputasi dan berapa lama lagi proses akan
mengkomputasi sebelum menyelesaikan tugasnya
Berapa banyak dan apa tipe dari sumber daya yang digunakan oleh proses
Berapa sumber daya lagi yang dibutuhkan proses supaya selesai
Berapa banyak proses yang perlu diterminasi Apakah proses interactive atau
batch
2.
Preempt Sumber Daya
Mengeliminasi deadlock menggunakan preempt sumber daya berarti kita berturut-turut
preempt beberapa sumber daya dari suatu proses dan memberikan sumber daya ini
ke proses lain sampai deadlock cycle patah.
Pada
preempt sumber daya terdapat :
Memilih korban
Seperti
pada terminasi proses, kita harus menentukan sumber daya dan proses mana yang
akan dipreempt dengan minimum cost. Faktor cost mencakup parameter-parameter
seperti jumlah dari sumber daya yang ditahan proses-proses yang deadlock dan
jumlah waktu dari proses yang telah digunakan selama eksekusinya.
Rollback
Jika
kita preempt sebuah sumber daya dari sebuah proses, proses tidak dapat
berlanjut dengan eksekusi normal karena proses kehilangan beberapa sumber daya
yang diperlukan. Kita harus rollback proses ke beberapa safe state dan restart
dari state tersebut. Secara umum, sulit untuk menentukan safe state. Solusi
termudah adalah dengan total rollback, abort proses, dan restart.
Starvation
Dalam sebuah sistem di mana pemilihan korban berdasar primer
pada faktor cost, dapat terjadi suatu proses tidak pernah menyelesaikan tugasnya
karena suatu sumber daya selalu di-preempt pada prose yang sama. Kita harus
memastikan bahwa sebuah proses dapat dipilih sebagai korban hanya dengan
batasan waktu tertentu. Solusi pada umumnya adalah dengan menambahkan jumlah
rollback ke dalam faktor cost.
Bab 3
Penutup
3.1
Kesimpulan
Sinkronisasi adalah akses bebarengan untuk berbagi dua bersama dapat
mengakibatkan inkosistensi data. Pemeliharaan konsistensi data memerlukan
mekanisme untuk memastikan eksekusi dari proses kerjasama.
Tujuan dari sinkronisasi itu sendiri ialah untuk menghindari terjadinya
inkonsitensi data karena pengaksesan oleh beberapa proses yang berbeda serta
untuk mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan
baik dan sesuai apa yang di harapkan.
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. Sinkronisasi
dan Deadlock dapat ditanggulangi dengan cara cara tertentu dan dapat dicegah
dalam proses proses tertentu.
3.2
Saran
Terima kasih sudah membaca makalah yang sudah kami buat, mohon maaf atas
kesalahan dan kekurangan makalah kami. Kami membutuhkan kriktik dan saran agar
makalah yang kami akan buat nanti bisa lebih baik lagi.
Sumber
Alamat web Program studi, Fakultas, Universitas:
Nama Mahasiswa: Adelia Riskhi Arishandi