Anda di halaman 1dari 33

Concurrency 1:

Mutual Exclusion
dan
Sinkronisasi
(Pertemuan ke-9)

Pokok Bahasan
Pokok Bahasan:
Sinkronisasi dan Mutual Exclusion
Sub Pokok Bahasan:
Prinsip semaphore biner
Pengendalian urutan eksekusi proses dengan
semaphore
Kasus Producer-Consumer dengan semaphore
TIU:
Mahasiswa dapat memahami konsep sinkronisasi
dan mutual exclusion
TIK:
Mahasiswa dapat menjelaskan prinsip semaphore
biner
Mahasiswa dapat menjelaskan pengendalian urutan
eksekusi proses dengan semaphore
Mahasiswa dapat menjelaskan solusi
Sistem
Operasi/20110926 #2
kasus

Semaphore Biner

(1)

Ketentuan:
Inisialisasi variabel semaphore hanya bernilai 0
atau 1
Prosedur semWaitB:
Akan memeriksa nilai variabel semaphore
Jika nilai variabel = 1 diubah menjadi 0
Jika nilai variabel = 0 proses tersebut di-blok dan
dimasukkan ke dalam antrian

Prosedur semSignalB:
Akan memeriksa jumlah proses dalam antrian dengan
fungsi is_empty()
Jika tidak ada proses dalam antrian nilai variabel
menjadi 1
Jika ada proses dalam antrian:
Sebuah proses dipindahkan dari antrian ke
status
ready
Sistem Operasi/20100930

#3

Semaphore Biner

(2)

Definisi
semaphore
biner

Sistem Operasi/20100930

#4

Strong and weak semaphore

(1)

Strong semaphore:
Adalah semaphore yang menentukan
urutan proses yang akan dikeluarkan
dari antrian
Dapat mencegah terjadinya

starvation
Model semaphore yang ada di OS

Weak semaphore:
Adalah semaphore yang

tidak

menentukan urutan proses yang


Sistem Operasi/20100930

#5

Strong and weak semaphore


Contoh
strong
semaphore
Proses A, B,
dan C
menggunakan
semWait tanpa
semSignal
Proses D
menggunakan
semSignal
tanpa semWait
pemegang
kunci

(2)

Nilai sebelum A
dieksekusi

Sistem Operasi/20100930

#6

Strong and weak semaphore

(3)

Sistem Operasi/20100930

#7

Strong and weak semaphore

(4)

Keterangan:
1. Mula-mula nilai s = 1, proses A, B, D, dan C
berada dalam status ready; proses A
dieksekusi, nilai s berkurang menjadi 0
2. Proses A selesai masuk status ready;
proses B dieksekusi s menjadi -1 proses
B di-blok masuk antrian
3. Proses D dieksekusi
4. semSignal s menjadi 0 proses B
dibebaskan dari antrian; proses D selesai
masuk status ready lagi
Urutan eksekusi: A, B, D

Sistem Operasi/20100930

#8

Strong and weak semaphore

(5)

Keterangan: (contd)

5. Proses C dieksekusi s menjadi -1


C di-blok masuk antrian; hal
yang sama terjadi pula untuk proses
A dan B di-blok masuk antrian
s menjadi -3
6. Proses D dieksekusi lagi
7. 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,
Sistem Operasi/20100930

#9

Implementasi Mutual Exclusion


dengan Semaphore (1)
Pemanfaatan
semaphore
primitif
dalam
mutex

Sistem Operasi/20100930

#10

Implementasi Mutual Exclusion


dengan Semaphore (2)
Contoh
urut-urutan
eksekusi 3
buah
proses
dengan
semaphore

Sistem Operasi/20100930

#11

Contoh Kasus 1:

Producer Consumer (PC)


Infinite Buffer (1)

Deskripsi masalah:
Terdapat satu atau lebih producer yang
menghasilkan data (record, karakter,
dsb) dan disimpan di buffer
Terdapat satu consumer yang
mengambil data dari buffer
Masalahnya adalah bagaimana caranya
supaya dalam satu saat hanya terdapat
satu produser atau satu consumer saja
yang dapat mengakses buffer?

Sistem Operasi/20100930

#12

Contoh Kasus 1:

Producer Consumer
Infinite Buffer (2)
Fungsi producer dan consumer:
producer:
while (true) {
/* produce item v */
b[in] = v;
in++;
}

consumer:
while (true) {
while (in <= out)
/*do nothing */;
w = b[out];
out++;
/* consume item w */
}

Sistem Operasi/20100930

#13

Contoh Kasus 1:

Producer Consumer
Infinite Buffer (3)
Struktur buffer dengan kapasitas tidak
terbatas (infinite)

Consumer tidak boleh mengakses buffer


yang kosong
Sistem Operasi/20100930

#14

Contoh Kasus 1:

Producer
Consumer Infinite Buffer
(4)

Solusi I:
Implementasi dengan

semaphore biner
Supaya lebih
sederhana variabel in
dan out diganti
dengan n yang
menunjukkan jumlah
data yang ada di
buffer, dimana n =
in-out
semSignalB(delay)
digunakan untuk
mencegah consumer

Sistem Operasi/20100930

#15

Contoh Kasus 1:

Producer
Consumer Infinite Buffer

(5)

Urutan
eksekusi
normal
(PCPC)
OK

Sistem Operasi/20100930

#16

Contoh Kasus 1:

Producer
Consumer Infinite Buffer

(6)

Urutan
eksekusi
(PPPCCC)
OK

Sistem Operasi/20100930

#17

Contoh Kasus 1:

Producer
Consumer Infinite Buffer
(7)

