SlideShare a Scribd company logo
MODUL S.O – SEMAPHORE (IND)
 TUJUAN
 Menjelaskan perbedaan antara sinkronisasi dengan locks dan semaphore
 Mengidentifikasi penggunaan semaphore
 Menggambarkan operasi semaphore dasar dan inisialisasi semaphore
 MENGAPA PERLU SEMAPHORE
 Locks hanya menyediakan mutual exclusion
o Sehingga memastikan hanya 1 thread saja pada critical section untuk waktu tertentu (saat
share resource penting seperti kasus bank kemarin)
 Mungkin perlu lebih dari itu : Menambahkan urutan pada penjadwalan thread
o Contoh : Produser/Konsumer
 Produser : Memproduksi resource (data)
 Consumer : Mengkonsumsi resource (data)
o Contoh
 Urutan perintah : ps | grep “gcc” | wc
 ps sebagai produser, grep menggunakan hasil dari ps dan wc baru berjalan
setelah menggunakan gasil dari grep.
o Produser dan Konsumer tidak bisa beroperasi dalam tahap lock yang sekuensial/bergantian,
karena akan banyak jadi context switching yg membuat operasi tidak efisien, jadi kita perlu :
 Menempatkan buffer berukuran fix antara produser dan konsumer
 Mensinkronisasikan akses ke buffer
 Produser bisa tetap “memproduksi” selama buffer belum penuh, consumer bisa
tetap menggunakan hasil produksi selama buffer belum kosong.
 SEMAPHORE
APA ITU SEMAPHORE
 Semaphore adalah sebuah primitive untuk sinkronisasi yang lebih tinggi levelnya daripada lock
 Ditemukan oleh Dijkstra pada 1965 sebagai bagian dari Proyek Sistem Operasi
 Semaphore adalah
o Sebuah counter yang dimanipulasi secara atomik melalui dua operasi : signal dan wait.
o wait(semaphore) : lakukan decrement (diturunkan nilainya) pada counter, jika counter
bernilai zero maka lakukan block sampai semaphore di”nyalakan” sinyalnya (is signaled)
 sering disebut juga P(), dari kata belanda yang artinya test, dan juga sering
disebut down()
o signal(semaphore) : lakukan increment pada counter, “bangunkan” satu pengantri bila
ada.
 Sering disebut juga V(), dari bahasa Belanda yang artinya increment (naikkan), dan
juga sering disebut up()
o sem_init(semaphore,counter) : set nilai counter pertama.
IMPLEMENTASI SEMAPHORE PD PSEUDOCODE
 Gambar di atas adalah pseudo code untuk algortitam dari semaphore
 Pertama kita punya structure yaitu value yang menunjukan hitungan/cacahan/count ke atas
dan kebawah, dan queue L yang merupakan list proses-proses agar kita bisa men-track proses-proses
mana yang sedang menunggu sehingga kita dapat membangunkannya (wake up) kemudian.
 Fungsi wait() seperti yang dibahas sebelumnya : Bila value (nilai semaphore) lebih besar dari nol,
decrement value, bila tidak tambahkan proses ke list/antrian dan lakukan block pada proses tsb
sampai sampai seseorang membangunkannya.
 Fungsi signal() bertujuan mengecek apakah list tidak kosong . Bila list (antrian) tidak kosong, hilangkan
proses P dari antrian L dan bangunkan proses P tsb, bila list kosong, increment value.
 Wait() dan signal() adalah operasi pd critical section karena mereka sama sama megakses value dan
antrian. Jadi mereka harus dieksekusi secara atomik (satuan) satu sama lain  karena itu ada operasi
yang sama dengan lock yaitu operasi blocking
BLOCKING SEMAPHORE
 Tiap semaphore memiliki sebuah antrian proses/thread yang berkaitan.
o Bila wait() di call oleh sebuah thread :
 Bila semaphore “available” (nilainya 1 atau lebih) maka thread akan diteruskan
(tetap berjalan)
 Bila semaphore “unavailable” maka thread di block dan menunggu di antrian.
o Memanggil signal() akan membuka semaphore
 Bila ada thread sedang menunggu di antrian, satu thread di unblock
 Bila tidak ada thread di antrian, buat sebuah signal untuk diingat saat sebuah wait()
