Selasa, 12 Juli 2011

BAB I
PENDAHULUAN
1. Latar Belakang
Bab ini membicarakan proses-proses untuk saling berkordinasi ,dan menjawab beberapa pertanyaan ,yang umum antara lain :
1. bagaimana proses bekerja dengan sumber daya yang dibagi-bagi.
2.Bagaimana memastikan hanya ada satu proses yang mengakses memori?
3. Bagaimana sinkronisasi benar-benar digunakan?
4. Bagaimanakah deadlock itu yang sebenarnya?
5.Bagaimanakah cara penanggulangannya?
Beberapa penjelasan dibawah ini:
 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.
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.

Contoh berikut ini terjadi pada sebuah persimpangan jalan. Beberapa hal yang dapat membuat deadlock pada suatu persimpangan, yaitu:
 Terdapat satu jalur pada jalan.
 Mobil digambarkan sebagai proses yang sedang menuju sumber daya.
 Untuk mengatasinya beberapa mobil harus preempt (mundur).
 Sangat memungkinkan untuk terjadinya starvation (kondisi proses tak akan mendapatkan sumber daya).

2. Rumusan Masalah
Ada beberapa masalah yang membuat kami memantantapkan diri untuk membuat makalah ini,masalah tersebut sering di alami di alami dan banyak yang tidakl mengetahui solusinya .
1. Kasus Produsen-Konsumer
2. Critical Sectio
3. Mutual Exclusion
4. Resources-Allocation Grap (deadlock)
5. Model Sistem (deadlock)

3. Tujuan
Tujuan dari pembuatan makalah ini adalah ,untuk memberikan penjelasan tertentu untuk memperjelas dari arti dan masalah yang ada.dan menggunakan bahasa yang sederhana aga dapat dengan mudah di mengerti bagi ,yang membaca .
4. Manfaat
1. Mempermudah bagi yang membacannya ,karena menggunakan bahasa yang sederhana.
2. Mapat mempermudah bagi yang membaca dan mengalami maslah sepertti yang di atas ,karena terdapat contoh masalah dan penjelasannya,pula.
3. Mememberikan solusi yang tepat guna.
4. bagaimana proses bekerja dengan sumber daya yang dibagi-bagi.
5. Bagaimana memastikan hanya ada satu proses yang mengakses memori pada suatu saat?
6. Bagaimana sinkronisasi benar-benar digunakan?






















BAB II
ISI

A. Sinkronisasi
Adalah Akses-akses yang dilakukan secara bersama-sama ke data yang sama, dapat menyebabkan data menjadi tidak konsisten . Untuk menghindari Race Condition, proses-proses secara bersamaan harus disinkronisasikan.
a. Race Condition: Situasi dimana beberapa proses mengakses dan memanipulasi data secara bersamaa. Nilai terakhir dari data bergantung dari proses mana yang selesai terakhir. Ini dapat terjadi karena akses ke count tidakdipaksakan. Situasi seperti itu mungk in dapat terjadi. Buffer sedang kosong dan konsumen baru saja membaca count untuk melihat apakah count bernilai 0. Pada saat itu, penjadual memutuskan untuk mengentikan proses konsumen sementara dan menjalakan produsen. Produsen memasukkan barang ke buffer, menaikkan nilai count, dan memberitahukan bahwa count sekarang bernilai
1. Pemikiran bahwa count baru saja bernilai 0 sehingga konsumen harus istirahat (sleep). Produsen memanggil fungsi wake up untuk membangkitkan konsumen secara logika belum istirahat. Jadi sinyal untuk membangkitkan konsumen, tidak dapat ditangkap oleh konsumen. Ketika konsumen bekerja berikutnya, konsumen akan memeriksa nilai count yang dibaca sebelumnya, dan mendapatkan nilai 0, kemudian konsumen istirahat (sleep) lagi.
Cepat atau lambat produsen akan mengisi buffer dan juga pergi istirahat (sleep). Keduanya akan istirahat Selamanya. Kita butuh 4 kondisi agar menghasilkan solusi yang baik:
a. Tidak ada dua proses secara bersamaan masuk ke dalam citical section.
b. Tidak ada asumsi mengenai kecepatan atau jumlah cpu.
c. Tidak ada proses yang berjalan di luar critical secion yang dapat mengeblok proses lain.
d. Tidak ada proses yang menunggu selamamya untuk masuk critical section.

