Professional Documents
Culture Documents
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.