Syarat Program Tahapan Pembuatan Program Hipotesa Pemrograman Mekanisme Blocking Proses

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