dicall  dilakukan dengan meng-increment value semaphore
INISIALISASI SEMAPHORE
 Bila kita inisialisasi semaphore ke 1 , apa artinya?artinya ada bendera semaphore berkibar (available)
o Thread pertama yang memanggil wait() dapat terus berjalan (running)
 Karena thread pertama tersebut sudah memakai “hak berjalan/hak akses” maka
 tanda bendera semaphore harus “diturunkan” (semaphore unavailable)  Nilai
senaphore berubah dari 1 ke 0
o Bila ada thread kedua yang memanggil wait() maka akan diblock (karena tidak ada bendera
semaphore berkibar)
 Thread kedua ini akan mengantri, menunggu giliran mendapat hak akses/hak
berjalan,
 semaphore tetap bernilai 0
o Bila thread pertama sudah selesai “urusannya” maka ia akan memanggil signal()
 Ternyata ada thread dua sedang ‘tidur’ di antrian. Thread dua dibangunkan karena
thread 1 sudah selesai ,
 semaphore tetap bernilai 0 , tetap tidak boleh ada thread lain yg mengakses karena
sekarang ada thread 2 yang diberi hak akses
o Bila thread kedua sekarang sudah selesai urusannya dan memanggil signal()
 Karena tidak ada lagi thread yang mengantri, bendera semaphore dikibarkan 
nilai semaphore berubah dari 0 ke 1
 Thread selanjutnya yang akan mengakses akan memanggil wait() dan langsung
boleh mengakses tanpa menunggu.
 Bila kita lihat sistem semaphore itu berlaku seperti lock mutual exclusive (Mutex Lock)!
NILAI SEMAPHORE
 Bagaimana bila nilai semaphore diinisialisasi ke 2?
o Maka ada dua thread yang boleh mengakses/berjalan pada saat yang sama.
o Kode inisialisasinya : sem_init(sem,2)
 Jadi penggunaan nilai semaphore adalah untuk menunjukkan alokasi jumlah thread yang dapat
mengakses resource (shared buffer/ device) secara bersamaan
KUIS
1. Jelaskan Perbedaan Lock biasa dengan Semaphore
2. Gambarkan algoritma dari sinkronisasi menggunakan semaphore
REFERENSI
https://www.youtube.com/watch?v=-GnLLXPjLN4
https://www.youtube.com/watch?v=KZU4ANBoLTY

More Related Content

What's hot

Jenis dan proses interupsi
Jenis dan proses interupsiJenis dan proses interupsi
Jenis dan proses interupsi
laurensius08
 
multiprosesor & multikomputer
multiprosesor & multikomputermultiprosesor & multikomputer
multiprosesor & multikomputer
Reza Mardiyeni
 
6. perancangan sistem terinci
6. perancangan sistem terinci6. perancangan sistem terinci
6. perancangan sistem terinci
Alvin Setiawan
 
Jawaban uas Perancis
Jawaban uas PerancisJawaban uas Perancis
Jawaban uas Perancis
lonklonk
 
Manajemn Input Output
Manajemn Input OutputManajemn Input Output
Manajemn Input Output
Stevie Principe
 
Teknik Optimasi - P8
Teknik Optimasi - P8Teknik Optimasi - P8
Teknik Optimasi - P8
ahmad haidaroh
 
Siklus pengambilan (fetch cycle)
Siklus pengambilan (fetch cycle)Siklus pengambilan (fetch cycle)
Siklus pengambilan (fetch cycle)
Lusiana Diyan
 
Representasi pengetahuan logika proposisi
Representasi pengetahuan logika proposisiRepresentasi pengetahuan logika proposisi
Representasi pengetahuan logika proposisi
Gunawan Manalu
 
Pertemuan 05 Teknik Pencarian (Search) -lanjutan
Pertemuan 05 Teknik Pencarian (Search) -lanjutanPertemuan 05 Teknik Pencarian (Search) -lanjutan
Pertemuan 05 Teknik Pencarian (Search) -lanjutan
Endang Retnoningsih
 
8 pengenalan input output
8 pengenalan input output8 pengenalan input output
8 pengenalan input output
Renol Doang
 
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
ahmad haidaroh
 
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
 
