•
Kongkurensi
merupakan landasam umum perancangan sistem operasi.
•
Proses-proses
disebut kongkuren jika proses-proses (lebih dari satu proses) berada pada saat
yang sama
•
Proses-proses
kongkuren dapat sepenuhnya tak bergantung dengan lainnya tapi dapat juga saling
berinteraksi
•
Proses-proses
yang berinteraksi memerlukan sinkronisasi agar terkendali dengan baik
•
Pada
proses-proses kongkuren yang berinteraksi mempunyai beberapa masalah yang harus
diselesaikan, yaitu:
- Mutual
exclusion
- Deadlock
- Starvation
- Sinkronisasi
•
Banyak
bahasa pemrograman dikembangkan untuk pembuatan program kongkuren, antara lain:
- Bahasa
concurent pascal oleh Brinch Hansen
- Bahasa
Modula-2 oleh Niklaus Wirth
- Bahasa
Ada oleh departemen pertahanan Amerika dsb
1 prinsip-prinsip
Kongkurensi
•
Kongkurensi
meliputi hal-hal berikut:
- Alokasi
waktu pemroses untuk proses-proses
- Pemakaian
bersama dan persaingan untuk mendapatkan sumber daya
- Komunikasi
antar proses
- Sinkronisasi
aktivitas banyak proses
•
Kongkurensi
dapat muncul pada 3 konteks berbeda yaitu:
- Untuk
banyak aplikasi(multiprogramming)
contoh:
v
Aplikasi
pppd-daimon yang bertugas menjagai transfer data lewat kanal point-to-point
protocol. Aplikasi ini bertugas sebagai arus bawah untuk komunikasi lewat
saluran serial(modem) dengan ujung satunya (biasaya ISP)
v
Aplikasi
diald-daemon yang bertugas untuk secara otomatis menghidup matikan modem
atau saluran serial sehingga seolah-olah pemakai terhubung terus ke ISP
v
Multiprogramming juga sangat berguna pada saat
user menunggu selesainya layanan (misal transfer berkas oleh modem atau
pencetakan oleh printer) pemakai dapat berinteraksi dengan aplikasi lain
- Untuk
strukturisasi aplikasi
contoh:
pemrograman tersturktur adalah suatu aplikasi secara efktif diimplementasikan
sebagai sekumpulan proses
- Untuk
strukturisasi satu proses, peningkatan kinerja satu proses dapat memiliki
banyak thread yang independen. Thread-thread tersebut harus
dapat bekerjasama untuk mencapai tujuan proses
- Untuk
struktur sistem operasi, keunggulan strukturisasi dapat juga diterapkan ke
pemrograman sistem, beberapa sistem operasi telah diimplementasikan
sebagai sekumpulan proses ( sitem operasi bermodelkan client/server
)
2 Kesulitan-kesulitan
yang ditimbulkan Kongkurensi
Masalah yang dihadapi proses-proses kongkurensi
pada multiprogramming dan multiprocessing serupa, yaitu kecepatan
eksekusi proses-proses di sistem tidak dapat diprediksi
•
Kecepatan
proses pada sistem bergantung beragam hal:
- Aktivitas-aktivitas
proses-proses lain
- Cara
sistem operasi menangani interupsi
- Kebijaksanaan
penjadwalan yang dilakukan oleh sistem operasi
•
Beberapa
kesulitan dapat muncul diantaranya:
- Pemakaian
bersama sumber daya global, jika dua proses menggunakan variabel global
yang sama, serta keduanya membaca dan menulis variabel itu maka urutan
terjadinya pembacaan dan penulisan terhadap variabel itu menjadi kritis
- Pengelolaan
alokasi sumber daya agar optimal, jika proses A meminta suatu kanal I/O
tertentu dan proses A di-suspend sebelum menggunakan kanal
itu, jika OS mengunci kanal dan
mencegah proses-proses lain menggunakan kanal itu
- Pencarian
kesalahan pemrograman, pencarian kesalahan pada pemrograman kongkuren
lebih sulit dibanding pencarian kesalahan pada program-program sekuen
3 Mutual exlusion, Deadlock dan startvation
•
Beberapa
masalah yang muncul pada kongkurensi:
- Mutual Exclusion
- Deadlock
- Starvation
- Mutual exclusion, adalah jaminan hanya satu
proses yang mengakses sumber daya pada satu interval waktu tertentu. seperti
printer (mempunyai ruang disk / direktori spooler) untuk menyimpan
berkas-berkas yang akan dicetak, sumber daya macam ini disebut sumber daya
kritis. Bagian program yang menggunakan sumber daya kritis disebut
memasuki critical region/section Pemaksaan adanya mutual
exclusion menimbulkan dua masalah,yaitu:
-
Deadlock
-
Startvation.
- Deadlock,
adalah jika proses menunggu suatu kejadian tertentu yang tak akan pernah
terjadi.
deadlock terjadi ketika
proses-proses mengakses secara ekslusif sumber daya.
•
Contoh
P0
dialokasikan R0
P1
dialokasikan R1
Kemudian
P0
sambil masih menggegam R0
meminta R1
P1
sambil masih menggegam R1 meminta R0
Terjadinya deadlock ditandai
munculnya graph melingkar
- Startvation
Ilustrasi startvation
Misalnya
•
Terdapat
tiga proses p1,p2 dan P3
•
P1,P2
dan P3 memerlukan pengaksesan sumber daya R secara periodik
Skenario berikut terjadi:
•
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 hak akses. kemudian setelah selesai, hak akses kembali diberikan ke
P1 yang saat itu kembali membutuhkan sumber daya R
4 Interaksi antar Proses
Pada sistem dengan banyak proses (kongkuren), terdapat 3 kategori
interaksi, yaitu:
- Proses-proses
saling tidak peduli (independen)
- Proses-proses
saling mempedulikan secara tidak langsung
- Proses-proses
saling mempedulikan secara langsung
5 Pokok Penyelesaian Masalah Kongkurensi
Penyelesaian masalah kongkurensi ada
2 :
- Mengasumsikan
adanya memori yang digunakan bersama
- Tidak
mengasumsikan adanya memori yang digunakan bersama
Adanya memori bersama lebih
mempermudah penyelesaian masalah kongkurensi. Metode penyelesaian ini dapat
dipakai untuk singleprocessor atau multiprocessor yang mempunyai
memori bersama. Penyelesaian ini tidak dapat digunakan untuk multiprocessor tanpa
memori bersama / sistem tersebar
No comments:
Post a Comment