Catatan kuliah Real-Time Programming Jurusan Teknik Elektro Unsoed Acep TaryanaMay-2015 Halaman 5
II.4 Syarat Program
Hanya ada satu proses yang berada pada seksi kritis pada satu saat. Memenuhi kebenaran sekuensial dan logika temporal.
Proses tidak mengalami starvation. Proses tidak mengalami deadlock.
Tidak terjadi Bussy waiting. Solusi proses yang simetrik untuk menjamin serializibility. Dengan cara ini eksekusi instruksi seolah-
olah berada pada pemrograman dengan logika sekuensial.
II.5 Tahapan Pembuatan Program
1. Cari titik observasi, yaitu titik pengamatan terhadap aksi dalam proses sebelum memasuki seksi kritis
dan setelah keluar dari seksi kritis Gambar II.1. 2.
Apakah ada syarat untuk melewati titik observasi tersebut? Jika ada maka jadikan titik observasi sebagai titik sinkronisasi.
3. Tetapkan syarat formal untuk melewati titik tersebut.
4. Buatlah program konkuren yang memenuhi kebenaran logika sekuensial dan temporal.
Gambar II.1. Titik observasi pada Critical Section.
II.6 Hipotesa Pemrograman
Tidak ada asumsi yang dapat digunakan pada saat pelaksanaan eksekusi suatu proses. Semua proses harus berakhir.
II.7 Mekanisme Blocking Proses
II.7.1 Low level:
Lock gate Semaphore
Mailbox Ada dua aksi yang harus dilakukan pada penggunaan mekanisme blocking proses low level:
1. Deklarasi
2.
Mendeklarasikan mekanisme block dengan pernyataan Create atau Declare
3. Manipulasi, menggunakan primitif dari mekanisme block, yaitu instruksi-instruksi yang berkaitan
dengan mekanisme tersebut harus instruksi yang simetrisberpasangan II.7.1.1
Lock Gate II.7.1.1.1
Pengertian : Mekanisme blocking proses yang sudah tersedia baik di bahasa pemrograman maupun sistem operasi.
Menawarkan penanganan block proses dengan fasilitas yang dipunyai. Menggunakan variabel kerja B dengan type Boolean yang diberi harga awal False pada saat mekanisme
Lock gate di Create atau di declare. Ada antrian Q yang digunakan untuk penanganan status proses P. Sifat antrian adalah FIFO.
Primitif yang digunakan adalah Lockname dan Unlockname.
Critical Section CS
Titik Observasi 1 TO1
Titik Observasi 2 TO2
Catatan kuliah Real-Time Programming Jurusan Teknik Elektro Unsoed Acep TaryanaMay-2015 Halaman 6
II.7.1.1.2 Notasi Algoritmik Primitif Lock dan Unlock
Procedure Lockname Begin
if B Then Blocked status proses P
Tempatkan proses P dalam antrian Q B
True End
Procedure Unlockname Begin
B False
If antrian Q not empty Then Keluarkan proses P yang ada di HeadQ
Aktifkan status proses P End
II.7.1.1.3 Contoh Penggunaan Lock Gate.
II.7.1.1.3.1 Seksi Kritis
Ketika proses hendak masuk seksi kritis, proses memeriksa nilai variabel lock lebih dahulu. Jika variabel lock bernilai False, proses mengubah variabel lock menjadi True dan masuk seksi kritis.
Sebaliknya, proses diblok sampai dibebaskan unlock oleh proses lain yang sebelumnya berada di seksi kritis.
Misal ada n proses konkuren yang akan masuk ke seksi kritis pada Gambar II.2. P1
P2 P3
……………. Pn
Secara umum : Pi
Gambar II.2. Titik observasi untuk n buah proses yang akan mengakses CS. Tahapan :
1. Didapatkan Titik observasi 1 TO1 dan TO2
2. Karena titik observasi sudah didapatkan, maka titik sinkronisasi didapatkan dan disebut dengan TS1,
TS2. 3.
Syarat untuk melewati CS : TS1 terjadi sebelum TS2. Secara formal dapat ditulis sebagai berikut : TS1CS TS2CS
4. Buat program konkuren.
CS CS
CS CS
CS TO1
TO2
Catatan kuliah Real-Time Programming Jurusan Teknik Elektro Unsoed Acep TaryanaMay-2015 Halaman 7
Program SeksiKritis { Pada saat Create LockgateCS, secara otomatis akan menginisialisasi
var B bernilai false. Pada program utama diciptakan proses-proses, setiap proses akan masuk ke seksi kritis dengan terlebih dahulu lakukan
lock dan setelahnya unlock. Ketika proses berada dalam CS maka proses lain tidak boleh masuk ke CS dengan cara di blokantri di antrian Q
yang telah didefinisikan.} Procedure ProsesVar i : integer
Begin LockCS
masuk seksi kritis UnlockCS
End { Deklarasi Global baik primitif, variabel dan konstanta }
Create LockgateCS { program utama }
Begin Loop
Proses1 Proses2
Prosesn Forever
End
II.7.1.1.3.2 Baca-Tulis
Cerminan paling sederhana dari komunikasi antar proses. Ada dua proses yang konkuren, yaitu Baca dan Tulis. Proses BacaP1 akan membaca data dari M
memory atau secondary storage dan proses tersebut adalah benar nilai ditulis oleh Proses TulisP2 di M.
Proses baca akan dilakukan setelah proses tulis selesai. Pencarian solusi :
1. Cari titik observasi.
P1 P2
Gambar II.3. Pencarian titik observasi pada 2 proses baca dan tulis. 2.
Adakah syarat untuk melewati TO. TO1 : bukan TO, hilangkan karena tidak penting.
TO2 : merupakan tanda untuk melaksanakan TO3, oleh karena itu penting. TO3 : penting.
TO4 : tidak penting. Sehingga titik observasinya adalah TO2 sekarang sebut TS1 dan TO3 disebut TS2
3. Syarat formal untuk melewatinya.
Akhir tulism awal baca m 4.
Buat program konkuren. Bacam
Tulism
TO3 Awal Baca
TO2 Akhir
tulis
TO1
TO4Akhir Baca
Catatan kuliah Real-Time Programming Jurusan Teknik Elektro Unsoed Acep TaryanaMay-2015 Halaman 8
Program BacaTulis {Pada saat Create LockgateM, secara otomatis akan menginisialisasi
var B bernilai false. Pada program utama diciptakan proses Baca, proses Tulis. Setiap proses akan masuk ke seksi kritis tulisM dan
bacaM.}
Procedure Baca Begin
Loop LockM
LockM baca dari M
forever End
Procedure Tulis Begin
Loop tulis ke M
UnlockM Forever
End { Deklarasi Global baik primitif, variabel dan konstanta }
Create LockgateM { Program utama }
Begin Baca
Tulis End
II.7.1.2 Semaphore
II.7.1.2.1 Pengertian
Diperkenalkan oleh Edgard Dijkstra, mempunyai prinsip yang hampir sama dengan mekanisme lock. Menggunakan variabel kerja eo dengan type integer nilai dibebaskan kepada pengguna, dengan syarat
eo 0 .
Ada antrian Q yang digunakan untuk penanganan status proses P.
Primitif yang digunakan adalah Pname atau Down atau Wait dan Vname atau Up atau Signal. Untuk mendeklarasikannya, digunakan pernyataan Create Semaphorename, initvalue
II.7.1.2.2 Notasi Algoritmik Primitif P dan V
Procedure Pname Begin
eo eo - 1
If eo 0 Then Blocked status proses P
Tempatkan proses P dalam antrian Q End
Procedure Vname Begin
eo eo + 1
If eo = 0 Then Keluarkan proses P yang ada di HeadQ
Aktifkan status proses P End
II.7.1.2.3 Contoh Penggunaan
Catatan kuliah Real-Time Programming Jurusan Teknik Elektro Unsoed Acep TaryanaMay-2015 Halaman 9
II.7.1.2.3.1 Seksi Kritis
Ilustrasi persoalan dapat dilihat pada Gambar II.2. Solusi:
Program SeksiKritis { Pada saat Create SemaphoreCS,1, nilai eo dinisialisasi dengan 1. Pada
program utama diciptakan proses-proses, setiap proses akan masuk ke seksi kritis dengan terlebih dahulu lakukan PCS dan setelahnya VCS. Ketika
proses berada dalam CS maka proses lain tidak boleh masuk ke CS dengan cara di blokantri di antrian Q yang telah didefinisikan.}
Procedure ProsesVar i : integer Begin
PCS masuk seksi kritis
VCS End
{ Deklarasi Global baik primitif, variabel dan konstanta } Create SemaphoreCS, 1
{ program utama } Begin
Loop Proses1
Proses2 Prosesn
Forever End
Properti : Nilai awal dari semaphore sebuah proses menunjukan jumlah proses yang dapat melewati Pname tanpa diblok. Nilai awal 0 menunjukan bahwa proses yang melewati Pname langsung akan terblok sedangkan nilai awal 1
menunjukan bahwa pada satu saat maksimal hanya ada satu proses yang dapat melewati Pname.
II.7.1.2.3.2 Baca-Tulis
Ilustrasi persoalan dapat dilihat pada Gambar II.3. Program BacaTulis
{Pada saat Create SemaphoreM, 0, secara otomatis eo diinisialisasi dengan nilai 0. Pada program utama diciptakan proses Baca, proses Tulis.
Setiap proses akan masuk ke seksi kritis tulisM dan bacaM.} Procedure Baca
Begin Loop
PM baca dari M
forever End
Procedure Tulis Begin
Loop tulis ke M
VM Forever
End { Deklarasi Global baik primitif, variabel dan konstanta }
Create SemaphoreM, 0 {Merupakan private semaphore} { Program utama }
Begin Baca
Tulis End
Catatan kuliah Real-Time Programming Jurusan Teknik Elektro Unsoed Acep TaryanaMay-2015 Halaman 10
II.7.1.3 Mailbox
II.7.1.3.1 Pengertian
Mekanisme konkuren untuk memenuhi kebutuhan IPC Interprocess Communication melalui pengiriman pesan secara tidak langsung indirect message passing.
Merupakan suatu buffer of messages dari proses-proses yang saling berkomunikasi.
Skema adaptif mailbox untuk pemrograman konkuren yang ideal adalah blocking read dan blocking write. Tetapi dalam banyak hal, implementasi yang paling sering digunakan adalah blocking read dan
unblocking write.
Secara umum message passing dengan mailbox mempunyai sepasang primitif, yaitu:
Sendmbname, message atau Writembname, message . Digunakan untuk mengirimkan pesan
message ke tujuan tertentu destination.
Receivembname, message atau Readmbname, message. Digunakan untuk mengambil pesan
message dari tujuan tertentu atau dapat juga dari sumber tak ditentukan lebih dahulu penerima tidak peduli dengan sumber pesan.
Sebagai contoh, jika proses A akan mengirim pesan kepada proses B melalui mailbox1, maka penulisan pernyataannya:
process A; ...
sendmailbox1, message ...
process B; ...
receivemailbox1, message ...
Suatu mailbox dibuat dengan pernyataan Create Mailboxmbname, mbcapacity.
II.7.1.3.2 Contoh Penggunaan
II.7.1.3.2.1 Seksi Kritis
Program SeksiKritis { Awalnya mailbox dikirim pesan dengan Send. Berarti jika ada proses yang
memanggil Receive maka proses tersebut akan masuk ke CS dan proses dibelakangnya akan terblok sampai proses tersebut mengirimkan pesan lagi ke
mailbox} Procedure ProsesVar I : integer
Begin ReceiveCS, message
masuk seksi kritis SendCS, message
End { Deklarasi global }
. . .
message-1 message-2
message-3
. . . Mailbox
antrian Read antrian Write
. . .
Catatan kuliah Real-Time Programming Jurusan Teknik Elektro Unsoed Acep TaryanaMay-2015 Halaman 11
Create MailboxCS { program utama }
Begin SendCS, message
Loop Proses1
Proses2 Prosesn
Forever End
II.7.1.3.2.2 Baca-Tulis
Program BacaTulis { Proses Baca akan terblok terus menerus sampai adanya pesan di mailbox
yang dikirimkan oleh proses Tulis} Procedure Baca
Begin
Loop ReceiveMB, message
baca dari M forever
End Procedure Tulis
Begin
Loop tulis ke M
SendMB, message Forever
End { Deklarasi global }
Create MailboxMB { Program utama }
Begin Baca
Tulis End
II.7.2 High level:
Monitor Rendezvous
Catatan kuliah Real-Time Programming Jurusan Teknik Elektro Unsoed Acep TaryanaMay-2015 Halaman 12
III Studi Kasus Konkurensi
III.1 Seksi Kritis
Seksi kritis merupakan masalah mendasar dalam lingkungan konkurensi. Ketika proses hendak masuk seksi kritis, proses memeriksa nilai variabel lock lebih dahulu. Jika variabel lock bernilai False, proses
mengubah variabel lock menjadi True dan masuk seksi kritis. Sebaliknya, proses diblok sampai dibebaskan oleh proses lain yang sebelumnya berada di seksi kritis.
III.2 Baca-Tulis
Masalah baca-tulis data dari ke memory atau secondary storage merupakan cerminan paling sederhana dari komunikasi antar proses. Ada dua proses yang konkuren, yaitu proses Baca dan Tulis. Proses Baca akan
membaca data, sementara proses Tulis akan menulis data. Jika proses Tulis sudah selesai menulis, maka proses tersebut akan memberi tanda bahwa proses sudah selesai. Proses baca akan dilakukan setelah proses
tulis. Proses baca adalah benar jika nilai data yang dibaca oleh proses Baca adalah sama dengan nilai data yang baru ditulis oleh proses Tulis.
III.3 Sleeping Barbershop Problem
Salon pangkas rambut mempunyai satu kursi pemangkasan dan n kursi untuk pelanggan-pelanggan yang menunggu. Jika tidak ada pelanggan, pemangkas duduk di kursi pemangkasan dan tidur. Ketika
pelanggan datang, dia membangunkan pemangkas. Jika pelanggan-pelanggan berikutnya datang, sementara pemangkas sedang memotong rambut pelanggan lain, pelanggan-pelanggan itu duduk di kursi tunggu jika
masih terdapat kursi tunggu yang kosong atau meninggalkan salon jika semua kursi tunggu telah penuh.
Gambar III.1. Sleeping Barbershop Program
III.4 Producer-Consumer
Producer produsen memproduksi barang kemudian diletakkan di sebuah conveyor ban berjalan dengan kapasistas terbatas n atau tidak terbatas. Consumer konsumen akan mengambil barang yang telah
diproduksi oleh produsen melalui conveyor yang sama. Akan muncul masalah:
Jika conveyor penuh sementara produsen masih ingin meletakkan produk pada conveyor tersebut masalah bagi produsen. Hal ini terjadi jika asumsi kapasitas conveyor terbatas.
Jika conveyor kosong sementara konsumen ingin mengambil produk masalah bagi konsumen. Oleh karena itu kedua proses membutuhkan sinkronisasi agar sama-sama dapat terhindar dari
permasalahan. Tempat
Cukur
Kursi tunggu
Pintu inout
Catatan kuliah Real-Time Programming Jurusan Teknik Elektro Unsoed Acep TaryanaMay-2015 Halaman 13
Gambar III.2. Producer- Consumer Problem
III.5 Dining Philosophers Problem
Lima filsuf bertemu untuk makan malam. Mereka duduk di sekeliling meja makan yang bentuknya bulat. Tetapi saat mereka akan makan, ada persoalan praktis yang muncul. Spaghetti yang dihidangkan
sebagai menu makan malamnya begitu ruwet dan licin, sehingga untuk memakannya diperlukan dua garpu sekaligus. Sementara itu, meja sudah diatur sedemikian hingga hanya ada satu garpu untuk setiap filsuf.
Gambar III.3. Susunan Dining Philosophers Aktivitas hidup setiap filsuf dianggap hanya ada dua, yaitu makan dan berpikir yang dilakukan secara
bergantian. Ketika filsuf lapar, filsuf mencoba memperoleh garpu kiri dan kanan sekaligus dengan urutan manapun. Jika sukses memperoleh dua garpu sekaligus, filsuf makan. Kemudian bila telah selesai makan,
filsuf meletakkan kembali garpunya dan melanjutkan berpikir. Supaya semua filsuf dapat makan secara adil, dalam arti tidak ada filsuf yang makan terus menerus atau
terus menunggu karena garpu yang dibutuhkan tidak selalu tersedia, maka diputuskan pendekatan penyelesaian sebagai berikut:
Pada keadaan awal, semua filsuf dianggap sedang berpikir. Jika seorang filsuf sedang makan, maka filsuf yang duduk di sebelah kiri dan kanannya tidak
diperkenankan makan pada saat itu. Banyaknya filsuf yang dapat makan pada saat yang sama adalah dua orang.
Setiap saat, setiap filsuf mempunyai salah satu dari keadaan berikut: sedang makan
mau makan, tetapi jika garpu tidak tersedia maka ia menunggu tidur sampai garpu di kiri dan kanannya tersedia dibangunkan oleh filsuf di sebelahnya yang sudah selesai makan.
sedang berpikir
Filsuf yang sedang makan berhenti makan setelah selang waktu tertentu. PRODUCER
. . .
. . .
CONSUMER
2 3
. . . . .
1
N
aliran produk
Catatan kuliah Real-Time Programming Jurusan Teknik Elektro Unsoed Acep TaryanaMay-2015 Halaman 14
III.6 Swimming Pool
Sebuah kolam renang dianggap mempunyai kapasitas tidak terbatas, artinya berapapun banyaknya orang yang masuk dan berenang, selalu bisa ditampung kolam renang sangat luas. Sedangkan tempat ganti
pakaian terbatas. Setiap orang yang berenang wajib mengikuti prosedur sebagai berikut: ambil keranjang
ganti baju titipkan keranjang
berenang ambil keranjang
ganti baju kembalikan keranjang
keluarpergi
III.7 PembacaPenulis ReadersWriters
Ada 2 dua kelompok proses yaitu kelompok Pembaca Readers dan Penulis Writers. Keduanya dapat mengakses suatu file dengan ketentuan:
file dapat dibaca oleh beberapa Pembaca sekaligus tetapi jika file sedang diakses oleh Penulis, maka hanya satu Penulis yang boleh menulis pada suatu
saat. Perlu diperhatikan prioritas prioritas di pembaca, prioritas di penulis, prioritas sama
Catatan kuliah Real-Time Programming Jurusan Teknik Elektro Unsoed Acep TaryanaMay-2015 Halaman 15
IV Pendekatan dan Mekanisme Solusi
Ada dua pendekatan untuk mendapatkan solusi, yaitu pendekatan seksi kritis mutex dan sinkronisasi. Masing-masing pendekatan bisa menggunakan mekanisme lockgate, semaphore, mailbox dan mekanisme
high level.
IV.1 Pendekatan Seksi Kritis