SlideShare a Scribd company logo
1 of 11
Download to read offline
MAKALAH
Peranan Semaphore
Ditujukan untuk memenuhi tugas mata kuliah Sistem Operasi
Disusun oleh:
Anissa Latanssa 0616103005
Dede Iryawan 0616103022
Ilham Gustiawan 0616103009
Mohamad Wildan 0616103015
Rizky Ramadhan 0616103004
UNIVERSITAS WIDYATAMA
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNIK
BANDUNG
2018
KATA PENGANTAR
Puji syukur kita panjatkan kepada Tuhan Yang Maha Esa, karena atas rahmat-Nya
jualah, saya dapat menyelesaikan makalah. Saya juga mengucapkan terima kasih kepada semua
pihak yang telah membantu dalam memberikan masukan dan kritik yang membangun yang
dapat menjadikan makalah ini lebih lengkap dan lebih layak sebagai informasi.
Saya menyadari makalah ini masih banyak kekurangan. Oleh karena itu, saya
senantiasa mengharapkan masukan dan penyempurnaan makalah ini. Akhirnya, semoga
makalah ini dapat bermanfaat.
Bandung, 21 Mei 2018
Penulis
A. Konsep Dasar 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 dapat diinisialisasi dengan nilai non-negatif.
 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:
Mari kita periksa bagaimana sepasang Tunggu dan Signal dapat menjamin
pengecualian bersama. Perlu diingat bahwa nilai awal counter dari S adalah 1. Misalkan
sejumlah benang mencoba untuk eksekusi Tunggu. Karena hanya ada satu thread berhasil dapat
mengeksekusi Tunggu, thread ini, katakanlah A, menyebabkan counter berkurang sebesar 1,
dan memasuki bagian yang kritis. Karena nilai awal counter adalah 1, sekali thread A
memasuki critical section, konter menjadi 0, dan, sebagai hasilnya, semua usaha berikutnya
dalam melaksanakan Tunggu akan diblokir. Oleh karena itu, membenarkan klaim kita bahwa
Tunggu mirip untuk mengunci.
Perkembangan zaman yang begitu pesat mampu meracuni mahasiswa dengan cara
memunculkan produk-produk teknologi yang semakin canggih yang membuat kecenderungan
pada mahasiswa untuk terus menggunakan hasil racikan teknologi bahkan tak bisa dipungkiri
pada masa dewasa ini, mahasiswa bahkan tak pernah lepas dari hasil Teknologi Informasi dan
Komunikasi.
Semaphore adalah salah satu cara menangani critical section. Semaphore S merupakan
variabel bertipe integer yang diakses dengan 2 standar operasi atomic, yaitu wait dan signal.
Operasi-operasi ini diwakili dengan P (wait) dan V(signal), sebagai berikut :
Wait(S) : while S 0 do no)op;
S:=S – 1;
Signal : S:=S + 1;
Misalkan ada 2 proses yang sedang berjalan secara konkure, yaitu P1 dengan
pernyataan S1 dan P2 dengan pernyataan S2. andaikan kita mengharapkan S2 baru akan
dijalankan hanya setelah S1 selesai. Hal ini dapat dilakukan dengan menggunakan bantuan
semaphore synch (dengan nilai awal = 0) yang akan dishare oleh kedua proses.
Untuk Proses P1 :
S1 ;
Signal(synch);
Untuk proses P2:
Wait(synch);
S2;
Karena nilai awal untuk synch adalah nol, maka P2 akan mengeksekusi S2 hanya
setelah P1 mengerjakan signal(synch) setelah S1
Salah satu kerugian dari penggunaan semaphore diatas adalah adanya busy waiting.
Apabila suatu proses menempati critical, dan ada proses lain ingin masuk critical section, maka
kan terjadi iterasi secara terus-menerus pada entry-section. Hal ini akan menimbulkan masalah
pada sistem yang menggunakan konsep multiprogramming.
Untuk menghindari busy waiting, dilakukan modifikasi pada operasi wait dan signal.
Jika suatu proses sedang mengeksekusi operasi wait, maka nilai semaphore menjadi tidak
positif. Pada saat ini proses akan memblok dirinya sendiri (blok) dan ditempatkan pada waiting
queue.
Proses yang sedang diblok akan menunggu hingga semaphore S direstart, yaitu pada
saat beberapa proses yang lain mengeksekusi operasi signal. Suatu proses akan direstart dengan
operasi wakeup, yang akan mengubah proses dari keadaan waiting ke ready.
Beberapa Prinsip Semaphore :
1. Dua proses dapat saling berkaitan atau menentukan proses yang lain dengan
memanfaatkan signal-sinal
2. Sebuah proses akan dihentikan oleh proses yang lain, ketika mendapatkan signal
tertentu. Suatu proses akan menunggu diproses setelah nilai integer menjadi 0.
selanjutnya sinyal akan dilakukan increamen dengan penambahan 1
3. Semaphore merupakan variable bertipe integer yang diakses oleh 2 operasi atomik
standar, yaitu wait dan signal.
4. Terdapat dua operasi terhadap semaphore yaitu Down dan Up. Nama aslinya : P
dan V
B. Macam-Macam Semaphore
Ada 2 macam semafor yang cukup umum, yaitu:
 Binary semaphore
 Counting semaphore
