Makalah Sinkronisasi dan Deadlock
MAKALAH SINKRONISASI DAN DEADLOCK
Disusun oleh :
Muhammad Hafiz Habibullah (14116886)
Riezka Yunistika Fajriatifah (16116363)
Rifqi Raiqal (16116404)
Muhammad Syahreza Alfaris (15116124)
Taufik Arif (17116318)
Rendi Ramadana Putra (16116178)
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 Saprudin Selaku dosen Pengantar Sistem
Operasi, Sehingga Saya dapat menyelesaikan Makalah yang berjudul “ SINKRONISASI
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, saya selaku
penyusun telah berusaha sebaik mungkin untuk menysun makalah ini agar dapat
dimengerti dan dipahami dan saya memerlukan kritik dan saran agar dapat
meningkatkan makalah saya.
Semoga Allah SWT selalu memberikan petunjuk kepada kita dalam
pembentukan generasi yang maju. Akhir kata kami ucapkan terima kasih.
Depok, 8 Mei 2018
Penulis.
DAFTAR ISI
BAB I
PENDAHULUAN
1.1 Latar Belakang
Sistem Operasi adalah bagian yang sangat penting bagi semua
sistem komputer. Secara umum sistem komputer terbagi atas hardware ,
sistem operasi, program aplikasi, dan user. hardware terdiri
atas CPU, memori {XE “memori”} dan I/O device yang
merupakan resource-resource dasar. Program aplikasi
berisi compiler, basis data, game dan program-program bisnis, yang
merupakan suatu cara atau alat yang mana resource-resource akan di
akses untuk menyelesaikan masalah user.
Dalam pemakaian sistem operasi jika akses-akses yang dilakukan
secara bersama-sama ke data yang sama maka akan menyebabkan data menjadi tidak
konsisten. Untuk menjaga agar data tetap konsisten, dibutuhkan
mekanisme-mekanisme untuk memastikan permintaan ekseskusi dari proses yang
bekerja. Maka jika terjadi diperlukan semacam proses sinkronisasi dari proses
tersebut.
1.2 Rumusan Masalah
Jika terjadi suatu akses yang dilakukan secara bersama sama yang
berujung pada ketidak konsitenan maka solusi untuk pemecahannya adalah dengan
sinkronisasi pada proses tersebut. Selain itu jika jika terjadi deadlock /
kebuntuan disebabkan karena proses yang satu menunggu sumber daya yang sedang
dipegang oleh proses lain, proses lain itu pun sedang menunggu sumber daya yang
dipegang olehnya. Dengan kata lain setiap proses dalam set menunggu untuk
sumber yang hanya dapat dikerjakan oleh proses lain dalam set sedang menunggu.
BAB II
PEMBAHASAN
2.1 Sinkronisasi
Akses bebarengan untuk berbagi dua bersama dapat mengakibatkan
inkosistensi data. Pemeliharaan konsistensi data memerlukan mekanisme untuk
memastikan eksekusi dari proses kerjasama. Adapun pengertian lainnya
yaitu proses pengaturan jalannya beberapa proses pada saat yang bersamaan.
Akses berbarengan untuk berbagi dua atau bersamaan dapat mengakibatkan
inkosistensi data. Pemeliharaan konsistensi data memerlukan mekanisme untuk
memastikan eksekusi dari proses kerjasama.
Shared memory merupakan solusi ke masalah bounded-butter yang
mengijinkan paling banyak n-1 materi dalam buffer pada waktu yang sama. Suatu
solusi, jika semua N buffer digunakan tidaklah sederhana. Dimisalkan kita
memdifikasi producer-consumer code dengan menambahkan suatu variable counter,
dimulai dari 0 dan masing-masing waktu tambahan dari suatu item baru diberikan
kepada buffer.
Tujuan utama sinkronisasi adalah untuk menghindari terjadinya
inkonsitensi data karena pengaksesan oleh beberapa proses yang berbeda (mutual
exclusion) serta untuk mengatur urutan jalannya proses-proses sehingga dapat
berjalan dengan lancar dan terhindar dari deadlock dan starvation. Sinkronisasi
umumnya dilakukan dengan bantuan perangkat sinkronisasi. Penyelesaian terhadap
masalah ini sangat penting karena perkembangan teknologi sistem komputer menuju
ke sistem multiprocessing, terdistribusi dan paralel yang
mengharuskan adanya proses-proses kongkuren.
Sinkronisasi
sederhananya saling bertukar data agar memiliki jumlah data yang sama.
tujuan utama mungkin lebih condong ke arah back-up (membuat cadangan)
tapi ada pula sinkronisasi jadwal kerja (kalender) untuk menciptakan suatu event yang tepat secara bersamaan diantara pelaku sinkronisasi. Sinkronisasi umumnya dilakukan dengan bantuan perangkat sinkronisasi.
tujuan utama mungkin lebih condong ke arah back-up (membuat cadangan)
tapi ada pula sinkronisasi jadwal kerja (kalender) untuk menciptakan suatu event yang tepat secara bersamaan diantara pelaku sinkronisasi. Sinkronisasi umumnya dilakukan dengan bantuan perangkat sinkronisasi.
2.2 Race Condition
Race Condition adalah situasi di mana beberapa proses
mengakses dan memanipulasi data bersama pada saat besamaan. Nilai akhir dari
data bersama tersebut tergantung pada proses yang terakhir selesai. Untuk
mencegah race condition, proses-proses yang berjalan besamaan harus
di disinkronisasi. Dalam beberapa sistem operasi, proses-proses yang berjalan
bersamaan mungkin untuk membagi beberapa penyimpanan umum, masing-masing dapat
melakukan proses baca (read) dan proses tulis (write).
Penyimpanan bersama (shared storage) mungkin berada di
memori utama atau berupa sebuah berkas bersama, lokasi dari memori bersama
tidak merubah kealamian dari komunikasi atau masalah yang muncul. Untuk
mengetahui bagaimana komunikasi antar proses bekerja, mari kita simak sebuah
contoh sederhana, sebuah print spooler. Ketika sebuah proses ingin mencetak
sebuah berkas, proses tersebut memasukkan nama berkas ke dalam sebuah spooler
direktori yang khusus. Proses yang lain, printer daemon, secara periodik
memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jika
ada berkas yang sudah dicetak dihilangkan nama berkasnya dari direktori.
Contoh Race Condition
int counter = 0;
//Proses yang dilakukan oleh produsen
item nextProduced;
while (1) {
while (counter == BUFFER_SIZE) { ... do
nothing ... }
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
counter++;
}
//Proses yang dilakukan oleh konsumen
item nextConsumed;
while (1) {
while (counter ==
0) { ... do
nothing ... }
nextConsumed = buffer[out] ;
out = (out + 1) % BUFFER_SIZE;
counter--;
}
Pada program di atas, terlihat bahwa terdapat
variabel counter yang diinisialisasi dengan nilai 0, dan ditambah 1 setiap kali
terjadi produksi serta dikurangi 1 setiap kali terjadi konsumsi. Pada bahasa
mesin, baris kode counter++ dan counter-- diimplementasikan seperti di bawah ini:
Contoh Race Condition pada bahasa mesin
//counter++
register1 = counter
register1 = register1 + 1
counter = register1
//counter--
register2 = counter
register2 = register2 - 1
counter = register2
Jika perintah counter++ dan counter-- berusaha mengakses nilai counter secara
konkuren, maka nilai akhir dari counter bisa salah. Hal ini tidak berarti
nilainya pasti salah, tapi ada kemungkinan untuk terjadi kesalahan. Contoh
urutan eksekusi baris kode tersebut yang mengakibatkan kesalahan pada nilai
akhir counter:
Contoh program yang memperlihatkan Race
Condition
//misalkan nilai awal counter adalah 2
.produsen: register1 =
counter (register1 = 2)
.produsen: register1 = register1 + 1
(register1 = 3)
.konsumen: register2 =
counter (register2 = 2)
.konsumen: register2 = register2 - 1
(register2 = 1)
.konsumen: counter =
register2 (counter = 1)
.produsen: counter =
register1 (counter = 3)
Status akhir dari counter seharusnya adalah 0,
tapi kalau urutan pengeksekusian program berjalan seperti di atas, maka hasil
akhirnya menjadi 3. Perhatikan bahwa nilai akhir counter akan mengikuti
eksekusi terakhir yang dilakukan oleh komputer. Pada program di atas,
pilihannya bisa 1 atau 3. Perhatikan bahwa nilai dari counter akan bergantung
dari perintah terakhir yang dieksekusi. Oleh karena itu maka kita membutuhkan
sinkronisasi yang merupakan suatu upaya yang dilakukan agar proses-proses yang
saling bekerjasama dieksekusi secara beraturan demi mencegah timbulnya suatu
keadaan race condition.
2.3 Masalah Critical
Section
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 empat 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.
Critical Section adalah sebuah segmen kode di mana sebuah
proses yang mana sumber daya bersama diakses. Terdiri dari:
·
Entry
Section: kode yang digunakan
untuk masuk ke dalam critical section
·
Critical
Section: Kode di mana hanya
ada satu proses yang dapat dieksekusi pada satu waktu
·
Exit
Section: akhir dari critical
section, mengizinkan proses lain
·
Remainder
Section: kode istirahat
setelah masuk ke critical section.
Ada bebrapa Solusi
untuk mengatasi masalah Critical Section, yaitu:
- Mutual exclution
Jika proses pi sedang mengeksekusi critical section-nya maka tidak ada
proses lain yang dapat mengeksekusi dalam critical section mereka.
- Progress
Jika tidak ada proses yang sedang dieksekusi dalam critical
section dan ada beberapa proses yang ingin masuk ke critical section
mereka, maka pemilihan proses yang akan masuk ke critical section berikutnya
tidak bias ditunda.
- Bounded Waiting
Suatu keterikatan
harus ada pada sejumlah proses yang diijinkan masuk ke critical section mereka,
setelah adanya proses yang meminta masuk ke critical section dan sebelum
permintaan itu diterima.
- a. Asumsikan
bahwa tiap proses mengeksekusi pada nonzero speed.
- b. Tidak ada asumsi
mengenai kecepatan relatif dan n proses.
Cara-cara memecahkan masalah
- Hanya
dua proses, Po dan P1
- Struktur
umum dari proses adalah Pi (proses lain Pj)
2.4 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.
2.4.1 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.
2.4.2 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.
2.5 Problem Klasik
pada Sinkronisasi
Ada tiga hal yang
selalu memjadi masalah pada proses sinkronisasi:
- Problem Bounded buffer.
- Problem Reades and Writer.
- Problem Dining Philosophers.
2.6 Deadlock
Sinkronisasi
diperlukan untuk menghindari terjadinya ketidak-konsistenan data akibat adanya
akses data secara konkuren. Proses-proses disebut konkuren jika proses-proses
itu ada dan berjalan pada waktu yang sama, proses-proses konkuren ini bisa
bersifat independen atau bisa juga saling berinteraksi. Proses-proses konkuren
yang saling berinteraksi memerlukan sinkronisasi agar terkendali dan juga
menghasilkan output yang benar
Deadlock atau pada
beberapa buku disebut Deadly Embrace adalah keadaan dimana dua
program memegang kontrol terhadap sumber daya yang dibutuhkan oleh program yang
lain. Tidak ada yang dapat melanjutkan proses masing-masing sampai program yang
lain memberikan sumber dayanya, tetapi tidak ada yang mengalah.
Deadlock yang mungkin
dapat terjadi pada suatu proses disebabkan proses itu menunggu suatu kejadian
tertentu yang tidak akan pernah terjadi. Dua atau lebih proses dikatakan berada
dalam kondisi deadlock, bila setiap proses yang ada menunggu suatu kejadian
yang hanya dapat dilakukan oleh proses lain dalam himpunan tersebut.
2.6.1 Peranan
Deadlock
Menurut Coffman dalam
bukunya “Operating System” menyebutkan empat syarat bagi
terjadinya deadlock, yaitu:
- Mutual Exclusion
- Suatu kondisi dimana setiap sumber daya diberikan tepat
pada satu proses pada suatu waktu.
- Hold and Wait
- Kondisi yang menyatakan proses-proses yang sedang
memakai suatu sumber daya dapat meminta sumber daya yang lain.
- Non-pre-emptive
- Kondisi dimana suatu sumber daya yang sedang berada
pada suatu proses tidak dapat diambil secara paksa dari proses
tersebut,sampai proses itu melepaskannya.
- Circular Wait
- Kondisi yang menyatakan bahwa adanya rantai saling
meminta sumber daya yang dimiliki oleh suatu proses oleh proses lainnya.
2.6.2 Strategi
menghadapi Deadlock
Strategi untuk
menghadapi deadlock dapat dibagi menjadi tiga pendekatan,
yaitu:
- Mengabaikan adanya deadlock.
- Memastikan bahwa deadlock tidak akan
pernah ada, baik dengan metode Pencegahan, dengan mencegah empat
kondisi deadlock agar tidak akan pernah terjadi. Metode
Menghindari deadlock, yaitu mengizinkan empat kondisi deadlock,
tetapi menghentikan setiap proses yang kemungkinan mencapai deadlock.
- Membiarkan deadlock untuk terjadi,
pendekatan ini membutuhkan dua metode yang saling mendukung, yaitu:
- Pendeteksian deadlock, untuk
mengidentifikasi ketika deadlock terjadi.
- Pemulihan deadlock, mengembalikan kembali
sumber daya yang dibutuhkan pada proses yang memintanya.
2.6.2.1
Strategi Ostrich
Pendekatan yang paling
sederhana adalah dengan menggunakan strategi burung unta: masukkan kepala dalam
pasir dan seolah-olah tidak pernah ada masalah sama sekali. Beragam pendapat
muncul berkaitan dengan strategi ini. Menurut para ahli Matematika, cara ini
sama sekali tidak dapat diterima dan semua keadaan deadlock harus
ditangani.
Sementara menurut para
ahli Teknik, jika komputer lebih sering mengalami kerusakkan disebabkan oleh
kegagalan hardware, error pada kompilator
atau bugspada sistem operasi. Maka ongkos yang dibayar untuk
melakukan penanganan deadlock sangatlah besar dan lebih baik
mengabaikan keadaan deadlock tersebut. Metode ini diterapkan
pada sistem operasi UNIX dan MINIX.
2.6.3 Mencegah Deadlock
Metode ini merupakan
metode yang paling sering digunakan. Metode Pencegahan dianggap sebagai solusi
yang bersih dipandang dari sudut tercegahnya deadlock. Tetapi
pencgahan akan mengakibatkan kinerja utilisasi sumber daya yang buruk. Metode
pencegahan menggunakan pendekatan dengan cara meniadakan empat syarat yang
dapat menyebabkan deadlock terjadi pada saat eksekusi Coffman (1971).
Syarat pertama yang
akan dapat ditiadakan adalah Mutual Exclusion, jika tidak ada
sumber daya yang secara khusus diperuntukkan bagi suatu proses maka tidak akan
pernah terjadi deadlock. Namun jika membiarkan ada dua atau lebih
proses mengakses sebuah sumber daya yang sama akan menyebabkan chaos.
Langkah yang digunakan adalah dengan spooling sumber daya,
yaitu dengan mengantrikan job-job pada antrian dan akan
dilayani satu-satu.
Beberapa masalah yang
mungkin terjadi adalah:
- Tidak semua dapat di-spool, tabel proses sendiri
tidak mungkin untuk di-spool
- Kompetisi pada ruang disk untuk spooling sendiri
dapat mengarah pada deadlock
Hal inilah yang
menyebabkan mengapa syarat pertama tidak dapat ditiadakan, jadi mutual
exclusion benar-benar tidak dapat dihilangkan. Cara kedua dengan meniadakan
kondisi hold and wait terlihat lebih menjanjikan. Jika suatu
proses yang sedang menggunakan sumber daya dapat dicegah agar tidak dapat
menunggu sumber daya yang lain, maka deadlock dapat dicegah.
Langkah yang digunakan
adalah dengan membuat proses agar meminta sumber daya yang mereka butuhkan pada
awal proses sehingga dapat dialokasikan sumber daya yang dibutuhkan. Namun jika
terdapat sumber daya yang sedang terpakai maka proses tersebut tidak dapat
memulai prosesnya.
Masalah yang mungkin terjadi:
- Sulitnya mengetahui berapa sumber daya yang dibutuhkan
pada awal proses
- Tidak optimalnya pengunaan sumber daya jika ada sumber
daya yang digunakan hanya beberapa waktu dan tidak digunakan tapi tetap
dimiliki oleh suatu proses yang telah memintanya dari awal.
Meniadakan syarat
ketiga non preemptive ternyata tidak lebih menjanjikan dari
meniadakan syarat kedua, karena dengan meniadakan syarat ketiga maka suatu
proses dapat dihentikan ditengah jalan. Hal ini tidak dimungkinkan karena hasil
dari suatu proses yang dihentikan menjadi tidak baik.
Cara terakhir adalah
dengan meniadakan syarat keempat circular wait. Terdapat dua
pendekatan, yaitu:
- Mengatur agar setiap proses hanya dapat menggunakan
sebuah sumber daya pada suatu waktu, jika menginginkan sumber daya lain
maka sumber daya yang dimiliki harus dilepas.
- Membuat penomoran pada proses-proses yang mengakses
sumber daya. Suatu proses dimungkinkan untuk dapat meminta sumber daya
kapan pun, tetapi permintaannya harus dibuat terurut.
Masalah yang mungkin
terjadi dengan mengatur bahwa setiap proses hanya dapat memiliki satu proses
adalah bahwa tidak semua proses hanya membutuhkan satu sumber daya, untuk suatu
proses yang kompleks dibutuhkan banyak sumber daya pada saat yang bersamaan.
Sedangkan dengan penomoran masalah yang dihadapi adalah tidak terdapatnya suatu
penomoran yang dapat memuaskan semua pihak.
Secara ringkas
pendekatan yang digunakan pada metode pencegahan deadlock dan masalah-masalah
yang menghambatnya, terangkum dalam tabel dibawah ini.
Tabel Deadlock
Syarat
|
Langkah
|
Kelemahan
|
Mutual Exclusion
|
Spooling sumber daya
|
Dapat menyebabkan chaos
|
Hold and Wait
|
Meminta sumber daya di awal
|
Sulit memperkirakan di awal dan tidak
optimal
|
No Pre-emptive
|
Mengambil sumber daya di tengah
proses
|
Hasil proses tidak akan baik
|
Circular Wait
|
Penomoran permintaan sumber daya
|
Tidak ada penomoran yang memuaskan
semua pihak
|
2.6.4 Menghindari Deadlock
Pendekatan metode ini
adalah dengan hanya memberi kesempatan ke permintaan sumber daya yang tidak
mungkin akan menyebabkan deadlock. Metode ini memeriksa dampak
pemberian akses pada suatu proses, jika pemberian akses tidak mungkin menuju
kepada deadlock, maka sumber daya akan diberikan pada proses yang
meminta. Jika tidak aman, proses yang meminta akan di-suspend sampai
suatu waktu permintaannya aman untuk diberikan. Kondisi ini terjadi ketika
setelah sumber daya yang sebelumnya dipegang oleh proses lain telah dilepaskan.
Kondisi aman yang dimaksudkan
selanjutnya disebut sebagai safe-state, sedangkan keadaan yang
tidak memungkinkan untuk diberikan sumber daya yang diminta disebut unsafe-state.
1.
Kondisi Aman (Safe
state).
Suatu keadaan dapat dinyatakan sebagai safe
state jika tidak terjadi deadlock dan terdapat cara
untuk memenuhi semua permintaan sumber daya yang ditunda tanpa
menghasilkan deadlock. Dengan cara mengikuti urutan tertentu.
2.
Kondisi Tak Aman (Unsafe
state).
Suatu state dinyatakan
sebagai state tak selamat (unsafe state) jika tidak
terdapat cara untuk memenuhi semua permintaaan yang saat ini ditunda dengan
menjalankan proses-proses dengan suatu urutan.
2.6.5 Mendeteksi Deadlock dan
Memulihkan Deadlock
Metode ini mengunakan pendekatan dengan teknik
untuk menentukan apakah deadlock sedang terjadi serta
proses-proses dan sumber daya yang terlibat dalam deadlock tersebut. Setelah
kondisi deadlockdapat dideteksi, maka langkah pemulihan dari
kondisi deadlock dapat segera dilakukan. Langkah pemulihan
tersebut adalah dengan memperoleh sumber daya yang diperlukan oleh
proses-proses yang membutuhkannya. Beberapa cara digunakan untuk mendapatkan
sumber daya yang diperlukan, yaitu dengan terminasi proses dan pre-emption (mundur)
suatu proses. Metode ini banyak digunakan pada komputer mainframe berukuran
besar.
BAB III
PENUTUP
3.1 Kesimpulan
Untuk mengatasi
problem critical section dapat digunakan berbagai solusi software. Namun
masalah yang akan timbul dengan solusi software adalah solusi software tidak
mampu menangani masalah yang lebih berat dari critical section. Tetapi
Semaphores mampu menanganinya, terlebih jika hardware yang digunakan mendukung
maka akan memudahkan dalam menghadapi problem sinkronisasi.
Berbagai contoh klasik
problem sinkronisasi berguna untuk mengecek setiap skema baru sinkronisasi.
Monitor termasuk ke dalam level tertinggi mekanisme sinkronisasi yang berguna
untuk mengkoordinir aktivitas dari banyak thread ketika mengakses data melalui
pernyataan yang telah disinkronisasi.
Kondisi deadlock akan
dapat terjadi jika terdapat dua atau lebih proses yang akan mengakses sumber
daya yang sedang dipakai oleh proses yang lainnya. Pendekatan untuk
mengatasi deadlock dipakai tiga buah pendekatan, yaitu:
- Memastikan
bahwa tidak pernah dicapai kondisi deadlock
- Membiarkan deadlock untuk
terjadi dan memulihkannya
- Mengabaikan
apa pun deadlock yang terjadi
- Dari
ketiga pendekatan diatas, dapat diturunkan menjadi empat buah metode untuk
mengatasi deadlock, yaitu:
- Pencegahan deadlock
- Menghindari deadlock
- Mendeteksi deadlock
- Pemulihan deadlock
Namun pada sebagian
besar Sistem Operasi dewasa ini mereka lebih condong menggunakan pendekatan
untuk mengabaikan semua deadlock yang terjadi. Silberschatz
(1994) merumuskan sebuah strategi penanggulangan deadlock terpadu yang dapat
disesuaikan dengan kondisi dan situasi yang berbeda, strateginya sendiri
berbunyi:
- Kelompokkan sumber daya kedalam kelas yang berbeda
- Gunakan strategi pengurutan linear untuk mencegah
kondisi circular waityang nantinya.
- Gunakan algoritma yang paling cocok untuk suatu kelas
sumber daya yang berbeda satu dengan yang lain.
DAFTAR PUSTAKA
1.
Free
Software Foundation.`The GNU C Library Reference Manual’, for Version 2.2.x of
the GNU C Library. 2001
2.
Hariyanto,
Bambang.‘Sistem Operasi’, Edisi 2, Informatika Bandung. 2000
4.
http://ilmukomputer.com/2006/08/28/sistem-operasi-proses-pada-linux/
Post a Comment for "Makalah Sinkronisasi dan Deadlock"