PENGERTIAN 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.
Shared
memory merupakan solusi ke masalah bounded-butter yang mengijinkan paling
banyak n-1 materi dalam buffer pada waktu yang sama. Suatu solusi, jika semua N
buffer digunakan tidaklah sederhana. Dimisalkan kita memodifikasi
producer-consumer code dengan menambahkan suatu variable counter, dimulai dari
0 dan masing-masing waktu tambahan dari suatu item baru diberikan kepada
buffer. Sinkronisasi merupakan “issue” penting dalam rancangan/implementasi OS
(shared resources, data, dan multitasking).
TUJUAN 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.
MASALAH DALAM SINKRONISASI
BESERTA SOLUSINYA
Race Condition
Race
Condition 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.
Critical Section
Critical
Section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya
bersama diakses. Terdiri dari:
1) Entry Section: kode yang
digunakan untuk masuk ke dalam critical section
2) Critical Section: Kode di mana hanya ada satu proses yang dapat dieksekusi
pada satu waktu
3) Exit Section: akhir dari
critical section, mengizinkan proses lain
4) Remainder Section: kode
istirahat setelah masuk ke critical section.
Solusi ke Masalah Critical-Section
Ada bebrapa Solusi untuk mengatasi masalah Critical
Section, yaitu:
• Mutual exclution
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 bias 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.
a. Asumsikan bahwa tiap proses mengeksekusi pada
nonzero speed.
b. Tidak ada asumsi mengenai kecepatan relative dan n
proses.
Cara-cara memecahkan masalah
• Hanya dua proses, Po dan P1
• Struktur umum dari proses adalah Pi (proses lain Pj)
Bakery Algorithm
Critical section untuk n proses:
a). Sebelum memasuki critical Section-nya, proses
menerima nomor pemilik nomor terkecil memasuki critical section.
b). Jika proses Pi dan Pj menerima nomor yang sama, jika
i < j, maka Pi dilayani duluan, lainnya Pj dilayani duluan (if i< j, then
Pi is served first; else Pj is served first).
c). Skema penomoran selalu menghasilkan angka –angka yang disebutkan satu per
satu, yaitu 1,2,3,3,3,3,4,5….
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:
a. Semaphore dapat diinisialisasi dengan nilai
non-negatif.
b. Terdapat dua operasi terhadap semaphore, yaitu Down
dan Up. Usulan asli yang disampaikan Djikstra adalah operasi P dan V.
• Operasi Down
Operasi ini menurunkan nilai semaphore, jika nilai
semaphore menjadi non-positif maka proses yang mengeksekusinya diblocked.
Operasi Down adalah atomic, tidak dapat diinterupsi sebelum diselesaikan.
Menurunkan nilai, memeriksa nilai, menempatkan proses pada antrian dan
memblocked sebagai instruksi tunggal. Sejak dimulai, tidak ada proses lain yang
dapat mengakses semaphore sampai operasi selesai atau diblocked.
• Operasi Up
Operasi Up menaikkan nilai semaphore. Jika satu proses
atau lebih diblocked pada semaphore itu tidak 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.
Adanya semaphore mempermudah persoalan mutual exclusion. Skema penyelesaian
mutual exclusion mempunyai bagian sebagai berikut:
Sebelum
masuk critical section, proses melakukan Down. Bila berhasil maka proses masuk
ke critical section. Bila tidak berhasil maka proses di-blocked atas semaphore
itu. Proses yang diblocked akan dapat melanjutkan kembali bila proses yang ada
di critical section keluar dan melakukan opersai up sehingga menjadikan proses
yang diblocked ready dan melanjutkan sehingga opersi Down-nya berhasil.
Problem Klasik pada Sinkronisasi
Ada tiga hal yang selalu menjadi masalah pada proses
sinkronisasi:
a. Problem Bounded buffer.
b. Problem Reades and Writer.
c. Problem Dining Philosophers.
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
tidak dapat mengakses struktur data internal dalam monitor secara langsung.
Hanya lewat prosedur-prosedur yang dideklarasikan minitor untuk mengakses
struktur internal.
Properti-properti
monitor adalah sebagai berikut:
a)
Variabel-variabel data lokal, hanya dapat diakses oleh prosedur-prosedur
dalam monitor dan tidak oleh prosedur di luar monitor.
b) Hanya satu proses yang dapat
aktif di monitor pada satu saat. Kompilator harus mengimplementasi ini(mutual
exclusion).
c) Terdapat cara agar proses yang
tidak dapat berlangsung di-blocked. Menambahkan variabel-variabel kondisi,
dengan dua operasi, yaitu Wait dan Signal.
d) Wait: Ketika prosedur monitor
tidak dapat berkanjut (misal producer menemui buffer penuh) menyebabkan proses
pemanggil diblocked dan mengizinkan proses lain masuk monitor.
e) Signal: Proses membangunkan
partner-nya yang sedang diblocked dengan signal pada variabel kondisi yang
sedang ditunggu partnernya.
f) Versi Hoare: Setelah signal,
membangunkan proses baru agar berjalan dan menunda proses lain.
g) Versi Brinch Hansen: Setelah
melakukan signal, proses segera keluar dari monitor.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.
§ Alamat Blog Dosen : https://syaifulahdan.wordpress.com
§ Alamat Web Siswa :
§ Alamat web Program studi, Fakultas, Universitas : http://ti.ftik.teknokrat.ac.id, http://ftik.teknokrat.ac.id, www.teknokrat.ac.id
§ Nama Mahasiswa : Sodikin
0 komentar:
Posting Komentar