algoritma di sistem_operasi

5
Yohanes Dwiki Witman Gusti Made/140707748 Bounded Buffer (Producer-Consumer) Proses berbagi sebuah buffer antara produsen (meletakkan informasi ke buffer) dan konsumen (mengambil informasi dari buffer). Terdiri atas m buah produsen dan n buah konsumen. Masalah timbul ketika produsen ingin menaruh barang yang baru tetapi buffer penuh. Solusinya adalah membiarkan produsen istirahat (sleep) dan akan dibangunkan ketika konsumen telah mengambil satu/lebih barang dari buffer. Jika konsumen ingin mengambil barang dari buffer saat buffer kosong, maka konsumen istirahat (sleep) sampai produsen menaruh barang ke buffer dan membangunkan (wake up) consumer. Solusi lainnya: buat variabel count untuk mengetahui jumlah barang di buffer. Jumlah maksimum barang di buffer adalah N. Produser mengecek apakah nilai count sama dengan nilai N. Jika benar maka produsen akan istirahat (sleep), tetapi jika nilai tidak sama, produsen akan terus menambah barang dan menaikkan nilai count. Readers and Writers Problem yang memodelkan proses akses database. Banyak proses berkompetisi untuk membaca (read) dan menulis (write). Banyak proses membaca database pada saat yang sama dibolehkan, tetapi jika ada proses menulis database, tidak boleh ada proses lain yang mengakses database termasuk membaca database. Solusi: misalkan reader datang dan diproses database. Saat reader diproses dan writer menunggu dibelakangnya, dan ada reader lain di belakang writer, maka reader lain dibelakang writer itu justru yang akan diterima dengan segera. Sehingga tidak ada satupun reader yang menunggu baru writer boleh diproses. Selama paling tidak ada satu reader yang aktif, maka reader berikutnya jika baru datang akan diterima, segera sesuai kedatangan mereka. Konsekuensinya, writer tidak akan pernah mendapatkan kesempatan di database. Solusi tersebut belum optimal. Sangat tidak efisien jika reader lainnya langsung melakukan reading sebelum writers melaksanakan proses writing-nya. Jika kasus ini terjadi berulang kali, writer akan mengalami starvation (kelaparan/kekurangan

Upload: dwiki-witman

Post on 16-Apr-2017

33 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Algoritma di sistem_operasi

Yohanes Dwiki Witman Gusti Made/140707748

Bounded Buffer (Producer-Consumer)

Proses berbagi sebuah buffer antara produsen (meletakkan informasi ke buffer) dan

konsumen (mengambil informasi dari buffer). Terdiri atas m buah produsen dan n buah

konsumen. Masalah timbul ketika produsen ingin menaruh barang yang baru tetapi

buffer penuh.

Solusinya adalah membiarkan produsen istirahat (sleep) dan akan dibangunkan ketika

konsumen telah mengambil satu/lebih barang dari buffer. Jika konsumen ingin

mengambil barang dari buffer saat buffer kosong, maka konsumen istirahat (sleep)

sampai produsen menaruh barang ke buffer dan membangunkan (wake up) consumer.

Solusi lainnya: buat variabel count untuk mengetahui jumlah barang di buffer. Jumlah

maksimum barang di buffer adalah N. Produser mengecek apakah nilai count sama

dengan nilai N. Jika benar maka produsen akan istirahat (sleep), tetapi jika nilai tidak

sama, produsen akan terus menambah barang dan menaikkan nilai count.

Readers and Writers

Problem yang memodelkan proses akses database. Banyak proses berkompetisi untuk

membaca (read) dan menulis (write). Banyak proses membaca database pada saat yang

sama dibolehkan, tetapi jika ada proses menulis database, tidak boleh ada proses lain

yang mengakses database termasuk membaca database.

Solusi: misalkan reader datang dan diproses database. Saat reader diproses dan writer

menunggu dibelakangnya, dan ada reader lain di belakang writer, maka reader lain

dibelakang writer itu justru yang akan diterima dengan segera. Sehingga tidak ada

satupun reader yang menunggu baru writer boleh diproses. Selama paling tidak ada satu

reader yang aktif, maka reader berikutnya jika baru datang akan diterima, segera sesuai

kedatangan mereka. Konsekuensinya, writer tidak akan pernah mendapatkan

kesempatan di database.

Solusi tersebut belum optimal. Sangat tidak efisien jika reader lainnya langsung

melakukan reading sebelum writers melaksanakan proses writing-nya. Jika kasus ini

terjadi berulang kali, writer akan mengalami starvation (kelaparan/kekurangan

Page 2: Algoritma di sistem_operasi

Yohanes Dwiki Witman Gusti Made/140707748

resource). Oleh karena itu, writer harus segera melakukan prosesnya apabila sudah

ditambah di queue. Syarat baru yang dihasilkan yaitu “setiap writer yang telah masuk

kedalam queue, tidak boleh dibiarkan menunggu lebih lama dari yang dibutuhkan”.

Syarat ini biasa disebut sebagai ‘Writer’s Preference’.

Jadi, terdapat dua variasi solusi pada masalah ini, yaitu :

1. Seorang reader tidak perlu menunggu reader lain untuk selesai hanya karena ada

writer menunggu (reader memiliki prioritas lebih tinggi dibanding dengan writer).

2. Jika ada writer yang sedang menunggu, maka tidak boleh ada reader lain yang

bekerja (writer memiliki prioritas yang lebih tinggi).

Dining Philosopher

Pada tahun 1965, Djikstra menyelesaikan sebuah masalah sinkronisasi yang dapat

diuraikan sebagai berikut: Lima orang filosof duduk mengelilingi meja bundar, masing-

masing mempunyai sepiring sphagetti. Sphagetti tersebut sangat licin dan

membutuhkan dua sumpit untuk memakannya. Diantara sepiring spageti terdapat satu

sumpit.

Kehidupan para filosof hanya makan atau berpikir. Ketika seorang filosof lapar, dia

berusaha mendapatkan 2 sumpit (sumpit kiri dan sumpit kanan sekaligus). Jika berhasil,

filosof makan sementara waktu, setelah selesai, ia meletakkan kedua sumpit dan

melanjutkan berpikir.

Dilanjutkan dengan prosedur take-fork yaitu menunggu sumpit yang sesuai baru

diambil. Sayangnya dari solusi ini ternyata salah. Lima orang filosof mengambil sumpit

kirinya bersamaan. Ketika lima orang tersebut mengambil sumpit kanan mereka, maka

yang terjadi adalah deadlock.

Page 3: Algoritma di sistem_operasi

Yohanes Dwiki Witman Gusti Made/140707748

Masalah bisa dipecahkan ketika filosof mengambil sumpit kiri, periksa apakah sumpit

kanan bisa diambil. Jika sumpit kanan tidak mungkin diambil, filosof itu meletakkan

kembali sumpit kirinya, menunggu beberapa saat, lalu mengulangi proses yang sama.

Usulan tersebut juga salah. Semua filosof dapat memulai hal tersebut secara bersamaan,

mengambil sumpit kiri, melihat sumpit kanan mereka yang tidak mungkin untuk

diambil, meletakkan kembali sumpit kiri mereka, menunggu, mengambil sumpit kiri

mereka lagi secara bersamaan, dst. Situasi ini menyebabkan program terus berjalan

secara tidak terbatas tetapi tidak ada perubahan/kemajuan yang dihasilkan (starvation).

Beberapa perbaikan yang dapat dilakukan adalah:

Max 4 filosof secara bersamaan duduk di meja makan

Filosof mengambil sumpit jika kedua sumpit tersedia

Penyelesaian asimetris: Filosof ganjil mengambil sumpit di kirinya baru

kemudian yang kanan, sementara filosof genap dengan cara sebaliknya.

Solusi :

Array state dengan 3 kondisi.

Kondisi: makan (eating), think (berpikir), dan lapar (hungry)

Dengan kondisi demikian, jika filosof = 1, maka LEFT = 2, dan RIGHT = 3.

untuk prosedur seperti ini, maka array dari semaphore hungry dapat ditahan jika

LEFT atau RIGHTnya sedang eating.

The Sleeping Barber Problem

Barber shop terdiri dari satu orang tukang cukur, 1 buah kursi untuk cukur rambut,

dan n kursi tempat tunggu antrian. Ketika tidak ada pelanggan, atau tidak ada yang

sedang mengantri di kursi tunggu, maka tukang cukur akan tidur dikursi cukur.

Page 4: Algoritma di sistem_operasi

Yohanes Dwiki Witman Gusti Made/140707748

Ketika pelanggan datang, maka pelanggan akan membangunkan tukang cukur yang

sedang tertidur (sleeping barber).

Barber :

Ketika customer menunggu, letakkan satu customer tsb ke kursi, lalu potong

rambutnya

Jika sudah selesai, letakkan satu customer berikutnya

Jika tidak ada customer, barber tidur, sampai ada cutomer yang datang

Customer :

Jika barber tidur, bangunkan barber

Jika ada customer sedang potong rambut, tunggu barber, di kursi tunggu

Jika kursi tunggu penuh, tinggalkan toko

Solusi untuk permasalahan ini ialah dengan menggunakan 3 buah semaphore :

Customer (tidak termasuk yg dikursi cukur)

Barber (0 dan 1)

Mutex (mutual exclusion) dan menggunakan 1 variable waiting

Page 5: Algoritma di sistem_operasi

Yohanes Dwiki Witman Gusti Made/140707748

REFERENSI

http://abdu-syakur-fst13.web.unair.ac.id/artikel_detail-115916-Sistem%20Operasi-

Masalah%20Klasik%20Sinkronisasi.html

https://asripujiastuti.files.wordpress.com/2012/07/modul-7_proses_sinkronisasi.ppt

http://opensource.telkomspeedy.com/repo/abba/v06/Kuliah/SistemOperasi/2003/44/produ

k/SistemOperasi/c45.html