Anda di halaman 1dari 4

Muhamad Arif Rohman

1150910000057
4B

Semaphore
Semaphore termasuk pendekatan yang diajukan oleh Djikstra, dengan prinsip bahwa dua
proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Seperti
proses dapat dipaksa berhenti pada suatu saat, sampai proses mendapatkan penanda tertentu itu.
Sembarang kebutuhan koordinasi kompleks dapat dipenuhi dengan struktur penanda yang cocok
untuk kebutuhan itu. Variabel khusus untuk penanda ini disebut semaphore.Semaphore mempunyai
dua sifat, yaitu:

1. Semaphore dapat diinisialisasi dengan nilai non-negatif.


2. Terdapat dua operasi terhadap semaphore, yaitu Down dan Up. Usulan asli yang disampaikan
Djikstra adalah operasi P dan V.

Semaphore adalah salah satu teknik sinyal sederhana, dan merupakan konsep penting dalam OS
desain, dimana sebuah nilai integer digunakan untuk pensinyalan antara proses. Hanya tiga operasi
yang mungkin dilakukan pada semaphore, yang semuanya atom: inisialisasi, penurunan, dan
penaikan. Operasi pengurangan dapat mengakibatkan terhalangnya proses, dan kenaikan dari
pengoperasian yang sedang berlangsung dapat mengakibatkan terblokirnya suatu proses. Hal ini juga
dikenal sebagai sebuah perhitungan semaphore atau semaphore umum.

Semaphore adalah bendera digunakan untuk memeriksa apakah sumber daya saat ini sedang
digunakan oleh thread atau proses. Misalnya, jika suatu proses ingin menggunakan printer, terlebih
dahulu perlu memastikan printer tersedia dengan memeriksa untuk melihat apakah semaphore telah
ditetapkan. jika sudah diatur, maka perlu menunggu untuk proses yang saat ini telah selesai. Namun,
jika printer bebas, proses ini akan menetapkan semaphore dan mulai menggunakan printer, memblokir
akses ke semua proses lainnya sampai selesai.

Semaphore adalah teknik klasik untuk melindungi bagian penting dari kode dari yang secara simultan
dieksekusi oleh lebih dari satu proses. Semaphore adalah generalisasi dari monitor. Sebuah monitor
memungkinkan hanya satu thread untuk mengunci objek sekaligus. Semaphore A N memungkinkan
proses. Proses meraih semaphore-eksklusif untuk menggunakan semi disebut menenggak semaphore
karena mereka diimplementasikan dengan integer Countdown yang decrements untuk setiap kunci
dan kenaikan untuk masing-masing membuka. Jika semaphore adalah sepenuhnya terisi, thread baru
ingin menggunakannya akan menunggu sampai thread beberapa rilis kunci dengan upping semaphore
itu. Untuk semaphore untuk bekerja, cek untuk penuh, dan penurunan harus dilakukan semua dalam
satu instruksi yang tidak pernah terputus atom. Instruksi monitor JVM menyediakan dukungan
hardware yang diperlukan untuk mensimulasikan semaphores.

Semaphore s, lain kontribusi penting oleh EW Dijkstra, dapat dilihat sebagai ekstensi untuk mutex
kunci. Semaphore adalah suatu obyek dengan dua metode Tunggu dan Sinyal, sebuah integer swasta
counter dan antrian swasta (benang). Semantik dari semaphore adalah sangat sederhana. Misalkan S
adalah semaphore yang swasta counter telah diinisialisasi ke integer non-negatif.

Ketika Tunggu dijalankan oleh thread, kita memiliki dua kemungkinan:


Penghitung S adalah positif
Dalam hal ini, konter ini mengalami penurunan sebesar 1 dan benang kembali
pelaksanaannya.
Penghitung S adalah nol
Dalam hal ini, benang ditangguhkan dan dimasukkan ke dalam antrian pribadi S.
Ketika Sinyal dijalankan oleh thread, kami juga memiliki dua kemungkinan:
Antrian S tidak memiliki benang menunggu
Penghitung S ditingkatkan oleh satu dan benang kembali pelaksanaannya.
Antrian S telah menunggu threads
Dalam hal ini, konter S harus nol (lihat pembahasan Tunggu di atas). Salah satu
benang menunggu akan diizinkan untuk meninggalkan antrian dan melanjutkan
pelaksanaannya. Benang yang mengeksekusi Sinyal juga terus.

