Langsung ke konten utama

Masalah Klasik Sinkronisasi yang Kerap Dihadapi Sistem Operasi



A.    Bounded Buffer
Buffer merupakan proses pertukaran pesan-pesan yang menggunakan antrean sementara sebagai suatu penyangga. Buffer itu sendiri terdari dari 3 jenis berdasarkan kapasitasnya diantaranya buffer berkapasitas 0 (kosong), buffer berkapasitas tak hingga, dan buffer berkapasitas terbatas. Penyangga berkapasitas terbatas terssebut sering disebut sebagai bounded buffer.

Salah satu contoh dari masalah klasik bounded buffer ini adalah proses di antara produsen dan konsumen. Kendala yang dari masalah ini yaitu penjadwalan (scheduling) dan mutual exclusion (mutex) seperti konsumen harus menunggu jika ada buffer kosong, produsen harus menunggu jika buffer sedang penuh, dan hanya satu buffer yang dapat memanipulasi buffer tersebut. Dengan kata lain, terdapat samber daya yang terbatas dan produsen mengisikan (write) harus produknya ke dalam sumber daya tersebut. Sedangkan, konsumen akan mengambil (read) sumber daya yang penuh tersebut dan meninggalkannya pada sumber daya yang kosong. Kompleksitas utama dari masalah tersebut adalah menjaga perhitungan jumlah ketersediaan sumber daya yang kosong ataupun penuh.

Untuk mengatasi masalah tersebut, dibutuhkan semaphore yang berfungsi sebagai penjaga agar produsen tidak mengakses sumber daya saat buffer sedang penuh. Sebaliknya, semaphore juga akan menghalangi konsumen saat buffer kosong. Sedangkan, semaphore biner digunakan untuk menjamin mutex ketika buffer sedang diakses. Semaphore yang tidak penuh akan ditandakan oleh konsumen dan semaphore yang penuh akan diisyaratkan oleh produsen.






B.     Readers and Writers
            Dalam masalah sinkronisasi ini terdapat dua macam proses, yaitu pembaca (reader) dan penulis (writer). Permasalahan ini muncul saat ada beberapa pembaca dan penulis yang berbagi data yang sama atau berbagi sumber daya penyimpanan yang sama. Data yang diakses dapat berupa buffer, file, ataupun objek dari suatu program.  Dalam permasalahan ini, di setiap proses yang berjalan, penulis yang melakukan kegiatan menulis hanya diperbolehkan satu penulis saja. Jika sedang ada penulis yang melakukan proses menulis, maka tidak boleh ada proses membaca. Dalam permasalahan ini diperbolehkan ada lebih dari satu pembaca yang mengakses berkas, namun jika ada penulis yang sedang mengakses berkas maka tidak boleh ada siapapun (pembaca dan penulis lain) yang mengakses berkas tersebut.
            Untuk mengatasi permasalahan ini, terdapat 3 solusi yang dapat dilakukan. Pertama, solusi dengan memprioritaskan pembaca. Solusi ini tepat digunakan jika tujuan yang ingin dicapai adalah memperoleh throughput semaksimal mungkin. Solusi ini bekerja dengan lebih memprioritaskan pembaca meskipun sudah banyak writer yang mengantri. Dengan adanya solusi ini, penulis mungkin saja berada dalam antrian untuk waktu yang tak terbatas. Kedua, solusi dengan memprioritaskan penulis. Pada solusi ini, jika tidak ada yang mengaksess berkas maka penulis akan mengakses berkas dan pembaca akan dibiiarkan mengantri sampai semua penulis  menyelesaikan tugasnya. Keuntungan solusi ini adalah pembaca dapat memperoleh informasi yang selau up-to-date. Namun, kedua solusi tersebut tidak memenuhi syarat bahwa setiap thread tidak boleh dibiarkan menunggu untuk waktu yang tidak terbatas. Solusi yang ketiga adalah pembaca dan penulis memperoleh prioritas yang sama secara bergantian. Pada solusi ini, penulis dan pembaca diberi giliran yang adil dalam hal pengaksesan berkas. Jika tidak ada thread pembaca yang sedang mengakses berkas, maka penulis dapat mengaksesnya. Dan jika selesai maka akan memberikan giliran pada pembaca untuk mengakses berkas. Dengan solusi ini, tidak ada thread yang menunggu dalam waktu yang tidak terbatas maka cara ini merupakan cara yang tepat untuk menyelesaikan masalah konkurensi.

C.    Dining Philosopher

