Jumat, 15 Mei 2015

SISTEM OPERASI KOMPUTER-SINKRONISASI DAN DEADLOCK


SISTEM OPERASI KOMPUTER

(SINKRONISASI DAN DEADLOCK)






OLEH
                                                                                                                  


Misnawati              1329041026






PRODI PENDIDIKAN TEKNIK INFORMATIKA DAN KOMPUTER
JURUSAN PENDIDIKAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS NEGERI MAKASSAR
2015

KATA PENGANTAR




Syukur Alhamdulillah kami panjatkan kehadirat Allah Swt. Atas nikmat kesehatan, kesempatan, dan motivasi yang telah dianugerahkan kepada penulis sehingga makalah ini dapat tersusun sebagaimana mestinya. Namun demikian,  penyusunan makalah ini selesai dengan berbagai hambatan. Namun hambatan tersebut dapat diatasi berkat petunjukNya.
Penulis menyusun makalah ini dengan tema “Deadlock dan Sinkronisasi” sebagai wadah untuk menambah ilmu pengetahuan serta pemahaman mengenai system operasi computer  itu sendiri. Selain itu, penulis juga berharap agar ke depannya ilmu ini dijadikan sebagai bentuk pembelajaran penting dalam menunjang kehidupan yang semakin modern.
Kendati demikian, penulis menyadari bahwa penyusunan makalah ini jauh dari kesempurnaan. Oleh karena itu, penulis mengharapkan kritik dan saran bagi siapa saja yang membacanya.
Akhir kata, penulis mengucapkan terima kasih.Semoga makalah ini bermanfaaat bagi pembaca.Aamiin .
Makassar, Januari 2015
                                                                                        

DAFTAR ISI




BAB 1

PENDAHULUAN


A.. Latar Belakang

Sistem operasi (bahasa Inggris: operating system ; OS) 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 sistem 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.
            Permasalahan yang ada di dalam Sistem Operasi ada banyak sekali. Permasalahan yang ditimbulkan pun bergantung pada memory, cara pengoperasian, dan lain sebagainya. Akan tetapi, permasalahan yang akan dibahas disini adalah mengenai Deadlock dan Sinkronisasi. Mengapa hanya pemaparan Deadlock dan Sinkronisasi saja ? Karena mengetahui penyebab, penting, solusi, macam problem dan lain – lain dari Deadlock dan Sinkronisasi sangat berguna. Sehingga apabila terjadi sebuah masalah atau problem di Sistem Operasi, dapat segera ditangani dengan cara yang tepat.

B. Tujuan dan Manfaat

Tujuan :
*      Agar mengetahui apakah yang dimaksud dengan Deadlock dan Sinkronisasi.
*      Agar mengetahui macam – macam Deadlock dan Sinkronisasi
*      Agar mengetahui bagaimana cara mengatasi permasalahan Deadlock dan Sinkronisasi
Manfaat :
*      Mengetahui Deadlock dan Sinkronisasi kemudian membagi informasi mengenai hal tersebut kepada khalayak umum.
*      Mengetahui macam Deadlock dan Sinkronisasi
*      Karena sudah mengetahui macam Deadlock dan Sinkronisasi, apabila terjadi masalah atau problem klasik maupun problem yang lain, bisa menanganinya dengan tepat.



BAB 2

PEMBAHASAN

 

A.    DEADLOCK

1.    Pengertian Deadlock

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. Misalkan pada suatu komputer terdapat dua buah program, sebuah tape drive dan sebuah printer. Program A mengontrol tape drive, sementara program B mengontrol printer. Setelah beberapa saat, program A meminta printer, tapi printer masih digunakan. Berikutnya, B meminta tape drive, sedangkan A masih mengontrol tape drive. Dua program tersebut 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. Kondisi inilah yang disebut Deadlock atau pada beberapa buku disebut Deadly Embrace
            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. Terdapat kaitan antara overhead dari mekanisme koreksi dan manfaat dari koreksi deadlock itu sendiri. Pada beberapa kasus, overhead atau ongkos yang harus dibayar untuk membuat sistem bebas deadlock menjadi hal yang terlalu mahal dibandingkan jika mengabaikannya. Sementara pada kasus lain, seperti pada real-time process control, mengizinkan deadlock akan membuat sistem menjadi kacau dan membuat sistem tersebut tidak berguna.

