• Tidak ada hasil yang ditemukan

Masalah-Masalah Klasik Sinkronisasi

N/A
N/A
Protected

Academic year: 2021

Membagikan "Masalah-Masalah Klasik Sinkronisasi"

Copied!
7
0
0

Teks penuh

(1)

Masalah-Masalah Klasik Sinkronisasi

Abas Ali Pangera, Dony Ariyus, Jurusan Teknik Informatika, STMIK AMIKOM Yogyakarta, Jl. Ring Road Utara, Condong Catur, Sleman, Yogyakarta - Indonesia

Untuk mengimplementasikan permasalahan sinkronisasi dapat menggunakan model yang digunakan untuk permasalahan Bounded Buffer, Reader Writer dan Dining Philosopher yang akan dijelaskan di bawah ini.

Bounded-Buffer (Producer-Consumer) Problem

Produsen menghasilkan barang dan konsumen yang akan menggunakannya. Ada beberapa batasan yang harus dipenuhi, antara lain :

• Barang yang dihasilkan oleh produsen terbatas • Barang yang dipakai konsumen terbatas

• Konsumen hanya boleh menggunakan barang yang dimaksud setelah produsen menghasilkan barang dalam jumlah tertentu

• Produsen hanya boleh memproduksi barang jika konsumen sudah kehabisan barang Untuk penyelesaian permasalahan bounded buffer menggunakan semaphore menggunakan variabel umum berikut : semaphore full, empty, mutex; Inisialisasi untuk variable di atas, full = 0, empty = n, mutex = 1. Struktur program untuk produsen adalah

do {

menghasilkan item pada nextp

wait(empty); wait(mutex);

menambah nextp ke buffer

signal(mutex); signal(full); } while (1);

Sedangkan struktur program untuk konsumen adalah do {

wait(full) wait(mutex);

mengambil item dari buffer ke nextc

signal(mutex); signal(empty);

(2)

… } while (1);

Reader and Writer Problem

Terdapat dua variasi pada masalah ini, yaitu :

1. seorang reader tidak perlu menuggu reader lain untuk selesai hanya karena ada writer menunggu (reader memiliki prioritas lebih tinggi disbanding dengan writer)

2. Jika ada writer yang sedang menunggu, maka tidak boleh ada reader lain yang bekerja (writer memiliki prioritas yang lebih tinggi)

Jika terdapat writer dalam critical section dan terdapat n reader yang menunggu, maka satu reader akan antri di wrt dan n-1 reader akan antri di mutex. Jika writer mengeksekusi

signal(wrt), maka dapat disimpulkan bahwa eksekusi adalah menunggu reader atau menunggu satu writer. Variabel umum yang digunakan adalah

semaphore mutex, wrt;

Inisialisasi variable di atas adalah mutex = 1, wrt = 1, readcount = 0. Struktur proses writer adalah wait(wrt); menulis signal(wrt);

Sedangkan struktur proses reader adalah wait(mutex); readcount++; if (readcount == 1) wait(rt); signal(mutex); … membaca … wait(mutex); readcount--; if (readcount == 0) signal(wrt); signal(mutex): Dining-Philosophers Problem

Pada tahun 1965, Djikstra menyelesaikan sebuah masalah sinkronisasi yang beliau sebut dengan dining philisophers problem. Dining philosophers dapat diuraikan sebagai berikut: Lima orang

(3)

filosuf duduk mengelilingi sebuah meja bundar. Masing-masing filosof mempunyai sepiring spageti. Spageti-spageti tersebut sangat licin dan membutuhkan dua garpu untuk memakannya. Diantara sepiring spageti terdapat satu garpu.

Kehidupan para filosof terdiri dari dua periode, yaitu makan atau berpikir. Ketika seorang filosof lapar, dia berusaha untuk mendapatkan garpu kiri dan garpu kanan sekaligus. Jika sukses dalam mengambil dua garpu, filosof tersebut makan untuk sementara waktu, kemudian meletakkan kedua garpu dan melanjutkan berpikir.

