SlideShare a Scribd company logo
1 of 4
Download to read offline
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

Contoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzyContoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzy
Zaenal Khayat
 
Metode enkripsi caesar cipher
Metode enkripsi caesar cipherMetode enkripsi caesar cipher
Metode enkripsi caesar cipher
Bobby Chandra
 
Sinkronisasi dan deadlock
Sinkronisasi dan deadlockSinkronisasi dan deadlock
Sinkronisasi dan deadlock
Alvin Setiawan
 

What's hot (20)

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
 
INTERAKSI MANUSIA DAN KOMPUTER
INTERAKSI MANUSIA DAN KOMPUTERINTERAKSI MANUSIA DAN KOMPUTER
INTERAKSI MANUSIA DAN KOMPUTER
 
Proses di Sistem Operasi
Proses di Sistem OperasiProses di Sistem Operasi
Proses di Sistem Operasi
 
Deadlock
DeadlockDeadlock
Deadlock
 
Deadlock
DeadlockDeadlock
Deadlock
 
technik kompilasi
technik kompilasitechnik kompilasi
technik kompilasi
 
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
4.1 Operasi Dasar Singly Linked List  1 (primitive list)4.1 Operasi Dasar Singly Linked List  1 (primitive list)
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
 
Memory
MemoryMemory
Memory
 
Ppt cloudcomputing
Ppt cloudcomputingPpt cloudcomputing
Ppt cloudcomputing
 
Keamanan Sistem
Keamanan SistemKeamanan Sistem
Keamanan Sistem
 
Contoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzyContoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzy
 
Jaringan hebb
Jaringan hebbJaringan hebb
Jaringan hebb
 
Makalah sistem-operasi
Makalah sistem-operasiMakalah sistem-operasi
Makalah sistem-operasi
 
Prosessor SAP 1
Prosessor SAP 1Prosessor SAP 1
Prosessor SAP 1
 
Metode enkripsi caesar cipher
Metode enkripsi caesar cipherMetode enkripsi caesar cipher
Metode enkripsi caesar cipher
 
Penjelasan Program
Penjelasan ProgramPenjelasan Program
Penjelasan Program
 
Sinkronisasi dan deadlock
Sinkronisasi dan deadlockSinkronisasi dan deadlock
Sinkronisasi dan deadlock
 
Algoritma penjadwalan proses
Algoritma penjadwalan prosesAlgoritma penjadwalan proses
Algoritma penjadwalan proses
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automata
 
Evolusi Antarmuka Komputer
Evolusi Antarmuka KomputerEvolusi Antarmuka Komputer
Evolusi Antarmuka Komputer
 

Similar to Modul Sistem Operasi Semaphore

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

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...
 

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