Sistem Operasi (SO) – Kongkurensi


Pengertian kongkurensi

Perkembangan sistem komputer mendatang adalah menuju ke sistem multiprocessing, 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.

Prinsip-prinsip kongkurensi

Kongkurensi merupakan kegiatan yang berhubungan dengan :

  • Alokasi waktu pemroses untuk proses-proses yang aktif.
  • Pemakaian bersama dan persaingan untuk mendapatkan sumber daya.
  • Komunikasi antar proses.
  • Sinkronisasi aktivitas banyak proses

Beberapa kesulitan yang muncul dalam konkurensi sebagai berikut:

  • 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.
  • 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 emperbolehkan atau mencegah proses  lain untuk menggunakannya), maka tindakan tersebut enghasilkan inefisiensi.
  • Pencarian kesalahan pemrograman. Pencarian kesalahan pada pemograman kongkuren lebih sulit dibanding pencarian kesalahan pada program-program sekuen.

Penanganan kongkurensi adalah dengan :

  • 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.
  • 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
    • Proteksi data dan sumber daya fisik proses. Proteksi data dan sumber daya fisik masing-masing proses dari gangguan (interfensi) proses-proses lain.
    • Hasil-hasil proses harus independen.Hasil-hasil proses harus independen terhadap kecepatan relatif proses-proses lain dimana eksekusi dilakukan.

Mutual Exclusion

Mutual exclution 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 digunakanproses tertentu. Pemograman harus menspesifikasikan bagian-bagian critical section, sehingga sistem operasi akan menjaganya.

Pemaksaan atau pelanggaran mutual exclusion menimbulkan :

  • Deadlock
  • Startvation

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.

Resources-Allocation Graph

Sebuah cara visual (matematika) untuk menentukan apakah ada deadlock, atau kemungkinan terjadinya.

  • G = (V, E) Graf berisi node and edge.
  • Node V terdiri dari proses-proses = {P1, P2, P3, …} dan Jenis resource. {R1, R2, …}
  • Edge E adalah (Pi, Rj) atau (Ri, Pj)

Sebuah panah dari process ke resource menandakan proses meminta resource. Sebuah panah dari resource ke process menunjukkan sebuah instance dari resource telah dtempatkan ke proses. Process adalah lingkaran, resource adalah kotak; titik-titik merepresentasikan jumlah instance dari resource Dalam tipe. Meminta poin-poin ke kotak, perintah datang dari titik.

  • Jika graf tidak berbentuk lingkaran, maka tidak ada proses yang deadlock.
  • Jika membentuk lingkaran, maka:
  • jika tipe resource memiliki banyak instance, maka deadlock DAPAT ada.
  • jika setiap tipe resource mempunyai satu instance, maka deadlock telah terjadi.

Strategi menghadapi Deadlock

Strategi untuk menghadapi deadlock dapat dibagi menjadi tiga pendekatan, yaitu:

  • Mengabaikan adanya deadlock.
  • Memastikan bahwa deadlock tidak akan pernah ada, baik dengan metode Pencegahan, dengan mencegah empat kondisi deadlock agar tidak akan pernah terjadi. Metode Menghindari deadlock,yaitu mengizinkan empat kondisi deadlock, tetapi menghentikan setiap proses yang kemungkinan mencapai deadlock.
  • Membiarkan deadlock untuk terjadi, pendekatan ini membutuhkan dua metode yang saling mendukung, yaitu:
  • Pendeteksian deadlock, untuk mengidentifikasi ketika deadlock terjadi.
  • Pemulihan deadlock, mengembalikan kembali sumber daya yang dibutuhkan pada proses yang memintanya.

Strategi Ostrich