2.    Resource (Sumber Daya)

Ada 2 tipe resource, yaitu :
*      Preemptable resource
Resoource yang dapat dibersihkan dari proses yang menggunakannya tanpa efek yang buruk.
Mudah diatasi dengan cara realokasi resource dari satu proses ke yang lainnya.
*      Nonpreemptable resource
Resoource yang tidak dapat dibersihkan dari proses yang menggunakannya tanpa menyebabkan komputer fail.

3.    Penyebab Deadlock


*      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.
*      Circular Waiting : Kondisi yang menyatakan bahwa adanya rantai saling meminta sumber daya yang dimiliki oleh suatu proses oleh proses lainnya.
*      No Preemptive : Kondisi dimana suatu sumber daya yang sedang berada pada suatu proses tidak dapat diambil secara paksa dari proses tersebut sampai proses itu melepaskannya.
Apabila ada salah satu dari antara 4 syarat diatas yang tidak terpenuhi,maka tidak bisa disebut dengan Deadlock.

4.    Cara Mengatasi Deadlock

*   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, ini membutuhkan dua metode yang saling mendukung, yaitu: Pendeteksian deadlock, untuk mengidentifikasi ketika deadlock terjadi. Dan pemulihan deadlock, mengembalikan kembali sumber daya yang dibutuhkan pada proses yang memintanya.
Pendekatan yang paling sederhana untuk mengatasi deadlock 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 bugs pada 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.
Cara Lain untuk mengatasi Deadlock :
*      Prevention : memastikan paling sedikit satu  penyebab Deadlock tidak berlaku
a.    Mutual Exclusion : membuat file spool untuk resource yang digunakan bersama sama
b.    Hold and Wait : memaksa sebuah proses untuk melepaskan resource yangdimilikinya ketika meminta resource baru
c.    Circular Waiting : memberikan penamaan resource berdasarkan urutan atau level
d.   No Preemption : membolehkan adanya preemption
*   Avoidance : sistem menolak request terhadap resource yang berpotensi deadlock, Algoritma, Banker
a.    Resource manager menolak proses yang meminta resource yang berpotensi deadlock
b.    Jika ada permintaan resource yang maksimum digunakan, maka proses tersebut akan dipaksa untuk melepaskan resource yang sudah dimiliknya.
*   Detection and Recovery : membiarkan Deadlock terjadi, lalu mendeteksinya, kemudian melakukan recovery, Algoritma Ostrich
a.    Membiarkan deadlock terjadi lalu mendeteksinya kemudian melakukan tindakan recovery seperlunya
b.    Algoritma yang paling dikenal adalah algoritma Ostrich
c.    Tindakan recovery yang dilakukan adalah : melakukan preemption, membuat checkpoint untuk rollback lalu membunuh proses yang prioritasnya kecil.

5.    Cara Menghindari Deadlock

*      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 unsafe state jika tidak terdapat cara untuk memenuhi semua permintaaan yang saat ini ditunda dengan menjalankan proses-proses dengan suatu urutan

6.     Deadlock di Linux

Linux dengan kernel versi 2.4 mengalami deadlock pada sistem dengan prosesor lebih dari 2 unit. Deadlock ini pada umumnya terjadi bila akses melalui Ethernet dilakukan, terutama bila melakukan teaming pada jaringan. Proses akan terblock dan saling menunggu resource Ethernet tersebut bebas. Beberapa kasus deadlock juga terjadi ketika OS Linux dijalankan dari kondisi sleep, proses yang mengakses USB device akan mengalami deadlock hal ini disebabkan fungsi scheduler pada kernel yang digunakan tidak menyimpan state sebelum sleep, sehingga ketika kernel dijalankan kembali, Proses-proses yang mengakses USB device tersebut menunggu giliran mengakses, sementara scheduler belum menjadwalkan masing-masing proses. Penundaan penjadwalan sebuah proses selama tak terhingga sementara sistem mengadakan alokasi sumber daya untuk proses yang lain. Penyebabnya adalah prioritas. Cara mengatasinya dengan “aging” yaitu prioritaas naik dengan bertambahnya waktu.

