Anda di halaman 1dari 9

PENGERTIAN SINKRONISASI

Sinkronisasi adalah suatu proses dimana proses tersebut saling bersamaan dan saling berbagi data
bersama yang mengakibatkan race condition atau lebih dikenal dengan inkonsistensi data atau 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.

MANFAAT SINKRONISASI.

Bermanfaat untuk menyimpan data, baik sementara atau pemanen sehingga memudahkan
pekerjaan.

Jadi dengan menggunakan sistem ini pekerjaan Anda akan lebih terbantu dan lebih efektif karena
bisa menghemat waktu.

TUJUAN SINKRONISASI

Kenapa Sistem Operasi membutuhkan Sinkronisasi ?

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.

sama Seperti yang kita ketahui bahwa hidup saling berkaitan satu sama lain, begitu juga Sinkronisasi
Pada Sistem Operasi.jika Hal ini jika tidak ada penopang dalam menjalankan suatu sistem, maka akan
menemui suatu kendala yang berakibat ketidakkonsistenan pada data, sehingga data tidak menjadi
konkuren.

MASALAH DALAM SINKRONISASI

o Race Condition

Arti dari Race Conditon adalah situasi di mana beberapa proses mengakses dan memanipulasi data
bersama pada saat besamaan. Nilai akhir dari data bersama tersebut tergantung pada proses yang
terakhir selesai.

Untuk mencegah race condition, proses-proses yang berjalan besamaan harus di disinkronisasi.

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.
o Critical Section

Arti dari masalah Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana
sumber daya diakses bersama .

Critical Section ini sendiri mempunyai beberapa kode seperti :

Entry Section : adalah kode yang digunakan untuk masuk ke dalam critical section.

Critical Section : Kode di mana hanya ada satu proses yang dapat dieksekusi pada satu waktu.

Exit Section: akhir dari critical section, mengizinkan proses lain.

Remainder Section : kode istirahat setelah masuk ke critical section.

Solusi untuk mencegah kesalahan pada critical section

Kunci untuk mencegah masalah ini dan di situasi yang lain yang melibatkan shared 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 membutuhkan 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.

Masalah menghindari race conditions dapat juga diformulasikan secara abstrak. Bagian dari 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 kritis 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 kerja sama antar
proses secara pararel dengan baik dan efisien dalam menggunakan shared data. Kita butuh 4 kondisi
agar menghasilkan solusi yang baik yaitu:

· Tidak ada dua proses secara bersamaan masuk ke dalam citical section.

· Tidak ada asumsi mengenai kecepatan atau jumlah cpu.

· Tidak ada proses yang berjalan di luar critical secion yang dapat mengeblok proses lain.

· Tidak ada proses yang menunggu selamamya untuk masuk critical section.

Ada pun Solusi lain untuk mengatasi masalah Critical Section, yaitu:

Mutual exclution : yaitu Jika proses pi sedang mengeksekusi critical section-nya maka tidak ada
proses lain yang dapat mengeksekusi dalam critical section mereka.

Progress : 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.
Bounded Waiting :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.

Selain masalah race condition dan critical yang ada sinkronisasi ,ada juga masalah klasik yang terjadi
pada sinkronisasi di sistem operasi seperti :

o Bounded – Buffer Problem

Bounded-buffer problem merupakan suatu struktur data yang mampu untuk menyimpan beberapa
nilai dan mengeluarkannya kembali ketika diperlukan . Jika dianalogikan bounded buffer ini akan
mirip dengan sebuah tumpukan piring. Kita menaruh piring dan menaruh lagi sebuah piring, ketika
ingin mengambil piring maka tumpukan yang paling atas yang akan terambil.Jadi piring terakhir yang
dimasukan akan pertama kali diambil.

Solusi Bounded – Buffer Problem

Solusi Shared Memory untuk Bounded – Buffer, mengijinkan (n-1) items di dalam buffer untuk suatu
waktu tertentu.

o Readers and Writers Problem

Readers and Writers Problem adalah problem yang memodelkan proses yang mengakses
database. Masalah ini timbul ketika ada dua proses atau lebih berbagi data yang sama. Data yang
dimaksud disini bisa berbentuk buffer, file atau objek dari suatu program.

