Anda di halaman 1dari 31

SISTEM OPERASI

Lubi Arsada, S.ST, MMSI


Prodi Informatika
[TI612062] - Pertemuan 12
Kontak Dosen:
0812-9979-4178
lubi@uici.ac.id

UNIVERSITAS INSAN CITA INDONESIA

Tumbuh Bersama UICI Tumbuh Bersama UICI


CRITICAL SECTION &
SINKRONISASI 2

Tumbuh Bersama UICI Tumbuh Bersama UICI


Tumbuh Bersama UICI
Review
Pada pembahasan sebelumnya..
• Algoritma turn

• Algoritma flag

• Algoritma peterson’s (turn & flag)

Algoritma diatas dapat menjadi solusi atas berbagai


masalah seperti : mutual exclusion dan progres, akan
tetapi tidak untuk busy waiting.
Semaphore
Semaphores
• Semaphore dalam OS adalah integer yang
digunakan sebagai signal diantara beberapa proses
• Ada 3 operasi dalam semaphore yaitu
inisialisasi
increment (up)
decrement (down).
• Up berlaku pada saat unblocking process.
• Down berlaku pada saat blocking process
Dua Jenis Semaphore

1. Binary semaphore – nilai integer S dapat mempunyai jangkauan 0


atau 1
• Lebih sederhana untuk diimplementasikan

2. Counting 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


Critical Section dengan Semaphore

• Shared data:
semaphore S; //diinisialisasi S = 1
• Process Pi:
do {
wait(S);
critical section
signal(S);
remainder section
} while (1);
1. Binary semaphore
• Semaphore mutex adalah binary semaphore dengan
nilai awal 1
• Thread manapun yang mengeksekusi down terlebih
dahulu akan terus jalan
• sedangkan yang datang kemudian akan menunggu
sampai up dieksekusi.
1. Binary semaphore (cont..)
• Operasi down adalah atomic, dan tidak dapat
diinterupsi sebelum diselesaikan.
• Operasi ini menurunkan nilai semaphore, jika
nilainya menjadi non positif (<=0) maka critical
section diblok untuk proses lainnya
• Operasi up adalah menaikkan nilai semaphore.
Fungsi Semaphores
Mutual exclusion :
• Thread yang akan memasuki critical section harus
memanggil fungsi down (nilai semaphore <=0)
• jika tidak ada thread yang lain dalam critical section
maka thread menggunakan critical section
• jika ada maka thread menunggu

• kemudian setelah selesai thread memanggil fungsi


up (nilai semaphore > 0)
Fungsi Semaphores
Mutual exclusion (next..):
Thread A Thread B
Count = Count +1 Count = Count +1

Thread A Thread B
Down (mutex) Down (mutex)
Count = Count + 1 Count = Count +1
Up (mutex) Up (mutex)
2. Counting semaphore
Resource Controller
• Semaphore menyimpan banyaknya resource yang
tersedia
• saat thread ingin menggunakan resource maka thread
menggunakan fungsi down
• jika resource tersedia maka thread dapat langsung
menggunakannya
• jika masih digunakan, maka resourse menunggu
sampai fungsi up dieksekusi.
Fungsi Semaphores
Resource Controller (next..):
Thread A Thread B Thread C
Critical Section Critical Section Critical Section

Thread A Thread B Thread C


Down (multiplex) Down (multiplex) Down (multiplex)
Critical Section Critical Section Critical Section
Up (multiplex) Up (multiplex) Up (multiplex)
Fungsi Semaphores
• Semaphore multiplex adalah counting semaphore
dengan nilai awal sesuai kapasitas resource.
Critical Section dengan Semaphore

• Shared data:
semaphore S; //diinisialisasi S = 5
• Process Pi:
do {
wait(S);
critical section
signal(S);
remainder section
} while (1);
Keuntungan Semaphores
• dari segi programming, penanganan masalah
sinkronisasi dengan semaphore umumnya rapi dan
teratur, sehingga mudah untuk dibuktikan
kebenarannya.
• semaphore diimplementasikan dalam hard code
sehingga penggunaannya bersifat portabel.
Implementasi Semaphore
• Untuk menghindari busy waiting, process yang menunggu
akses critical-section harus dihentikan sementara.

• Ada dua operasi sederhana yang terlibat :

• Sleep (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.
Sleep and Wake up
• Solusi pertama adalah sleep dan wake up.
• Sleep adalah system call yang mengakibatkan
dihentikan sementara sebuah proses, sampai proses
lain membangunkan.
• Wake up adalah system call yang mengakibatkan
sebuah proses terbangun.
Permasalahan Klasik pada Sinkronisasi
Permasalahan Klasik pada Sinkronisasi
• Ada beberapa permasalahan klasik dalam sinkronisasi
• Permasalahan Bounded-Buffer
• Permasalahan Readers and Writers
• Permasalahan Dining-Philosophers
Permasalahan Bounded-Buffer
• N buffers, each can hold one item
• Shared data
semaphore full, empty, mutex;
• Inisialisasi:
full = 0, empty = n, mutex = 1
Permasalahan Readers-Writers

• Sebuah database di-share untuk beberapa proses yang konkuren


• Readers : hanya membaca database
• Writers : menulis
• Masalah
• Ijinkan banyak reader untuk membaca dalam waktu bersamaan
• Ijinkan hanya satu writer mengakses dalam satu waktu
• Shared data
• Data set
• Semaphore mutex initialized to 1
• Semaphore wrt initialized to 1
• Integer readcount initialized to 0
Permasalahan Readers-Writers

• 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.
Permasalahan Readers-Writers

• 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.
Permasalahan Readers-Writers

• Solusi readels and writers problem


• 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 Samayaitu tidak ada prioritas khusus yang
diberikan kepada kedua jenis proses.
Permasalahan Dining-Philosophers

• Filosofer menghabiskan hidupnya


hanya untuk makan dan berpikir
• Tidak ada interaksi dengan
sebelahnya
• Setiap filosofer mencoba
mengambil 2 chopstick untuk
makan nasi dari mangkok
• Butuh 2 chopstick untuk makan
• Shared data
• Bowl of rice (data set)
• Semaphore chopstick [5] initialized to
1
Sinkronisasi pada Beberapa
OS
Sinkronisasi pada Linux

• Linux:
• Prior to kernel Version 2.6, disables interrupts to implement short critical
sections
• Version 2.6 and later, fully preemptive
• Linux provides:
• semaphores
• spinlocks
• reader-writer versions of both
• On single-cpu system, spinlocks replaced by enabling and disabling
kernel preemption
Sinkronisasi pada Solaris

• Mengimplementasikan beberapa lock kunci untuk mendukung multitasking,


multithreading (termasuk thread real-time), dan multiprocessing.

• Menggunakan adaptive mutexes untuk efisiensi ketika melindungi data dari


segmen kode pendek

• Menggunakan condition variables dan readers-writers locks ketika segmen


kode panjang memerlukan akses ke data.

• Menggunakan turnstiles untuk memesan daftar thread menunggu untuk


memperoleh adaptive mutexes atau readers-writers locks
Sinkronisasi Windows 2000

• Menggunakan interrupt mask untuk melindungi akses ke sumber daya


global pada sistem prosesor tunggal.

• Menggunakan spinlocks pada sistem multiprosessor

• Juga menyediakan dispatcher object yang dapat bertindak sebagai mutex


dan semaphore.

• Dispatcher object juga dapat menyediakan event. Event bertindak seperti


sebuah variabel kondisi.

Anda mungkin juga menyukai