Binary semaphore adalah semafor yang bernilai hanya 1 dan 0. Sedangkan Counting
semaphore adalah semafor yang dapat bernilai 1 dan 0 dan nilai integer yang lainnya.
Banyak sistem operasi yang hanya mengimplementasi binary semaphore sebagai
primitif, sedangkan counting semaphore dibuat dengan memakai primitif ini. Untuk lebih rinci
mengenai cara pembuatan counting semaphore dapat dilihat pada bagian berikutnya.
Perlu diketahui di sini bahwa, ada beberapa jenis dari counting semaphore. Salah satu
jenisnya adalah semafor yang tidak mencapai nilai negatif (seperti yang dicontohkan pada
bagian sebelumnya). Jenis yang lain adalah semaphore yang dapat mencapai nilai negatif.
Pembuatan counting semaphore banyak dilakukan para programmer untuk memenuhi
alat sinkronisasi yang sesuai dengannya. Seperti yang telah dibahas di atas, bahwa counting
semaphore ada beberapa macam. Pada bagian ini, akan dibahas counting semaphore yang
memperbolehkan harga negatif.
Listing program di bawah ini diambil dari buku Silberschatz.
00 binary-semaphore S1,S2;
01 int C;
Subrutin wait C dapat dilihat di bawah ini:
02 wait (S1);
03 C--;
04 if ( C < 0 ) {
05 signal (S1);
06 wait (S2);
07 }
08 signal (S1);
subrutin signal C dapat dilihat di bawah ini:
09 wait (S1);
10 C++;
11 if (C <= 0)
12 signal (S2);
13 else
14 signal (S1);
Kita memerlukan dua binary semaphore pada kasus ini, maka pada baris 00
didefinisikan dua binary semaphore. Baris 01 mendefinisikan nilai dari semafor tersebut. Perlu
diketahui di sini bahwa waitC adalah wait untuk counting semaphore, sedangkan wait adalah
untuk binary semaphore.
Jika diperhatikan pada subrutin waitC dan signalC di awal dan akhir diberikan pasangan
wait dan signal dari binary semaphore. Fungsi dari binary semaphore yang ini adalah untuk
menjamin critical section (instruksi wait dan signal dari semafor bersifat atomic, maka begitu
pula untuk waitC dan signalC, jadi kegunaan lain semafor adalah untuk membuat suatu
subrutin bersifat atomic).
Binary semaphore S2 sendiri digunakan sebagai tempat menunggu giliran proses-
proses. Proses-proses tersebut menunggu dengan cara spinlock atau non-spinlock tergantung
dari implementasi binary semaphore yang ada.
Perhatikan baris 03 dan 04. Baris ini berbeda dengan apa yang sudah dijabarkan pada
bagian sebelumnya. Karena baris ini maka memungkinkan nilai semafor untuk menjadi negatif.
Lalu apa artinya bagi kita? Ternyata nilai negatif mengandung informasi tambahan yang cukup
berarti bagi kita yaitu bila nilai semafor negatif, maka absolut dari nilai tersebut menunjukkan
banyaknya proses yang sedang menunggu atau wait.
Jadi arti baris 11 menyatakan bahwa bila ada proses yang menunggu maka bangunkan
mereka semua untuk berkompetisi. Mengapa pada baris 05 dilakukan signal untuk S1?
Alasannya karena seperti yang telah kita ketahui bahwa semaphore menjamin ketiga sifat dari
critical section.
Tetapi adalah tidak relevan bila pada saat waktu menunggu, waitC masih
mempertahankan mutual exclusivenya. Bila hal ini terjadi, proses lain tidak akan dapat masuk,
sedangkan proses yang berada di dalam menunggu proses yang lain untuk signal. Dengan kata
lain deadlock terjadi. Jadi, baris 05 perlu dilakukan untuk menghilangkan sifat mutual
exclusive pada saat suatu proses menunggu.
Pada baris 12 hanya menyatakan signal untuk S2 saja. Hal ini bukanlah merupakan
suatu masalah, karena jika signal S2 dipanggil, maka pasti ada proses yang menunggu akan
masuk dan meneruskan ke instruksi 07 kemudian ke instruksi 08 di mana proses ini akan
memanggil signal S1 yang akan mewakili kebutuhan di baris 12.
C. Fungsi Semaphore
Penyelesaian masalah critical section adalah suatu bagian yang berisi sejumlah variabel
yang akan dishare (dipengaruhi dan mempengaruhi ) proses yang lain.
Secara umum, penyelesaian critical section harus memenuhi 3 syarat :
a) Mutual exclusion. Jika suatu proses sedang mengerjakan critical section, maka tidak
boleh ada proses lain yang masuk (mengerjakan) critical section tersebut.
b) Progress. Jika tidak ada suatu proses yang megerjakan critical section, dan ada beberapa
proses yag akan masuk ke critical section, maka hanya proses-proses yang sedang
berada pada entry-section saja yang boleh berkompetisi untuk mengerjakan critical
section.
c) Bounded waiting. Besarnya waktu tunggu dari suatu proses yang akan memasuki
critical section sejak proses itu meminta ijin untuk mengerjakan critical section, hingga
permintaan itu dipenuhi. Untuk setiap proses yang akan masuk critical section harus
meminta ijin terlebih dahulu, dan proses yang mendapat izinlah yang akan masuk ke
critical section. Entry-section adalah daerah tempat proses menunggu untuk memasuki
critical section. Sedangkan Exit-section adalah daerah dimana suatu proses baru saja
keluar dari critical section.
Semafor menyelesaikan masalah sinkronisasi antar proses, kadangkala kita ingin
membuat suatu proses untuk menunggu proses yang lain untuk menjalankan suatu perintah.
Isu yang ada di sini adalah bagaimana caranya suatu proses mengetahui bahwa proses yang
lain telah menyelesaikan instruksi tertentu.
Oleh karena itu digunakanlah semafor karena semafor adalah solusi yang cukup baik
dan mudah untuk mengatasi hal tersebut. Nilai semaphore diset menjadi 0 Proses 1 Proses 2
56 print "satu" 17 wait(semaphoreVar) 57 signal(semaphoreVar) 18 print "dua" siapapun yang
berjalan lebih cepat, maka keluarannya pasti "satu" kemudian diikuti oleh "dua".
Hal ini disebabkan karena jika proses 2 berjalan terlebih dahulu, maka proses tersebut
akan menunggu (nilai semafor = 0) sampai proses 1 memanggil signal. Sebaliknya jika proses
1 berjalan terlebih dahulu, maka proses tersebut akan memanggil signal untuk memberikan
jalan terlebih dahulu kepada proses 2.
D. Implementasi Semaphore
a) Windows – Fungsi yg dipakai adalah CreateSemaphore – Biasanya digunakan untuk
membatasi jumlah thread yang memakai suatu resource secara bersamaan
b) Java – Semafor di Java™ bersifat transparan oleh programmer
c) Java™ menyembunyikan Semafor dibalik konsep monitor
d) Reserved Word yang dipakai Java™ adalah synchronized
E. Kelemahan Semaphore
 Termasuk Low Level
 Kesulitan dalam pemeliharaannya, karena tersebar dalam seluruh program.
 Menghapus wait => dapat terjadi nonmutual exclusion.
 Menghapus signal => dapat terjadi deadlock
 Error yang terjadi sulit untuk dideteksi
 Lebih baik menggunakan high level
KESIMPULAN
Semaphore adalah mekanisme efektif yang digunakan baik pada sistem uniprosesor
maupun sistem multiprosesor. Semaphore pada dasarnya adalah counter yang diasosiasikan
dengan struktur data.
Semaphore merupakan variable bertipe integer yang diakses oleh 2 operasi atomik
standar, yaitu wait dan signal. Perangkat sinkronisasi yang tidak membutuhkan busy waiting-
Semaphore S – integer variable. Dapat dijamin akses ke var. S oleh dua operasi atomik:
wait (S): while S ≤ 0 do no-op;
S := S – 1;
signal (S): S := S + 1;

