Anda di halaman 1dari 14

KELOMPOK 4

Yuliani Manullang (201743501871)


Dani Elfador (201743502428)
Dony Setiya Damara (201743502279)
Pertemuan 5

Proses menggunakan semaphore :


• Kondisi pacu (race condition)
• Daerah kritis mutual exclusion
• Metode pembentukan mutual exclusion
Semaphore
• Semaphore adalah sebuah struktur data komputer yang
digunakan untuk sinkronisasi proses, yaitu untuk
memecahkan masalah di mana lebih dari satu proses atau
thread dijalankan secara bersamaan dan harus diatur
urutan kerjanya.

• Semaphore memiliki dua jenis, yaitu:


1. Binary semaphore. Semaphore ini hanya memiliki nilai 1
atau 0. Sering juga disebut sebagai semaphore primitif.
2. Counting semaphore. Semaphore ini memiliki nilai 0, 1,
serta integer lainnya. Banyak sistem operasi yang tidak
secara langsung mengimplementasikan semaphore ini,
tetapi dengan memanfaatkan binary semaphore.
• Prinsip semaphore :
1. Dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-
penanda sederhana.
2. Proses dipaksa berhenti sampai proses memperoleh penanda tertentu.
3. Variabel khusus untuk penandaan ini disebut semaphore.

• Fungsi Semaphore
Seperti telah disebutkan sebelumnya, semaphore berfungsi untuk menangani masalah
sinkronisasi secara umum, yaitu:
1. Mutual Exclusion. Sesuai dengan prinsip mutual exclusion, jika suatu thread
sedang berada dalam critical section-nya, thread lain harus menunggu thread
tersebut keluar dari critical section-nya sebelum dapat memasuki critical section-
nya sendiri. Di sinilah semaphore digunakan, thread yang akan memasuki critical
section-nya akan memanggil fungsi kunci terlebih dahulu. Jika tidak ada thread
lain yang sedang berada dalam critical section, thread ini akan memasuki critical
section-nya. Jika terdapat thread lain yang sedang berada dalam critical section-
nya, thread ini harus menunggu.Setelah thread keluar dari critical section-nya,
thread tersebut akan memanggil fungsi buka sehingga sem_value akan naik
menjadi lebih dari 0, dan satu (dari beberapa) thread yang sedang menunggu
akan mendapatkan giliran untuk memasuki critical section-nya.
2. Resource Controller. Bayangkan sebuah restoran yang setiap
malamnya ramai dikunjungi pelanggan. Kapasitas restoran terbatas,
tetapi pemilik restoran memiliki kebijakan bahwa semua pengunjung
yang datang akan mendapatkan kesempatan untuk makan, dengan
konsekuensi yaitu pelanggan harus sabar menunggu gilirannya. Oleh
karena itu, dikerahkanlah pegawai restoran untuk menahan tamu di
luar jika restoran penuh lalu mempersilahkan tamu masuk jika tempat
telah tersedia.Dari analogi di atas, pelanggan adalah thread, kapasitas
restoran adalah resource, dan pegawai restoran adalah semaphore.
Semaphore menyimpan banyaknya resource yang tersedia. Saat thread
ingin memakai resource ia akan memanggil fungsi kunci. Jika resource
masih tersedia, thread bisa langsung menggunakannya, sebaliknya jika
semua resource sedang dipakai, thread tersebut harus menunggu.
Setelah resource selesai dipakai thread akan memanggil fungsi buka
sehingga resource yang bebas bertambah.
3. Sinkronisasi Antar-Proses. Ada kalanya suatu thread memerlukan
resource yang dihasilkan oleh thread lainnya. Oleh karena itu
dibutuhkan suatu mekanisme untuk mengatur urutan eksekusi thread.
Mekanisme ini dilakukan dengan memanfaatkan semaphore.
• Keuntungan menggunakan semaphore:
1. Dari segi programming, penanganan masalah
sinkronisasi dengan semaphore umumnya rapi dan
teratur, sehingga mudah untuk dibuktikan
kebenarannya.
2. Semaphore diimplementasikan dalam hard code
sehingga penggunaannya bersifat portabel.

• Kerugian menggunakan semaphore:


Busy waiting. Apabila suatu proses menempati critical
section, dan ada proses lain yang ingin masuk critical
section, maka akan terjadi iterasi secara terus-menerus
pada entry section. Hal ini akan menimbulkan masalah
pada sistem yang menggunakan konsep
multiprogramming.
Kondisi pacu (race condition)
• Race condition adalah suatu kondisi dimana
dua atau lebih proses mengakses shared
memory/sumber daya pada saat yang
bersamaan dan hasil akhir dari data tersebut
tergantung dari proses mana yang terakhir
selesai dieksekusi sehingga hasil akhirnya
terkadang tidak sesuai dengan yang
dikehendaki.
• Dalam beberapa sistem operasi, proses-proses yang
berjalan bersamaan mungkin untuk membagi beberapa
penyimpanan umum, masing-masing dapat melakukan
proses baca (read) dan proses tulis (write). Penyimpanan
bersama (shared storage) mungkin berada di memori
utama atau berupa sebuah berkas bersama, lokasi dari
memori bersama tidak merubah kealamian dari komunikasi
atau masalah yang muncul. Untuk mengetahui bagaimana
komunikasi antar proses bekerja, mari kita simak sebuah
contoh sederhana, sebuah print spooler. Ketika sebuah
proses ingin mencetak sebuah berkas, proses tersebut
memasukkan nama berkas ke dalam sebuah spooler
direktori yang khusus. Proses yang lain, printer daemon,
secara periodik memeriksa untuk mengetahui jika ada
banyak berkas yang akan dicetak, dan jika ada berkas yang
sudah dicetak dihilangkan nama berkasnya dari direktori.
Mutual Exclusion
• Adalah jaminan hanya satu proses yang
mengakses sumber daya pada suatu interval
waktu tertentu. Proses proses yang lain
dilarang mengerjakan hal yang sama. Bagian
program yang sedang mengakses memori atau
sumber daya yang dipakai bersama disebut
Critical Section/Region. Mutual Exclusion
merupakan jaminan untuk mengatasi kondisi
pacu agar tidak boleh 2 proses atau lebih
memasuki Critical Section secara bersamaan.
• Ilustrasi Aplikasi Tabungan
Seluruh sistem yang melibatkan banyak proses mengakses satu sumber daya bersama selalu
menimbulkan masalah mutual exclusion.
Contoh :
Pada aplikasi tabungan , misalnya rekening A berisi Rp1.000.000,- yang terdaftar di
kantor cabang di bandung.
Pada suatu saat program aplikasi kantor cabang di jakarta melayani penyetoran
Rp3.000.000,- ke rekening a. Program aplikasi membaca saldo akhir rekening A.
Pada waktu hampir bersamaan , di kantor cabang Bandung juga terjadi transaksi
penyetoran Rp5.000.000,- ke rekening A . Program aplkasi di Bandung membaca saldo A masih
Rp1.000.000,-