5 jaringan proyek
5 jaringan proyek5 jaringan proyek
5 jaringan proyek
Simon Patabang
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automata
ahmad haidaroh
 
Tugas 2 individu tentang dbms
Tugas 2 individu tentang dbmsTugas 2 individu tentang dbms
Tugas 2 individu tentang dbms
Elma Fiana
 
Materi application layer
Materi application layerMateri application layer
Materi application layer
Ian March
 
Bagan terstruktur
Bagan terstrukturBagan terstruktur
Bagan terstruktur
iimpunya3
 
SISTEM KOMUNIKASI DATA
SISTEM KOMUNIKASI DATASISTEM KOMUNIKASI DATA
SISTEM KOMUNIKASI DATA
EDIS BLOG
 
MultiProgramming and Time Sharing
MultiProgramming and Time SharingMultiProgramming and Time Sharing
MultiProgramming and Time Sharing
Tri Sugihartono
 

What's hot (20)

Jenis dan proses interupsi
Jenis dan proses interupsiJenis dan proses interupsi
Jenis dan proses interupsi
 
multiprosesor & multikomputer
multiprosesor & multikomputermultiprosesor & multikomputer
multiprosesor & multikomputer
 
6. perancangan sistem terinci
6. perancangan sistem terinci6. perancangan sistem terinci
6. perancangan sistem terinci
 
Jawaban uas Perancis
Jawaban uas PerancisJawaban uas Perancis
Jawaban uas Perancis
 
Manajemn Input Output
Manajemn Input OutputManajemn Input Output
Manajemn Input Output
 
Teknik Optimasi - P8
Teknik Optimasi - P8Teknik Optimasi - P8
Teknik Optimasi - P8
 
Siklus pengambilan (fetch cycle)
Siklus pengambilan (fetch cycle)Siklus pengambilan (fetch cycle)
Siklus pengambilan (fetch cycle)
 
Representasi pengetahuan logika proposisi
Representasi pengetahuan logika proposisiRepresentasi pengetahuan logika proposisi
Representasi pengetahuan logika proposisi
 
Pertemuan 05 Teknik Pencarian (Search) -lanjutan
Pertemuan 05 Teknik Pencarian (Search) -lanjutanPertemuan 05 Teknik Pencarian (Search) -lanjutan
Pertemuan 05 Teknik Pencarian (Search) -lanjutan
 
8 pengenalan input output
8 pengenalan input output8 pengenalan input output
8 pengenalan input output
 
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
 
Materi Basis Data - Anomali dan Normalisasi
Materi Basis Data - Anomali dan NormalisasiMateri Basis Data - Anomali dan Normalisasi
Materi Basis Data - Anomali dan Normalisasi
 
circular linked list
circular linked listcircular linked list
circular linked list
 
5 jaringan proyek
5 jaringan proyek5 jaringan proyek
5 jaringan proyek
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automata
 
Tugas 2 individu tentang dbms
Tugas 2 individu tentang dbmsTugas 2 individu tentang dbms
Tugas 2 individu tentang dbms
 
Materi application layer
Materi application layerMateri application layer
Materi application layer
 
Bagan terstruktur
Bagan terstrukturBagan terstruktur
Bagan terstruktur
 
SISTEM KOMUNIKASI DATA
SISTEM KOMUNIKASI DATASISTEM KOMUNIKASI DATA
SISTEM KOMUNIKASI DATA
 
MultiProgramming and Time Sharing
MultiProgramming and Time SharingMultiProgramming and Time Sharing
MultiProgramming and Time Sharing
 

Similar to Modul Sistem Operasi Semaphore

Backend Dan Python Dasar.pptx
Backend Dan Python Dasar.pptxBackend Dan Python Dasar.pptx
Backend Dan Python Dasar.pptx
strongpapazola1
 
Laporan praktikum modul ix
Laporan praktikum modul ixLaporan praktikum modul ix
Laporan praktikum modul ix
Devi Apriansyah
 
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunusTifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanie Indah
 
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunusTifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanie Indah
 
Laporan praktikum modul ii & iii
Laporan praktikum modul ii & iiiLaporan praktikum modul ii & iii
Laporan praktikum modul ii & iii
Devi Apriansyah
 
