Anda di halaman 1dari 62

Sinkronisasi

Sistem Operasi
Konsep Interaksi

Sinkronisasi diperlukan untuk menghindari
terjadinya ketidakkonsistenan data akibat
adanya akses data secara konkuren.

Proses-proses disebut konkuren jika proses-
proses itu ada dan berjalan pada waktu yang
sama, proses-proses konkuren ini bisa bersifat
independen atau bisa juga saling berinteraksi.
Konsep Interaksi

Proses-proses konkuren yang saling berinteraksi
memerlukan sinkronisasi agar terkendali dan
juga menghasilkan output yang benar.
Komunikasi Antar Proses

Sistem Berbagi Memori

Sistem Berkirim Pesan
Sistem Berbagi Memori

Sistem Berbagi Memori atau yang disebut juga
sebagai Shared Memory System merupakan
salah satu cara komunikasi antar proses dengan
cara mengalokasikan suatu alamat memori
untuk dipakai berkomunikasi antar proses.

Alamat dan besar alokasi memori yang
digunakan biasanya ditentukan oleh pembuat
program.
Sistem Berkirim Pesan

Sistem berkirim pesan adalah proses komunikasi
antar bagian sistem untuk membagi variabel
yang dibutuhkan.

Proses ini menyediakan dua operasi yaitu
mengirim pesan dan menerima pesan.

Ketika dua bagian sistem ingin berkomunikasi
satu sama lain, yang harus dilakukan pertama
kali adalah membuat sebuah link komunikasi
antara keduanya.
Sistem Berkirim Pesan

Sistem berkirim pesan sangat penting dalam
sistem operasi. Karena dapat diimplementasikan
dalam banyak hal seperti pembagian memori,
pembagian bus, dan melaksanakan proses yang
membutuhkan pengerjaan bersama antara
beberapa bagian sistem operasi.
Terdapat dua macam cara
berkomunikasi

Komunikasi langsung.

Komunikasi tidak langsung.
Komunikasi langsung

Dalam komunikasi langsung, setiap proses yang
ingin berkirim pesan harus mengetahui secara
jelas dengan siapa mereka berkirim pesan.

Hal ini dapat mencegah pesan salah terkirim ke
proses yang lain.
Karakteristik Komunikasi
langsung

Link dapat otomatis dibuat

Sebuah link berhubungan dengan tepat satu
proses komunikasi berpasangan

Diantara pasangan itu terdapat tepat satu link

Link tersebut biasanya merupakan link
komunikasi dua arah
Komunikasi tidak langsung

Berbeda dengan komunikasi langsung, jenis
komunikasi ini menggunakan sejenis kotak
surat atau port yang mempunyai ID unik untuk
menerima pesan.

Proses dapat berhubungan satu sama lain jika
mereka membagi port mereka.
Karakteristik komunikasi
Tidak Langsung

Link hanya terbentuk jika beberapa proses
membagi kotak surat mereka

Sebuah link dapat terhubung dengan banyak
proses

Setiap pasang proses dapat membagi beberapa
link komunikasi

Link yang ada dapat merupakan link terarah
ataupun link yang tidak terarah
Sinkronisasi

Komunikasi antara proses membutuhkan
subroutine untuk mengirim dan menerima data
primitif.

Terdapat desain yang berbeda-beda dalam
implementasi setiap primitif.

Pengiriman pesan mungkin dapat diblok
(blocking) atau tidak dapat dibloking
(nonblocking) - juga dikenal dengan nama
sinkron atau asinkron.
Sinkronisasi
• Ketika dalam keadaan sinkron, terjadi dua
kejadian:
1. Blocking send . Pemblokiran pengirim sampai
pesan sebelumnya diterima.
2. Blocking receive . Pemblokiran penerima sampai
terdapat pesan yang akan dikirim.
Sinkronisasi
• Sedangkan untuk keadaan asinkron, yang terjadi
adalah:
1. Non-blocking send . Pengirim dapat terus
mengirim pesan tanpa memperdulikan apakah
pesan sebelumnya sampai atau tidak.
2. Non-blocking receive . Penerima menerima
semua pesan baik berupa pesan yang valid atau
pesan yang salah (null).
Penyangga