Solusi readels and writers problem

Pembaca di Prioritaskan

Reader tidak akan menunggu reader(s) lain yang sedang membaca, walaupun ada writer yang
sedang menunggu. Dengan kata lain, 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.

Penulis di Prioritaskan

Di mana suatu writer sedang dijalankan oleh sistem, maka tidak boleh ada reader yang memulai
untuk membaca data.sehingga Kedua Jenis Punya Prioritas yang Sama yaitu tidak ada prioritas
khusus yang diberikan kepada kedua jenis proses.

o Dining Philosophers Problem

Masalah ini pertama ini pertama kali ditulis dan diselesaikan oleh Djikstra pada tahun 1965.Masalah
ini memodelkan masalah enkapsulasi dari ketergantungan mesin dan masalah portabilitas. Dalam
masalah Dining Philosophers, diketahui sejumlah (N) filusuf yang hanya memiliki tiga status, berpikir,
lapar, dan makan. Semua filusuf berada di sebuah meja makan bundar yang ditata sehingga di depan
setiap filusuf ada sebuah piring berisi mie dan di antara dua piring yang bersebelahan terdapat
sebuah sumpit.

Solusi Dining Philosophers Problem

Solusi Dining – Philosophers Problem ada dua, yakni :

Solusi Waiter

Solusi Waiter : solusi sederhana ini dilakukan dengan mengadakan seorang waiter yang senantiasa
mengawasi penggunaan sumpit di meja makan. Ketika empat buah (dua pasang) sumpit sedang
dipakai,orang berikutnya yang ingin memakai sumpit harus meminta izin kepada sang waiter, yang
hanya dapat diberi ketika salah satu sumpit telah selesai terpakai.

Solusi Hierarki Resource

Solusi Hirarki Resource: resources (sumpit) di meja makan telah diberi susunan hirarki. 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 hirarki dari 1 sampai 5,
seseorang hanya dapat mengambil sumpit dengan nomor yang paling rendah, kemudian mengambil
sumpit yang setingkat lebih tinggi. Ketika ia hendak mengembalikannya, orang itu harus meletakkan
sumpit dengan nomor yang lebih tinggi terlebih dahulu, lalu yang rendah.

Sinkronisasi Hardware

Sinkronisasi Memerlukan dukungan hardware (prosesor).

· Dalam bentuk “instruction set” khusus: test-and-set.

· Menjamin operasi atomik (satu kesatuan): test nilai dan mengubah nilai tersebut .

Test-and-Set (mutual exclusion).

Mutual exclusion dapat diterapkan dengan menggunakan shared data,

Semaphores

Semaphores adalah sebuah struktur data komputer yang digunakan untuk sinkronisasi proses, yaitu
untuk memecahkan masalah di mana lebih dari satu proses atau thread dijalankan secara
bersamaan dan harus diatur urutan kerjanya. Semafor dicetuskan oleh Edsger Dijkstra dan pertama
digunakan dalam sistem operasi THE.

Nilai semafor diinisialisasi dengan jumlah resource yang dikendalikannya. Dalam kasus khusus di
mana ada satu shared resource, semafornya disebut "semafor biner". Semafor adalah solusi klasik
dari dining philosophers problem, walaupun tidak mencegah deadlock.
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:

· Semaphore dapat diinisialisasi dengan nilai non-negatif.

Operasi ini menurunkan nilai semaphore, jika nilai semaphore menjadi non-positif maka proses yang
mengeksekusinya diblocked.

· Terdapat dua operasi terhadap semaphore, yaitu Down dan Up.

Operasi Down adalah atomic, tak dapat diinterupsi sebelum diselesaikan.menurunkan nilai,
memeriksa nilai, menempatkan proses pada antrian dan memblocked sebagai instruksi tunggal.
Sejak dimulai, tak ada proses lain yang dapat mengakses semaphore sampai operasi selesai atau
diblocked.

Operasi Up menaikkan nilai semaphore. Jika satu proses atau lebih diblocked pada semaphore itu
tak dapat menyelesaikan operasi Down, maka salah satu dipilih oleh system dan menyelesaikan
operasi Down-nya. Urutan proses yang dipilih tidak ditentukan oleh Djikstra, dapat dipilih secara
acak.

