ILUSTRASI KLASIK: BOUNDED BUFFER

dokumen-dokumen yang mirip
Mengunci sebuah object: Untuk memastikan bahwa hanya satu thread yang mendapatkan hak akses kedalam method tertentu

Monitor. Process Synchronization. SISTIM OPERASI (IKI-20230) ProcessSynchronization Ch. 6. Johny Moningka

BAB 4. SINKRONISASI & DEADLOCK

Pemrograman Berorientasi Obyek (IT251) Ramos Somya, S.Kom., M.Cs.

CRITICAL REGIONS DAN MONITORS

BAB 2 COLLECTION & THREAD

Pada pembuatan game di java, sering kali para programer. mendefinisikan banyak object seperti suara, gambar, dan grafik geometri yang

Laporan Tugas Scheduling Pengantar Sistem Operasi

Thread. 16 th week Estu Sinduningrum ST,MT

PENANGANAN EKSEPSI. class Exc0 { public static void main (String args[]) { int d = 0; int a = 42 / d; } }

EXCEPTION HANDLING. 1. Mampu menangani eksepsi 2. Mengetahui dan memahami tentang multithreading 3. Dapat membuat program tentang exception handling

1.Tujuan. 2. Latar Belakang

Badiyanto, S.Kom., M.Kom. PBO java

BAHASA PEMROGRAMAN JAVA

Bab 26. Readers/Writers

Bab 6: Sinkronisasi Proses. Latar Belakang

Apa yang akan dipelajari?

Network Programming 2010 Pemrograman Multi-Thread

public class Test { int i = 6; int j = 3; System.out.println(i/j); } Output :

Konkurensi merupakan landasan umum perancangan sistem operasi. Proses-proses disebut konkuren jika proses-proses berada pada saat yang sama.

1. Latar Belakang Didalam pembuatan game java sering kali kita mendefinisikan banyak object seperti gambar, dan grafik geometri yang begitu banyak,

SOLUSI QUIZ 2 SISOP CS3613

Bab 5. Sinkronisasi Proses POKOK BAHASAN: TUJUAN BELAJAR: 5.1 LATAR BELAKANG

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Kelompok 12. Thread Java

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

Monitor. Makalah Sistem Operasi. Disusun oleh :

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

Pengenalan JavaScript

Java Progamming Multithreading

Elemen Dasar Dalam Bahasa Java

DASAR PEMOGRAMAN JAVA

Exception Handling and Multithreading

BAB II VARIABEL DAN TIPE DATA

2 TIPE DATA DAN VARIABEL

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

TUGAS SISTEM TERDISTRIBUSI MULTYTHREAD EKO SURIPTO P

IKG2I4 / Software Project I

BAB IV REKAYASA SISTEM

Process Synchronization

PROSES & THREADS 2 AGUS PAMUJI. SISTEM OPERASI - Proses & Threads

Java Thread Games Series

KONSEP DASAR PEMROGRAMAN BERORIENTASI OBYEK

Pertemuan #3: Sinkronisasi dan Deadlock

Sleep and Wake Up. Tugas Kuliah. Mata kuliah : CF 1310 Sistem Operasi. Disusun oleh : UZLINA RAHMAWATI FIA MAHANANI

1. Tujuan. 2. Latar Belakang. 3. Percobaan. Modul Praktikum TiledLayer

Pemrograman Berorientasi Objek. Beni Suranto, S.T.

Sistem Operasi Pertemuan 5 Concurrency: Mutual Exclusion & Synchronization

REVIEW DAN REVISI BUKU

Bab 27. Sinkronisasi Dengan Semafor

Sistem Operasi. Critical section, konkurensi, mutasi exclusion, starvation dan deadlock. Juliansyahwiran, S. Kom, MTI. Modul ke: Fakultas FASILKOM

Konsep Lanjut Pemrograman Berorientasi Obyek

Multithreading dengan python (bagian 1)

Pemrograman Berorientasi Obyek. Dasar Pemrograman Java