b. Mutual Exclusion: Kondisi-kondisi untuk solusi
Tiga kondisi untuk menentukan mutual Exclusion
1. Tidak ada dua proses yang pada saat bersamaan berada di critical region.
2. Tidak ada proses yang berjalan diluar critical region yang bisa menghambat proses lain
3. Tidak ada proses yang tidak bisa masuk ke critical region


Race Condition

Solusinya adalah :
Cara-cara memecahkan masalah
• Hanya dua proses, Po dan P1
• Struktur umum dari proses adalah Pi (proses lain Pj)
do {
critical section
remainder section
} while(1);
Algoritma 1:
Disini kita akan mencoba membuat sebuah rangkaian solusi-solusi dari permasalahan yang makin meningkat kerumitannya. Pada semua contoh, i adalah proses yang sedang berjalan, j adalah proses yang lain. Pada contoh ini code.
i. Shared variables
• int turn
initially turn=0
• turn = i, Pi can enter its critical section
ii. Process Pi
.
do {
while(turn!=1);
critical section
turn=j;
remainder section
} while(1);
iii. Memenuhi mutual exclusion, tapi bukan progress
Algoritma 2
FLAG untuk setiap proses yang memberi STATE:


Algoritma Bakery
Critical Section untuk n buah proses:
Sebelum memasukkan proses ke critical section, proses menerima sebuah nomor. Pemegang nomor terkecil masuk ke critical section. Jika ada dua proses atau lebih menerima nomor sama, maka proses dengan indeks terkecil yang dilayani terlebih dahulu untuk masuk ke critical section. Skema penomoran selalu naik secara berurut contoh: 1, 2, 3, 3, 3, 3, 4

boolean choosing [n];
long long long int number [n];
/* 64 bit maybe okay for about 600 years */
Array structure elements are initiallized to false and 0 respectively
while (true) {
choosing[i] = true;
number[i] = max(number[0], ... [n-1]) + 1;
choosing[i] = false;
for (j = 0; j < n; j ++) {
while (choosing[j]) {}
while ((number[j] !=0) && ((number[j], j) < (number[i], i))) {}
}
number[i] = 0
}
Solves the critical-section problem
for n process

Solusi Hardware pada Sinkronisasi
while (test_and_set(lock));
/* critical section */
lock = false;
GET_LOCK: IF_CLEAR_THEN_SET_BIT_AND_SKIP (bit_address)
BRANCH GET_LOCK /* set failed */
/* set succeeded */
Harus hati-hati jika pendekatan ini untuk menyelesaikan bounded-buffer – harus menggunakan round robin - memerlukan kode yang dibuat di sekitar instruksi lock.
while (test_and_set(lock));
Boolean waiting[N];
int j; /* Takes on values from 0 to N - 1 */
Boolean key;
do {
waiting[i] = TRUE;
key = TRUE;
while ( waiting[i] && key )
key = test_and_set( lock ); /* Spin lock */
waiting[i] = FALSE;

/****** CRITICAL SECTION ********/
j = ( i + 1 ) mod N;
while ( ( j != i ) && ( ! waiting[ j ] ) )
j = ( j + 1 ) % N;
if ( j == i ) //Using Hardware
lock = FALSE; //Test_and_set.
else
waiting[ j ] = FALSE;
/******* REMAINDER SECTION *******/
} while (TRUE);

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:
1. Operasi Down
Operasi ini menurunkan nilai semaphore, jika nilai semaphore menjadi non-positif maka proses yang mengeksekusinya diblocked.
Type Semaphore = Integer,
Procedure Down(Var: semaphore);
Begin
s := s-1;
if s <= 0 Then
Begin
Tempatkan antrian pada antrian untuk semaphore s
Proses diblocked
End;
End;




