A. Definisi Sinkronisasi
Sinkronisasi merupakan suatu proses pengaturan
jalannya beberapa proses pada waktu yang bersamaan
untuk menyamakan waktu dan data supaya tidak terjadi
inconsitensi (ketidak konsistenan) data akibat adanya akses
data secara konkuren agar hasilnya bagus dan sesuai dengan apa yang diharapkan.
Sinkronisasi ini dibutuhkan ketika menemukan sebuah
kasus yang menyebabkan ketidakkonsistenan data sehingga
data menjadi tidak konkuren.
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. Adapun manfaat sikronisasi pada sistem operasi
adalah:
- Adanya akses-akses data yang sama yang di lakukan secara bersamaan bisa saja menyebabkan data menjadi tidak konsisten
- Agar semua data yang ada tetap konsisten membutuhkan mekanisme-mekanisme agar bisa di pastikan proses eksekusi berjalan.
- Adanya Race Condition yang merupakan kondisi dimana beberapa proses mengakses dan memanipulasi data secara bersamaan akan membuat nilai terkhirnya nanti bergantung dari proses mana yang duluan diakhiri.
B. Race Condition
Race Condition merupakan 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 di sinkronisasikan.
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.
Bayangkan bahwa spooler direktori memiliki slot
dengan jumlah yang sangat besar, diberi nomor 0, 1, 2, 3,
4,... masing-masing dapat memuat sebuah nama berkas. Juga bayangkan bahwa ada dua variabel bersama, out,
penunjuk berkas berikutnya untuk dicetak, dan in, menunjuk
slot kosong di direktori. Dua variabel tersebut dapat
menangani sebuah two-word berkas untuk semua proses.
Dengan segera, slot 0, 1, 2, 3 kosong (berkas telah selesai
dicetak), dan slot 4, 5, 6 sedang terisi (berisi nama dari
berkas yang antre untuk dicetak).
Lebih atau kurang secara besamaan, proses A dan B,
mereka memutuskan untuk antre untuk sebuah berkas untuk
dicetak. Situasi ini digambarkan seperti gambar berikut :
C. Critical Section
Critical Section adalah sebuah segmen kode dimana sebuah proses memiliki sumber daya bersama yang diakses terdiri dari:
Critical Section adalah sebuah segmen kode dimana sebuah proses memiliki sumber daya bersama yang diakses terdiri dari:
- Entry Section, kode yang digunakan untuk masuk ke dalam critical section
- Critical Section, kode dimana hanya ada satu proses yang dapat dieksekusi pada satu waktu
- Exit Section, akhir dari critical section, mengizinkan proses lain
- Remainder Section, merupakan kode istirahat setelah masuk ke critical section.
D. 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.
Semaphore mempunyai dua sifat, yaitu:
- Semaphore dapat diinisialisasi dengan nilai non-negatif.
- Terdapat dua operasi terhadap semaphore, yaitu Down dan Up. Usulan asli yang disampaikanDjikstra adalah operasi P dan V.

Komentar
Posting Komentar