Sinkronisasi

 

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. Disini sinkronisasi diperlukan agar data tersebut tetap konsisten.
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.

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. 


Dalam Murphys 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.

C. Critical Section

Critical Section adalah sebuah segmen kode dimana sebuah proses memiliki 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.

D. Semaphor

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:

1. Semaphore dapat diinisialisasi dengan nilai nonnegatif.

2. Terdapat dua operasi terhadap semaphore, yaitu Down dan Up. Usulan asli yang disampaikanDjikstra adalah operasi P dan V.

Komentar

Postingan populer dari blog ini

MANAJEMEN PROSES