2. Operasi Up
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.
Type Semaphore = Integer,
Procedure Down(Var: semaphore);
Begin
s := s + 1;
if s <= 0 Then
Begin
Pindahkan satu proses P dari antrian untuk semaphore s
Tempatkan proses P di senarai ready
End;
End;

Problem Klasik pada Sinkronisasi
Ada tiga masalah pada proses sinkronisasi:
1. Problem Bounded buffer
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.
Solusinya adalah , pertama-tama pembaca mengakses database kemudian melakukan DOWN pada semaphore db.. Langkah selanjutnya readers hanya menaikkkan nilai sebuah counter. Hasil dari pembaca nilai counter diturunkan dan nilai terakhir dilakukan UP pada semaphore, mengizinkan memblok writer. Misalkan selama sebuah reader menggunakan database, reader lain terus berdatangan. Karena ada dua reader pada saat bersamaan bukanlah sebuah masalah, maka reader yang kedua diterima, reader yang ketiga juga dapat diterima jika terus berdatangan reader-reader baru.
Untuk mencegah situasi seperti itu, program dapat ditulis agak sedikit berbeda: Ketika reader tiba danwriter menunggu, reader ditunda dibelakang writer yang justru diterima dengan segera. Dengan cara ini, writer tidak harus menunggu reader yang sedang aktif menyelesaikan pekerjaannya, tapi tidak perlu menunggu reader lain yang datang berturut-turut setelah itu.

2. Problem Reades and Writer
Adalah Pertanyaan kuncinya adalah, dapatkah anda menulis program untuk masing-masing filosof yang melakukan apa yang harus mereka lakukan dan tidak pernah mengalami kebuntuan.Prosedu r take-fork menunggu sampai garpu-garpu yang sesuaididapatkan 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.
Kita dapat memodifikasi program sehingga setelah mengambil garpu kiri, program memeriksa apakah garpu kanan meungkinkan untuk diambil. Jika garpu kanan tidak mungkin diambil, filosof tersebut meletakkan kembali garpu kirinya, menunggu untuk beberapa waktu, kemudia mengulangi proses yang sama. Usulan tersebut juga salah, walau pun dengan alasan yang berbeda.

3. Problem Dining Philosophers
Solusi yang diberikan mengizinkan jumlah maksimum kegiatan paralel untuk sebuah jumlah filosf yang berubah-ubah ini menggunakan sebuah array, state, untuk merekam status seorang filosof apakah sedang makan (eating), berpikir (think), atau sedang lapar (hungry) karena sedang berusaha mengambil garpu. Seorang filosof hanya dapat berstatus makan (eating) jika tidak ada tetangganya yang sedang makan juga. Tetangga seorang filosof didefinisikan ole LEFT dan RIGHT. Dengan kata lain, jika i = 2, maka tetangga kirinya (LEFT) = 1 dan tetangga kanannya (RIGHT) = 3. Program ini menggunakan sebuah array dari semaphore yang lapar (hungry) dapat ditahan jika garpu kiri atau kanannya sedang dipakai tetangganya. Catatan bahwa masing-masing proses menjalankan prosedur filosof sebagai kode utama, tetapi prosedur yang lain seperti take-forks, dan test adalah prosedur biasa dan bukan proses-proses yang terpisah.

