Tugas Sistem Operasi
Tugas Sistem Operasi
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:
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.
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
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.
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.