Praktikum 6A
Praktikum 6APraktikum 6A
Praktikum 6A
Indra Wijaya
 
Looping Algoritma
Looping AlgoritmaLooping Algoritma
Looping Algoritma
Firdaus1212
 
Javascript function
Javascript   functionJavascript   function
Javascript function
guestd57670
 
19175016 - Sekar Setyaningtyas.pptx - Fungi (def) Python
19175016 - Sekar Setyaningtyas.pptx - Fungi (def) Python 19175016 - Sekar Setyaningtyas.pptx - Fungi (def) Python
19175016 - Sekar Setyaningtyas.pptx - Fungi (def) Python
19175016SEKARSETYANI
 

Similar to Modul Sistem Operasi Semaphore (10)

Backend Dan Python Dasar.pptx
Backend Dan Python Dasar.pptxBackend Dan Python Dasar.pptx
Backend Dan Python Dasar.pptx
 
Laporan praktikum modul ix
Laporan praktikum modul ixLaporan praktikum modul ix
Laporan praktikum modul ix
 
Pertemuan 4 ok
Pertemuan 4 okPertemuan 4 ok
Pertemuan 4 ok
 
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunusTifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
 
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunusTifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
Tifanieindahyulianti 1610530183 tugasperulangan_algoritma_muhammadyunus
 
Laporan praktikum modul ii & iii
Laporan praktikum modul ii & iiiLaporan praktikum modul ii & iii
Laporan praktikum modul ii & iii
 
Praktikum 6A
Praktikum 6APraktikum 6A
Praktikum 6A
 
Looping Algoritma
Looping AlgoritmaLooping Algoritma
Looping Algoritma
 
Javascript function
Javascript   functionJavascript   function
Javascript function
 
19175016 - Sekar Setyaningtyas.pptx - Fungi (def) Python
19175016 - Sekar Setyaningtyas.pptx - Fungi (def) Python 19175016 - Sekar Setyaningtyas.pptx - Fungi (def) Python
19175016 - Sekar Setyaningtyas.pptx - Fungi (def) Python
 

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 Mining
DEDE IRYAWAN
 
APPLIED DATABASE III - Modul Data Preprocessing
APPLIED DATABASE III - Modul Data PreprocessingAPPLIED DATABASE III - Modul Data Preprocessing
APPLIED DATABASE III - Modul Data Preprocessing
DEDE 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 PROYEK
DEDE 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 PROYEK
DEDE IRYAWAN
 
TOEFL Exercise 22 Slide
TOEFL Exercise 22 SlideTOEFL Exercise 22 Slide
TOEFL Exercise 22 Slide
DEDE IRYAWAN
 
TOEFL Exercise 17 - Listen for IDIOMS
TOEFL Exercise 17 - Listen for IDIOMSTOEFL Exercise 17 - Listen for IDIOMS
TOEFL Exercise 17 - Listen for IDIOMS
DEDE IRYAWAN
 
TOEFL EXERCISE 15 - UNTRUE CONDITION
TOEFL EXERCISE 15 - UNTRUE CONDITIONTOEFL EXERCISE 15 - UNTRUE CONDITION
TOEFL EXERCISE 15 - UNTRUE CONDITION
DEDE IRYAWAN
 
TOEFL EXERCISE 14 - Listen for WISHES
TOEFL EXERCISE 14 - Listen for  WISHESTOEFL EXERCISE 14 - Listen for  WISHES
TOEFL EXERCISE 14 - Listen for WISHES
DEDE 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 SURPRISE
DEDE 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 SUGGESTION
DEDE IRYAWAN
 
TOEFL Exercise 11 - Expression of AGREEMENT
TOEFL Exercise 11 - Expression of AGREEMENTTOEFL Exercise 11 - Expression of AGREEMENT
TOEFL Exercise 11 - Expression of AGREEMENT
DEDE IRYAWAN
 
TOEFL Exercise 10 - NEGATIVE WITH COMPARATIVE
TOEFL Exercise 10 - NEGATIVE WITH COMPARATIVETOEFL Exercise 10 - NEGATIVE WITH COMPARATIVE
TOEFL Exercise 10 - NEGATIVE WITH COMPARATIVE
DEDE IRYAWAN
 
