Permasalahan Klasik dalam Sinkronisasi

 


Sinkronisasi

Ketika mempelajari ilmu komputer, pastinya kita akan menemukan bagian yang membahas tentang sinkronisasi. Sinkronsasi ini mengacu pada salah satu dari dua proses yang berbeda tetapi saling berkaitan satu sama lainya. Dua proses ini merupakan sinkronisasi data dan sinkronisasi proses. Inti dari permasalahan sinkronisasi ini nantinya akan mengacu pada sebuah gagasan yang didalmanya terdapat banyak proses yang pada titik tertentu akan beretemu, bergabung dalam rangka untuk mencapai sebuah kesepakatan ataupun komitmen untuk suatu urutan tindakan tertentu. Sinkronisasi ini mengacu pada gagasan yang menjaga beberapa salinan dari data set yang ada dalam koherensi antara satu sama lain.

Jadi sinkronisasi adalah suatu proses secara bersama sama dan saling berbagi data bersama dapat mengakibatkan race condition atau inkonsistensi data.

Race Condition adalah kondisi dimana dua atau lebih proses mengakases sumber daya secara bersama sama.

Tujuan utama sinkronisasi adalah menghindari terjadinya inkonsistensi data, karena pengkasesan oleh beberapa proses yang berbeda (mutual exclution), serta untuk mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan lancar serta terhindar dari deadlock atau starvation. Manfaat sinkronisasi yaitu sebagai penyimpanan data sementara dan non sementara agar dapat mempermudah pekerjaan.

Masalah pada sinkronisasi terdapat dari masalah lainnya, seperti masalah Race Condition dan Critical Section.

Race Condition, merupakan suatu kondisi dimana dua atau lebih proses mengakses sumber daya secara bersama sama. Situasi yang tidak menentu kaibat beberapa proses mengakses dan memanipulasi data secara bersamaan.

Cara menghindari Race Condition yaitu, jika suatu proses sedang menjalankan Critical Secetion, maka proses lain tidak bisa masuk kedalam Critical Section tersebut.

Critical Section, merupakan suatu kode segmen dari proses-proses yang memungkinkan terjadinya Race Condition.

Kode-kode dalam Critical Section :

  • Entry Section, kode yang difungsikan untuk masuk kedalam Critical Section
  • Critical Seecetion, dimama kode ini hanya ada dalam satu proses yang dapat dieksekusi pada satu waktu
  • Exit Section, akhir dari Critical Section, dan mengizinkan proses lain
  • Remainder Section, kode istirahat setelah masuk ke proses Critical Section

Solusi Critical Section :
  • Terjadinya kemajuan (Progress / Queue), 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 bisa ditunda.
  • Mutual Exclusion, jika ada suatu proses sedang mengeksekusi Critical Section-nya maka tidak ada proses lain yang dapat mengeksekusi dalam Critical Section mereka.
  • Adanya batas waktu tunggu (Bounded Waiting), suatu keterikatan harus ada pada sejumlan proses yang diijinkan masuk ke Critical Section mereka, setelah adanya proses yang meminta masukke Critical Section dan sebelum permintaan itu diterima.
Masalah Klasik dalam Sinkronisasi
Terdapat 3 masalah klasik dalam sinkronisasi yaitu : Bounded-Buffer problem, Dining-Philosophers problem, dan Readers and Writers problem.

  • Bounded-Buffer Problem

    Bounded-Buffer merupakan sebuah penampung atau struktur data yang mampu untuk menyimpan sementara beberapa data dalam kapasitas yang terbatas dan mengeluarkannya kembali ketika diperlukan.

Contoh permasalahan Bounded-Buffer adalah masalah produsen dan komsumen : 

Produsen menaruh data pada buffer. Jika buffer tersebut sudah terisi penuh, maka produsen tidak melakukan apa-apa dan menunggu sampai konsumen mangambil data dari buffer. Jika buffer tersebut kosong, maka konsumen tidak melakukan apa-apa dan menunggu samapai buffer tersebut diisi oleh produsen. Masalah yang timbul yaitu jika hanya satu proses yang boleh memasuki Critical Section, jadi pada satu waktu buffer hanya bisa diakses oleh satu produsen atau satu konsumen.

Solusi :
dalam bounded-buffer problem dapat menggunakan perangkat sinkronisasi semaphore untuk mensinkronisasi proses produsen dan konsumen.

menggunkan 3 buah semaphore yaitu :
  1. Mutex, digunakan untuk menjamin hanya boleh satu proses yang berjalan mengakses buffer pada suatu waktu, awalnya diinisialisasi sebesar satu (1)
  2. Full, digunakan untuk menghitung jumlah buffer yang berisi, yang pada awalnya diinisialisasi sebesar nol (0)
  3. Empty, digunkan untuk menghitung jumlah buffer yang kosong, yang awalnya diinisialisasi sebesar ukuran buffer