More Related Content

What's hot

Analisa Website Traveloka - Makalah IMK
Analisa Website Traveloka - Makalah IMKAnalisa Website Traveloka - Makalah IMK
Analisa Website Traveloka - Makalah IMKMiftahul Muttaqin
 
Testing&implementasi 4
Testing&implementasi 4Testing&implementasi 4
Testing&implementasi 4aiiniR
 
Materi Basis Data - Anomali dan Normalisasi
Materi Basis Data - Anomali dan NormalisasiMateri Basis Data - Anomali dan Normalisasi
Materi Basis Data - Anomali dan NormalisasiDerina Ellya R
 
CFG dan PARSING - P 5 - Teknik Kompilasi
CFG dan PARSING - P 5 - Teknik KompilasiCFG dan PARSING - P 5 - Teknik Kompilasi
CFG dan PARSING - P 5 - Teknik Kompilasiahmad haidaroh
 
Proses di Sistem Operasi
Proses di Sistem OperasiProses di Sistem Operasi
Proses di Sistem Operasieddie Ismantoe
 
04 Testing Perangkat Lunak
04 Testing Perangkat Lunak04 Testing Perangkat Lunak
04 Testing Perangkat LunakMrirfan
 
Algoritma Apriori
Algoritma AprioriAlgoritma Apriori
Algoritma Aprioridedidarwis
 
Pembuatan uml pada toko belanja online
Pembuatan uml pada toko belanja onlinePembuatan uml pada toko belanja online
Pembuatan uml pada toko belanja onlineandiseprianto
 
Analisis Semantik - P 6 Teknik Kompilasi
Analisis Semantik - P 6 Teknik KompilasiAnalisis Semantik - P 6 Teknik Kompilasi
Analisis Semantik - P 6 Teknik Kompilasiahmad haidaroh
 
ERD Sistem Informasi Pemesanan Tiket Bioskop Online
ERD Sistem Informasi Pemesanan Tiket Bioskop OnlineERD Sistem Informasi Pemesanan Tiket Bioskop Online
ERD Sistem Informasi Pemesanan Tiket Bioskop OnlineLucha Kamala Putri
 
Struktur direktori
Struktur direktoriStruktur direktori
Struktur direktoriAnggi DHARMA
 
Tipe manajemen memori pada sistem operasi
Tipe manajemen memori pada sistem operasi Tipe manajemen memori pada sistem operasi
Tipe manajemen memori pada sistem operasi Shary Armonitha
 
Perancangan Data Warehouse (Logical dan Physical)
Perancangan Data Warehouse (Logical dan Physical)Perancangan Data Warehouse (Logical dan Physical)
Perancangan Data Warehouse (Logical dan Physical)dedidarwis
 
Pertemuan 04 Teknik Pencarian (Search)
Pertemuan 04 Teknik Pencarian (Search)Pertemuan 04 Teknik Pencarian (Search)
Pertemuan 04 Teknik Pencarian (Search)Endang Retnoningsih
 
Pertemuan 4-metode-pencarian-dan-pelacakan
Pertemuan 4-metode-pencarian-dan-pelacakanPertemuan 4-metode-pencarian-dan-pelacakan
Pertemuan 4-metode-pencarian-dan-pelacakanwillyhayon
 
Bagan terstruktur
Bagan terstrukturBagan terstruktur
Bagan terstrukturiimpunya3
 
Pertemuan 4-5-6 Metode Pelacakan dan Pencarian
Pertemuan 4-5-6 Metode Pelacakan dan PencarianPertemuan 4-5-6 Metode Pelacakan dan Pencarian
Pertemuan 4-5-6 Metode Pelacakan dan PencarianEndang Retnoningsih
 

What's hot (20)

Analisa Website Traveloka - Makalah IMK
Analisa Website Traveloka - Makalah IMKAnalisa Website Traveloka - Makalah IMK
Analisa Website Traveloka - Makalah IMK
 
Testing&implementasi 4
Testing&implementasi 4Testing&implementasi 4
Testing&implementasi 4
 
Materi Basis Data - Anomali dan Normalisasi
Materi Basis Data - Anomali dan NormalisasiMateri Basis Data - Anomali dan Normalisasi
Materi Basis Data - Anomali dan Normalisasi
 
CFG dan PARSING - P 5 - Teknik Kompilasi
CFG dan PARSING - P 5 - Teknik KompilasiCFG dan PARSING - P 5 - Teknik Kompilasi
CFG dan PARSING - P 5 - Teknik Kompilasi
 
Proses di Sistem Operasi
Proses di Sistem OperasiProses di Sistem Operasi
Proses di Sistem Operasi
 
04 Testing Perangkat Lunak
04 Testing Perangkat Lunak04 Testing Perangkat Lunak
04 Testing Perangkat Lunak
 
Algoritma Apriori
Algoritma AprioriAlgoritma Apriori
Algoritma Apriori
 
Pembuatan uml pada toko belanja online
Pembuatan uml pada toko belanja onlinePembuatan uml pada toko belanja online
Pembuatan uml pada toko belanja online
 
Analisis Semantik - P 6 Teknik Kompilasi
Analisis Semantik - P 6 Teknik KompilasiAnalisis Semantik - P 6 Teknik Kompilasi
Analisis Semantik - P 6 Teknik Kompilasi
 
Analisis Kebutuhan Sistem Informasi
Analisis Kebutuhan Sistem InformasiAnalisis Kebutuhan Sistem Informasi
Analisis Kebutuhan Sistem Informasi
 
ERD Sistem Informasi Pemesanan Tiket Bioskop Online
ERD Sistem Informasi Pemesanan Tiket Bioskop OnlineERD Sistem Informasi Pemesanan Tiket Bioskop Online
ERD Sistem Informasi Pemesanan Tiket Bioskop Online
 
Struktur direktori
Struktur direktoriStruktur direktori
Struktur direktori
 
System Request
System RequestSystem Request
System Request
 
Tipe manajemen memori pada sistem operasi
Tipe manajemen memori pada sistem operasi Tipe manajemen memori pada sistem operasi
Tipe manajemen memori pada sistem operasi
 
Perancangan Data Warehouse (Logical dan Physical)
Perancangan Data Warehouse (Logical dan Physical)Perancangan Data Warehouse (Logical dan Physical)
Perancangan Data Warehouse (Logical dan Physical)
 
