• Tidak ada hasil yang ditemukan

Readers-Writers & The Dining Philosophers Problem

N/A
N/A
Protected

Academic year: 2022

Membagikan "Readers-Writers & The Dining Philosophers Problem"

Copied!
20
0
0

Teks penuh

(1)

Readers-Writers

&

The Dining Philosophers Problem

Maharmon Arnaldo Api Perdana

Contact: [email protected]

(2)

Pembahasan

• Masalah Readers-Writers

• Program Readers-Writers

• Solusi Readers-Writers

• Masalah The Dining Philosopher

• Semafor Sebagai Solusi

• Solusi Masalah The Dining Philosoper

(3)

Readers - Writers

• Terdiri dari dua proses:

– Readers, yang berfungsi sebagai pembaca

– Writers, yang berfungsi sebagai pembaca dan penulis

• Kedua proses berbagi sumber daya penyimpanan yang sama

• Masalah: Adanya beberapa pembaca dan penulis yang ingin mengakses suatu berkas secara bersamaan

• Tujuan: data tidak menjadi korupsi

(4)

Kondisi Readers - Writers

• Pembaca dapat membaca secara simultan

• Hanya boleh ada satu penulis pada suatu saat

• Bila ada yang menulis, tidak boleh ada yang

membaca

(5)

Readers

public class Reader extends Thread {

public Reader(int r, Database db) {

readerNum = r;

server = db;

}

public void run() {

int c;

while (true) {

//System.out.println("reader " + readerNum + " is sleeping.");

Database.napping();

System.out.println("reader " + readerNum + " wants to read.");

c = server.startRead();

(6)

Readers (2)

// you have access to read from the database

System.out.println("reader " + readerNum + " is reading. Reader Count =

" + c);

Database.napping();

System.out.print("reader " + readerNum + " is done reading. ");

c = server.endRead();

//System.out.println("reader " + readerNum + " is done reading. Count =

" +c);

} }

private Database server;

private int readerNum;

(7)

Writers

public class Writer extends Thread {

public Writer(int w, Database db) { writerNum = w;

server = db;

}

public void run() { while (true)

{

//System.out.println("writer " + writerNum + " is sleeping.");

Database.napping();

System.out.println("writer " + writerNum + " wants to write.");

server.startWrite();

(8)

Writers (2)

// you have access to write to the database

System.out.println("writer " + writerNum + " is writing.");

Database.napping();

System.out.println("writer " + writerNum + " is done writing.");

server.endWrite();

//System.out.println("writer " + writerNum + " is done writing.");

} }

private Database server;

private int writerNum;

}

(9)

Solusi Readers - Writers

• Pembaca Diprioritaskan

• Penulis Diprioritaskan

• Pembaca Dan Penulis Mendapat Prioritas

yang sama

(10)

Solusi Dengan Pembaca Diprioritaskan

• Bisa terjadi Starvation untuk proses Writer

public void mulaiMembaca(){

mutex.tunggu();

nPembaca++;

if (nPembaca == 1) brks.tunggu();

mutex.sinyal();

}

public void selesaiMembaca(){

mutex.tunggu();

--nPembaca;

if (nPembaca == 0) brks.sinyal();

mutex.sinyal();

}

public void mulaiMenulis(){

brks.tunggu();

}

public void selesaiMenulis(){

brks.sinyal();

}

(11)

Solusi Dengan Penulis Diprioritaskan

• Dapat menyebabkan starvation untuk proses Reader.

public void mulaiMembaca(){

mutex1.tunggu();

baca.tunggu();

mutex2.tunggu();

nPembaca++;

if (nPembaca == 1) tulis.tunggu();

mutex2.sinyal();

baca.sinyal();

mutex1.sinyal();

}

public void selesaiMembaca(){

mutex2.tunggu();

nPembaca--;

if (nPembaca == 0) tulis.sinyal();

mutex2.sinyal();

}

(12)

Solusi Dengan Penulis Diprioritaskan (2)

public void mulaiMenulis(){

mutex3.tunggu();

nPenulis++;

if (nPenulis == 1) baca.tunggu();

mutex3.sinyal();

tulis.tunggu();

}

public void selesaiMenulis(){

tulis.sinyal();

mutex3.tunggu();

nPenulis--;

if (nPenulis == 0) baca.sinyal();

mutex3.sinyal();

}

(13)

Solusi Dengan Pembaca Dan Penulis Mendapat Prioritas Sama

• Ada kemungkinan terjadi antrian yang

panjang

(14)

Dining Philosophers

(15)

Dining Philosophers

• Merupakan masalah klasik sinkronisasi karena menjadi contoh bagi masalah concurrency-

control pada tingkat yang lebih tinggi

• Representasi sederhana atas kebutuhan untuk mengalokasikan sumber daya kepada

beberapa proses tanpa terjadi deadlock maupun starvation

• Diketahui sejumlah (N) filsuf yang hanya

memiliki tiga kondisi; berpikir, lapar, dan makan duduk pada meja bundar

• Di antara para filsuf terdapat satu buah sumpit

dan di tengah meja terdapat semangkuk mie

(16)

Dining Philosophers (2)

• Yang harus diperhatikan:

¾Deadlock: Semua filsuf ingin makan dan telah memegang sumpit

¾Starvation: Ada filsuf yang kelaparan dalam

waktu yang lama

(17)

Semafor

• Solusi yang mungkin langsung terlihat adalah dengan menggunakan semafor.

• Setiap sumpit mewakili sebuah semafor.

• Jika filsuf ingin mengambil sumpit, ia jalankan perintah wait

• Jika filsuf ingin meletakkan kembali

sumpit, ia jalankan perintah signal

(18)

Semafor (2)

var chopstick: array [0..4] of semaphore;

repeat

wait (chopstick [i]);

wait (chopstick [i + 1 mod 5 ]);

… eat

signal (chopstick [i]);

signal (chopstick [i + 1 mod 5 ]);

… think

(19)

Kelemahan Semaphor

• Low Level

• Karena tersebar di seluruh program, maka sulit dalam pemeliharaannya

• Error yang terjadi sulit untuk dideteksi

• Lebih baik menggunakan high-level construct

• Dapat terjadi deadlock!

(20)

Solusi Dining Philosophers

• Filsuf hanya bisa mengambil sumpit jika kedua sumpit di sampingnya ada

• Menggunakan solusi asimetris

• Jumlah filsuf pada suatu meja maksimal adalah empat

• Menggunakan Monitor

Referensi

Dokumen terkait

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS MULAWARMAN.

Upaya yang dilakukan penyidik untuk mengatasi kendala internal yakni dengan melakukan upaya internal antara lain melakukan penerimaan anggota baru pada Unit

(C) Pengamatan DAS, Pengamatan iklim suatu daerah, Pemetaan pola aliran sungai, Pengamatan intensitas banjir (D) Pengamatan DAS, Studi sedimentasi sungai, Pemetaan pola

This freedom is drawn from liberation from oppressive systems in society, poverty and abuse, slavery, ignorance, and the absence of the freedom to choose one's culture or

Ukur stoma dengan menggunakan panduan ukur dan buat lubang pada kantong dengan ukuran 0,3-0,4 cm lebih besar dari stoma. Jika menggunakan kantong one piece, lepaskan kertas

Benda yang mempunyai bentuk tidak tetap dan volum yang tidak teta 2.. Yang termasuk benda

Pada penyajian tugas akhir kepenarian, penyaji diharuskan dapat menguasai 10 materi antara lain : tari Srimpi Sangupati, Srimpi Anglir Mendhung, Srimpi Ludiro