7.    Model Deadlock


Urutan kejadian pengoperasian perangkat I/O adalah :
- meminta / request      : meminta palayanan I/O
- memakai / use           : memakai perangkat I/O
- melepaskan / release : melepaskan pamakaian perangkat I/O
Model deadlock dua proses dan dua sumber daya  deadlock dapat digambarkan sebagai graph.
Misalnya :
*      dua proses, P0 dan P1
*      dua sumber daya kritis, R0 dan R1
*      proses P0 dan P1 harus mengakses kedua sumber daya tersebut








 




kondisi berikut dapat terjadi :
*      R0 diberikan ke P0 (P0 meminta sumber daya R0), ditandai busur (edge) berarah dari proses P0 ke sumber daya R0
*      sedangkan sumber daya R1 dialokasikan ke P1, ditandai dengan busur (edge) berarah dari sumber daya R1 ke proses P1.
Skenario yang menimbulkan deadlock dapat terjadi sebagai berikut :
*      P0 dialokasikan R0
*      P1 dialokasikan R1









 





Kemudian,
*      P0 sambil masih menggenggam R0, meminta R1
*      P1 sambil masih menggenggam R1, meminta R0

Kejadian ini mengakibatkan deadlock karena sama-sama akan saling menunggu. Graph deadlock ini akan digambarkan sebagai graph melingkar. Terjadinya deadlock ditandai munculnya / terjadinya graph melingkar.


 





Karena untuk melanjutkan eksekusi memerlukan kedua sumber daya sekaligus, maka kedua proses akan saling menunggu sumber daya lain selamanya. Tak ada proses yang dapat melepaskan sumber daya yang telah dipegangnya karena menunggu sumber daya lain yang tak pernah diperolehnya. Kedua proses dalam kondisi deadlock, tidak dapat membuat kemajuan apapun. Deadlock tidak hanya terjadi pada dua proses dan dua sumber daya, deadlock dapat terjadi dengan melibatkan lebih dari dua proses dan dua sumber daya.

8.    Syarat-syarat terjadinya deadlock

*      Mutual exclution condition
Tiap sumber daya saat itu diberikan pada tepat satu proses / proses meng-klaim kontrol eksklusif terhadap sumber daya yang dibutuhkannya.
*      Hold and wait condition / kondisi genggam dan tunggu
Proses-proses yang sedang menggenggam sumber daya yang telah dialokasikan untuknya sementara menunggu sumber daya – sumber daya tambahan yang baru.
*      Non-preemption condition / kondisi non-preemption
Sumber daya – sumber daya yang sebelumnya diberikan tidak dapat diambil paksa dari proses sampai sumber daya tersebut digunakan sampai selesai. Sumber daya – sumber daya harus secara eksplisit dilepaskan dari proses yang menggenggamnya.
*      Circular wait condition / kondisi menunggu secara sirkular
Harus terdapat rantai sirkuler / satu lingkaran proses dari dua proses atau lebih dimana setiap proses memegang satu atau lebih sumber daya yang diminta oleh proses berikutnya pada lingkaran tersebut, masing-masing menunggu sumber daya yang digenggam oleh anggota berikutnya pada rantai itu.
                                  
Ketiga syarat pertama merupakan syarat perlu bagi terjadinya deadlock.  Keberadaan deadlock selalu berarti terpenuhi kondisi-kondisi diatas, tidak mungkin terjadi deadlock bila tidak ada ketiga kondisi itu. Deadlock terjadi berarti terdapat ketiga kondisi itu, tetapi adanya ketiga kondisi itu belum berarti terjadi deadlock.
Deadlock baru benar-benar terjadi bila syarat keempat terpenuhi. Kondisi keempat merupakan keharusan bagi terjadinya peristiwa deadlock. Bila salah satu dari kondisi tidak terpenuhi maka deadlock tidak terjadi.

