Rabu, 03 April 2013

Sinkronisasi dan Deadlock



A. Sinkronisasi

Akses bebarengan untuk berbagi dua bersama dapat mengakibatkan tidak

 konsistennya 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.
1.   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 mencegahrace 

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.
2.   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 4 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.
3.   Solusi ke Masalah 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, Hal yang di perhatikan adalah 

1.  >    Asumsikan bahwa tiap proses mengeksekusi pada nonzero speed.

2.  >   Tidak ada asumsi mengenai kecepatan relative dan n proses.

Penjelasan selanjutnya akan di uraikan pada halaman blog berikut : link





Tidak ada komentar: