MAKALAH
S I N K R O N I S A S I

RIZKI
WINANDA SITORUS / 2153113 .
S I / TI – A MALAM /
SEMESTER III
STMIK Dumai
2016-2017
Kata
pengantar
Puji syukur kami panjatkan kehadirat Allah SWT yang
telah memberikan rahmat serta karunia-Nya kepada kami sehingga kami berhasil menyelesaikan Makalah ini yang
alhamdulillah tepat pada waktunya yang berjudul “SINKRONISASI ” Makalah ini berisikan tentang informasi mengenai sinkronisasi atau yang lebih khususnya membahas tentang pengenalan lebih jelas tentang sinkronikasi
, tujuan sinkronikasi pada sistem operasi dan lain-lain. Kami menyadari bahwa makalah ini masih jauh dari sempurna,
oleh karena itu kritik dan saran dari semua pihak yang bersifat membangun
selalu kami harapkan demi kesempurnaan makalah ini.
Akhir kata, kami sampaikan terima kasih kepada bapak dosen yang
memberi tugas ini dan berterima kasih kepada Allah Swt karena telah memberikan kami kesehatan sehingga kami dapat mengerjakan makalah ini. Semoga Allah SWT
senantiasa meridhai segala usaha kami. Amin
Daftar isi
Kata
pengantar...........................................................................
BAB I PENDAHULUAN...............................................................
BAB II ISI......................................................................................
Pengertian sinkronisasi...................................................................
Manfaat sinkronisasi......................................................................
Tujuan sinkronisasi .......................................................................
Masalah dalam sinkronisasi...........................................................
Sinkronisasi hardware....................................................................
Semaphores ...................................................................................
Monitors ........................................................................................
Contoh kasus..................................................................................
BAB III PENUTUP......................................................................
Review
BAB I
PENDAHULUAN
Sinkornisasi di perlukan untuk menghindari terjadinya ketidak konsistenan data akibat adanya akses secara konkuren. Proses-Proses tersebut disebut konkuren jika Proses itu ada dan berjalan pada waktu yang bersamaan.
Istilah Sinkronisasi sering terdengar ketika kita menggunakan alat elektronik. Sinkronisasi sendiri berasal dari bagian sistem operasi.
Sistem operasi adalah perangkat lunak sistem yang bertugas untuk melakukan kontrol dan manajemen perangkat keras serta operasi-operasi dasar sistem, termasuk menjalankan perangkat lunak aplikasi seperti program-program pengolah kata dan peramban web.
Jadi, agar sinkronisasi bisa berjalan, sangat di butuhkan yang namanya sistem operasi. Dalam kehidupan sehari-hari tanpa di sadari, kita sering melakukan sinkronisasi dalam berbagai hal. Mulai pada saat menggunakan smartphone, komputer dan lain sebagainya.
BAB II
ISI
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
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 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
SemaphoreCounting 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, …



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)
BAB III
PENUTUP
Demikian
yang dapat saya
susun mengenai materi yang menjadi
pokok bahasan dalam makalah ini, tentunya masih banyak kekurangan dan
kelemahannya, kerena terbatasnya pengetahuan yang saya ketahui dan kurangnya rujukan atau referensi yang
ada hubungannyadengan judul
makalah ini.
Saya banyak berharap para pembaca dan kepada bapak dosen sudi memberikan kritik dan saran yang membangun kepada diri saya demi sempurnanya makalah ini dan untuk penulisan makalah di kesempatan – kesempatan berikutnya menjadi lebih baik lagi.
Semoga makalah ini berguna bagi saya pada
khususnya juga para pembaca pada umumnya.
Review
ok min
BalasHapusmakasih banyak sudah share
solder uap