9.    Metode-metode mengatasi deadlock


*   deadlock prevention / metode pencegahan terjadinya deadlock
pengkondisian sistem agar menghilangkan kemungkinan terjadinya deadlock. Pencegahan merupakan solusi yang bersih dipandang dari sudut tercegahnya deadlock. Jika mulainya satu atau lebih proses akan menyebabkan terjadinya deadlock, proses tersebut tidak akan dimulai sama sekali.
*   tiap proses harus meminta resource yang dibutuhkan sekaligus dan tidak bisa berjalan sampai semua di dapat (untuk “wait for”)
*   jika ada resourcce yang tidak terpenuhi, yang lainnya harus dilepas (untuk “no preemption”)
*   urutkan tipe-tipe resource secara linier / linier ordering (untuk “circular wait”)
2.      deadlock avoidance / metode penghindaran terjadinya deadlock
Menghindarkan kondisi yang paling mungkin menimbulkan deadlock agar memperoleh sumber daya lebih baik. Penghindaran bukan berarti menghilangkan semua kemungkinan terjadinya deadlock. Jika sistem operasi mengetahui bahwa alokasi sumber daya menimbulkan resiko deadlock, sistem menolak / menghindari pengaksesan itu. Dengan demikian menghindari terjadinya deadlock. Contohnya dengan menggunakan algoritma Banker yang diciptakan oleh Dijkstra.
3.    deadlock detection and recovery / metode deteksi dan pemulihan dari deadlock
Deteksi digunakan pada sistem yang mengijinkan terjadinya deadlock, dengan memeriksa apakah terjadi deadlock dan menentukan proses dan sumber daya yang terlibat deadlock secara presisi. Begitu telah dapat ditentukan, sistem dipulihkan dari deadlock dengan metode pemulihan. Metode pemulihan dari deadlock sistem sehingga beroperasi kembali, bebas dari deadlock. Proses yang terlibat deadlock mungkin dapat menyelesaikan eksekusi dan membebaskan sumber dayanya.

10.  Pencegahan deadlock


*   Tiap proses harus meminta semua sumber daya yang diperlukan sekaligus dan tidak berlanjut sampai semuanya diberikan.
*   Jika proses telah sedang memegang sumber daya tertentu, untuk permintaan berikutnya proses harus melepas dulu sumber daya yang dipegangnya. Jika diperlukan, proses meminta kembali sekaligus dengan sumber daya yang baru.
*   Beri pengurutan linier terhadap tipe-tipe sumber daya pada semua proses, yaitu jika proses telah dialokasikan suatu tipe sumber daya, proses hanya boleh berikutnya meminta sumber daya tipe pada urutan yang berikutnya.
Saran pencegahan deadlock diatas merupakan cara meniadakan salah satu dari syarat perlu. Syarat perlu pertama jelas tidak bisa ditiadakan, kalau tidak menghendaki kekacauan hasil.
Strategi Burung Onta
Strategi ini mengasumsikan kejadian deadlock jarang terjadi jika dibandingkan dengan kejadian komputer crash. Strategi ini disebut strategi burung onta karena kabar yang telah tersebar (yang sebenarnya tidak benar) bahwa burung onta akan menyembunyikan kepalanya ke tanah bila mengetahui adanya bahaya yang mengancamnya. Sehingga solusi yang dilakukan justru sebenarnya tak memperdulikan adanya masalah. Stategi ini sebenarnya berarta adalah sama sekali tidak berusaha mengatasideadlock / tak ada metoda sama sekali untuk mengatasi masalah deadlock.

11.  Penghindaran deadlock


Adalah hanya memberi akses ke permintaan sumber daya yang tidak mungkin menimbulkan deadlock.

