You are on page 1of 3

Concurrency

Concurensy merupakan landasan umum perancangan sistem operasi. Proses-proses disebut


concurrensy jika proses-proses (lebih dari satu proses) berada pada saat yang sama. Proses-proses
yang mengalami kongkuren dapat berdiri sendiri (independen) atau dapat saling berinteraksi,
sehingga membutuhkan sinkronisasi atau koordinasi proses yang baik. Untuk penanganan
kongkuren, bahasa pemograman saat ini telah memiliki mekanisme kongkurensi dimana dalam
penerapannya perlu dukungan sistem operasi dimana bahasa berada. Proses yang kongkuren ini
mempunyai beberapa masalah yang harus diselesaikan, yaitu :

Mutual Exclusion
Mutual Exclusion adalah suatu cara yang menjamin jika ada sebuah proses yang
menggunakan variabel atau berkas yang sama (digunakan juga oleh proses lain), maka proses lain
akan dikeluarkan dari pekerjaan yang sama. Jadi, Mutual Exclusive terjadi ketika hanya ada satu
proses yang boleh memakai sumber daya, dan proses lain yang ingin memakai sumber daya tersebut
harus menunggu hingga sumber daya tadi dilepaskan atau tidak ada proses yang memakai sumber
daya tersebut.
Pengertian lain Mutual exclusion adalah jaminan hanya satu proses yang mengakses sumber
daya pada suatu interval waktu tertentu, sedangkan proses lain dilarang mengerjakan hal yang sama
- contoh : sumberdaya printer hanya bisa diakses 1 proses, tidak bisa bersamaan sumber daya ini
disebut sumber daya kritis dan bagian program yang menggunakan sumber daya kritis disebut
critical region / section. Hanya satu program pada satu saat yang diijinkan masuk ke critical region.
Pemrogram tidak dapat bergantung pada sistem operasi untuk memahami dan memaksakan
batasan ini, karena maksud program tidak dapat diketahui oleh sistem operasi. Hanya saja, system
operasi menyediakan layanan (system call) yang bertujuan untuk mencegah proses lain masuk ke
critical section yang sedang digunakan proses tertentu. Pemrograman harus menspesifikasikan
bagian-bagian critical section, sehingga sistem operasi akan menjaganya. Pentingnya mutual
exclusion adalah jaminan hanya satu proses yang mengakses sumber daya pada suatu interval waktu

Syncronization
Sinkronisasi adalah proses pengaturan jalannya beberapa proses pada saat yang bersamaan. Tujuan
utama sinkronisasi adalah menghindari terjadinya inkonsitensi data karena pengaksesan oleh
beberapa proses yang berbeda (mutual exclusion) serta untuk mengatur urutan jalannya prosesproses sehingga dapat berjalan dengan lancar dan terhindar dari deadlock dan starvation.
Sinkronisasi umumnya dilakukan dengan bantuan perangkat sinkronisasi. Penyelesaian terhadap
masalah ini sangat penting karena perkembangan teknologi sistem komputer menuju ke sistem
multiprocessing, terdistribusi dan paralel yang mengharuskan adanya proses-proses kongkuren.

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

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). 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 starvation karena resource (jembatan) selalu dipakai oleh antrian kiri, dan
antrian kanan tidak mendapatkan giliran

Penanganan Deadlock
Terdapat beberapa cara dalam menangani deadlock, yang secara umumnya ada 4 cara untuk
menangani keadaan deadlock, yaitu:
1. Pengabaian. Maksud dari pengabaian dari kata tersebut yaitu sistem mengabaikan terjadinya
deadlock dan berpura-pura tidak mengetahui jika deadlock telah terjadi. Dalam penanganan dengan
cara ini dikenal dengan istilah ostrich algorithm. Pelaksanaan algoritma ini yaitu sistem tidak
mendeteksi adanya deadlock dan secara otomatis mematikan proses atau program yang mengalami
deadlock. Kebanyakan sistem operasi yang ada mengadaptasi cara ini untuk menangani keadaan
deadlock. Cara penanganan dengan mengabaikan deadlock banyak digunakan karena masalah
deadlock tersebut jarang terjadi dan relatif rumit dan kompleks untuk diselesaikan. Sehingga
biasanya diabaikan oleh sistem untuk kemudian diselesaikan masalahnya oleh user atau pengguna
dengan cara melakukan terminasi dengan Ctrl+Alt+Del atau melakukan restart terhadap komputer.
2.
Pencegahan. Penanganan ini dengan cara mencegah munculnya salah satu karakteristik
deadlock. Penanganan ini dilaksanakan pada saat deadlock belum terjadi pada sistem. Yang
terutama memastikan agar sistem tidak akan pernah berada pada kondisi deadlock.

