Anda di halaman 1dari 10

MODUL PERKULIAHAN

Sistem Operasi

Sinkronisasi

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

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.

Thread atau Proses sinkronisasi

Thread sinkronisasi atau serialisasi adalah penerapan mekanisme tertentu untuk


memastikan bahwa dua thread atau proses yang berjalan secara bersamaan tidak mengeksekusi
bagian yang sama dari sebuah program pada saat yang sama, hal ini disebut mutual exclusion. Jika
satu thread telah mulai mengerjakan bagian dari sebuah program secara serial, yang disebut critical
section, maka setiap thread lain yang mencoba untuk mengeksekusi bagian yang sama ini harus
menunggu sampai thread pertama selesai. Jika langkah-langkah sinkronisasi tersebut tidak diambil,
dapat mengakibatkan kondisi ‘perlombaan’ di mana nilai-nilai variabel menjadi tidak tidak terduga
dan tergantung pada timing dari thread atau proses konteks switch.

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.

2018 Nama Mata Kuliah


2 Dwi Ade Handayani Capah, S.Kom, M.Kom
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
 Priority inversion

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:

function test-and-set (var target; boolean) boolean;

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.

 JVM iyalah mengimplementasikan monitor. monitor JVM dapat digunakan menggunakan


keyword synchronized

Alasan perlu dilakukan sinkronisasi :

Sinkronisasi diperlukan untuk menghindari terjadinya ketidak konsistenan data akibat


adanya akses data secara konkuren. Untuk menjaga kekonsistenan data tersebut, diperlukan adanya
suatu mekanisme untuk memastikan urutan pengaksesan suatu data yang saling bekerjasama
sehingga terjadi sinkronisasi

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.

2018 Nama Mata Kuliah


3 Dwi Ade Handayani Capah, S.Kom, M.Kom
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Proses-proses yang melakukan akses secara konkuren pada data yang digunakan bersama-
sama menyebabkan data tidak konsisten (inconsistence). Agar data konsisten dibutuhkan
mekanisme untuk menjamin eksekusi yang berurutan pada proses-proses yang bekerja sama.

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.

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.

Bounded-Buffer

Pada model shared memory untuk penyelesaian permasalahan bounded-buffer paling


banyak menyimpan n – 1 item pada buffer pada saat yang bersamaan. Untuk mendapatkan solusi
dimana semua N buffer digunakan bukan masalah yang sederhana.

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;

2018 Nama Mata Kuliah


4 Dwi Ade Handayani Capah, S.Kom, M.Kom
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
while (1)

while (counter == BUFFER_SIZE); { …do nothing …}

buffer[in] = nextProduced;

in = (in + 1) % BUFFER_SIZE;

counter++;

Proses yang dilakukan oleh konsumen akan menurunkan satu nilai variabel counter :

item nextConsumed;

while (1)

while (counter == 0); { …do nothing …}

nextConsumed = buffer[out] ;

out= (out+1) % BUFFER_SIZE;

counter--;

Perhatikan baris-baris yang memuat perintah di bawah ini:

counter++;

counter--;

Perintah-perintah tersebut harus dilakukan secara atomik.

Atomik

Adalah proses yang harus diselesaikan seluruh pernyataannya secara langsung tanpa adanya
interupsi dari proses lain.

Pernyataan counter++ bisa diimplementasikan dalam bahasa mesin sebagai berikut :

register1 = counter

register1 = register1 + 1

2018 Nama Mata Kuliah


5 Dwi Ade Handayani Capah, S.Kom, M.Kom
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
counter = register1

™Perintah counter-- bisa diimplementasikan dalam bahasa mesin sebagai berikut:

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 :

producer: register1 = counter (register1 = 4)

producer: register1 = register1 + 1 (register1 = 5)

consumer: register2 = counter (register2 = 4)

consumer: register2 = register2 – 1 (register2 = 3)

producer: counter = register1 (counter = 5)

consumer: counter = register2 (counter = 3)

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.

Masalah-masalah yang dapat timbul bila sinkronisasi tidak diterapkan

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.

2018 Nama Mata Kuliah


6 Dwi Ade Handayani Capah, S.Kom, M.Kom
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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.

2. Critical Section

Permasalahan 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.

Solusi Critical Section

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.

3. Bounded Waiting (Batas waktu tunggu)

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.

Dua Jenis Solusi Masalah Critical Section

1. Solusi perangkat lunak

2018 Nama Mata Kuliah


7 Dwi Ade Handayani Capah, S.Kom, M.Kom
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Dengan menggunakan algoritma-algoritma yang nilai kebenarannya tidak tergantung pada
asumsi-asumsi lain, selain bahwa setiap proses berjalan pada kecepatan yang bukannol.

2. Solusi perangkat keras

Tergantung pada beberapa instruksi mesin tertentu, misalnya dengan menonaktifkan


interupsi atau dengan mengunci suatu variabel tertentu.

Critical Section dalam kernel

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.

Kernel code memanggil fungsi penjadwalan sendiri.

Critical Section mempunyai beberapa kode

 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.

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

 Remainder Section : kode istirahat setelah masuk ke critical section

4 kondisi agar menghasilkan solusi yang baik:

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

2. Tidak ada asumsi mengenai kecepatan atau jumlah cpu.

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

2018 Nama Mata Kuliah


8 Dwi Ade Handayani Capah, S.Kom, M.Kom
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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.

 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.

2018 Nama Mata Kuliah


9 Dwi Ade Handayani Capah, S.Kom, M.Kom
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Daftar Pustaka

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.

2018 Nama Mata Kuliah


10 Dwi Ade Handayani Capah, S.Kom, M.Kom
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Anda mungkin juga menyukai