Dalam setiap jenis komunikasi, baik langsung
atau tidak langsung, penukaran pesan oleh
proses memerlukan antrian sementara.

Pada dasarnya, terdapat tiga cara untuk
mengimplementasikan antrian tersebut:
 Kapasitas Nol.
 Kapasitas Terbatas.
 Kapasitas Tak Terbatas.
Kapasitas Nol

Antrian mempunyai panjang maksimum nol,
sehingga tidak ada penungguan pesan
(message waiting).

Dalam kasus ini, pengirim harus memblok
sampai penerima menerima pesan.
Kapasitas Terbatas

Antrian mempunyai panjang yang telah
ditentukan, paling banyak n pesan dapat
dimasukkan.

Jika antrian tidak penuh ketika pesan dikirimkan,
pesan yang baru akan menimpa, dan pengirim
dapat melanjutkan eksekusi tanpa menunggu.

Link mempunyai kapasitas terbatas. Jika link
penuh, pengirim harus memblok sampai
terdapat ruang pada antrian.
Kapasitas Tak Terbatas

Antrian mempunyai panjang yang tak terhingga,
sehingga semua pesan dapat menunggu disini.

Pengirim tidak akan pernah di blok.
Client/Server

Dengan makin berkembangnya teknologi
jaringan komputer, sekarang ini ada
kecenderungan sebuah sistem yang
menggunakan jaringan untuk saling
berhubungan.

Dalam jaringan tersebut, biasanya terdapat
sebuah komputer yang disebut server, dan
beberapa komputer yang disebut client.
1. Karakteristik Server

Pasif

Menunggu request

Menerima request, memproses mereka
dan mengirimkan balasan berupa service
2. Karakteristik Client

Aktif

Mengirim request

Menunggu dan menerima balasan dari
server
Client/Server

Socket adalah sebuah endpoint untuk
komunikasi didalam jaringan.

Sepasang proses atau thread berkomunikasi
dengan membangun sepasang socket, yang
masing-masing proses memilikinya.

Socket dibuat dengan menyambungkan dua
buah alamat IP melalui port tertentu.
Client/Server

Secara umum socket digunakan dalam
client/server system, dimana sebuah server akan
menunggu client pada port tertentu.

Begitu ada client yang menghubungi server
maka server akan menyetujui komunikasi
dengan client melalui socket yang dibangun.
Contoh

sebuah program web browser pada host x (IP
146.86.5.4) ingin berkomunikasi dengan web
server (IP 152.118.25.15) yang sedang
menunggu pada port 80.

Host x akan menunjuk sebuah port. Dalam hal ini
port yang digunakan ialah port 1655.

Sehingga terjadi sebuah hubungan dengan
sepasang socket (146.86.5.4:1655) dengan
(152.118.25.15:80).
RPC

Remote Procedure Call (RPC) adalah sebuah
metode yang memungkinkan kita untuk
mengakses sebuah prosedur yang berada di
komputer lain. Untuk dapat melakukan ini
sebuah server harus menyediakan layanan
remote procedure.

Pendekatan yang dilakuan adalah sebuah server
membuka socket, lalu menunggu client yang
meminta prosedur yang disediakan oleh server.
RPC

Bila client tidak tahu harus menghubungi port
yang mana, client bisa me-request kepada
sebuah matchmaker pada sebuah RPC port
yang tetap.

Matchmaker akan memberikan port apa yang
digunakan oleh prosedur yang diminta client.
Deadlock dan Starvation
Race Condition

Race condition adalah suatu kondisi dimana dua
atau lebih proses mengakses shared
memory/sumber daya pada saat yang
bersamaan dan hasil akhir dari data tersebut
tergantung dari proses mana yang terakhir
selesai dieksekusi sehingga hasil akhirnya
terkadang tidak sesuai dengan yang
dikehendaki.
Race Condition
Critical Section

Critical section adalah segmen kode yang
mengakses data yang digunakan proses secara
bersama-sama yang dapat membawa proses
itu ke bahaya race condition.

Biasanya sebuah proses sibuk melakukan
perhitungan internal dan hal-hal lainnya tanpa
ada bahaya yang menuju ke race condition pada
sebagian besar waktu.
Prasyarat Solusi Critical Section
Tiga Syarat untuk Solusi dari
masalah critical section :

Mutual Exclusion.

Terjadi kemajuan (progress).

Ada batas waktu tunggu (bounded waiting).
Mutual Exclusion

Mutual Exclusion merupakan sebuah jalan yang
menjamin jika sebuah proses sedang
menggunakan variabel atau berkas yang
digunakan bersama-sama, proses lain akan
dikeluarkan dari pekerjaan yang sama.
Mutual Exclusion
Terjadi kemajuan (progress)

Jika tidak ada proses yang sedang menjalankan
critical section-nya dan jika terdapat lebih dari
satu proses lain yang ingin masuk ke critical
section,

maka hanya proses-proses yang tidak sedang
menjalankan remainder section-nya yang
dapat berpartisipasi dalam memutuskan siapa
yang berikutnya yang akan masuk ke critical
section.
Ada batas waktu tunggu
(bounded waiting)

Jika seandainya ada proses yang sedang
menjalankan critical section, maka terdapat
batasan waktu berapa lama suatu proses lain
harus menunggu giliran untuk mengakses
critical section.
Critical Section dalam Kernel

Interupsi

Page Fault.

Kernel code memanggil fungsi penjadwalan
sendiri
Interupsi

adalah suatu masalah bila mengandung critical
section-nya sendiri. Timer interrupt tidak secara
langsung menyebabkan terjadinya penjadwalan
ulang suatu proses; hanya meminta suatu jadwal
untuk dilakukan kemudian, jadi kedatangan
suatu interupsi tidak mempengaruhi urutan
eksekusi dari kernel code.
Page Fault

adalah suatu masalah yang potensial; jika
sebuah kernel routine mencoba untuk membaca
atau menulis ke user memory, akan
menyebabkan terjadinya page fault yang
membutuhkan M/K, dan proses yang berjalan
akan di tunda sampai M/K selesai.
Kernel code memanggil fungsi
penjadwalan sendiri

setiap waktu banyak proses yang berjalan dalam
kernel mode, akibatnya sangat mungkin untuk
terjadi race condition.

Ada 2 kemungkinan
 Preemptive kernel
 Non preemptive kernel
Solusi Critical Section

Algoritma I

Algoritma II

Algoritma III

Algoritma Tukang Roti
Algoritma I

Algoritma I mencoba mengatasi masalah critical
section untuk dua proses. Algoritma ini
menerapkan sistem bergilir kepada kedua
proses yang ingin mengeksekusi critical section,
sehingga kedua proses tersebut harus
bergantian menggunakan critical section.
Algoritma I
Algoritma II

Algoritma II juga mencoba memecahkan
masalah critical section untuk dua proses.

Algoritma ini mengantisipasi masalah yang
muncul pada algoritma I dengan mengubah
penggunaan variabel turn dengan variabel flag.

Variabel flag menyimpan kondisi proses mana
yang boleh masuk critical section.
Algoritma II
Algoritma III

Algoritma III ditemukan oleh G.L. Petterson pada
tahun 1981 dan dikenal juga sebagai Algoritma
Petterson.

Petterson menemukan cara yang sederhana
untuk mengatur proses agar memenuhi mutual
exclusion.

Algoritma ini adalah solusi untuk memecahkan
masalah critical section pada dua proses.
Algoritma III
Algoritma Tukang Roti

Algoritma Tukang Roti adalah solusi untuk
masalah critical section pada n-buah proses.

Algoritma ini juga dikenal sebagai Lamport's
Baker Algorithm.

Ide algoritma ini adalah dengan menggunakan
prinsip penjadwalan seperti yang ada di tempat
penjualan roti.
• Cari jurnal Deadlock
• Cari jurnal Lamport's Baker Algorithm
Algoritma Tukang Roti