Pertemuan 04 Teknik Pencarian (Search)
Pertemuan 04 Teknik Pencarian (Search)Pertemuan 04 Teknik Pencarian (Search)
Pertemuan 04 Teknik Pencarian (Search)
 
Pushdown Automata
Pushdown Automata Pushdown Automata
Pushdown Automata
 
Pertemuan 4-metode-pencarian-dan-pelacakan
Pertemuan 4-metode-pencarian-dan-pelacakanPertemuan 4-metode-pencarian-dan-pelacakan
Pertemuan 4-metode-pencarian-dan-pelacakan
 
Bagan terstruktur
Bagan terstrukturBagan terstruktur
Bagan terstruktur
 
Pertemuan 4-5-6 Metode Pelacakan dan Pencarian
Pertemuan 4-5-6 Metode Pelacakan dan PencarianPertemuan 4-5-6 Metode Pelacakan dan Pencarian
Pertemuan 4-5-6 Metode Pelacakan dan Pencarian
 

Similar to SEMAFOR

Modul Sistem Operasi Semaphore
Modul Sistem Operasi SemaphoreModul Sistem Operasi Semaphore
Modul Sistem Operasi SemaphoreDEDE IRYAWAN
 
Pertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptx
Pertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptxPertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptx
Pertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptxYaya610291
 
Sinkronisasi dan deadlock
Sinkronisasi dan deadlockSinkronisasi dan deadlock
Sinkronisasi dan deadlockAlvin Setiawan
 
Prak sinyal sistem_1
Prak sinyal sistem_1Prak sinyal sistem_1
Prak sinyal sistem_1alvinwidan2
 
Prak sinyal sistem_1
Prak sinyal sistem_1Prak sinyal sistem_1
Prak sinyal sistem_1alvinwidan2
 
Tugas perulangan/Looping
Tugas perulangan/LoopingTugas perulangan/Looping
Tugas perulangan/LoopingIqbalSyawaludin
 
Sistem waktu nyata komputer projek .pptx
Sistem waktu nyata komputer projek .pptxSistem waktu nyata komputer projek .pptx
Sistem waktu nyata komputer projek .pptxRafdianrizkyraharja
 
PERULANGAN (LOOPING)
PERULANGAN (LOOPING)PERULANGAN (LOOPING)
PERULANGAN (LOOPING)Ahmad Givari
 
Konsep I/O pada Pemrograman Berorientasi Obyek
Konsep I/O pada Pemrograman Berorientasi ObyekKonsep I/O pada Pemrograman Berorientasi Obyek
Konsep I/O pada Pemrograman Berorientasi Obyekdrmjaya
 
Perulangan atau looping dalam java
Perulangan atau looping dalam javaPerulangan atau looping dalam java
Perulangan atau looping dalam javaWahyu Ardiyono
 
Perulangan atau looping dalam java
Perulangan atau looping dalam javaPerulangan atau looping dalam java
Perulangan atau looping dalam javaWahyu Ardiyono
 
Tugas Pendahuluan Praktikum PBO Modul 8 - Multithread
Tugas Pendahuluan Praktikum PBO Modul 8 - MultithreadTugas Pendahuluan Praktikum PBO Modul 8 - Multithread
Tugas Pendahuluan Praktikum PBO Modul 8 - Multithreadmeiditiarani
 

Similar to SEMAFOR (20)

Chapter10.os
Chapter10.osChapter10.os
Chapter10.os
 
Modul Sistem Operasi Semaphore
Modul Sistem Operasi SemaphoreModul Sistem Operasi Semaphore
Modul Sistem Operasi Semaphore
 
Pertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptx
Pertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptxPertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptx
Pertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptx
 
Pengulangan dan Seleksi
Pengulangan dan SeleksiPengulangan dan Seleksi
Pengulangan dan Seleksi
 
algoritma
algoritmaalgoritma
algoritma
 
Sinkronisasi dan deadlock
Sinkronisasi dan deadlockSinkronisasi dan deadlock
Sinkronisasi dan deadlock
 
Looping program java
Looping program javaLooping program java
Looping program java
 
Looping program java
Looping program javaLooping program java
Looping program java
 
Prak sinyal sistem_1
Prak sinyal sistem_1Prak sinyal sistem_1
Prak sinyal sistem_1
 
Prak sinyal sistem_1
Prak sinyal sistem_1Prak sinyal sistem_1
Prak sinyal sistem_1
 
mutual exclusion
mutual exclusionmutual exclusion
mutual exclusion
 
Tugas perulangan/Looping
Tugas perulangan/LoopingTugas perulangan/Looping
Tugas perulangan/Looping
 
Sistem waktu nyata komputer projek .pptx
Sistem waktu nyata komputer projek .pptxSistem waktu nyata komputer projek .pptx
Sistem waktu nyata komputer projek .pptx
 
PERULANGAN (LOOPING)
PERULANGAN (LOOPING)PERULANGAN (LOOPING)
PERULANGAN (LOOPING)
 
Konsep I/O pada Pemrograman Berorientasi Obyek
Konsep I/O pada Pemrograman Berorientasi ObyekKonsep I/O pada Pemrograman Berorientasi Obyek
Konsep I/O pada Pemrograman Berorientasi Obyek
 
Saga Pattern in Microservice
Saga Pattern in MicroserviceSaga Pattern in Microservice
Saga Pattern in Microservice
 
Perulangan atau looping dalam java
Perulangan atau looping dalam javaPerulangan atau looping dalam java
Perulangan atau looping dalam java
 
Perulangan atau looping dalam java
Perulangan atau looping dalam javaPerulangan atau looping dalam java
Perulangan atau looping dalam java
 
Tugas Pendahuluan Praktikum PBO Modul 8 - Multithread
Tugas Pendahuluan Praktikum PBO Modul 8 - MultithreadTugas Pendahuluan Praktikum PBO Modul 8 - Multithread
Tugas Pendahuluan Praktikum PBO Modul 8 - Multithread
 
[RPL2] Sequence Diagram
[RPL2] Sequence Diagram[RPL2] Sequence Diagram
[RPL2] Sequence Diagram
 

More from DEDE IRYAWAN

Riset Teknologi Informasi - Tugas 03 - Paper Review on “Naive Bayes Classifi...
Riset Teknologi Informasi - Tugas 03 -  Paper Review on “Naive Bayes Classifi...Riset Teknologi Informasi - Tugas 03 -  Paper Review on “Naive Bayes Classifi...
Riset Teknologi Informasi - Tugas 03 - Paper Review on “Naive Bayes Classifi...DEDE IRYAWAN
 
