Senin, 08 Mei 2017

Sinkronisasi - Sistem Operasi



Problem Klasik pada Sinkronisasi

      Sinkronisasi adalah proses pengaturan jalannya  beberapa proses pada saat yang bersamaan. Tujuan utama sinkronisasi adalah lebih condong ke arah back-up (membuat cadangan, tapi ada pula sinkronisasi jadwal kerja (kalender untuk menciptakan suatu event yang tepat secara bersamaan diantara pelaku sinkronisasi. Sinkronisasi umumnya dilakukan dengan bantuan  perangkat sinkronisasi.

Problem Klasik Sinkronisasi dapat dibedakan menjadi 3 :

     1.      Bounded –Buffer Problem

Proses kooperatif adalah proses yang saling mempengaruhi satu sama lain. Proses kooperatif ini dapat berbagi sumber daya secara langsung atau berbagi data melalui pertukaran pesan. Dengan demikian perlu dilakukan sinkronisasi untuk mencegah timbulnya data yang tidak konsisten akibat akses data secara konkuren oleh lebih dari 1 proses.

Pesan-pesan yang dipertukarkan antar proses membutuhkan antrian sementara yang sering kita sebut sebagai penyangga atau buffer. Buffer dapat dibagi menjadi 3 jenis sesuai kapasitasnya, yaitu buffer yang kapasitasnya 0; bufferyang kapasitasnya tak hingga; sertabuffer yang kapasitasnya dibatasi sebanyak n. Buffer dengan kapasitas terbatas inilah yang disebut sebagaibounded-buffer.

            Bounded buffer merupakan suatu struktur data yang mampu untuk menyimpan beberapa nilai dan mengeluarkannya kembali ketika diperlukan . Jika dianalogikan bounded buffer ini akan mirip dengan sebuah tumpukan piring. Kita menaruh piring dan menaruh lagi sebuah piring, ketika ingin mengambil piring maka tumpukan yang paling atas yang akan terambil.Jadi piring terakhir yang dimasukan akan pertama kali diambil.
 
Contoh Kasus Bounded - Buffer

           Pokok pembahasan utama dalam masalah bounded buffer adalah bagaimana jika ada dua proses berbeda yang berusaha mengakses buffer tersebut. Salah satu proses akan memberi nilai pada buffer dan mengisi buffer tersebut. Proses yang lain akan membaca nilai dan mengosongkan buffer tersebut. Proses yang pertama biasa disebut producer sedangkan yang kedua disebut consumer.

          Karena ada dua proses yang bekerja, maka harus dihindari adanya race condition. Race condition adalah situasi dimana beberapa proses mengakses dan memanipulasi data secara bersamaan. Jika hal ini terjadi maka producer akan menghasilkan dan mengisi buffer terus menerus meskipun buffer sudah penuh dan belum sempat untuk dibaca oleh consumer. Untuk menghindari race condition, kita harus dapat mesinkronisasikan proses tersebut, dengan memberikan perintah tertentu supaya hanya ada satu proses yang berjalan.

 
 
Solusi Bounded – Buffer Problem

           Solusi shared-memory pada problem bounded buffer memungkinkan paling banyak n-1 item dalam buffer pada waktu yang sama. Jadi, ketika buffer kosong, producer akan mengisi buffer hingga paling banyak n-1 item dalam buffer. Jika buffer tersebut sudah terisi n-1 item, akan terjadi proses switch sehingga consumer akan mengosongkan buffer tersebut. Selama consumer bekerja, producer tidak melakukan apa-apa dan menunggu hingga buffer tersebut kosong lagi. Jika buffer tersebut sudah kosong, maka akan terjadi proses switch lagi, sementara consumer tidak melakukan apa-apa dan menunggu hingga buffer tersebut diisi oleh producer.

     2.      Readers and Writers Problem

Problem lain yang terkenal adalah readers-writer problem yang memodelkan proses yang mengakses database. Sebagai contoh sebuah sistem pemesanan sebuah perusahaan penerbangan, dimana banyak proses berkompetisi berharap untuk membaca (read) dan menulis (write). Hal ini dapat diterima bahwa banyak proses membaca database pada saat yang sama, tetapi jika suatu proses sedang menulis database, tidak boleh ada proses lain yang mengakses database tersebut, termasuk membaca database tersebut.

Solusi Readers and Writers Problem
      a.     Pembaca di prioritaskan
Reader tidak akan menunggu reader(s) lain yang sedang membaca, walaupun ada writer yang sedang menunggu. Dengan katalain, Jika ada reader yang datang ketika reader lain sedang membaca dan sebuah writer sedang menunggu, maka reader yang baru datang tersebut akan langsung mendapat giliran untuk membaca.Writer akan ditunda pengerjaannya.
     
      b.     Penulis di prioritaskan
Di mana suatu writer sedang dijalankan oleh sistem, maka tidak boleh ada reader yang memulai untuk membaca data.
    
      c.       Kedua jenis proses mempunyai prioritas yang sama.
       Tidak ada prioritas khusus yang diberikan kepada kedua jenis proses

      3.      Dining-Philosopers Problem

Pada tahun 1965, Djikstra menyelesaikan sebuah masalah sinkronisasi yang beliau sebut dengan dining philisophers problem. Dining philosophers dapat diuraikan sebagai berikut: Lima orang 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 meungkinkan 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 anda 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 Dining – Philosophers Problem ada dua, yakni :
      a)      Solusi Waiter
Solusi Waiter : solusi sederhana ini dilakukan dengan mengadakan seorang waiter
yang senantiasa mengawasi penggunaan sumpit di meja makan. Ketika empat buah (dua pasang) sumpit sedang dipakai,orang berikutnya yang ingin memakai sumpit harus meminta izin kepada sang waiter, yang hanya dapat diberi ketika salah satu sumpit telah selesai terpakai.
      
      b)      Solusi Hierarki Resource
Solusi Hirarki Resource: resources (sumpit) di meja makan telah diberi susunan hirarki. Setiap permintaan orang terhadap sebuah sumpit harus dilakukan pada susunan tertentu, dan dikembalikan pada susunan sebaliknya. Dalam hal ini, setiap orang dapat mengambil sumpit dimanapun diatas meja misalkan setiap sumpit diberi nomor sebagai tingkat hirarki dari 1 sampai 5, seseorang hanya dapat mengambil sumpit dengan nomor yang paling rendah, kemudian mengambil sumpit yang setingkat lebih tinggi. Ketika ia hendak mengembalikannya, orang itu harus meletakkan sumpit dengan nomor yang lebih tinggi terlebih dahulu, lalu yang rendah.

Tidak ada komentar:

Posting Komentar

Subnetting

Perhitungan Subnetting Subnetting adalah proses membagi atau memecah sebuah network menjadi beberapa network yang lebih kecil atau yang s...