Dua Jenis Semaphore

Counting semaphore

- nilai integer S dapat berkisar melalui domain tak terbatas.

- Biasanya nilai S diinisiasi sebanyak resource yang dibagi

- Jika S=0, maka semua resource sedang dipakai

Binary semaphore

- nilai integer S dapat mempunyai jangkauan 0 atau 1

- Lebih sederhana untuk diimplementasikan

Implementasi Semaphore

Untuk menghindari busy waiting, process yang menunggu akses critical-section harus dihentikan
sementara.

Ada dua operasi sederhana yang terlibat :

block : menghentikan sementara (suspend) proses yang memanggil

wakeup(P) : melanjutkan (resume) eksekusi dari proses P yang di-blok

Semaphore tanpa busy waiting butuh struktur data untuk menyimpan process yang sedang suspend.
Monitors

Solusi sinkronisasi ini dikemukakan oleh Hoare pada tahun 1974. Monitor adalah kumpulan
prosedur, variabel dan struktur data di satu modul atau paket khusus. Proses dapat memanggil
prosedur-prosedur kapan pun diinginkan. Tapi proses tak dapat mengakses struktur data internal
dalam monitor secara langsung. Hanya lewat prosedur-prosedur yang dideklarasikan monitor untuk
mengakses struktur internal.

Dengan memaksakan disiplin hanya satu proses pada satu saat yang berjalan pada monitor, monitor
menyediakan fasilitas mutual exclusion. Variabel-variabel data dalam monitor hanya dapat diakses
oleh satu proses pada satu saat. Struktur data bersama dapat dilindungi dengan menempatkannya
dalam monitor. Jika data pada monitor merepresentasikan sumber daya, maka monitor
menyediakan fasilitas mutual exclusion dalam mengakses sumber daya itu.

Properti-properti monitor adalah sebagai berikut:

- Variabel-variabel data lokal, hanya dapat diakses oleh prosedur-prosedur dalam monitor dan
tidak boleh prosedur di luar monitor.

- Hanya satu proses yang dapat aktif di monitor pada satu saat. Kompilator harus
mengimplementasi ini(mutual exclusion).

- Terdapat cara agar proses yang tidak dapat berlangsung di-blocked. Menambahkan variabel-
variabel kondisi, dengan dua operasi, yaitu Wait dan Signal.

- Wait: Ketika prosedur monitor tidak dapat berlanjut (misal producer menemui buffer penuh)
menyebabkan proses pemanggil diblocked dan mengizinkan proses lain masuk monitor.

- Signal: Proses membangunkan partner-nya yang sedang diblocked dengan signal pada variabel
kondisi yang sedang ditunggu partnernya.

- Versi Hoare: Setelah signal, membangunkan proses baru agar berjalan dan menunda proses
lain.

Monitor mensinkronisasi sejumlah proses:

suatu saat hanya satu yang aktif dalam monitor dan yang lain menunggu

Bagian dari bahasa program (mis. Java).

Tugas compiler menjamin hal tersebut terjadi dengan menerjemahkan ke “low level
synchronization” (semphore, instruction set dll)

- Cukup dengan statement (deklarasi) suatu section/fungsi adalah monitor => mengharuskan
hanya ada satu proses yang berada dalam monitor (section) tsb
Proses-proses harus disinkronisasikan di dalam monitor:

o Memenuhi solusi critical section.

o Proses dapat menunggu di dalam monitor.

o Mekanisme: terdapat variabel (condition) dimana proses dapat menguji/menunggu sebelum


mengakses “critical section”

var x, y: condition

Condition: memudahkan programmer untuk menulis code pada monitor.

Misalkan : var x: condition ;

o Variabel condition hanya dapat dimanipulasi dengan operasi: wait() dan signal()

o x.wait() jika dipanggil oleh suatu proses maka proses tsb. akan suspend - sampai ada proses lain
yang memanggil: x. signal()

o x.signal() hanya akan menjalankan (resume) 1 proses saja yang sedang menunggu (suspend)
(tidak ada proses lain yang wait maka tidak berdampak apapun)