Pendekatan yang paling sederhana adalah dengan menggunakan strategi burung unta: masukkan kepala dalam pasir dan seolah-olah tidak pernah ada masalah sama sekali. Beragam pendapat muncul berkaitan dengan strategi ini. Menurut para ahli Matematika, cara ini sama sekali tidak dapat diterima dan semua keadaan deadlock harus ditangani. Sementara menurut para ahli Teknik, jika komputer lebih sering mengalami kerusakkan disebabkan oleh kegagalan hardware, error pada kompilator atau bugs pada sistem operasi. Maka ongkos yang dibayar untuk melakukan penanganan deadlock sangatlah besar dan lebih baik mengabaikan keadaan deadlock tersebut. Metode ini diterapkan pada sistem operasi UNIX dan MINIX.

Metode Pencegahan

Metode ini merupakan metode yang paling sering digunakan. Metode Pencegahan dianggap sebagai solusi yang bersih dipandang dari sudut tercegahnya deadlock. Tetapi pencgahan akan mengakibatkan kinerja utilisasi sumber daya yang buruk.

Metode pencegahan  menggunakan pendekatan dengan cara meniadakan empat syarat yang dapat menyebabkan deadlock terjadi pada saat eksekusi Coffman (1971).

Syarat pertama yang akan dapat ditiadakan adalah Mutual Exclusion, jika tidak ada sumber daya yang secara khusus diperuntukkan bagi suatu proses maka tidak akan pernah terjadi deadlock. Namun jika membiarkan ada dua atau lebih proses mengakses sebuah sumber daya yang sama akan menyebabkan chaos. Langkah yang digunakan adalah dengan spooling sumber daya, yaitu dengan mengantrikan job-job pada antrian dan akan dilayani satu-satu. Beberapa masalah yang mungkin terjadi adalah:

  • Tidak semua dapat di-spool, tabel proses sendiri tidak mungkin untuk di-spool
  • Kompetisi pada ruang disk untuk spooling sendiri dapat mengarah pada deadlock

Hal inilah yang menyebabkan mengapa syarat pertama tidak dapat ditiadakan, jadi mutual exclusion benar-benar tidak dapat dihilangkan.

Cara kedua dengan meniadakan kondisi hold and wait terlihat lebih menjanjikan. Jika suatu proses yang sedang menggunakan sumber daya dapat dicegah agar tidak dapat menunggu sumber daya yang lain, maka deadlock dapat dicegah. Langkah yang digunakan adalah dengan membuat proses agar meminta sumber daya yang mereka butuhkan pada awal proses sehingga dapat dialokasikan sumber daya yang dibutuhkan. Namun jika terdapat sumber daya yang sedang terpakai maka proses tersebut tidak dapat memulai prosesnya. Masalah yang mungkin terjadi:

  • Sulitnya mengetahui berapa sumber daya yang dibutuhkan pada awal proses
  • Tidak optimalnya pengunaan sumber daya jika ada sumber daya yang digunakan hanya beberapa waktu dan tidak digunakan tapi tetap dimiliki oleh suatu proses yang telah memintanya dari awal.

Meniadakan syarat ketiga non preemptive ternyata tidak lebih menjanjikan dari meniadakan syarat kedua, karena dengan meniadakan syarat ketiga maka suatu proses dapat dihentikan ditengah jalan. Hal ini tidak dimungkinkan karena hasil dari suatu proses yang dihentikan menjadi tidak baik.

Cara terakhir adalah dengan meniadakan syarat keempat circular wait. Terdapat dua pendekatan, yaitu:

  • Mengatur agar setiap proses hanya dapat menggunakan sebuah sumber daya pada suatu waktu, jika menginginkan sumber daya lain maka sumber daya yang dimiliki harus dilepas.
  • Membuat penomoran pada proses-proses yang mengakses sumber daya. Suatu proses dimungkinkan untuk dapat meminta sumber daya kapan pun, tetapi permintaannya harus dibuat terurut.

Masalah yang mungkin terjadi dengan mengatur bahwa setiap proses hanya dapat memiliki satu proses adalah bahwa tidak semua proses hanya membutuhkan satu sumber daya, untuk suatu proses yang kompleks dibutuhkan banyak sumber daya pada saat yang bersamaan. Sedangkan dengan penomoran masalah yang dihadapi adalah tidak terdapatnya suatu penomoran yang dapat memuaskan semua pihak.

Secara ringkas pendekatan yang digunakan pada metode pencegahan deadlock dan masalah-masalah yang menghambatnya, terangkum dalam tabel dibawah ini.

Menghindari Deadlock

Pendekatan metode ini adalah dengan hanya memberi kesempatan ke permintaan sumber daya yang tidak mungkin akan menyebabkan deadlock. Metode ini memeriksa dampak pemberian akses pada suatu proses, jika pemberian akses tidak mungkin menuju kepada deadlock, maka sumber daya akan diberikan pada proses yang meminta. Jika tidak aman, proses yang meminta akan di-suspend sampai suatu waktu permintaannya aman untuk diberikan. Kondisi ini terjadi ketika setelah sumbe r daya yang sebelumnya dipegang oleh proses lain telah dilepaskan. Kondisi aman yang dimaksudkan selanjutnya disebut sebagai safe-state, sedangkan keadaan yang tidak memungkinkan untuk diberikan sumber daya yang diminta disebut unsafe-state.

  • Kondisi Aman (Safe state) Suatu keadaan dapat dinyatakan sebagai safe state jika tidak terjadi deadlock dan terdapat cara untuk memenuhi semua permintaan sumber daya yang ditunda tanpa menghasilkan deadlock. Dengan cara mengikuti urutan tertentu.
  • Kondisi Tak Aman (Unsafe state) Suatu state dinyatakan sebagai state tak selamat (unsafe state) jika tidak terdapat cara untuk memenuhi semua permintaaan yang saat ini ditunda dengan menjalankan proses-proses dengan suatu urutan.

Algoritma Bankir

Algoritma penjadualan ini diungkapkan oleh Dijkstra (1965) lebih dikenal dengan nama Algoritma Bankir. Model ini menggunakan suatu kota kecil sebagai percontohan dengan suatu bank sebagai sistem operasi, pinjaman sebagai sumber daya dan peminjam sebagai proses yang membutuhkan sumber daya.

Deadlock akan terjadi apabila terdapat seorang peminjam yang belum mengembalikan uangnya dan ingin meminjam kembali, padahal uang yang belum dikembalikan tadi dibutuhkan oleh peminjam lain yang juga belum mengembalikan uang pinjamannya.

Beberapa kelemahan algoritma Bankir Tanenbaum (1992), Stallings (1995) dan Deitel (1990) adalah sebagai berikut:

  • Sulit untuk mengetahui seluruh sumber daya yang dibutuhkan proses pada awal eksekusi.
  • Jumlah proses yang tidak tetap dan berubah-ubah.
  • Sumber daya yang tadinya tersedia dapat saja menjadi tidak tersedia kembali.
  • Proses-proses yang dieksekusi haruslah tidak dibatasi oleh kebutuhan sinkronisasi antar proses.
  • Algoritma ini menghendaki memberikan semua permintaan selama waktu yang berhingga.

Mendeteksi Deadlock dan Memulihkan Deadlock

Metode ini mengunakan pendekatan dengan teknik untuk menentukan apakah deadlock sedang terjadi serta proses-proses dan sumber daya yang terlibat dalam deadlock tersebut. Setelah kondisi deadlock dapat dideteksi, maka langkah pemulihan dari kondisi deadlock dapat segera dilakukan. Langkah pemulihan tersebut adalah dengan memperoleh sumber daya yang diperlukan oleh proses-proses yang membutuhkannya. Beberapa cara digunakan untuk mendapatkan sumber daya yang diperlukan, yaitu dengan terminasi proses dan pre-emption (mundur) suatu proses. Metode ini banyak digunakan pada komputer mainframe berukuran besar.

Terminasi Proses

Metode ini akan menghapus proses-proses yang terlibat pada kondisi deadlock dengan mengacu pada beberapa syarat. Beberapa syarat yang termasuk dalam metode ini adalah, sebagai berikut:

  • Menghapus semua proses yang terlibat dalam kondisi deadlock (solusi ini terlalu mahal).
  • Menghapus satu persatu proses yang terlibat, sampai kondisi deadlock dapat diatasi (memakan banyak waktu).
  • Menghapus proses berdasarkan prioritas, waktu eksekusi, waktu untuk selesai, dan kedalaman dari rollback.

Resources Preemption

Metode ini lebih menekankan kepada bagaimana menghambat suatu proses dan sumber daya, agar tidak terjebak pada unsafe condition.

Beberapa langkahnya, yaitu:

  • Pilih salah satu – proses dan sumber daya yang akan di-preempt.
  • Rollback ke safe state yang sebelumnya telah terjadi.
  • Mencegah suatu proses agar tidak terjebak pada starvation karena metode ini.

Startvation

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

Interaksi antar proses

Pada sistem dengan banyak proses kongkuren, terdapat tiga kategori interaksi,

yaitu :

  • 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 mengaturpersaingan 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.

  • 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.

  • Proses-proses saling mempedulikan secara langsung.

Proses-proses dapat saling berkomunikasi dan dirancang bekerja sama untuk suatu aktivitas.

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 prosesproses itu. Eksekusi satu proses dapat berpengaruh terhadap kelakuan prosesproses 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 :

  • Mutual exclusion
  • Deadlock
  • 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.

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

antara lain :

  • 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 :

  • Operasi pembacaan dan penulisan harus mutually exclusive (yaitu benar-benarhanya satu proses yang berada di critical section).
  • Operasi penulisan saja yang harus mutually exclusive. Pada situasi ini, masalah baru muncul yaitu mengenai koherensi data. Critical section digunakan untuk menjamin integritas data.

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.

Ketika 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.

Pokok penyelesaian masalah kongkurensi

Pada dasarnya penyelesaian masalah kongkurensi terbagi menjadi dua, yaitu :

  • 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 sistem singleprocessor ataupun multiprocessor yang mempunyai memori bersama. Penyelesaian ini tidak dapat digunakan untuk multiprocessor tanpa memori bersama ataupun untuk sistem tersebar.

Latihan

1.      Proses dapat meminta berbagai kombinasi dari sumber daya dibawah ini: CDROM, soundcard dan floppy. Jelaskan tiga macam pencegahan deadlock skema yang meniadakan:

  • Hold and Wait
  • Circular Wait
  • No Preemption

2.      Diasumsikan proses P0 memegang sumber daya R2 dan R3, meminta sumber daya R4; P1 menggunakan R4 dan meminta R1; P2 menggunakan R1 dan meminta R3 . Gambarkan Wait-for Graph. Apakah sistem terjebak dalam deadlock? Jika ya, tunjukkan proses mana yang menyebabkan deadlock. Jika tidak, tunjukkan urutan proses untuk selesai.

3.   User x telah menggunakan 7 printer dan harus menggunakan 10 printer. User y telah menggunakan1 printer dan akan memerlukan paling banyak 4 printer. User z telah menggunakan 2 printer dan akan menggunakan paling banyak 4 printer. Setiap user pada saat ini meminta 1 printer. Kepada siapakah OS akan memberikan grant printer tersebut dan tunjukkan “safe sequence” yang ada sehingga tidak terjadi deadlock.

4. Pernyataan manakah yang benar mengenai deadlock:

  • Pencegahan deadlock lebih sulit dilakukan (implementasi) daripada menghindari deadlock.
  • Deteksi deadlock dipilih karena utilisasi dari resources dapat lebih optimal.
  • Salah satu prasyarat untuk melakukan deteksi deadlock adalah: hold and wait.
  • Algoritma Banker’s (Djikstra) tidak dapat menghindari terjadinya deadlock.
  • Suatu sistem jika berada dalam keadaan tidak aman: “unsafe”, berarti telah terjadi deadlock.

Download Materi : Sistem Operasi (SO) – 07 Kongkurensi

About these ads

2 gagasan untuk “Sistem Operasi (SO) – Kongkurensi

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Logout / Ubah )

Twitter picture

You are commenting using your Twitter account. Logout / Ubah )

Facebook photo

You are commenting using your Facebook account. Logout / Ubah )

Google+ photo

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s