Kamis, 15 April 2010

KONGKURENSI

5.1 Pengertian kongkurensi


Perkembangan sistem komputer mendatang adalah menuju ke sistem multi-
processing, multiprogramming, terdistribusi dan paralel yang mengharuskan
adanya proses-proses yang berjalan bersama dalam waktu yang bersamaan.
Hal demikian merupakan masalah yang perlu perhatian dari perancang sistem
operasi. Kondisi dimana pada saat yang bersamaan terdapat lebih dari satu
proses disebut dengan kongkurensi (proses-proses yang kongkuren).
Proses-proses yang mengalami kongkuren dapat berdiri sendiri (independen)
atau dapat saling berinteraksi, sehingga membutuhkan sinkronisasi atau
koordinasi proses yang baik.
Untuk penanganan kongkuren, bahasa pemograman saat ini telah memiliki
mekanisme kongkurensi dimana dalam penerapannya perlu dukungan sistem
operasi dimana bahasa berada.

5.2 Prinsip-prinsip kongkurensi


Kongkurensi merupakan kegiatan yang berhubungan dengan :
a. Alokasi waktu pemroses untuk proses-proses yang aktif.
b. Pemakaian bersama dan persaingan untuk mendapatkan sumber daya.
c. Komunikasi antar proses.
d. Sinkronisasi aktivitas banyak proses


Masalah kongkurensi dapat terjadi pada :
a. Banyak aplikasi.
Multiprogramming memungkinkan banyak proses sekaligus dijalankan.
Proses-proses dapat berasal dari aplikasi-aplikasi berbeda.
Pada sistem sistem multiprogramming bisa terdapat banyak aplikasi
sekaligus yang dijalankan di sistem komputer.
b. Strukturisasi sebuah aplikasi yang terdiri dari kumpulan proses.
Perluasan prinsip perancangan modular dan pemograman terstruktur adalah
suatu aplikasi dapat secara efektif diimplementasikan sebagai kumpulan
proses. Dengan sekumpulan proses, maka tiap proses menyediakan satu
layanan spesifik tertentu.
c. Strukturisasi sebuah 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.
Strukturisasi satu aplikasi dapat dilakukan dengan banyak proses atau
banyak thread. Sistem operasi modern telah mendukung banyak thread yang
berkinerja lebih bagus dibanding proses dalam kondisi/lingkungan yang
lebih terkendali.
Contoh : Suatu word processor antara lain mempunyai kemampuan :
· Menerima masukan dari keyboard
· Menerima masukan dari mouse atau perangkat penunjuk yang lain (asinkron)
· Pemisahan kata-kata
· Memformat baris menjadi rata kanan, kiri atau kanan-kiri.
Aplikasi ini dapat diterapkan dengan banyak proses atau thread yang
masing-masing mempunyai tugas tertentu. Dengan demikian, saat dilakukan
penataan tampilan di layar, aplikasi sekaligus dapat menerima masukan
dari mouse yang segera akan diteruskan ke aplikasi untuk mendapat
perhatian.
d. Strukturisasi sistem operasi
Keunggulan strukturisasi dapat diterapkan ke pemrograman sistem.
Beberapa sistem operasi aktual yang dipasarkan dan yang sedang dalam
riset telah diimplementasikan sebagai kumpulan proses. Sistem operasi
bermodelkan client/server.

5.3 Kesulitan-kesulitan dalam kongkurensi


Kecepatan proses pada sistem dipengaruhi oleh :
a. Aktivitas-aktivitas proses-proses lain.
b. Cara sistem operasi menangani interupsi.
c. Kebijaksanaan penjadwalan yang dilakukan oleh sistem operasi

Beberapa kesulitan yang muncul :
a. Pemakaian bersama sumber daya global.
Apabila terdapat dua proses yang menggunakan variabel global yang sama
serta keduanya membaca dan menulis ke variabel itu,maka urutan terjadinya
pembacaan dan penulisan terhadap variabel itu menjadi kritis.
b. Pengelolaan alokasi sumber daya agar optimal.
Apabila proses A meminta suatu kanal masukan/keluaran tertentu dan
dipenuhi, kemudian terjadi proses A di suspend sebelum menggunakan kanal
tersebut. Jika sistem operasi mengunci kanal (tidak memperbolehkan atau
mencegah proses lain untuk menggunakannya), maka tindakan tersebut
menghasilkan inefisiensi.
c. Pencarian kesalahan pemrograman.
Pencarian kesalahan pada pemograman kongkuren lebih sulit dibanding
pencarian kesalahan pada program-program sekuen.