APPLIED DATABASE III - Slide Arsitektur Data Mining
APPLIED DATABASE III - Slide Arsitektur Data MiningAPPLIED DATABASE III - Slide Arsitektur Data Mining
APPLIED DATABASE III - Slide Arsitektur Data MiningDEDE IRYAWAN
 
APPLIED DATABASE III - Modul Data Preprocessing
APPLIED DATABASE III - Modul Data PreprocessingAPPLIED DATABASE III - Modul Data Preprocessing
APPLIED DATABASE III - Modul Data PreprocessingDEDE IRYAWAN
 
Riset Teknologi Informasi - Modul 6 - Judul, Baris Kepemilikan, Abstrak, dan...
Riset Teknologi  Informasi - Modul 6 - Judul, Baris Kepemilikan, Abstrak, dan...Riset Teknologi  Informasi - Modul 6 - Judul, Baris Kepemilikan, Abstrak, dan...
Riset Teknologi Informasi - Modul 6 - Judul, Baris Kepemilikan, Abstrak, dan...DEDE IRYAWAN
 
MANAJEMEN PROYEK PERANGKAT LUNAK - Modul 6 - MANAJEMEN BIAYA PROYEK
MANAJEMEN PROYEK PERANGKAT LUNAK - Modul 6 - MANAJEMEN BIAYA PROYEKMANAJEMEN PROYEK PERANGKAT LUNAK - Modul 6 - MANAJEMEN BIAYA PROYEK
MANAJEMEN PROYEK PERANGKAT LUNAK - Modul 6 - MANAJEMEN BIAYA PROYEKDEDE IRYAWAN
 
MANAJEMEN PROYEK PERANGKAT LUNAK - Modul 5 - MANAJEMEN WAKTU PROYEK
MANAJEMEN PROYEK PERANGKAT LUNAK - Modul 5 - MANAJEMEN WAKTU PROYEKMANAJEMEN PROYEK PERANGKAT LUNAK - Modul 5 - MANAJEMEN WAKTU PROYEK
MANAJEMEN PROYEK PERANGKAT LUNAK - Modul 5 - MANAJEMEN WAKTU PROYEKDEDE IRYAWAN
 
TOEFL Exercise 22 Slide
TOEFL Exercise 22 SlideTOEFL Exercise 22 Slide
TOEFL Exercise 22 SlideDEDE IRYAWAN
 
TOEFL Exercise 17 - Listen for IDIOMS
TOEFL Exercise 17 - Listen for IDIOMSTOEFL Exercise 17 - Listen for IDIOMS
TOEFL Exercise 17 - Listen for IDIOMSDEDE IRYAWAN
 
TOEFL EXERCISE 15 - UNTRUE CONDITION
TOEFL EXERCISE 15 - UNTRUE CONDITIONTOEFL EXERCISE 15 - UNTRUE CONDITION
TOEFL EXERCISE 15 - UNTRUE CONDITIONDEDE IRYAWAN
 
TOEFL EXERCISE 14 - Listen for WISHES
TOEFL EXERCISE 14 - Listen for  WISHESTOEFL EXERCISE 14 - Listen for  WISHES
TOEFL EXERCISE 14 - Listen for WISHESDEDE IRYAWAN
 
TOEFL Exercise 13 - Emphatic Expression of SURPRISE
TOEFL Exercise 13 - Emphatic Expression of SURPRISETOEFL Exercise 13 - Emphatic Expression of SURPRISE
TOEFL Exercise 13 - Emphatic Expression of SURPRISEDEDE IRYAWAN
 
TOEFL Exercise 12 - Expression of UNCERTAINITY and SUGGESTION
TOEFL Exercise 12 - Expression of UNCERTAINITY and SUGGESTIONTOEFL Exercise 12 - Expression of UNCERTAINITY and SUGGESTION
TOEFL Exercise 12 - Expression of UNCERTAINITY and SUGGESTIONDEDE IRYAWAN
 
TOEFL Exercise 11 - Expression of AGREEMENT
TOEFL Exercise 11 - Expression of AGREEMENTTOEFL Exercise 11 - Expression of AGREEMENT
TOEFL Exercise 11 - Expression of AGREEMENTDEDE IRYAWAN
 
TOEFL Exercise 10 - NEGATIVE WITH COMPARATIVE
TOEFL Exercise 10 - NEGATIVE WITH COMPARATIVETOEFL Exercise 10 - NEGATIVE WITH COMPARATIVE
TOEFL Exercise 10 - NEGATIVE WITH COMPARATIVEDEDE IRYAWAN
 
TOEFL Exercise 9 - “ALMOST NEGATIVE” Expression
TOEFL Exercise 9 - “ALMOST NEGATIVE” ExpressionTOEFL Exercise 9 - “ALMOST NEGATIVE” Expression
TOEFL Exercise 9 - “ALMOST NEGATIVE” ExpressionDEDE IRYAWAN
 
TOEFL EXERCISE 8 - DOUBLE NEGATIVE EXPRESSIONS
TOEFL EXERCISE 8 - DOUBLE NEGATIVE EXPRESSIONSTOEFL EXERCISE 8 - DOUBLE NEGATIVE EXPRESSIONS
TOEFL EXERCISE 8 - DOUBLE NEGATIVE EXPRESSIONSDEDE IRYAWAN
 
TOEFL Exercise 7 - NEGATIVE EXPRESSION
TOEFL Exercise 7 - NEGATIVE EXPRESSIONTOEFL Exercise 7 - NEGATIVE EXPRESSION
TOEFL Exercise 7 - NEGATIVE EXPRESSIONDEDE IRYAWAN
 
TOEFL EXERCISE 3 - AVOID SIMILAR SOUNDS
TOEFL EXERCISE 3 - AVOID SIMILAR SOUNDSTOEFL EXERCISE 3 - AVOID SIMILAR SOUNDS
TOEFL EXERCISE 3 - AVOID SIMILAR SOUNDSDEDE IRYAWAN
 
TOEFL EXERCISE 1 - FOCUS ON THE SECOND LINE
TOEFL EXERCISE 1 - FOCUS ON THE SECOND LINETOEFL EXERCISE 1 - FOCUS ON THE SECOND LINE
TOEFL EXERCISE 1 - FOCUS ON THE SECOND LINEDEDE IRYAWAN
 
English for Proficiency Certification (EPC) - Modul 2 - Further Exercises and...
English for Proficiency Certification (EPC) - Modul 2 - Further Exercises and...English for Proficiency Certification (EPC) - Modul 2 - Further Exercises and...
English for Proficiency Certification (EPC) - Modul 2 - Further Exercises and...DEDE IRYAWAN
 