Dining Philosopher adalah salah satu masalah klasik sinkronisasi. Dining Philosopher digambarkan dengan 5 orang filsuf yang duduk mengelilingi sebuah meja bundar. Masing-masing filsuf memiliki 1 piring dan diantara setiap piring terdapat 1 sumpit. Di tengah meja bundar tersebut, terdapat 1 mangkuk berisi spageti. Kehidupan para filsuf terdiri dari 2 periode, yaitu makan atau berpikir. Untuk makan, seorang filsuf harus mengambil 2 sumpit di sisi kiri dan kanan dari piring yang berada di depannya, kemudian mengambil spageti di tengah meja dan memakannya. Setelah selesai makan, filsuf tersebut akan meletakkan masing-masing sumpit di tempat ia mengambilnya dan akan mulai untuk berpikir.
Masalahnya, dapatkah kita membuat program untuk masing-masing filsuf yang akan melakukan apa yang harus mereka lakukan tanpa mengalami deadlock. Jika semua filsuf mengecek secara bersamaan apakah di sisi kirinya terdapat sumpit, dan jika ada ia akan mengambil sumpit tersebut, kemudian ia akan mengecek apakah di sisi kanannya terdapat sumpit, dan jika ada ia akan mengambil sumpit tersebut. Namun karena mereka melakukannya secara bersamaan, dapat dipastikan tidak ada filsuf yang akan mendapatkan sumpit di sisi kanannya.
Solusinya adalah dengan membuat 1 filsuf yang melakukan hal yang berbeda dari filsuf lainnya. Filsuf tersebut akan memulai mengecek sumpit yang terletak disisi kanannya terlebih dahulu, jika ada maka filsuf tersebut akan mengambil sumpit di sisi kanannya dan kemudian mengecek sisi kirinya. Dengan cara ini, maka tidak akan terjadi deadlock. Solusi lain yang dapat dilakukan adalah dengan mengeluarkan 1 filsuf dari meja tersebut, sehingga dalam 1 meja akan terdapat 5 sumpit dan 4 filsuf. Namun solusi ini masih memungkinkan untuk terjadinya starvation. Kondisi ini dapat terjadi jika program memungkinkan filsuf untuk makan berulang kali yang akan menyebabkan filsuf lain tidak dapat menggunakan sumpit.

D.    Sleeping Barber
Sleeping Barber adalah analogi suatu system oeprasi menyelesaikan suatu operasi. Dalam Sebuah tempat cukur, terdapat seorang tukang cukur , dengan 1 tempat kursi untuk pelanggan dicukur.Ketika tidak ada pasien , maka tukang cukur akan tidur. Ketika pelanggan datang , maka pelanggan harus membangunkan si tukang cukur. Jika saat pelanggan datang , namu ada pelanggan lain , maka pelanggan harus menunggu. Jika pelanggan didalam sudah selesai , baru dia bisa masuk. Jika tempat tunggu penuh, maka pelanggan akan pergi Permasalahan tidak akan terjadi apabila antara tukang cukur dan pelanggan tidak sedang berada dalam “race condition”. Jika salah satu saja berada dalam “race condition” maka akan terjadi masalah. Misalnya Jika tukang cukur baru saja selesai memangkas rambut, dan pelanggan ini masih belum keluar, kondisi tunggu penuh , datang pelanggan baru , pelanggan ini akan  pergi karena tunggu masih penuh. Untuk menyelesaikan masalah ini diperlukan algoritma untuk memastikan komponen dari sistem operasi agar tidak berada dalam “race condition”
            Solusinya adalah dengan menggunakan 3 semaphores. Yakni tipe data untuk mengendalikan akses dari resources yang dilakukan bersama. Semaphores pertama untuk barber dengan kondisi 0 – idle dan 1 – sibuk. kedua untuk pelanggan yang berfungsi untuk menghitung jumlah pelanggan yangn menunggu . kemudian sebuah Semaphore mutex. Ketika tukang cukur datang, prosedur tukang cukur memblok semaphore pelanggan sampai pelanggan datang. Ketika Pelanggan datang, prosedur pelanggan dieksekusi dengam mendapatkan mutex untuk masuk kedalam area kritikal. Pelanggan baru harus menunggu sampai pelanggan pertama melepaskan mutex. Setelah mendapatkan mutex, maka pelanggan akan memeriksa apakah jumlah pelanggan yang menunggu kurang dari jumlah kursi yang tersedia, jika tidak , mutex dilepas dan pelanggan pergiJika ada kursi , variable counter tunggu diinkremen dan tukang cukur terbangun , pelanggan melepaskan mutex, tukang cukur mengambil mutex dan memulai potong rambut.Setelah selesai pelanggan pergi. Tukang cukur akan memeriksa apakah ada pelanggan  lain Jika tidak ada , tukang cukur beristirahat

DAFTAR PUSTAKA