Monitors
Solusi sinkronisasi ini dikemukakan oleh Hoare pada tahun 1974. Monitor adalah kumpulan prosedur, variabel dan struktur data di satu modul atau paket khusus. Proses dapat memanggil prosedur-prosedur kapan pun diinginkan. Tapi proses tak dapat mengakses struktur data internal dalam monitor secara langsung. Hanya lewat prosedur-prosedur yang dideklarasikan minitor untuk mengakses struktur internal.
Properti-properti monitor adalah sebagai berikut:
1. Variabel-variabel data lokal, hanya dapat diakses oleh prosedur-prosedur dala monitor dan tidak oleh prosedur di luar monitor.
2. Hanya satu proses yang dapat aktif di monitor pada satu saat. Kompilator harus Zengimplementasi ini(mutual exclusion).
3. Terdapat cara agar proses yang tidak dapat berlangsung di-blocked. Menambahkan variabel-variabel kondisi, dengan dua operasi, yaitu Wait dan Signal.
4. Wait: Ketika prosedur monitor tidak dapat berkanjut (misal producer menemui buffer penuh) menyebabkan proses pemanggil diblocked dan mengizinkan proses lain masuk monitor.
5. Signal: Proses membangunkan partner-nya yang sedang diblocked dengan signal pada variable kondisi yang sedang ditunggu partnernya.
6. Versi Hoare: Setelah signal, membangunkan proses baru agar berjalan dan menunda proses lain.
7. Versi Brinch Hansen: Setelah melakukan signal, proses segera keluar dari monitor.

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


Persimpangan

Resources-Allocation Graph
Sebuah cara visual (matematika) untuk menentukan apakah ada deadlock, atau kemungkinan terjadinya. G = (V, E) Graf berisi node and edge. Node V terdiri dari proses-proses = {P1, P2, P3, ...} dan jenis resource. {R1, R2, ...} Edge E adalah (Pi, Rj) atau (Ri, Pj) Sebuah panah dari process ke resource menandakan proses meminta resource. Sebuah panah dari resource ke process menunjukkan sebuah instance dari resource telah dtempatkan ke proses. Process adalah lingkaran, resource adalah kotak; titik-titik merepresentasikan jumlah instance dari resource Dalam tipe. Meminta poin-poin ke kotak, perintah datang dari titik.

Graph.

Jika graf tidak berisi lingkaran, maka tidak ada proses yang deadlock. Jika membentuk lingkaran, maka:
 Jika tipe resource memiliki banyak instance, maka deadlock DAPAT ada.
 Jika setiap tipe resource mempunyai satu instance, maka deadlock telah terjadi.

Non Deadlock



Deadlock

Model Sistem
Menurut Coffman dalam bukunya "Operating System" menyebutkan empat syarat bagi terjadinya
deadlock, yaitu:
1. Mutual Exclusion
Suatu kondisi dimana setiap sumber daya diberikan tepat pada satu proses pada suatu waktu.
2. Hold and Wait
Kondisi yang menyatakan proses-proses yang sedang memakai suatu sumber daya dapat meminta sumber daya yang lain.
3. 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.
4. Circular Wait
Kondisi yang menyatakan bahwa adanya rantai saling meminta sumber daya yang dimiliki oleh suatu proses oleh proses lainnya.

Strategi menghadapi Deadlock
Strategi untuk menghadapi deadlock:
1. Mengabaikan adanya deadlock.
2. Memastikan bahwa deadlock tidak akan pernah ada, baik dengan metode Pencegahan, dengan
3. 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.
4. 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.

Metode untuk mengatasi deadlock yang akan terjadi, yaitu:
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 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. Metode ini merupakan metode yang paling sering digunakan. Metode Pencegahan dianggap sebagai solusi yang bersih dipandang dari sudut tercegahnya deadlock.
Beberapa masalah yang mungkin terjadi adalah:
2. Tidak semua dapat di-spool, tabel proses sendiri tidak mungkin untuk di-spool
3. Kompetisi pada ruang disk untuk spooling sendiri dapat mengarah pada deadlock

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

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

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.


Gambar 3-17. Safe.