Urutan eksekusi
consumer
disela oleh
producer
(PCPCCC)
not OK
Jika if(n==0)
dipindah ke
critical section
belum
menyelesaikan
masalah
masih dapat
terjadi deadlock
Sistem Operasi/20100930

#18

Contoh Kasus 1:

Producer
Consumer Infinite Buffer

(8)

Penyelesaian:
Tambahkan
variabel lokal
pada program
comsumer

Sistem Operasi/20100930

#19

Contoh Kasus 1:

Producer

Consumer
Infinite Buffer

(9)

Pembuktian
urutan
PCPCC

OK
Apakah sudah
dapat
mencegah
terjadinya
kesalahan ??
Buktikan!!

Sistem Operasi/20100930

#20

Contoh Kasus 1:

Producer
Consumer Infinite Buffer
(10)

Solusi II:
Implementasi
dengan
counting
semaphore
Lebih
sederhana,
lebih jelas

Sistem Operasi/20100930

#21

Contoh Kasus 1:

Producer
Consumer Infinite Buffer
(11)

Urutan
eksekusi
normal
(PCPCC)
OK

Sistem Operasi/20100930

#22

Contoh Kasus 1:

Producer
Consumer Infinite Buffer
(12)

Apa yang
terjadi jika
terjadi salah
ketik
program,
sehingga
urutan
semSignal
pada
producer
terbalik ???
masih OK
Sistem Operasi/20100930

#23

Contoh Kasus 1:

Producer
Consumer Infinite Buffer
(13)

Apa yang
terjadi jika
terjadi salah
ketik program,
sehingga
urutan
semWait pada
consumer
terbalik ???

deadlock

Sistem Operasi/20100930

#24

Contoh Kasus 2: Producer Consumer


Finite Buffer (1)
Finite buffer = bounded buffer

Kapasitas buffer terbatas lebih sesuai


dengan realitas

Buffer merupakan circular storage perlu


pointer yang menunjukkan posisi buffer
modulo kapasitas buffer
Kapan kondisi blok terjadi ?
Producer: buffer telah penuh
Solusi: Consumer mengambil data dari buffer

Consumer: mengambil data dari buffer


yang kosong
Solusi: Producer menaruh data ke buffer
Sistem Operasi/20100930

#25

Contoh Kasus 2: Producer Consumer


Finite Buffer (2)
Struktur buffer dengan kapasitas terbatas
(finite)
Buffer baru memuat 3 data:

Buffer hampir penuh (tersisa 2 tempat)

Sistem Operasi/20100930

#26

Contoh Kasus 2: Producer Consumer


Finite Buffer (3)
Fungsi producer dan consumer:
producer:
while (true) {
/* produce item v */
while ((in+1)%n==out)
/* do nothing */;
b[in] = v;
in = (in+1) % n;
}

consumer:
while (true) {
while (in == out)
/* do nothing */;
w = b[out];
out = (out + 1) % n;
/* consume item w */
}

Variabel in dan out diinisialisasi dengan 0


Sistem Operasi/20100930

#27

Contoh Kasus 2: Producer


Consumer Finite Buffer (4)

Solusi:
Implementas
i dengan

counting
semaphor
e
Semaphore e
digunakan
untuk
menjaga
jumlah ruang
buffer yang

Sistem Operasi/20100930

#28

Contoh Kasus 2:
Producer Consumer
Finite Buffer (5)

Urutan
eksekusi
PCPCCPPPC

OK

Sistem Operasi/20100930

#29

Implementasi testset
Sebagai Semaphore Primitif

+ Lebih baik
daripada
pendekatan
software
overhead
berkurang
-- Dapat terjadi
busy waiting,
tetapi karena
eksekusi
semaphore

semWait(s)
{

while (!testset(s.flag))

/* do nothing */;

s.count--;

if (s.count < 0)

place this process in s.queue;

block this process (must also

set s.flag to 0)

s.flag = 0;
}
semSignal(s)
{

while (!testset(s.flag))

/* do nothing */;

s.count++;

if (s.count <= 0)

remove a process P from


s.queue;

place process P on ready list

s.flag = 0;
}

Sistem Operasi/20100930

#30

Implementasi interrupt
Sebagai Semaphore Primitif

Digunakan pada
single processor
+ Lebih baik
daripada
pendekatan
software
overhead
berkurang
-- Dapat terjadi
busy waiting,
tetapi karena
eksekusi

semWait(s)
{
inhibit interrupts;
s.count--;
if (s.count < 0)
{
place this process in s.queue;
block this process and allow
interrupts
}
else
allow interrupts;
}

semSignal(s)
{
inhibit interrupts;
s.count++;
if (s.count <= 0)
{
remove a process P from s.queue;
place process P on ready list
}
allow interrupts;
}
Sistem Operasi/20100930

#31

Kelebihan dan Kekurangan Semaphore


Kelebihan:
Dapat digunakan untuk membentuk mutex dan
mengatur proses secara fleksibel
Merupakan tool yang serbaguna (powerful)

Kekurangan:

Tidak mudah membuat program dengan


semaphore, mengapa ???

Semaphore mungkin tersebar di seluruh program


Tidak mudah melihat seluruh efek semaphore
(harus menguji semua kemungkinan yang dapat
terjadi)

Akses terhadap suatu resource baru benar


hanya jika semua proses yang mengakses
resource tersebut diprogram secara benar
Penanganan mutex dan sinkronisasi
sepenuhnya menjadi tanggung jawab
Sistem Operasi/20100930
programmer

#32

Pustaka
[STA09] Stallings, William. 2009. Operating
System: Internal and Design
Principles. 6th edition. Prentice Hall

Sistem Operasi/20100930

#33

Anda mungkin juga menyukai