KONKURENSI : MUTUAL
EXCLUSION DAN SINKRONISASI
5.1 PRINSIP KONKURENSI
A. Hal-hal Penting yang Perlu diperhatikan Sistem Operasi
B. Interaksi Proses
C. Persyaratan Mutual Exclusion
5.2 MUTUAL EXCLUSION:PENDEKATAN SOFTWARE
A. Algoritma Dekker
B. Algoritma Peterson
5.3 MUTUAL EXCLUSION:DUKUNGAN HARDWARE
A. Interrupt Disabling
B. Instruksi Mesin Khusus
5.4 SEMAPHORE
A. Mutual Exclusion
B. Masalah Producer/Consumer
C. Implementasi semaphore
5.5 MONITOR
A. Monnitor dengan Sinyal
B. Monitor dengan Notify dan Broadcast
5.6 MESSAGE PASSING
A. Sinkronisasi
B. Pengalamatan
C. Format Pesan
D. Aturan Antrean
E. Mutual Exclusion
5.7 MASALAH READERS/WRITERS
A. Reader Memeliki Perioritas
B. Writer memiliki perioritas
103 | B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n
Topik utama rancangan sistem operasi adalah berkaitan dengan
manajemen proses dan thread :
104 | B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n
Berikut ini adalah kesulitan yang mungkin timbul:
Semua kesulitan diatas terjadi juga dalam sistem multiprosesor, karena disini juga
kecepatan relatif eksekusi proses tidak dapat diprediksi. Sistem multiprosesing
juga berkaitan dengan masalah yang timbu dari eksekusi simultan sejumlah
proses. Namun secara fundamental masalah nya sama dengan masalah yang
terdapat pada sistem uniprosesor. Hal itu akan menjadi jelaas pada penjelasan
beerikutnya.
B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n | 105
B. Interaksi Proses
106 | B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n
Kondisi-kondisi yang terjadi tidak akan selalu persis seperti yang ditunjukan
pada tabel 5.1. melainkan, beberapa proses dapat menunjukan kedua aspek
kompetisi dan kooperasi. Akan tetapi, akan bermanfaat apabila dilakukan
pembahasan tentang ketiga item diatas secara terpisah dan menentukan
implikasinya terhadap sistem operasi.
Proses konkuren akan mengalami konflik satu dengan lainya pada saat
proses tersebut berkompetisi untuk dapat menggunakan suatu sumber
daya yang sama. Dalam bentuknya yang murni, kita dapat menjelaskan
situasi itu sebagai berikut. Dua proses atau lebih ingin mengakses sebuah
sumber daya pada saat berlangsungnya eksekusi. Masing-masing proses
tidak menyadari keberadaan proses lainnya, dan semua proses tersebut
tidak akan berpengaruh oleh eksekusi proses lainnya. Dengan demikian
setiap
B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n | 107
1. Mutual exclution harus dilaksanakan:di antara sejumlah proses yang
memiliki bagian kritis bagi sumber daya yang sama atau objek bagi pakai
,pada suatu saat tertentu hanya sebuah proses yang di izinkan memasuki
bagian kritisnya
2. Suatu proses yang berhenti didalam bagian kritisnya tidak boleh
menggangu proses lainnya.
3. Suatu proses yang memerlukan akses ke bagian krisis tidak boleh di-
delay-kan dalam waktu yang tidak tertentu : tidak ada dedlock atau
starvation
4. Apabila dalam bagian kritis tidak ada proses, proses yang ingin masuk ke
dalam bagian kritisnya harus di izinkan masuk tanpa delay.
5. Tidak ada asumsi dibuat tentang kecepatan proses relatif atau jumlah
prosesor.
6. Suatu proses berada dalam bagian kritisnya dalam waktu tertentu saja.
A. Algoritma Dekker
Dijkstra telah menulis algoritma mutual exclusion bagi dua proses yang
dirancang oleh ahli matematik Belanda bernama Dekker.Dengan mengikuti
apa yang dikemukakan Dijkstra,kita akan membuat solusi secara
bertahap.Pendekatan ini memiliki kelebihan dalam menjelaskan bug-bug yang
paling sering dijumpai di dalam membuat program-program konkuren.Dengan
dibuatnya algoritma tersebut,kita juga akan menggunakan ilustrasi bergambar
yang di ambil dari [BEN82]
1. Usaha Pertama
Seperti telah diketahui di atas ,setiap usaha pada mutual exclution harus
mengandalkan mekanisme ekslusi fundamental di dalam hardware.Salah
satu mekanisme yang paling umum adalah constraint yang hanya
mengizinkan satu akses ke lokasi memori pada suatu saat tertentu
Menggunakan constraint ini,kita menyediakan sebuah lokasi memori
global yang di beri label tura.Sebuah proses(P0 atauP1)menginginkan
108 | B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n
untuk mengeksekusi bagian kritis pertama yang memeriksa isi dari
turn.Jika nilai dari nurn menjadi sama jumlah dari proses,kemudian
proses dapat melanjutkan ke bagian kritis.Jika tidak,akan mendorong
untuk menunggu.Proses menunggu beulaang kalii membaca nilai turn
sebagai busy waiting karena proses tidaak dapat melakukan bagian
kritis..Daripada harus menunda dan secara periodik memeriksa variable
mengkonsumsi waktu prosedur (sibuk) sementara menunggu
kesempatannya.
Kontruksi yanag disebut diatas merupakan kontruksi suaru coroutine.
Coroutine dirancang untuk dapat mengirimkan dn mengembalikan kontrol
eksekusi di antara coroutine itu sendiri.Walaupun merupakan sebuah
teknik penstrukturan yang cukup berguna,coroutine tidak lah cukup untuk
mendukung pengolahan konkuren.
2. Usaha kedua
Masalah ada usaha pertama adalah usaha tersebut menympan nama
prosesyang dapat masuk ke bagan kritisnya.pada saat kta benar-benar
memerlukan informasi keadaan tentang kedua proses tersebut akibatnya,
setap proses perlu memiliki kunci kunci sendiri ke bagian kritis itu
sehingga apabila proses musnah, maka proses lainnya masih dapat
mengakses bagian kritiisnya untuk memenuhi persyaratan ini sebuah
vektor boolean flag didefenisikan dengan flag (0) berhubungan dengan
P0 dan flag (1) yang berhubungan dengan P1, masing-masng proses
dapat memeriksa untuk flag laiinnya namun tidak dapat mengubahnya
ketika sebuah proses memungkinkan untuk masuki bagian kritis,secara
perodik memeriksa flag lainnya sampai flag memilik nilai false
mengiindikaskan bahwa roses lainnya tdak dalam bagian kritis proses
dengan langsung men-set flag-nya sendiri ke truedan melanjutkan ke
bagian kritis untuk memenuh persyaratann sebuah vektor boolean flag di
dfenisikan, dengan flag (0) berhubungan dengan P0 dan flag (1) yang
berhubungan dengan P1, masing-masng proses dapat memeriksa flag
lainnya, namun tiidak dapat mengubahnya, ketika sebuah proses
mungkinkan untuk memasuki bagian kritis, secara perodik memeriksa flag
lain nya tidak dalam bagian kritis proses dengan langsung men-set flag-
nya sendiri ke true dan melanjutkan kebagian kritis pada saat
meninggalkan bagan krits nya, proses itu mengubah tulisan d atas papan
tulisnya menjadi (false)
Karena sekarang kedua proses itu berada di bagian kritisnya, programnya
menjadi salah.masalah nya adalah solusi yg di ajukan tidak indenpenden
terhadap kecepatan eksekusi proses relatif.
3. Usaha ketiga
Karena sebuah proses dapat menggantikan keadaandari proses lainnya
telah di periksa namun sebelum proses lainya dapat memasukkan bagian
kritis, upaya kedua gagal mungkin. Seperti pada kasus
B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n | 109
sebelumnya,apabiala sebuah proses mengalami kegagalan di dalam
bagian kritis,termasuk kode flag settingnya yang mengontrol bagian
kritis,proses lainnya akan diblokir.apabila suatu proses mengalami
kegagalan di luar bagian kritisnya,proses lain nya tidak akan di blokir.
Usaha ini dapat menjamin mutual exclusion namun menimbulkan
masalah lainnya. Setiap proses itu akan salingmengira bahwa proses
lainnya telah masuk kebagiankritisnya yg mana hal ini akan menimbulkan
deadlock.
4. Usaha keempat
Dalam usaha ketiga, sebuah proses menyetel keadaannya tanpa
mengetahui keadaan proses lainnya.Deadlock akan terjadi karena semus
proses menunntut haknya untuk dapat memasuki bagian kritisnya.Proses
menyetel flagnya untuk mengindikasikan keinginannya untuk masuk ke
bagian kritisnya.
Usaha ini hampir sama dengan solusi yg benar namun masih
mengandung cacat. Mutual exlusion masih dijamin, dengan
menggunakan pemikiran yg sama seperti pada usaha ketiga.
B. Algoritma Peterson
Algoritma Dekker mampu menyelesaikan masalah mutual excluesion namun
dengan menggunakan program yg agak rumit yg sulit dipahami dan
kebenaran nya sangat sulitdipahami dan kebenarannya sangat sulit di
buktikan. Peterson(PETE81) telah memberikan solusi yg singkat dan baik
sekali.seperti diatas,flag variable array global mengindikasi kan bahwa posisi
setiap proses dealam kaitan nya dengan mutual exclusion dan variable glbal
turn memecahkan konflik yang simultan.bahwa mutual exclusion dijaga dapat
dibuktian dengan mudah. proses P0.apabila P0 itu menyetel flag(0)-nya ke
true,P1 tidak bisa masuk bagian krisisnya.apabila P1 telah ada didalam
bagiannya
1. P1 tidak berminat memasuki bagian krisinya.hal itu tidak mungkin terjadi
karena P1 mengimplemtasikan flag (1) = false
110 | B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n
2. P1 sedang menunggu bagian kritisnya.hal ini juga tidak mungkin terjadi
karna apabila turn=1,P1 dapat memasuki bagian kritisnya.
3. P1 sedangmenggunakan bagian kritisnya secara berulang-ulangdan
kemudian memonopoli akses ke bagian kritis itu.hal ini tidak mungkin
terjadi,karena P1 mempunyai kwajiban memberikan kesempatan
kepada P0 dengan cara menyetel turn menjadi 0 sebelum memasuki
bagian kritisnya.
B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n | 111
Instruksi itu menguji nilai argumentasinya, i. Jika nilainya sama dengan 0,
nilai itu akan diganti dengan 1 dan di kembalikan sebagai true. Bila sama
dengan 1, nilai tersebut tidak akan di ubah dan di kembalikan sebagai
false. Fungsi test set ini dilaksanakan secara atomic, yaitu, tidak akan di
interupsi.
2. Instruksi Exchange
112 | B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n
Kemudian P1 diintrupsi agar menyerahkan prosesor keP2, yang
memiliki prioritas yang lebih tinggi. Sekarang apabila P2 berusaha
untuk menggunakan sumber daya yang sama dengan P1, P2 akan
ditolak aksesnya karena adanya mekanisme mutual exclusion. Jadi
P2 akan menuju dalam loop busy-waiting. Namun, P1 tidak akan
pernah dikirimkan (diproses) karena memiliki prioritas yang lebih
rendah dibandingkan dengan proses yang sudah siap (ready) lainnya
yaitu P2.
5.4 SEMAPHORE
Prinsip dasarnya : dua proses atau lebih dapat berkooperasi dengan
menggunakan sinyal sederhana, sedemikian rupa sehingga suatu proses dapat
dipaksa berhenti pada posisi tertentu sampai proses tersebut menerima sinyal
tertentu. Persyaratan koordinasi yang kompleks dapat dipenuhi oleh struktur sinyal
yang sesuai. Pada pensinyalan, digunakan secara khusus yang disebut
semaphore. Untuk mengirimkan sinyal melalui semaphore s, proses melakukan
eksekusi primitive signal (s); apabila sinyal yang dimaksud belum ditransmisikan,
maka proses akan dihetikan sampai transmisi itu terjadi.
Selain ketiga operasi ini, tidak terdapat cara lain untuk meneliti ataupun
memanipulasi semaphore.
A. Mutual Exclusion
Algoritma berikut ini menunjukan sebuah solusi langsung bagi masalah mutual
exclusion yang menggunakan semaphore s (bandingkan dengan gambar 5.1)
B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n | 113
Anggap terdapat n buah proses, yang ditetentukan dalam bentuk array P(i).
Di dalam setiap proses, wait (s) dieksekusi sesaat sebelum bagian kritisnya.
Apabila nilai s menjadi negatif, proses akan dihentikan. Apabila nilai s sama
dengan 1, nilai itu akan diturunkan menjadi 0 dan proses segera memasuki
bagian kritisnya; karena s tidak positif lagi, tidak akan ada proses lainnya yang
dapat memasuki bagian kritisnya.
114 | B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n
Listing Algoritma mutual exclusion dengan semaphore s
/*program mutualexclusion*/
const int n= /* number of processes */;
semaphore s =1;
void P(int i)
{
while (true)
{
wait(s);
/*critical section */;
Signal(s);
/*remainder */;
}
}
void main()
{
parbegin (P(1), P(2),.....,P(n));
}
Semaphore di beri nilai awal 1. Jadi, proses pertama yang mengesekusi wait
akan segera memasuki bagian kritisnya, menyetel nilai s menjadi 0. Semua
proses lainnya yang mencoba memasuki bagian kritisnya akan mendapatkan
bagian kritis itu dalam keadaan sibuk dan kemudian akan di blokir, menyetel
nilai s menjadi -1. Sejumlah proses dapat mencoba masuk; setiap usaha yang
gagal itu akan menurunkan nilai s lebih lanjut, pada saat proses yang pada
awalnya berada di bagian kritis akan menuju keluar, maka s dinaikan nilainya
dan salah satu proses yang di blokir (apabila ada) akan di keluarkan dari
antrian proses proses yang di blokir yang berkaitan dengan semaphore dan
disimpan di keadaan Ready. Pada saat proses itu di jadwalkan lagi oleh sistem
operasi, maka proses tersebut dapat masuk ke bagian kritis.
Gambar 5.2 menunjukkan sebuah deretan yang mungkin untuk tiga proses
menggunakan disiplin mutual esklusi dari Gambar 5.9. dalam contoh ini tiga
proses (A,B,C) mengakses sebuah proses yang terproteksi oleh kunci (lock)
semaphore. Proses A mengesekusi wait (lock); karena semaphore memiliki
nilai 1 dalam suatu waktu dari operasi wait. A dapat secara langsung
memasuki daerah kritis dan semaphore mengambil nilai 0. Sementara A
berada dalam daerah kritis, kedua B dan C melakukan sebuah operasi tunggu
dan block di tunda keberadaan dari semaphore. Ketika A ada dalam daerah
kritis dan melakukan signal (lock),B, yang merupakan proses yang pertama
dalam antrean dapat sekarang memasuki daerah kritisnya.
B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n | 115
Program yang terdapat pada Gambar 5.2 dapat sama baiknya menangani
persyaratan yang mengizinkan lebih dari suatu proses berada dalam bagian
kritisnya pada suatu saat tertentu. Persyaratan ini akan di penuhi cukup
dengan memberi nilai awal tertentu kepada semaphore. Jadi, setiap saat, nilai
s count dapat di interpretasikan sebagai berikut :
s.count (besar sama) 0; s.count adalah jumlah proses yang dapat
mengesekusi wait (s) tanpa suspend [Apabila tidak aada signal (s) di
eksekusi dalam waktu itu]
s.count <0; magnitude s.count adalah jumlah proses yang terhenti di dalam
s.queue.
B. Masalah Producer/Consumer
Sekarang kita dapat membahas masalah yang paling umum yang di hadapi
dalam proses proses kongkuren ; masalah produser/consumer. Pernyataan
umumnya adalah: terdapat suatu proses atau lebih yang membuat beberapa
jenis data (record caracter) dan menempatkannya di dalam buffer. Terdapat
suatu consumer yang mengambil item item tersebut dari buffer pada saat
tertentu. Sistem terpaksa mencegah terjadinya tumpang tindih pada operasi
buffer. Dengan kata lain hanya satu agen (Producer atau consumer) yang
dapat mengakses buffer pada suatu saat tertentu. Kita akan meninjau
beberapa solusi bagi masalah ini untuk menjelaskan baik kelebihan atau pun
kekurangan yang di miliki semaphore.
116 | B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n
Gambar 5.3 menjelaskan struktur buffer b. Produser dapat menghasilkan item
dan menyimpannya di dalam buffer menurut kecepatanya.Setiap waktu, suatu
indeks (in) ke dalam bufffer di naikan. Consumer terus melanjutkan
kegiatannya dengan cara yang sama, namun harus yakin bahwa dirinya tidak
mencoba melakukan pembacaan terhadap buffer yang kosong.Karena itu,
consumer perlu meyakinkan bahwa produser telah melakukan kegiatanya
lebih dahulu daripada dirinya (in > out) sebelum melakukan pembacaan.
C. Implementasi semaphore
B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n | 117
5.5 MONITOR
Semaphore memiliki primitive yang sangat berguna dan fleksibel untuk
melaksanakan mutual exclusion dan koordinasi proses. Namun, seperti yang
dibahas sebelumnya, sangatlah sulit untuk membuat program yang benarr dengan
menggunakan semaphore. Kesulitannya adalah dimana operasi wait dan sinyal
dapat disebarkan di seluruh bagian program dan bukanlah hal yang mudah untuk
mengetahui akibat keseluruhan operasi ini terhadap semaphore yang
dipengaruhinya.
Monitor merupakan modul software yang terdiri dari sebuah procedure atau
lebih, sejumlah insialisasi , dan data lokal. Karakteristik utama sebuah monitor
sebagai berikut :
1. Variabel data lokal hanya bisa diakses oleh prosedur monitor dan tida
diakses oleh procedure eksternal.
2. Suatu proses memasuki sebuah monitor dengan cara memanggil salah
satu procedurenya.
3. Pada saat tertentu hanya sebuah proses yang dapat melakukan eksekusi
di dalam monitor; proses lainnya yang telah memanggil monitor dihentikan,
menunggu monitor dapat digunakan kembali.
Dengan menjalankan disiplin satu proses pada saat tertentu, monitor mampu
memberikan fasilitas mutuaal exclusion. Variabel data di dalam monitor dapat
diakses oleh hanya sebuah proses pada suatu saat tertentu. Jadi struktur data
bagi-pakai dapat diproteksi dengan cara menaruhnya di dalam monitor.
Apabila data di dalam monitor mempresentasikan beberapa sumber daya,
monitor menyediakan fasilitas mutual exclusion untuk mengakses sumber
daya tersebut.
118 | B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n
Monitor mendukung sinkronisasi dengan menggunakan variable kondisi yang
berada di dalam monitor dan hanya dapat diakses di dalam monitor. Dua
fungsi beroperasi pada variable kondisi tersebut :
B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n | 119
untuk kondisi itu. Jadi proses yang mengeluarkan csignal harus segera keluar
dari monitor atau dihentikan di monitor.
Pendekatan ini memiliki beberapa kelemahan :
1. Apabila proses yang mengeluarkan csignal tidak dikerjakan monitor,
maka diperlukan dua peralihan proses tembahan : satu peralihan untuk
menunda proses tersebut dan peralihan lainnya untuk melanjutkan
kembali apabila monitor sudah dapat digunakan lagi.
2. Penjadwalan proses terkait dengan sinyal harus reliable. Pada saat signal
dikeluarkan,proses dari antrian kondisi tertentu harus segera diaktivasi
dan schedule harus menjamin bahwa tidak aka nada proses lainnya yang
akan masuk ke dalam monitor sebelum pengaktivasian itu.
Untuk mengatasi kelemahan monitor Hoare ini, Lampson dan Redel membuat
definisi monitor yang berbeda. Pendekatannya dengan menggunakan
notifikasi (notify) dan broadcast, sehingga lebih tahan dari keadaan kesalahan
jika dibandingkan dengan monitor Hoare.
Monitor Lampson/ Redell mengandalkan pendekatan yang lebih modular bagi
konstruksi programnya. Terdapat dua tingkatan kondisi yang perlu dipenuhi
untuk kooperasi proses sekuensial :
1. Struktur data yang konsiste, sehingga monitor melaksanakan mutual
exclusion dan menyelesaikan operasi I/O sebelum mengisinkan operasi
lainnya pada buffer.
2. Level 1, ditambah dengan mmemori yang mencukupi agar proses ini dapat
meneyelesaikan permintaan alokasinya.
120 | B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n
dalam bentuk pesan (message) ke proses lainnya yang ditandai dengan tujuan
(destination). Proses akan menerima informasi dengan mengeksekusi primitive
receive, yang mengindikasikan sumber (source) proeses pengirim dan pesan.
Beberapa masalah rancangan yang berkaitan dengan sistem message
passing diberikan pada tabel 5.4; pada bagian lainnya subbab ini, kita akan
membahas satu per satu msalah tersebut.
A. Sinkronisasi
Komunikasi pesan di antara dua proses mengimplikasikan beberapa tingkat
sinkronisasi di antara keduanya: receiver tidak dapat menerima pesan sampai
pesan itu telah dikirimkan oleh proses lainnya. Di samping itu, kita perlu
menspesifikasikan apa yang terjadi terhadap suatu proses setelah
mengeluarkan primitve send atau receive.
Pertama – tama, perhatikan primive send. Pada saat primitive send dieksekusi
di dalam suatu proses, terdapat dua kemungkinan: apakah proses yang
melakukan pengiriman akan diblokir hingga pesan diterima atau tidak.
Jadi, baik sender maupun receiver dapat memblokir atau tidak memblokirnya. Ada
tiga buah kombinasi, walaupun suatu sistem tertentu biasanya hanya akan
mengimplementasikan satu atau dua buah kombinasi saja :
B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n | 121
B. Pengalamatan
Hubungan antara proses dengan mailbox dapat berbentuk statis atau dinamis.
Port sering kali dihubungkan dengan proses-proses tertentu secara statis;
dengan kata lain, port dibuat dan di asssign ke proses secara permanen.
Demikian pula halnya, biasanya hubungan satu ke satu ditetapkan secara
122 | B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n
statis dan permanen. Apabila terdapat beberapa sender, hubungan antara
sender dengan mailbox dapat berbentuk dinamis. Primitive seperti connect
dan disconnect dapat digunakan dalam hal ini.
C. Format Pesan
Format pesan bergantung pada tujuan fasilitas pesan dan apakah fasilitas itu
beroperasi pada sebuah komputer atau sistem terdistribusi. Bagi sistem
operasi, para perancang lebih menyukai
pesan-pesan pendek dan berukuran tetap
untuk meminimalkan pengolahan dan
overhead penyimpanan. Apabila data yang
berjumlah akan dikirimkan maka data dapat
disimpan di dalam sebuah file dan kemudian
pesan itu dapat mereferensi file tersebut.
Pendekatan yang lebih fleksibel adalah
dengan menggunakan pesan yang
panjangnya berubah-ubah (variabel).
B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n | 123
Gambar 5.7 menunjukkan format pesan secara umum bagi sistem operasi
yang mendukung pesan yang panjangnya variabel. Pesan dibagi menjadi dua
bagian header; header, yang berisi informasi pesan, dan body,yang berisi isi
pesan. Header berisi identifikasi sumber pesan dan tujuan pesan, panjang
field, dan jenis field untuk membedakan jenis pesan. Mungkin juga terdapat
informasi kontrol lainnya, seperti pointer field sehingga linked list pesan dapat
dibuat; nomor urut, untuk mengawasi jumlah dan urutan pesan yang
dilewatkan antara sumber dengan tujuan; dan field prioritas.
D. Aturan Antrean
Aturan anterean yang paling sederhana adalah first-in-first-out,namun antrean
ini tidak akan cukup bila ada pesan yang di anggap lebih penting di
bandingkan dengan pesan lainya.Cara lain nya adalah dengan
memungkinkan perioritas pesan,yang di dasarkan pada jenis pesan atau
dengan penandaan oleh sender.Alternatifnya lagi dengan mengizinkan
receiver untuk memeriksa antrean pesan dan memilih pesan yang akan
diterima berikutnya.
E. Mutual Exclusion
Algoritma berikut ini menunjukkan sebuah cara dimana pesan yang dikirimkan
dapat digunakan untuk melaksanakan mutual exclusion. Diamsumsikan
pengguna blocking receive primitive dan nonblocking sen primitive.Beberapa
proses konkuran berbagi-pakai sebuah mailbox yaitu mutex,yang dapat
digunakan oleh seluruh proses untuk mengirimkan dan menerima
pesan,Apabila mailbox kosong,maka proses di blokir.Apabila proses berhasil
mendapatkan pesan,prose situ di izinkan masuk daerah kritisnya dan
kemudian menyimpan kembali pesan ke dalam mailbox.Jadi,pesan berfungsi
sebagai token yang dikirimkan dari suatu proses ke proses lain nya.
Solusi di atas mengumsusikan bahwa apabila lebih dari satu proses
melakukan operasi penerima secara konkuren,maka:
Apabila terdapat pesan,pesan itu dikirimkan hanya ke satu proses dan
proses-proses lainnya di blokir
Apabila antrean pesan kosong,semua pesan di blokir;pada saat pesan
tersedia ,maka hanya satu proses yang akan di blokir yang akan diaktivasi
dan di beri pesan.
/* program mutualexclusing*/
Cont int n=/*number or prosesing*/;
Void P(int i)
{
Massage msg;
While (true)
{receive(mutex,msg);
124 | B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n
/*critical section*/
Send(mutex,msg)
/*remainder*/
}
}
Void main ()
{create_mailbox(mutex);
Send(mutex,null);
Parbegin{P(1),P(2),…….P(n));
}
Const int
Capacity = /*buffering capacity*/
Null= /*empity massage*/
Int I;
Void produser()
{massage pmsg;
While(true)
{
Recerve (mayproduce,pmsg);
Pmsg =produce();
Send(mayconsume,pmsg)
}
}
Void consumer()
{massage cmsg;
While(true)
{receive(mayproduce,cmsg);
Consume(cmsg);
Send (mayproduce,null)
}
}
Void main()
{
Create_mailbox(mayproduce)
Create_mailbox(mayconsume)
For {int i=1;i<=capacity; 1++)
Send(mayproduce,null);
Parbegin(producer,consumer);
}
B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n | 125
5.7 MASALAH READERS/WRITERS
Dalam membahas rancangan mekanisme sinkronisasi dan
konsekuensi,sangat lah berguna apabila dapat menghubungkan masalah yang di
jumpai dengan masalah yang telah diketahui dan mampu menguji semua solusi
dalam hal kemampuannya untuk masalah yang telah diketahui.Dalam
literature,beberapa masalah di anggap penting dan sering di jumpai,baik karena
masalah tersebut merupakan contoh masalah rancangan yang uum maupun
karena alasan nilai edukatifnya salah satu di antara masalah tersebut adalah
masalah produser/consumer,yang telah di bahas di atas.Dalam subbab ini,kita
akan meninjau ,masalah klasik lainya masalah readers/writers.
126 | B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n
readcount++,
if (readcount == 1)
wait (wsem);
signal (x);
READUNIT();
wait (x);
readcount--;
if (readcount == 0)
signal (wsem);
signal (x);
}
}
void write()
{
while (true)
{
wait (wsem);
WRITEUNIT();
signal (wsem);
}
}
void main()
{
readcount = 0
parbegin ( reader,writer);
}
B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n | 127
untuk mengantre pada rsem, dengan antrean reader tambahan pada
semaphore z, sesaat sebelum menunggu rsem. Tabel 5.5 merangkum
kemungkinan-kemungkinan yang dapat terjadi.
*/ program readersandwrites */
int readcount, writecount;
semaphore x =1, y = 1, z = 1, wsem = 1, rsem
=1;
void reader()
{
while (true)
{
wait (z);
wait (rsem);
wait (x);
readcount++;
if (readcount ==1)
{
wait (wsem);
}
signal (x);
signal (rsem);
signal (z);
READUNIT();
wait (x);
readcount--;
if (readcount == 0)
signal (wsem);
signal (x );
}
}
void writer()
{
while (true)
{
wait (y);
writecount++;
if (writecount == 1)
wait (rsem);
signal (y);
wait (wsem);
WRITEUNIT();
signal (wsem);
wait (y);
writecount--;
if (writecount == 0)
signal (rsem);
signal (y);
}
}
void main()
128 | B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n
{
readcount = writecount = 0;
parbegin (reader,writer);
}
Sebuah solusi alternative, yang memberikan perioritas ke[ada writer dan yang
diimplementasikan dengan menggunakan innesaage passing, ditunjukkan pada
gambar 5.30. di dalam kasus ini, terdapat mikrokontroler yang memiliki akses ke
daerah data bagi-pakai. Proses lainnya yang berhubungan mengakses ke daerah
data mengirimkan
B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n | 129
Apabila count > 0, tidak ada writer yang menunggu dan dapat atau tidak
dapat ada reader yang aktif. Melayani pesan-pesan “finished” terlebih
dahulu untuk menghapus reader yang aktif. Kemudian melayani
permintaan write dan dilanjutkan permintaan read.
Apabila count = 0, satu-satunya permintaan yang belum dilaksanakan
adalah permintaan write. Mengizinkan writer untuk melanjutkan
aktifitasnya dan menunggu pesan “finished”.
Apabila count < 0, writer telah membuat pemintaan dan dibuat
menunggu untuk menghapus semua reader yang sedang aktif. Dengan
demikian, hanya pesan-pesan “finished” yang perlu dilayani.
REFERENSI UTAMA :
Silberschatz et.al (2014). Operating System Concept Essentials, 2nd Edition, New
Jersey, USA : John Wiley & Sons, Inc
Stalling, William. (2012). Operating Systems : Internals and Design Principles, 7th
Edition, Boston, USA : Prentice-Hall.Inc
Tanenbaum , Andrew S. and Bos, Herbert. (2014). Modern Operating System, 4th
Edition, New Jersey : Pearson Education, Inc.
130 | B a b 5 . K o n k u r e n s i : M u t u a l E x c l u s i o n