Diesburg, Sarah. (n.d.). Semaphores and Bounded Buffer. http://www.cs.uni.edu/~diesburg/courses/cs3430_sp16/sessions/s07/s07_semaphores.pdf .diakses  30 September 2017.
K-State Polytechnic. (n.d.). 3.3.2. Bounded Buffer (Producers and Consumers). http://faculty.salina.k-state.edu/tim/ossg/IPC_sync/bounded_buffer.html . siakses 30 September 2017.
MTU. (n.d.). ThreadMentor: The Producer/Consumer (or Bounded-Buffer) Problem. https://pages.mtu.edu/~shene/NSF-3/e-Book/SEMA/TM-example-buffer.html .diakses  30 September 2017.
Tanebaum .(n.d.). The Sleeping Barber Problem Statement of the Problem and Solution   http://web.cecs.pdx.edu/~harry/Blitz/OSProject/p3/SleepingBarberProblem.pdf 1 Oktober 2017

Hines. (n.d.)CS 431 Introduction to Operating Systems The Sleeping Barber Problem http://sce2.umkc.edu/csee/cotterr/cs431_sp13/barber.html diakses 1 Oktober 2017
Semaphore.http://www.csl.mtu.edu/cs4411.choi/www/Resource/Semaphore.pdf diakses 1 Oktober 2017
Dining Philloshopher https://www.cs.indiana.edu/classes/p415-sjoh/hw/project/dining-philosophers/index.htm diakses 1 Oktober 2017

(n.d).2008. Sync Problems http://nob.cs.ucdavis.edu/classes/ecs150-2008-02/handouts/sync/sync-problems.html. Diakses 3 Oktober 2017.

Komentar

Postingan populer dari blog ini

Makalah MUTU SOLAR SEBAGAI BAHAN BAKAR MESIN DIESEL

BAB I PENDAHULUAN 1.1.         Latar Belakang              Bahan bakar solar adalah bahan bakar minyak hasil sulingan dari minyak bumi mentah bahan bakar ini berwarna kuning coklat yang jernih (Pertamina: 2005). Penggunaan solar pada umumnya adalah untuk bahan bakar pada semua jenis mesin Diesel dengan putaran tinggi (diatas 1000 rpm). Minyak solar ini  biasa disebut juga Gas Oil, Automotive Diesel Oil, High Speed Diesel  (Pertamina: 2005). 1.2.           Tujuan Penulisan Adapun tujuan penulisan dari Karya Tulis ini   adalah untuk : -           Mngetahui definisi solar -           Mengetahui cara pengukuran Cetane Number -           Mengetahui apa itu Cetane Numer -   ...

Makalah Fisika Entropi

ENTROPI DISUSUN OLEH: Nyoman Chandra (13) XI MIA 1 SMA YOS SUDARSO CILACAP TAHUN PELAJARAN 2014/2015 BAB I PENDAHULUAN 1.1.          Latar Belakang             Dalam mempelajari fisika banyak istilah yang digunakan untuk mendiskripsikan suatu hal. Salah satunya dalah entropi. Untuk lebih memahami pengguanaan istilah entropi dan penerapannya maka ada perlunya kita mempelajari istilah tersebut 1.2.          Rumusan Masalah 1.       Apa yang dimaksud entropi? 2.       Bagaimana proses penemuan istilah entropi ? 3.       Bagaimana penerapan entropi dalam kehidupan sehari hari? 1.3.          Tujuan Penulisa...

Mau Bertanya Nggak Sesat di Jalan

Bertanya menurut KBBI artinnya meminta keterangan (penjelasan dan sebagainya); meminta supaya diberi tahu (tentang sesuatu):, biasanya kegiatan bertanya ini dilakukan oleh seseorang yang mengalami kebingungan atau keraguan terhadap suatu hal atau ia ingin tahu terhadap sesuatu, dengan harapan agar dirinya mengerti dan tidak ragu lagi terhadap hal yang tadinya dia bingungkan. Sebagai makhluk sosial sudah sewajarnya bagi kita untuk melakukan aktivitas bertanya dalam kehidupan sehari hari agar nggak sesat di jalan, karena dengan bertanya kita mendapatkan informasi baru  , atau memperjelas informasi yang telah kita dapat sebelumnya yang pastinya berguna. Dengan bertanya kita dapat menghindari berbagai ketidakpastian dan ketidakraguan dalam berbagai hal.Sesuai judul "Mau Bertanya Nggak Sesat di Jalan" Sebagai Contoh: seorang pelajar yang diberi tugas untuk mengerjakan latihan soal halaman 23-26 di kertas dan dikumpulkan, namun setelah dilihat, latihan soal tersebut terbagi men...