Penanganan kongkurensi adalah dengan :
a. Mengetahui proses-proses yang aktif.
Sistem operasi mengelola senarai proses di sistem operasi. Senarai ini
berupa senarai PCB proses. Senarai berjumlah sesuai jumlah state yang
diimplementasikan sistem operasi.
b. Mengatur alokasi dan dealokasi beragam sumber daya untuk tiap proses yang
aktif.
Sumber daya yang harus dikelola antara lain :
· Waktu pemroses
· Memori
· Berkas-berkas (file)
· Peralatan masukan/keluaran
· Dan sebagainya
c. Proteksi data dan sumber daya fisik proses.
Proteksi data dan sumber daya fisik masing-masing proses dari gangguan
(interfensi) proses-proses lain.
d. Hasil-hasil proses harus independen.
Hasil-hasil proses harus independen terhadap kecepatan relatif proses-
proses lain dimana eksekusi dilakukan.

5.4 Mutual Exclusion


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.
Pemogram tidak dapat bergantung pada sistem operasi untuk memahami dan
memaksakan batasan ini, karena maksud program tidak dapat diketahu oleh
sistem operasi.
Hanya saja, sistem operasi menyediakan layanan (system call) yang bertujuan
untuk mencegah proses lain masuk ke critical section yang sedang digunakan
proses tertentu. Pemograman harus menspesifikasikan bagian-bagian critical
section, sehingga sistem operasi akan menjaganya.
Pemaksaan atau pelanggaran mutual exclusion menimbulkan :
a. Deadlock
b. Startvation

5.5 Deadlock


Ilustasi deadlock, misalnya :
· 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.

5.6 Startvation


Ilustasi deadlock, misalnya :
· Terdapat tiga proses, yaitu P1, P2 dan P3.
· P1, P2 dan P3 memerlukan pengaksesan sumber daya R secara periodik
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).

5.7 Interaksi antar proses


Pada sistem dengan banyak proses kongkuren, terdapat tiga kategori interaksi,
yaitu :
a. Proses-proses saling tidak peduli (independen)
Proses-proses ini tidak dimaksudkan untuk bekerja bersama untuk mencapai
tujuan tertentu. Pada multiprogramming dengan proses-proses independen,
dapat berupa batch atau sesi interaktif, atau campuan keduanya.
Meski proses-proses tidak bekerja bersama, sistem operasi perlu mengatur
persaingan diantara proses-proses itu dalam memperoleh sumber daya yang
terbatas.
Contoh : Terdapat dua aplikasi yang berusaha mengakses printer yang sama,
bila kedua aplikasi benar-benar mengakses printer yang sama secara
bersamaan, maka kedua proses akan memperoleh hasil yang tak dikehendaki.
Sistem operasi harus mengatur pengaksesan-pengaksesan sumber daya agar
tidak menyebabkan hasil yang tidak dikehendaki.
b. Proses-proses saling mempedulikan secara tidak langsung
Dimana proses-proses tidak perlu saling mempedulikan identitas proses-
proses lain tapi sama-sama mengakses objek tertentu, seperti buffer
masukan/keluaran. Proses-proses itu perlu bekerja sama (cooperation)
dalam memakai bersama objek tertentu.
c. Proses-proses saling mempedulikan secara langsung
Proses-proses dapat saling berkomunikasi dan dirancang bekerja sama
untuk suatu aktivitas.

Interaksi antara proses-proses dan masalah-masalah yang harus diatasi dapat
dilihat dalam tabel berikut :

+========================================================================+
:Derajat kepedulian: Hubungan : Akibat satu proses : Masalah :
: : : terhadap lainnya : pengendalian :
: : : : yang dilakukan :
:==================+=============+======================+================:
:Proses tak peduli : Persaingan :· Hasil satu proses :· Mutual :
: : : independen terhadap : exclusion :
: : : aksi proses lain. :· Deadlock :
: : :· Pewaktuan proses :· Starvation :
: : : dapat berdampak pada: :
: : : proses lain : :
:------------------+-------------+----------------------+----------------:
:Proses secara :Kerjasama dgn:· Hasil-hasil 1 proses:· Mutual :
:tidak langsung :pemakaian : dapat bergantung pd : exclusion :
:peduli terhadap :bersamaan : informasi yang :· Deadlock :
:proses lain, yaitu: : diperoleh dari :· Starvation :
:obyek yang dipakai: : proses lain. :· Koherensi data:
:bersama : :. Pewaktuan proses : :
: : : dapat bedampak pada : :
: : : proses lain : :
:------------------+-------------+----------------------+----------------:
:Proses secara :Kerjasama dgn:· Hasil-hasil 1 proses:· Deadlock :
:langsung peduli :komunikasi : dapat bergantung pd :. Startvation :
:terhadap proses : : informasi yang : :
:lain (tersedia : : diperoleh dari : :
:primitif-primitif : : proses lain. : :
:untuk proses : :. Pewaktuan proses : :
:tersebut : : dapat bedampak pada : :
: : : proses lain : :
+------------------------------------------------------------------------+
Tabel 4.1 : Interaksi antara proses-proses dan permasalahan yang timbul

5.8 Persaingan diantara proses-proses untuk sumber daya


Proses-proses kongkuren berkompetisi ketika proses-proses bersaing
menggunakan sumber daya yang sama. Dua proses atau lebih perlu mengakses
sumber daya yang sama pada suatu saat. Masing-masing proses tidak peduli
keberadaan proses-proses lain dan masing-masing proses tidak dipengaruhi
proses-proses lain.
Pada proses-proses berkompetisi ini, tidak ada pertukaran informasi antara
proses-proses itu. Eksekusi satu proses dapat berpengaruh terhadap kelakuan
proses-proses yang berkompetisi. Jika dua proses ingin mengakses satu sumber
daya tunggal maka sistem operasi mengalokasikan untuk salah satu proses
dan mengharuskan proses lain menunggu. Proses yang ditolak pengaksesan
menjadi melambat.
Kasus ekstrim yang dapat terjadi adalah proses di-blocked terus-menerus
sehingga tak pernah mengakses sumber daya. Proses tak pernah dapat berakhir
dengan suskses. Kondisi tidak pernah dapat kesempatan dialokasikan sumber
daya disebut startvation. Sistem operasi harus menghindarkan terjadinya
kondisi ini.
Persaingan proses-proses untuk memperoleh sumber daya menimbulkan tiga
masalah :
1. Mutual exclusion
2. Deadlock
3. Startvation

Pengendalian persaingan melibatkan sistem operasi, yang bertugas
mengalokasikan sumber daya. Proses-proses itu sendiri harus menyatakan
keperluan mutual exclusion (diprogram oleh pemrogram menggunakan system call
yang disediakan sistem operasi) dan sistem operasi menangani agar tidak
terlanggar kondisi mutual exclusion, serta tidak terjadi deadlock dan
startvation.

5.9 Kerjasama diantara proses-proses dengan pemakaian
bersama


Dalam kasus kerjasama pemakaian sumber daya bersama meliputi proses-proses
yang saling berinteraksi tanpa dinyatakan secara eksplisit.
Contoh : Banyak proses mengakses variabel atau berkas yang dipakai bersama.
Proses-proses dapat menggunakan dan memperbarui data yang dipakai bersama
tanpa peduli proses-proses lain. Proses mengetahui bahwa proses-proses lain
dapat juga mengakses data yang sama. Proses-proes harus bekerja sama untuk
menjamin integritas data yang dipakai bersama tersebut.

Kerjasama diantara proses-proses dalam pemakaian bersama mempunyai masalah :
· Mutual exclusion
· Deadlock
· Startvation
Karena data disimpan pada suatu sumber daya (peralatan, memori), maka
terdapat masalah pengendalian mutual exclusion, deadlock dan startvation.
Perbedaannya adalah item-item data dapat diakses dengan dua mode, yaitu :
1. Operasi pembacaan dan penulisan harus mutually exclusive (yaitu benar-
benar hanya satu proses yang berada di critical section).
2. Operasi penulisan saja yang harus mutually exclusive.
Pada situasi ini, masalah baru muncul yaitu mengenai koherensi data.
Critical section digunakan untuk menjamin integritas data.

5.10 Kerjasama diantara proses-proses dengan komunikasi


Pada kasus persaingan, proses-proses memakai sumber daya tanpa peduli
proses-proses lain. Pada kasus kedua, proses-proses memakai bersama nilai
dan meski masing-masing proses tidak secara eksplisit peduli proses-proses
lain. Tapi proses-proses peduli untuk menjaga integritas data.
Ketiak proses-proses bekerja sama dengan komunikasi, beragam proses
berpartisipasi dalam suatu usaha dengan menghubungkan semua proses.
Komunikasi menyediakan cara untuk sinkronisasi atau koordinasi beragam
aktivitas.
Komunikasi dicirikan dengan berisi pesan-pesan dengan suatu urutan.
Primitif untuk mengirim dan menerima pesan disediakan sebagai bagian bahasa
pemrograman atau disediakan kernel sistem operasi.
Karena tak ada sesuatu yang dipakai bersama diantara proses-proses itu dalam
melewatkan pesan-pesan, tak ada masalah mutual exclusion. Tetapi masalah
deadlock dan startvation dapat muncul.

5.11 Pokok penyelesaian masalah kongkurensi


Pada dasarnya penyelesaian masalah kongkurensi terbagi menjadi dua, yaitu :
a. Mengasumsikan adanya memori yang digunakan bersama.
b. Tidak mengasumsikan adanya memori yang digunakan bersama.
Adanya memori bersama lebih mempermudah penyelesaian masalah kongkurensi.
Metode penyelesaian ini dapat dipakai untuk sistem singleprocessor ataupun
multiprocessor yang mempunyai memori bersama. Penyelesaian ini tidak dapat
digunakan untuk multiprocessor tanpa memori bersama ataupun untuk sistem
tersebar.


DAFTAR PUSTAKA



1. Hariyanto, Bambang, Ir., Sistem Operasi, Penerbit Informatika, Bandung,
1999
2. Tanenbaum, Andrew S., Modern Operating Systems, Prentice Hall Inc., 1992

StumpleUpon DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google Twitter FaceBook

Tidak ada komentar:

Related Posts Plugin for WordPress, Blogger...