inisialisasi untuk variabel di atas, full = 0, empty = n, mutex = 1

Jadi dapat disimpulkan bahwa pokok permasalahan Bounded-Buffer adalah bagaimana mengatur sinkronisasi dari beberapa proses yang secara konkuren ingin mengakses buffer (mengisi dan mengosongkan buffer). Pegaturan itu dilakukan dengan menerapkan konsep semaphore yang menjamin hanya ada satu proses dalam satu waktu yang boleh mengakses beffer sehingga tidak terjadi race condition.

  • Dining-Philosophers Problem


    Masalah ini memodelkan masalah enkapsulasi dari ketergantungan mesin dan masalah portabilitas. Masalah ini dapat diilustrasikan sebagai berikut :

Terdapat 5 orang filsuf yang sedang duduk mengelilingi sebuah meja. Terdapat satu mangkuk mie di depan para filsuf dan 5 sumpit diantara masing-masing filsuf. Para filsuf menghabiskan waktunya dengan berpikir (ketika kenyang) dan makan (ketika lapar). Ketika lapar, filsuf akan mengambil dua buah sumpit (ditangan kanan dan kirinya) lalu makan. Namun adakalanya hanya diambil satu sumpit saja. Jika ada filsuf yang mengambil dua buah sumpit, maka tiga filsuf di samping filsuf yang sedang makan harus menunggu samapai sumpit ditaruh kembali. Hal ini dapat diimplementasikan dengan wait dan signal. Permasalahannya adalah pada waktu yang sama, kelima filsuf tersebut dalam keadaan lapar, dan masing-masing mengambil sumpit yang ada di sebelah kanannya. Pada saat kelima filsuf tersebut ingin mengambil sumpit yang di sebelah kiri, sumpit tersbut telah digunakan oleh filsuf lainya. Setiap filsuf saling menunggu filsuf lain untuk melepaskan sumpit, maka terjadilah deadlock.

Solusi :
Terdapat dua solusi utnuk masalah Dining-Philosophers, yaitu :

Solusi Waiters
    Solusi sederhana ini dilakukan dengan mengadakan seorang waiter yang senatiasa mengawasi penggunaan sumpit dimeja makan. Ketika empat buah (dua pasang) sumpit sedang dipakai orang berikutnya yang ingin memakai sumpit harus meminta zin kepada sang waiter, yang hanya dapat diberikan ketika salah satu sumpit telah selesai terpakai. 

Hierarki Resource
    Resources (sumpit) dimeja makan telah diberi susunan hierarki. Setiap permintaan orang terhadap sebuah sumpit harus dilakukan pada susunan tertentu, dan dikembalikan pada susunan sebaliknya. Dalam hal ini setiap orang dapat mengambil sumpit dimanapun diatas meja. Misalkan setiap sumpit diberi nomor sebagai tingkat hierarki dari 1 sampai 5, seseorang hanya dapat mengambil sumpit dengan nomor yang paling rendah, kemudian mengambil sumpit yang setingkat lebih tinggi. Ketika ia hedak mengembalikanya, ornag itu harus meletakan sumpit dengan nomor yang lebih tinggi terlebih dahulu, lalu yang rendah. 

  • Readers and Waiters problem



    Masalah yang memodelkan beberapa proses yang mengakses database yang sama dalam satu waktu sehingga dapat menyebabkan korupsi data. Data dapat berupa buffer, objek, atau file dari suatu program. Contoh masalahnya sebagai berikut :

Seornag reader sedang memaca objek, kemudia seorang writer menulis ulang objek data tersebut, maka reader akan membaca data yang tidak akurat, karena ada kemungkinandata yang terbaca adalah stengah data lama dan setengah data baru.

Solusi :
Terdapat dua solusi untuk masalah Readers and Writers, yaitu :

  • Jika terdapat satu proses menulis (mengubah) basis data, proses lain tidak boleh mengakses basis data, baik membaca atau menulis. Pada masalah ini, writers memiliki prioritas yang lebih tinggi daripada readers. Jika ada writers yang sedang menunggu, maka tidak boleh ada reader lain yang bekerja. Writers akan memblok semua proses reading oleh readers dan melakukan proses writing. Ketika proses writing selesai, maka proses reading dapat dilanjutkan kembali oleh reader.
  • Jika ada reader yang datang ketika reader lain sedang membaca dan sebuah writer sedang menunggu, maka reader yang baru datang tersebut akan langsung mendapat giliran untuk membaca. Writer akan ditunda pengerjaannya.
 Untuk lebih jelasnya simak video ini :


         Referensi :
    • gurupendidikan.co.id - Pengertian Sinkronisasi Sistem Operasi Lengkap
    • lydia-wijaya-fst13.web.unair.ac.id - LYDIA WIJAYA
    • stessedout.blogspot.com - Masalah Klasik Sinkronisasi 

Komentar

Postingan Populer