More from DEDE IRYAWAN (20)

Riset Teknologi Informasi - Tugas 03 - Paper Review on “Naive Bayes Classifi...
Riset Teknologi Informasi - Tugas 03 -  Paper Review on “Naive Bayes Classifi...Riset Teknologi Informasi - Tugas 03 -  Paper Review on “Naive Bayes Classifi...
Riset Teknologi Informasi - Tugas 03 - Paper Review on “Naive Bayes Classifi...
 
APPLIED DATABASE III - Slide Arsitektur Data Mining
APPLIED DATABASE III - Slide Arsitektur Data MiningAPPLIED DATABASE III - Slide Arsitektur Data Mining
APPLIED DATABASE III - Slide Arsitektur Data Mining
 
APPLIED DATABASE III - Modul Data Preprocessing
APPLIED DATABASE III - Modul Data PreprocessingAPPLIED DATABASE III - Modul Data Preprocessing
APPLIED DATABASE III - Modul Data Preprocessing
 
Riset Teknologi Informasi - Modul 6 - Judul, Baris Kepemilikan, Abstrak, dan...
Riset Teknologi  Informasi - Modul 6 - Judul, Baris Kepemilikan, Abstrak, dan...Riset Teknologi  Informasi - Modul 6 - Judul, Baris Kepemilikan, Abstrak, dan...
Riset Teknologi Informasi - Modul 6 - Judul, Baris Kepemilikan, Abstrak, dan...
 
MANAJEMEN PROYEK PERANGKAT LUNAK - Modul 6 - MANAJEMEN BIAYA PROYEK
MANAJEMEN PROYEK PERANGKAT LUNAK - Modul 6 - MANAJEMEN BIAYA PROYEKMANAJEMEN PROYEK PERANGKAT LUNAK - Modul 6 - MANAJEMEN BIAYA PROYEK
MANAJEMEN PROYEK PERANGKAT LUNAK - Modul 6 - MANAJEMEN BIAYA PROYEK
 
MANAJEMEN PROYEK PERANGKAT LUNAK - Modul 5 - MANAJEMEN WAKTU PROYEK
MANAJEMEN PROYEK PERANGKAT LUNAK - Modul 5 - MANAJEMEN WAKTU PROYEKMANAJEMEN PROYEK PERANGKAT LUNAK - Modul 5 - MANAJEMEN WAKTU PROYEK
MANAJEMEN PROYEK PERANGKAT LUNAK - Modul 5 - MANAJEMEN WAKTU PROYEK
 
TOEFL Exercise 22 Slide
TOEFL Exercise 22 SlideTOEFL Exercise 22 Slide
TOEFL Exercise 22 Slide
 
TOEFL Exercise 17 - Listen for IDIOMS
TOEFL Exercise 17 - Listen for IDIOMSTOEFL Exercise 17 - Listen for IDIOMS
TOEFL Exercise 17 - Listen for IDIOMS
 
TOEFL EXERCISE 15 - UNTRUE CONDITION
TOEFL EXERCISE 15 - UNTRUE CONDITIONTOEFL EXERCISE 15 - UNTRUE CONDITION
TOEFL EXERCISE 15 - UNTRUE CONDITION
 
TOEFL EXERCISE 14 - Listen for WISHES
TOEFL EXERCISE 14 - Listen for  WISHESTOEFL EXERCISE 14 - Listen for  WISHES
TOEFL EXERCISE 14 - Listen for WISHES
 
TOEFL Exercise 13 - Emphatic Expression of SURPRISE
TOEFL Exercise 13 - Emphatic Expression of SURPRISETOEFL Exercise 13 - Emphatic Expression of SURPRISE
TOEFL Exercise 13 - Emphatic Expression of SURPRISE
 
TOEFL Exercise 12 - Expression of UNCERTAINITY and SUGGESTION
TOEFL Exercise 12 - Expression of UNCERTAINITY and SUGGESTIONTOEFL Exercise 12 - Expression of UNCERTAINITY and SUGGESTION
TOEFL Exercise 12 - Expression of UNCERTAINITY and SUGGESTION
 
TOEFL Exercise 11 - Expression of AGREEMENT
TOEFL Exercise 11 - Expression of AGREEMENTTOEFL Exercise 11 - Expression of AGREEMENT
TOEFL Exercise 11 - Expression of AGREEMENT
 
TOEFL Exercise 10 - NEGATIVE WITH COMPARATIVE
TOEFL Exercise 10 - NEGATIVE WITH COMPARATIVETOEFL Exercise 10 - NEGATIVE WITH COMPARATIVE
TOEFL Exercise 10 - NEGATIVE WITH COMPARATIVE
 
TOEFL Exercise 9 - “ALMOST NEGATIVE” Expression
TOEFL Exercise 9 - “ALMOST NEGATIVE” ExpressionTOEFL Exercise 9 - “ALMOST NEGATIVE” Expression
TOEFL Exercise 9 - “ALMOST NEGATIVE” Expression
 
TOEFL EXERCISE 8 - DOUBLE NEGATIVE EXPRESSIONS
TOEFL EXERCISE 8 - DOUBLE NEGATIVE EXPRESSIONSTOEFL EXERCISE 8 - DOUBLE NEGATIVE EXPRESSIONS
TOEFL EXERCISE 8 - DOUBLE NEGATIVE EXPRESSIONS
 
TOEFL Exercise 7 - NEGATIVE EXPRESSION
TOEFL Exercise 7 - NEGATIVE EXPRESSIONTOEFL Exercise 7 - NEGATIVE EXPRESSION
TOEFL Exercise 7 - NEGATIVE EXPRESSION
 
TOEFL EXERCISE 3 - AVOID SIMILAR SOUNDS
TOEFL EXERCISE 3 - AVOID SIMILAR SOUNDSTOEFL EXERCISE 3 - AVOID SIMILAR SOUNDS
TOEFL EXERCISE 3 - AVOID SIMILAR SOUNDS
 
TOEFL EXERCISE 1 - FOCUS ON THE SECOND LINE
TOEFL EXERCISE 1 - FOCUS ON THE SECOND LINETOEFL EXERCISE 1 - FOCUS ON THE SECOND LINE
TOEFL EXERCISE 1 - FOCUS ON THE SECOND LINE
 
English for Proficiency Certification (EPC) - Modul 2 - Further Exercises and...
English for Proficiency Certification (EPC) - Modul 2 - Further Exercises and...English for Proficiency Certification (EPC) - Modul 2 - Further Exercises and...
English for Proficiency Certification (EPC) - Modul 2 - Further Exercises and...
 

