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.
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.
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.
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.
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:
Critical Section adalah
sebuah segmen kode di mana sebuah proses yang mana sumber
daya bersama diakses. Terdiri dari:
daya bersama diakses. Terdiri dari:
waktu
Exit
Section: akhir dari critical
section, mengizinkan proses lain
3.
Solusi
ke Masalah Critical-Section
Ada
bebrapa Solusi untuk mengatasi masalah Critical Section, yaitu:
Jika proses pi sedang mengeksekusi critical section-nya maka tidak ada
proses lain yang dapat mengeksekusi dalam critical section mereka.
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.
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:
Posting Komentar