1. Jelaskan
kapan terjadinya konkurensi!
Jawab
:
Konkurensi adalah proses-proses (lebih dari satu proses)
yang terjadi pada saat bersamaan. Konkurensi merupakan landasan umum
perancangan sistem operasi. Proses-proses disebut konkuren jika proses-proses
berada pada saat yang sama.
Konkurensi dapat terjadi pada, antara lain:
a) Banyak aplikasi (multiple
application).
Multiprogramming memungkinkan banyak proses sekaligus dijalankan. Proses-proses
dapat berasal dari aplikasi-aplikasi berbeda. Pada sistem multiprogramming bisa
terdapat banyak aplikasi sekaligus yang dijalankan di sistem komputer.
b) Aplikasi terstruktur.
Perluasan prinsip perancangan modular dan pemrograman terstruktur adalah suatu
aplikasi dapat secara efektif diimplementasikan sebagai sekumpulan proses.
Dengan sekumpulan proses, maka tiap proses menyediakan satu layanan spesifik
tertentu.
c) Struktur sistem operasi.
Keunggulan strukturisasi dapat juga diterapkan ke pemrograman sistem. Beberapa
sistem operasi aktual yang dipasarkan dan yang sedang dalam riset telah
diimplementasikan sebagai sekumpulan proses. Sistem operasi bermodelkan
client/server menggunakan pendekatan ini.
d) Untuk Strukturisasi Satu Proses.
Saat ini untuk peningkatan kinerja maka satu proses dapat memiliki banyak
thread yang independen. Thread-thread tersebut harus dapat bekerjasama untuk
mencapai tujuan proses.
2. Jelaskan
beserta contoh, masalah- masalah yang terjadi ketika terjadi konkurensi!
Jawab
:
a) 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. Kesuksesan proses- proses kongkuren memerlukan pendefinisian
Critical Section dan memaksakan Mutual Exclusion di antara proses-proses
kongkuren yang sedang berjalan. Pemaksaan Mutual Exclusion merupakan landasan
pemrosesan kongkuren.
·
Contoh
Mutual Exclusion : Apabila kita sedang duduk di sebuah kursi orang
lain tidak bisa menduduki kursi tersebut hingga kita pergi dari kursi itu.
b) Deadlock. Deadlock adalah suatu kondisi dimana
dua proses atau lebih saling menunggu proses yang lain untuk melepaskan resource yang sedang dipakai.
Karena beberapa proses itu saling menunggu, maka tidak terjadi kemajuan dalam
kerja proses-proses tersebut. Deadlock adalah
masalah yang biasa terjadi ketika banyak proses yang membagi sebuah resource yang hanya boleh
dirubah oleh satu proses saja dalam satu waktu. Di kehidupan nyata, deadlock dapat digambarkan dalam
gambar berikut.Pada gambar diatas, deadlock dianalogikan
sebagai dua antrian mobil yang akan menyeberangi jembatan. Dalam kasus diatas,
antrian di sebelah kiri menunggu antrian kanan untuk mengosongkan jembatan (resource), begitu juga dengan antrian
kanan. Akhirnya tidak terjadi kemajuan dalam kerja dua antrian tersebut. Misal
ada proses A mempunyai resource X,
proses B mempunyai resource Y.
Kemudian kedua proses ini dijalankan bersama, proses A memerlukan resource Y dan proses B
memerlukan resource X,
tetapi kedua proses tidak akan memberikan resource yang dimiliki sebelum proses dirinya sendiri
selesai dilakukan. Sehingga akan terjadi tunggu-menunggu.
·
Contoh
Deadlock : “Dalam
persimpangan jalan” Dalam kasus ini
setiap mobil bergerak sesuai dengan nomor yang ditentukan,
tetapi tanpa pengaturan yang benar, maka setiap
mobil akan bertemu pada satu titik yang
permanen atau dapat dikatakan bahwa setiap mobil tidak dapat melanjutkan perjalanan lagi atau dapat disebut juga
terjadi deadlock.
c) Starvation. Starvation adalah kondisi yang
biasanya terjadi setelah deadlock.
Proses yang kekurangan resource (karena
tidak deadlock) tidak akan pernah mendapat resource yang dibutuhkan sehingga mengalami starvation (kelaparan). Namun, starvation juga bisa terjadi tanpa deadlock. Hal ini ketika terdapat
kesalahan dalam sistem sehingga terjadi ketimpangan dalam pembagian resouce. Satu proses selalu
mendapat resource,
sedangkan proses yang lain tidak pernah mendapatkannya. Ilustrasi starvation tanpa deadlock di dunia nyata dapat
dilihat di bawah ini.Pada gambar diatas, pada antrian kanan terjadi starvationkarena resource(jembatan) selalu dipakai
oleh antrian kiri, dan antrian kanan tidak mendapatkan giliran.
·
Contoh Starvation :
Sambil menunggu selesainya layanan (misalnya
transferdata oleh modem)
pemakai dapat berinteraksi denganaplikasi lain seperti aplikasi permainan game ataumengetikkan perintah pada text editorProses tersebut harus berjalan konkuren
dan tidakterjadi deadlock (hang)
d) Sinkronisasi. Sinkronisasi Adalah proses pengaturan
jalannya beberapa proses pada saat yang bersamaan. Tujuan utama sinkronisasi
adalah menghindari terjadinya inkonsistensi data karena pengaksesan oleh
beberapa proses yang berbeda (mutual
exclusion) serta untuk mengatur urutan jalannya proses-proses sehingga
dapat berjalan dengan lancar dan terhindar dari deadlock atau starvation.
·
Contoh
Sinkronisasi : masalah Bounded
Buffer di atas sebenarnya sudah menggambarkan terjadinya Race Condition. P1 dan
P2 saling berlomba meng-update nilai counter sehingga pada suatu waktu, nilai
counter-nya bisa salah.