1. Terjadinya
konkurensi pada saat proses-proses berada pada saat yang sama. Konkurensi
muncul pada saat konteks yang berbeda, antara lain:
·
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.
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.
·
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.
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.
·
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.
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.
·
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.
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. Masalah-masalah
ketika terjadi konkurensi:
·
Mutual
Exclusion (pengeluaran timbal balik)
Merupakan kondisi dimana terdapat sumber daya yang tidak
dapat dipakai bersama pada waktu yang bersamaan (misalnya : printer, disk
drive). Kondisi demikian 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.
Contoh : Pada
saat kita sedang makan di sebuah meja orang lain tidak bisa menempati meja
tersebut hingga kita pergi dari meja itu.
·
Deadlock
(buntu)
Deadlock merupakan kondisi terparah karena banyak proses
dapat terlibat dan semuanya tidak dapat mengakhiri prosesnya secara benar.
Contoh : Terdapat dua proses, yaitu P1 dan P2 dan dua sumber
daya kritis, yaitu R1 dan R2.
Proses P1 dan P2 harus mengakses kedua sumber daya tersebut,
dengan kondisi ini terjadi : R1 diberikan ke P1, sedangkan R2 diberikan ke P2.
Karena untuk melanjutkan eksekusi memerlukan kedua sumber
daya sekaligus maka kedua proses akan saling menunggu sumber daya lain
selamanya. Tak ada proses yang dapat melepaskan sumber daya yang telah
dipegangnya karena menunggu sumber daya lain yang tak pernah diperolehnya.
Kedua proses dalam kondisi deadlock, yang tidak dapat membuat kemajuan
apapun dan deadlock merupakan kondisi terparah karena dapat
melibatkan banyak proses dan semuanya tidak dapat mengakhiri prosesnya secara
benar.
·
Starvation
(kelaparan)
Starvation adalah keadaan dimana pemberian akses
bergantian terus-menerus, dan ada suatu proses yang tidak mendapatkan
gilirannya.
Contoh : Terdapat tiga proses, yaitu P1, P2 dan P3.
P1, P2 dan P3 memerlukan pengaksesan sumber daya R secara
periodic Skenario berikut terjadi :
P1 sedang diberi sumber daya R
sedangkan P2 dan P3 diblocked menunggu sumber daya R.
Ketika P1 keluar dari critical section, maka P2 dan P3
diijinkan mengakses R.
Asumsi P3 diberi hak akses, kemudian setelah selesai, hak
akses kembali diberikan ke P1 yang saat itu kembali membutuhkan sumber daya R.
Jika pemberian hak akses bergantian terus-menerus antara P1
dan P3, maka P2 tidak pernah memperoleh pengaksesan sumber daya R. Dalam
kondisi ini memang tidak terjadi deadlock, hanya saja P2 mengalami starvation
(tidak ada kesempatan untuk dilayani).
·
Sinkronisasi
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 proses-proses
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.
Contoh :
Ø
Bounded
Buffer : Struktur data untuk menampung suatu nilai dengan kapasitas yang terbatas (bounded)
Contoh : Produser – Konsumer
Produser menghasilkan suatu
barang, kemudian meletakkannya di bounded buffer.
Konsumer mengambil suatu barang
yang dibutuhkan dari bounded buffer.
Ø
Race Condition : situasi di mana beberapa
proses mengakses dan memanipulasi data bersama pada saat besamaan. Nilai akhir
dari data bersama tersebut tergantung pada proses yang terakhir selesai.
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.
Sumber :
Tidak ada komentar:
Posting Komentar