SEMAFOR

  • 1. MAKALAH Peranan Semaphore Ditujukan untuk memenuhi tugas mata kuliah Sistem Operasi Disusun oleh: Anissa Latanssa 0616103005 Dede Iryawan 0616103022 Ilham Gustiawan 0616103009 Mohamad Wildan 0616103015 Rizky Ramadhan 0616103004 UNIVERSITAS WIDYATAMA PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK BANDUNG 2018
  • 2. KATA PENGANTAR Puji syukur kita panjatkan kepada Tuhan Yang Maha Esa, karena atas rahmat-Nya jualah, saya dapat menyelesaikan makalah. Saya juga mengucapkan terima kasih kepada semua pihak yang telah membantu dalam memberikan masukan dan kritik yang membangun yang dapat menjadikan makalah ini lebih lengkap dan lebih layak sebagai informasi. Saya menyadari makalah ini masih banyak kekurangan. Oleh karena itu, saya senantiasa mengharapkan masukan dan penyempurnaan makalah ini. Akhirnya, semoga makalah ini dapat bermanfaat. Bandung, 21 Mei 2018 Penulis
  • 3. A. Konsep Dasar 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 dapat diinisialisasi dengan nilai non-negatif.  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
  • 4. 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.
  • 5. 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: Mari kita periksa bagaimana sepasang Tunggu dan Signal dapat menjamin pengecualian bersama. Perlu diingat bahwa nilai awal counter dari S adalah 1. Misalkan sejumlah benang mencoba untuk eksekusi Tunggu. Karena hanya ada satu thread berhasil dapat mengeksekusi Tunggu, thread ini, katakanlah A, menyebabkan counter berkurang sebesar 1, dan memasuki bagian yang kritis. Karena nilai awal counter adalah 1, sekali thread A memasuki critical section, konter menjadi 0, dan, sebagai hasilnya, semua usaha berikutnya dalam melaksanakan Tunggu akan diblokir. Oleh karena itu, membenarkan klaim kita bahwa Tunggu mirip untuk mengunci. Perkembangan zaman yang begitu pesat mampu meracuni mahasiswa dengan cara memunculkan produk-produk teknologi yang semakin canggih yang membuat kecenderungan pada mahasiswa untuk terus menggunakan hasil racikan teknologi bahkan tak bisa dipungkiri pada masa dewasa ini, mahasiswa bahkan tak pernah lepas dari hasil Teknologi Informasi dan Komunikasi. Semaphore adalah salah satu cara menangani critical section. Semaphore S merupakan variabel bertipe integer yang diakses dengan 2 standar operasi atomic, yaitu wait dan signal. Operasi-operasi ini diwakili dengan P (wait) dan V(signal), sebagai berikut : Wait(S) : while S 0 do no)op; S:=S – 1; Signal : S:=S + 1;
  • 6. Misalkan ada 2 proses yang sedang berjalan secara konkure, yaitu P1 dengan pernyataan S1 dan P2 dengan pernyataan S2. andaikan kita mengharapkan S2 baru akan dijalankan hanya setelah S1 selesai. Hal ini dapat dilakukan dengan menggunakan bantuan semaphore synch (dengan nilai awal = 0) yang akan dishare oleh kedua proses. Untuk Proses P1 : S1 ; Signal(synch); Untuk proses P2: Wait(synch); S2; Karena nilai awal untuk synch adalah nol, maka P2 akan mengeksekusi S2 hanya setelah P1 mengerjakan signal(synch) setelah S1 Salah satu kerugian dari penggunaan semaphore diatas adalah adanya busy waiting. Apabila suatu proses menempati critical, dan ada proses lain ingin masuk critical section, maka kan terjadi iterasi secara terus-menerus pada entry-section. Hal ini akan menimbulkan masalah pada sistem yang menggunakan konsep multiprogramming. Untuk menghindari busy waiting, dilakukan modifikasi pada operasi wait dan signal. Jika suatu proses sedang mengeksekusi operasi wait, maka nilai semaphore menjadi tidak positif. Pada saat ini proses akan memblok dirinya sendiri (blok) dan ditempatkan pada waiting queue. Proses yang sedang diblok akan menunggu hingga semaphore S direstart, yaitu pada saat beberapa proses yang lain mengeksekusi operasi signal. Suatu proses akan direstart dengan operasi wakeup, yang akan mengubah proses dari keadaan waiting ke ready. Beberapa Prinsip Semaphore : 1. Dua proses dapat saling berkaitan atau menentukan proses yang lain dengan memanfaatkan signal-sinal 2. Sebuah proses akan dihentikan oleh proses yang lain, ketika mendapatkan signal tertentu. Suatu proses akan menunggu diproses setelah nilai integer menjadi 0. selanjutnya sinyal akan dilakukan increamen dengan penambahan 1 3. Semaphore merupakan variable bertipe integer yang diakses oleh 2 operasi atomik standar, yaitu wait dan signal.
  • 7. 4. Terdapat dua operasi terhadap semaphore yaitu Down dan Up. Nama aslinya : P dan V B. Macam-Macam Semaphore Ada 2 macam semafor yang cukup umum, yaitu:  Binary semaphore  Counting semaphore Binary semaphore adalah semafor yang bernilai hanya 1 dan 0. Sedangkan Counting semaphore adalah semafor yang dapat bernilai 1 dan 0 dan nilai integer yang lainnya. Banyak sistem operasi yang hanya mengimplementasi binary semaphore sebagai primitif, sedangkan counting semaphore dibuat dengan memakai primitif ini. Untuk lebih rinci mengenai cara pembuatan counting semaphore dapat dilihat pada bagian berikutnya. Perlu diketahui di sini bahwa, ada beberapa jenis dari counting semaphore. Salah satu jenisnya adalah semafor yang tidak mencapai nilai negatif (seperti yang dicontohkan pada bagian sebelumnya). Jenis yang lain adalah semaphore yang dapat mencapai nilai negatif. Pembuatan counting semaphore banyak dilakukan para programmer untuk memenuhi alat sinkronisasi yang sesuai dengannya. Seperti yang telah dibahas di atas, bahwa counting semaphore ada beberapa macam. Pada bagian ini, akan dibahas counting semaphore yang memperbolehkan harga negatif. Listing program di bawah ini diambil dari buku Silberschatz. 00 binary-semaphore S1,S2; 01 int C; Subrutin wait C dapat dilihat di bawah ini: 02 wait (S1); 03 C--; 04 if ( C < 0 ) { 05 signal (S1); 06 wait (S2);
  • 8. 07 } 08 signal (S1); subrutin signal C dapat dilihat di bawah ini: 09 wait (S1); 10 C++; 11 if (C <= 0) 12 signal (S2); 13 else 14 signal (S1); Kita memerlukan dua binary semaphore pada kasus ini, maka pada baris 00 didefinisikan dua binary semaphore. Baris 01 mendefinisikan nilai dari semafor tersebut. Perlu diketahui di sini bahwa waitC adalah wait untuk counting semaphore, sedangkan wait adalah untuk binary semaphore. Jika diperhatikan pada subrutin waitC dan signalC di awal dan akhir diberikan pasangan wait dan signal dari binary semaphore. Fungsi dari binary semaphore yang ini adalah untuk menjamin critical section (instruksi wait dan signal dari semafor bersifat atomic, maka begitu pula untuk waitC dan signalC, jadi kegunaan lain semafor adalah untuk membuat suatu subrutin bersifat atomic). Binary semaphore S2 sendiri digunakan sebagai tempat menunggu giliran proses- proses. Proses-proses tersebut menunggu dengan cara spinlock atau non-spinlock tergantung dari implementasi binary semaphore yang ada. Perhatikan baris 03 dan 04. Baris ini berbeda dengan apa yang sudah dijabarkan pada bagian sebelumnya. Karena baris ini maka memungkinkan nilai semafor untuk menjadi negatif. Lalu apa artinya bagi kita? Ternyata nilai negatif mengandung informasi tambahan yang cukup berarti bagi kita yaitu bila nilai semafor negatif, maka absolut dari nilai tersebut menunjukkan banyaknya proses yang sedang menunggu atau wait. Jadi arti baris 11 menyatakan bahwa bila ada proses yang menunggu maka bangunkan mereka semua untuk berkompetisi. Mengapa pada baris 05 dilakukan signal untuk S1?
  • 9. Alasannya karena seperti yang telah kita ketahui bahwa semaphore menjamin ketiga sifat dari critical section. Tetapi adalah tidak relevan bila pada saat waktu menunggu, waitC masih mempertahankan mutual exclusivenya. Bila hal ini terjadi, proses lain tidak akan dapat masuk, sedangkan proses yang berada di dalam menunggu proses yang lain untuk signal. Dengan kata lain deadlock terjadi. Jadi, baris 05 perlu dilakukan untuk menghilangkan sifat mutual exclusive pada saat suatu proses menunggu. Pada baris 12 hanya menyatakan signal untuk S2 saja. Hal ini bukanlah merupakan suatu masalah, karena jika signal S2 dipanggil, maka pasti ada proses yang menunggu akan masuk dan meneruskan ke instruksi 07 kemudian ke instruksi 08 di mana proses ini akan memanggil signal S1 yang akan mewakili kebutuhan di baris 12. C. Fungsi Semaphore Penyelesaian masalah critical section adalah suatu bagian yang berisi sejumlah variabel yang akan dishare (dipengaruhi dan mempengaruhi ) proses yang lain. Secara umum, penyelesaian critical section harus memenuhi 3 syarat : a) Mutual exclusion. Jika suatu proses sedang mengerjakan critical section, maka tidak boleh ada proses lain yang masuk (mengerjakan) critical section tersebut. b) Progress. Jika tidak ada suatu proses yang megerjakan critical section, dan ada beberapa proses yag akan masuk ke critical section, maka hanya proses-proses yang sedang berada pada entry-section saja yang boleh berkompetisi untuk mengerjakan critical section. c) Bounded waiting. Besarnya waktu tunggu dari suatu proses yang akan memasuki critical section sejak proses itu meminta ijin untuk mengerjakan critical section, hingga permintaan itu dipenuhi. Untuk setiap proses yang akan masuk critical section harus meminta ijin terlebih dahulu, dan proses yang mendapat izinlah yang akan masuk ke critical section. Entry-section adalah daerah tempat proses menunggu untuk memasuki critical section. Sedangkan Exit-section adalah daerah dimana suatu proses baru saja keluar dari critical section. Semafor menyelesaikan masalah sinkronisasi antar proses, kadangkala kita ingin membuat suatu proses untuk menunggu proses yang lain untuk menjalankan suatu perintah. Isu yang ada di sini adalah bagaimana caranya suatu proses mengetahui bahwa proses yang lain telah menyelesaikan instruksi tertentu.
  • 10. Oleh karena itu digunakanlah semafor karena semafor adalah solusi yang cukup baik dan mudah untuk mengatasi hal tersebut. Nilai semaphore diset menjadi 0 Proses 1 Proses 2 56 print "satu" 17 wait(semaphoreVar) 57 signal(semaphoreVar) 18 print "dua" siapapun yang berjalan lebih cepat, maka keluarannya pasti "satu" kemudian diikuti oleh "dua". Hal ini disebabkan karena jika proses 2 berjalan terlebih dahulu, maka proses tersebut akan menunggu (nilai semafor = 0) sampai proses 1 memanggil signal. Sebaliknya jika proses 1 berjalan terlebih dahulu, maka proses tersebut akan memanggil signal untuk memberikan jalan terlebih dahulu kepada proses 2. D. Implementasi Semaphore a) Windows – Fungsi yg dipakai adalah CreateSemaphore – Biasanya digunakan untuk membatasi jumlah thread yang memakai suatu resource secara bersamaan b) Java – Semafor di Java™ bersifat transparan oleh programmer c) Java™ menyembunyikan Semafor dibalik konsep monitor d) Reserved Word yang dipakai Java™ adalah synchronized E. Kelemahan Semaphore  Termasuk Low Level  Kesulitan dalam pemeliharaannya, karena tersebar dalam seluruh program.  Menghapus wait => dapat terjadi nonmutual exclusion.  Menghapus signal => dapat terjadi deadlock  Error yang terjadi sulit untuk dideteksi  Lebih baik menggunakan high level
  • 11. KESIMPULAN Semaphore adalah mekanisme efektif yang digunakan baik pada sistem uniprosesor maupun sistem multiprosesor. Semaphore pada dasarnya adalah counter yang diasosiasikan dengan struktur data. Semaphore merupakan variable bertipe integer yang diakses oleh 2 operasi atomik standar, yaitu wait dan signal. Perangkat sinkronisasi yang tidak membutuhkan busy waiting- Semaphore S – integer variable. Dapat dijamin akses ke var. S oleh dua operasi atomik: wait (S): while S ≤ 0 do no-op; S := S – 1; signal (S): S := S + 1;