Pertanyaan kuncinya adalah, dapatkah anda menulis program untuk masing-masing filosof yang melakukan apa yang harus mereka lakukan dan tidak pernah mengalami kebuntuan.

Prosedur take-fork menunggu sampai garpu-garpu yang sesuaididapatkan dan kemudian menggunakannya. Sayangnya dari solusi ini ternyata salah. Seharusnya lima orang filosof mengambil garpu kirinya secara bersamaan. Tidak akan mungkin mereka mengambil garpu kanan mereka, dan akan terjadi deadlock.

Kita dapat memodifikasi program sehingga setelah mengambil garpu kiri, program memeriksa apakah garpu kanan memungkinkan untuk diambil. Jika garpu kanan tidak mungkin diambil, filosof tersebut meletakkan kembali garpu kirinya, menunggu untuk beberapa waktu, kemudia mengulangi proses yang sama. Usulan tersebut juga salah, walau pun dengan alasan yang berbeda. Dengan sedikit nasib buruk, semua filosof dapat memulai algoritma secara bersamaan, mengambil garpu kiri mereka, melihat garpu kanan mereka yang tidak mungkin untuk diambil, meletakkan kembali garpu kiri mereka, menunggu, mengambil garpu kiri mereka lagi secara bersamaan, dan begitu seterusnya. Situasi seperti ini dimana semua program terus berjalan secara tidak terbatas tetapi tidak ada perubahan/kemajuan yang dihasilkan disebut starvation.

Sekarang kita dapat berpikir "jika filosof dapat saja menunggu sebuah waktu acak sebagai pengganti waktu yang sama setelah tidak dapat mengambil garpu kiri dan kanan, kesempatan bahwa segala sesuatau akan berlanjut dalam kemandegan untuk beberapa jam adalah sangat kecil." Pemikiran seperti itu adalah benar,tapi beberapa aplikasi mengirimkan sebuah solusi yang selalu bekerja dan tidak ada kesalahan tidak seperti hsk nomor acak yang selalu berubah.

Sebelum mulai mengambil garpu, seorang filosof melakukan DOWN di mutex. Setelah menggantikan garpu dia harus melakukan UP di mutex. Dari segi teori, solusi ini cukup

memadai. Dari segi praktek, solusi ini tetap memiliki masalah. Hanya ada satu filosof yang dapat makan spageti dalam berbagai kesempatan. Dengan lima buah garpu, seharusnya kita bisa

menyaksikan dua orang filosof makan spageti pada saat bersamaan.

Solusi yang diberikan di atas benar dan juga mengizinkan jumlah maksimum kegiatan paralel untuk sebuah jumlah filosf yang berubah-ubah ini menggunakan sebuah array, state, untuk merekam status seorang filosof apakah sedang makan (eating), berpikir (think), atau sedang lapar (hungry) karena sedang berusaha mengambil garpu. Seorang filosof hanya dapat berstatus makan (eating) jika tidak ada tetangganya yang sedang makan juga. Tetangga seorang filosof didefinisikan ole LEFT dan RIGHT.

(4)

Dengan kata lain, jika i = 2, maka tetangga kirinya (LEFT) = 1 dan tetangga kanannya (RIGHT) = 3. Program ini menggunakan sebuah array dari semaphore yang lapar (hungry) dapat ditahan jika garpu kiri atau kanannya sedang dipakai tetangganya. Catatan bahwa masing-masing proses menjalankan prosedur filosof sebagai kode utama, tetapi prosedur yang lain seperti take-forks, dan test adalah prosedur biasa dan bukan proses-proses yang terpisah

Lima Filosof Dalam Satu Meja Makan

Struktur data yang digunakan untuk penyelesaian permasalahan ini dengan semaphore Adalah semaphore chopstick[5];

Dimana semua nilai array dinisialisasi 1. Struktur program untuk filosof ke i adalah do { wait(chopstick[i]) wait(chopstick[(i+1) % 5]) makan signal(chopstick[i]); signal(chopstick[(i+1) % 5]); berfikir } while (1);