3.
Penghindaran. Menghindari keadaan deadlock. Bagian yang perlu diperhatikan yaitu bahwa
antara pencegahan dan penghindaran adalah berbeda. Pencegahan lebih mengarah kepada
mencegah salah satu dari empat karakteristik terjadinya deadlock, sehingga deadlock pun tidak
terjadi. Sedangkan penghindaran merupakan memprediksi apakah tindakan yang diambil oleh
sistem, dalam kaitannya dengan permintaan proses akan sumber daya, dapat mengakibatkan terjadi
deadlock.
4. Pendeteksian dan Pemulihan. Pada sistem yang sedang berada pada kondisi deadlock, tindakan
yang harus diambil adalah tindakan yang bersifat represif. Tindakan tersebut adalah dengan
mendeteksi adanya deadlock, kemudian memulihkan kembali sistem. Proses pendeteksian akan
menghasilkan informasi apakah sistem sedang deadlock atau tidak serta proses mana yang
mengalami deadlock.

Metode untuk Mengatasinya


Metode untuk megatasinya adalah sebagai berikut:
1. Masalah Mutual Eksklusif Kondisi ini tidak dapat dilarang, jika aksesnya perlu bersifat spesial
untuk satu proses, maka hal ini harus di dukung oleh kemampuan sistem operasi. Jadi diusahakan
agar tidak mempergunakan kondisi spesial tersebut sehingga sebisa mungkin deadlock bisa
dihindari.
2. Masalah Kondisi Menunggu dan Memegang Penanggulangan deadlock dari kondisi ini lebih baik
dan menjanjikan, asalkan kita bisa menahan proses yang memegang sumber daya untuk tidak
menunggu sumber daya laun, kita bisa mencegah deadlock. Caranya ialah dengan meminta semua
sumber daya yang ia butuhkan sebelum proses berjalan. Tetapi masalahnya sebagian proses tidak
mengetahui keperluannya sebelum ia berjalan. Jadi untuk mengatasi hal ini, kita dapat
menggunakan algoritma bankir. Yang mengatur hal ini bisa sistem operasi ataupun sebuah protokol.
Hasil yang bisa terjadi ialah sumber daya lebih di-spesifikasi dan kelaparan sumber daya, atau proses
yang membutuhkan sumber daya yang banyak harus menunggu sekian lama untuk mendapat
sumber daya yang dibutuhkan.
3. Masalah tidak ada Preemption.Hal ketiga ialah jangan sampai ada preemption pada sumber
daya yang telah dialokasikan. Untuk memastikan hal ini, kita bisa menggunakan protokol. Jadi jika
sebuah proses meminta sumber daya yang tidak dapat dipenuhi saat itu juga, maka proses
mengalami preempted. Atau dengan kata lain ada sumber daya dilepaskan dan diberikan ke proses
yang menunggu, dan proses itu akan menunggu sampai kebutuhan sumber dayanya dipenuhi. Atau
kita harus mencek sumber daya yang dimaui oleh proses di cek dahulu apakah tersedia. Jika ya maka
kita langsung alokasikan, sedangkan jika tidak tersedia maka kita melihat apakah ada proses lain
yang menunggu sumber daya juga. Jika ya, maka kita ambil sumber daya dari proses yang menunggu
tersebut dan memberikan pada proses yang meminta tersebut. Jika tidak tersedia juga, maka proses
itu harus menunggu. Dalam menunggu, beberapa dari sumber dayanya bisa saja di preempted,
tetapi jika ada proses yang memintanya. Cara ini efektif untuk proses yang menyimpan dalam
memory atau register.
4. Masalah Circular Wait Masalah ini dapat ditangani oleh sebuah protokol yang menjaga agar
sebuah proses tidak membuat lingkaran siklus yang bisa mengakibatkan deadlock

You might also like