• Beberapa skenario dapat terjadi bila mutual exclusion tidak terjamin yaitu :
1) Program aplikasi Bandung menulis ke rekening A secara cepat sehingga dihasilkan saldo
Rp6.000.000,_ Setelah itu , program aplikasi kantor cabang jakarta menimpa hsil itu dengan saldo
Rp4.000.000,- hasil akhir yang diperoleh adalah Rp4.000.000,- bukan Rp10.000.000,- (yang
seharusnya).

2) Program aplikasi Jakarta dilakukan menulis rekening A secara cepat sehingga dihasilkan
saldo Rp4.000.000,- Setelah itu program aplikasi di kantor Bandung menimpa hasil itu dengan
saldo Rp6.000.000,- hasil yang lebih baik dibandingkan skenario pertama tetapi masih di bawah
yang seharusnya yaitu Rp10.000.000,-
• Kriteria Penyelesaian mutual exclusion
Kemampuan menjamin mutual exclusion harus memeuhi kriteria-
kriteria berikut :
1. Mutual exclusion harus dijamin.
2. Hanya satu proses pada satu saat yang diizinkan masuk critical
section. Proses-proses lain dilarang masuk critical section yang
sama pada saat telah ada proses yang masuk critical section itu.
3. Proses yang berada di noncritical section , dilarang memblock
proses-proses lain yang ingin masuk critical section.
4. Harus dijamin proses yang ingin masuk critical section tidak
menunggu selama waktu yang tidak terhingga . Atau tak boleh
terdapat deadlock atau starvation .
5. Ketika tidak ada proses di critical section maka proses yang ingin
masuk critical section harus diizinkan segera masuk tanpa waktu
tunda.
6. Tidak ada asumsi mengenai kecepatan relatif proses atau jumlah
proses yang ada.
• Bagian program yang sedang mengakses memori atau
sumberdaya yang dipakai bersama disebut critical section /
region. Kesuksesan proses-proses kongkuren memerlukan
pendefinisian critical section dan memaksakan mutual
exclusion diantara proses-proses kongkuren yang sedang
berjalan. Pemaksaan mutual exclusion merupakan landasan
pemrosesan kongkuren, namun pemaksaan mutual
exclusion dapat menimbulkan 2 masalah yaitu :
1. Deadlock
Adalah banyak proses yang saling menunggu hasil dari proses
yang lain untuk dapat melanjutkan atau menyelesaikan
tugasnya.
2. Startvation
Adalah suatu proses akan menunggu suatu kejadian atau hasil
suatu proses lain supaya dapat menyelesaikan tugasnya,
tetapi kejadian yang ditunggu tidak pernah terjadi karena
selalu diambil lebih dulu oleh proses yang lain.
• Pengertian DeadLock
Deadlock secara harfiah adalah kebuntuan. Sedangkan dalam sistem
operasi berarti suatu kondisi di mana sekumpulan proses tidak dapat berjalan kembali
atau tidak adanya komunikasi antar proses. Definisi lainnya yaitu sekumpulan proses
yang terblok yang tiap proses tersebut memegang sumber daya dan menunggu untuk
mendapatkan sumber daya yang dipegang oleh proses di dalam kumpulan tersebut.
Penyebab utama terjadinya deadlock adalah terbatasnya sumber daya yang
akan digunakan oleh proses-proses. Tiap proses berkompetisi untuk memperebutkan
sumber daya yang ada. Jadi deadlock berhubungan erat dengan tersedianya sumber
daya dari komputer.

• Pengertian Startvation
Perkembangan sistem komputer mendatang adalah menuju ke sistem multi-
processing, multiprogramming, terdistribusi dan paralel yang mengharuskan adanya
proses-proses yang berjalan bersama dalam waktu yang bersamaan. Hal demikian
merupakan masalah yang perlu perhatian dari perancang sistem operasi. Kondisi
dimana pada saat yang bersamaan terdapat lebih dari satu proses disebut dengan
kongkurensi (proses-proses yang kongkuren). Dan dalam kongruensi ini pasti ada
masalah yang salah satunya adalah STARVATION. Starvation adalah kondisi yang
biasanya terjadi setelah deadlock. Proses yang kekurangan resource (karena terjadi
deadlock) tidak akan pernah mendapat resource yang dibutuhkan sehingga mengalami
starvation (kelaparan).

Anda mungkin juga menyukai