Sinkronisasi mengacu pada
salah satu dari dua proses yang berbeda tetapi saling berkaitan satu sama
lainnya.
Dua proses ini merupakan
sinkronisasi data dan sinkronisasi proses.
Inti dari permasalahan
sinkronisasi ini nantinya akan mengacu pada sebuah gagasan yang di dalamnya
terdapat banyak proses yang pada titik tertentu akan bertemu, bergabung dalam
rangka untuk mencapai sebuah kesepakatan ataupun komitmen untuk suatu urutan
tindakan tertentu.
Sinkronisasi ini mengacu pada
gagasan yang menjaga beberapa salinan dari dataset yang ada dalam koherensi
antara satu sama lain.
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. Disini sinkronisasi
diperlukan agar data tersebut tetap konsisten
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.
Jadi sinkronisasi itu lebih jelasnya merupakan akses
secara berbarengan untuk berbagi dua bersama dalam mengakibatkan inkonsistensi
data. Pemeliharaan konsistensi data memerlukan mekanisme yang tepat untuk
memastikan eksekusi dari proses kerjasama.
Sinkronisasi ini dibutuhkan ketika menemukan sebuah
kasus yang menyebabkan ketidakkonsistenan data sehingga data menjadi tidak
konkuren. Jadi pada proses sinkronisasi primitif biasanya yang digunakan adalah
untuk mengimplementasikan sinkronisasi data dan proses ini di lakukan oleh
fungsi lain di luar sistem utama dari sistem operasi.
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:
1.
Adanya
akses-akses data yang sama yang di lakukan secara bersamaan bisa saja
menyebabkan data menjadi tidak konsisten
2.
Agar semua data
yang ada tetap konsisten membutuhkan mekanisme-mekanisme agar bisa di pastikan
proses eksekusi berjalan.
3.
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.
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.
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.
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 berikut:
Dalam Murphy‟s Law kasus tesebut dapat terjadi. Proses A membaca in dan
menyimpan nilai "7" di sebuah variabel lokal yang disebut next_free_slot.
Sebuah clock interrupt terjadi dan CPU memutuskan bahwa proses A
berjalan cukup lama, sehingga digantikan oleh proses B.
Proses B juga membaca in, dan juga mengambil nilai 7, sehingga menyimpan nama berkas di slot nomor 7 dan memperbaharui nilai in menjadi 8. Maka proses mati dan melakukan hal lain.
Akhirnya proses A berjalan lagi, dimulai dari tempat di mana proses
tersebut mati. Hal ini terlihat dalam next_free_slot, ditemukan nilai 7
di sana, dan menulis nama berkas di slot nomor 7, menghapus nama berkas yang
baru saja diletakkan oleh proses B. Kemudian proses A menghitung next_free_slot
+ 1, yang nilainya 8 dan memperbaharui nilai in menjadi 8.
Direktori spooler sekarang secara internal konsisten, sehingga
printer daemon tidak akan memberitahukan apa pun yang terjadi, tetapi poses B
tidak akan mengambil output apa pun. Situasi seperti ini, dimana dua atau lebih
proses melakukan proses reading atau writing beberapa shared
data dan hasilnya bergantung pada ketepatan berjalan disebut race
condition.
Critical Section
Critical Section adalah sebuah segmen kode dimana sebuah proses memiliki
sumber daya bersama yang diakses
Sumber daya bersama yang diakses terdiri dari:
1.
Entry Section, kode yang digunakan untuk masuk ke dalam critical
section
2.
Critical Section, kode dimana hanya ada satu proses yang dapat
dieksekusi pada satu waktu
3.
Exit Section, akhir dari critical section, mengizinkan proses lain
4.
Remainder Section, merupakan kode istirahat setelah masuk ke critical
section.
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.
Semaphore dapat
diinisialisasi dengan nilai non-negatif.
2.
Terdapat dua
operasi terhadap semaphore, yaitu Down dan Up. Usulan asli yang disampaikanDjikstra
adalah operasi P dan V.
Komentar
Posting Komentar