PEMAHAMAN DASAR DASAR JAVA

Concurrency 1: y Mutual Exclusion dan Sinkronisasi (Perte rt muan ke muan -10) 10 Oktober 2014

Menangkap Kesalahan (Error Handling)

Concurrency 1 : Mutual Exclusion dan Sinkronisasi (P ( e P rtemuan ua ke-9) 9 September 2014

BAB 1 KONSEP DASAR JAVA

Jika Anda ingin bisa/sukses dalam kuliah SDA ini, rajinlah mengimplementasikan ADT dan mengerjakan soal-soal yang diberikan.

Cara Membaca File Text di JAVA

Bab 3: Proses-Proses. Konsep Proses

M.Octaviano Pratama

Exception Handling. Oleh : Agus Priyanto, M.Kom

LAPORAN RESMI PRAKTIKUM II WEB DESAIN PENGENALAN JAVASCRIPT

PEMROGRAMAN SOCKET LANJUTAN

Kelas: Nilai (Diisi Dosen):... IF

Abstract Class dan Interface. Viska Mutiawani, M.Sc

Praktikum XI Animasi dan Multimedia

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

Politeknik Elektronika Negeri Surabaya

Topik. Penanganan Eksepsi. Menangkap Eksepsi. Catch Secara bertingkat. Melontarkan Eksepsi. Melontarkan kembali Eksepsi.

Exception adalah penanda bahwa kondisi/kejadian yang tidak diinginkan telah terjadi pada program kita. Ada 2 jenis exception (+1 Error):

BAB 1 PENDAHULUAN. Sistem operasi merupakan suatu program yang bertindak sebagai interface antara user

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

LAPORAN RESMI. PRAKTIKUM TEKNOLOGI WEB Pengenalan JavaScript

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

SATUAN ACARA PERKULIAHAN MATA KULIAH: Algoritma & Pemrograman 3 Strata/Jurusan : S1/Sistem Komputer

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

Proses Sinkronisasi. Latar Belakang Masalah Critical Section Sinkronisasi Hardware Semaphores Monitors

Penjebakan Eksepsi. Nur hasanah, M.Cs

SATUAN ACARA PERKULIAHAN MATA KULIAH: Algoritma & Pemrograman 3 Strata/Jurusan : D3/Teknik Komputer

Critical Section Mutual Exclusion Semaphore Tugas. Sinkronisasi Thread. Praktikum Sistem Operasi. Ilmu Komputer IPB. Sinkronisasi Thread

Class Thread juga menyediakan beberapa constants sebagai nilai prioritas. Tabel berikut ini adalah rangkuman dari class Thread.

PERTEMUAN VII Multithreaded Programming. Praktikan mampu membuat program sederhana mengenai threading

PRAKTIKUM 6 EXCEPTION

KUM 3 IMPLEMENTASI LIST

Pemrograman Berorientasi Obyek. Exception Handling. Politeknik Elektronika Negeri Surabaya

Riwayat Pendidikan: SDK Lemuel II, Pos Pengumben, Jakarta Barat SMPK Lemuel, Pos Pengumben, Jakarta Barat SMUN 78, Kemanggisan, Jakarta Barat

//PROGRAM 9-8. int[] A = new int[5]; // SALAH, karena tidak terdapat. class BanyakEksepsi { indeks ke-5. public static void test(int a, int b) { try {

Tujuan Intruksional. Mampu menjelaskan tentang event handling Mampu menjelaskan tentang method Mampu menggunakan event handling Mampu membuat method

Readers-Writers & The Dining Philosophers Problem

MODUL 9 EXCEPTION HANDLING

MENGGUNAKAN TCP SOCKET. Oleh: M. Ghazali a.k.a. ghanoz 2480

PERCOBAAN 6 EXCEPTION

B. Jawablah dengan ringkas dan lengkap. (Jawaban tidak lebih dari 10 kalimat) (Nilai 40) Solusi: kata kunci dalam huruf miring.

MANAJEMEN PROSES. Satu Empat Model program counter program counter Proses

Transkripsi:

ILUSTRASI KLASIK: BOUNDED BUFFER Oleh kelompok 54.4: Reza Lesmana (1203000978) Suryamita Harindrari (1203001087) Fitria Rahma Sari (1203007034) Kritik dapat dikirimkan melalui rezalesmana@mhs.cs.ui.ac.id 54.4 Ilustrasi Klasik: Bounded Buffer 2004 1

Komunikasi proses dalam sistem Pertukaran pesan memerlukan antrian sementara (buffer), ada tiga: Kapasitas nol Kapasitas terbatas Kapasitas tidak terbatas 54.4 Ilustrasi Klasik: Bounded Buffer 2004 2

Bounded Buffer? Suatu struktur data yang mampu untuk menyimpan beberapa nilai dan mengeluarkannya kembali ketika diperlukan 54.4 Ilustrasi Klasik: Bounded Buffer 2004 3

Implementasi Producer Consumer Problem Dua proses berbagi buffer yang sama dengan ukuran tertentu. Producer menaruh informasi ke dalam buffer, dan consumer mengambilnya. 54.4 Ilustrasi Klasik: Bounded Buffer 2004 4

Hal yang harus diperhatikan Bounded buffer memiliki batas banyaknya data yang dimasukkan Barang yang dikonsumsi oleh konsumer terbatas Jika bounded buffer telah penuh produser tidak mampu menaruh lagi dan akan menunggu sampai ada tempat yang kosong Jika bounded buffer kosong maka konsumer harus menunggu sampai ada barang yang ditaruh oleh produser 54.4 Ilustrasi Klasik: Bounded Buffer 2004 5

4 Masalah dalam Bounded Buffer Busy wait Race Condition Deadlock Livelock 54.4 Ilustrasi Klasik: Bounded Buffer 2004 6

UnsynchronizedBoundedBuffer public class UnsynchronizedBoundedBuffer { protected final Object[] goods; protected int putptr = 0; protected int takeptr = 0; protected int usedslots = 0; public UnsynchronizedBoundedBuffer( int capacity ) throws IllegalArgumentException { if( capacity <= 0 ) throw new IllegalArgumentException(); goods = new Object[capacity]; public void put( Object x) throws InterruptedException { while( usedslots == goods.length ) Thread.yield(); usedslots++; goods[putptr] = x; putptr = ( putptr + 1) % goods.length; 54.4 Ilustrasi Klasik: Bounded Buffer 2004 7

Cont. public Object take() throws InterruptedException { while( usedslots == 0) Thread.yield(); Object x = goods[takeptr]; goods[takeptr] = null; takeptr = ( takeptr + 1) % goods.length; usedslots--; return x; 54.4 Ilustrasi Klasik: Bounded Buffer 2004 8

yield() Thread tetap dalam runnable state tetapi mengizinkan JVM untuk mengambil runnable thread lainnya untuk dijalankan. 54.4 Ilustrasi Klasik: Bounded Buffer 2004 9

SynchronizedBoundedBuffer public class SynchronizedBoundedBuffer{ protected final Object[] goods; protected int putptr = 0; protected int takeptr = 0; protected int usedslots = 0; public SynchronizedBoundedBuffer( int capacity ) throws IllegalArgumentException { if( capacity <= 0 ) throw new IllegalArgumentException(); goods = new Object[capacity]; public synchronized void put( Object x) throws InterruptedException { while( usedslots == goods.length ) wait(); goods[putptr] = x; putptr = ( putptr + 1) % goods.length; 54.4 Ilustrasi Klasik: Bounded Buffer 2004 10

Cont. if( usedslots++ == 0 ) notifyall(); public synchronized Object take() throws InterruptedException { while( usedslots == 0) wait(); Object x = goods[takeptr]; goods[takeptr] = null; takeptr = ( takeptr + 1) % goods.length; if( usedslots-- == goods.length ) notifyall(); return x; 54.4 Ilustrasi Klasik: Bounded Buffer 2004 11

Wait() 1. Thread melepas lock terhadap objek. 2. Status thread diubah menjadi blocked. 3. Thread diletakkan dalam wait set untuk objek tersebut. 54.4 Ilustrasi Klasik: Bounded Buffer 2004 12

notify() & notifyall() 1. Mengambil thread dari daftar tunggu dari objek yang telah dilepas lock-nya 2. Memindahkan T dari wait set ke entry set 3. Mengubah status T dari blocked ke runnable 54.4 Ilustrasi Klasik: Bounded Buffer 2004 13

BufferArray public class BufferArray { protected final Object[] array; protected final putptr = 0; protected final takeptr = 0; public BufferArray( int n ){ array = new Object[n]; synchronized void insert( Object x ){ array[putptr] = x; putptr = ( putptr + 1 )%array.length; synchronized Object extract(){ Object x = array[ takeptr ]; array[ takeptr ] = null; takeptr = ( takeptr + 1)%array.length; return x; 54.4 Ilustrasi Klasik: Bounded Buffer 2004 14

Semaphore : Counting Version Counting Semaphore bisa digunakan untuk mengontrol akses ke resource dalam jumlah terbatas yang diberikan. 54.4 Ilustrasi Klasik: Bounded Buffer 2004 15

Ide dasar Bounded Buffer dengan Semaphore 1. Untuk buffer berukuran n,ada sebanyak n put permits dan 0 take permits. 2. Operasi take harus acquire sebuah takepermits dan kemudian me-release sebuah put-permits. 3. Operasi put harus acquire sebuah putpermits dan kemudian me-release sebuah take-permits. 54.4 Ilustrasi Klasik: Bounded Buffer 2004 16

BoundedBufferWithSemaphore public class BoundedBufferWithSemaphore { protected final BufferArray buffer; protected final Semaphore putpermits; protected final Semaphore takepermits; public BoundedBufferWithSemaphore(int capacity ){ if( capacity <= 0 ) throw new IllegalArgumentException(); buffer = new BufferArray ( capacity ); putpermits = new Semaphore ( capacity ); takepermits = new Semaphore (0); public void put (Object x) throws InterruptedException{ putpermits.acquire(); buffer.insert( x ); takepermits.release(); 54.4 Ilustrasi Klasik: Bounded Buffer 2004 17

Cont. public Object take() throws InterruptedException{ takepermits.acquire(); Object x = buffer.extract(); putpermits.release(); return x; 54.4 Ilustrasi Klasik: Bounded Buffer 2004 18

Semaphore public class Semaphore implements Sync{ protected long permits; public Semaphore( long initialpermits ){ permits = initialpermits; public synchronized void release(){ ++permits; notify(); public void acquire() throws InterruptedException{ if( Thread.interrupted() ) throw new InterruptedException(); synchronized( this ){ try{ while( permits <= 0 ){ wait(); 54.4 Ilustrasi Klasik: Bounded Buffer 2004 19

Cont. --permits; catch( InterruptedException ie ){ notify(); throw ie; // Sync interface public interface Sync{ void acquire() throws InterruptedException; void release(); 54.4 Ilustrasi Klasik: Bounded Buffer 2004 20

Livelock Keadaan dimana suatu proses terus berusaha melakukan sesuatu namun selalu gagal, dikarenakan kondisi yang diperlukan agar proses tersebut bisa terus berjalan tidak terpenuhi. 54.4 Ilustrasi Klasik: Bounded Buffer 2004 21

Copyright Silahkan menampilkan, menyebarkan, atau mendistribusikan slide ini secara bebas, selama tidak mengubah isinya, dan tidak diperbolehkan digunakan untuk tujuan komersial. (educational only ). Kelompok 54.4 Semester gasal 2004; 54.4 Ilustrasi Klasik: Bounded Buffer 2004 22