Topik pertama yang saya ambil adalah Mari mengenal masalah-masalah konkurensi....
1. Mutual Exclusion
Mutual Exclusion adalah jaminan hanya satu proses yang mengakses sumber daya pada suatu interval waktu tertentu, proses-proses lain dilarang mengerjakan hal yang sama. Bagian program yang sedang mengakses memori atau sumber daya yang dipakai bersama di sebut Critical Section/Region. Mutual Exclusion merupakan jaminan untuk mengatasi kondisi pacu agar tidak boleh 2 proses atau lebih memasuki Critical Section osecara bersama.
Kesuksesan proses-proses konkuren memerlukan pendefinisian Critical Section dan memaksakan ME di antara proses-proses konkuren yang sedang berjalan. Pemaksaan ME merupakan landasan pemrosesan konkuren.
Kriteria penyelesaian Mutual Exclution :
- ME harus dijamin, hanya satu proses pada saat yang diijinkan masuk ke critical section,
- Proses yang berada di noncritical section.dilarang memblocked proses lain yang ingin masuk critical section,
- Harus dijamin proses yang ingin masuk critical section tidak menunggu selama waktu yang tak berhingga,
- Ketika tidak ada proses pada critical section maka proses yang ingin masuk critical section harus diijinkan masuk tanpa tertunda,
- Tidak ada asumsi mengenai kecepatan relative proses atau jumlah proses yang ada
- Deadlock
- Startvation
- Apabila kita sedang memakai pena, orang lain tidak bisa menggunakan pena tersebut hingga kita selesai menggunakannya.
- Apabila kita sedang membuka Mozilla Firefox dan Google Chrome, Mozilla Firefox sedang menggunakan daya batrai untuk melakukan eksekusi maka Google Chrome tidak diijinkan untuk menggunakan data baterai untuk melakukan eksekusi.
Deadlock adalah suatu kondisi dimana dua proses atau lebih saling menunggu proses yang lain untuk melepaskan resource yang sedang dipakai. Karena beberapa proses itu salaing menunggu, maka tidak terjadi kemajuan dalam kerja proses-proses tersebut.
Deadlock merupakan masalah yang biasa terjadi kita banyak proses yang membagi sebuah resource yang hanya boleh dirubah oleh satu proses saja dalam satu waktu.
Syarat terjadi nya Deadlock:
- Mutual Exclusion, tiap sumber daya diberikan pada satu proses,
- Hold and wait condition, proses-proses yang sedang menggenggam sumber daya, menunggu sumberdaya-sumberdaya yang baru,
- Non Preemption Condition, sumberdaya-sumberdaya yang sebelumnya diberikan tidak dapat diambil paksa dari proses itu. Sumberdaya-sumberdaya harus secara emplisit dilepaskan dari proses yang menggenggamnya.
- Circulair wait condition, harus terdapat rantai sirkuler dari 2 proses atau lebih masing-masing menunggu sumberdaya yang digenggam oleh berikutnya pada rantai itu.
- Memastikan bahwa sistem tidak akan pernah memasuki status deadlock,
- Mengijinkan sistem untuk memasuki status deadlock dan kemudian dipulihkan,
- Mengabaikan masalah deadlock dan menganggap bahwa deadlock tidak pernah terjadi dala sistem. Metode ini digunakan oleh kebanyakan sistem operasi termasuk UNIX.
- Dalam persimpanga jalan , dalam kasus ini setipa 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,
- Misalkan kita sedang mengunakan Mozilla Firefox dan Google Chrome secara bersama, pada saat tertentu Mozilla Firefox dan Google Chrome saling membutuhkan resource yang lain yaitu Mozilla Firefox membutuhkan resource Google Chrome dan Google Chrome membutuhkan resource Mozilla Firefox, tetapi kedua aplikasi tidak mau saling melepaskan resource, sehingga kedua aplikasi tidakakan berjalan.
Starvision adalah kondisi yang biasanya terjadi deadlock. Proses yang kekurangan resource (karena terjadi deadlock) tidak akan pernah mendapat resource yang dibutuhkan sehingga mengalami Starvision (kelaparan),. Namun,Starvision juga bisa terjadi tanpa deadlock. Hal ini ketika terdapat kesalahan dalam sistem sehingga terjadi ketimpangan dalam pembagian resource. Satu proses selalu mendapat resource, sedangkan proses yang lain tidak pernah mendapatkannya.
Contoh kasus Starvision :
- Sambil menunggu kita membuka Google Chrome, kita membuka Mozilla Firefox, tetapi Mozilla Firefox tidak dapat mendapatkan jatah resource karena telah dipakai oleh Google Chrome. Sehingga Mozilla Firefox tidak berjalan.
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 kasus Sinkronisasi :
- Mozilla Firefox dan Google Chrome saling berlomba meng-update nilai counter sehingga pada suatu waktu, nilai counternya bisa salah.
- Masalah Bounded buffer diatas sebenarnya sudah menggambarkan terjadinya Race Coundition. P1 dan P2 saling berlomba meng-update nilai counter sehingga pada suatu waktu, nilai counternya bisa salah.
Tidak ada komentar:
Posting Komentar