Contoh Kasus Bounded – Buffer pada sinkronisasi

Pada bagian ini akan dicontohkan suatu produser konsumer. produser akan menghasilkan
suatu barang dan konsumer akan mengkonsumsi barang yang dihasilkan oleh produser. produser
dan konsumer ini akan mengakses bounded buffer yang sama. produser setelah menghasilkan suatu
barang dia akan menaruh barang itu di bounded buffer sebaliknya konsumer ketika membutuhkan
suatu barang, dia akan mengambilkannya dari bounded buffer.

Contoh kasus Readers and Writers Problem pada sinkronisasi

Reader tidak akan menunggu reader(s) lain yang sedang membaca, walaupun ada writer yang
sedang menunggu. Dengan kata lain, 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.Di mana suatu
writer sedang dijalankan oleh sistem, maka tidak boleh ada reader yang memulai untuk membaca
data.Dengan tidak ada prioritas khusus yang diberikan kepada kedua jenis proses.

Contoh Kasus Dining – Philosophers Problem pada sinkronisasi

Pada sebuah computer tentunya terdapat aplikasi-aplikasi yang dapat memudahkan kita untuk
melakukan suatu pekerjaan. Namun disamping kemudahan yang diberikan, terdapat ancaman
negative yang dapat aplikasi-aplikasi itu berikan pada computer kita jika kita tidak menggunakannya
dengan benar. Suatu contoh ketika kita mengerjakan suatu tugas. Kita membuka dan menjalankan
beberapa aplikasi secara bersamaan. Aplikasi yang kita gunakan misalnya ms. Word (membuka 6 file
word sebagai sumber tugas), winamp untuk memainkan lagu, firefox untuk browsing internet, pidgin
untuk sesekali chating, sementara itu aplikasi start up yang berjalan juga banyak dan RAM yang
tersedia tidak begitu besar sehingga hal ini akan membuat computer menjalankan aplikasi itu terus-
menerus jika kita tidak mematikannya. Hal ini akan membuat computer berjalan semakin lambat dan
memungkinkan terjadinya starvation atau deadlock dalam beberapa waktu kemudian.

Contoh Kasus semaphores sinkronisasi

Keterangan:

· Mula-mula nilai s = 1, proses A, B, D, dan C berada dalam status ready; proses A dieksekusi,
nilai s berkurang menjadi 0

· Proses A selesai masuk status ready; proses B dieksekusi s menjadi -1 proses B di-blok
masuk antrian

· Proses D dieksekusi

· semSignal s menjadi 0 proses B dibebaskan dari antrian; proses D selesai masuk status
ready (mulai) lagi Urutan eksekusi: A, B, D

· Proses C dieksekusi s menjadi -1 C di-blok masuk antrian; hal yang sama

terjadi pula untuk proses A dan B diblok masuk antrian s menjadi -3

· Proses D dieksekusi lagi


· semSignal s menjadi -2 proses C dibebaskan Urutan eksekusi: A, B, D, C, A, B, D, C, D, A, D, B,
D, C, D, A, D, …

Contoh kasus monitors sinkronisasi

Penyelesaian Masalah Monitor dapat dianalogikan sebagai sebuah bangunan dengan tiga buah
ruangan yaitu satu buah ruangan kontrol, satu buah ruang-tunggu-masuk, satu buah ruang-tunggu-
dalam. Ketika suatu thread memasuki monitor, ia memasuki ruang-tunggu-masuk (enter). Ketika
gilirannya tiba, thread memasuki ruang kontrol (acquire), di sini thread menyelesaikan tugasnya
dengan shared resource yang berada di ruang kontrol (owning). Jika tugas thread tersebut belum
selesai tetapialokasi waktu untuknya sudah habis atau thread tersebut menunggu pekerjaan thread
lain selesai, thread melepaskan kendali atas monitor (release) dan dipindahkan ke ruang-tunggu-
dalam (waiting queue). Ketika gilirannya tiba kembali, thread memasuki ruang kontrol lagi (acquire).
Jika tugasnya selesai, ia keluar dari monitor (release and exit)

Anda mungkin juga menyukai