Meskipun solusi ini menjamin bahwa tidak ada 2 tetangga yang makan bersama sama, namun masih mungkin terjadi deadlock, yaitu jika tiap-tiap filosof lapar dan mengambil supit kiri, maka semua nilai supit = 0, dan juka kemudian tiap-tiap filosof akan mengambil supit kanan, maka akan terjadi deadlock. Ada beberapa cara untuk menghindari deadlock, antara lain :

(5)

1. mengijinkan paling banyak 4 orang filosof yang duduk bersama-sama pada satu meja. 2. Mengijinkan seorang filosof mangambil supit hanya jika kedua supit itu ada (dengan

catatan, bahwa ia harus mengambil pada critical section)

3. Menggunakan suatu solusi asimetrik, yaitu filosof pada nomor ganjil mengambil supit kanan dulu baru supit kiri. Sedangkan filosof yang duduk di kursi genap mengambil supit kanan dulu baru supit kiri.

Monitors

Solusi sinkronisasi ini dikemukakan oleh Hoare pada tahun 1974. Monitor adalah kumpulan prosedur, variabel dan struktur data di satu modul atau paket khusus. Proses dapat memanggil prosedur-prosedur kapan pun diinginkan. Tapi proses tak dapat mengakses struktur data internal dalam monitor secara langsung. Hanya lewat prosedur-prosedur yang dideklarasikan minitor untuk mengakses struktur internal.

Properti-properti monitor adalah sebagai berikut:

• Variabel-variabel data lokal, hanya dapat diakses oleh prosedur-prosedur dala monitor dan tidak oleh prosedur di luar monitor.

• Hanya satu proses yang dapat aktif di monitor pada satu saat. Kompilator harus mengimplementasi ini(mutual exclusion).

• Terdapat cara agar proses yang tidak dapat berlangsung di-blocked. Menambahkan variabel-variabel kondisi, dengan dua operasi, yaitu Wait dan Signal.

• wait: Ketika prosedur monitor tidak dapat berlanjut (misal producer menemui buffer penuh) menyebabkan proses pemanggil diblocked dan mengizinkan proses lain masuk monitor.

• Signal: Proses membangunkan partner-nya yang sedang diblocked dengan signal pada variabel kondisi yang sedang ditunggu partnernya.

• Versi Hoare: Setelah signal, membangunkan proses baru agar berjalan dan menunda proses lain. vii. Versi Brinch Hansen: Setelah melakukan signal, proses segera keluar dari monitor.

Dengan memaksakan disiplin hanya satu proses pada satu saat yang berjalan pada monitor, monitor menyediakan fasilitas mutual exclusion. Variabel-variabel data dalam monitor hanya dapat diakses oleh satu proses pada satu saat. Struktur data bersama dapat dilindungi dengan menempatkannya dalam monitor. Jika data pada monitor merepresentasikan sumber daya, maka monitor menyediakan fasilitas mutual exclusion dalam mengakses sumber daya itu.

Daftar Pustaka

Ariyus,Dony,2006, “Computer Security”, Andi Offset, Yogyakarta Ariyus, Dony,2005,” kamus hacker”, Andi offset, Yogyakarta

Bob DuCharme, 2001,” The Operating System Handbook or, Fake Your Way Through Minis and Mainframes” Singapore: McGraw-Hill Book Co

(6)

Deitel, Harvey M, 2004 “ operating systems” 3th Edition, Massachusetts: Addison-Wesley Publshing Company

Gary B. Shelly, 2007, ”Discovering Computers: Fundamentals” Thomson Gollmann, Dieter,1999 “Computer Security” Jhon Willey & Son Inc, Canada

Grosshans,D. 1986,” File system: design and implementation”, Englewwod Cliffs, New Jersey : Prentice-Hall Inc.

