KONGKURENSI
1. Pendahuluan
Proses-proses diebut kongkuren jika proses-proses (lebih dari satu proses) berada pada saat yang sama. Konkurensi menjadi sangat penting karena saat ini hamper seluruh sistem adalah multiprogramming yang mengharuskan adanya proses-proses kongkuren. Pada proses-proses kongkurensi yang saling berinteraksi akan mempunyai masalah dasar yang harus diselesaikan, yaitu :
a. Mutual Exclusion
b. Deadlock
c. Starvision
d. Sikronisasi
2. Prinsip-prinsip Konkurensi
Konkurensi meliputi hal-hal berikut :
a. Alokasi layanan pemroses untuk proses-proses
b. Pemakaian bersama dan persaingan untuk mendapatkan sumber daya
c. Komunikasi antar proses
d. Sinkronisasi aktivitas banyak proses
Konkurensi dapat terjadi pada empat konteks berikut :
a. Untuk banyak aplikasi
Sistem multiprogramming memungkinkan banyak aplikasi/proses sekaligus dijalankan di satu pemroses. Proses-proses dapat berasal dari aplikasi-aplikasi yang berbeda.
b. Untuk strukturisasi dari aplikasi
Suatu aplikasi dapat secara efektif diimplementasikan sebagai sekumpulan proses. Dengan sekumpulan proses maka masing-masing proses menyediakan satu layanan spesifik tertentu.
c. Untuk strukturisasi dari 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.
d. Untuk strukturisasi sistem operasi
Keunggulan strukturisasi dapat juga diterapkan ke pemograman sistem. Beberapa sistem operaso actual yang dipasarkan dan yang sedang dalam riset telah diimplementasikan sebagai sekumpulan proses.
3. Kesulitan-kesulitan yang Ditimbulkan Kongkurensi
Masalah yang dihadapi proses-proses konkuren pada multiprogramming dan multiprocessing serupa, yaitu kecepatan eksekusi proses-proses di sistem tidak dapat diprediksi. Beberapa kesulitan dapat muncul diantaranya :
a. Pemakaian bersama sumber daya global
Jika kedua proses menggunakan variable global yang sama serta keduanya membaca dan menulis variable itu maka urutan terjadinya pembacaan dan penulisan terhadap variable bersama menjadi kritis.
b. Pengelolaan alokasi sumber daya agar optimal
Jika proses A meminta suatu sumber daya, lalu diberikan. Kemudian ternyata proses A tersebut ditunda (suspend) sebelum ia menggunakannya. Dan jika sistem operasi mempunyai kebijaksanaan mengunci sumber daya (sehingga tidak membolehkan pemakaian oleh proses lainnya) dan mencegah proses-proses lain menggunakan sumber daya tersebut maka tindakan ini jelas hanya menghasilkan inefisiensi sistem computer.
c. Pencarian kesalahan pemrograman
Pencarian kesalahan pada pemograman kongkuren lebih sulit dibandinng pencarian kesalahan pada program-program sekuen.
Proses-proses konkuren mengharuskan sistem operasi menangani hal berikut :
a. Mengetahui proses-proses aktif
b. Alokasi dan dealokasi sumber daya untuk tiap proses aktif
c. Proteksi data dan sumber daya fisik proses
d. Hasil-hasil proses harus independen.
4. Mutual Exclusion
Di sistem computer, terdapat sumber daya yang tidak dapat dipakai bersama pada saat bersamaan seperti rinter. Sumber daya hanya dapat digunakan satu proses pada satu saat. Sumber daya semacam ini disebut sumber daya kritis. Bagian program yang menggunakan sumber daya kritis disebut sedang memasuki critical region/section. Dengan demikia, hanya satu program pada satu saat yang diijinkan masuk critical region. Pemrogram tidak dapat bergantung pada sistem operasi untuk memahami dan memaksakan batasan ini karena maksud program tidak dapat diketahui oleh sistem operasi. Sistem operasi memberikan fasilitas untuk pemrogram dapat memberikan indikasi keberadaan crical region. Sistem operasi menyediakan layanan untuk mencegah proses masuk critical region yang sedang dimasuki proses lain.
5. Deadlock
Misalnya terdapat dua proses, P1 dan P2. Dua sumber daya kritis, R1 dan R2. Proses P1 dan P2 harus mengakses kedua sumber daya. Jika R1 diberikan ke P1, sedang R2 diberikan ke P2. Karena untuk melanjutkan eksekusi memerlukan kedua sumber daya sekaligus maka kedua proses akan saling menunggu sumber daya yang lainnya, selamanya. Tidak ada proses yang dapat melepaskan sumber daya yang telah dipegangnya karena menunggu sumber daya lain yang tidak pernah diperolehnya. Keduanya tidak membuat kemajuan apapun. Kedua proses ini dalam keadaan deadlock. Kondisi deadlock merupakan kondisi terparah karena banyak proses dapat terlibat dan semua yang terlibat tidak dapat mengakhiri prosesnya secara benar.
6. Starvation
Misalnya terdapat tiga proses, P1, P2, dan P3. Ketiganya memerlukan sumber daya R secara periodik. P1 sedang diberi sumber daya R, P2 dan P3 blocked menunggu sumber daya R. Ketika P1 keluar dari critical section, P2 dan P3 diijinkan mengakses R. Asumsi P3 diberi akses. Kemudian setelah selesai, hak akses kembali diberikan ke P1 yang saat itu telah 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, meskipun tidak ada deadlock. Pada situasi ini, P2 mengalami starvation.
7. Interaksi Antar Proses
a. Proses-proses saling tidak peduli. Pada multiprogramming dengan proses-proses independen, dapat berupa batch atau sesi interaktif atau campuran keduanya.
b. Proses-proses saling mempedulikan secara tidak langsung. Proses-proses tidak perlu saling mempedulikan identitas proses lain tapi sama-sama mengakses objek tertentu. Proses-proses itu saling bekerjasama (cooperation) dalam memakai objek tertentu.
c. Proses-proses saling mempedulikan secara langsung. Proses-proses dapat saling berkomunikasi dan dirancang bekerjasama untuk suatu aktivitas.
Derajat Kepedulian Hubungan Akibat Satu Proses terhadap Proses Lain Masalah Pengendalian yang Perlu Dilakukan
Proses-proses diebut kongkuren jika proses-proses (lebih dari satu proses) berada pada saat yang sama. Konkurensi menjadi sangat penting karena saat ini hamper seluruh sistem adalah multiprogramming yang mengharuskan adanya proses-proses kongkuren. Pada proses-proses kongkurensi yang saling berinteraksi akan mempunyai masalah dasar yang harus diselesaikan, yaitu :
a. Mutual Exclusion
b. Deadlock
c. Starvision
d. Sikronisasi
2. Prinsip-prinsip Konkurensi
Konkurensi meliputi hal-hal berikut :
a. Alokasi layanan pemroses untuk proses-proses
b. Pemakaian bersama dan persaingan untuk mendapatkan sumber daya
c. Komunikasi antar proses
d. Sinkronisasi aktivitas banyak proses
Konkurensi dapat terjadi pada empat konteks berikut :
a. Untuk banyak aplikasi
Sistem multiprogramming memungkinkan banyak aplikasi/proses sekaligus dijalankan di satu pemroses. Proses-proses dapat berasal dari aplikasi-aplikasi yang berbeda.
b. Untuk strukturisasi dari aplikasi
Suatu aplikasi dapat secara efektif diimplementasikan sebagai sekumpulan proses. Dengan sekumpulan proses maka masing-masing proses menyediakan satu layanan spesifik tertentu.
c. Untuk strukturisasi dari 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.
d. Untuk strukturisasi sistem operasi
Keunggulan strukturisasi dapat juga diterapkan ke pemograman sistem. Beberapa sistem operaso actual yang dipasarkan dan yang sedang dalam riset telah diimplementasikan sebagai sekumpulan proses.
3. Kesulitan-kesulitan yang Ditimbulkan Kongkurensi
Masalah yang dihadapi proses-proses konkuren pada multiprogramming dan multiprocessing serupa, yaitu kecepatan eksekusi proses-proses di sistem tidak dapat diprediksi. Beberapa kesulitan dapat muncul diantaranya :
a. Pemakaian bersama sumber daya global
Jika kedua proses menggunakan variable global yang sama serta keduanya membaca dan menulis variable itu maka urutan terjadinya pembacaan dan penulisan terhadap variable bersama menjadi kritis.
b. Pengelolaan alokasi sumber daya agar optimal
Jika proses A meminta suatu sumber daya, lalu diberikan. Kemudian ternyata proses A tersebut ditunda (suspend) sebelum ia menggunakannya. Dan jika sistem operasi mempunyai kebijaksanaan mengunci sumber daya (sehingga tidak membolehkan pemakaian oleh proses lainnya) dan mencegah proses-proses lain menggunakan sumber daya tersebut maka tindakan ini jelas hanya menghasilkan inefisiensi sistem computer.
c. Pencarian kesalahan pemrograman
Pencarian kesalahan pada pemograman kongkuren lebih sulit dibandinng pencarian kesalahan pada program-program sekuen.
Proses-proses konkuren mengharuskan sistem operasi menangani hal berikut :
a. Mengetahui proses-proses aktif
b. Alokasi dan dealokasi sumber daya untuk tiap proses aktif
c. Proteksi data dan sumber daya fisik proses
d. Hasil-hasil proses harus independen.
4. Mutual Exclusion
Di sistem computer, terdapat sumber daya yang tidak dapat dipakai bersama pada saat bersamaan seperti rinter. Sumber daya hanya dapat digunakan satu proses pada satu saat. Sumber daya semacam ini disebut sumber daya kritis. Bagian program yang menggunakan sumber daya kritis disebut sedang memasuki critical region/section. Dengan demikia, hanya satu program pada satu saat yang diijinkan masuk critical region. Pemrogram tidak dapat bergantung pada sistem operasi untuk memahami dan memaksakan batasan ini karena maksud program tidak dapat diketahui oleh sistem operasi. Sistem operasi memberikan fasilitas untuk pemrogram dapat memberikan indikasi keberadaan crical region. Sistem operasi menyediakan layanan untuk mencegah proses masuk critical region yang sedang dimasuki proses lain.
5. Deadlock
Misalnya terdapat dua proses, P1 dan P2. Dua sumber daya kritis, R1 dan R2. Proses P1 dan P2 harus mengakses kedua sumber daya. Jika R1 diberikan ke P1, sedang R2 diberikan ke P2. Karena untuk melanjutkan eksekusi memerlukan kedua sumber daya sekaligus maka kedua proses akan saling menunggu sumber daya yang lainnya, selamanya. Tidak ada proses yang dapat melepaskan sumber daya yang telah dipegangnya karena menunggu sumber daya lain yang tidak pernah diperolehnya. Keduanya tidak membuat kemajuan apapun. Kedua proses ini dalam keadaan deadlock. Kondisi deadlock merupakan kondisi terparah karena banyak proses dapat terlibat dan semua yang terlibat tidak dapat mengakhiri prosesnya secara benar.
6. Starvation
Misalnya terdapat tiga proses, P1, P2, dan P3. Ketiganya memerlukan sumber daya R secara periodik. P1 sedang diberi sumber daya R, P2 dan P3 blocked menunggu sumber daya R. Ketika P1 keluar dari critical section, P2 dan P3 diijinkan mengakses R. Asumsi P3 diberi akses. Kemudian setelah selesai, hak akses kembali diberikan ke P1 yang saat itu telah 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, meskipun tidak ada deadlock. Pada situasi ini, P2 mengalami starvation.
7. Interaksi Antar Proses
a. Proses-proses saling tidak peduli. Pada multiprogramming dengan proses-proses independen, dapat berupa batch atau sesi interaktif atau campuran keduanya.
b. Proses-proses saling mempedulikan secara tidak langsung. Proses-proses tidak perlu saling mempedulikan identitas proses lain tapi sama-sama mengakses objek tertentu. Proses-proses itu saling bekerjasama (cooperation) dalam memakai objek tertentu.
c. Proses-proses saling mempedulikan secara langsung. Proses-proses dapat saling berkomunikasi dan dirancang bekerjasama untuk suatu aktivitas.
Derajat Kepedulian Hubungan Akibat Satu Proses terhadap Proses Lain Masalah Pengendalian yang Perlu Dilakukan
0 comments: