Sistem Operasi
Sinkronisasi
06
Ilmu Komputer Informatika 87030 Dwi Ade Handayani Capah, S.Kom, M.Kom
Abstract Kompetensi
Sinkronisasi, Masalah critical section, Mahasiswa memahami dan dapat
mutual excluton menjelaskan konsep konkurensi,
Interaksi proses, sinkronisasi
Pembahasan
Sinkronisasi merupakan suatu proses secara bersama sama dan saling berbagi data bersama
dapat mengakibatkan race condition atau inkosistensi data. Sinkornisasi di perlukan untuk
menghindari terjadinya ketidak konsistenan data akibat adanya akses secara konkuren. Proses-
Proses tersebut disebut konkukuren jika Proses itu ada dan berjalan pada waktu yang bersamaan.
Sinkronisasi mengacu pada salah satu dari dua proses yang berbeda tetapi terkait:
Sinkronisasi proses
Sinkronisasi data.
Sinkronisasi proses mengacu pada gagasan bahwa banyak proses yang nantinya, pada titik tertentu,
akan bergabung atau berjabat tangan, dalam rangka untuk mencapai kesepakatan atau komitmen
untuk suatu urutan tindakan tertentu.
Sinkronisasi data mengacu pada gagasan menjaga beberapa salinan dari dataset dalam koherensi
dengan satu sama lain, atau untuk menjaga integritas data. Proses sinkronisasi primitif biasanya
digunakan untuk mengimplementasikan sinkronisasi data dan proses ini dilakukan oleh fungsi lain
diluar sistem utama dari sistem operasi.
Selain menyediakan mutual exclusion, sinkronisasi juga harus waspada terhadap hal-hal berikut:
Deadlock
Hal ini terjadi ketika dua atau lebih proses atau thread menunggu program yang terkunci untuk
memasuki critical section, dimana program tersebut dipegang oleh proses lain. Hal ini
menyebabkan proses-proses yang menunggu tersebut menunggu tanpa batas dan proses-proses
tersebut tidak mendapatkan kemajuan lebih lanjut.
Starvation
Dalam beberapa kasus, proses atau thread bisa memiliki waktu tunggu tak terbatas untuk
memperoleh giliran pada program yang terkunci dan tidak pernah membuat kemajuan apapun.
Dalam sistem yang memiliki fasilitas memberikan prioritas untuk proses dan thread, tugas
dengan prioritas menengah dapat mendahului tugas prioritas yang lebih tinggi ketika
menggunakan sinkronisasi sehingga melanggar aturan sistem. Hal ini terjadi, terutama pada
sistem real time yang dapat menyebabkan tenggat waktu terlewat.
Sinkronisasi digunakan untuk mengontrol akses untuk menentukan tahapan baik dalam sistem
multiprocessing skala kecil seperti dalam lingkungan multithreaded ataupun dalam komputer
multiprosesor, dan dalam komputer terdistribusi yang terdiri dari ribuan unit komputer - di bidang
perbankan dan sistem database, di server web, dan sebagainya.
Perangkat Sinkronisasi
Intruksi Test-and-set adalah Intuksi atomik yang dapat dihunakan untuk menangani masalah
Critical Section. Test send set dapat dianalogikan dengan kode dibawah ini:
begin
test-and-set ; = target:
target : = true ;
end
Semafor merupakan sebuah variabel yang hanya dapat di akses oleh dua buah operasi standar
yaitu increment dan decrement.
Monitor digunakan untuk menangani masalah yang akan muncul karna pemakai semafor.
Dengan kata lain proses-proses yang konkuren adalah proses-proses (lebih dari satu) berada
pada saat yang sama. Proses-proses ini dapat sepenuhnya tak bergantung dengan yang lainnya, tapi
dapat juga saling berinteraksi. Proses-proses yang berinteraksi memerlukan sinkronisasi agar
terkendali dengan baik.
Manfaat Sinkronisasi
Sebagai penyimpanan data sementara dan non sementara agar dapat mempermudah pekerjaan.
Tujuan Sinkronisasi
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.
Ada tiga hal yang selalu menjadi masalah pada proses sinkronisasi:
Bounded-Buffer
Misalnya : dilakukan modifikasi kode producer consumer dengan menambahkan variabel counter
yang diinisialisasi 0 dan dinaikkan setiap satu item baru ditambahkan ke buffer.
Definisi data yang digunakan bersama-sama (shared data) adalah sebagai berikut :
#define BUFFER_SIZE 10
typedef struct {
...
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
int counter = 0;
Proses yang dilakukan oleh produsen dengan menambahkan satu nilai variabel counter :
item nextProduced;
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
counter++;
Proses yang dilakukan oleh konsumen akan menurunkan satu nilai variabel counter :
item nextConsumed;
while (1)
nextConsumed = buffer[out] ;
counter--;
counter++;
counter--;
Atomik
Adalah proses yang harus diselesaikan seluruh pernyataannya secara langsung tanpa adanya
interupsi dari proses lain.
register1 = counter
register1 = register1 + 1
register2 = counter
register2 = register2 –1
counter = register2
Jika kedua perintah tersebut berusaha mengakses nilai counter secara konkuren, maka dapat terjadi
kesalahan pada nilai counter karena sifat bahasa mesin yang menggunakan register untuk
mengupdate nilai counter.
Kesalahan nilai akhir counter dapat terjadi, tergantung dari penjadwalan yang dilakukan terhadap
proses yang dilakukan oleh produsen dan konsumen. Dengan kata lain, masalah tersebut belum
tentu terjadi, tapi dapat terjadi.
Apabila baik producer dan consumer mencoba mengubah buffer secara konkuren, pernyataan dalam
bahasa mesin diatas akan dilakukan secara terpisah.
Misalnya nilai counter adalah 4. Bila dilakukan proses produsen dan konsumen secara konkuren :
Nilai counter kemungkinan bernilai 3 atau 5, sedangkan hasil yang benar seharusnya 4, hal ini yang
dimaksud dengan data yang tidak konsisten.
Situasi dimana beberapa proses mengakses dan memanipulasi data yang digunakan bersama-sama
secara konkuren sehingga terjadilah suatu situasi yang biasa disebut race condition.
1. Race Condition
Adalah situasi dimana beberapa proses mengakses dan memanipulasi suatu data secara
konkuren. Nilai akhir dari data tersebut tergantung dari proses mana yang terakhir selesai
dieksekusi. Untuk menghindari terjadinya situasi tersebut, semua proses yang dapat mengakses
suatu data tertentu harus disinkronisasi.
2. Critical Section
Critical Section merupakan suatu kode segmen dari proses-proses yang memungkinkan
terjadinya Race Condition. Suatu system terdiri dari banyak proses dimana semuanya berlomba-
lomba pada saat yang sama untuk menggunakan data yang sama.
Masing-masing proses memiliki segmen kode yang mengakses data yang digunakan secara
bersama-sama. Segmen kode tersebut disebut critical section, dimana proses memungkinkan
untuk mengubah variabel umum, mengubah sebuah tabel, menulis file dan lain sebagainya.
Contohnya :
Menjamin bahwa jika suatu proses sedang menjalankan critical section, maka proses lain tidak
boleh masuk ke dalam critical section tersebut.
1. Mutual Exclusion
Tidak ada dua proses yang berada di critical section pada saat yang bersamaan.
2. Progress
Jika tidak ada proses yang sedang berada di critical section, maka proses lain yang ingin
menjalankan critical section dapat masuk kedalam critical section tersebut.
Terdapat batasan jumlah waktu yang diijinkan oleh proses lain untuk memasuki critical
section setelah sebuah proses membuat permintaan untuk memasuki critical section-nya
dan sebelum permintaan dikabulkan.
1. Interupsi
Interupsi merupakan pusat pada sistem operasi, yang menyediakan cara efisien bagi sistem
operasi untuk berinteraksi terhadap lingkungannya. Pemrograman berbasis interupsi secara
langsung didukung hampir dengan seluruh CPU modern.
2. Page Fault
Page fault merupakan exception untuk permintaan alokasi page ke memori. Dalam konteks
memori maya, page fault sering disingkat fault.
Entry Section : kode yang digunakan untuk masuk ke dalam critical section
Critical Section : Kode di mana hanya ada satu proses yang dapat dieksekusi pada satu
waktu.
1. Tidak ada dua proses secara bersamaan masuk ke dalam citical section.
3. Tidak ada proses yang berjalan di luar critical secion yang dapat mengeblok proses lain.
4. Tidak ada proses yang menunggu selamamya untuk masuk critical section.
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
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.
Wait: Ketika prosedur monitor tidak dapat berkanjut (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.
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.
1. William Stalling. 2001. Operating System: Interal and Design Principles. Fourth Edition. Edisi
Keempat. Prentice-Hall International. New Jersey
2. Andrew S Tanenbaum dan Albert S Woodhull. 1997. Opertaing system Design anf
Implementation. Secont Edition. Prentice-Hall.
3. Bambang Hariyanto. 1997. Sistem Operasi. Buku Teks Ilmu Komputer. Edisi Kedua.
Informatiak. Bandung
4. Nurliyani, 2004. Handout Sistem Operasi Komputer. Gunadarma.
5. Sri Kusumadewi. 2000. Sistem Operasi. Edisi Kedua. Graha Ilmu. Yogyakarta.
6. Kumpulan Modul Dosen Universitas Mercu Buana
7. Abraham silberschatz, Peter Galvin, dan Greg Gagne. 2002. Applied Operating System. Sixth
Edition. John Wiley & Sons.