Algoritma Bankir
Algoritma penjadualan ini diungkapkan oleh Dijkstra (1965) lebih dikenal dengan nama Algoritma Bankir. Model ini menggunakan suatu kota kecil sebagai percontohan dengan suatu bank sebagai system operasi, pinjaman sebagai sumber daya dan peminjam sebagai proses yang membutuhkan sumber daya. Deadlock akan terjadi apabila terdapat seorang peminjam yang belum mengembalikan uangnya dan ingin meminjam kembali, padahal uang yang belum dikembalikan tadi dibutuhkan oleh peminjam lain yang juga belum mengembalikan uang pinjamannya. Beberapa kelemahan algoritma Bankir Tanenbaum (1992), Stallings (1995) dan Deitel (1990) adalah sebagai berikut:
i. Sulit untuk mengetahui seluruh sumber daya yang dibutuhkan proses pada awal eksekusi.
ii. Jumlah proses yang tidak tetap dan berubah-ubah.
iii. Sumber daya yang tadinya tersedia dapat saja menjadi tidak tersedia kembali.
iv. Proses-proses yang dieksekusi haruslah tidak dibatasi oleh kebutuhan sinkronisasi antar proses.
v. Algoritma ini menghendaki memberikan semua permintaan selama waktu yang berhingga.

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

1. Terminasi Proses
Metode ini akan menghapus proses-proses yang terlibat pada kondisi deadlock dengan mengacu pada beberapa syarat. Beberapa syarat yang termasuk dalam metode ini adalah, sebagai berikut:
• Menghapus semua proses yang terlibat dalam kondisi deadlock (solusi ini terlalu mahal).
• Menghapus satu persatu proses yang terlibat, sampai kondisi deadlock dapat diatasi (memakan banyak waktu).
• Menghapus proses berdasarkan prioritas, waktu eksekusi, waktu untuk selesai, dan kedalaman dari rollback.

2. Resources Preemption
Metode ini lebih menekankan kepada bagaimana menghambat suatu proses dan sumber daya, agar tidak terjebak pada unsafe condition.
Beberapa langkahnya, yaitu:
• Pilih salah satu - proses dan sumber daya yang akan di-preempt.
• Rollback ke safe state yang sebelumnya telah terjadi.
• Mencegah suatu proses agar tidak terjebak pada starvation karena metode ini.





BAB III

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:
a. Memastikan bahwa tidak pernah dicapai kondisi deadlock
b. Membiarkan deadlock untuk terjadi dan memulihkannya
c. Mengabaikan apa pun deadlock yang terjadi

Dari ketiga pendekatan diatas, dapat diturunkan menjadi empat buah metode untuk mengatasi deadlock, yaitu:
a. Pencegahan deadlock
b. Menghindari deadlock
c. Mendeteksi deadlock
d. 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:
1. Kelompokkan sumber daya kedalam kelas yang berbeda
2. Gunakan strategi pengurutan linear untuk mencegah kondisi circular waityang nantinya akan
mencegah deadlock diantara kelas sumber daya
3. Gunakan algoritma yang paling cocok untuk suatu kelas sumber daya yang berbeda satu dengan yang lain.






DATAR PUSTAKA

Silberschatz, A., Gagne, G. dan Galvin, P., "Applied Operating System Concept", John Wiley and Sons
Inc., 2000
Hariyanto, B.,"Sistem Operasi", Bandung: Informatika, Desember 1997
Tanenbaum, Andrew S., "Modern Operating Systems", Englewood Cliffs, New Jersey: Prentice-Hall
Inc., 1992
Silberschatz, A., Gagne, G. dan Galvin, P., "Applied Operating System Concept", John Wiley and Sons
Inc., 2000
Hariyanto, B.,"Sistem Operasi", Bandung: Informatika, Desember 1997
Tanenbaum, Andrew S., "Modern Operating Systems", Englewood Cliffs, New Jersey: Prentice-Hall
Inc., 1992
Coffman, E.G., Jr., M.J. Elphick dan A. Shoshani, "System Deadlocks", Computing surveys, Vol.3, No.2,
June 1971
Deitel, H.M., "Operating Systems", 2nd Edition, Massachusetts: Addison-WesleyPublishing Company,
1990
Havender, J.W., "Avoiding Deadlock in Multitasking Systems", IBM Systems Journal, Vol.7, No.2, 1968.
97