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 4
PENDAHULUAN 4
1.1 Latar Belakang 4
1.2 Rumusan Masalah 4
BAB II 5
PEMBAHASAN 5
2.1 Sinkronisasi 5
2.2 Race Condition 6
2.3 Masalah Critical Section 8
2.4 Semaphore 9
2.4.1 Operasi Down 10
2.4.2 Operasi Up 10
2.5 Problem Klasik pada Sinkronisasi 11
2.6 Deadlock 11
2.6.1 Peranan Deadlock 11
2.6.2     Strategi menghadapi Deadlock 12
2.6.3 Mencegah Deadlock 13
2.6.4 Menghindari Deadlock 15
2.6.5 Mendeteksi Deadlock dan Memulihkan Deadlock 15
BAB III 16
PENUTUP 16
3.1 Kesimpulan 16
DAFTAR PUSTAKA 18






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

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

Free Software Foundation.`The GNU C Library Reference Manual’, for Version 2.2.x of the GNU C Library. 2001

Hariyanto, Bambang.‘Sistem Operasi’, Edisi 2, Informatika Bandung. 2000

http://id.wikipedia.org/wiki/Semafor

http://ilmukomputer.com/2006/08/28/sistem-operasi-proses-pada-linux/

Komentar

Postingan Populer