Prinsip algoritma ini untuk menentukan proses
yang boleh mengakses critical section sama
seperti ilustrasi tukang roti diatas.

Proses diibaratkan pelanggan yang jumlahnya n-
buah dan tiap proses yang membutuhkan critical
section diberi nomor yang menentukan proses
mana yang diperbolehkan untuk masuk kedalam
critical section.
Algoritma Tukang Roti

Nomor yang diberikan adalah sekuensial atau
terurut, tapi seperti juga nomor urut yang ada di
tukang roti, tidak ada jaminan bahwa tiap proses
mendapat nomor urut yang berbeda.

Untuk mengatasinya digunakan parameter lain
yaitu proses ID.
Algoritma Tukang Roti

Dikarenakan tiap proses memiliki proses ID yang
unik dan terurut maka dapat dipastikan hanya
satu proses yang dapat mengakses critical
section dalam satu waktu.

Proses yang dapat mengakses critical section
terlebih dahulu adalah proses yang memiliki
nomor urut paling kecil.
Perangkat Sinkronisasi

TestAndSet()

Semafor

Monitor
TestAndSet()

Sebagian besar sistem komputer saat ini
menyediakan instruksi-instruksi perangkat keras
khusus yang mengizinkan kita untuk menguji
dan memodifikasi nilai dari sebuah variabel.
Instruksi ini disebut instruksi TestAndSet().

Instruksi ini bersifat atomik, yaitu instruksi yang
tidak dapat diinterupsi. Kita dapat menggunakan
instruksi khusus ini untuk memecahkan masalah
critical section yang sederhana.
Semafor

adalah sebuah variabel bertipe integer yang
selain saat inisialisasi, hanya dapat diakses
melalui dua operasi standar, yaitu increment dan
decrement.

Sistem sinyal yang digunakan untuk
berkomunikasi secara visual

Semafor digunakan untuk menyelesaikan
masalah sinkronisasi secara umum.
Berdasarkan jenisnya, semafor hanya bisa
memiliki nilai 1 atau 0, atau lebih dari sama
dengan 0. Konsep semafor pertama kali diajukan
idenya oleh Edsger Dijkstra pada tahun 1967.
2 Jenis Semafor

Binary semaphore. Semafor ini hanya memiliki
nilai 1 atau 0. Sering juga disebut sebagai
semafor primitif

Counting semaphore. Semafor ini memiliki nilai
0, 1, serta integer lainnya. Banyak sistem
operasi yang tidak secara langsung
mengimplementasikan semafor ini, tetapi dengan
memanfaatkan binary semaphore
Fungsi Semafor

Mutual Exclusion.

Resource Controller.

Sinkronisasi Antar-Proses.
Monitor

Monitor adalah suatu tipe data abstrak yang
dapat mengatur aktivitas serta penggunaan
resource oleh beberapa thread.

Ide monitor pertama kali diperkenalkan oleh
C.A.R Hoare dan Per Brinch-Hansen pada awal
1970-an.
Monitor

Monitor terdiri atas data-data private dengan
fungsi-fungsi public yang dapat mengakses data-
data tersebut.

Method-method dalam suatu monitor sudah
dirancang sedemikian rupa agar hanya ada satu
buah method yang dapat bekerja pada suatu
saat.

Hal ini bertujuan untuk menjaga agar semua
operasi dalam monitor bersifat mutual exclusion.
Monitor

Monitor dikembangkan karena penggunaan
semafor yang kurang praktis.

Hal itu disebabkan kesalahan pada penggunaan
semafor tidak dapat dideteksi oleh compiler.
Keuntungan menggunakan
Monitor

Kompilator pada bahasa pemrograman yang
telah mengimplementasikan monitor akan
memastikan bahwa resource yang dapat diakses
oleh beberapa thread dilindungi oleh monitor,
sehingga prinsip mutual exclusion tetap terjaga.

Kompilator bisa memeriksa kemungkinan
adanya deadlock

Anda mungkin juga menyukai