B.  SINKRONISASI

1.    Pengertian sinkronisasi

Pengertian dari 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.
Manfaat Sinkronisasi
*       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.

2.  Perangkat Sinkronisasi

*   Instruksi Test and Set. Instruksi Atomik yang dapat digunakan untuk menangani masalah critical section
*   Semaphore sebuah variabel yang hanya dapat diakses oleh dua buah operasi standard yaitu increment dan decrement. Dua buah jenis Semaphore yaitu Binary Semaphore dan Counting Semaphore. Semaphore berfungsi untuk menangani Critical Section, Alokasi Resource, Sinkronisasi Antar Proses
*   Monitor digunakan untuk menangani masalah yang muncul karena pemakainan semaphore. Monitor menjamin Mutual Exclusion. Untuk menangani masalah sinkronisasi yang lebih rumit monitor menyediakan condition variable
*   JVM mengimplementasikan monitor. Monitor JVM bekerja dengn object locking dan method – method wait() serta notify(). Monitor JVM dapat diunakan dengan keyword synchronized.

3.      Masalah Klasik Sinkronisasi beserta Solusi

Ada tiga hal yang selalu memjadi 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 Readers-Writers
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 Philosopers
 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.
Solusi Dining – Philosophers Problem ada dua, yakni :
Solusi Waiter
Solusi sederhana ini dilakukan dengan mengadakan seorang waiter yang senantiasa mengawasi penggunaan sumpit di meja makan. Ketika empat buah (dua pasang) garpu sedang dipakai,orang berikutnya yang ingin memakai garpu harus meminta izin kepada sang waiter, yang hanya dapat diberi ketika salah satu garpu telah selesai terpakai.
Solusi Hierarki Resource
Solusi Hirarki Resource: resources (garpu) di meja makan telah diberi susunan hirarki. Setiap permintaan orang terhadap sebuah garpu harus dilakukan pada susunan tertentu, dan dikembalikan pada susunan sebaliknya. Dalam hal ini, setiap orang dapat mengambil garpu dimanapun diatas meja misalkan setiap garpu diberi nomor sebagai tingkat hirarki dari 1 sampai 5, seseorang hanya dapat mengambil garpu dengan nomor yang paling rendah, kemudian mengambil garpu yang setingkat lebih tinggi. Ketika ia hendak mengembalikannya, orang itu harus meletakkan garpu dengan nomor yang lebih tinggi terlebih dahulu, lalu yang rendah.
Masalah Lain Sinkronisasi
*    Race Conditon adalah situasi di mana beberapa proses mengakses dan memanipulasi data bersama pada saat besamaan.
*    Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya bersama diakses.

4.   Cara mengatasi Sinkronisasi

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.
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 shared 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 yakni :
*    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.
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



BAB 3

KESIMPULAN



Deadlock adalah keadaan dimana 2 atau lebih proses saling menunggu meminta resources untuk waktu yang tidak terbatas lamanya.beberapa penyebab Deadlock yaitu Mutual Exclusion, Hold and Wait, Circular Waiting dan No Preemptive. Adapun cara untuk mengatasi Deadlock yaitu : Prevention, Avoidance dan Detection and Recovery.
Sinkronisasi adalah akses bebarengan untuk berbagi dua bersama dapat mengakibatkan inkosistensi data. Beberapa masalah pada proses sinkronisasi yaitu Problem Bounded buffer,  Problem Reades and Writer dan Problem Dining Philosophers. Masalah-masalah tersebut memiliki cara untuk mengatasinya masing-masing.








DAFTAR PUSTAKA



Lulu. 2013. “Sistem Operasi Deadlock dan Sinkronisasi” http://lulufst13.web.unair.ac.id, diakses 11 januari 2015

Foru. 2013. “Sinkronisasi Pada Sistem Operasi” http://siteblogforu.blogspot.com, diakses 11 januari 2015


Dinus. 2013. “Deadllock Pada Sistem Operasi” http://dinus.wordpress.com, diakses 11 januari 2015