Harvey M Deitel dan Paul J Deitel. 2005. Java How To Program. Sixth Edition. Prentice Hall. Hoare, C.A.R. 1985” Communication sequential processes”Englewood Cliffs, New Jersey, Prentice Hall Inc

Jean Bacon, Tim Harris, 2003 “Operating Systems: Concurrent and Distributed Software Design” Massachhussets. Addison Wesley

Kenneth H Rosen. 1999. “Discrete Mathematics and Its Application”. McGraw Hill.

Madnick,Stuart E dan John J. Donovan, 1974 “ operating system”, Singapore: McGraw-Hill Book Co

Michael Kifer and Scott A. Smolka, 2007 Introduction to Operating System Design and Implementation The OSP 2 Approach, Springer-Verlag London

Microsoft 1999. Microsoft Windows User Experience. Microsoft Press.

Milenkovie, Milan. 1992. “Operationg system: Concepts and Design”, Singapore: McGraw-Hill Book Co

Randall Hyde. 2003. The Art of Assembly Language. First Edition. No Strach Press

Robert betz, 2001 “Intoduction to Real-time operation system”, Department of Electrical and Computer Engineering University of Newcastle, Australia

Robert Love. 2005. Linux Kernel Development . Second Edition. Novell Press

Ron White,1998, How Computers Work, Fourth Edition, Que corporation, A Division of Macmillan Computer Publishing, USA

Shay, William A. 1993, “ Introduction to Operationg System” New York: HarperCollins College Publishers

Silberschatz, Peter Galvin, dan Grag Gagne. 2000. “Applied Operating System, 1s”t “ John Wile & Hiil Book Co

(7)

Silberschatz, A., dan Galvin, P.2003, “Operating Sistem Concept. Sixth Edition”. Massachhussets. Addisson- Wasley

Silberschatz, Peter Galvin, dan Grag Gagne. 2005. “Operating Systems Concepts”. Seventh

Edition. John Wiley & Sons.

Stalling, William, 1995, “Operating Sistems”. New Jersey. Prentice – Hall

Stalling, William, 1996” Computer Organization and Architecture”. New Jersey. Prentice – Hall

Stalling William, 1995, “Network and Internetwork Security” Prentice-Hall, USA

Tanenbaum, Andrew S, 1992 “Modern Operating Sistems”. New Jersey. Prentice – Hall Taenbaum, Andrew S, 2006, “Operating Systems Design and Implementation, Third Edition” Massachusetts

Referensi

Dokumen terkait

3) Peneliti selanjutnya dapat menggali lagi keterkaitan antara compassion dengan pola asuh orangtua, untuk mengetahui apakah orangtua dengan tingkar compassion

kandungan kalori lebih rendah dari lemak lain, (%) yang minimal disimpan sebagai lemak, dan (3) memberikan kontribusi untuk meningkatkan metabolisme untuk membakar lebih

Kebijakan puritanisme oleh sultan Aurangzeb dan pengislaman orang-orang Hindu secara paksa demi menjadikan tanah India sebagai negara Islam, dengan menyerang berbagai praktek

Walaupun disudutkan secara tidak langsung oleh pihak lain, akan tetapi dengan kebesaran hati dan tidak terlepas dari rasa persatuan kebangsaan Muhammadiyah tetap

Preheating ini dilakukan selama 180 jam pada sagger 1-5 dan ini dilakukan hingga suhu mencapai 800 o C imana akan terjadi pencairan pitch, penguapan pitch hal ini bertujuan

Variasi kadar air kaca (waterglass) sebagai bahan pengikat pembuatan cetakan pasir kering (dry sand) akan mempengaruhi kekerasan dan kekuatan tarik produk pulley

Sistem suspensi monotube hydraulic shock absorber yang optimal kemudian diaplikasikan pada sistem setengah kendaraan motor dengan input yang digunakan, yaitu input

 berusia 60 60 tahun tahun berhubungan berhubungan dengan dengan peningkatan peningkatan risiko risiko /,$ /,$ kali kali lipat lipat untuk untuk terjadi terjadi