KONKURENSI
Konkurensi merupakan
landasan umum perancangan sistem operasi. Proses-proses disebut
konkuren jika proses-proses berada pada saat yang sama. Dikatakan
sebagai landasan umum perancangan sistem operasi karena dalam
menciptakan suatu sistem operasi, sistem operasi tersebut umumnya harus
bisa menjalankan beberapa proses (lebih dari satu proses) pada saat yang
bersamaan.
Pada
proses-proses yang konkuren atau berada pada saat yang bersamaan,
terdapat beberapa masalah yang harus diselesaikan. Masalah-masalah
tersebut antara lain :
1. Mutual exclusion
2. Sinkronisasi
3. Deadlock
4. Starvation
Dengan
kata lain, masalah-masalah diatas akan timbul apabila sistem operasi
menjalankan beberapa proses pada saat yang bersamaan.
A. Prinsip-prinsip Konkurensi
Karena
konkurensi merupakan landasan umum pada perancangan suatu sistem
operasi, maka beberapa hal yang merupakan prinsip-prinsip konkurensi
harus ada dalam sistem operasi yang akan dirancang. Konkurensi meliputi
beberapa hal berikut ini:
v Alokasi waktu pemroses untuk proses-proses.
Hal
ini berkaitan dengan penjadwalan proses pada suatu sistem operasi.
Penjadwalan proses merupakan kumpulan kebijakan dan mekanisme dalam
sistem operasi yang berkaitan dengan urutan kerja yang dilakukan sistem
operasi. Penjadwalan proses bertugas untuk mengatur proses mana yang
harus berjalan, kapan dan seberapa lama proses tersebut dijalankan.
v Pemakaian bersama dan persaingan untuk mendapatkan sumber daya.
Dalam
hal ini, sebuah sistem operasi harus bisa mengatur pemakaian sumber
daya pada saat terjadinya konkurensi. Sumber daya yang ada jumlahnya
terbatas, sehingga pada saat banyak proses yang berjalan sistem harus
dapat mengatur pengalokasian sumberdaya agar tidak terjadi starvation.
Selain itu terdapat juga sumber daya yang tidak bersifat shareable atau
tidak dapat digunakan secara bersaman, sumber daya seperti itu disebut
sumber daya kritis.
v Komunikasi antar proses.
Untuk
mengatur kegiatan proses yang berjalan bersamaan, mereka harus dapat
saling berkomunikasi, dimana proses-proses yang ingin dikomunikasikan
harus memiliki sebuah cara untuk berkomunikasi satu dengan lainnya.
Mereka dapat menggunakan komunikasi secara langsung atau tak langsung.
v Sinkronisasi aktivitas banyak proses.
Sinkronisasi
aktivitas banyak proses ini mencakup semua hal di atas. Untuk
terjadinya sinkronisasi antar proses-proses yang berjalan diperlukannya
komunikasi antar proses yang berjalan. Setelah proses-proses tersebut
berkomunikasi, sistem akan dapat membagi sumber daya yang ada baik itu
sumber daya kritis atau tidak. Selan itu, sistem juga dapat mengatur
penjadwalan proses dengan baik.
Konkurensi dapat muncul pada konteks berbeda, antara lain:
1. 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.
2. 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.
3. 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.
B. Interaksi Antar Proses.
Pada
sistem dengan banyak proses (kongkuren), terdapat 3 katagori interaksi
antar proses berdasarkann derajat pengetahuan keberadaan proses lainnya,
yaitu:
1. Proses tidak saling mengetahiu keberadaannya.
Proses
seperti ini merupakan proses yang tidak dimaksudkan untuk bekerjasama.
Pada multiprogramming dengan proses-proses independen, dapat berupa
batch atau sesi interaktif, atau campuran keduanya. Walaupun proses
saling tidak melakukan kerjasama, sistem operasi perlu memperhatikan
kompetisi sumber daya. Misalnya dua aplikasi independen dapat sama-sama
menginginkan akses ke disk, file , atau printer yang sama. Sistem
operasi harus mengatur akses tersebut.
2. Proses mengetahui keberadaan proses lainnya secara tidak langsung.
Proses
seperti ini adalah proses yang tidak harus saling mengetahui akan
keberadaan proses lainnya berdasarkan namanya namun memiliki akses
berbagi ke beberapa objek, misaslkan bufer I/O. Proses seperti itu
menunjukkan adanya kooperasi dalam melakukan berbagi pemakaian ojek.
3. Proses mengetahui keberadaan proses lainnya secara langsung.
Proses-proses
seperti ini adalah proses yang dapat berkomunikasi satu dengan lainnya
berdasarkan nama dan merupakan proses yang dirancang untuk bekerja sama
dalam melakukan aktivitas-aktivitas tertentu. Demikian pula, proses
seperti ini menunjukkan adanya kooperasi.
Tingkat Pengetahuan
|
Relationship
|
Pengaruh satu Proses Masalah Terhadap Proses lainnya
|
Control Potensial
|
Proses saling tidak mengetahui
|
Kompetisi
|
- Hasil suatu proses akan independen terhadap keberadaan proses aksi proses lainnya
- Timing proses dapat terpengaruh
|
- Mutual Exclusion
- Deadlock
- Starvation
|
Proses mengetahui keberadaan proses lainnya secara tidak langsung (misalnya, objek bagi-pakai)
|
Kooperasi dengan bagi-pakai
|
- Hasil suatu proses dapat bergantung pada informasi yang diperoleh proses lainnya
- Timing proses dapat terpengaruh
|
- Mutual Exclusion
- Deadlock
- Starvation
- Koherasi data
|
Mengetahui keberadaan proses lainnya secara langsung (memiliki permitive komunikasi)
|
Kooperasi dengan menggunkan komunikasi
|
- Hasil suaru proses dapat bergantung pada informasi yang diperoleh dari proses lainnya
- Timing proses dapat terpengaruh
|
- Deadlock
- Starvation
|
C. Kesulitan-kesulitan yang ditimbulkan konkurensi
Masalah
yang dihadapi proses-proses kongkurensi pada multiprogramming dan
multiprocessing serupa, yaitu: kecepatan eksekusi proses-proses di
sistem tidak dapat diprediksi. Beberapa kemungkinan yang terjadi tidak
dapat diprediksi seperti:
1. Kecepatan proses pada sistem tergantung pada beberapa hal, antara lain:
a) Aktivitas proses-proses lain
b) Cara sistem operasi menangani interupsi
c) Kebijaksanaan penjadwalan yang dilakukan oleh sistem operasi.
2. Beberapa kesulitan yang dapat muncul, di antaranya adalah:
a) 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.
b) Pengelolaan alokasi sumber daya agar optimal
Jika
proses A meminta suatu kanal masukan/keluaran tertentu dan dapat
terjadi kemudian proses A di suspend sebelum menggunakan kanal itu. Jika
sistem operasi mengunci kanal tersebut dan orang lain tidak dapat
menggunakannya, maka akan terjadi inefisiensi.
c) Pencarian kesalahan pemrograman.
Pencarian kesalahan pada pemrograman kongkuren lebih sulit dibanding pencarian kesalahan pada program-program sekuen.
3. Proses-proses konkuren mengharuskan beberapa hal yang harus ditangani, antara lain:
a) Sistem operasi harus mengetahui proses-proses yang aktif
b)
Sistem operasi harus mengalokasikan dan mendealokasikan beragam sumber
daya untuk tiap proses aktif. Sumber daya yang harus dikelola, antara
lain:
(1) Waktu pemroses.
(2) Memori
(3) Berkas-berkas
(4) Perangkat I/O
c) Sistem operasi harus memproteksi data dan sumber daya fisik masing-masing proses dari gangguan proses-proses lain.
d) Hasil-hasil proses harus independen terhadap kecepatan relatif proses-proses lain dimana eksekusi dilakukan.