TOEFL Exercise 9 - “ALMOST NEGATIVE” Expression
TOEFL Exercise 9 - “ALMOST NEGATIVE” ExpressionTOEFL Exercise 9 - “ALMOST NEGATIVE” Expression
TOEFL Exercise 9 - “ALMOST NEGATIVE” Expression
DEDE IRYAWAN
 
TOEFL EXERCISE 8 - DOUBLE NEGATIVE EXPRESSIONS
TOEFL EXERCISE 8 - DOUBLE NEGATIVE EXPRESSIONSTOEFL EXERCISE 8 - DOUBLE NEGATIVE EXPRESSIONS
TOEFL EXERCISE 8 - DOUBLE NEGATIVE EXPRESSIONS
DEDE IRYAWAN
 
TOEFL Exercise 7 - NEGATIVE EXPRESSION
TOEFL Exercise 7 - NEGATIVE EXPRESSIONTOEFL Exercise 7 - NEGATIVE EXPRESSION
TOEFL Exercise 7 - NEGATIVE EXPRESSION
DEDE IRYAWAN
 
TOEFL EXERCISE 3 - AVOID SIMILAR SOUNDS
TOEFL EXERCISE 3 - AVOID SIMILAR SOUNDSTOEFL EXERCISE 3 - AVOID SIMILAR SOUNDS
TOEFL EXERCISE 3 - AVOID SIMILAR SOUNDS
DEDE 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 LINE
DEDE IRYAWAN
 
Kapita Selekta Applied Database : Slide 5 - Desain Penelitian
Kapita Selekta Applied Database : Slide 5 - Desain PenelitianKapita Selekta Applied Database : Slide 5 - Desain Penelitian
Kapita Selekta Applied Database : Slide 5 - Desain Penelitian
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
 
Kapita Selekta Applied Database : Slide 5 - Desain Penelitian
Kapita Selekta Applied Database : Slide 5 - Desain PenelitianKapita Selekta Applied Database : Slide 5 - Desain Penelitian
Kapita Selekta Applied Database : Slide 5 - Desain Penelitian
 

Modul Sistem Operasi Semaphore

  • 1. MODUL S.O – SEMAPHORE (IND)  TUJUAN  Menjelaskan perbedaan antara sinkronisasi dengan locks dan semaphore  Mengidentifikasi penggunaan semaphore  Menggambarkan operasi semaphore dasar dan inisialisasi semaphore  MENGAPA PERLU SEMAPHORE  Locks hanya menyediakan mutual exclusion o Sehingga memastikan hanya 1 thread saja pada critical section untuk waktu tertentu (saat share resource penting seperti kasus bank kemarin)  Mungkin perlu lebih dari itu : Menambahkan urutan pada penjadwalan thread o Contoh : Produser/Konsumer  Produser : Memproduksi resource (data)  Consumer : Mengkonsumsi resource (data) o Contoh  Urutan perintah : ps | grep “gcc” | wc  ps sebagai produser, grep menggunakan hasil dari ps dan wc baru berjalan setelah menggunakan gasil dari grep. o Produser dan Konsumer tidak bisa beroperasi dalam tahap lock yang sekuensial/bergantian, karena akan banyak jadi context switching yg membuat operasi tidak efisien, jadi kita perlu :  Menempatkan buffer berukuran fix antara produser dan konsumer  Mensinkronisasikan akses ke buffer  Produser bisa tetap “memproduksi” selama buffer belum penuh, consumer bisa tetap menggunakan hasil produksi selama buffer belum kosong.  SEMAPHORE APA ITU SEMAPHORE  Semaphore adalah sebuah primitive untuk sinkronisasi yang lebih tinggi levelnya daripada lock  Ditemukan oleh Dijkstra pada 1965 sebagai bagian dari Proyek Sistem Operasi  Semaphore adalah o Sebuah counter yang dimanipulasi secara atomik melalui dua operasi : signal dan wait. o wait(semaphore) : lakukan decrement (diturunkan nilainya) pada counter, jika counter bernilai zero maka lakukan block sampai semaphore di”nyalakan” sinyalnya (is signaled)  sering disebut juga P(), dari kata belanda yang artinya test, dan juga sering disebut down()
  • 2. o signal(semaphore) : lakukan increment pada counter, “bangunkan” satu pengantri bila ada.  Sering disebut juga V(), dari bahasa Belanda yang artinya increment (naikkan), dan juga sering disebut up() o sem_init(semaphore,counter) : set nilai counter pertama. IMPLEMENTASI SEMAPHORE PD PSEUDOCODE  Gambar di atas adalah pseudo code untuk algortitam dari semaphore  Pertama kita punya structure yaitu value yang menunjukan hitungan/cacahan/count ke atas dan kebawah, dan queue L yang merupakan list proses-proses agar kita bisa men-track proses-proses mana yang sedang menunggu sehingga kita dapat membangunkannya (wake up) kemudian.  Fungsi wait() seperti yang dibahas sebelumnya : Bila value (nilai semaphore) lebih besar dari nol, decrement value, bila tidak tambahkan proses ke list/antrian dan lakukan block pada proses tsb sampai sampai seseorang membangunkannya.  Fungsi signal() bertujuan mengecek apakah list tidak kosong . Bila list (antrian) tidak kosong, hilangkan proses P dari antrian L dan bangunkan proses P tsb, bila list kosong, increment value.  Wait() dan signal() adalah operasi pd critical section karena mereka sama sama megakses value dan antrian. Jadi mereka harus dieksekusi secara atomik (satuan) satu sama lain  karena itu ada operasi yang sama dengan lock yaitu operasi blocking BLOCKING SEMAPHORE  Tiap semaphore memiliki sebuah antrian proses/thread yang berkaitan.
  • 3. o Bila wait() di call oleh sebuah thread :  Bila semaphore “available” (nilainya 1 atau lebih) maka thread akan diteruskan (tetap berjalan)  Bila semaphore “unavailable” maka thread di block dan menunggu di antrian. o Memanggil signal() akan membuka semaphore  Bila ada thread sedang menunggu di antrian, satu thread di unblock  Bila tidak ada thread di antrian, buat sebuah signal untuk diingat saat sebuah wait() dicall  dilakukan dengan meng-increment value semaphore INISIALISASI SEMAPHORE  Bila kita inisialisasi semaphore ke 1 , apa artinya?artinya ada bendera semaphore berkibar (available) o Thread pertama yang memanggil wait() dapat terus berjalan (running)  Karena thread pertama tersebut sudah memakai “hak berjalan/hak akses” maka  tanda bendera semaphore harus “diturunkan” (semaphore unavailable)  Nilai senaphore berubah dari 1 ke 0 o Bila ada thread kedua yang memanggil wait() maka akan diblock (karena tidak ada bendera semaphore berkibar)  Thread kedua ini akan mengantri, menunggu giliran mendapat hak akses/hak berjalan,  semaphore tetap bernilai 0 o Bila thread pertama sudah selesai “urusannya” maka ia akan memanggil signal()  Ternyata ada thread dua sedang ‘tidur’ di antrian. Thread dua dibangunkan karena thread 1 sudah selesai ,  semaphore tetap bernilai 0 , tetap tidak boleh ada thread lain yg mengakses karena sekarang ada thread 2 yang diberi hak akses o Bila thread kedua sekarang sudah selesai urusannya dan memanggil signal()  Karena tidak ada lagi thread yang mengantri, bendera semaphore dikibarkan  nilai semaphore berubah dari 0 ke 1  Thread selanjutnya yang akan mengakses akan memanggil wait() dan langsung boleh mengakses tanpa menunggu.  Bila kita lihat sistem semaphore itu berlaku seperti lock mutual exclusive (Mutex Lock)! NILAI SEMAPHORE  Bagaimana bila nilai semaphore diinisialisasi ke 2? o Maka ada dua thread yang boleh mengakses/berjalan pada saat yang sama. o Kode inisialisasinya : sem_init(sem,2)  Jadi penggunaan nilai semaphore adalah untuk menunjukkan alokasi jumlah thread yang dapat mengakses resource (shared buffer/ device) secara bersamaan KUIS 1. Jelaskan Perbedaan Lock biasa dengan Semaphore 2. Gambarkan algoritma dari sinkronisasi menggunakan semaphore REFERENSI