Operasi Tunggu atau Signal adalah atom. Ini berarti sekali kegiatan Tunggu mulai (yaitu, pengujian
dan penurunan nilai counter dan memasukkan benang ke dalam antrian), mereka akan terus sampai
akhir tanpa gangguan apapun. Lebih tepatnya, meskipun ada banyak langkah untuk melaksanakan
Tunggu dan Signal, langkah-langkah ini dianggap sebagai instruksi non-interruptible tunggal.
Demikian pula, hal yang sama berlaku untuk Sinyal. Apalagi, jika lebih dari satu benang mencoba
mengeksekusi Tunggu (atau sinyal), hanya satu dari mereka akan berhasil. Kita tidak boleh membuat
asumsi tentang mana thread akan berhasil.

Tunggu karena dapat menyebabkan thread untuk memblokir (yaitu, ketika counter nol), ia memiliki
efek yang sama dari operasi kunci dari sebuah kunci mutex. Demikian pula, sebuah sinyal dapat
melepaskan benang tunggu, dan mirip dengan membuka operasi. Bahkan, semaphores dapat
digunakan sebagai kunci mutex. Pertimbangkan S semaphore dengan nilai awal 1. Kemudian, Tunggu
dan Signal sesuai untuk mengunci dan membuka.
Ada 2 macam semafor yang cukup umum, yaitu:
1. Binary semaphore
2. Counting semaphore

Pengertian Bounded Buffer Problem

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


Pada bagian ini akan dicontohkan suatu produser konsumer. produser akan menghasilkan suatu
barang dan konsumer akan mengkonsumsi barang yang dihasilkan oleh produser. produser dan
konsumer ini akan mengakses bounded buffer yang sama. produser setelah menghasilkan suatu
barang dia akan menaruh barang itu di bounded buffer sebaliknya konsumer ketika membutuhkan
suatu barang, dia akan mengambilkannya dari bounded buffer.
Solusi Bounded Buffer Problem
Solusi Shared Memory untuk Bounded Buffer, mengijinkan (n-1) items di dalam buffer untuk suatu
waktu tertentu.

Pengertian Readers and Writers Problem


Readers and Writers Problem adalah problem yang memodelkan proses yang mengakses database.
Masalah ini timbul ketika ada dua proses atau lebih berbagi data yang sama. Data yang dimaksud
disini bisa berbentuk buffer, file atau objek dari suatu program
Solusi Readers and Writers Problem
a.Pembaca di prioritaskan
b.Penulis di prioritaskan
c.Kedua jenis proses mempunyai prioritas yang sama.

Solusi Pembaca di Prioritaskan


Reader tidak akan menunggu reader(s) lain yang sedang membaca, walaupun ada writer yang sedang
menunggu. Dengan kata lain, 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.

Solusi Penulis di Prioritaskan


Di mana suatu writer sedang dijalankan oleh sistem, maka tidak boleh ada reader yang memulai untuk
membaca data.

Solusi Kedua Jenis Punya Prioritas Sama


Tidak ada prioritas khusus yang diberikan kepada kedua jenis proses.

Sejarah Dining Philosophers Prolem


Masalah ini pertama ini pertama kali ditulis dan diselesaikan oleh Djikstra pada tahun 1965.Masalah
ini memodelkan masalah enkapsulasi dari ketergantungan mesin dan masalah portabilitas. Dalam
masalah Dining Philosophers, diketahui sejumlah (N) filusuf yang hanya memiliki tiga status,
berpikir, lapar, dan makan. Semua filusuf berada di sebuah meja makan bundar yang ditata sehingga
di depan setiap filusuf ada sebuah piring berisi mie dan di antara dua piring yang bersebelahan
terdapat sebuah sumpit.

Solusi Dining Philosophers Problem


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.

Contoh Kasus Dining Philosophers Problem


Pada sebuah computer tentunya terdapat aplikasi-aplikasi yang dapat memudahkan kita untuk
melakukan suatu pekerjaan. Namun disamping kemudahan yang diberikan, terdapat ancaman negative
yang dapat aplikasi-aplikasi itu berikan pada computer kita jika kita tidak menggunakannya dengan
benar. Suatu contoh ketika kita mengerjakan suatu tugas. Kita membuka dan menjalankan beberapa
aplikasi secara bersamaan. Aplikasi yang kita gunakan misalnya ms. Word (membuka 6 file word
sebagai sumber tugas), winamp untuk memainkan lagu, firefox untuk browsing internet, pidgin untuk
sesekali chating, sementara itu aplikasi start up yang berjalan juga banyak dan RAM yang tersedia
tidak begitu besar sehingga hal ini akan membuat computer menjalankan aplikasi itu terus-menerus
jika kita tidak mematikannya. Hal ini akan membuat computer berjalan semakin lambat dan
memungkinkan terjadinya starvation atau deadlock dalam beberapa waktu kemudian.

Anda mungkin juga menyukai